- 博客(300)
- 资源 (5)
- 收藏
- 关注

原创 CSDN去广告插件
如果这篇博客被CSDN相关工作人员审核到,请你转告你们产品或者商务主管庞大的程序员群体不是你们这些无耻商人的待宰羔羊用csdn快3年了吧,写了200多篇博客,刚开始用的时候充满了期待,觉得这是一个能记录我成长的平台但是随着广告的无孔不入我开始慢慢怀疑CSDN是不是下一个视觉中国!侵权不去保护,广告肆意展示,联合百度的大数据分析和广告的投放,让很多程序员感觉得到了恶心!我们不反对你们盈利但...
2019-04-28 22:57:13
1147
1
原创 Java基础361问第16问——枚举为什么导致空指针?
原来Color是一个继承了 Enum的特殊类,里面有一个 ordinal() 方法,当我们使用 switch去传入 color时,编译器内部会调用 Color的ordinal()方法去获取int值,此时出现了 空指针。运行一下,发现了 空指针 Color.ordinal()’ on a null object reference。
2025-04-28 23:18:20
203
原创 LeetCode热题100——70. 爬楼梯
动态规划,例如爬3阶的方法数 = 爬2阶 + 爬1阶的,因为3阶要么是从1阶+2来的,要么是从 2阶+1来的,总体满足, f(n) = f(n-1)+f(n-2)每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?能不能直接使用递归去解决呢?这里有很大的坑在等着你!需要 n 阶你才能到达楼顶。解释:有两种方法可以爬到楼顶。解释:有三种方法可以爬到楼顶。
2025-04-26 23:06:32
277
原创 LeetCode热题100——283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]输入: nums = [0]
2025-04-23 22:17:16
488
原创 LeetCode热题100——1. 两数之和
和为目标值 target,并且要记忆它的下标,给定任意一个nums[i] 既要知道 有没有 nums[x] 满足 nums[i]+nums[x] = target, 又要知道x,即。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。,我们要存储一对键值 nums[x] , x,所以使用。输入:nums = [3,3], target = 6。
2025-04-22 22:37:29
220
原创 如何免费阅读Medium文章?
是一个优秀的博客分享平台,可以阅读老外对编码技术的总结,让我们吸取原汁原味的编码思想,国内的博客大多是舶来品,很多时候夹杂了个人的错误理解导致消息失真,让新手读起来总是感觉灰涩难懂。可是原博客的文章大多数是需要付费的,如何解决?把原博客复制到下面的网站,然后就可以解锁阅读了。
2025-03-31 22:57:30
372
原创 记一次 Android 高内存排查
本文未使用Android Studio内置Profile分析工具,其一是因为使用时AS明显卡顿一不小心就会无响应,其二部分应用无法连接AS 抓取日志,因此采取最原始但是最万能的方式 adb 抓取 + MAT分析。
2024-12-25 23:15:37
475
原创 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
382
原创 Ubuntu 整编 AOSP
作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。
2024-05-23 00:15:29
791
原创 Mac反编译APK
https://github.com/pxb1988/dex2jar/releases/ 官方Github介绍&下载地址。
2024-04-01 23:36:52
1478
2
原创 谈谈我对Gson源码的理解
fill:#333;GsonBoundFieldfromJson()可能存在递归调用栈溢出的地方getBoundFields() 获取该类所有字段createBoundField() 每个字段去找自己的getAdapter()read()construct() 反射创建对象遍历每个字段调用 read() 赋值每个BoundField对应的TypeAdapter处理 read()GsonBoundField注意蓝色区域, 这里有可能存在递归调用的风险, 我们来举例说明。
2024-02-25 22:01:29
1047
原创 记一次 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
2716
原创 他山之石(2)—— Timber 如何实现默认打tag的
在使用Timber的时候发现了一些体验较好的地方,逐一分析下是怎么实现的。打印如下: 这个MainActivity是如何打印出来的呢?普通打印, 需要输入tag。
2024-01-15 00:30:38
609
原创 DiffUtil + RecyclerView 在 Kotlin中的使用
很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。
2023-12-18 23:34:21
1640
1
原创 【开发问题记录】01—大量数据同时插入数据库导致的时间戳重复问题
也可以从数据库的查询上考虑如何解决: 时间戳相同的情况下,如何自定义返回顺序。这个我还没有研究明白,欢迎大家补充。推荐指数 5颗星 ⭐️⭐️⭐️⭐️⭐️。
2023-07-30 23:33:55
642
原创 Java基础361问第15问——线程安全的方法
提到线程安全想必大家并不陌生,但是为什么真正项目中遇到多线程问题的时候却很棘手?很大一部分原因是我们只学理论走马观花看了几篇博客背了几个面试点就以为自己掌握了,Talk is Cheap, Show me the code!因此这篇文章我会结合具体的代码介绍几种线程安全的方法和注意事项,希望能给你一个清晰地印象。我们以火车售票场景为例,假如有两个窗口同时卖票,代码如下System . out . println(name + "售票成功!还剩 " +(-- tickets) + " 张票~");
2023-03-20 22:47:59
576
原创 写给Android开发者的SQL教程
SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。在关系型数据库中,数据以表格形式存储,这些表格之间通过关系进行连接,使得数据之间的关系和结构非常清晰易于管理大部分人把数据库和SQL混为一谈其实是错误的, SQL只是对应的关系型数据库, 那么有哪些关系型数据库呢?SQLite:一个轻量级的开源关系型数据库管理系统,支持多种平台和操作系统,适用于嵌入式设备和移动应用程序。(Android 采用的就是SQLite数据库)
2023-03-15 22:48:28
795
原创 谈谈我对Retrofit源码的理解
square/retrofit Github地址 最新版本从这里获取!Retrofit 是一款由 Square 公司开发的用于 Android 和 Java 应用程序的网络请求库,旨在简化 HTTP 网络请求的过程,Retrofit 最初是在 2013 年开源发布的,已经风靡了10年。其优点如下简化网络请求的过程:Retrofit 可以根据 API 接口定义文件自动生成网络请求代码,从而避免了手动创建网络请求代码的繁琐工作。方便处理网络请求。
2023-03-05 23:00:50
485
原创 三分钟学习 Gitee OpenAPI
简单说就是网络请求Open API 让我们可以通过网络请求的方式对 Git仓库的分支,提交,仓库,标签,PR,issue等属性进行操作。
2023-02-13 23:03:52
1781
1
原创 Git 合并多条commit
按照上述操作继续编辑合并后的commit信息,再然后ESC, :wq保存即可。选中要修改的commit 右击选择Squash Commits。(这里稍微提一下, commit大本营,骚操作都在这里)键盘敲击 “I” 进入编辑模式, 把pick 改为 s。点击"ESC"退出编辑模式, 再输入 “:wq” 保存。
2023-01-12 22:00:51
3726
4
原创 开发利器! 利用Android Studio抓包
使用App请求网络会发现NetWork Inspector上有蓝色折线图4,鼠标选中这个区域后会发现5,点击5会出现6。整个过程不用1min,看图懵逼的话不如去自己亲身试验一下,非常好用的功能!最近新学了一个技能 —— Android Studio 本身就可以抓包。按照下图123操作, App运行起来后attch上。
2022-12-27 21:14:46
2410
1
原创 Dot Executable: /usr/bin/dot File does not exist Cannot find Graphviz.
PlantUML Integration 或者 PlantUML Parser 使用过程中报错如下
2022-12-12 22:03:16
1648
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
1040
原创 聊一聊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
384
原创 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
1276
原创 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
590
原创 写段代码理解 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
388
通讯录字母列表索引
2018-02-26
Android实现快速发送电子邮件
2018-10-31
android扫码登录
2018-10-27
channelApk.zip
2019-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人