自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自定义业务异常

文章目录一、继承RuntimeException二、自定义异常常量测试总结在开发项目的工程中,经常需要定义属于自己系统的业务异常,所以这里做一个记录分享。一、继承RuntimeExceptionmaven依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifa

2021-11-02 15:44:06 648 1

原创 RabbitMQ快速入门

文章目录MQ的基本概念1.1 MQ概述1.2 MQ优势1.2.1 应用解耦1.2.2 异步提速二、使用步骤1.引入库2.读入数据MQ的基本概念1.1 MQ概述MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信我们从A系统调用B系统直接远程调用,这样虽然简单调用但也有局限性,例如系统过度耦合、同步请求过慢、流量的高峰因此MQ也顺应而生。1.2 MQ优势MQ的三大主要作用: 应用解耦、异步提速、流量削锋1.2.1 应用解耦系统的

2021-10-13 12:52:01 301 1

原创 zookeeper详解

学习了zookeeper的特性与节点的数据类型,这里记录一下学习笔记,有错误,还望指出。文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使

2021-08-30 16:18:07 372 1

原创 Redis核心数据结构与高性能原因

学习了Redis的五大核心数据结构及它高性能的原理,这里记录一下学习笔记,有错误,还望指出。文章目录Redis的单线程和高性能Redis是单线程吗?Redis 单线程为什么还能这么快?Redis 单线程如何处理那么多的并发客户端连接?Redis核心数据结构String 结构Hash结构List结构Set结构Zset结构Redis的单线程和高性能Redis是单线程吗?Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的

2021-08-25 16:40:31 155

原创 ScheduledThreadPoolExecutor原理分析

今天学习了cheduledThreadPoolExecutor线程池,这里记录一下学习笔记,有错误,还望指出。文章目录ScheduledThreadPoolExecutor类分析提交任务的方式SchduledFutureTaskSchduledFutureTask之run方法实现reExecutePeriodic方法线程池任务的提交任务提交方法二、使用步骤1.引入库2.读入数据ScheduledThreadPoolExecutor类分析定时线程池类的类结构图它用来处理延时任务或定时任务。提交任

2021-03-08 03:53:15 728

原创 HashMap原理分析

今天学习了HashMap数据结构,这里记录一下学习笔记,有错误,还望指出。文章目录前言HashMap重要成员变量为什么说默认初始容量必须是2的指数幂?为什么一定要转成2的指数次幂?Hash计算index采用位运算hash扩容,有个加载因子?loadfactor = 0.75为什么是0.75容量>=64才会链表转红黑树,否则优先扩容。为什么链表长度>8,链表9的时候转红黑树?扩容死锁问题分析Jdk7-扩容Jdk8-扩容前言大家都知道HashMap在JDK1.7和1.8中数据结构发生了比较

2021-03-03 17:08:54 251 1

原创 Executor线程池原理分析

今天学习了Executor线程池,这里记录一下学习笔记,有错误,还望指出。文章目录线程协程线程池线程池介绍线程池优势线程的实现方式Executor框架线程池重点属性ctl相关方法线程池存在5种状态ThreadPoolExecutor参数解释线程池监控线程池原理流程分析execute方法addWorker方法Worker类runWorker方法getTask方法processWorkerExit方法总结线程线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,在操

2021-02-24 02:41:10 205

原创 CopyOnWrite机制

