自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统-内存管理

一个系统中的进程是与其他进程共享CPU与主存资源的。但是如果太多的进程需要太多的内存,那么他们中的一些就根本无法进行。如果当某个进程不小心写进另一个进程使用的内存,它就可能以某种完全和程序逻辑无关了令人迷惑的方式失败。

2022-01-31 16:07:49 1282

原创 操作系统-进程调度

工作负载确定工作负载是构建调度策略的关键部分。工作负载了解得越多,你的策略就越优化。我们对操作系统中运行的进程(有时也叫工作任务)做出如下的假设:1.每一个工作运行相同的时间。2.所有的工作同时到达。3.一旦开始,每个工作保持运行直到完成。4.所有的工作只是用 CPU(即它们不执行 IO 操作)。5.每个工作的运行时间是已知的。调度的指标调度指标。指标是我们用来衡量某些东西的东西,在进程调度中,有一些不同的指标是有意义的。只用一个指标:周转时间(turnaround time)。任务的周转

2022-01-29 20:09:30 2584 2

原创 TCP与Http

TCP一个Tcp连接由一个四元组构成,它们分别是两个IP地址和两个端日号。更准确地说,一个TCP连接是由一对端点或套接字构成,其中通信的每一端都由一对(IP地址,端口号)所唯一标识。一个TCP连接通常分为3个阶段‥启动、数据传输(也称作“连接已建立”)和退出(关闭)。socke :有两种 一种是服务监听得socket 可以得到客户端建立得连接 server.accept()一种是连接的socket 可以获取数据和发送数据 send recv主机分为 用户空间和内核空间TCP三次握手和四次分手

2022-01-29 18:38:07 2901

原创 Mysql

由于本人水平很有限,如有什么错误点,欢迎各位大佬指点。MySQLmysql架构连接器:负责跟客户端进行连接,获取权限、维持和管理连接。连接分为长连接和短连接分析器:Mysql把输入的sql字符串进行识别优化器:优化策略RBO规则 CBO成本 在具体执行前,需要进行优化 决定使用那个索引、多表关联的顺序执行器:执行sql语句Mysql索引mysql索引:为了加快查询速度 底层使用的是B+树的结构mysql 的数据是存储在磁盘上的 要减少IO的次数 ,索引会占据磁盘的空间,索引虽然会提高查

2022-01-12 23:50:20 1135 17

原创 Spring介绍与实现

作者水平很有限,如有什么错误点,欢迎各位大佬指点。spring是什么spring轻量级框架、核心功能IOC、AOP Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架

2021-12-30 15:02:07 775 16

原创 [JDK源码]-J.U.C-ConcurrentSkipListMap

