![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码学习
文章平均质量分 64
鳄鱼儿
计算机专业硕士、CSDN博客专家、阿里云博客专家。密码应用技术/云原生/云计算/边缘计算
展开
-
Java 8 新特性 Optional 类学习,理解并应用。NullPointerException空值检测
🍀Optional 类JDK1.8开始引入的特性,Optional 类主要解决空指针异常(NullPointerException)问题。Optional类是一个可能包含或不包含非空值(可以为null)的容器对象。 如果一个值存在,调用 isPresent()方法将返回true、get()方法将返回该对象。Optional类提供判断空值的方法,使用其中方法可以不用再显式地进行空值检测。举例:User类的结构String isocode = user.getAddress().getCountr原创 2022-03-09 22:03:14 · 600 阅读 · 0 评论 -
Mac电脑查看JDK文档,CHM格式文档阅读
????下载CHM阅读器通过app store下载一个CHM阅读器,这里使用的是 chm阅读器-专业版。下载链接:https://apps.apple.com/cn/app/chm阅读器-专业版/id650683226?mt=12直接打开jdk的CHM文档即可阅览☘️中文乱码问题解决软件好像不能选择默认编码,这里需要手动选择下UTF-8编码。如果有此类比较好的其他软件,大家可以推荐一下。????JDK1.8中文文档下载之前写过一篇JDK1.8中文文档下载的文章,可通过此链接访问https原创 2022-02-05 17:01:03 · 1349 阅读 · 0 评论 -
JDK1.8 中文文档下载与在线阅读
????jdk api 1.8_google.CHM下载云盘下载:https://tooyi.lanzouo.com/ikZ28xbcjfa 密码:26wm在线下载地址:https://www.oracle.com/java/technologies/javase-jdk8-doc-downloads.html????在线阅读https://docs.oracle.com/javase/8/docs/api/?xd_co_f=47c934d9-e663-4eba-819c-b726fc2d08原创 2021-12-06 17:03:04 · 7645 阅读 · 4 评论 -
CAS自旋锁到底是什么?为什么能实现线程安全?
????介绍CAS(Compare and swap),即比较并交换。我们平时所说的自旋锁或乐观锁,其中的核心操作实现就是CAS。????保证原子操作任何技术的出现都是为了解决某些特定的问题, CAS 要解决的问题就是保证原子操作。原子操作是什么,原子就是最小不可拆分的,原子操作就是最小不可拆分的操作,也就是说操作一旦开始,就不能被打断,直到操作完成。在多线程环境下,原子操作是保证线程安全的重要手段。举个例子来说,假设有两个线程在工作,都想对某个值做修改,就拿自增操作来说吧,要对一个整数 i 进行自增原创 2021-11-25 23:47:39 · 2297 阅读 · 0 评论 -
JDK1.8 中 ConcurrentHashMap源码分析(二)元素添加是线程安全的
上一篇说到了ConcurrentHashMap初始化原创 2021-11-24 21:59:12 · 727 阅读 · 0 评论 -
JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
????jdk下载本文使用JDK版本为jdk1.8下载地址:https://www.oracle.com/java/technologies/downloads/archive/????获取源码下载jdk压缩包版就可以,解压后,文件路径中会有一个src.zip文件,这个就是jdk源码。解压后就可以获得jdk源码啦。建议拷贝后换个路径再解压。如下是我存放的路径????导入IDEA☘️新建java项目使用默认配置,选择下一步勾选从模板创建项目,再选择下一步选择jdk源码路径,完成原创 2021-11-19 17:26:48 · 4352 阅读 · 0 评论 -
JDK1.8 中 ConcurrentHashMap源码分析(一)容器初始化
上一篇文章中说到如何使用IDEA搭建JDK1.8阅读学习环境,JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码。这篇文章将学习ConcurrentHashMap源码????ConcurrentHashMap初始化在jdk8的ConcurrentHashMap中一共有5个构造方法,这5个构造方法中都没有对内部的数组做初始化, 只是对一些变量的初始值做了处理。jdk8的ConcurrentHashMap的数组初始化是在第一次添加元素时完成 // 没有维护任何变量的操作,如果调用该方法,数组原创 2021-11-19 20:24:00 · 1175 阅读 · 0 评论 -
Spring源码学习--new()和反射的实例化区别
new()new对象是静态编译,是需要知道类名才能使用的。反射反射是动态编译,在一些时候不需要知道类名就可以使用。可以访问类的静态方法。反射实例对象的四种方法// 1.类.classClass clazz = 类.class;// 2.对象.getClass()Class clazz = 对象.getClass();// 3.Class.forName("com.ber")Class clazz = Class.forName("完全限定名");// 4.类加载器ClassLoad原创 2021-11-09 20:45:49 · 249 阅读 · 0 评论 -
Spring Framework源码编译,开始Spring源码学习
????Spring Framework源码编译博主本地java版本为 java version "11.0.10"????拉取源码选定存放路径直接只用git clone拉取最新源码git clone https://github.com/spring-projects/spring-framework.git目前最新RELEASE版本是5.2.18,编译前需要将tag切换至这个版本。git checkout a1225f0????修改仓库镜像地址,加快依赖下载速度vim buil原创 2021-11-09 13:49:56 · 558 阅读 · 0 评论