摘要: 在日常工作中,相信每个开发都接触过一些检索、替换字符串/文本的问题。对于一些简单的问题例如查找字符串中是否存在某个子串,可能直接使用各类开发语言自带的 api 接口就可以很方便地实现。但是一旦规则复杂起来可能就会比较棘手,例如校验邮箱、手机号、版本号等,如果自行实现可能需要写不少逻辑代码,正则表达式 阅读全文
posted @ 2022-06-07 16:31 扬州慢 阅读(1117) 评论(0) 推荐(5) 编辑
摘要: OpenGL 绘制图形步骤 上一篇介绍了 OpenGL 的相关概念,今天来实际操作,使用 OpenGL 绘制出图形,对其过程有一个初步的了解。 OpenGL 绘制图形主要概括成以下几个步骤: 创建程序 初始化着色器 将着色器加入程序 链接并使用程序 绘制图形 上述每个步骤还可能会被分解成更细的步骤, 阅读全文
posted @ 2020-12-29 12:26 扬州慢 阅读(636) 评论(0) 推荐(1) 编辑
摘要: 方案对比 subtree 使用命令 git subtree split -P dirPath -b branchName 将目标文件夹的代码都保存到指定分支。试了下,该方案虽然保留了 commit,但是所有分支全都没了 filter-branch git filter-branch --prune- 阅读全文
posted @ 2020-09-26 22:59 扬州慢 阅读(1472) 评论(0) 推荐(0) 编辑
摘要: OpenGL(Open Graphics Library) 是开放图形库,是一个跨平台的图形 API。OpenGL ES(OpenGL for Embedded System)是专为移动端提供的一个子集。目前主要版本有1.0/1.1/2.0/3.0/3.1: 1.0:Android 1.0和更高的版 阅读全文
posted @ 2020-08-11 22:53 扬州慢 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 基本数据类型占用内存大小 最近项目中修复了一个关于类型转换精度丢失的问题,以前对于类型转换会丢失精度只知其然,不知其所以然,这次了解了下相关原理,也分享给大家。先来回顾一下 Java 的基本数据类型中整型与浮点型及其所占用的内存大小: 整型: int:4 字节 32 位 long:8 字节 64 位 阅读全文
posted @ 2020-08-01 22:51 扬州慢 阅读(2927) 评论(1) 推荐(1) 编辑
摘要: 什么是 YUV YUV是一种颜色编码格式,可以说YUV流媒体是原始流数据,大部分的视频领域都在使用。与RGB类似,但RGB更多的用于渲染时,而YUV则用在数据传输,因为它占用更少的频宽。当然,实时通讯为了降低带宽都会采用H264/H265编码。YUV的含义:Y代表亮度信息(灰度),UV分别代表色彩信 阅读全文
posted @ 2020-06-20 20:26 扬州慢 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 开篇 你可能遇到过 如果你遇到这个场景, 那你可能需要版本控制 。 什么是版本控制 版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。 "软件开发" 阅读全文
posted @ 2020-02-21 22:40 扬州慢 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 类的生命周期 JVM类加载机制 分为五个部分:加载,验证,准备,解析,初始化 加载 这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的入口。 验证 确保 Class 文件的字节流中包含的信息是否符合当前虚拟机的要求,并且不会危害虚拟机自身的安全 阅读全文
posted @ 2019-03-02 17:18 扬州慢 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 命令行 Android Studio 编译的 class 文件位于 下 IDEA 插件 jclasslib Bytecode viewer ASM Bytecode Viewer 这两款插件都可以在 Android Studio Plugins 里直接下载安装 字节码的组成 方法调用在JVM中转换成 阅读全文
posted @ 2019-02-12 17:17 扬州慢 阅读(928) 评论(0) 推荐(0) 编辑
摘要: 本文联合编辑:小辣辣。向她致以最崇高的敬(爱)意 ❤ 第一章 C++的初步认识 在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替 指令,然后再对该程序单元进行整体编译。 对函数做声明,它的作用是通知 C++ 编译系统。 第二章 数据的存储、表示形式和基本运算 C++ 没有规定每 阅读全文
posted @ 2018-12-16 17:17 扬州慢 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 最近想要研究热修复的原理,并自己实现一套简单的热修复框架(音视频的坑刚挖好就又挖另一个坑了2333),已经在看书入门 c++,方便后续查看业内一些知名热修复框架的源码,另外在涉及编译期/运行时修改代码之前,先了解一下 apk 是如何从项目源码被打包生成的,可能对后续的从思路上或实际操作都会所裨益。 阅读全文
posted @ 2018-11-18 17:16 扬州慢 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样、量化、编码三个过程将模拟信号数字化。 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 次,即采样频率 44.1 khz 量化 既然是将音频数字化,那就需要使用二进制来表示声音的每一个样 阅读全文
posted @ 2018-10-26 17:15 扬州慢 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: 第二章 Java 内存区域与内存溢出溢出 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 每条线程都有独立的程序计数器,各条线程之间计数器互不影响,独立存储。 Java 虚拟机 阅读全文
posted @ 2018-10-19 17:14 扬州慢 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 什么是 JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测 试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、 数据库, FTP 服务 阅读全文
posted @ 2018-10-12 17:14 扬州慢 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 上篇文章 "《拥抱 C/C++ : Android JNI 的使用》" 里提到调用 native 方法直接修改 bitmap 像素缓冲区,从而实现将彩色图片显示为灰度图片的方法。这篇文章将介绍该操作的实现原理。 开始先不讲关于 Bitmap 的相关细节,先从计算机底层存储与运算原理讲起。总所周知,计 阅读全文
posted @ 2018-09-02 17:13 扬州慢 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 编译工具 CMake 以及 Android 上 JNI 的使用介绍。 <! more 编译工具 CMake 在Android Studio 2.2 之后,工具中增加了 CMake 的支持,于是我们有两种选择来编译 c/c++ 代码。一个是 ndk build + Android.mk + Appli 阅读全文
posted @ 2018-09-01 17:12 扬州慢 阅读(403) 评论(0) 推荐(0) 编辑
摘要: Docker 部署 Nginx,以及 Nginx 反向代理的配置。 <! more Docker 部署 Nginx 以上命令会部署一个 nginx 容器, 各参数含义: 后台运行 容器的 80 端口映射宿主的 8099 的端口 指定容器的名字为 mynginx 部署成功后,访问 ,即可看到 ngin 阅读全文
posted @ 2018-08-18 17:11 扬州慢 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 简单介绍了 BuildType 定义在 app 项目与 module 项目的区别,以及在 Gradle 2.x 与 3.x 版本的区别。 <! more 最近接触到自定义构建类型 BuildType,发现这一块有些地方稍不注意的话会被绕进去浪费点时间,既然我这边已经花费时间了,如果正好你也需要接触到 阅读全文
posted @ 2017-12-21 17:11 扬州慢 阅读(931) 评论(0) 推荐(0) 编辑
摘要: 打 debug 包流程: 1. git pull 分支最新代码 2. Android Studio:Build Generate Signed APK 从 IDE 里可以看到,实际上该操作是执行了 assembleDebug,在打包完成后再将编译目录下的 apk 包安装到调试的手机上并运行。 3. 阅读全文
posted @ 2017-10-29 17:10 扬州慢 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 一提到沉浸式状态栏,第一个浮现在脑海里的词就是“碎片化”。碎片化是让 Android 开发者很头疼的问题,相信没有哪位开发者会不喜欢“write once, run anywhere”的感觉,碎片化让我们不得不耗费精力去校验代码在各个系统版本、各个机型上是否有效。因此以前我一直把沉浸式状态栏看作一块 阅读全文
posted @ 2017-08-22 17:09 扬州慢 阅读(418) 评论(0) 推荐(0) 编辑
摘要: Android Studio 相关 配置 JIRA 服务器 如果细心的话会发现有一个选项卡:Commit Message。这一段代码是不是有点熟悉呢?你没有猜错,这段代码就是 commit 模板,当你切换 task 后在git commit 时会自动将任务的id 和 简介配置到 commit 信息里 阅读全文
posted @ 2017-08-03 17:08 扬州慢 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 原文地址: "Testing Views in Isolation with Espresso" 原文作者: "Ataul Munim" 译文出自: "掘金翻译计划" 译者: "yazhi1992" 校对者: "lovexiaov" , "Phoenix" 使用 Espresso 隔离测试视图 在这 阅读全文
posted @ 2017-05-02 17:07 扬州慢 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 需求 在 A 界面,点击跳转到 B 界面(该界面会执行一些业务),再点击返回键出现 Dialog 弹窗,点击确认退出按钮,返回 A 界面。不断循环。 思路 一开始想到的就是按键精灵,下了 mac 版使用后发现功能太不完善,于是试了试 Windows 版,实在是操作不习惯。在搜索资料过程中了解到还可以 阅读全文
posted @ 2017-04-29 17:06 扬州慢 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 各种写着玩的自定义控件demo 有时网上看到一些比较有意思的开源项目,有时间的话就会自己也撸一个出来,但是一般只关注实现样式、动画等,不会太去细致完整地完成,俗称占个坑~ 持续更新中... "github地址" 饿了么加入购物车按钮 渐变圆环 真机效果没这么丑的~ 水波纹进度条 阅读全文
posted @ 2017-03-31 17:05 扬州慢 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 如何阅读 xml 属性 与 Relativelayout 不同,ConstrainLayout 的属性需要同时说明需要怎么操作自己与目标控件,例如:layout_constraintLeft_toLeftOf 指自身左边缘与目标控件左边缘对齐 从此 match_parent 是故人 Constrai 阅读全文
posted @ 2017-03-24 17:04 扬州慢 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 原文地址: "Testing Views in Isolation with Espresso" 原文作者: "Ataul Munim" 译文出自: "掘金翻译计划" 译者: "yazhi1992" 校对者: "lovexiaov" , "Phoenix" 使用 Espresso 隔离测试视图 在这 阅读全文
posted @ 2017-02-26 16:22 扬州慢 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 创建和销毁对象 静态工厂模式 构造器里未传参的成员不会被初始化。int类型是0,布尔类型是false,String类型是null,List也是null。 重叠构造器 进阶1:javabean模式,使用set方法来初始化成员,缺点是构造过程中javabean可能处于不一致状态(可以理解成该模式下成员的 阅读全文
posted @ 2017-01-28 16:21 扬州慢 阅读(204) 评论(0) 推荐(0) 编辑
摘要: Hello Shortcuts 从Android7.1(API level25)开始,开发者可以为自己的app定制shortcuts。shortcuts使用户更便捷、快速的使用app。我个人感觉有点像ios的压力感应,但是我认为Google的shortcuts动画做的更好看:)。 shortcuts 阅读全文
posted @ 2017-01-10 16:17 扬州慢 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 关于Fresco加载图片的处理,例如旋转、裁剪切割图片,在官方文档也都有提到,只是感觉写的不太详细,正好最近项目里有类似需求,所以分享一些使用小tip,后面的朋友就不用再走弯路浪费时间了。(测试图片分辨率1200 800) 原图: 裁剪图片实现 旋转图片 使用效果: 监听图片下载 首先构造监听器: 阅读全文
posted @ 2016-12-03 16:16 扬州慢 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 因为工作需要,最近正在学习React Native Android。温故而知新,把学习的内容记录下来巩固一下知识,也给有需要的人一些帮助。 需要说明的是,我刚接触React Native也不久,对它的认识肯定还是比较浅薄甚至无知的,如有不对的地方恳请指出,求之不得,谢谢! 那么让我们开始吧,对程序员 阅读全文
posted @ 2016-10-29 16:15 扬州慢 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 在昨天和做android的前辈一番交谈后,觉得很惭愧,许多东西还只是知其然而不知其所以然,也深感自己的技术还太浅薄。以后要更加努力地学习,要着重学习原理、方法论,不能只停留在会用的阶段。 今天又要献丑分享一些关于使用Kotlin这门新兴的编程语言的一些要注意的地方。因为上一个项目全部使用了kotli 阅读全文
posted @ 2016-07-15 12:59 扬州慢 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 常见的使用Handler线程间通讯: 这类操作一般用于在子线程更新UI。在主线程创建一个handler,重写handlermessage方法,然后在子线程里发送消息,主线程里就会接受到消息。这就是简单的线程间通讯。如果在子线程创建handler对象则会报错。根据Log提示,子线程创建handler需 阅读全文
posted @ 2016-06-29 11:27 扬州慢 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 网络上一提到 Python,总会有一些不知道是黑还是粉的人大喊着:Python 是世界上最好的语言。最近利用业余时间体验了下 Python 语言,并写了个爬虫爬取我 csdn 上关注的几个大神的博客,然后利用 "leancloud" 一站式后端云服务器存储数据,再写了一个 android app 展 阅读全文
posted @ 2016-06-25 12:56 扬州慢 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 上传代码到github android studio里集成了上传代码到github的功能,所以使用上还是很简单的,设置里添加账号并测试,之后就可以很方便地上传代码到github了 如果你的项目是使用android studio新建的,那么关于github基本就没什么问题了。android studi 阅读全文
posted @ 2016-05-25 12:38 扬州慢 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 最近比较闲,所以趁着这时间撸了个SwipeRefreshLayout的加强版, "Github地址" 。 原版只支持下拉刷新,强化之后支持上拉刷新和一进入页面就加载刷新,整个控件的加载动画是一致的,毫无违和感:),也算是为开源社区尽了点绵薄之力啦。 很惭愧,就做了一点微小的工作,谢谢大家。 阅读全文
posted @ 2016-04-22 12:54 扬州慢 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 上一篇博客介绍了AS的一些常用设置方法,当工具调教妥当后,自然就要开始项目的开发啦。从零开始新建一个项目,这个简单,不必多说,这篇博客会分享我从旧平台eclipse导入项目到AS的过程,以及遇到的一些问题并如何解决。开篇先粗略的提一些需要注意的地方。 结构目录 和eclipse不同,在android 阅读全文
posted @ 2016-04-18 12:37 扬州慢 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 写在前面: 作为一个刚半只脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后,遇到了一些问题,总结为如下: 1. 代码复用性 。findviewById,onclick事件等,一遍遍重复这类无聊的代码简直浪费生命,这个问题推荐通过依赖注入框架Butter 阅读全文
posted @ 2016-03-29 10:05 扬州慢 阅读(291) 评论(0) 推荐(0) 编辑