自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (9)
  • 收藏
  • 关注

转载 并发-Executor线程池原理与源码解读

并发-Executor线程池原理与源码解读线程协程线程池线程池介绍线程的实现方式Executor框架线程池重点属性线程池的具体实现ThreadPoolExecutor线程池的创建参数解释线程池监控线程池原理源码分析addWorker方法Worker类runWorker方法引自图灵,用于学习线程线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有一个对应的线程。Java线程

2022-05-10 00:02:08 496

转载 并发-Collections之Map&List&Set详解

并发-Collections之Map&List&Set详解HashMap数据结构源码原理分析Jdk7-扩容死锁分析单线程扩容多线程扩容Jdk8-扩容ConcurrentHashMap数据结构并发安全控制源码原理分析协助扩容helpTransfer总结CopyOnWrite机制源码原理引自图灵,用于学习HashMap数据结构数组+链表+(红黑树jdk>=8)源码原理分析重要成员变量DEFAULT_INITIAL_CAPACITY = 1 << 4; Has

2022-05-09 23:34:38 302

转载 并发-Atomic&Unsafe魔法类

并发-Atomic&Unsafe魔法类原子操作处理器如何实现原子操作处理器自动保证基本内存操作的原子性使用总线锁保证原子性使用缓存锁保证原子性Java当中如何实现原子操作Atomic原子更新基本类型类原子更新数组类原子更新引用类型原子更新字段类Unsafe应用解析如何获取Unsafe实例?Unsafe功能介绍内存操作CAS相关典型应用线程调度引自图灵,用于学习。原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个

2022-05-05 01:00:44 490

转载 并发-Semaphore和CountDownLatch初识

并发-Semaphore和CountDownLatch初识Semaphore是什么?怎么使用 Semaphore?2.1 构造方法2.2 重要方法2.3 基本使用2.3.1 需求场景2.3.2 代码实现CountDownLatch使用及应用场景例子CountDownLatch是什么?使用场景:CountDownLatch如何工作?APICountDownLatch应用场景例子CyclicBarrierAPI应用场景引自图灵,用于学习Semaphore是什么?Semaphore 字面意思是信号量的

2022-04-25 00:10:00 215

转载 【并发】-BlockingQueue 简介

【并发】-BlockingQueue 简介概要对类类型队列数据结构ArrayBlockingQueueLinkedBlockingQueueDelayQueueBlockingQueue API引自图灵,用于学习概要BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题 的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且 BlockingQueue提供了超时return null的机制,在许多生产场景里都可

2022-04-24 23:58:15 418

转载 并发-AQS杂谈

引自图灵,用于学习ReentrantLock lock = new ReentrantLock(false);//false为非公平锁,true为公平锁3个线程T0 T1 T2lock.lock() //加锁 while(true){ if(cas加锁成功){//cas->比较与交换compare and swap, break;跳出循环 } //Thread.yeild()//让出CPU使用权 .

2022-04-17 22:23:21 98

转载 并发-AQS应用之Lock

并发-AQS应用之LockAQS应用之LockReentrantLockAQS具备特性同步等待队列条件等待队列AQS源码分析AQS应用之LockJava并发编程核心在于java.concurrent.util包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定义了一套多线程访问共享资源 的同步器框架,是一个依赖状态(state)的同步器。Reentrant

2022-04-17 22:18:56 908

转载 并发-synchronized详解

并发-synchronized详解设计同步器的意义如何解决线程并发安全问题?同步器的本质就是加锁synchronized原理详解synchronized底层原理Monitor监视器锁什么是monitor?对象的内存布局对象头锁的膨胀升级过程偏向锁轻量级锁自旋锁锁消除逃逸分析设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问可变:资源可以在其生命周期内被修改引出的

2022-04-17 21:40:02 486

转载 并发-MESI缓存一直协议详解

并发-MESI缓存一直协议详解CPU缓存一致性协议MESICPU高速缓存(Cache Memory)CPU为何要有高速缓存目前流行的多级缓存结构多核CPU多级缓存一致性协议MESIMESI协议缓存状态MESI状态转换多核缓存协同操作单核读取双核读取修改数据同步数据缓存行伪共享MESI优化和他们引入的问题CPU切换状态阻塞解决-存储缓存(Store Bufferes)Store BufferesStore Bufferes的风险硬件内存模型引用自图灵,用于学习CPU缓存一致性协议MESICPU高速