由于作者水平有限,如有什么错误点,多谢指出。 ConcurrentSkipListMap/*头节点 索引节点(最底层保存的是 数据节点 其他层保存的是 索引节点)* +-+ right +-+ +-+* |2|---------------->| |--------------------->| |->null* +-+ +-+

2021-12-27 09:29:23 1002 15

原创 [JDK源码]-J.U.C-ConcurrentHashMap

由于作者水平有限,如有什么错误点,多谢指出。 ConcurrentHashMappublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { //保存K-V 节点 static class Node<K,V> implements Map.Entry<K,V> {

2021-12-24 20:34:15 1639 21

原创 [JDK源码]-J.U.C-ScheduledThreadPoolExecutor

以下是在学习中整理的一些内容,如有错误点,多谢指出。 ScheduledExecutorService可以用来在给定延时后执行异步任务或者周期性执行任务,由于放入的任务不一定能够立即执行,所以还是需要得放入队列,然后获取,看看是否满足执行条件:时间是否满足。ScheduledExecutorService接口public interface ScheduledExecutorService extends ExecutorService { //在延迟delay时间后执行command。unit为

2021-12-16 14:15:32 1506 21

原创 [JDK源码]-J.U.C-ThreadPoolExecutor

以下是在学习中整理的一些内容,如有错误点,多谢指出。 ThreadPoolExecutor线程池。ExecutorExcutor 是线程池的顶层接口。 定义了一个执行方法public interface Executor { void execute(Runnable command);}传入一个Runnable对象,然后任务即可被执行。 抽象了一个Runnable 任务如何执行。ExecutorServiceExcutorService 次级接口 在ExcutorService

2021-12-14 14:48:38 1353 22

原创 [JDK源码]J.U.C-AQS.ConditionObject

ConditionObject内部类条件变量 ConditionObject 实现了 Condition 接口变量构造器定义public class ConditionObject implements Condition, java.io.Serializable { //第一个等待节点 private transient Node firstWaiter; //最后一个等待节点 private transient Node lastWaiter; // 重复

2021-12-06 14:07:18 1013 26

原创 [JDK源码]J.U.C-AbstractQueuedSynchronizer

AQS(一)简单介绍原理:AQS用于实现线程间的同步操作。它通过一个FIFO队列作为线程等待队列,一个volative 的state变量来作为同步状态,并且提供了大量的模板方法,子类可以通过实现这些方法来完成线程同步。AQS核心变量public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { static final

2021-12-05 09:37:13 1780 21

原创 [JDK源码]J.U.C-CyclicBarrier

CyclicBarrier原理CyclicBarrier :屏障 需要等到所有的线程必须都到达之后,才能继续执行。就是 parties 变量 如果是5 的话 就相当于 来人拦住他 够5个了 放行。屏障的每次使用都表示为一个生成实例。 每当屏障被触发或重置时,生成就会改变。 由于锁的不确定性方式,可能有许多代与使用该障碍的线程相关联 可以分配给等待的线程——但是在同一时间只有一个线程是活动的({@code count}应用的线程),其余的线程要么被破坏要么被触发。 如果有断点但没有后续重置

2021-12-03 16:26:10 966 21

原创 算法刷题打卡(十五)

Leetcode108、116、118、121.

2021-12-02 12:57:33 146 14

原创 [JDK源码]J.U.C-AQS-CountDownLatch和Semaphore

CountDownLatch和Semaphore

2021-12-01 17:24:43 1038 17

原创 [JDK源码]J.U.C-AQS-ReentrantReadWriteLock

ReentrantReadWriteLock读锁:就是用于读互斥区中保护的变量写锁:就是用于写互斥区中保护的变量读操作 是不需要上锁的,写需要上锁适用于读多写少的场景,读锁可以并发,写锁与其他锁互斥。主要属性和构造器public class ReentrantReadWriteLock implements ReadWriteLock { // 读锁对象 private final ReentrantReadWriteLock.ReadLock readerLock; /

2021-11-30 16:57:40 931 18

原创 算法刷题打卡(十四)

102 二叉树的层序遍历102. 二叉树的层序遍历 - 力扣(LeetCode) (leetcode-cn.com)给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]] //宽度优先 按层遍历 public List<List

2021-11-30 11:56:49 746 9

原创 [JDK源码]J.U.C-AQS-ReentrantLock

AQS原理介绍:AQS (AbstractQueuedSynchronizer)底层一个队列 阻塞队列 ->​ Abstract:因为它并不知道怎么上锁。模板方法设计模式即可,暴露出锁逻辑。​ Queue :线程阻塞队列 Synchronizer:同步​ CAS + state 完成多线程枪锁逻辑 Queue 完成抢不到锁的线程排队AQS核心代码//获取锁public final void acquire(int arg) { if (!tryAcquire(a

2021-11-28 17:51:39 866 14

原创 算法刷题打卡(十三)

91 解码方法91. 解码方法 - 力扣(LeetCode) (leetcode-cn.com)一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为

2021-11-28 11:43:19 175 16

原创 算法刷题打卡(十二)

78 子集78. 子集 - 力扣(LeetCode) (leetcode-cn.com)给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] public List<List<Integ

2021-11-26 12:31:25 1138 15

原创 算法刷题打卡(十一)

70 爬楼梯70. 爬楼梯 - 力扣(LeetCode) (leetcode-cn.com)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶//动态规划 F(n

2021-11-24 12:11:55 721 13

原创 算法刷题打卡(十)

56 合并区间56. 合并区间 - 力扣(LeetCode) (leetcode-cn.com)以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠

2021-11-22 13:24:44 695 13

原创 算法刷题打卡(九)

50 Pow(x,n)50. Pow(x, n) - 力扣(LeetCode) (leetcode-cn.com)实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25快速幂,考虑 系统最小值

2021-11-20 15:42:43 118 13

原创 算法刷题打卡(八)

44 通配符匹配44. 通配符匹配 - 力扣(LeetCode) (leetcode-cn.com)给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false

2021-11-18 12:01:03 378 11

原创 算法刷题打卡(七)

36 有效的数独36. 有效的数独 - 力扣(LeetCode) (leetcode-cn.com)请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字

2021-11-16 11:46:18 113 8

原创 算法刷题打卡(六)

28 实现strstr28. 实现 strStr() - 力扣(LeetCode) (leetcode-cn.com)实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的

2021-11-14 13:41:57 117 2

原创 算法刷题打卡(五)

21 合并两个有序链表21. 合并两个有序链表 - 力扣(LeetCode) (leetcode-cn.com)将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0] public ListNode mergeTwoLis

2021-11-12 11:38:44 99 10

原创 算法刷题打卡(四)

15 三数之和15. 三数之和 - 力扣(LeetCode) (leetcode-cn.com)给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]

2021-11-10 12:02:02 266 3

原创 算法刷题打卡(三)

5.最长回文子串5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”Manecher public static String longestPalindrome(

2021-11-07 21:23:51 106 4

原创 算法刷题打卡(二)

1 两数之和1. 两数之和 - 力扣(LeetCode) (leetcode-cn.com)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9

2021-11-05 14:22:09 86

原创 一致性hash算法

一致性hash算法基本概念一致性hash算法也是取模运算,一致性hash是对2^32取模。首先把它想象成一个大圆, 我们把这个圆想象成由 2^32 个点组成的圆。圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^32-1 ,也就是说0点左侧的第一个点代表2^32-1 ,我们把这个由2的32次方个点组成的圆环称为hash环。​ 那么,一致性哈希算法与上图中的圆环有什么关系呢?假设我们有3台缓存服务器,服务器A、服务器B、服务器C,那么,在生产环境中,这三台

2021-11-03 12:49:27 1188 4

原创 算法刷题打卡(一)

最小路径和: 6464. 最小路径和 - 力扣(LeetCode) (leetcode-cn.com)给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12题解:dp[ i ] [

2021-11-03 09:10:34 143

原创 HashMap-红黑树

先简单了解下红黑树红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 O(logn)。红黑树的特性:每个节点要么是红色,要么是黑色; 根节点永远是黑色的; 所有的叶节点都是是黑色的(注意这里说叶子节点其实是上图中的 NIL 节点); 每个红色节点的两个子节点一定都是黑色; 从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点;左旋右旋:红黑树的左右旋是比

2021-10-15 14:18:26 999

原创 HashMap源码简单介绍

目录Hash实现原理源码分析构造方法HashMao -put根据key获取元素HashMap是基于哈希表的map接口的非同步实现,此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。key无序 唯一 value无序不唯一HashMap底层结构: 数组+链表(1.7) 数组+链表+红黑树(1.8)Hash实现原理Node,是定义在HashMap中的一个内部类,实现了Map.EntryNode类的基本

2021-10-15 13:41:44 109

原创 集合Set接口

Setset接口是继承自Collection的子接口,特点是元素不重复,存储无序。HashSetHashSet 通过元素的两个方法,hashCode和equals 方法来保证元素的唯一性, 如果元素的HashCode值相同,才会判断equals是否为true如果元素的hashCode值不同,不会调用equals方法对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本

2021-10-14 16:03:20 321

原创 JVM入门,JVM基础

编写 .JAVA 文件 通过JAVAC 转换成 class文件 在通过虚拟机转换成电脑识别的文件JVM整体划分运行时数据区:堆 和 方法区 线程共有,其他线程私有。类加载加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象。连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用初始化,..

2021-09-25 15:17:17 138

原创 23种设计模式(三)

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。策略模式 Strategy策略类之间可以自由切换,由于策略类实现自同一个抽象,所以他们之间可以自由切换。 易于扩展,增加一个新的策略对策略模式来说非常容易,基本上可以在不改变原有代码的基础上进行扩展。 避免使用多重条件,如果不使用策略模式,对于所有的算法,必须使用条件语句进行连接,通过条件判断来决定使用哪一种算法,在上一篇文章中我们已经提到,使用多重

2021-09-15 14:36:46 86

原创 23种设计模式(二)

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。适配器 Adapter适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。public class Adaptee { public void request() { System.out.println("连接。。。"); System.out..

2021-09-14 20:17:39 90

原创 23种设计模式(一)

总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

2021-09-14 10:50:21 88

原创 ArrayList 和LinkedList

1.7 的 ArrayList 默认构造 自带10 创建长度10的数组1.8源码private static final int DEFAULT_CAPACITY = 10;//初始容量为10transient Object[] elementData; // Object数组 private int size; //size 数组中有效长度private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8 //MAX_AR

2021-09-07 20:51:27 225

原创 zookeeper 简单入门

目录zookeeper:zookeeper目录结构zookeeper特征:安装Watch 监听ZAB协议API代码简单实现推荐官网:https://zookeeper.apache.org就是全英文......zookeeper:zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等...

2021-09-02 16:42:30 123

空空如也

空空如也

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

TA关注的人

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