自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Homebrew安装慢,总是失败如何解决

如果使用Homebrew(https://brew.sh)官网提供的命令来进行下载的,是从github上进行下载,没有翻墙工具的话会比较慢,甚至可能会下载失败,所以我们用码云上面进行下载。M1芯片需要进行修改,M1的默认安装路径为 /opt/homebrew ,但是指令给默认配置的环境变量则是/usr/local/的路径,所以这里需要我们修改环境变量。如果是intel的芯片,那么安装路径就是 /usr/local,环境变量就没啥问题。随便选择一个国内的源,这里我就选择清华的。

2022-11-12 15:29:34 2443 1

原创 windows环境下msi方式安装Mysql

一:下载mysql MSI文件链接:https://pan.baidu.com/s/1bE6SHVejvwRvwMSU_fLPyw提取码:luoy二、安装MySQL1、打开下载好的mysql-installer-community-8.0.16.0.msi文件,选择Custom,然后点击Next。2.选择product,直接next3.选择安装目录以及数据存储的目录4.可能会设置Microsoft Visual,设置即可 下一步5.安装6.安装完成之后点击next7.配置端

2022-06-12 11:17:36 1982 2

原创 java并发与多线程(三)--线程池原理解析

原文链接:原文一:简述本文基于java11对线程池的参数,执行任务的流程以及原理进行解析,并且对线程池关键性源码进行了分析。二:线程池的参数1. corePoolSize: 用于定于线程池的核心线程数量2. maximumPoolSize: 用于定义线程的最大线程数3. keepAliveTime: 非核心线程的空闲时间4. timeUnit: 空闲时间单位5. blockingQueue: 阻塞队列6. threadFactory: 线程工厂,可以用于定义线程的名称,线程的优先级,是否

2022-01-01 23:08:26 374

原创 java并发与多线程(二)--concurrentHashMap源码分析

一:简述本文基于jdk1.8对concurrentHashMap的源码进行分析,以put()方法为入口对concurrentHashMap的扩容机制,size计算方式等代码进行分析二:concurrentHashMap成员变量//最大容量private static final int MAXIMUM_CAPACITY = 1 << 30;//默认容量大小private static final int DEFAULT_CAPACITY = 16;//负载因子private

2022-01-01 23:01:06 481

原创 Java并发与多线程(一)--线程基础知识

转载地址:原文一:简述Java并发与多线程专栏的第一篇文章,主要介绍java多线程的一些基础知识。二:java的线程状态public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread

2022-01-01 22:52:14 284

原创 mybatis中一个查询方法的执行流程

一:简述本文通过分析mybatis的源码来展示mybatis是如何帮我们实现一个查询的方法的。二:时序图三:源码分析 UserMapper mapper = sqlSession.getMapper(UserMapper.class);注:这里获取的是一个代理对象,而我们一般从Spring容器中获取的也是同样的代理对象,只不过是交给Spring管理了而已)1.获取代理类MappersqlSession的getMapper()方法会先调用configuration的getMap

2021-12-22 23:33:11 1057

原创 Mybatis源码解析之配置文件的解析

一:简述:本篇文章主要用于介绍关于mybatis配置解析的部分代码。二:时序图三:代码分析因为构建SqlSessionFactory需要读取用户的配置来构建,所以解析配置文件必然是在构建SqlSessionFactory之前进行的,所以这部分源码的入口应该是在SqlSessionFactoryBuilder中的build()方法。 //开始对读取的配置文件进行解析 XMLConfigBuilder parser = new XMLConfigBuilder(inputStr

2021-12-09 00:28:42 234

原创 mybatis插件自定义及原理

一:概述mybatis插件可以帮我们对mybatis的四大对象进行拦截处理,要使用好插件,我们需要先了解四大对象的作用,这样才能根据需求定义插件。二:mybatis的四大对象1.Executor:负责调用StatementHandler操作数据库,以及二级缓存的处理(使用CachingExecutor进行包装)定义插件可以修改原生sql2.StatementHandler:负责sql脚本的执行以及mybatis一级缓存的处理,定义插件可以修改原生的sql,例如分页插件,数据权限等3.Param

2021-12-04 23:56:49 578

原创 数据库连接池原理解析

