自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 汇总123

实质是分治思想和解决冗余,因此它与分治法和贪心法类似,他们都是将待求解问题分解为更小得、更相同得问题,然后对子问题进行求解,最终产生一个整体最优解。适用于动态规划得问题,经分解得到得各个子问题往往不是相互独立得,在求解过程中,将已解决得子问题得解进行保存,在需要时可以轻松找出。输入(有零个或多个输入)、输出(有一个或多个输出)、确定性(每条指令都必须明确的含义,无歧义)、有限性(每条指令的执行次数都是有限的)、可行性(可实现)实例算法计算(第四章、动态规划)书上的题。回溯法、分支限界法二点基本思想。

2023-06-05 09:38:16 392

原创 MySQL事务 MVCC的实现原理

从以上的描述中我们可以看出来,所谓的MVCC指的就是在使用READ COMMITTD、REPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能。

2022-11-08 22:15:36 613

原创 SynchronousQueue源码分析_第二讲:非公平模式TransferStack

transfer 是最主要的方法,我们的put和take(放元素和取元素)都是调用这个方法来执行的,这里面一个有三个if else:1. 当前请求类型 和 栈顶的类型一样,入栈当前请求类型 和 栈顶的类型刚好匹配 (【Data,Request】和【Request,Data】),那么当前请求改为 Fulfilling 入栈,然后Fulfilling和它下面的元素结对出栈当栈顶元素为 Fulfilling类型,当前请求(不管是什么类型)协助里面的Fulfilling和它下面的元素出栈

2022-11-07 14:31:35 369 1

原创 SynchronousQueue源码分析_第一讲:引子

同步队列:虽然它叫队列,但是它没有容量,只能存一个数据,这个数据出来了,其它数据才能加进去,如果还没有数据就去拿,那么就会阻塞,直到加进去数据。

2022-11-06 21:53:39 256

原创 MySQL怎么加锁的?

next-key lock 会退化为记录锁 或 间隙锁记录存在,会加next-key lock 和 间隙锁记录不存在,会加间隙锁唯一索引 在满足一些条件时,next-key lock 会退化为记录锁 或 间隙锁非唯一索引,如何时候都不会退化。

2022-11-05 21:34:53 1284

原创 MySQL 锁

MySQL如果按 锁的颗粒度划分,可以分为MySQL三大锁:全局锁,表级锁,行锁三大类。

2022-11-04 15:26:44 1961 1

原创 ThreadLocal源码第二讲(ThreadLocalMap)

什么是弱引用? 强引用 WeakReference weakA = new WeakReference(a); 弱引用 a = null;a是强引用,因为是强引用,后面那个new的A对象不会被GC 回收,但当a==null时,new的对象不会因为有weakA 而保留,依然会被GC回收,因为weakA 是一个弱引用。

2022-11-03 20:42:16 297

原创 ThreadLocal源码第一讲

ThreadLocal是一个全局对象,ThreadLocal是线程范围内变量共享的解决方案;ThreadLocal可以看作是一个map集合,key就是当前线程,value就是要存放的变量。ThreadLocal与Synchronized的区别ThreadLocal其实是与线程绑定的一个变量。ThreadLocal和Synchonized都用于解决多线程并发访问。用于线程间的数据隔离用于线程间的数据共享为每一个线程都提供一个副本threadLocals。

2022-11-02 21:07:11 75

原创 MySQL 幻读

快照读(普通select语句),是通过MVCC 方式解决了幻读当前读(select … for update),是通过next-key lock(记录锁+间隙锁)来解决幻读但MySQL 可重复读隔离界别并没有彻底解决幻读问题,只是很大程度上解决了幻读现象非发生。

2022-11-01 10:36:06 4002 1

原创 计算机网络 第三讲:ARP

MAC 地址的全称是 媒体访问控制地址(Media Access Control Address)。如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。可以理解为,MAC 地址是一个网络设备真正的身份证号,IP 地址只是一种不重复的定位方式(比如说住在某省某市某街道的张三,这种逻辑定位是 IP 地址,他的身份证号才是他的 MAC 地址),也可以理解为 MAC 地址是身份证号,IP 地址是邮政地址。MAC 地址也有一些别称,如 LAN 地址、物理地

2022-10-31 09:52:45 1618

原创 AQS_CyclicBarrier源码解析

从字面上的意思可以知道,这个类的中文意思是“循环栅栏”。大概的意思就是一个可循环利用的屏障。它的作用就是会让所有线程都等待完成后才会继续下一步行动。举个例子,就像是旅游团,有的人参观完景点 先回到大巴车上,有的人可能晚点才回到大巴车,但只有人都到齐了,大巴车才能开往下一个景点。这里的人就是各个线程,大巴车就是 CyclicBarrier。这个栅栏就是大巴车,各种颜色的先就是不同的线程代表人。不同的线程是不同时间到达的栅栏现在有五个玩家(对应五个线程),只有所有玩家都加载好后(都调用 await方法),

2022-10-30 18:30:17 104

原创 计算机网络 第二讲:HTTP

HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol)。顾名思义,HTTP 协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消息,具体来说,主要是来规范浏览器和服务器端的行为的。并且,HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。这其实是一种懒政,有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。

2022-10-29 11:18:59 133

原创 AQS_Semaphore源码分析

Semaphore 顾名思义 就是信号量的意思,是基于AQS 的一个类Semaphore 维护了一个许可集合,在创建Semaphore的时候,设置上许可数,每条线程在只有在获得一个许可的时候才可以继续往下执行逻辑,申请多少许可,Semaphore的许可池中减少多少许可,当没有许可 或 许可不够的时候,申请许可的线程就会进入阻塞状态(加入阻塞队列)。Semaphore 信号量,通常用于控制同一时刻对共享资源的访问,也就是限流场景;Semaphore 的内部实现是就与AQS的共享锁来实现的;

2022-10-28 21:59:54 167

原创 GitHub配置SSH Key

Https url克隆:每次fetch和push代码都需要输入账号和密码,比较麻烦。,ssh默认是每次fetch和push代码都不需要输入账号和密码(取个名字,赋值Key (id_rsa.pub拷贝的东西)就可以了。打开GitHub ,点头像,点setting。就是GitHub的 用户名 和 邮件。SSH url克隆:在克隆之前。先要去获取SSH Key。新建一个SSH Key。

2022-10-27 17:58:42 566

原创 计算机网络基础 第一讲:TCP和UDP

TCP 和 UDP的区别(重要)1. 是否面向连接:UDP 传输数据之前不需要建立连接,而 TCP 需要先建立2. 是否是可靠传输:远地主机 收到UDP 报文后,不需要确认,不可靠。**TCP是可靠传输**,传数据之前,会三次握手来建立连接,数据传输时,也有确认机制。3. 是否有状态:**TCP 传输时有状态**的,TCP 会记录自己发的数据是否被发送,收到等等,(TCP需要维持复杂的连接状态表),**UDP是无状态的**,发送出数据就不管了4. 传输效率:TCP 传输效率比UDP 低很多

2022-10-27 17:57:28 1269

原创 MySQL实战 第三讲

count(*)语句到底是怎么做的:每种引擎实现方式不一样1. MyISAM引擎是把记录总数记录在磁盘上,需要时直接返回,效率高2. InnoDB引擎会一行行把数据读出来,然后累积计数

2022-10-25 16:52:54 561

原创 函数式编程

终结操作:forEach,如果没有它,那么我们写的filter ,distinct 是没有用的如果没有forEach 终结操作,那么filter中操作时不会执行的,就不会打印 “test”

2022-10-19 12:01:59 324

原创 AQS 重入锁

AQS是 AbstractQueuedSynchronizer的缩写,可重入锁ReentrantLock 是它的子类,所以我们今天来看看AQS 都做了做什么?可重入锁,就是支持重新进入的锁,它表示该锁能够支持一个线程对资源的重复加锁,可以通过构造方法来确定是公平锁还是非公平锁。公平锁就是 线程先来后到,也就是等待时间最长的线程最优先拿到锁。实现这一目的的方法是设计一个队列(不是queue,而是双向链表),链表里面放的是Node,Node里面会封装等待的线程Thread,前后指针等一些信息

2022-09-30 22:02:06 592

原创 Mysql 第二讲:索引

索引的三种可以提高搜索效率的结构: 1. 哈希表,适用于只有等值查询的场景 2. 有序数组,在等值查询和范围查询中的性能非常优秀(二分法),但有序数组索引只适用于静态存储引擎,(不适合添加和删除操作) 3. 搜索树(多叉树)

2022-09-30 00:18:20 614

原创 FutureTask源码分析

本节内容 讲解FutureTask 类中的属性 及其内部几个重要方法:1. 构造方法2. run方法,任务执行 入口,一切的开始3. get方法,无参:获取任务执行结果,任务结束之前会阻塞。有参:在指定时间内尝试获取执行结果。若超时则抛出超时异常4. cancel方法,取消一个任务,并返回取消结果。参数表示是否中断线程。

2022-09-30 00:15:00 136

原创 Mysql学习第一讲基础

在“可重复读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都用这个视图。若先写入 bin log,当 bin log 写入成功,而 redo log 写入失败时,原库中的 status 仍然是 0 ,但是当通过 bin log 恢复时,其记录的操作是 set status = 1,也会导致数据不一致。Bin log 用于记录了完整的逻辑记录,所有的逻辑记录在 bin log 里都能找到,所以在备份恢复时,是以 bin log 为基础,通过其记录的完整逻辑操作,备份出一个和原库完整的数据。...

2022-08-17 23:46:49 136

原创 ConcurrentHashMap 源码解析合集

在学习ConcurrentHashMap之前还需要弄懂 CAS 和 LongAdder这两个东西。相信如果把下面六篇文章看完,你对ConcurrentHashMap就会有进一步的了解。看完上面两篇前置内容,下面的内容学习起来会更清楚些。希望大家一起学习,一起进步!...

2022-08-12 19:11:39 117

原创 ConcurrentHashMap第六讲:TreeBin源码解析

ConcurrentHashMap第六讲:TreeBin源码解析。

2022-08-12 03:30:09 416 1

原创 ConcurrentHashMap第五讲:get方法,remove方法

remove方法中,调用replaceNode方法,传入的第一个null 代表要把key对应的值替换为value值,第二个null,代表key对应值的期望值(如果为空就不判断,不为空,就需要比对value值)remove 本质上是一种替换为null 的操作,所以里面使用的方法是replaceNode。...

2022-08-09 02:10:57 588

原创 ConcurrentHashMap第四讲:transfer方法

ConcurrentHashMap第四讲:transfer方法。在数组扩容后,进行迁移链表节点时就是按上面这个图进行的。

2022-08-07 19:44:54 582

原创 ConcurrentHashMap第三讲:addCount方法

addCount内部使用的是LongAdder 而不是 AtomicLong,主要原因是因为效率问题。LongAdder:总数 = base + 所有的cell。

2022-08-04 01:59:52 1074 1

原创 ConcurrentHashMap第二讲:Put源码分析(重点)

ConcurrentHashMap第二讲:Put源码分析(重点)

2022-08-03 04:53:34 81

原创 ConcurrentHashMap第一讲:结构分析,变量及部分常见方法

ConcurrentHashMap第一讲:结构分析

2022-08-01 23:43:48 174

原创 LongAdder源码解析

qwe

2022-07-31 19:17:36 66

原创 JAVA并发基石CAS

JAVA并发基石CAS

2022-07-30 21:41:57 61

原创 JUC并发编程 狂神第三讲

juc狂神第三讲

2022-07-29 23:14:28 47

原创 JUC编发编程 狂神第二讲

juc 狂神第二讲

2022-07-27 18:47:33 75

原创 JUC并发编程 狂神第一讲

狂神JUC第一讲

2022-07-25 03:48:43 45

原创 java中的Iterator迭代器及源码分析

迭代器接口:public interface Iterator<E> { boolean hasNext(); E next(); default void remove() { throw new UnsupportedOperationException("remove"); } default void forEachRemaining(Consumer<? super E> action) { Objects.requireNo

2022-04-14 22:05:49 1324

原创 java反射机制

目录标题OCP:开闭原则(设计模式)对扩展开放,对修改是关闭的对象类:public class Cat { public void hi(){ System.out.println("hi~~~"); } public void cry(){ System.out.println("cry cry~~~"); }}properties:classfullpath=com.company.Catmethod=hipubl

2022-04-12 13:26:25 442

原创 代理模式-静态代理,jdk动态代理,CGLIB动态代理

目录java中的代理模式静态代理动态代理基于jdk(接口)的动态代理基于CGLIB(父类)的动态代理代理就是代替处理,就是另一个对象代理原来的对象处理某些逻辑代理可以给我们带来什么?在不改变原对象代码的基础上,对原对象的功能进行修改或者增强解耦java中的代理模式java动态代理生成方式分三种:静态代理,基于 jdk (接口) 动态代理、CGLIB(父类)的动态代理一个静态,两个动态目标类:原对象,(演员本人) 代理类:代理模式产生的对象,在原有的基础上修改逻辑,并不改变目标类本身(替身

2022-04-10 21:54:31 342

原创 八大排序(韩顺平)

八大排序文章目录八大排序1,冒泡排序2,快速排序3,插入排序4,希尔排序5,选择排序6,堆排序7,基数排序8,归并排序1,冒泡排序2,快速排序 // 写一个递归调用方法扫描左右两边 public static void quickSort(int arr[], int left, int right) { if (left < right) {// 这个判断一定要加 不然就一直扫描左侧 int mid = get_mid(arr, left, right); quick

2022-04-05 09:37:09 137

原创 String,StringBuffer,StringBuilder的区别

String,StringBuffer,StringBuilder的区别文章目录String,StringBuffer,StringBuilder的区别StringString是不可变的String的两种实例化String的拼接StringBuffer和StringBuilderStringString是不可变的1)String是只读字符串,String引用的字符串内容不可修改String str="hel";String str2="hel";str="hello";str和str2指

2022-04-03 10:52:49 37

原创 RabbitMQ入门

windows中打开rabbitmq_server-3.9.14的sbin目录,进入cmdrabbitmqctl stop 停止服务rabbitmq-server -detached 后台启动(可以关闭cmd窗口)helloworldpublic class Provider { //生成消息 @Test public void testSendMessage() throws IOException, TimeoutException { //创建连接m

2022-04-02 22:50:57 1918

原创 红黑树随笔

红黑树文章目录红黑树二叉搜索树删除节点:该节点是叶子节点该节点有一个子节点该节点有两个子节点

2022-03-31 18:19:24 481

java-反射机制-源码

java-反射机制-源码

2022-04-12

动态代理设计模式-源码

动态代理设计模式-源码

2022-04-10

空空如也

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

TA关注的人

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