Live My Life

淡而无味也是一种味道

[JUC] Unsafe

Unsafe...

Java 和 C++ 语言的一个重要区别就是 Java 中我们无法直接操作一块内存区域,不能像 C++ 中那样可以自己申请内存和释放内存。Java 中的 Unsafe 类为我们提供了类似 C++ 手动管理内存的能力。Unsafe 类,全限定名是 sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。 基本介绍 如下 Unsaf......
JUC

[JUC] synchronized 的底层实现

Unsafe、CAS、Java Object Layout、Lock Upgrade...

用户态与内核态 JDK 早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过 kernel(指大多数操作系统的核心部分),系统调用。 123456789101112131415161718192021;hello.asm;write(int fd, const void *buffer, size_t nbytes)section data msg db "......
JUC

[Spring] 8 Spring 用到了那些设计模式

Design Pattern...

Spring 用到了那些设计模式 简单工厂(非23种设计模式中的一种) 实现方式 BeanFactory。Spring 中的 BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得 Bean 对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 实现原理 bean 容器的启动阶段 读......

[Generics] 泛型实现原理

Generic implementation principle...

泛型实现原理 JDK 1.5增加的新特性里面有一个就是泛型。对于泛型的评价,褒贬不一,废话不多说,先来看看他的原理。泛型是提供给 javac 编译器使用的,可以限定集合中的输入类型,让编译器拦截源程序中的非法输入,编译器编译带类型说明的集合时会去掉类型信息,对于参数化得泛型类型,getClass() 方法的返回值和原始类型完全一样。 对于下面这个源程序: 12345678public cla......

[Java 杂记] Java 内存泄露风险

七个潜在的内存泄露风险

虽然 Java 程序员不用像 C、C++ 程序员那样时刻关注内存的使用情况,JVM 会帮我们处理好这些,但并不是说有了 GC 就可以高枕无忧,内存泄露相关的问题一般在测试的时候很难发现,一旦上线流量起来可能马上就是一个诡异的线上故障。 内存泄露的定义 如果 GC 无法回收内存中不再使用的对象,则定义为内存有泄露。 潜在的内存泄露场景 未关闭的资源类 当我们在程序中打开一个新的流或者是新建一个......

[TCP/IP] OSI and TCP/IP

The Open Systems Interconnection model (OSI model) is a conceptual model that characterises and standardises the communication functions of a telecommunication or computing system without regard to its underlying internal structure and technology. Its goal is the interoperability of diverse communication systems with standard communication protocols...

今天我们先学习一下以太网最基本也是重要的知识 —— OSI 参考模型。 OSI参考模型 OSI 的来源 OSI(Open System Interconnect),即开放式系统互联。一般都叫 OSI 参考模型,是 ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO 为了更好的使网络应用更为普及,推出了 OSI 参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公......

[TCP/IP] What is TCP/IP

The Internet protocol suite is the conceptual model and set of communications protocols used in the Internet and similar computer networks. It is commonly known as TCP/IP because the foundational protocols in the suite are the Transmission Control Protocol (TCP) and the Internet Protocol (IP)...

什么是 IP 和 TCP? Internet 协议(IP)是 Internet 的地址系统,具有将数据包从源设备传递到目标设备的核心功能。IP 是建立网络连接的主要方式,奠定了 Internet 的基础。IP 不负责数据包排序或错误检查。这样的功能需要另一种协议,通常是 TCP。 TCP/IP 关系类似于通过邮件向某人发送写在拼图上的消息。消息写好后,拼图分解成碎片。接着,各个碎片可能经过不......

[JDK8] 10 通用 Builder 创建对象

你可以 new 一个对象...

程序员经常会遇到灵魂拷问:你有对象吗?没有,但我可以 new 一个! 12345678910public class GirlFriend { private String name; private int age; // 省略 getter & setter ... public static void main(String[] args) &......

[JDK8] 9 Map 几个新方法

getOrDefault、computeIfAbsent、putIfAbsent、merge...

JDK8 应该是 Java 中最坚挺一个版本,这个版本新增很多特性,让我们开发起来多了很多便利。不过最近 Review 项目代码的时候发现,虽然很多项目工程已经使用了 JDK8,但是工程代码却很少使用到 JDK8 新特性、新方法。如果单从代码正确性上来说,老方式写法写当然没有什么问题,那唯一的缺点其实就是代码行数比较多,比较繁琐。那同样的需求,使用 JDK8 新方法,其实几行代码就可以搞定,......

[JUC] Java 并发编程知识点梳理

it's too hard......

知识体系系统性梳理 Java 并发之基础 首先全局的了解并发的知识体系,同时了解并发理论基础和线程基础,并发关键字等,这些是理解 Java 并发框架的基础。 Java 并发 - 知识体系 Java 并发 - 理论基础 多线程的出现是要解决什么问题的? 线程不安全是指什么?举例说明 并发出现线程不安全的本质什么?可见性,原子性和有序性。 Java是怎么解决并发问题的?3个关键字,JMM......
JUC