Dating
《Dating》,励志作品,丹麦出品,2003年上映。
TAG 相关标签
5 用户评论
每一个人,都是一颗孤独的星星。生养的父母,年少时亲密的玩伴,都会越走越远。那时总是以为长大会更美好,后来才明白,什么叫命运多舛。
看完书,想了一个问题,如果可选择,希望最少还剩多少时间?希望至少15年,让我看到心爱的儿子能自己独立生存。
奇怪的联想。
什么玩意,又是皇帝金扁担的臆想豪门,无脑女主,冷酷男主。浪费时间
除了少许错别字,端的是跌宕起伏,荡气回肠,不过结尾跳的太快,渤海国是大祚荣建立的,这个好像和李旭有点远
值得反复回味!
投资不是一件简单的事情,而是一件单纯的事情,投资者能够达到相对纯粹的境界,是真正的“大智若愚”。千方百计解难题,把投资技巧往复杂化方向发展,看起来很聪明,恰恰是“大愚若智”的表现。
因为有限的人类理性根本就无法随时随地地指引和保护我们。无论人类理性看上去多么强大,多么完美,我们依然生活在不确定之中,而惟一能够战胜这种不确定性的,绝不是什么高深精妙的理论,而是简单的信仰。
作为一个投资者,以平和心态看待成败得失,成功的事情简单重复地去做,是投资追求的最高境界。
Java高级进阶必须要读的一本剧之一,知识点多而深,部分点需要有实践经验才能消化。大概复盘自己关于本剧消化的知识点,一方面加深印象,一方面便于回顾。
1.Java虚拟机是什么?
Java虚拟机连接Java语言和各种平台操作系统的中间件,通过Java虚拟就可以将由Java语言开发的应用程序编译为适合操作系统识别的机器码,即将class文件通过对应平台的JVM解释成平台识别的机器码,是实现Java跨平台的关键技术。
主要作用
A:将class文件编译为操作系统可以识别的机器码(后编译阶段)
B:自动化内存管理。
2.Java虚拟机的工作原理?
2.1.内存区域管理
2.1.1. 内存区域划分
i.堆
1.对象的主要存储地点
2.所有线程共享
ii.方法区
1.Class对象相关信息,类变量
2.所有线程共享
iii.本地方法区
iv.栈
1.主要存储局部变量,对象的引用
v.程序计数器:不会发生out of memory
2.1.2. 垃圾回收机机制
i.主要针对的是堆区域
ii.通过可达性分析来判断一个对象是否可以被回收。可以作为根对象的有:虚拟机栈中引用的对象,方法区中静态类属性引用的对象,方法区中常量引用的对象,本地方法区中引用的对象
iii.垃圾收集算法
1.标记清除
2.标记复制
3.标记整理
4.分代算法
iv.垃圾收集器
1.是否和应用进程并行
a)平行:G1, CMS, Parallel Old
b)串行:Serial,serial Old ParNew;
2.应用的分代
a)年轻带:serial, parNew,Parallel Scavenge, G1
b)老年带: CMS, SerialOld, G1,Parallel Old
3.最常用的G1和CMS
a)G1:追求低停顿,
i. 特点:并行和并发,分代回收,空间整合,可以预测停顿,
ii. 大致流程:初始标记,并发标记,最终标记,筛选回收
b)CMS:最求地停顿
i. 特点:并行并发收集垃圾,无法清除浮动垃圾,会产生内存碎片
ii. 大致流程:初始标记,并发标记,重新标记,并发清除
2.2.编译Java文件
将java文件编译成操作系统识别的机器码大致需要经历两个阶段,前编译阶段将java文件编译成class文件,后编译阶段将class文件编译成操作系统的识别的字节码;这里JVM主要作用于后编译阶段。
2.2.1. 虚拟机类加载机制
i.加载流程:加载,链接(验证,准备,解析),初始化
ii.双亲委派模型:防止基础类误加载成用户自定义的类
iii.类加载器的种类:启动类加载器,扩展类加载器,应用类加载器,用户自定义类加载器
2.2.2. 虚拟机编译class文件
i.Java虚拟机既可以解释执行也可以编译执行;想要立即执行的代码采用解释执行,对热点代码采用编译执行以提高执行效率
3.如何灵活使用Java虚拟机?
3.1. 充分利用资源层面
i.Java的内存模型:线程 + 线程本地内存 + 主存;所有的变量都存储在主存中,而线程的工作内存中保存的是主存变量的copy,线程对变量的操作都必须在工作内存中进行,线程之间变量值的传递必须通过主存进行。
ii.多线程环境下的线程安全
1. 可见性,原子性,指令重排序:volatile 保证可见性和禁止指令重排序
2. 同步策略:互斥同步(各种锁,sychronized,lock),非阻塞同步(cas)
3. 锁优化层面:自旋锁(方式线程不断在内核和用户态切换带来的开销),锁粗化,偏向锁,锁消除等
3.2. 问题分析层面
i. 通过相关