Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。
来自:第2讲 | Exception和Error有什么区别?
21 人划过
开关原则(Open-Close, Open for extension, close for modification),设计要对扩展开放,对修改关闭。换句话说,程序设计应保证平滑的扩展性,尽量避免因为新增同类功能而修改已有实现,这样可以少产出些回归(regression)问题。
来自:第13讲 | 谈谈接口和抽象类有什么区别?
9 人划过
实现动态代理的方式很多,比如 JDK 自身提供的动态代理,就是主要利用了上面提到的反射机制。还有其他的实现方式,比如利用传说中更高性能的字节码操作机制,类似 ASM、cglib(基于 ASM)、Javassist 等。
来自:第6讲 | 动态代理是基于什么原理?
8 人划过
StringBuffer 实现的一些细节,它的线程安全是通过把各种修改数据的方法都加上 synchronized 关键字实现的,非常直白。其实,这种简单粗暴的实现方式,非常适合我们常见的线程安全类实现,不必纠结于 synchronized 性能之类的,有人说“过早优化是万恶之源”,考虑可靠性、正确性和代码可读性才是大多数应用开发最重要的因素。
来自:第5讲 | String、StringBuffer、StringBuilder有什么区别?
8 人划过
而 NIO 则是利用了单线程轮询事件的机制,通过高效地定位就绪的 Channel,
来自:第11讲 | Java提供了哪些IO方式? NIO如何实现多路复用?
6 人划过
我注意到有一些观点,认为通过逃逸分析,JVM 会在栈上分配那些不会逃逸的对象,这在理论上是可行的,但是取决于 JVM 设计者的选择。据我所知,Oracle Hotspot JVM 中并未这么做,这一点在逃逸分析相关的文档里已经说明,所以可以明确所有的对象实例都是创建在堆上
来自:第25讲 | 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?
6 人划过
,任何时候最多有 nThreads 个工作线程是活动的。
来自:第21讲 | Java并发类库提供的线程池有哪几种? 分别有什么特点?
5 人划过
CMS(Concurrent Mark Sweep) GC,基于标记 - 清除(Mark-Sweep)算法,设计目标是尽量减少停顿时间,这一点对于 Web 等反应时间敏感的应用非常重要,一直到今天,仍然有很多系统使用 CMS GC。但是,CMS 采用的标记 - 清除算法,存在着内存碎片化问题,所以难以避免在长时间运行等情况下发生 full GC,导致恶劣的停顿。另外,既然强调了并发(Concurrent),CMS 会占用更多 CPU 资源,并和用户线程争抢。
来自:第27讲 | Java常见的垃圾收集器有哪些?
5 人划过
对某类型资源如网络通信的消耗进行统计,重点要求是,不开启时必须是零开销,而不是低开销
来自:第24讲 | 有哪些方法可以在运行时动态生成一个Java类?
3 人划过
切面编程落实到软件工程其实是为了更好地模块化,而不仅仅是为了减少重复代码。通过 AOP 等机制,我们可以把横跨多个不同模块的代码抽离出来,让模块本身变得更加内聚,进而业务开发者可以更加专注于业务逻辑本身。从迭代能力上来看,我们可以通过切面的方式进行修改或者新增功能,这种能力不管是在问题诊断还是产品能力扩展中,都非常有用。
来自:第37讲 | 谈谈Spring Bean的生命周期和作用域?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
包含这门课的学习路径
Java工程师
29门课程 154.5w人学习
看过的人还看了