自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap源码解析超详细

HashMap源码解析超详细

2023-04-12 15:35:40 1196 2

原创 Mysql(2)调优Explain工具详解以及实战演练

Mysql调优Explain工具详解以及实战演练Explain工具介绍Explain分析示例explain 两个变种explain中的列索引最佳实战索引使用总结:Mysql安装文档参考Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入

2021-03-07 19:22:48 2293 9

原创 SpringBoot使用线程池(ThreadPoolExecutor()和CompletableFuture)处理高并发 线程详解(2)

上一篇文章已经写到了实现线程的几种方式:Java异步任务 线程详解(1)一、说说为什么要用到线程池在处理高并发的时候,往往会考虑到使用多线程的方式来提高速率,但是我们常见的Thread01 extends ThreadRunable01 implements RunnableCallable01 implements Callable这三种方式是不建议直接使用的,具体是为什么呢?我举个列子大家应该就会懂了。比如说一个公司技术开发人员有10个人,为了提高效率,每次有一个新的需求就会去招聘一

2021-02-01 13:59:30 3068 2

原创 Kubernetes 部署RocketMQ高可用集群

RocketMQ的基础使用,以及线上会碰到的问题,以及高级用法在这里就不做过多的介绍了,如果是刚入门的同学,可以去看我之前的一篇文章。上面的 RocketMQ 多 Master 多 Slave-异步复制模式部署方案中用到的离线镜像制作方案更适合于本地修改定制的场景,如果单纯的只想把官方已有镜像不做修改的下载并推送到本地仓库,可以参考下面的方案。在网上有很多使用k8s部署rocketmq集群的文章,但是都不能很好的做到高可用集群的扩展和缩容,因此我在部署的时候自己整理了这样一份笔记,并且已经在生产环境使用。

2023-09-18 15:39:14 1241 3

原创 Netty(一)深入Hotspot源码与Linux内核理解NIO与Epoll

在Java中,提供了一些关于使用IO的API,可以供开发者来读写外部数据和文件,我们称这些API为Java IO。IO是Java中比较重要知识点,且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能,目前有三种IO共存;分别是BIO、NIO和AIO。学习完这三种IO之后会去学习Netty,本人也是抱着学习的目标来写这些文章的。如果有任何不对的地方还望指正Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。

2023-04-24 17:14:20 583 1

原创 VUE父子组件动态显示或隐藏

VUE父子组件动态显示或隐藏

2022-12-12 15:18:51 341

原创 Vue关闭eslint语法验证

Eslint只是一个校验语法规则的插件,对于我们日常开发没什么用,需要关闭,只需两步:第一步:打开vue.config.js,如果没有就自己新建一个,在里面添加以下代码: // 关闭eslint语法验证 lintOnSave:false, devServer:{ // 关闭eslint语法验证 overlay:{ warning:false, errors:false } },第二步打开.eslintrc文件,在里面rules添加以下

2022-04-22 14:55:22 2086

原创 RocketMQ使用详解以及高并发系统实践问题

RocketMQ一、MQ介绍1、什么是MQ?为什么要用MQ?2、MQ的优缺点3、几大MQ产品特点比较二、RocketMQ快速实战三、RocketMQ集群架构1、RocketMQ集群中的各个角色RocketMQ集群搭建、四、RocketMQ的消息样例1 、基本样例2、顺序消息3、 广播消息4、 延迟消息5、批量消息6、过滤消息7、事务消息8、ACL权限控制五、SpringBoot整合RocketMQ1、我们创建一个maven工程,引入关键依赖:2、总结:六、SpringCloudStream整合RocketM

2022-03-08 23:08:47 2476

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

MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在 最常用的存储引擎是 InnoDB,它从 My

2022-02-08 10:56:14 158

原创 并发锁机制之深入理解synchronized(四)

