自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadPoolExctor线程池源码

主流程:主要是进行判断核心线程数以及是否要创建线程。核心方法就是创建线程调用addWork方法addWork方法创建线程,判断当前线程池状态、根据核心非核心线程是否超过对应的最大线程数来创建Work对象存放任务Runnable,并且Work类实现了Runnable重写了runrunWork()方法和getTask()方法。在addWork中调用了work的start方法,因为work实现runnable接口重写了run方法所以在run方法中调用了runWork方法ru

2024-09-11 15:36:13 139

原创 AQS的ReentrantLock源码

代表:重入锁、独占锁/共享锁、公平锁/非公平锁是JUC包中线程阻塞、阻塞队列、唤醒、尝试获取锁的一个框架AbstractQueuedSynchronizer是全称,是一个模板模式,一些线程同步公共的抽象类,里面有同步线程的类公共行为,比如:阻塞队列、加锁AQS主要思想尝试获取锁,如果获取失败就加入阻塞队列,如果有条件就先加入条件队列(如:ReentrantLock的创建多个newCondition()),条件队列中线程达到某个条件就会加入到阻塞队列,阻塞队列中的线程一直尝试获取锁。

2024-08-05 23:29:36 262

原创 JVM内存模型

比如在代码运行过程中 我们 new Student() 对象。

2024-07-28 10:54:34 307

原创 innodb底层原理和MySQL日志机制

MySQL8版本是没有查询缓存的,因为存入缓存其实是很耗费性能的,比如一张表,当查询语句查询完成以后那么就会将对应的数据和sql放到查询缓存中,但是如果有其他操作需要更新这个表,就会将查询缓存删除掉,重新等待其他查询查完以后再放到缓存中,等到更新又删除,但是表如果不是那种字典表不经常修改数据的话,其他表就要频繁删除缓存,基本就相当于用不上查询缓存。redolog有好几个,其实他们是循环写的,当一个文件写满了设置的最大存储量,就会换另外一个,形成一个闭环,当都写满了就会前边清理之前数据,后面写着新数据。

2024-01-23 23:34:05 900

原创 MySQL锁机制与优化实践

例如上图:事务100、200、300、select1同时开启事务,事务100 和 事务200分别test表中 id = 1、id = 6的age赋值,这时候事务300开始修改account中id=1的balance加500,并且事务100、200都没提交,300提交了事务。而上边修改事务没提交,其他事务来新增 数据 其中name就是lilei,按照道理来说可以成功,但是这个 新增操作却 需要锁等待,因为当前锁是锁的name=lilei 只要是操作name = lilei的数据的人都会锁等待。

2024-01-21 01:18:08 962

原创 MySQL事务原理与优化最佳实践

时还没提交,事务B再次查询id = 1 的数据,那么和第一次读取到的数据是一样的,即使第一次读取完以后,事务A修改了id = 1 的数据但是没有提交,事务B第二次读取数据依然是第一次读取的而不是修改过的数据,但是如果事务A提交了,那么事务B第二次查询就会导致和第一次不一致,这也就是不可重复读。事务A还没提交事务再次查询,这时候会和第一次查询一样,不管其他事务如何修改该数据并且提交,当前事务查询到的数据和第一次都是一致的。三条数据,事务A查询A表中数据,是三条数据,这时候事务A不提交。

2024-01-15 21:23:32 1095

原创 MySQL索引优化实战

对于这种varchar(255)的大字段可能会比较占用磁盘空间,可以稍微优化下,比如针对这个字段的前20个 字符建立索引,就是说,对这个字段里的每个值的前20个字符放在索引树里,类似于 KEY index(name(20),age,position)。此时你在where条件里搜索的时候,如果是根据name字段来搜索,那么此时就会先到索引树里根据name 字段的前20个字符去搜索,定位到之后前20个字符的前缀匹配的部分数据之后,再回到聚簇索引提取出来 完整的name字段值进行比对。

2024-01-12 17:59:01 1154

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

like KK%相当于=常量,%KK和%KK% 相当于范围自学笔记。

2024-01-07 01:14:03 540

原创 深入理解MySQL索引底层数据结构

深入理解MySQL索引底层数据结构

2024-01-01 22:30:14 1053

原创 minio启动时候设置分享地址为外网

docker run -p 19000:9000 -p 19090:9090 --name minio-test -d --restart=always -e "MINIO_ACCESS_KEY=账号" -e "MINIO_SECRET_KEY=密码" -e "MINIO_SERVER_URL=http://外网ip:19000" -v /virtual/minio/test/data:/data -v /virtual/minio/test/config:/root/.minio minio/minio

2023-11-12 04:47:51 1507

原创 IDEA画UML类图

PlantUML Integration 插件可以支持画图。

2022-12-17 16:54:50 2609 1

原创 设计模式七大原则

概述:每个类只负责一件事情好处:降低了一个类的代码复杂度。提高了维护性,一个功能发生变化不影响其他代码实际开发中,最能体现单一原则的其实是在方法中,一个方法基本都是具体实现一个功能。

