Live My Life

淡而无味也是一种味道

[Spring Cloud Alibaba] 1 Spring Cloud Alibaba

Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud...

在学习 Spring Cloud Alibaba 之前,先来简单回顾下。 目前市场上主流的套微服务架构解决方案: Spring Boot + Spring Cloud Netflix = Java 原生云开发 Spring Boot + Dubbo + Zookeeper 回顾 博主在之前的博文中,对于上面的两套方案也做了简单是总结和案例练习。今天博主想要讲述的是基于 Spring Cl......

[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 新方法,其实几行代码就可以搞定,......