自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (3)
  • 收藏
  • 关注

原创 ConcurrentHashMap-Jdk7-源码解读

ConcurrentHashMap-Jdk7-源码解读1. ConcurrentHashMap数据结构2. HashEntry3. Segment4. ConcurrentHashMap5. 总结6. 参考欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你

2021-11-05 18:30:53 281

原创 HashMap并发问题

HashMap是非线程安全的,在并发情况下可能会在扩容时形成环形链表,导致死循环(该问题在JDK1.8版本已经修复),也可能发生数据丢失的问题put源码(JDK7U71)①:在HashMap构造函数中,并未显式指定table值,而是指向了EMPTY_TABLE(空数组),在put方法中进行初始化;②:key=null时,键值对直接放在table[0]中,若已存在null的key,则替换并返回旧值,若不存在null,则放入链表头部;③:在1.7中,扩容条件不止是阈值,只有当元素数量>=阈值,.

2021-10-20 16:26:22 4001

原创 Idea-配置JDK

Idea中有多个配置菜单,每个菜单可配置的内容有所不同:打开File>Project Structure>SDKs,点击右侧页面的加号选择JDK即可配置JDK(选择JDK的安装路径即可):配置完成后,打开Project Structure>Project,在这里可以配置当前项目所使用的JDK:...

2021-10-14 14:46:03 237

原创 ArrayList详解(基于1.8)

ArrayList是在Java开发中使用率很高、很常见的集合类,它继承自AbstractList,实现List接口,并实现了 RandomAccess, Cloneable, java.io.Serializable标记接口,底层基于可扩容的数组实现,允许Null存在,同时支持快速访问、序列化、复制。继承结构public class ArrayList<E> extends AbstractList<E> implements List<E>, .

2021-10-14 11:20:30 256

转载 网络编程面试题(2020最新版)-转载

网络编程面试题(2020最新版) ThinkWon 2020-03-16 17:36:28 ...

2021-07-21 16:06:14 387

原创 LeetCode笔记-0004-寻找两个有序数组的中位数

题目信息给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5来源:力扣(

2021-05-20 09:53:13 92

原创 LeetCode笔记-0993. 二叉树的堂兄弟节点

993. 二叉树的堂兄弟节点难度:简单(简单个鬼!!)来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。993. 二叉树的堂兄弟节点在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true.

2021-05-20 09:51:59 116

原创 LeetCode笔记-0012.整数转罗马数字

12.整数转罗马数字难度:中等来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。12.整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V .

2021-05-20 09:51:32 67

原创 LeetCode笔记-0021.合并两个有序链表

21. 合并两个有序链表难度:简单来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]输入:l1 = [], l2 = [] 输出:[]输入:l1 = [], l2 = [0] 输出:[0]提示:两个链表的节点数目范围是 [0, 50].

2021-05-20 09:50:56 91

原创 LeetCode笔记-0006.Z 字形变换

6. Z 字形变换难度:中等来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:PA H N APL SI IG YI R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSII.

2021-05-20 09:50:22 94

原创 LeetCode笔记-0026. 删除排序数组中的重复项

26. 删除排序数组中的重复项难度:简单来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长.

2021-05-20 09:49:54 82

原创 LeetCode笔记-0020.有效的括号

20.有效的括号难度:简单来源:力扣(LeetCode)著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串 s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:输入:s = “()” 输出:true输入:s = “()[]{}” 输出:true输入:s = “(]” 输出:false输入:s = “([)]” 输出:false输.

2021-05-20 09:48:12 58

原创 LeetCode笔记-0003-无重复字符的最长子串

题目信息给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。来源

2021-05-19 18:47:07 99

原创 重载&重写

重写(@Override)重写需要借助继承/抽象类/接口实现方法名、形参列表相同(形参列表类型、顺序相同即可,名称随意)子类/实现类返回值类型 <= 父类/接口类子类/实现类抛出异常类型 <= 父类/接口类子类/实现类访问权限 >= 父类/接口类类(实例)方法重写后还是类(实例)方法父类private修饰的方法无法重写,即使方法名、形参列表相同也不是重写,是重新定义// 所有的类都直接/间接继承了Object类,所以可以再User类中重写toString()方法pub