2022-12-13 23:37:31 279

原创 docker中持久化nacos到mysql

使用的mysql为5.7 nacos为2.0.2网上查的说MySQL8 在nacos中需要改配置所以就用的MySQL5.7。

2022-11-20 02:44:33 226

原创 SpringCache

Spring Cache就是一个这个框架。它利用了AOP,实现了基于注解的缓存功能,并且进行了合理的抽象,业务代码不用关心底层是使用了什么缓存框架,只需要简单地加一个注解,就能实现缓存功能了。......

2022-08-12 15:26:18 537

原创 redission

Redisson的分布式的==RMapCache==象在基于RMap的前提下实现了==针对单个元素的淘汰机制==。以下是YAML格式的配置文件样本。AnyObject anyObjectA=AnyObject.builder().id("1").name("嬴政").age(22).address("秦朝").build();AnyObject anyObjectA=AnyObject.builder().id("1").name("嬴政").age(22).address("秦朝").build();..

2022-08-12 09:01:26 7553

原创 MybatisPlus常用API

SaveOrUpdateRemoveUpdateGetListPageCountqueryupdateDeleteSelect

2022-08-05 11:32:25 2144

原创 dubbo

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案Dubbo的协议是==长连接、单一链接==服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向添加中心添加自己提供的服务。服务消费者在启动时,向添加中心订阅自己所需的服务。添加中心返回服务提供者地址列表给消费者,如果有变更,添加中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。...

2022-08-05 11:26:28 325

原创 微信支付接口

微信支付。

2022-07-27 18:50:11 10730

原创 OAuth2认证

OAuth2是基于Token的认证协议,可以访问第三方的用户资源数据,而不需要密码例如B站使用微信登录,登录的时候区微信获取用户数据,是不需要用户在B站中输入用户的微信账号密码。

2022-07-27 17:53:46 798

原创 RabbitMQ高级

消费者方一共有三种失败策略第一种当接收到信息就会默认成功第二种当接收到以后如果失败会重复,如果超出最大次数还没有成功那么mq默认为已经成功第三种接收到以后如果超过最大次数就会将消息发送到指定的一个专门接收错误信息的队列。消息堆积问题生产者发送消息的速度超过了消费者处理消息的速度,并且队列中存储消息达到上限,之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。什么样的消息会变为死信消费者声明消费失败的消息过期消息队列满了之后还投递的消息。............

2022-07-21 22:41:22 964

原创 freemarker

freemarker是一个模板引擎是基于模板和要改变的数据,合并生成输出文本(HTML网页,电子邮件,配置文件,源代码)。是一个Java类库上边显示,在后端将数据查出来,会将数据封装起来,称之为数据模型model将一个前端的模板使用freemarker进行结合,就会生成一个页面。...............

2022-07-21 19:16:48 1208

原创 多线程的配置以及使用

多线程的配置以及使用。

2022-07-18 23:22:59 283

原创 Redis的配置

redis。

2022-07-18 23:21:41 195

原创 Feign的自动装配以及熔断降级

feign。

2022-07-18 23:18:22 632 1

原创 阿里云视频点播

啊啊啊。

2022-07-15 23:36:09 299

原创 七牛云的使用

注册平台账号省略

2022-07-15 22:37:15 1340

原创 MapStruct

MapStruct是一个代码生成器,在代码开发过程中,因为不想将自己数据库映射出来的那个实体类作为返回值,或者为了安全,想要将返回值字段名称修改为其他字段名称返回。但是都需要我们自己手动一个一个改的话就太麻烦了。这时候就可以利用MapStruct来解决。使用步骤:1.导入依赖2.准备好dto和pojo的实体类3.定义一个转换接口 4.在代码中进行调用转换接口引用上边第四个中的代码,等号前边的就是dto也就是需要返回给前端的代码,等号后面参数后面的records参数就是代表pojo类型的

2022-07-09 14:43:13 619

原创 Swagger+YApi

在工作时,编写玩代码以后,我们还要写一个接口文档,提供给前端或者需要调用这个接口的人看,但是手写文档实在是太费事了,所以就出现了Swgger框架,可以实现调用restFul风格的web服务,自动生成接口文档,还可以在线测试接口 原生的Swager被国人集成到了Spring Boot红中了,所以只需导入启动Swagger依赖第一步:第二步: 在配置文件中配置wagger然后启动就行,这里也看到了有一个base-package: com.itcast.swagger.controller

2022-07-07 23:53:42 1568

原创 分布式事务

A(Atomicity):原子性:事务的所有操作,要么全部成功,要么全部失败C(Consistency):一致性:要保证数据库内部完整性约束,声明性约束I(Isolation):隔离性:对同一资源操作的事务不能同时发生D(Durability):持久性:对数据库做的 一切修改将永久保存,不管是否出现故障微服务下单业务,在下单时会调用订单服务,创建订单并且写入数据库。然后订单服务调用账户服务和库存服务:•账户服务负责扣减用户余额•库存服务负责扣减商品库存 ​​​​但是如果订单微服务呵账户微服务都操作数据库

