自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springboot自动装配及启动原理

SpringBoot中众多的条件注解,都是基于Spring中的@Conditional来实现的。使用自定义条件注解@Overridetry {

2023-01-15 18:49:46 10

原创 MySQL之InnoDB引擎底层存储结构

如果我们只在内存的 Buffer Pool 中修改了页面,假设在事务提交后突然发生 了某个故障,导致内存中的数据都失效了,那么这个已经提交了的事务对数据库 中所做的更改也就跟着丢失了,这是我们所不能忍受的。有时候我们仅仅修改了某个页面中的一个字节,但是我们知道在 InnoDB 中是以页为单位来进行磁盘 IO 的,也就是说我们在该事务提交时不得不将一个完整的页面从内存中刷新到磁盘,我们又知道一个页面默认是 16KB 大小,只修改一个字节就要刷新 16KB 的数据到磁盘上显然是太浪费了。

2022-12-21 23:14:16 15

原创 MySQL优化实战

分析trace中的执行计划。可以有效分析建的索引为什么没有走。查看优化器如何选择执行计划,获取每个可能的索引选择的代价。TRACE 字段中整个文本大致分为三个过程。

2022-12-06 23:43:45 178

原创 Map底层原理

用于处理当key为null的元素,默认将该元素放置在数组的0号位置上,插入时,优先判断当前位置上是否存在key为null的元素,如果存在则进行覆盖并且返回旧值;否则,采用头插法将该元素插入。

2022-11-20 12:11:26 48

原创 深入理解线程池工作原理

主要优势:参数介绍创建线程池需要以下几个参数,其中有5个是必需的:什么是“非核心线程”呢?是不是先创建的线程就是核心线程,后创建的就是非核心线程呢?一个线程执行完了一个任务后,会去阻塞队列里面取新的任务,在取到任务之前它就是一个闲置的线程。取任务的方法有两种,一种是通过 take() 方法一直阻塞直到取出任务,另一种是通过 poll(keepAliveTime,timeUnit) 方法在一定时间内取出任务或者超时,如果超时这个线程就会被回收,请注意核心线程一般不会被回收。那么怎么保证核心线程不会被回收呢

2022-11-17 21:34:57 42

原创 AQS之ReentrantLock

java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承AQS将同步器所有调用都映射到Sync对应的方法。

2022-11-12 13:48:44 14

原创 深入理解synchronized

在获取锁时,是将当前线程插入到cxq的头部,而释放锁时,默认策略(QMode=0)是:如果EntryList为空,则将cxq中的元素按原有顺序插入到EntryList,并唤醒第一个线程,也就是当EntryList为空时,是后来的线程先获取锁。用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit,官方称它为“Mark Word”以上的结果可能是正数、负数、零。

2022-11-08 00:25:50 43

原创 深入理解CAS&Atomic原子类

CAS 可以看作是它们合并后的整体——一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS可以看做是乐观锁(对比数据库的悲观、乐观锁)的一种实现方式,Java原子类中的递增操作就通过CAS自旋实现的。CAS是一种无锁算法,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。

2022-11-02 22:08:28 23

原创 并发编程之深入理解JMM&Java线程

join可以理解成是线程合并,当在一个线程调用另一个线程的join方法时,当前线程阻塞等待被调用join方法的线程执行完毕才能继续执行,所以join的好处能够保证线程的执行顺序,但是如果调用线程的join方法其实已经失去了并行的意义,虽然存在多个线程,但是本质上还是串行的,最后join的实现其实是基于等待通知机制的。每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定(Java中,Thread.yield()可以让出执行时间,但无法获取执行时间)。睡眠结束后的线程未必会立刻得到执行。

2022-10-30 21:51:07 29

原创 G1 收集器 介绍

G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多核处理器及大容量内存的机器。特点: STW停顿时间敏感,提升用户体验,高吞吐量,CPU利用率高。G1将Java堆划分为多个大小相等的独立区域(Region),每一个小方格代表一个Region,JVM最多可以有2048个Region。如图所示Region: 般Region大小等于堆大小除以2048,比如堆大小为4096M,则Region大小为2M。

2022-10-22 13:20:29 60

原创 Mail工具包

【代码】Mail工具包。

2022-10-20 14:46:11 56

原创 MinIo工具包

【代码】MinIo工具包。

2022-10-20 14:40:51 113

原创 《RocketMQ技术内幕》笔记

《RocketMQ技术内幕》笔记阅读源码的准备工作获取和调用RocketMQ源码IDEA获取RocketMQ源码IDEA调试RocketMQ源码RocketMQ目录结构RocketMQ设计理念与目标设计理念设计目标阅读源码的准备工作获取和调用RocketMQ源码IDEA获取RocketMQ源码IDEA调试RocketMQ源码RocketMQ目录结构RocketMQ 核心目 录说明如下broker: broker 模块(broke 启动进程)client :消息客户端,包含消息生产者、消息

2022-10-20 14:31:21 34

原创 JDK 1.8 lambda 各函数用法

持续学习中。。。

2022-10-20 14:30:28 2

原创 Spring boot Validated 参数注解验证

Class

2022-10-20 14:30:13 24

原创 JVM调优工具命令的使用

【代码】JVM调优工具命令的使用。

2022-10-20 14:23:47 53

原创 JVM 垃圾收集器与收集算法 初探

不是Full GC,老年代的堆占有率达到参数(-XX:InitiatingHeapOccupancyPercent)设定的值则触发,回收所有的Young和部分Old(根据期望的GC停顿时间确定old区垃圾收集的优先顺序)以及大对象区,正常情况G1的垃圾收集是先做MixedGC,主要使用复制算法,需要把各个region中存活的对象拷贝到别的region里去,拷贝过程中如果发现没有足够的空region能够承载拷贝对象就会触发一次Full GC。每个对象有一个64位指针,这64位被分为。

2022-10-12 14:19:00 52

原创 JVM类加载,内存解析,分配

设计双亲委派模型有两个原因:沙箱安全机制:自己写的java.lang.String.class类不会被加载,这样便可以防止核心API库被随意篡改避免类的重复加载:当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次,保证被加载类的唯一性应用程序类加载器 在加载时会优先往上找查看扩展类加载器是否已加载类, 已加载则直接返回,未加载则继续向上找查看启动类加载器是否已加载类,已加载直接返回, 依旧未加载时,才使用应用程序类加载器加载类(存在自定义类加载器时,也是依次向上找.)

2022-10-02 19:20:49 296

原创 ElasticSearch 集群搭建及相关原理解析

分布式系统的可用性与扩展性ES集群架构的优势:至关重要的作用blogs对应的架构对于生产环境中分片的设定,需要提前做好容量规划集群 statusGreen: 主分片与副本都正常分配Yellow: 主分片全部正常分配,有副本分片未能正常分配Red: 有主分片未能分配。例如,当服务器的磁盘容量超过85%时,去创建了一个新的索引CAT API查看集群信息:搭建三节点ES集群系统环境操作系统: CentOS7,准备用户eselasticsearch:elasticsearch-7.17.

2022-07-10 22:05:14 234

原创 ElasticSearch 高级查询语法Query DSL 2

Elasticsearch除搜索以外,提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:聚合的分类Metric Aggregation:—些数学运算,可以对文档字段进行统计分析,类比Mysql中的 min(), max(), sum() 操作。Bucket Aggregation: 一些满足特定条件的文档的集合放置到一个桶里,每一个桶关联一个key,类比Mysql中的group by操作。Pipeline A

2022-07-04 20:47:57 181

原创 ElasticSearch 高级查询语法

ElasticSearch 高级查询语法Query DSL

2022-06-27 21:29:28 377

原创 ElasticSearch 初学

ElasticSearch 初学

2022-06-21 19:00:45 129

原创 Docker 部署 Nacos Spring Cloud

记录学习的每一小步Docker 部署 Nacos Spring Clouddocker pull Nacos 镜像及启动容器项目配置调整容器内访问ip调整生成jarDocker 部署 Nacos Spring Cloud项目搭建可以参考上一篇SpringCloud+Nacos 学习记录.docker pull Nacos 镜像及启动容器docker search nacosdocker pull docker.io/nacos/nacos-server:1.2.11.2.1 对应的版本号doc

2021-03-19 10:40:25 534

原创 SpringCloud+Nacos 学习记录

记录学习的每一小步Spring Cloud + Nacos配置中心创建一个Spring Cloud项目添加依赖配置bootstrap.properties通过 Spring Cloud`原生注解 @RefreshScope 实现配置自动更新启动 Nacos 后,访问 iP:8848/nacos 登录账号/密码都是nacos启动项目 根据接口展示获取到的值,项目运行期间在配置中心修改并发布新的配置。刷新接口就能看到自动更新后的值了。注册中心在配置中心的项目代码上添加依赖配置bootstrap.properti

2021-03-18 15:58:12 78

原创 SpringCloud 初识四:Hystrix服务容错保护

HystrixHystrix服务降级通过上一篇 <SpringCloud 初识三:Feign>我们了解了feign消费服务的方式.本章将介绍服务容错保护工具:SpringCloud Hystrix通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力;Spring Cloud Hystrix具备了服务降级、服务熔断、线程隔离、请求缓存、请求合并以及服务监控等强大功能。Hystrix服务降级断开与有问题的服务访问,并快速返回定义的失败内容

2020-06-02 15:05:11 68

原创 SpringCloud 初识三:Feign

Feign创建一个module.主类配置通过上一篇 <SpringCloud初识一:eureka与server>我们已经成功注册了服务提供者,接下来我们将学习如何消费这些服务Feign是一个声明式 web 服务调用服务,他使得一切 web 服务得以简化。我们只需要创建一个接口并用注解和 JAX-RS 注解的方式来配置它,即可完成对服务提供方的接口绑定。创建一个module.依赖如下 <dependencies> <dependen

2020-06-01 14:47:48 73

原创 SpringCloud 初识二:服务消费与Ribbon负载

服务消费通过上一篇 <SpringCloud初识一:eureka与server>我们已经成功注册了服务提供者,接下来我们将学习如何消费这些服务1. 首先在Maven项目下创建一个server-consumer项目2.创建完之后注入RestTemplate@Configurationpublic class RestTemplateConfig { @Bean public RestTemplate restTemplate() { return

2020-05-28 13:53:25 76

原创 SpringCloud 初识一:eureka与server

eurekaSpringCloud的注册中心,管理注册的服务1. 创建一个Maven项目2. 配置下pom<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</versio

2020-05-27 17:53:47 119

原创 Redis初识:基础

什么是RedisRedis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库。用途及使用场景用途解决应用服务器的cpu和内存压力减少io的读操作,减轻io的压力关系型数据库的扩展性不强,难以改变表结构使用场景数据高并发的读写海量数据的读写对扩展性要求高的数据实际用例token生成、session共享、分布式锁、自增id、验证码等。数据结构key-value型数据库,支持string、list、set、zset和hash类型数据

2020-05-13 16:51:53 68 1

空空如也

空空如也

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

TA关注的人

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