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

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