2022-04-01 00:28:39 576

转载 并发-JMM&synchronized&volatile详解

并发-JMM&synchronized&volatile详解什么是JMM模型?JMM不同于JVM内存区域模型主内存工作内存Java内存模型与硬件内存架构的关系JMM存在的必要性数据同步八大原子操作同步规则分析并发编程的可见性,原子性与有序性问题原子性可见性有序性JMM如何解决原子性&可见性&有序性问题原子性问题可见性问题有序性问题volatile内存语义volatile的可见性volatile无法保证原子性volatile禁止重排优化硬件层的内存屏障volatile内存语义的

2022-04-01 00:04:14 273 2

转载 并发-操作系统底层工作的整体认识

操作系统底层工作的整体认识冯诺依曼计算机模型详解计算机五大核心组成部分CPU指令结构控制单元运算单元存储单元CPU缓存结构CPU读取存储器数据过程CPU为何要有高速缓存带有高速缓存的CPU执行计算的流程CPU运行安全等级操作系统内存管理执行空间保护内核线程模型用户线程模型进程与线程虚拟机指令集架构栈指令集架构寄存器指令集架构引用自图灵,用于学习冯诺依曼计算机模型详解现代计算机模型是基于-冯诺依曼计算机模型计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据

2022-03-31 22:57:28 139

转载 Redis缓存设计与性能优化

Redis缓存设计与性能优化多级缓存架构缓存设计缓存穿透缓存失效(击穿)缓存雪崩热点缓存key重建优化缓存与数据库双写不一致开发规范与性能优化命令使用客户端使用系统内核参数优化慢查询日志:slowlog引自图灵,用于学习多级缓存架构缓存设计缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个:

2022-03-27 23:24:40 446

转载 Redis-缓存高可用集群

Redis-缓存高可用集群Redis集群方案比较哨兵模式高可用集群模式Redis集群原理分析引自图灵,用于学习Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜

2022-03-27 21:28:53 262

转载 MySQL主从架构及读写分离

文章目录一、实验目的与环境二、基础环境介绍三、搭建主从集群1、理论基础2、同步的原理3、搭建主从集群3.1 配置master主服务器3.2 配置slave从服务3.3 主从集群测试3.4 集群搭建扩展:3.5、GTID同步集群4、集群扩容5、半同步复制1、理解半同步复制2、搭建半同步复制集群6、主从架构的数据延迟问题:四、MySQL的高可用方案--了解1、MMM2、MHA3、MGR五、分库分表1、分库分表有什么用2、分库分表的方式3、分库分表的缺点4、什么时候需要分库分表?5、常见的分库分表组件引用自图

2022-03-21 23:22:29 719

转载 Redis-持久化、主从与哨兵架构详解

Redis-持久化、主从与哨兵架构详解Redis 持久化RDB快照(snapshot)bgsave的写时复制(COW)机制save与bgsaveAOF(append-only file)引用自图灵,用于学习Redis 持久化RDB快照(snapshot)在默认情况下,Redis将内存数据库快照保存在名为dump.rdb的二进制文件中。可以对Redis进行设置,让它在“N秒内数据集至少有M个改动”这一条件被满足,自动保存一次数据集。比如说,以下设置会让Redis在满足“60秒内至少有1000个键

2022-03-13 23:30:20 535

原创 Redis-内部结构和数据结构

Redis-内部结构和数据结构Redis 内部运行简单介绍Redis的单线程和高性能Redis 数据结构Redis集群结构其他命令Redis 内部运行简单介绍Redis的单线程和高性能Redis是单线程的吗?Redis的单线程主要是指Redis的网络IO和键值对读写是由一个线程完成的。这也是由一个线程来完成的(redis6以前,6做了优化,只有命令解析执行时单鞋承德,其他如读取、写入等都是多线程),这也是Redis对外提供简直存储服务的主要流程。但Redis的其他功能,比如持久化、异步删除、集群数据

2022-03-06 22:35:00 318

