自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习笔记

不积跬步无以至千里,不积小流无以成江海

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java8 原子类 AtomicInteger 源码阅读

AtomicInteger 是用CAS(CompreAndSwap,乐观锁) 构造的一个原子类。1.CASCAS(Compare and Swap)比较并替换,CAS是实现乐观锁的一个重要操作。CAS 是一个硬件指令,保证是原子操作,Java 中通过 UnSafe 来实现。详细可一下我的这篇博文:传送。CAS的基本步骤:执行函数 CAS(V,E,N),如果V值等于E...

2019-07-28 18:11:53 684

原创 Java8 HashMap 源码阅读

1.概述HashMap 基于哈希表实现,通过 key 查找 对应的 value ,时间复杂度为 O(1),即常数阶;HashMap 的底层数据结构为 数组 + 链表/红黑树;数组的长度为n,下图中的数组长度为4,n 为4,键值对放入那个桶的计算方法为(n - 1) &key.hash。2.静态常量(1)数组的默认容量:16,必须是2的n次幂;容量指...

2019-07-28 13:37:36 269

原创 Java 自定义类加载器

1.系统类加载器系统提供的类加载器有如下三种:启动类加载器,扩展类加载器,引用程序类加载器。1.1启动类加载器启动类加载器(Bootstrap ClassLoader)负责将存放在 <JRE_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 li...

2019-07-27 10:41:37 294

原创 Java 自定义注解

1.元注解元注解是 Java提供的一些基本注解,使用这些元注解区可疑创建新的注解;可以先大致看一下元注解,然后去看后面自定义注解的例子。元注解有 @Retention, @Documented, @Target, @Inherited,@Repeatable五种。1.1@Retention@Retention可以定义注解的生命周期,注解的存活时间有如下三种:Reten...

2019-07-26 19:17:03 303

原创 Java 使用 Callable 接口创建线程

使用 Callable 接口创建线程相较于实现Runnable接口方式的优点:可以有返回值,可以抛出异常。1.概述Callable接口的源码如下所示:@FunctionalInterface表名是一个函数式的接口,可以有返回值V (泛型),可以抛出异常throwsException。call方法类似Runnable接口中的run方法,作为线程的执行体。...

2019-07-19 11:06:51 472

原创 JVM 的垃圾收集器

JVM 的垃圾收集器:Serial、ParNew 、Parallel Scavenge、Serial Old、Parallel Old、CMS 、G1 。1.概述下图中垃圾收集器只要连线则表明垃圾收集器可以搭配使用。没有万能的收集器,具体应用选择合适的垃圾收集器。2.Serial垃圾收集器单线程收集器,用于新生代,这里的单线程指的是它在进行垃圾回收时暂停其他工作线程...

2019-07-19 09:43:15 148

原创 LeetCode 刷题集锦

目录1.1108. IP 地址无效化2.1093. 大样本统计3.888. 公平的糖果交换4.445. 两数相加 II1.1108. IP 地址无效化题目链接 1108. IP 地址无效化 题目描述 解题思路 替换.为 [.] , 如果使用Java最好使用stringBuilder,而且可以使用stri...

2019-07-16 15:05:50 306

原创 JVM的垃圾收集(GC)算法

JVM的垃圾收集算法:标记-清除,复制,标记-整理,分代回收。1.“标记-清除”垃圾收集算法“标记-清除”垃圾收集算法有两个阶段:标记 和 清除。标记 是标记所有需要回收的对象,清除 是清除所有标记的回收对象。缺点:(1)会产生大量不连续的内存碎片,因为对象分配内存需要是连续的内存空间,如果对象太大,且没有足够大的连续内存空间,会触发垃圾回收。(2)标记 和 清除效...

2019-07-15 20:23:14 192

原创 深度优先搜索(DFS) 学习、Java代码实现

深度优先搜索(DFS)的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v的邻接点开始深度优先搜索,直至图中所有和v路径相通的顶点都被访问,然后选择另外一个没有被访问的顶点开始深度优先搜索。1.概述深度优先搜索(DFS)的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v的邻接点开始深度优先搜索,直至图中所有和v路径相​​​​​​​通的顶点都被访问...

2019-07-12 21:57:19 16927 7

原创 剑指Offer Java题解(前3道题)

目录1. 二维数组中的查找2.替换空格3.从尾到头打印链表1. 二维数组中的查找题目链接:传送。方法一,暴力枚举。参考代码:package problem01;/** * @Author syrdbt * @Date 2019/7/3 14:05 * 二维数组中的查找 * 方法一,暴力枚举 */public class Solution { ...

2019-07-12 15:45:47 180

原创 堆排序学习、Java代码实现

堆排序(HeadSort)只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。堆的定义:n个元素的序列 {k(1),k(2),... k(n)} ,当其满足k(i)<=k(2*i)&& k(i)<= k(2*i+1)或者k(i)>=k(2*i) && k(i)>= k(2*i+1),称这个序列为堆。i...

2019-07-03 19:55:08 242

原创 Linux 查找文件命令,which,whereis,locate,find

which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。 locate通过搜寻系统内建文档数据库达到快速找到档案,数据库由updatedb程序来更新。 find 用于在文件树中查找文件,并作出相应的处理。 ...

2019-07-02 14:39:22 1380

原创 TCP 传输控制网络协议

传输控制协议 TCP (Transmission Control Protocol),全双工通信、提供面向连接(只能有两个端点)、可靠的数据传输服务、面向字节流。1.概述传输控制协议TCP (Transmission Control Protocol),提供面向连接、可靠的数据传输服务,其数据传输的单位为报文段。面向连接 : 在使用 TCP 协议之前,必须建立TCP连接,在传送数...

2019-07-02 10:17:58 583

原创 SpringBoot2 添加Druid作为数据库连接池实例

记录在 SpringBoot2中添加 Druid 作为数据库连接池的实例。环境:Java8 +SpringBoot2 +MyBatis +IDEA +MySQL8。1.SpringBoot2 添加Druid作为数据库连接池实例配置数据库连接池的原理,需要先指明 datasource 的类型com.alibaba.druid.pool.DruidDataSource,...

2019-07-01 17:44:03 672

原创 JVM 判断是否应该回收对象

JVM内存 中程序计数器、虚拟机栈、本地方法栈 3个区域随线程而生,随线程而灭。这几个区域不用考虑回收问题,因为方法结束后或者线程结束后,内存就跟着回收了。而Java堆和方法区不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存也可能不一样,我们只有在程序运行的时候才知道会创建那些对象,这部分内存的分配和回收都是动态的,垃圾收集主要所关注的就是Java堆和方法区。...

2019-07-01 14:18:40 214

neo4j-jdbc-driver-3.4.0.jar

neo4j-jdbc-driver-3.4.0.jar,Java连接数据库驱动包。

2019-03-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除