自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 ConcurrentHashMap源码

put 方法源码 public V put(K key, V value) { return putVal(key, value, false); }put 方法实际上调用的是putVal方法 final V putVal(K key, V value, boolean onlyIfAbsent) { //。COncurrnetHashMap 不支持key 或者value 为null。 HashMap 支持 if (key == null || value

2020-06-16 19:52:48 132

原创 FutureTask 源码

public void run() { //. 条件一:不是初始状态 //。条件二:当前任务是否被其他线程占用 if (state != NEW || !UNSAFE.compareAndSwapObject(this, runnerOffset, null, Thread.currentThread())) return; .

2020-06-14 22:49:55 122

原创 LongAdder 源码

LongAdderLongAdder。 有两个, 一个base, 一个cell 数组, 如果当前线程不存在竞争,都是线性的,那么就会一直累加到base里面, 如果存在竞争, 就会分发给cell 数组,,最后cell 数组求和+ base 就是最终的结果。AtomicLong 则是通过不停的cas 去尝试改变,LongAdder 采用的是以空间换时间的方式 public void add(long x) { Cell[] as; long b, v; int m; Cell a;

2020-06-13 21:35:02 163

原创 JVM 学习三

类加载器启动类加载器扩展类加载器应用程序类加载器除了顶层的启动类加载器之外,其他的类加载器都应该有自己的父类加载器。。。 这就是类加载器的双亲委托模型。工作流程:类加载器收到类加载的请求。委派给父类加载器完成。最终传到顶层的启动类加载器。当父类加载器在其范围内找不到该类就交给子类加载。栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。栈帧是虚拟机运行时数据区中虚拟...

2020-03-04 21:54:26 71

原创 JVM 学习二

G1 收集器一个面向服务端应用的垃圾收集器。特点并行与并发可以使用多个CPU来缩短Stop-The-World停顿时间,部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器可以通过并发的方式让Java程序继续执行。Stop-The-World 是指让收集器进行Full GC 的时候因为要暂停所有的Java程序,再进行GC动作。分代收集新生代和老年代空间整合G1运行期间...

2020-03-03 22:50:02 85

原创 JVM 学习

JVM的内存区域程序计数器 线程独有的,不共享栈 1. 线程独有。 2. 每个方法都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口。 3. 方法的调用与结束的这个过程,标示着栈帧在栈中入栈和出栈的过程。本地方法栈 Native方法堆 1. 线程共享的。 2. 所有的对象实例存放的位置,栈中存放的是对于堆中的引用。 3. 分为新生代和老...

2020-03-01 21:23:38 72

原创 并发

线程线程的六个状态新创建当用new操作符创建一个新线程时,该线程还没有开始运行。可运行调用start方法,线程就处于runnable状态。在任何时刻,一个线程可能处于运行也可能没有运行。当线程处于阻塞或者等待状态,线程暂时不活动,不运行任何代码且消耗最少的资源,直到线程调度器重新激活。被阻塞当线程试图获取一个内部的对象锁,而这个锁由其他线程持有,则该线程进入阻塞状...

2020-02-29 22:40:28 55

原创 web前端作业

2020/02/24随堂笔记复习:完整前端知识整理思维导图:HTML什么是HTML?本质:超文本标记语言,表现如文字、视频、音频程序等复杂元素什么是标签?标签组成:标签名、属性名(名称值对的形式)、内容属性类似是给这个标签的内容加了个容器(装备),让标签具有特殊能力<a href="https://www.baidu.com">百度</a>...

2020-02-24 19:35:42 483

原创 网络是怎样连接的。第3章

探索集线器、交换机和路由器转发设备会根据包头部的控制信息,在转发设备内部一个写有转发规则的表中进行查询,以此来判断包的目的地,然后将包朝目的地的方向进行转发。转发设备在转发的时候不看数据的内容。无论包里面装的是应用程序的数据还是TCP协议的控制协议,都不会对包的传输操作本身产生影响。HTTP请求的方法,TCP的确认响应和序号,客户端与服务器之间的关系,都与包的传输无关。因此所有的包在传输到目...

2020-02-22 19:33:01 161

原创 网络是怎样连接的 第二章

系统中的协议栈如何处理数据发送请求创建套接字协议栈的内部结构 1. 最上面的部分是网络应用程序(也就是平时说的浏览器,Web服务器等等) 。 2. 应用程序的下面是Socket库,其中包括解析器,解析器是用来想DNS服务器发出查询的。 3. 在下面就是操作系统内部,其中包括协议栈。 协议栈的上班部分有两块,分别是负责用TCP协议收发数据的部分和负责用UDP协议收发数据的部分,...

2020-02-21 22:05:53 184

原创 网络是怎样连接的 第一章

应用程序不是自己去控制网络,而是委托操作系统来控制网络概述用户从浏览器输入网址(url),浏览器会先解析用户输入的网址,再根据网址的含义来生成请求消息,请求消息生成之后,浏览器委托操作系统向web服务器发送请求,但是要发送请求,要先告诉操作系统接收方的IP地址,因此浏览器要先查出Web服务器的IP地址,但是浏览器只有Web服务器的域名,那么,浏览器就要先根据域名在DNS服务器查询对应的IP地址...

2020-02-14 22:57:36 114

原创 Vector源码

Vector简介public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableVector是一个动态数组。Vector继承了AbstractList,实现了List接口。Vec...

2020-02-12 22:46:54 142

原创 ArrayList阅读

ArrayList简介ArrayList 相当于一个动态数组,与Java中的int[] array相比(普通数组),ArrayList的容量可以动态增长,实现了List,RandomAccess.,Cloneable,java.io.Serializable接口,继承于AbstractList。ArrayList继承AbstractList,实现了List,可以进行添加,删除,修改,遍历等。...

2020-02-11 23:05:40 65

原创 Hashtable源码

Hashtable简介Hashtable基于哈希表实现的,每个元素都是key-value对,通过单链表解决哈希冲突。Hashtable是线程安全的,实现Serializable可以序列化,实现Cloneable接口,能被克隆。源码package java.util;import java.io.*;import java.util.function.BiConsumer;impo...

2020-02-09 23:14:43 109

原创 HashMap

简介HashMap在底层数据结构上采用了数组,链表和红黑树HashMap的主要参数 transient Node<K,V>[] table; 这是一个node数组node是一个内部类,组成:每一个node可以看作一个节点,多个节点形成了一个链表。。当链表大于8的时候就转换成红黑树。hashmap里面的几个重要参数** static final int DEFAULT...

2020-02-09 00:05:28 73

原创 牛客模拟面试

请介绍一下List和ArrayList的区别,arrayList和HashSet区别list是接口,ArrayList实现了List接口,ArrayList底层是动态数组,可以存储重复的值,有序。HashSet底层是hash表,因为要比较hash值和equals,所以是不可重复和无序的。请你介绍一下Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,...

2020-02-07 20:03:11 747

原创 牛客模拟面试

请说出你所知道的线程同步的方法同步方法(加了synchronized关键字修饰的方法)同步块(加了synchronized关键字修饰的语句块)wait和notifyvolatile关键字实现线程同步使用局部变量实现线程同步,使用 ThreadLocal管理变量,每个使用该变量的线程都会得到一个副本,副本之间相互独立,每一个线程修改的都是属于自己的变量副本,修改不会影响其他副本。请说...

2020-02-06 21:28:45 784

原创 ArrayList源码解析

public class ArrayList extends AbstractListimplements List, RandomAccess, Cloneable, java.io.Serializable{private static final long serialVersionUID = 8683452581122892189L;// 默认长度为10private stati...

2020-01-23 13:58:28 117

原创 19年上半年软考知识点

RISC与CISC为提高操作系统的效率,人们最初选择向指令系统中添加更多、更复杂的指令来实现,导致指令集越来越大。这种类型的计算机称为复杂指令集计算机(CISC)对指令数目和寻址方式做精简,指令的指令周期相同,采用流水线技术,指令并行执行程度更好,这就是精简指令集计算机(RISC)MIME 多用途互联网邮件扩展类型,是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视...

2019-11-06 20:47:56 128

原创 04年软考上半年上午知识点

在面向对象中,类属是一种参数多态机制,类属类可以看作是类的模板,一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与具体类型无关的那些部分,而用变元来表示与具体类型相关的那些部分,类属类一个重要作用就是为类库的建立提供了强有力的支持。无向图根据已知n个顶点e个边,那么其邻接矩阵中有nn个边,因为其对称性所以含有2e个非零边,那么就有nn-2e个零边。编译中基本块的概念满足下...

2019-11-04 21:53:57 92

原创 07年上半年软考错题知识点

控制器:程序计数器PC指令寄存器IR指令译码器时序部件程序状态字寄存器PSW中断机构算数逻辑单元ALU属于运算器RISC设计遵循的基本原则:指令条数少寻址方式尽可能少采用等长指令,不管功能复杂的指令还是简单的指令,均采用同一长度设计尽可能多的通用寄存器GB:强制性国家标准代号GB/T:推荐性国家标准代号GSB:国家实物标准代号XX:强制性行业标准编号XX/T:推荐...

2019-11-03 22:03:26 101

原创 软考07下半年上午错题知识点

寻址: 寻找操作数的地址或者下一条将要执行的指令地址,四种寻址方式中,获取操作数的速度又快到慢依次为立即寻址,寄存器寻址,直接寻址,间接寻址。实现VPN的关键技术主要有隧道技术、加解密技术、密钥管理技术和身份验证技术。L2TP、PPTP是两种链路层的VPN协议,TLS是传输层VPN协议、IPsec是网络层VPN协议。著作权,邻接权,专利权,商标权,商业秘密权和集成电路布图设计权属于知识产权的范...

2019-11-02 19:55:02 196

原创 08年下半年错题知识点

运行时为名字分配存储空间的过程称为绑定,静态数据区用于存放一对一的绑定且编译时就可确定存储空间大小的数据,栈用于存放一对多的绑定且与活动同生存期的绑定,堆用于存储由程序语句动态生成和撤销的数据。程序运行时,吧程序代码和 代码所操作的数据存入内存,指定代码(也就是程序代码)存入代码区,数据存入静态绑定区,栈,堆。立即数存址方式指指令所需要的操作数由指令的地址码部分指出,也就是代码部分,所以操作数...

2019-11-02 15:25:10 87

原创 357. 计算各个位数不同的数字个数

给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。示例:输入: 2输出: 91 解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。来源:力扣(LeetCode)class Solution { public int countNumbersWithUniqueD...

2019-09-15 20:47:14 113

原创 1015. 可被 K 整除的最小整数

给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。返回 N 的长度。如果不存在这样的 N,就返回 -1。示例 1:输入:1输出:1解释:最小的答案是 N = 1,其长度为 1。示例 2:输入:2输出:-1解释:不存在可被 2 整除的正整数 N 。示例 3:输入:3输出:3解释:最小的答案是 N = 111,其长度为 3。提示:1 &...

2019-09-15 20:37:12 153

原创 264. 丑数 II

编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。来源:力扣(LeetCode)class Solution { public static int[] nums = n...

2019-09-12 15:29:21 55

原创 263. 丑数

编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。输入不会超过 32 位有符号整...

2019-09-12 15:04:18 47

原创 171. Excel表列序号

给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:输入: "ZY"输出: 701来源:力扣(LeetCode)class Sol...

2019-09-10 17:17:37 76

原创 168. Excel表列名称

给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB ...示例 1:输入: 1输出: "A"示例 2:输入: 28输出: "AB"示例 3:输入: 701输出: "ZY"来源:力扣(LeetCode)class S...

2019-09-10 17:13:55 66

原创 69. x 的平方根

实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)class Solution {...

2019-09-09 19:13:50 55

原创 50. Pow(x, n)

实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 3...

2019-09-09 19:06:17 51

原创 7. 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCo...

2019-09-04 21:28:53 51

原创 8. 字符串转换整数 (atoi)

请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...

2019-09-04 21:05:28 46

原创 673. 最长递增子序列的个数

给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是32...

2019-09-03 20:51:59 128

原创 300. 最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。来源:力扣(LeetCode)class Solution { public int lengthOfLIS(int[] nums) { int[] ans = new i...

2019-09-03 19:58:06 222

原创 OutputStream

package java.io;public abstract class OutputStream implements Closeable, Flushable {public abstract void write(int b) throws IOException;//将指定字节数组写入(相当于往b数组写入b,起始点为0)public void write(byte b[]) t...

2019-09-02 14:58:03 350 1

原创 720. 词典中最长的单词

给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = ["w","wo","wor","worl", "world"]输出: "world"解释: 单词"world"可由"w", "wo", "wor...

2019-08-30 10:25:49 168

原创 709. 转换成小写字母

实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"来源:力扣(LeetCode)class Solution { pub...

2019-08-30 10:12:18 58

原创 1144. 递减元素使数组呈锯齿状

给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。如果符合下列情况之一,则数组 A 就是 锯齿数组:每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > …或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[...

2019-08-29 16:31:03 105

原创 1122. 数组的相对排序

给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出...

2019-08-29 15:17:36 212

空空如也

空空如也

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

TA关注的人

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