Java 对象序列化
序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。 - 维基百科
在 Java 中,序列化是指将 Java 对象转换为字节序列的过程,而反序列化是指将字节序列转换为 Java 对象的过程。
序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。 - 维基百科
在 Java 中,序列化是指将 Java 对象转换为字节序列的过程,而反序列化是指将字节序列转换为 Java 对象的过程。
volatile 关键字保证了可见性,但是不保证原子性,采用内存屏障来实现的。
当一个共享变量被 volatile 修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。
synchronized 和 Lock 既能够保证原子性也能够保证可见性。
内存泄漏是造成应用程序 OOM 的主要原因之一。Android 系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多时,就会导致应用所需要的内存超过系统分配的内存阈值,这就造成了内存溢出从而导致应用 Crash。
“系统跟踪”就是记录短时间内的设备活动,并生成跟踪文件,该文件记录了系统报告,可以帮助开发者了结应用的性能。
Kotlin 协程已经成为了谷歌官方推荐的异步任务处理方式。协程的英文单词是 Coroutines,Coroutines 这个单词实际上是一个组合单词,它是由 Co + routines 组合而成的。Co 在这里指的是 cooperation (协作),routines 在英文当中表达的意思是叫例行日程。利用协作的方式去帮助我们完成例行日程,就是协程的含义。
很多编程语言上都会有协程,在不同的编程语言上,协程的实现都有所差异。
AsyncTask
是 Android 系统的一个轻量级异步类,它可以在线程池中执行后台任务,并且把执行的进度和结果传递给主线程。默认串行执行,已废弃。
本文总结了一些开发中常见的问题,如 WebView 中图片不显示,inputfile 标签无效等问题。