摘要: 什么是并发编程,简单来说就是为了充分利用cpu,多个任务同时执行,快速完成任务。 并发编程相关的概念和技术看上非常零散,相关度也很低,想要学习好并发编程,可以从下面两方面入手:一是建立全景图,从细节“跳出来,看全景”,另一个是深挖细节,也就是“钻进去,看本质”。 其实不止是并发编程的学习,任何的知识 阅读全文
posted @ 2022-02-28 11:06 huansky 阅读(805) 评论(0) 推荐(0) 编辑
摘要: 锁和被保护资源之间的关系 我们把一段需要互斥执行的代码称为临界区。线程在进入临界区之前,首先尝试加锁 lock(),如果成功,则进入临界区,此时我们称这个线程持有锁;否则呢就等待,直到持有锁的线程解锁;持有锁的线程执行完临界区的代码后,执行解锁 unlock()。这样理解本身没有问题,但却很容易让我 阅读全文
posted @ 2022-02-27 00:02 huansky 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 《Java虚拟机规范》中曾试图定义一种“Java内存模型”(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C和C++等)直接使用物理硬件和操作系统的内存模型。因此,由于不同平台 阅读全文
posted @ 2022-02-26 14:11 huansky 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我们整 阅读全文
posted @ 2022-02-23 13:02 huansky 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 系统调用在内核中的入口都是sys_xxx,但其实Linux的系统调用都改为SYSCALL_DEFINE定义的。本文以socket系统调用为例来详解。 1 首先看一下SYSCALL_DEFINE的定义,如下: 1 #define SYSCALL_DEFINE0(name) asmlinkage lon 阅读全文
posted @ 2022-01-12 16:44 huansky 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 什么是伪共享 计算机系统中为了解决主内存与CPU运行速度的差距,在CPU与主内存之间添加了一级或者多级高速缓冲存储器(Cache),这个Cache一般是集成到CPU内部的,所以也叫 CPU Cache,如下图是两级cache结构: Cache内部是按行存储的,其中每一行称为一个cache行,cach 阅读全文
posted @ 2022-01-10 00:11 huansky 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 在JDK 5之前Java语言是靠 synchronized 关键字保证同步的,这会导致有锁。锁机制存在以下问题: 在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 一个线程持有锁会导致其它所有需要此锁的线程挂起。 如果一个优先级高的线程等待一个优先级低的线程 阅读全文
posted @ 2022-01-09 14:53 huansky 阅读(705) 评论(0) 推荐(1) 编辑
摘要: LeakCanary 是一个简单方便的内存泄漏检测框架,做 android 的同学基本都收到过 LeakCanary 检测出来的内存泄漏。目前 LeakCanary 最新版本为 2.7 版本,并且采用 kotlin 重写了一遍。最近也是对 kotlin 有了一些了解后,才敢来分析 LeakCanar 阅读全文
posted @ 2021-12-11 14:22 huansky 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 一开始没打算分析 SubsamplingScaleImageView 这个开源的图片浏览器的,因为这个库在我们 App 中使用了,觉得自己对这个库还是比较熟悉的,结果某天再看看到源码介绍的时候,才发现自己对其了解并不够深入,所以这才打算再细细看看源码的实现,同时记录方便以后回顾。 那么 Subsam 阅读全文
posted @ 2021-11-28 20:30 huansky 阅读(879) 评论(0) 推荐(1) 编辑
摘要: 最近在做产品需求的时候上线了一个新的产品需求,给用户多了一种新的排序排序规则,更加方便用户找到自己想要的东西。新版本发布后,QA 给我发了一个 线上崩溃 bug 链接,具体内容如下: 看到上面的链接,我有点懵逼了,就这排序还能给我搞出 bug 来?看到抛出的异常信息,也没有见过,于是直接百度搜索了。 阅读全文
posted @ 2021-11-14 22:33 huansky 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 本文将阐述 Java 静态方法,实例方法之间的区别,并给出它们适用场景。虽然不知道对代码编写影响也不大,但是理解后,对你日后的代码设计是有好处的。 阅读全文
posted @ 2021-10-20 00:09 huansky 阅读(749) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 最近项目中用到了 DialogFragment,在使用 DialogFragment 的时候,遇到了很多问题,比如如何在显示的时候保证状态栏的颜色也不发生变化,如何设置自己的背景,不用系统背景等等。 那么 DialogFragment 是什么样的呢?DialogFragment 在 an 阅读全文
posted @ 2021-09-19 23:48 huansky 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。 1.1 应用层 应用层(application-layer)的任务是通过应用进程间的交互 阅读全文
posted @ 2021-08-17 15:11 huansky 阅读(2885) 评论(0) 推荐(0) 编辑
摘要: 概述 前面算法系列文章有写过分治算法基本原理和实践,对于分治算法主要是理解递归的过程。二分法是分治算法的一种,相比分治算法会简单很多,因为少了递归的存在。 在计算机科学中,二分查找算法(英语:binary search algorithm),也称折半搜索算法(英语:half-interval sea 阅读全文
posted @ 2021-07-25 23:20 huansky 阅读(1580) 评论(0) 推荐(1) 编辑
摘要: Init 进程是 Linux 内核启动后创建的第一个用户进程,地位非常重要。Init 进程在初始化过程中会启动很多重要的守护进程,因此,了解 Init 进程的启动过程将有助于我们更好地理解 Android系统。 阅读全文
posted @ 2021-07-17 16:19 huansky 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 什么是 Binder ? Binder是Android系统中进程间通讯(IPC)的一种方式,也是Android系统中最重要的特性之一。Binder的设计采用了面向对象的思想,在Binder通信模型的四个角色里面;他们的代表都是“Binder”,这样,对于Binder通信的使用者而言,Server里面 阅读全文
posted @ 2021-07-14 00:08 huansky 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 一、概述 作为 Android 开发者,相信大家都遇到过 ANR。那么为什么会出现 ANR 呢,ANR 之后系统都做了啥。文章将对这个问题详细解说。 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过 阅读全文
posted @ 2021-07-05 00:02 huansky 阅读(881) 评论(0) 推荐(0) 编辑
摘要: 热修复系列文章: 深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术 深入探索Android热修复技术原理读书笔记 —— 资源热修复技术 1. SO库加载原理 Java Api 提供以下两个接口加载一个 so 库 S 阅读全文
posted @ 2021-05-24 13:16 huansky 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 该系列文章: 深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术 1 普遍的实现方式 Android资源的热修复,就是在app不重新安装的情况下,利用下发的补丁包 直接更新本app中的资源。 目前市面上的很多资源热修 阅读全文
posted @ 2021-05-11 14:00 huansky 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 在前一篇文章 深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术。 1 底层热替换原理 在各种 Android 热修复方案中,Andfix 的即时生效令人印象深刻,它稍显另类, 并不需要重新启动,而是在加载补丁后直接对方法进 阅读全文
posted @ 2021-05-08 22:50 huansky 阅读(562) 评论(0) 推荐(0) 编辑