5 e1122334455

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 52w+

《Java核心技术面试精讲》3到4讲学习总结

第3讲心得该讲介绍了final、finally、 finalize。final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作。finalize 是.

2020-09-10 17:12:41

《Java核心技术面试精讲》1到2讲学习总结

第1讲心得该讲介绍了Java平台。Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。 “Java 是解释执行”这句话不太准确。我们开发的 Java 的源代码,首先通过 Javac 编

2020-09-05 21:26:56

《Java并发编程实战》41到45讲学习总结

第41讲心得该讲介绍了高性能数据库连接池HiKariCP。数据库连接池和线程池一样,都属于池化资源,作用都是避免重量级资源的频繁创建和销毁,对于数据库连接池来说,也就是避免数据库连接频繁创建和销毁。 执行数据库操作基本上是一系列规范化的步骤:通过数据源获取一个数据库连接;创建 Statement;执行 SQL;通过 ResultSet 获取 SQL 执行结果;释放 ResultSet;释放 Statement;释放数据库连接。 //数据库连接池配置HikariConfig config =

2020-08-29 20:48:37

《Java并发编程实战》36到40讲学习总结

第36讲心得该讲介绍了Guarded Suspension模式。一个对象 GuardedObject,内部有一个成员变量——受保护的对象,以及两个成员方法——get(Predicate<T> p)和onChanged(T obj)方法。其中get() 方法用来实现等待,参数 p 就是用来描述这个前提条件的;onChanged() 方法可以 fire 一个事件,而这个事件往往能改变前提条件 p 的计算结果。 class GuardedObject<T>{ //受保护的

2020-08-22 19:59:34

《Java并发编程实战》31到35讲学习总结

第31讲心得该讲介绍了Fork/Join。Fork 对应的是分治任务模型里的任务分解,Join 对应的是结果合并。Fork/Join 计算框架主要包含两部分,一部分是分治任务的线程池 ForkJoinPool,另一部分是分治任务 ForkJoinTask。。 ForkJoinTask 是一个抽象类,它的方法有很多,最核心的是 fork() 方法和 join() 方法,其中 fork() 方法会异步地执行一个子任务,而 join() 方法则会阻塞当前线程来等待子任务的执行结果。ForkJoinTas

2020-08-15 10:29:19

《Java并发编程实战》26到30讲学习总结

第26讲心得该讲介绍了Fork/Join。Fork 对应的是分治任务模型里的任务分解,Join 对应的是结果合并。Fork/Join 计算框架主要包含两部分,一部分是分治任务的线程池 ForkJoinPool,另一部分是分治任务 ForkJoinTask。。 ForkJoinTask 是一个抽象类,它的方法有很多,最核心的是 fork() 方法和 join() 方法,其中 fork() 方法会异步地执行一个子任务,而 join() 方法则会阻塞当前线程来等待子任务的执行结果。ForkJoinTas

2020-08-08 13:18:45

《Java并发编程实战》21到25讲学习总结

第21讲心得该讲介绍了原子类。Java SDK 并发包将无锁方案封装提炼之后,实现了一系列的原子类。其实原子类性能高的秘密很简单,硬件支持而已。CPU 为了解决并发问题,提供了 CAS 指令(CAS,全称是 Compare And Swap,即“比较并交换”)。CAS 指令包含 3 个参数:共享变量的内存地址 A、用于比较的值 B 和共享变量的新值 C;并且只有当内存中地址 A 处的值等于 B 时,才能将内存中地址 A 处的值更新为新值 C。作为一条 CPU 指令,CAS 指令本身是能够保证原子性的

2020-08-01 08:15:39

《Java并发编程实战》16到20讲学习总结

第16讲心得该讲介绍了局部变量为什么是安全的。每个方法在调用栈中都有自己独立的空间,称为栈帧。每个栈帧中都有方法需要的参数和返回地址。调用方法时会创建新的栈帧并压入调用栈;方法返回时对应的栈帧就被自动弹出。也就是说,栈帧是和方法同生共死的。 局部变量的作用域是方法内部,也就是说局部变量也是和方法同生共死的。事实上,局部变量也放入了栈帧中。 两个线程可以用不同的参数调用同一个方法,那么线程和调用栈是什么关系呢?每个线程都有自己的调用栈,局部变量保存在各自的调用栈中。由于局部变量不会共享,所以没有并

2020-07-26 19:17:38

《Java并发编程实战》11到15讲学习总结

第11讲心得该讲介绍了局部变量为什么是安全的。每个方法在调用栈中都有自己独立的空间,称为栈帧。每个栈帧中都有方法需要的参数和返回地址。调用方法时会创建新的栈帧并压入调用栈;方法返回时对应的栈帧就被自动弹出。也就是说,栈帧是和方法同生共死的。 局部变量的作用域是方法内部,也就是说局部变量也是和方法同生共死的。事实上,局部变量也放入了栈帧中。 两个线程可以用不同的参数调用同一个方法,那么线程和调用栈是什么关系呢?每个线程都有自己的调用栈,局部变量保存在各自的调用栈中。由于局部变量不会共享,所以没有并

2020-07-19 09:28:26

《Java并发编程实战》6到10讲学习总结

第6讲心得本讲介绍了等待-通知机制:当线程需要的条件不满足时,可以将线程阻塞,当满足条件时再进行通知,从而避免了轮询操作对CPU的消耗。Java 语言内置的 synchronized 配合 wait()、notify()、notifyAll() 这三个方法可以快速实现等待-通知机制。 当一个线程进入临界区后,由于某些条件不满足,需要进入等待状态,Java 对象的 wait() 方法就能够满足这种需求。 当条件满足时调用 Java 对象的 notify()方法会通知等待队列中的线程,告诉它条件曾经

2020-07-11 15:34:52

《Java并发编程实战》1到5讲学习总结

第1讲心得第1讲介绍了产生并发编程Bug的原因:缓存导致的可见性问题、线程切换带来的原子性、编译优化带来的有序性问题。为了均衡CPU和内存的速度差异,CPU引入了缓存的概念。在多核时代,每个CPU都有自己的缓存,多个线程操纵的CPU缓存是不同的,因此一个线程对共享变量的修改对另一个线程可能不是立即可见的。 通过让每个进程每次只执行一个时间片的时间操作系统做到了分时复用。进程间做任务切换需要切换内存映射地址,而线程间切换避免了切换内存映射地址的开销,因此现代操作系统都在线程间进行任务调度。

2020-07-04 14:47:24
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。