前言CopyOnWrite机制它的核心思想:读写分离,空间换时间,避免为保证并发安全导致的激烈的锁竞争。划关键点:CopyOnWrite适用于读多写少的情况,最大程度的提高读的效率;CopyOnWrite是最终一致性,在写的过程中,原有的读的数据是不会发生更新的,只有新的读 才能读到最新数据;如何使其他线程能够及时读到新的数据,需要使用volatile变量;写的时候不能并发写,需要对写操作进行加锁;二、使用步骤/** * Appends the

2021-02-23 01:11:24 716

原创 ConcurrentHashMap原理分析

学习了ConcurrentHashMap数据结构,这里记录一下学习笔记,有错误,还望指出。文章目录前言数据结构重要成员变量并发安全控制协助扩容helpTransfer扩容transfer总结前言之前讲了HashMap在jdk1.7和1.8的区别,那么ConcurrentHashMap在两个版本下也同样有着区别和优化的地方。数据结构ConcurrentHashMap的数据结构与HashMap基本类似,区别在于有两点:内部在数据 写入时加了同步机制(分段锁)保证线程安全,读操作是无锁操作;扩

2021-02-22 22:03:22 138

原创 Atomic类和Unsafe魔法类

今天学习了Atomic类和Unsafe魔法类,这里记录一下学习笔记,有错误,还望指出。文章目录原子操作CPU如何实现原子操作处理器自动保证基本内存操作的原子性1. 使用总线锁保证原子性2. 使用总线锁保证原子性Java当中如何实现原子操作Atomic1、原子更新基本类型类2、原子更新数组类3、原子更新引用类型4、原子更新字段类Unsafe应用解析Unsafe功能介绍1、内存操作2、CAS相关3、线程调度4、内存屏障总结原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(at

2021-02-18 21:22:27 108

原创 JVM内置锁synchronized

今天学习了CPU缓存一致性协议MESI,这里记录一下学习笔记,有错误,还望指出。文章目录设计同步器的意义如何解决线程并发安全问题?synchronized原理synchronized底层原理Monitor监视器锁什么是monitor?对象的内存布局对象头对象头分析工具锁的膨胀升级过程偏向锁轻量级锁自旋锁锁消除逃逸分析设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是: 对象、变量、文件等。共享:资源可以由多个线程同时

2021-01-06 00:42:30 276

原创 CPU缓存一致性协议MESI

今天学习了CPU缓存一致性协议MESI,这里记录一下学习笔记,有错误,还望指出。提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy

2021-01-05 00:48:37 132

原创 操作系统底层工作的认识

冯诺依曼计算机模型计算机五大核心组成部分CPU指令结构CPU缓存结构CPU读取存储器数据过程CPU高速缓存CPU运行安全等级内存管理执行空间保护进程与线程虚拟机指令集架构栈指令集架构寄存器指令集架构冯诺依曼计算机模型计算机发展至今它最初的样子就是如此吗,并不是它是正式基于-冯诺依曼计算机模型发展而来的。计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器

2020-12-22 13:34:41 779

原创 MVCC与BufferPool缓存机制

今天学习了MVCC与BufferPool缓存机制,这里记录一下学习笔记,有错误,还望指出。文章目录系列文章目录MVCC多版本并发控制机制undo日志版本链与read view机制Innodb引擎SQL执行的BufferPool缓存MVCC多版本并发控制机制Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务 里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是靠MVCC(Mu

2020-12-08 20:14:50 540

原创 Mysql锁与事务隔离级别

今天学习了Mysql锁与事务隔离级别,这里记录一下学习笔记,有错误,还望指出。文章目录概述事务及其ACID属性并发事务处理带来的问题事务隔离级别锁详解锁分类表锁行锁行锁与事务隔离级别分析读未提交读已提交可重复读概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用

2020-12-07 02:05:33 233

原创 Mysql索引优化(二)

今天学习了Mysql索引的优化这是第二篇,这里记录一下学习笔记,有错误,还望指出。文章目录分页查询优化1、根据自增且连续的主键排序的分页查询2、根据非主键字段排序的分页查询Join关联查询优化1、 嵌套循环连接 Nested-Loop Join(NLJ) 算法2、 基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法count(*)查询优化MySQL数据类型选择1、数值类型2、日期和时间3、字符串提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学

2020-12-03 11:51:03 345

原创 Mysql索引优化(一)

今天学习了Mysql索引的优化这是第一篇后续还有第二篇,这里记录一下学习笔记,有错误,还望指出。文章目录前言综合例子1、联合索引第一个字段用范围不会走索引2、强制走索引3、覆盖索引优化4、in和or在表数据量比较大的情况会走索引,在表记录不多的情况下会选择全表扫描5、like KK% 一般情况都会走索引什么是索引下推了?为什么范围查找Mysql没有用索引下推优化?Mysql如何选择合适的索引trace工具常见sql深入优化Order by与Group by优化优化总结:Using filesort文件排序

2020-12-02 02:04:52 332

原创 一条SQL在MySQL中是如何执行的

今天学习了sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的,这里记录一下学习笔记,有错误,还望指出。文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基

2020-11-30 00:23:10 188

原创 Explain详解与索引最佳实践

文章目录前言Explain是什么?Explain 两个变种Explain中的列总结前言在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用

2020-11-25 23:09:07 420

原创 Mysql索引底层数据结构与算法

学习了Mysql的索引底层数据结构与算法为大家分享一下,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。文章目录首先为提出一个问题并引入几个概念:Mysql底层是采用的什么索引结构?什么是索引?什么是I/O?什么是数据页?聚簇索引(聚集索引)?非聚簇索引(非聚集索引)?索引数据结构1.二叉树2.红黑树3.Hash表4.B-Tree5.B+Tree(B-Tree变种)存储引擎的区别?为什么建议InnoDB表必须建主键,并且推荐使用整型的自增主键?联合索引首先为提出一个问题并引入几个概念:My

2020-11-23 17:04:39 173

原创 GC调优与常量池详解

学习了GC日志的详情与常量池为大家分享一下,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。文章目录前言打印GC日志方法如何分析GC日志CMSG1JVM参数汇总查看命令Class常量池与运行时常量池字面量符号引用字符串常量池三种字符串操作(Jdk1.7 及以上版本)字符串常量池位置字符串常量池设计原理String常量池问题的几个例子八种基本类型的包装类和对象池总结前言对于java应用我们可以通过一些配置把程序运行过程中的gc日志全部打印出来,然后分析gc日志得到关键性指标,分析 GC原因

2020-11-19 05:39:30 742 1

原创 JVM调优工具详解

学习了JVM的一些调优工具为大家分享一下,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。文章目录前言jdk自带工具一、Jmap1.1 jps1.2 jmap -histo1.3 jmap -heap1.4 jmap -dump二、Jstack三、Jinfo四、Jstat垃圾回收统计JVM运行情况预估年轻代对象增长的速率Young GC的触发频率和每次耗时每次Young GC后有多少对象存活和进入老年代Full GC的触发频率和每次耗时内存泄露到底是怎么回事五、ArthasArthas使用git

2020-11-19 04:48:55 3254

原创 垃圾收集算法与垃圾收集器

学习了垃圾收集算法与垃圾收集器,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。文章目录一、垃圾收集算法1.分代收集理论2.标记-复制算法3.标记-清除算法4.标记-整理算法二、垃圾收集器1.Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)2.Parallel Scavenge收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代))3.ParNew收集器(-XX:+UseParNewGC)4.CM

2020-11-03 19:08:59 239 1

原创 JVM内存分配机制

学习了JVM的内存分配机制为大家分享一下,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。一、对象的创建对象创建的主要流程:1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个 符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2.分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小

2020-10-29 21:03:28 438

原创 JVM整体结构

JVM内存模型深度剖析学习了jvm的内存结构,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。一、JDK体系结构首先了解我们JDK的一个整体的体系里面包含了例如:java Language里面包含jdk的版本,Tools APIs里面提供的java命令,JRE包含所有java运行时环境Concurrency并发包、Input/Output IO流,还有今天的重点java运行时数据区(内存模型)javaVirtualMachine。二、Java语言的跨平台特性为什么同一份java代码在

2020-10-26 01:13:55 140 1

原创 JVM类加载机制

类加载机制深度解析为大家分享从JDK源码级别彻底剖析JVM类加载机,如有错误十分抱歉,还请指出博主会立马改正。一、类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM(这里以Math类为例)。package com.jvm;/** * @author Kang * @version 1.0 */public class Math { public static final int initData = 666;

2020-10-16 20:37:44 656 4

空空如也

空空如也

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

TA关注的人

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