2022-07-03 00:51:49 623

原创 雪崩问题以及sentinel的使用

设置1s,如果c有1s没反应那么A就直接反应服务器异常,那么就不会让A一直等结果,这样就避免了牵连A错误如果到达了这个阈值那么就会调用降级方法,这个降级方法自己写一个返回的数值例如:服务器忙。。。 阈值自己定义。 然后我们可以自己设置时间,熔断以后再隔一段时间就会去访问,当发现可以用了那么就解除熔断,这时候就继续使用一个tomcat两个服务,每个服务单独一个线程,当服务C出错了也只是他单独那个线程出了问题不会影响业务1的线程使用sentinel,请求过来以后设置一次请求几个,避免一次性多个照成把服务器冲垮.

2022-06-30 19:56:21 617

原创 ElasticSearch搭建集群

集群(cluster):是一组拥有共同的cluster name的节点节点(node):集群中的单个Elasticearch实例,也就是集群中的单个Elasticearch服务器就是一个节点分片(shard): 也就是将一个索引分为不同的部分,就是分片。而分片又可以储存到不同的节点解决的问题就是当我们的数据量太大时一个ES服务器存储量有限问题,所以需要拆分N片让不同的节点存储解决问题:当我们不备份时,我们每个节点拥有一个分片,当某一个如果不能用了那么我们那个节点报错的数据也将不能用了,这样设计是肯定不

2022-06-30 01:03:16 880

原创 Mysql和Elasticsearch的数据同步

Elasticsearch的数据来自Mysql数据库中,所以当我们的MySQL发生改变时,Elasticsearch也要跟着改变,这时候我们的es的数据就要和mysql同步了 方案一: 方案二 方式三: 在这里使用的是第二种实现方案:使用MQ来写用来操控ES的代码(负责监听MQ队列) 用来操作MySQL的代码: 当然也是可以不使用注解来写,直接在配置文件中写队列绑定的交换机RabbitMQ_小白要变大牛的博客-CSDN博客RabbitMqhttps://blog.csdn.

2022-06-30 00:06:41 2351 5

原创 Feign远程调用和Getaway网关

在我们使用之前的RestTemplate远程调用的时候,是这样的: 它存在一个问题就是:Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。Feign: 代替消费者向提供者发送请求,并接受返回结果 openfeign: SpringCloud官方提供的组件 第一步:导入依赖 第二步:在启动类上添加注解开启Feign功能 创建Feign的客户端:也就是代表

2022-06-27 19:14:12 3848

原创 Nacos

Nacos注册中心,它可以替代Eureka,也是一个服务中心,但是她更好用,因为他是一个可视化界面,并且可以支持热更新,以及properties的配置也可以给这上边配置。所以nacos既是配置中心又是注册中心 第一步:给父工程中Alibaba开发环境,想要使用Alibaba的组件就要使用他的以来环境,引入依赖:给子工程导入nacos的依赖在子工程中配置注册中心的地址:注意:我们也知道springboot有一个约定大于配置的机制,因为小组件自己就是基于springboot开发的,所

2022-06-27 18:12:29 635

原创 ElasticSearch

ElasticSearch

2022-06-25 22:07:21 1396

原创 RabbitMQ

之前的请求都是同步调用虽然时效性较强,可以立即得到结果 但是同步调用存在以下问题: 1.耦合度高 2.性能和吞吐能力下降 3.有额外的资源消耗 4.有级联失败问题2、解决方案-RabbitMQ2.1、简介 MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的

2022-06-25 21:04:42 2102

原创 Docker

Doker是什么:当我们在开发环境开发完毕代码需要上传到测试环境却发现在我们开发环境代码运行的好好的,但是到了测试环境下bug频出,这是怎么回事呢?就是因为每个电脑的环境都是不一样的,所以可能会出现bug,那么这时候有没有可能,当我们写完代码了也没有问题在开发环境,那么上传的时候把代码所依赖我们电脑种的环境一并上传到测试环境内。然后测试环境直接就可以把这个运行,并且在测试环境不会依赖测试环境而是单独隔离起来依赖他自己所带的化境呢?这个时候就要使用Doker了,Doker是可以完成这个功能的。也就是将环境和

2022-06-21 14:43:19 491

原创 SpringCloud

Java微服务

2022-06-21 01:12:33 177

原创 MybatisPuls

MybatisPlus入门使用

2022-06-18 10:22:50 1919

原创 SSM步骤

在SSM中Spring属于全局管理,SpringMVC管理表现层,所以Spring是SpringMVC的父类,SpringMVC可以访问Spring的资源,而Spring不能访问SpringMVC的第一步:先配置@Configration声明这是Spring的配置类,然后再扫描包@ComponentScan("包名") , 再使用@Import导入jdbc的配置类和mybaties的配置类...

2022-05-18 00:30:19 129

mysql索引的讲解。。。

mysql索引的讲解。。。

2022-04-12

HashMap集合(高级).md

HashMap集合(高级).md

2022-04-12

空空如也

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

TA关注的人

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