- 博客(293)
- 资源 (5)
- 收藏
- 关注
原创 CSDN去广告插件
如果这篇博客被CSDN相关工作人员审核到,请你转告你们产品或者商务主管庞大的程序员群体不是你们这些无耻商人的待宰羔羊用csdn快3年了吧,写了200多篇博客,刚开始用的时候充满了期待,觉得这是一个能记录我成长的平台但是随着广告的无孔不入我开始慢慢怀疑CSDN是不是下一个视觉中国!侵权不去保护,广告肆意展示,联合百度的大数据分析和广告的投放,让很多程序员感觉得到了恶心!我们不反对你们盈利但...
2019-04-28 22:57:13 1105 1
原创 Glide 简易教程
文章目录1 引入依赖2 图片形状2.1 圆形 CircleCrop2.2 旋转 Rotate2.3 圆角 RoundedCorners2.4 自定义圆角 GranularRoundedCorners1 引入依赖implementation("com.github.bumptech.glide:glide:4.16.0")2 图片形状2.1 圆形 CircleCropGlide.with(this).load(url).transform(CircleCrop()).into
2024-10-16 23:36:33 260
原创 Ubuntu 整编 AOSP
作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。
2024-05-23 00:15:29 640
原创 Mac反编译APK
https://github.com/pxb1988/dex2jar/releases/ 官方Github介绍&下载地址。
2024-04-01 23:36:52 1375 2
原创 谈谈我对Gson源码的理解
fill:#333;GsonBoundFieldfromJson()可能存在递归调用栈溢出的地方getBoundFields() 获取该类所有字段createBoundField() 每个字段去找自己的getAdapter()read()construct() 反射创建对象遍历每个字段调用 read() 赋值每个BoundField对应的TypeAdapter处理 read()GsonBoundField注意蓝色区域, 这里有可能存在递归调用的风险, 我们来举例说明。
2024-02-25 22:01:29 1001
原创 记一次 Android CPU高使用率排查
测试同学反馈我们的App CPU使用率 90% 居高不下,经过一番艰难的排查后定位到了问题,为了记录此次过程于是有了此博客的构思,但为了避免隐私泄露,本文使用的是demo工程,但是排查思路完全一致。我们发现 com.demo.app CPU占用率竟然高达 93.3%, 对应的 pid 是 29337。先找1中CPU使用率异常的时刻和对应的线程名, 再找 2中对应时刻的堆栈。如果CPU在某段时间较高但是之后就下降了就不好排查了, 不过也有笨方法。根据 Thread-2 线程名匹配到了 对应的 堆栈信息。
2024-02-02 19:47:18 1817
原创 他山之石(2)—— Timber 如何实现默认打tag的
在使用Timber的时候发现了一些体验较好的地方,逐一分析下是怎么实现的。打印如下: 这个MainActivity是如何打印出来的呢?普通打印, 需要输入tag。
2024-01-15 00:30:38 561
原创 DiffUtil + RecyclerView 在 Kotlin中的使用
很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。
2023-12-18 23:34:21 1487
原创 【开发问题记录】01—大量数据同时插入数据库导致的时间戳重复问题
也可以从数据库的查询上考虑如何解决: 时间戳相同的情况下,如何自定义返回顺序。这个我还没有研究明白,欢迎大家补充。推荐指数 5颗星 ⭐️⭐️⭐️⭐️⭐️。
2023-07-30 23:33:55 559
原创 Java基础361问第15问——线程安全的方法
提到线程安全想必大家并不陌生,但是为什么真正项目中遇到多线程问题的时候却很棘手?很大一部分原因是我们只学理论走马观花看了几篇博客背了几个面试点就以为自己掌握了,Talk is Cheap, Show me the code!因此这篇文章我会结合具体的代码介绍几种线程安全的方法和注意事项,希望能给你一个清晰地印象。我们以火车售票场景为例,假如有两个窗口同时卖票,代码如下System . out . println(name + "售票成功!还剩 " +(-- tickets) + " 张票~");
2023-03-20 22:47:59 538 1
原创 写给Android开发者的SQL教程
SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。在关系型数据库中,数据以表格形式存储,这些表格之间通过关系进行连接,使得数据之间的关系和结构非常清晰易于管理大部分人把数据库和SQL混为一谈其实是错误的, SQL只是对应的关系型数据库, 那么有哪些关系型数据库呢?SQLite:一个轻量级的开源关系型数据库管理系统,支持多种平台和操作系统,适用于嵌入式设备和移动应用程序。(Android 采用的就是SQLite数据库)
2023-03-15 22:48:28 724
原创 谈谈我对Retrofit源码的理解
square/retrofit Github地址 最新版本从这里获取!Retrofit 是一款由 Square 公司开发的用于 Android 和 Java 应用程序的网络请求库,旨在简化 HTTP 网络请求的过程,Retrofit 最初是在 2013 年开源发布的,已经风靡了10年。其优点如下简化网络请求的过程:Retrofit 可以根据 API 接口定义文件自动生成网络请求代码,从而避免了手动创建网络请求代码的繁琐工作。方便处理网络请求。
2023-03-05 23:00:50 435
原创 三分钟学习 Gitee OpenAPI
简单说就是网络请求Open API 让我们可以通过网络请求的方式对 Git仓库的分支,提交,仓库,标签,PR,issue等属性进行操作。
2023-02-13 23:03:52 1353 1
原创 Git 合并多条commit
按照上述操作继续编辑合并后的commit信息,再然后ESC, :wq保存即可。选中要修改的commit 右击选择Squash Commits。(这里稍微提一下, commit大本营,骚操作都在这里)键盘敲击 “I” 进入编辑模式, 把pick 改为 s。点击"ESC"退出编辑模式, 再输入 “:wq” 保存。
2023-01-12 22:00:51 3495 4
原创 开发利器! 利用Android Studio抓包
使用App请求网络会发现NetWork Inspector上有蓝色折线图4,鼠标选中这个区域后会发现5,点击5会出现6。整个过程不用1min,看图懵逼的话不如去自己亲身试验一下,非常好用的功能!最近新学了一个技能 —— Android Studio 本身就可以抓包。按照下图123操作, App运行起来后attch上。
2022-12-27 21:14:46 1991 1
原创 Dot Executable: /usr/bin/dot File does not exist Cannot find Graphviz.
PlantUML Integration 或者 PlantUML Parser 使用过程中报错如下
2022-12-12 22:03:16 1459 1
原创 Gradle学习第一篇——自定义Gradle插件
自定义Gradle插件有三种方法,各有优劣处就是如此简单,但是缺点是这个插件只能在这个build script使用,完全无复用的能力,其他Module要是想用的话必须拷贝一份在当前目录下创建buildSrc目录,创建完毕之后Sync一下build.gradle 中复制如下代码配置完成去App中运行测试一下这种稍微麻烦点,但是可以做到同项目内plugin复用了。这个和第二种有些地方是类似的首先创建一个Library Module剩下的步骤和 Mac搭建本地Maven仓库For Andr
2022-12-05 22:38:34 965
原创 聊一聊HashSet
坦白讲, 开发了多年Android但是我基本上没有用到过HashSet,不如看下其源码希望以后有需求打过来的时候可以考虑用这种数据结构实现。文章目录1 HashSet本质上是什么呢? 集合2 HashSet 集合的特点是什么? 去重 && 无序3 HashSet 如何获取某个元素的呢? Iterator4 HashSet 使用中需要注意哪些问题?4.1 引用数据类型记得重写hashCode和equals方法4.2 想保证线程安全使用这段代码1 HashSet本质上是什么呢? 集合
2022-05-22 21:39:45 356
原创 Mac环境下生成 Protobuf Java文件
协议缓冲区是一种语言无关、平台无关的可扩展机制,用于序列化结构化数据。https://developers.google.com/protocol-buffers因为传输的是二进制数据流体积更小速度更快,协议轻便但是如何能对应上我们的使用Java Dart Go语言呢?文章目录1 安装protoc 命令2 新建 lbs_locations.proto3 执行命令1 安装protoc 命令brew install protoc2 新建 lbs_locations.protosyntax = "
2022-05-17 00:09:57 1122
原创 Mac环境 使用 bsdiff 和 bspatch 生成补丁包
bsdiff and bspatch are libraries for building and applying patches to binary files.bsdiff and bspatch 是两个合成补丁包的C开源库,具体的地址见下方https://github.com/mendsley/bsdiff文章目录1 Mac 配置 bs环境2 生成 1.txt 和 2.txt 的 补丁包3 根据补丁包patch 和 1.txt 合成 2.txt1 Mac 配置 bs环境➜ ~ bre.
2022-05-15 00:09:19 521
原创 写段代码理解 scheduleAtFixedRate和scheduleWithFixedDelay
① 如果任务在周期内正常结束掉的话scheduleAtFixedRate和scheduleWithFixedDelay没有差别public void start() { ScheduledExecutorService pool = Executors .newScheduledThreadPool(1); System.out.println("this task startTime "); pool.scheduleAtF
2022-05-07 23:49:53 357
原创 BUG exception in phase ‘semantic analysis‘ in source unit ‘_BuildScript_‘ Unsupported class file ma
错误原因是因为你本地的java版本太高了~cd /Library/Java/JavaVirtualMachinesopen .把高版本的java 版本删除掉即可~
2022-03-02 08:46:50 14112 2
原创 Rxjava线程切换原理终于在2023年有了答案。
虽然项目中有用到Rxjava但是从来没有花功夫研究过所以对这里一直是懵逼状态,面试的时候也是很恐惧这方面的提问,但是Rxjava线程切换原理一直是面试必问的问题,与其心存侥幸不如直面恐惧,到了2022年,终于对这个问题有了一个完整的理解,如有理解偏差,还请指出。// 本次源码分析基于rxjava 3.0 // 使用最新的rxjava版本看这里 https://github.com/ReactiveX/RxAndroiddependencies { implementation 'io.re
2022-01-03 23:17:01 1906 1
原创 【registerActivityLifecycleCallbacks】它是如何实现Acitivity页面变化监听的?
当我们想监听App页面变化(比如打开了哪个页面,关闭了哪个页面)的时候我们会使用registerActivityLifecycleCallbacks就像下面的代码一样。public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new Acti
2021-10-10 11:33:38 312
原创 2021国庆所感
最近好久没有更新博客了,一来是工作太忙,二来也是我开始懈怠,学习劲头不高,三来也是家庭遭遇了一些变故导致没有时间和精力学习新技术。本来今年国庆节准备好好放个假去我对象家里掰玉米,但是我家突遭变故打乱了这些计划,且听我一一道来2021年8月15日 我叔叔(我爷爷的大哥的小儿子) 因病去世 (我因为在北京上班没有参与后事)2021年10月1日 C2173 因为买不到从北京直达聊城的火车,开始中转 北京南(23:56) → 天津(00:26)2021年10月2日 K128 天津
2021-10-08 17:33:13 150
原创 Flutter学习第九篇之 本地Flutter版本切换
在我们开发Flutter的时候肯定会遇到版本切换的问题,例如下图AB两个项目分别使用不同的Flutter版本,那我们本地运行项目的时候就需要在1.17和2.5.1之间来回切换。官方有一个Flutter Version Management命令行控制工具 感兴趣的同学可以用用,我本期要分享的是最笨的但是也是最纯净(不需要下载其他软件,不需要安装其他工具)的方法。// 1 进入你本地的Flutter SDK目录cd /Users/liangchaojie/Documents/flutter/
2021-09-25 18:21:51 4653 4
channelApk.zip
2019-08-13
Android实现快速发送电子邮件
2018-10-31
android扫码登录
2018-10-27
通讯录字母列表索引
2018-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人