- 博客(375)
- 资源 (11)
- 收藏
- 关注
原创 一名七年老安卓的一二月小结
这就是我的一二月总结,回顾了一下发现这两个月的事情还不少哈,这些具体的事让我感觉大部分时间还算好好利用了。最近因为 AI 的出现,对未来多了些不可控的感觉,想来想去,还是先做好当下吧。努力让每一天都有意义,make everyday count!
2023-03-19 10:37:32
235
原创 Android 资深开发需要掌握的常用框架原理
什么是资深 Android 开发?每个人可能有自己的见解。但公认的是,资深 Android 开发,对常用框架一定不能仅仅停留在使用,更要明白其设计思想及实现原理。本文汇总了 Android 常用框架的解析文章,深入分析了事件总线、图片加载、网络请求和热修复等框架的设计思想及实现原理,希望能为大家在成为更高阶的 Android 开发提供帮助。
2023-02-05 08:44:30
417
原创 一名七年老安卓的 2022 总结
六年安卓开发的技术回顾和展望,在各个平台的阅读量和互动数据都还不错,很多人反馈看完有帮助,让我很高兴。越是艰难的时候越要沉住气多思考多行动。移动开发的市场需求的确不如往年火热,在市场回归理智后,我们更要常常思考自己的优势、竞争力和价值,不断修炼内功。同时也不必过于悲观,根据 QuestMobile 的数据,目前国内移动设备还是最大的流量入口(活跃设备量约 12 亿),每天还是有很多人在通过手机软件解决生活需求。我们需要。
2023-01-01 23:28:52
7459
22
原创 你不知道的 Git 技巧:如何实现核心代码保护
一般人不知道的 Git 知识,学完立刻就可以用起来了!这篇文章介绍了通过拦截 git push 时,获取当前用户、当前分支、未 push 的 commit 和修改的文件等命令,通过组合这些命令,就可以实现一个核心代码保护功能了!
2022-12-16 23:17:22
737
原创 两位前阿里 P10 的成长经历,让我学到这几点
本篇文章介绍了阿里 P10 的大概概念,回顾了两位 P10 前辈成长过程中的关键节点,然后针对一些年轻人关注的话题记录了两位前辈的感悟。通过两位前辈的分享,我们可以对如何成长为阿里 P10 有更多的认识。成长最快的方式是从前辈身上学习,相信在将来的某天,他们的话语会给我们带来启发。
2022-12-15 07:45:00
5889
1
原创 常见的 Android 性能指标获取方式:CPU、FPS、Memory、GPU 、I/O、Network
文章目录CPUFPSMemoryGPUIONetworkCPUcpu 核数:/sys/devices/system/cpu/possible最大频率:/sys/devices/system/cpu/cpu’ + p + '/cpufreq/cpuinfo_max_freq当前频率:/sys/devices/system/cpu/cpu’ + p + '/cpufreq/scaling_cur_freq整体 cpu 使用率:/proc/stat应用 cpu 使用率:/proc/${pid}/st
2022-04-30 00:11:53
4083
原创 Golang 基础:底层并发原语 Mutex RWMutex Cond WaitGroup Once等使用和基本实现
Mutex RWMutex Cond WaitGroup Once等使用和基本实现
2022-04-21 00:18:22
1921
原创 Golang 基础:原生并发 goroutine channel 和 select 常见使用场景
一文掌握 goroutine channel select 的使用
2022-04-20 20:22:10
2968
原创 Golang 基础:Go Module, for range, 切片, map, struct 等使用和实现
文章目录学习资料Go 程序结构项目结构可执行程序库项目Go Module 构建模式Go Module 的常规操作1.添加依赖2.升级/降级依赖3.添加一个主版本号大于 1 的依赖4.删除依赖5.vendor 相关入口函数与包初始化:搞清Go程序的执行次序init 函数的用途使用内置包实现一个简单的 Web 服务 【待学完回来敲】变量声明包级变量的声明形式局部变量的声明形式项目踩坑常用命令:生成 linux 平台可执行文件:CGO_ENABLED=0 GOOS=linux go build学习资料
2022-04-04 23:57:09
2422
1
原创 Golang 基础:接口使用、实现原理(eface iface)和设计模式
文章目录接口定义接口实现接口空接口类型断言开发建议接口https://time.geekbang.org/column/article/471952定义接口接口里的方法,参数要么都有名字,要么都没有,否则报错:Method specification has both named and unnamed parameters同时,方法名称不能重复,哪怕参数不一样也不可以,否则会报错:Duplicate method 'XXX。type People interface { M1(int)
2022-03-19 23:46:08
4241
原创 Linux 编程之进程篇:调度、优先级、亲和性和资源限制
处理器在调度不同进程时,有什么策略。我们开发者可以如何影响处理器的调度。文章目录进程的调度进程资源的限制Thanks进程的调度调度策略影响调度的因素优先级CPU 亲和性延伸:实时系统内核调度的对象是线程,而不是进程?优先级setpriority(PRIO_PROCESS, tid, ANDROID_PRIORITY_DISPLAY);[-19, 20)/*** Keep in sync with android.os.Process.java **This map
2022-03-13 17:59:41
6540
原创 Linux 编程之进程篇:task_struct、进程创建和退出
读完本文你将了解:文章目录什么是进程获取进程相关数据的 API进程 ID什么是进程在大学上操作系统课时,对进程的概念不太清楚,只能硬记:“进程是执行的代码”。后来写的多了,认识到:“进程 = 执行的代码 + 数据 ”。再过几年,意识到可执行的代码叫 ELF,进程本身需要资源,CPU 执行进程也需要资源,又有了新的认识:“进程 = 映射的二进制文件 + 虚拟地址空间 + 内核资源 + 执行上下文”。或许现在理解的还不够深刻,但为了方便日后对比,还是先写下罢!进程的数据结构在 Linux 系统中
2022-03-13 17:55:38
6652
原创 Linux 编程之非局部跳转:longjmp siglongjmp
在同一个函数中,我们可以使用 goto 修改程序的执行逻辑。如果在多个函数中,想要修改函数的执行顺序(从一个函数,返回到之前函数的某个预定义逻辑),怎么办呢?答案是使用 longjmp 或 siglongjmp。本文主要内容:longjmp 的作用及使用siglongjmp 的作用及使用两者的区别longjmp 的作用及使用https://man7.org/linux/man-pages/man3/setjmp.3.htmllongjmp 需要和 setjmp 成对使用。#includ
2022-02-24 00:11:58
3035
2
原创 Linux 编程之信号篇:异常监控必知必会
为什么要了解信号信号是 UNIX 中进程管理非常重要的一个环节。主要有 4 个场景需要通过信号进行:进程接收内核的通知(比如通知进程用户输入了信息)系统终止一个进程管理父子进程(比如通知父进程子进程退出了)进程间通信在 Android 系统中也是如此。通过了解信号,我们可以实现对系统运行状态的监听,最实际的用途,就是监听应用发生崩溃。什么是信号信号是一种软中断, 是一种通知方式。当收到内核或者其他进程发送的信号后,接收信号会从当前执行的代码转移到之前注册的信号处理函数(如果注册了的话)
2022-02-19 22:03:26
2755
原创 Linux 编程之时间篇:wall time, cpu time 和 timer
文章目录Linux 时间的相关知识获取当前时间time_t (秒)tmtimeval (微秒)timespec (纳秒)获取进程的 CPU 时间睡眠和阻塞睡眠的几种方式阻塞定时器alarminterval timer高级定时器 timer_t总结Thanks在 Java/JS 中获取时间非常简单(System.currentTimeMillis() System.nanoTime(); new Date().getTime() 等等),在 C/C++ 中,就略微复杂一点,因为有好多种 API,今天我们就来
2022-02-19 22:02:43
3747
原创 Android 虚拟机:你需要掌握的基本知识
在进入查找流程之前,先简要介绍一些前置的细节点,主要包括 dex file, oat file, mirror::Class, ArtField, ArtMethod, DexCache, ClassTable 等。这些会在后面的流程里反复出现,所以先讲一下。前置细节dex2oat 触发场景https://cs.android.com/android/platform/superproject/+/master:art/dex2oat/dex2oat.ccdex2oat 的作用:对 dex 文件进行
2021-12-31 09:55:39
4503
原创 毕业五年总结
文章目录工作生活这一年做了什么一月生活:自我欣赏,我的优点:二月工作:技术:生活:三月四月工作技术:生活:五月工作:技术:生活:六月工作&技术生活七月工作&技术生活总结2021.07,毕业五年了。第五年主要有这些不同:工作内容更有挑战,深度和广度比一年前略有提升 ????和小肉领证,从恋爱关系进入婚姻关系,感情没有改变 ????看房买房,感谢父母、朋友援助投资领域从小白到菜鸟持续提升英语听说接妈妈和妹妹到上海游玩的开心 ????工作这一年,工作
2021-08-09 02:16:01
9686
18
原创 我的 2020 总结:Never Settle
文章目录回顾 2020一月值得反复看的话二月值得反复看的话三月做了什么??四月值得反复看的话五月值得反复看的话六月值得反复看的话七月值得反复看的话八月九月做了什么??十月李敖说:“人生第二等的快乐是做别人认为自己做不到的事情,第一等的快乐是做自己认为自己做不到的事情”。今年做到的一些 去年做不到或不敢想的事情:加入字节跳动基础架构组进入股市,小赚养了三只猫回顾 2020一月知道了《雪球专刊》,微信读书上看了一部分去 hg 家聚餐,开心了解了几位原本安卓网友在做的事:炒股;大数据(数
2021-01-12 12:56:48
21072
29
原创 重温 C/C++ 笔记
好久没写博客了,现在更习惯用脑图记录知识点,记一些关键字即可,快速又成体系。不过分享的初心还是要保持,不能总是索取而不贡献,现在雷同的内容太多了,还是需要一些较为稀缺的信息。在通过其他前辈分享的文章学习知识、解决问题后,这种想法就更加强烈。今天遇到一个奇怪的问题,报错如下:* What went wrong:Execution failed for task ':profmancompat:externalNativeBuildRelease'.> Build command failed
2020-10-24 21:22:15
9755
原创 拭心过滤器第 1 期:五月精选文章
大家好,我是张拭心。周围的朋友都很优秀,我经常会想:为什么 xx 说话那么有水平?xx 的知识面那么广?xx 的成长那么快?除了少部分是天赋差距以外,我觉得更多的是认知差距,说的简单一点,就是长期以来接受和处理信息的差别。接收的信息是否高质量,能否思考发现现象背后的原因和规律,这是提高认知水平的两个关键因素。人人都是自媒体的时代,好处是每个人都可以发声,坏处则是很多自媒体的内容质量并不高(包括我的一些内容),这导致发现优质内容的成本更高了。阅读的信息良莠不齐,浪费时间;有价值的知识点太零碎,不成体
2020-05-31 16:28:33
7163
原创 我的 2019 总结:警钟为谁而鸣
2018 年总结之工作篇2017 年总结2016 年总结以前擅长一些游戏,是因为花了些时间研究技巧和规则。现在开启了人生这场终极大作,却很少思考其中的规则和路线,大多时候都顺应内心随波逐流,以至于现在回首 2019,对自己不太满意。人太容易在实际中迷失,而忘了自己究竟要去哪儿。去年、前年我的目标是:“成为具备创业激情和创业各方面能力的人”。现在想想,目标设定的太远,远到脱离当下实...
2020-02-21 19:48:12
8587
7
原创 Android 框架学习5:微信热修复框架 Tinker 从使用到 patch 加载、生成、合成原理分析
这篇文章是基于内部分享的逐字稿内容整理的,现在比较喜欢写逐字稿,方便整理成文章。文章目录目录Tinker 介绍使用TinkerApplicaition``SampleApplicaitionLike``TinkerInstaller总结运行时 Tinker 是如何加载补丁加载 dex混合编译与热修复加载资源加载 sodex diffdex 格式tinker patch 格式了解diff 和合...
2019-12-01 12:51:00
13257
5
原创 Android 编译报错: Caused by: java.util.zip.ZipException: zip file is empty 解决办法
记录一个浪费了几个小时的小坑。使用 Aspectj 后,一开始还没问题,不知道修改了什么导致编译报错:Caused by: java.util.zip.ZipException: zip file is empty各种搜索无果,最后发现,居然是自定义的 Pointcut 写错了!删掉后就可以了。。。...
2019-08-29 12:38:33
15116
4
原创 5分钟了解《代码整洁之道》精华
让软件能工作和让软件保持整洁,是截然不同的工作,后者需要投入的更多。 大多数人只能更多地把精力放在让代码能工作,而没办法保持代码有组织更整洁。能做到代码整洁,说明你已经不是一般人了。 本文内容主要分以下几点:什么样的代码是整洁的 取个好名字 让函数再整洁一点 注释的好与坏 格式化 异常处理和边界 整洁的类1.什么样的代码是整洁的如上图所示,衡量代...
2019-02-27 10:24:24
21521
13
原创 毕业两年总结
文章目录:现状想成为什么样的人做了什么有意义的事,距离目标还有多远认知上有什么进步价值职业观人际交往有没有更认识自己是什么样的人有什么后悔的事自己需要反复看的话总结去年七月写了《毕业一年总结》,一转眼就又是七月。过去这一年经历了不少事,回头看看,大多数选择还是比较满意的。今天趁着有空,对毕业后的第二年做个总结吧。文章主要内容:现状想成为什...
2018-07-30 02:02:11
16068
44
原创 重温数据结构:理解 B 树、B+ 树特点及使用场景
读完本文你将了解:B 树对比平衡二叉树和 B 树B 树中如何查找数据B 树如何保证平衡使用场景B+ 树Thanks大家好,前面那篇文章《3 分钟理解完全二叉树、平衡二叉树、二叉查找树》中我们了解了几种特殊的二叉树的功能及特点,知道了它们在进行查找数据时可以提高效率,但需要注意的是,这是指在内存中进行查找。如果有海量的数据,不可能一次性读取到内存中,这时候就要考虑...
2018-05-29 00:46:13
22860
8
原创 我的自控力心得
大家好,我是张拭心,终于到周末了,忙碌了一周,周末需要多多思考总结,和大家分享下我今天的总结。前几天和朋友聊起自控力这个话题,大家纷纷表示:哇拭心你自控力太强了,博客写了三四年,公众号也运营的这么好,每天有这么多铁粉给你点广,怎么能像你一样强。听到这些赞美之词我微微一笑十分淡然,心里却已经笑开了花哈哈。千穿万穿马屁不穿,古人诚不欺我。如此谦虚谨慎的人听到这种话都忍不住飘飘然,更何况一般...
2018-05-27 17:49:32
10466
46
原创 Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程
Android 框架学习1:EventBus 3.0 的特点与如何使用 Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线 Android 框架学习3:我从 EventBus 中学到的精华通过本篇文章你将学到如下内容:假如我们来写一个框架走近 Picasso认识核心 API请求信息相关的类加载行为相关的类图片获取处理相关的类调度器...
2018-03-27 21:57:20
8455
12
原创 Java 基础巩固:内部类的字节码学习和实战使用场景
文章出自:安卓进阶学习指南 主要贡献者: Cloud9527 Alex_赵 Struggle shixinzhang 读完本文你将了解: 背景介绍四种内部类介绍成员内部类静态内部类局部内部类匿名内部类内部类的使用场景成员内部类的使用场景静态内部类的使用场景匿名内部类的使用场景局部内部类内存泄漏总结...
2017-11-30 22:59:17
10371
2
原创 Java 基础巩固:再谈抽象类和接口
文章出自:安卓进阶学习指南 主要贡献者: Milo Struggle shixinzhang 读完本文你将了解:背景介绍什么是抽象类和接口特点与区别抽象类的特点接口的特点栗子小结如何选择抽象与多态面向接口编程多态继承和组合总结Thanks背景介绍大家好,这篇文章是 《安卓进阶技能树计划》 的第一部分 《Java 基础系列》 的第一篇
2017-11-02 00:01:02
13794
14
原创 Java 常用工具类 Collections 源码分析
文章出处 文章出自:安卓进阶学习指南 作者:shixinzhang 完稿日期:2017.10.25Collections 和 Arrays 是 JDK 为我们提供的常用工具类,方便我们操作集合和数组。这次之所以总结这个,是因为在一次面试中被问到一个细节,回答地不太好,这里补一下吧。由于两个都是工具类,我们就放在一起学习。读完本文你将了解:文章出处Collections提
2017-10-26 02:19:38
28182
46
原创 Android 进阶17:Fragment FragmentManager FragmentTransaction 深入理解
日常开发中我们经常使用 Fragment 管理布局,使用起来非常方便,但是在简单的 API 背后隐藏了什么操作,很多人恐怕不了解。如果你回答不出这些问题,那这篇文章可能就对你有些帮助:Fragment FragmentManager FragmentTransaction 的关系和作用Fragment 如何实现布局的添加替换嵌套 Fragment 的原理读完本文你将了解:Fragment 的
2017-09-29 13:36:42
28526
11
原创 并发编程6:CopyOnWriteArrayList 的写时复制
首先提个问题: - 线程安全的 List 集合有什么? - CopyOnWriteArrayList 的特点以及使用场景? 如果这个问题你答不上来,那这篇文章可能就对你有些价值。读完本文你将了解:CopyOnWriteArrayList 简介CopyOnWriteArrayList 源码分析Android SDK 25底部实现读取操作修改操作迭代器CopyOnW
2017-08-20 09:58:06
9906
1
原创 npm 与 package.json 快速入门教程
npm 是前端开发广泛使用的包管理工具,之前使用 Weex 时看了阮一峰前辈的文章了解了一些,这次结合官方文章总结一下,加深下理解吧!读完本文你将了解:什么是 npm?安装 npm更新 npmpackage.json 文件package.json 如何创建package.json 的内容指定依赖的包Semantic versioning(语义化版本规则)安装 pac...
2017-08-02 19:16:20
105526
23
原创 Git HEAD detached from XXX (git HEAD 游离) 解决办法
本文 Git 图片主要来自:图解 Git,非常感谢!读完本文你将了解:什么是 HEADHEAD 游离状态的利与弊具体解决操作Thanks什么是 HEADGit 中的 HEAD 可以理解为一个指针,我们可以在命令行中输入 cat .git/HEAD 查看当前 HEAD 指向哪儿,一般它指向当前工作目录所在分支的最新提交。当使用 git checkout 切换
2017-07-28 20:13:44
99776
12
App研发录:架构设计、Crash分析和竞品技术分析.pdf
2015-12-27
Android实现微信游戏【围住神经猫】模仿版
2015-07-29
EffectiveJava中文版
2015-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人