自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 protobuf 使用

protobuf 生成类生成的类中包含各个字段的get和set接口,使用SerializeToString可将class实例转换为protobuf二进制数据,ParseFromArray函数可将protobuf二进制反序列化到类的实例中。

2022-02-16 09:48:34 2283

原创 C++中函数重载

C++中函数重载C++代码在编译时会根据参数列表对函数进行重命名,例如void Swap(int a, int b)会被重命名为_Swap_int_int,void Swap(float x, float y)会被重命名为_Swap_float_float。当发生函数调用时,编译器会根据传入的实参去逐个匹配,以选择对应的函数,如果匹配失败,编译器就会报错从这个角度讲,函数重载仅仅是语法层面的,本质上它们还是不同的函数,占用不同的内存,入口地址也不一样。...

2022-02-15 12:12:12 745

原创 C++中const与static

const与staticC语言中的 const 变量在多文件编程时的表现和普通变量一样,除了不能修改,没有其他区别。C++ 对 const 的特性做了调整,C++ 规定,全局 const 变量的作用域仍然是当前文件,但是它在其他文件中是不可见的,这和添加了static关键字的效果类似。C++ 中全局 const 变量的可见范围仅限于当前源文件,所以可以将它放在头文件中,这样即使头文件被包含多次也不会出错。C和C++中全局 const 变量的作用域相同,都是当前文件,不同的是它们的可见范围:C语言中

2022-02-15 11:10:49 414

原创 C++重复定义命名空间

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-02-15 10:07:29 1231

原创 androidstudio jni支持

JNI NDK 配置当更新androidStudio后,ndk配置出问题。后来发现得参考。配置参考:https://developer.android.google.cn/studio/projects/install-ndk

2021-11-07 07:05:13 1592

原创 fragment-问题

fragment 生命周期错乱问题

2021-11-07 06:41:18 66

原创 系统@hide使用分析

反射//获取系统属性public static String getProperty(String key, String defaultValue) { String value = defaultValue; try { Class<?> c = Class.forName("android.os.SystemProperties"); Method get = c.getMethod("get", String.class, Strin

2021-08-13 19:04:31 333

原创 处理快速点击策略

问题点1、程序其实很多时候都经不起用户的快速点击,为了处理这问题,一般会对用户快速操作做些拦截处理,比如你当前的操作距离上一次操作不得小于2秒。2、其实那种快速操作一般是测试人员的行为,正常用户一般不会这么做,因为这不属于用户功能,但为了避免程序出现更大的错误,作为开发者也不得不进行处理。...

2021-08-13 17:23:51 127

原创 Handler机理验证

handler要点1、一个线程只能有一个Looper,对应一个MessageQueue。2、handler可以看做是一个工具类,用来向消息队列中插入消息。3、Looper.loop()使Looper开始工作,从消息队列里取消息,在handleMessage中处理消息。4、写在Looper.loop()之后的代码不会执行。5、mHandler.getLooper().quit()退出循环。...

2021-08-13 09:53:09 65

原创 策略模式思考

策略模式模型public class Strategy { public static void main(String[] args) { IStrategy strategy = new StrategyA(); Context context = new Context(strategy); context.test(); } interface IStrategy { void test(); }

2021-08-12 23:09:49 68

原创 单例标准设计

单例模型public class LazySingleton { private LazySingleton(){} public static LazySingleton getInstance(){ return Holder.instance; } private static class Holder{ private static final LazySingleton instance = new L

2021-08-11 22:54:26 74

原创 代码分析技巧

使用adb logcatadb logcat -s caoxiabo > caoxiabo.txt使用Linux环境cat caoxiabo.txt | grep “btif” > btif.txt使用grep查找grep -nr “caoxiabo” vendor/ frameworks/ packages/使用Find查找find vendor/ frameworks/ packages/ -name MainActivity.java...

2021-08-11 15:16:29 96

原创 建造者模式

public class Client { public static void main(String[] args) { IBuilder builder = new ConCreateBuilder(); System.out.println(builder.build()); } static class Product { private String name; Product(String name)

2021-08-09 22:07:00 70

原创 androidstudio 单元测试

依赖支撑 testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'ctrl + shift + T

2021-08-07 22:48:13 211

原创 Android Studio 使用技巧

Android Studio 添加日志过滤方式过滤指定字符串^(?!.*(过滤字符)).*$只显示指定字符^(.*(显示字符)).*$

2021-08-04 16:01:44 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除