0%

序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。 - 维基百科

在 Java 中,序列化是指将 Java 对象转换为字节序列的过程,而反序列化是指将字节序列转换为 Java 对象的过程。

阅读全文 »

volatile 关键字保证了可见性,但是不保证原子性,采用内存屏障来实现的。当一个共享变量被 volatile 修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。

synchronized 和 Lock 既能够保证原子性也能够保证可见性。

阅读全文 »

为什么需要代理

不希望或是不能直接访问某一对象 A,而是通过代理对象 B 间接访问。这种方式我们就称为代理。
这里对象 A 就称为委托类,也称为被代理类,对象 B 称为代理类。

代理有哪些优点?

  1. 隐藏委托类;
  2. 解耦。在不改变委托类的情况下做一些额外处理,比如添加初始判断及其他公共操作;
  3. AOP 编程;
阅读全文 »

内存泄漏是造成应用程序 OOM 的主要原因之一。Android 系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多时,就会导致应用所需要的内存超过系统分配的内存阈值,这就造成了内存溢出从而导致应用 Crash。

阅读全文 »

“系统跟踪”就是记录短时间内的设备活动,并生成跟踪文件,该文件记录了系统报告,可以帮助开发者了结应用的性能。

阅读全文 »

Kotlin 协程已经成为了谷歌官方推荐的异步任务处理方式。协程的英文单词是 Coroutines,Coroutines 这个单词实际上是一个组合单词,它是由 Co + routines 组合而成的。Co 在这里指的是 cooperation (协作),routines 在英文当中表达的意思是叫例行日程。利用协作的方式去帮助我们完成例行日程,就是协程的含义。
很多编程语言上都会有协程,在不同的编程语言上,协程的实现都有所差异。

阅读全文 »

函数

方法是一种特殊的函数,它必须通过类的实例调用,也就是说每个方法可以在方法内部拿到这个方法的实例。这是方法和函数的不同之处。
方法和函数几乎一模一样,唯一的区别就是方法必须声明在类里面。

阅读全文 »

AsyncTask 是 Android 系统的一个轻量级异步类,它可以在线程池中执行后台任务,并且把执行的进度和结果传递给主线程。默认串行执行,已废弃。

阅读全文 »