原创 Redis-安装

Redis-安装单体安装主从配置哨兵配置集群配置单体安装获取redis包# 安装gcc(如果已经装了就不用了)yum install gcc# 联网下载redis‐5.0.14.tar.gz 其他版本见:http://redis.io/downloadwget http://download.redis.io/releases/redis‐5.0.14.tar.gz# 解压tar xzf redis‐5.0.14.tar.gzcd redis‐5.0.14# 进入到解压好的redis

2022-03-06 20:56:02 618

转载 MySQL-MVCC多版本并发控制机制

MySQL-MVCC多版本并发控制机制MVCC多版本并发控制机制undo日志版本链与read view机制详解Innodb引擎SQL执行的BufferPool缓存机制引用自图灵,用于学习。MVCC多版本并发控制机制Mysql在可重复读隔离级别下如何保证事务较高的隔离性,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是靠MVCC(Multi-Version Concurrency Control)机制来保证的,对一

2022-03-01 23:29:22 210

转载 Mysql锁与事务隔离级别

Mysql锁与事务隔离级别概述事务及ACID属性并发事务处理带来的问题更新丢失(Lost update)或脏写脏读(Dirty Reads)不可重复读(Non-Repeatable Reads)幻读(Phantom Reads)事务隔离级别锁详解锁分类串行化解决幻读间隙锁(Gap Lock)临键锁(Next-key Locks)无索引行锁会升级为表锁文章引自图灵,用于自学。概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏读、脏写

2022-02-28 23:49:03 385

原创 MySQL-索引优化杂述

MySQL-索引优化杂述索引下推索引下推索引下推(Index Condition Pushdown,ICP):对于辅助的联合索引,正常情况按照最左前缀原则,SELECT * FROM employees WHERE name like ‘LiLei%’ AND age = 22 AND position =‘manager’(以name,age,position为联合索引)这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。

2022-02-14 23:35:53 354

转载 MySQL-内部组件结构

MySQL-内部组件结构MySQL内部组件结构Server层Store层连接器查询缓存分析器词法分析原理优化器执行器bin-log归档binlog‐format文章引用自图灵MySQL内部组件结构大体来说,MySQL可以分为Server层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数字和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存

2022-02-13 23:22:11 463

转载 MySql-Explain讲解

MySql之ExplainExplainExplain工具Explain分析示例文章引用字图灵ExplainExplain工具使用explain关键字可以模拟优化器质性SQL语句,分析你的查询语句或者是结构的性能瓶颈,在select语句执行之前增加 explain关键字,MySql会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。注意:如果from中包含子查询,人会执行该子查询,将结果列入临时表中。Explain分析示例官方文档:https://dev.mysql

2021-12-26 21:40:52 102

转载 MySql-索引和数据存储结构筑基

MySql的索引和数据存储结构筑基索引的本质索引数据结构分类B-Tree索引的本质索引是帮助MySql高效获取数据的排好序的数据结构从这句话可以看出,索引本质是排好序的数据结构,且能高效的查询。那么是怎样的排好序的结构,又是怎样高效呢?索引数据结构分类二叉树红黑树Hash表B-Tree众所周知,mysql采用的是B+树。这就会引申一些问题。(1)什么是B-Tree,(2)B+Tree和B-Tree的区别,(3)为什么采用B+Tree,而不采用其他的。B-Tree...

2021-12-26 20:30:41 342

转载 JVM调优工具介绍及常量池详解

JVM调优工具介绍及常量池详解JVM调优工具介绍阿里巴巴Arthas详解Arthas使用Class常量池与运行时常量池字面量符号引用字符串常量池字符串常量池的设计思想三种字符串操作(Jdk1.7 及以上版本)字符串常量池位置字符串常量池设计原理String常量池问题的几个例子关于String是不可变的八种基本类型的包装类和对象池来源自图灵学院,如果介意,请联系删除。JVM调优工具介绍阿里巴巴Arthas详解Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支

2021-10-11 22:58:24 354

转载 JVM-调优工具命令(笔记)