一:数据库连接获取、释放流程图1、获取连接流程2.释放连接流程二:mybatis连接池源码分析在mybatis中关于对数据库连接处理的代码是在datasource包下,而连接池相关的代码的处理主要是在PooledDataSource类中1.获取数据库连接代码解析private PooledConnection popConnection(String username, String password) throws SQLException { boolean countedWai

2021-12-02 00:25:06 1457

原创 rocketmq--消息的可靠性

一 前言上一篇文章,小七已经讲解了rocketmq的一些简单的用法,然而在实际的生产环境中,并不是简单的使用api发送消息、消费消息就行了,很多时候我们都需要考虑消息的可靠性以及幂等性等一系列问题。今天我们就来聊一聊如何保证消息的可靠发送以及可靠消费。二:什么地方可能会出现消息的丢失我们首先分析消息发布流程的几个阶段,分析哪些阶段可能存在消息丢失的可能,采用合理的办法避免丢失,对症下药,这样我们就能最大程度的保证消息的可靠性投递了。消息发送的简图:消息可能丢失的阶段:1.当生产者向mq的bro

2021-05-29 20:03:13 277

原创 Spring--绘制DI时序图

一:什么是DI

2021-04-21 21:29:37 540

原创 spring--绘制IoC时序图

一:什么是IoCIoC:Inversion of Control,控制反转的意思,获得依赖对象的过程由自身管理变为了由IOC容器主动注入,由容器来管理对象的生命周期。二:时序图

2021-04-19 21:24:33 439

原创 LinkedList源码分析(jdk1.8)

一:LinkedList的继承体系LinkedList和ArrayList一样实现了List,Serializable,Cloneable接口,另外它还继承了AbstractSequentialList类和Deque接口。AbstractSequentialList类:在遍历LinkedList的时候,官方更推荐使用顺序访问,也就是使用我们的迭代器。因为LinkedList底层是通过一个双向链表来实现的,虽然LinkedList也提供了通过索引查询的方法,但是底层的实现是:每次调用get(int in

2021-04-17 14:10:55 96

原创 ArrayList源码分析

一:ArrayList的继承体系ArrayList继承自AbstractList并实现了List,RandomAccess, Cloneable, Serializable接口等接口注:1.RandomAccess是一个标记接口,用来表明其支持快速(通常是固定时间)随机访问2.Cloneable接口也是一个标记接口,用来表示其支持clone3.Serializable接口,标记接口,表示支持序列化二:ArrayList的成员变量分析 // 默认初始化大小 private stat

2021-03-28 17:42:25 100

原创 rocketmq--springboot整合rocketmq

文章转载自SpringBoot轻松整合RocketMq 作者:消灭知识盲区前言使用Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以。1.消息队列是什么?消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。2.RocketMq是什么?RocketMQ 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式的特点。它

2021-03-27 14:10:11 204

原创 SpringBoot--手把手教你自定义一个starter

前言开发过程中,经常会有一些独立于业务之外的配置模块。如果我们将这些可独立于业务代码之外的功能配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配,那么将会简化我们的开发.今天就带大家一起自定义一个属于自己的starter.step1:创建一个maven工程,引入相关依赖创建一个maven工程(注意项目名称应该为xxx-spring-boot-starter,例如example-spring-boot-starter),并引入相关的依赖

2021-03-21 12:28:58 564 2

原创 Spring--如何在bean初始化、销毁时执行某些操作呢

前言本篇文章基于spring5以及spring注解编程方式一:利用@Bean注解定义bean的时候指定initMethod和destroyMethod属性public class Cat { public void init(){ System.out.println("bean初始化"); } public void destroy(){ System.out.println("bean销毁"); }}@Configurat

2021-03-20 16:49:09 285

原创 Nacos源码分析之Raft协议(三)----数据的同步

前言上两篇文章主要分析了leader选举以及发送心跳包的代码,如果还有疑问的小伙伴,可以点击传送门再去温习一下。leader选举源码分析leader发送心跳源码分析接下来进入正题,今天我们主要是分析上篇文章没有说完的数据同步相关的代码。Nacos数据一致性代码分析...

2020-10-24 11:01:57 884

原创 Nacos源码分析之Raft协议(二)----心跳包发送

上篇文章

2020-10-12 23:16:28 737

原创 Nacos源码分析之Raft协议(一)----Leader选举

Nacos一致性协议分布式一致性协议有很多,例如Paxos协议,Zab协议,Raft协议,而Nacos采用的是Distro协议和Raft协议。对于非临时数据,Nacos采用的是Raft协议,而临时数据Nacos采用的是Distro协议。简单说一下Distro,Distro协议被定位为临时数据的一致性协议:该类型协议不需要把数据存储到磁盘或者数据库,因为临时数据通常和服务器保持一个session会话,该会话只要存在,数据就不会丢失。本篇文章主要针对于CP的Raft算法。Raft协议Raft协议是一种强一

2020-10-11 15:45:00 1755 1

空空如也

空空如也

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

TA关注的人

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