2021-05-19 18:28:08 58

原创 Java三大特性(封装、继承、多态)

我们都知道Java是面向对象的语言,有三大特征:封装、继承(extends)、多态。这三大特征分别是什么含义?又有什么规则呢?为什么要这样设计?封装隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。规则将对象的属性和实现细节隐藏,不允许外界直接访问(用private修饰)将方法暴露出来,外界通过调用方法来操作、访问成员变量(例如最常用的getter、setter方法)目的/优点隐藏实现细节限制外部对成员变量的不合理访问有利于保护对象信息的完整性便于修改

2021-05-19 18:27:21 236

原创 Java内存模型(JMM)

JMM定义Java内存模型(Java Memory Model,简称JMM),JMM为Java虚拟机规范中定义的虚拟模型,用来屏蔽各种硬件和操作系统的内存访问差异,主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节。此处的变量与Java编程时所说的变量不一样,指包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,后者是线程私有的,不会被共享,不存在竞争问题。Java内存模型中规定:线程对变量的所有操作(读取、赋值)都必须在工作内

2021-05-19 18:25:37 71

原创 Java内存模型-内存屏障

内存屏障是什么?内存屏障,也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。内存屏障为硬件层的概念,不同的操作系统实现内存屏障的手段不一样,java通过jvm来统一生成内存屏障指令。内存屏障有什么用?禁止屏障两侧的指令进行重排序;强制将缓冲区、高速缓存区的数据...

2021-05-19 18:24:43 201

原创 LeetCode笔记-1738. 找出第 K 大的异或坐标值

LeetCode笔记-1738. 找出第 K 大的异或坐标值

2021-05-19 18:17:45 89

原创 LeetCode笔记-0002.两数相加

题目信息给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...

2019-07-30 14:13:41 124

原创 LeetCode笔记-0001-两数之和

题目信息给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以...

2019-07-30 12:52:17 115

原创 包装类的缓存及自动装箱、拆箱

我们知道Java有八个基础类型,同时为每个基础类型提供了对应的包装类型,对应关系如下:基础类型包装类型byteIntegercharCharactershortShortintIntegerlongLongfloatFloatdoubleDoublebooleanBoolean什么是自动装箱/拆箱?自动装箱:将...

2019-07-18 16:49:43 241 2

原创 Happens-Before原则(先行发生原则)

Happens-Before从jdk5开始,java使用新的JSR-133内存模型,基于Happens-Before的概念来阐述操作之间的内存可见性。Happens-Before定义如果一个操作Happens-Before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。两个操作之间存在Happens-Before关系,并不意味着一...

2019-07-10 14:10:57 1162

原创 常见排序算法:冒泡排序

常见排序算法:冒泡排序算法原理冒泡排序 原理(升序为例)就是将较小的值逐步“浮出水面”,较大的值逐步“沉入水底”的过程,利用双层嵌套的循环,每次比较相邻两个数据的大小,小值上浮,大值下沉,相等则位置不变。算法分析对于一个包含n个数据的数组,最坏情况下,需进行n-1次排序。第一次排序:依次比较0和1、1和2、…、n-2和n-1索引的元素,若前值>后值则交换数据,否则数据不变。遍历完成...

2019-06-21 11:45:44 269

原创 常见排序算法:直接选择排序

常见排序算法:直接选择排序直接选择排序 是常用选择排序算法之一,算法简单明了,但性能略差。算法原理直接选择排序算法实现的思路比较简单,利用双层循环遍历的方式筛选出最大(或最小)值,并放置到对应的位置即可。算法分析数组: a[n] = {21,30,47,30,1,2,……};第一次排序:将第一个元素值作为最小元素,遍历后面的数组,如果当前元素小于最小元素,则交换他们,直到遍历完成,最...

2019-06-21 10:31:37 596

node-v8.11.1-x64.msi

node-v8.11.1-x64.msi Node.js 如有需要直接下载!

2018-04-08

Git2.16.3-64

最新版Git,官网下载特别特别慢,有需要的可以在这下载

2018-04-06

空空如也

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

TA关注的人

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