synchronized基础篇Java共享内存模型带来的线程安全问题思考: 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗? 不确定public class SyncDemo { private static int counter = 0; public static void increment() { counter++; } public static void decrement()

2022-01-04 16:36:17 535

原创 并发编程之深入理解CAS(三)

并发编程之深入理解CAS什么是 CASCAS应用CAS源码分析lock前缀指令的作用CAS缺陷ABA问题及其解决方案(狸猫换太子)ABA问题的解决方案补充:什么是 CASCAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。CAS 的逻辑用伪代码描述如下:if (value == expectedValue) { value = newValue;}以上伪代码描述了一个由比较

2021-12-30 11:42:34 128

原创 并发编程之CPU缓存架构&缓存一致性协议详解(二)

并发编程之CPU缓存架构&缓存一致性协议详解CPU高速缓存(Cache Memory)CPU高速缓存在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就是局部性原理。多CPU多核缓存架构缓存一致性(Cache coherence)缓存一致性的要求写传播(Write Propagation)事务串行化(Transaction Serialization)一致性机制(Coherence mechanisms)总线仲裁机制总线锁定缓存锁定总线窥探(Bus Snooping

2021-12-15 11:02:02 205

原创 并发编程之深入理解JMM和并发三大特性(一)

前提:JMM属于整个Java并发编程中最难的部分也是最重要的部分(JAVA多线程通信模型——共享内存模型),涉及的理论知识比较多,我会从三个维度去分析:JAVA层面JVM层面硬件层面这块如何学?这部分理解并发的三大特性,JMM工作内存和主内存关系,知道多线程之间如何通信的,掌握volatile能保证可见性和有序性,CAS就可以了,后续JVM层面和硬件层面的分析,基础比较薄弱的可以先跳过,从后面的Java锁机制开始学,掌握常用的并发工具类,并发容器之后再来看JMM这块。并发和并行目标都是最

2021-11-17 17:07:14 215 1

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

多级缓存架构缓存设计缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个:第一, 自身业务代码或者数据出现问题。第二, 一些恶意攻击、 爬虫等造成大量空命中。缓存穿透问题解决方案:缓存空对象String get(String key) { // 从缓存中获取数据 Stri

2021-08-23 15:36:30 169 1

原创 01-Redis核心数据结构和高性能原理

Redis核心数据结构和高性能原理Redis安装核心数据结构以及用法String结构字符串常用操作原子加减应用场景Hash结构Hash常用操作Hash应用场景Hash结构优缺点List结构List常用操作List应用场景Set结构Set常用操作Set运算操作Set应用场景ZSet有序集合结构ZSet常用操作Zset集合操作Zset应用场景Redis的单线程和高性能重要的事说:每一个字都是拾光手敲的,希望你可以一字一字的去阅读和理解拾光在写博客时的思想。希望你有所收获,谢谢!这是第一篇关于redis的文章

2021-07-17 16:53:40 1207 4

原创 02-内存模型深度剖析

内存模型深度剖析JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型元空间的JVM参数有两个:JDK体系结构其实这个图的话,我觉得要讲的东西很多,但是又不知道怎么讲,因为每一个JAVA程序员入门的时候,应该都会看到这个图。首先说一下他们之间的关系吧。JDK>JRE>JVM(>的意思是包含的关系)JDK就是包括我们的java运行环境,还有java的一些api和工具。如果要编写java代码,就得安装JDKJRE就是我们运行java代码的环境JVM就是由c++创建的

2021-06-16 22:45:20 424 6

原创 01-从JDK源码彻底剖析JVM类加载机制

一、类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。通过Java命令执行代码的大体流程如下:解释一下上图,我们的JAVA程序在启动的时候,首先由java.exe文件启动,底层调用jvm.dll(可以看成是一个JAR包),由c++创建一个JVM,并且会由c++创建一个引导类加载器(BootstrapLoader),然后调用java代码执行Launcher里面的getLauncher方法,会分别去加载扩展类加载器(ExtClassLo

2021-06-02 10:03:48 203 3

原创 SpringBoot引入第三方SDK以及打包

SpringBoot引入第三方SDK以及打包首先在自己工程引入jar包pom文件引入首先在自己工程引入jar包项目结构如下引入完成以后就可以在自己pom文件引入了pom文件引入 <dependency> <groupId>com.duoduo</groupId> <artifactId>fadada</artifactId> <version>1.0&

2021-04-28 10:41:24 3440

原创 Mysql(5)索引优化实战二

Mysql索引优化实战二一、分页查询优化1.根据自增且连续的主键排序的分页查询2、根据非主键字段排序的分页查询二、Join关联查询优化1、 嵌套循环连接 Nested-Loop Join(NLJ) 算法2、 基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法in和exsits优化count(*)查询优化一、分页查询优化建表语句:1 示例表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT,

2021-03-08 22:40:55 225 1

原创 Mysql(4) 索引优化实战一

Mysql索引优化实战一举一些大家不容易理解的综合例子:常见sql深入优化优化总结:Using filesort文件排序原理详解索引设计原则数据表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `positio

2021-03-07 22:46:52 254

原创 Mysql (3) 一条sql在Mysql中是如何执行的以及bin-log日志对数据库数据备份和数据恢复

Mysql (3) 一条sql在Mysql中是如何执行的以及bin-log日志对数据库数据备份和数据恢复MySQL的内部组件结构Server层连接器、查询缓存、分析器、优化器、执行器bin-log归档MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存

2021-03-07 21:54:51 525 2

原创 Mysql(1)深入理解Mysql索引底层数据结构与算法

深入理解Mysql索引底层数据结构与算法索引的本质什么是索引?它有什么作用?为什么Mysql使用B+树存储数据呢?二叉树红黑树B-TreeB+Tree(B-Tree变种)MyISAM索引文件和数据文件是分离的(非聚集)InnoDB索引实现(聚集)首先说一下,这是我写的第一篇关于mysql的文章,如果有任何不对的地方欢迎留言指正。索引的本质什么是索引?它有什么作用?这里先解释一下什么是索引,采用mysql官网的一句话:索引是帮助MySQL高效获取数据的排好序的数据结构解释一下:排好序:因为my

2021-03-04 17:14:26 274 3

原创 JDK源码JVM1 JVM类加载机制与双亲委派机制

JDK源码JVM1 JVM类加载机制与双亲委派机制通过Java命令执行代码的大体流程如下:类加载器和双亲委派机制双亲委派机制为什么要设计双亲委派机制?自定义类加载打破双亲委派机制当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。通过Java命令执行代码的大体流程如下:由上图可以看出,首先是由第一部分,在windos系统下,通过jvm.dll创建java虚拟机,并且创建一个引导类加载器(Bootstrap ClassLoad启动类加载器)其中最重

2021-02-23 15:12:51 146

原创 Java异步任务 线程详解(1)

Java异步任务 线程详解(1)1.创建线程的四种方式2.四种方法对比废话不多说,直接上代码。1.创建线程的四种方式写main方法public static void main(String[] args) throws ExecutionException, InterruptedException { System.out.println("main......start....."); Thread thread = new Thread01();

2020-12-05 16:31:58 671

原创 Macbook更新完Big Sur以后java启动项目出错,重新配置jdk环境变量

Macbook更新完Big Sur以后java启动项目出错我在更新完了系统以后启动nacos的时候,发现java路径找不到,所以我重新安装了jdkJava8安装包点此下载Java8安装包提取码:jg8b重新安装完成以后使用:echo $JAVA_HOME显示的java路径为:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home这里就是错误问题所在,我在启动的时候提示找不到路径发现是路径错误,这个文件夹有一个空格转义,

2020-11-17 10:11:27 2776

原创 Java中BigDecimal工具类(支持空值运算版)

Java中BigDecimal工具类 支持空值运算版前言一.工具类支持功能二.工具类源码三.如何使用总结前言需要计算的场景绕不过去会使用BigDecimal类,可频繁的判空让代码可读性下降也使代码冗余度增高,不判空又容易报空指针异常,而且有些场景下的计算,结果为空时需要返回null,所以也不可以将将BigDecimal类型的值都初始化为0,会让运算结果产生歧义。为解决上述痛点,于是整理了一个工具类供所有项目一起使用。一.工具类支持功能加减乘除、累加、倍数运算。Integer、Long、Float

2020-11-05 09:55:02 500

原创 IntelliJ IDEA使用插件JRebel热部署(Mac和Windos都可以使用)

IntelliJ IDEA使用插件JRebel热部署(Mac和Windos都可以使用一、IDEA下载JRebel插件二、下载一个反向代理软件三、激活JRebel四、设置JRebel插件一、IDEA下载JRebel插件在Preference -> Plugins处搜索下载后重启IDEA即可。下载后一定要重启二、下载一个反向代理软件访问此 下载地址windos用户下载 下载完双击就可以,先不要关闭Mac用户下载注意: Mac用户使用Safari下载,不要用Chrome,否则下载之后

2020-10-22 15:20:02 2734 4

原创 Spring源码缺少cglib,objenesis的jar包问题分析及下载

Spring源码缺少cglib,objenesis的jar包问题分析及下载问题错误分析问题解决jar包源来问题本人最近在阅读spring源码的时候,下载下来以后,使用gradle编译发现以下错误错误分析cglib 和 obienesis 的编译错误解决为了避免第三方 class的冲突,Spring把最新的 cglib和 objenesis重新打包( repack)了,它并没有在源码里提供这部分的代码,而是直接将其放在 jar 包当中 ,代码后出现编译错误。 那么为了画过编译,我们要把缺失的

2020-10-19 15:03:22 517

原创 List存储对象根据某个属性去重的三种方法

1、废话不多说直接上代码,第一种采取的是重写hashCode和equals的方法,后面两种都是使用java8新特性2、对象代码:@Datapublic class ImportResume { private Integer age; private String phone; //用于去重 @Override public boolean equals(Object object){ ImportResume importResume=(Imp

2020-09-21 17:38:18 4119 2

原创 SpringBoot默认tomcat上传文件大小问题(亲测可用)

SpringBoot默认tomcat上传文件大小问题(亲测可用1、在使用Spring Boot 上传文件报超出自带tomacat限制大小(默认1M)异常2、解决办法1.在配置文件(application.yml)加入如下代码2.在启动类里面加如下配置,并且在类上面添加@Configuration1、在使用Spring Boot 上传文件报超出自带tomacat限制大小(默认1M)异常Caused by: org.apache.tomcat.util.http.fileupload.FileUploadB

2020-09-21 13:40:13 3551

原创 分布式锁Redisson的使用,看门狗机制

分布式锁Redisson的使用,看门狗机制Redisson简介Redisson使用项目使用以及说明Redisson简介Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore

2020-07-26 11:32:27 18847 14

原创 Mac安装Parallels Desktop 15 亲测可用

Mac安装Parallels Desktop 15自己使用mac安装虚拟机的时候碰到了好多的麻烦,特此整理了Parallels Desktop 15的安装包。使用百度网盘下载:百度网盘下载地址提取码:xvn4直接安装就可以。在安装的事不要更新,使用现有的就可以了,麻烦记得点赞关注我...

2020-07-13 14:52:15 2448 1

原创 RabbitMQ入门学习以及包含源码 使用Mac

在 rabitMQ 中消费者是一定要到某个消息队列中去获取消息的

2020-07-09 11:08:46 163

原创 Vue使用moment格式化日期

Vue使用moment格式化日期在平常的开发中,后端响应的日期可能不是标准的格式,我们可以用monment进行格式化1.打开终端进行安装momentnpm install moment --save2.在vue项目当中main.js中引用import moment from 'moment'3.使用全局过滤器进行日期格式化Vue.use(require('vue-moment'));Vue.prototype.moment = momentVue.filter('dateFormat'

2020-06-23 12:49:35 2004

原创 Vue发送get和post请求,Springboot后端接受数据

Vue发送get和post请求,Springboot后端接受数据发送Get请求get请求不携带参数Get请求携带参数Post请求发送Get请求get请求不携带参数前端代码: this.$http({ url: this.$http.adornUrl('/verification/abnormalrecord/list'), method: 'get' }).then(({data}) => { if (d

2020-06-10 16:14:42 9216

原创 Git-学习-从基础到实战-宇宙最详细

Git-学习-从基础到实战-宇宙最详细Git 简介:Git 介绍:Git和Svn区别工作原理 / 流程:什么是分布式版本控制系统?Git安装Git 工作区、暂存区和版本库Git 创建仓库使用git init介绍使用git status 命令使用git add使用git commit版本回退Git 远程仓库创建远程仓库将本地代码提交到远程仓库从远程仓库clone代码Git 分支管理首先,我们创建dev分支,然后切换到dev分支:合并分支删除分支分支冲突解决Git查看提交历史Git命令大全Git 简介:Gi

2020-06-07 22:28:01 267

转载 毕业后,很少有人做梦

毕业后,很少有人做梦你从什么时候开始发现生活的真相?从四年前在高考考场长舒一口气合上笔盖,再到脱下学士服,拿起最初的那只行李箱,关上424寝室的门,我们用了四年的时间。请仔细阅读这一篇文章...

2020-06-06 16:48:51 107

原创 Springboot使用Nacos做配置中心)

Springboot使用Nacos做配置中心环境项目配置高级使用配置dev,prod,test环境微服务之间互相隔离配置每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod环境jdk: 1.8maven: 3.6.3Idea项目配置新建一个Springboot项目,用Idea自动创建就可以,下面开始使用。引入SpringcloudAlibaba依赖<dependencyManagement> <dependencies>

2020-05-27 18:31:30 3127 4

原创 Spring-Cloud-Alibaba使用Nacos和Feign实现服务注册发现和远程接口调用

Spring-Cloud-Alibaba使用Nacos和Feign实现服务注册发现和远程调用Spring-Cloud-Alibaba简介主要功能组件项目使用(首先使用Idea创建两个Spring-Boot项目)启动Nacos注册中心在项目的pom.xml文件中引入dependencyManagement依赖在两个项目当中引入Nacos的依赖在项目的启动类加上注解在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址(**

2020-05-24 15:52:01 1405 1

原创 Swagger2在SpringBoot报NumberFormatException:

Swagger2在SpringBoot报NumberFormatException: For input string: ""首先我看到这个错误的时候氏一脸懵逼的,不知道是哪出错了,一刷新页面就会报这个错,最后没办法根据提示进行Debug然后我重新启动代码,并且打了断点,看到了错误原因首先我看到这个错误的时候氏一脸懵逼的,不知道是哪出错了,一刷新页面就会报这个错,最后没办法根据提示进行Debug然后我重新启动代码,并且打了断点,看到了错误原因最后找到,修改如下,就好了public BusResu

2020-05-18 17:59:15 389

空空如也

空空如也

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

TA关注的人

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