调优工具和命令JPS常用参数JmapJPS  jps(Java Virtual Machine Process Status Tool),是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单查看当前java进程的一些简单情况。常用参数-q 直线是pid,不显示class名称,jar文件名和传递给main方法的参数-m 输出传递给main方法的参数,在嵌入式jvm上可能是null。-l 输出应用程序main class的完整package名或者应用程序的j

2021-09-22 23:39:49 509

转载 JVM-垃圾收集器G1&ZGC详解

图灵学院。若有违规,请留言垃圾收集器G1&ZGC详解G1收集器(-XX:+UseG1GC)G1收集器(-XX:+UseG1GC)G1(Garbage-First)通过配置-XX:+UseG1GC开启使用G1垃圾收集器;它是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器。以及高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。  G1打破了之前版本对于JVM堆的分代划分。形成新的结构。它将java堆划分为多个大小相等的独立区域(Region),JVM目标是.

2021-09-01 00:11:53 976

转载 JVM-垃圾收集器ParNew&CMS与底层三色标记算法详解

图灵学院。若有违规,请留言垃圾收集器垃圾收集算法分代收集理论复制算法标记-清除算法标记-整理算法垃圾收集器1.1 Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)垃圾收集算法分代收集理论当前虚拟机的垃圾收集器都是采用分代手机算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新声代中,每次收集都会有大量对象(99%)死去,所以可.

2021-08-29 00:00:27 317

原创 JVM内存常用参数配置集合

JVM内存参数配置Spring Boot程序的JVM参数设置格式(Tomcat启动直接加载bin目录下catalina.sh文件里,注:X越多的,说明越不稳定,可能在后期版本不使用了): java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jar堆配置:‐Xms:设置初始化java堆的大小‐Xmx:

2021-08-24 01:29:40 550

转载 JVM笔记(三):JVM对象创建与内存分配机制剖析

从鲁班,也从图灵文章部分来源图灵学院,部分来源网络博文,因为链接具体找不到,这里深感抱歉,如果介意,请留言对象的创建对象创建的主要流程:1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2.分配内存在加载检查通过后,接下来虚拟机将会为新生对象分配内存。对象所需内存.

2021-08-22 01:46:05 619

原创 java虚拟机(JVM)笔记二:JVM内存模型

文章部分来源图灵学院,部分来源网络博文,因为链接具体找不到,这里深感抱歉,如果介意,请留言知乎:https://zhuanlan.zhihu.com/p/400076360局部变量表:用于存放方法的局部变量和变量所等于的值。操作数栈:用于临时存放变量操作出的值。如:int a = 1 + 2; 程序会将a放入局部变量表。然后在操作数栈中计算出值,在将值放入局部变量表中,得到a = 3.动态链接:方法中带有的符号引用所指向的具体直接引用。方法出口:方法的返回值。JVM内存参数配置Spri.

2021-08-18 01:14:17 176

转载 java虚拟机(JVM)笔记一:java和Tomcat类加载机制

JVM笔记一:java和Tomcat类加载机制Java类加载loadClass加载步骤类加载机制类加载器初始化过程双亲委派机制全盘负责委托机制类关系图自定义类加载器打破双亲委派机制Tomcat类加载器为了解决以上问题,tomcat是如何实现类加载机制的?课后小问题文章部分来源图灵学院,部分来源网络博文,因为链接具体找不到,这里深感抱歉,如果介意,请留言知乎:https://zhuanlan.zhihu.com/p/397669677Java类加载当我们用java命令运行某个类的main函数启动程

2021-08-18 00:59:32 337

Apache Dubbo 3.0 教程.pdf

dubbo3.0教程

2021-09-16

Kitex 微服务框架 v0.0.4 教程.pdf

字节跳动微服务

2021-09-09

Selenium 教程.pdf

测试

2021-09-05

前端面试之道前端面试之道前端面试之道前端面试之道.pdf

前端面试

2021-09-03

Apache Kylin v3.1 使用教程.pdf

apache kylin 3.1,

2021-08-31

兜哥带你NLP入门(自然语言处理入门).pdf

深度学习

2021-08-29

Shell 编程范例.pdf

shell命令

2021-08-28

JSP+API.CHM

jsp文档,对初学者是一个不错的文档,其内容比较丰富

2013-03-20

空空如也

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

TA关注的人

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