JDK源码
文章平均质量分 79
Java原生源码
Autumn Of Coolerwu
博客地址:https://wulang.vip
展开
-
史上最简单的FutureTask详解
文章目录类结构图状态图数据结构核心代码线程任务执行其他线程获取调用结果类结构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4em7Nj6W-1590979770612)(evernotecid://2D133ED1-7EA0-4480-AF55-2E07F129479E/appyinxiangcom/19292289/ENResource/p902)]状态图NEWCOMPLETINGNORMALEXCEPTIONALCANCELLEDINTERRUPTINGINTE原创 2020-06-01 10:50:26 · 162 阅读 · 0 评论 -
教你们做一个基于Java的特别水的LRU和FIFO缓存淘汰
文章目录介绍LinkedHashMap介绍代码引用介绍LRU全称是Least Recently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。LinkedHashMap介绍它是一个双向链表 + 数组 + 单向链表 + 红黑树。说白了就是在HashMap的基础上加了个双向链表,这个双向链表用于在插入,删除,在链表尾部添加。因为HashMap已经原创 2020-05-31 16:30:56 · 170 阅读 · 0 评论 -
JDK14的AbstractQueuedSynchronizer(AQS)源码解析
文章目录介绍doc文档说明方法获取排他锁流程释放排它锁流程获取共享锁流程ConditionObjectawait方法singal方法jdk实现类CountDownLatch(共享锁)Semaphore(共享锁)ThreadPoolExecutor.Worker(排它锁)ReentrantLock(排它锁)ReentrantReadWriteLock(排它锁和共享锁)WriteLock(排它锁、可重入)ReadLock(共享锁)介绍基于JDK14的源码进行解析,需要看过源码后,再来理解本文会简单很多。d原创 2020-05-31 15:14:50 · 787 阅读 · 1 评论 -
ThreadLocal类源码详解,带领领略不一样的东西
总结每个Thread类维护了它自己的ThreadLocalMap的对象,并且Thread类只支持维护一个ThreadLocalMap对象,ThreadLocal用于对ThreadLocalMap的操作。对于其hash值,使用的是黄金分割数逐级增加,提高了hash碰撞的次数。ThreadLocalMap扩容的阀值是数组的长度乘以2/3。可以创建自己ThreadLocal,不会和框架的ThreadLocal冲突,因为每次创建的threadLocalHashCode都在变化。因为只服务于一个线程,所以不会有原创 2020-05-23 22:50:29 · 240 阅读 · 1 评论 -
Java并发编程:Thread.java源码解析
Java Thread源码解析1.前言 我们知道,new一个thread,调用它的start的方法,就可以创建一个线程,并且启动该线程,然后执行该线程需要执行的业务逻辑,那么run方法是怎么被执行的呢?2.正文2.1.Thread源码解析先看如下例子。 @Test public void test03() throws InterruptedException {...原创 2019-02-07 01:30:13 · 414 阅读 · 0 评论 -
Java通过JDBC实现配置文件创建数据库
Java通过JDBC实现配置文件创建数据库1.前景 把项目打包至服务器时,发现要手动创建多个数据,实属麻烦。便写了个通过JDBC创建数据库的小方法。2.步骤首先,先来说说该方法的思路。第一步,构造配置文件读取数据源的URL、账号、密码、要创建的数据库的名称集。第二步,加载配置文件,并使用创建一个Connection。第三步,执行创建数据库的SQL语句。2.1第一步配置文件如下所示...原创 2019-02-03 21:01:26 · 2452 阅读 · 0 评论 -
使用Java写出扫描包的工具
自制Spring容器——(一)包扫描前言 Spring的核心概念就是提供一种新的机制管理业务对象及其依赖关系。IoC(Inversion of Control 控制反转)/ DI (Dependency Injection依赖注入),AOP(面向切面编程)正文对于Spring,现在习惯的方式一般就是加注解进行扫描,比如@Component、@Service、@Controller、@...原创 2018-12-12 17:07:23 · 409 阅读 · 0 评论 -
纯Java启动Web(无配置web.xml)
纯Java启动Web(无配置web.xml)前言 突然奇想不用SpringBoot,并且不配置xml文件来启动Web应用程序!正文 先贴出程序所需的Java代码,如下:package vip.wulang.start;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatche...原创 2018-11-17 15:53:20 · 4123 阅读 · 0 评论 -
Servlet + Spring 搭建Thymeleaf模板引擎小案例
JavaEE之Thymeleaf模板引擎前言 Thymeleaf模板引擎比较倾向于前端,了解过一点前端的人都会很快上手的。之所以不用JSP模板,是因为他还是原生的Java代码。换句话来说,就是Thymeleaf可以直接查看效果无需启动服务器,反之JSP就不行,必须依赖于服务器。这两种模板属于同一个方向,技术应用是要结合应用场景的。如果单纯从学习角度来看,学习哪个技术都没有错。但如果是要做产...原创 2018-11-21 14:09:23 · 768 阅读 · 0 评论 -
JDK8之时间线对象Instant
JDK8中Instant前言如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar, DateTimeFormatter 代替 SimpleDateFormat,官方给出的解释:simple beautiful strong immutable thread-safe。Instant详解FunctionalInterf...原创 2018-11-12 15:38:58 · 3631 阅读 · 1 评论 -
HashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历
// 这是HashMap的KeyIterator、ValueIterator、EntryIterator的基本实现抽象类 abstract class HashIterator { // 下一项返回 Node<K,V> next; // 当前项 Node<K,V> current; ...原创 2018-11-11 02:32:51 · 2653 阅读 · 0 评论 -
Java动态语言特性之MethodHandle MethodHandles MethodType的简单使用
对于子类调用父类的方法我们用super.Method()即可,但是倘若我们想调用其祖先类,并且在不改变其继承关系以及祖先和父类的代码的时候,该怎么办呢,代码样列如下:给大家三个类,可以先去了解再来熟悉下面的代码MethodHandle 它是可对直接执行的方法或者字段或者构造方法的类型的引用,或者说他是一个有能力安全调用方法的对象。MethodHandles 它是仅操作或返回方法句柄的静态方...原创 2018-08-13 22:45:10 · 2221 阅读 · 0 评论 -
基于SpringBoot构建Spring Data JPA
基于SpringBoot构建Spring Data JPA前言 最近在研究Hibernate的注解,故因此搭建一个Spring Data JPA,编辑器是IDEA。项目搭建点击 -> new Project然后一直next,然后就构建完成了。项目开始先创建几个文件夹,如图:通过数据库实例创建一个数据库,名字自定,我的数据库为spring-cloud在 -&g...原创 2018-11-09 12:12:12 · 506 阅读 · 0 评论 -
基于注解的方式配置SSM
首先创建一个MybatisConfiguration.javapackage org.coolerwu.outsource.config;import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring...原创 2018-06-09 00:43:39 · 1178 阅读 · 0 评论