自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

莫邪

学习笔记

  • 博客(102)
  • 资源 (1)
  • 收藏
  • 关注

原创 MyBatis 整合SpringBoot 启动源码分析

MyBatis 启动源码分析开启MyBatis 是通过@MapperScan@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public @interface MapperScan { String[] value() default {}; String[]

2021-03-22 16:01:59 273 3

原创 Spring创建Bean 中的三级缓存 解决循环依赖

Spring中创建Bean 的三级缓存

2021-03-01 02:35:32 544 1

原创 Spring 中 Bean 的生命周期

Spring 中 Bean 的生命周期Spring 最主要的的功能就是Bean的创建使用,所以了解Spring 中Bean 的生命周期是有必要的。在Spring中描述一个配置的Bean是使用 BeanDefinition ,所以对于Bean的初始化流程是扫描读取(XML 或者是注解)Bean的配置,然后在根据BeanDefinition 进行初始化Bean 放到 Spring 容器中。其中在读取配置BeanDefinition 的时候和创建Bean的实例对象的时候,Spring 提供很多的扩展方式参与到

2021-02-25 16:21:17 118 2

原创 MyBatis-Plus的简单使用案例

MyBatis-Plus的简单使用案例gradledependencies { implementation ('org.springframework.boot:spring-boot-starter-web') runtimeOnly 'mysql:mysql-connector-java' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude gro

2021-04-16 09:55:55 315 1

原创 Spring Cloud Fegin 和 Eurake 简单使用

Spring Cloud Fegin 简单使用

2021-04-13 19:50:02 272

原创 lintcode 625 数组划分

/** * 将一个没有经过排序的整数数组划分为 3 部分: * 1.第一部分中所有的值都 < low * 2.第二部分中所有的值都 >= low并且 <= high * 3.第三部分中所有的值都 > high * 返回任意一种可能的情况。 *输入: * [4,3,4,1,2,3,1,2] * 2 * 3 * 输出: * [1,1,2,3,2,3,4,4] * 解释: * [1,1,2,2,3,3,4,4] 也对, 但 [1,2,1,2,3,3,4,4] 不.

2021-03-27 17:50:14 165

原创 Spring 的事务传播行为

Spring 的事务传播行为TransactionDefinition 中定义了 7 种类型的事务传播行为,是 Spring 框架独有的事务增强特性,不属于的事务实际提供方数据库行为。REQUIRED : 如果当前没有事务,就新建一个事务,如果已经存在,则加入已经存在的事务REQUIRES_NEW :新建事务,如果当前已经有事务就挂起当前事务SUPPORTS :支持当前事务,如果没有事务就已非事务方式运行NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,就挂起MANDATORY

2021-02-21 17:27:00 134

原创 LockSupport 的简单介绍和AQS的简单说明

LockSupport 的简单介绍和AQS的简单说明

2021-02-02 16:47:02 266 3

原创 Mysql 事务和MVCC简单说明

Mysql 事务和MVCC简单说明

2021-01-26 17:05:21 110

原创 Spring Cloud Stream RocketMq 的使用

Spring Cloud Stream RocketMq 的使用RocketMq相关基本概念与安装docker-compose 安装RocketMq分布式事务相关说明RocketMq 可以发送事务消息RocketMq 事务消息的基本原理是注意:使用RocketMq 发送事务消息,这里主要解决的是生产者执行事务后确保消息有发布到Mq 并可以被消费。消费者按照正常消费就好,但是要确保消息多次消费的结果是要一致相等的(幂等性,不确保只消费一次),多次消费失败就会进入死信队列(可以按照正常消费信息一

2021-01-13 18:29:48 1995

原创 分布式事务相关说明

分布式事务相关说明一张图了解事务中的角色XA 是由X/Open组织提出的分布式事务的规范。 XA规范主要定义了(全局)事务管理强(RM)和(局 部)资源管理器(RM)之间的接口。事务的ACID 特性:A (原子性):整个事务中的所有操作要么全做,要么全不做C(一致性) :事务的执行必须保证系统的一致性,例如:A有200元,B有100元,一个事务里A成功转给B50元,只要事务执行成功了,那么最后A定是150元,B是150元I (隔离型) :事务和事务之间互不影响,一个事务的中间状态是不会被其他

2021-01-12 12:04:22 155

原创 平衡二叉树(AVL 树)

平衡二叉树(AVL 树)为什么会有这个平衡二叉树,因为二叉排序树,最极端的情况是变成单向的链表,这样二叉树的搜索速度就变差了,所以需要将二叉树平衡的分布定义:是一种二叉排序树(左结点比父结点小,右结点比父结点大),其中每一个结点的左子树和右子树的高度差最多等于1,结点的左子树深度减去结点右子树深度的值称为平衡因子BF(Balance Factor )。距离插入结点最近,且平衡因子的绝度之大于1的节点为根的子树,叫最小不平衡子树平衡二叉树的图解构建过程结点旁边的是平衡因子平衡因子大于1 进行右旋转

2021-01-09 18:19:45 237

原创 赫夫曼树定义原理说明

赫夫曼树定义原理说明从树(二叉树)中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上分支数目称做路径长度。树的路径长度是从树根(根节点)到每个结点的路径长度之和a图中,根节点到结点D的路径长度就为4,b图中根节点到D的路径长度为2.a图中树的路径长度:1+1+2+2+3+3+4+4=20,b图中树的路径长度:1+2+3+3+2+1+2+2=16假设有n个权值{w1,w2,…,wn},有n个结点的二叉树,每个结点带权wk,对应叶子的路径长度为lk,则其中带权路径长度WPL 最小的二叉树

2021-01-06 16:57:59 309

原创 遍历二叉树方法

遍历二叉树方法前序遍历:二叉树为空,空操作返回,否则先访问根节点,然后前序遍历左子树,在前序遍历右子树。下图的遍历顺序为:ABDGHCEIF中许遍历: 若树为空,则空操作返回,否则从根节点开始(不是先访问遍历根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。下图的遍历顺序是GDHBAEICF后序遍历: 树为空,空操作返回,否则先左到右先叶子后节点的方式遍历访问左右子树,最后访问根节点,下图遍历顺序:GHDBIEFCA层序遍历:树为空,空操作,否则从第一层(根节点)开始访问

2021-01-05 16:50:56 90

原创 docker-compose 安装RocketMq

docker-compose 安装RocketMq单Master模式:这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。注意:nameserver 和 broker 组成服务的叫做master,不是指其中的nameserver或brokersingle-master.yamlversion: "3.8"networks: default: external:

2021-01-04 09:26:32 572

原创 RocketMq相关基本概念与安装

RocketMq相关基本概念RocketMq: 一个低延迟、高可靠、可伸缩、易于使用的分布式消息中间件(消息队列),由Producer(负责生产消息)、Broker(Broker 负责存储消息)、Consumer( 负责消费消息) 。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。

2020-12-29 17:56:01 247

原创 Dubbo Nacos Sentinel 整合使用

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-12-26 18:25:35 500

原创 Sentinel服务限流及熔断的一些基本知识

Snetinel服务限流及熔断的一些基本知识服务限流:通过限制并发访问数据或者限制一段时间内(时间窗口内)允许处理的请求数量来保护系统,不会出现崩溃(或者一些其他的业务关系)。表现的形式是:牺牲一部分用户的可用性来维持系统的稳定性常用的限流算法计算器算法:指定的周期内累加访问次数,当访问次数达到设置的阈值时,触发限流策略(返回一个默认的结果,或者拒绝服务),进入下一个周期,累加次数清除。可以用于短信服务(或者一些免费服务)的次数上进行限制,比如每个用户在同一分钟内只能触发一定数量的短信服务这种

2020-12-23 02:34:16 695

原创 docker 运行 Sentinel Dashboard java程序

docker 运行 Sentinel Dashboard java程序上一篇指令相关解释当前的目录显示[root@VM-0-10-centos sentinel]# lltotal 24332-rw-r--r-- 1 root root 235 Dec 19 17:55 Dockerfile-rw-r--r-- 1 root root 24909355 Dec 19 19:05 sentinel-dashboard.jar[root@VM-0-10-centos sentinel]

2020-12-19 20:29:47 327 1

原创 改造 Sentinel Dashboard 将规则持久化到Nacos

改造 Sentinel Dashboard 将规则持久化到Nacos

2020-12-18 17:41:39 362 1

原创 KMP 模式匹配算法的简单说明

KMP 模式匹配算法的简单说明KMP 是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt 发明用于解决在一个主的字符串(主串)中搜索一个字符串(模式串)定位的算法。(也就是关键字搜索)定义:主串—S 模式串—T假设不使用KMP 模式匹配算法,我们用最简单的算法去解决 在S中搜索 T 的位置,结果就是使用暴力的方式将所有的情况进行遍历一遍//最差时间复杂度O(n*m) public static int simpleGetSTIndex(String s,Str

2020-12-17 15:32:39 162

原创 Sentinel 简单使用案例

Sentinel 的简单介绍与使用gradle 中的主要配置ext { set('springCloudAlibabaVersion', "2.2.1.RELEASE")}dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel'

2020-12-11 18:11:30 756

原创 Java 线程的相关知识概念

Java 线程的相关知识概念进程:代码在数据集合上的一次运行活动,是系统(操作系统)进行资源分配和调度的基本单位线程:线程是进程的一个执行单位,一个进程中至少有一个线程,进程中的多个线程共享进程中的资源,是cpu执行的基本单位,也是cpu分配(cpu资源)的基本单位程序计数器:一块内存区域,记录当前线程要执行的指令地址,并且是私有的。(因为Cpu是时间片的执行各个线程的代码,所以必须有一个程序计数器记录当前代码的执行情况,如果执行是native 方法,pc计数器记录的是undefined地址,只有执行

2020-12-07 09:20:27 95 1

原创 Nacos (Spring Alibb Cloud)的使用 整合dubbo

Nacos 配置中心的使用(一些比较坑的点也会说明)上一篇 Docker 安装 nacosnacos-dubbo-consume工程的gradle部分(想看类似的工程结构)这里的目的是告诉大家引用的是什么版本的nacosplugins { id 'org.springframework.boot' version '2.2.11.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE'}ext

2020-11-30 12:06:19 441

原创 Docker 安装 nacos

Docker 安装 nacos (单机)docker-compose安装启动内存空间不足,添加交换空间docker 的版本和 docker-compose 的版本[root@VM-0-10-centos ~]# docker-compose --versiondocker-compose version 1.27.4, build 40524192[root@VM-0-10-centos ~]# docker --versionDocker version 19.03.13, build 4

2020-11-16 19:02:20 374 2

原创 安装Docker Compose

基于Centos7 安装Docker Compose# 下载,需要安装其他版本的话,修改下面命令中的版本号即可sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予二进制文件可执行权限sudo chmod +x /usr/local/bin/docker-c

2020-11-14 18:18:11 133

原创 Centos 添加交换空间

基于Centos7 添加交换空间当RAM运行内存使用完毕或者不够的时候,可以使用交换空间(部分硬盘空间)缓解一下内存不足。#是否已启用交换功能,输出为空则没有 或者可以使用free -h 查看swap sudo swapon --show#创建1G的交换空间文件,如果不支持这个命令可以使用sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576sudo fallocate -l 1G /swapfile#设置交换文件的权限 确保只有root用

2020-11-14 16:49:54 344

原创 基于SpringCloud Alibaba dubbo 和 zookeeper的集群容错,负载均衡,服务降级简单使用

基于SpringCloud Alibaba dubbo 和 zookeeper的集群容错,负载均衡,服务降级简单使用内容基于Gradle 创建的工程上一篇 Dubbo 的简单使用 服务提供者application.propertiesdubbo.protocol.port=9001dubbo.protocol.name=dubbodubbo.application.name=sample-cloud-dubbo-providedubbo.application.id=sample-cloud

2020-11-11 18:13:31 304

原创 Java 分析 程序CPU 占用高的原因

Java 分析 程序CPU 占用高的原因背景:最近突然发现线上测程序长时间CPU 占用过高。内存确没有什么消耗。这种情况下可以排除死锁(一般死锁之后,如果不是自旋锁的话,CPU 占用都不会很高),也排除频繁GC(因为内存消耗正常)所以这个时候,我就想着如何分析Java 程序中哪条线程的CPU 使用率比较高先找到java 程序运行的pid (top c)用ps -mp 进程id(pid) -o THREAD,tid.time 分析java 程序的进程状态...

2020-11-10 18:22:50 2391

原创 Docker 安装 Mysql 并外部配置启动

Docker 安装 Mysql 并外部配置启动docker search mysql # 查询镜像docker pull mysql #下载镜像准备挂载的目录和配置文件mkdir /home/mysql/mkdir /home/mysql/custommkdir /home/mysql/custom/confmkdir /home/mysql/custom/datavim /home/mysql/custom/conf/my.cnfmy.cnf内容# Copyright (c) 2

2020-11-04 15:30:42 456

原创 基于docker 配置启动 zookeeper

基于docker 配置启动 zookeeper(单机)常用的配置说明# zookeeper 中每个tick的基准值tickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgement

2020-11-02 16:07:54 685

原创 docker 通过配置启动 redis

基于docker(版本19.03) 通过配置启动 redis(单机版本)redis.conf我的配置文件#服务启动监听的端口号port 6379#在后台运行(守护进程方式):默认no ,yes 会使配置启动失败#daemonize yes#设置打印级别loglevel debug#日志文件logfile "/data/redis.log"#持久化appendonly yes启动脚本docker run -p 6380:6379 --name customRedis -v /ho

2020-10-31 17:03:34 203

原创 Zookeeper 的简单介绍

关于Zookeeper 的简单入门说明Zookeeper版本3.5.6前言:这篇博客讲的是纯理论和一些简单入门的概念和说明。如果对Zookeeper已经有过了解的可以不用看这篇废话的的博文了用最简单的说法来描述Zookeeper的话:文件系统(类似)+监控(对于文件系统的增删改查的监控通知)Zookeeper 概念Java 编写的高性能分布式协调中间件(主要的功能,开发出来就是为了这么用的,当然也没说不能用于其他的方式,看具体的需求),协调各个服务进程的访问控制问题(类似多线程的同步之类的)。注意

2020-10-29 02:00:36 101

原创 Docker安装 Zookeeper单机部署

基于Docker version 19.03.13 安装 Zookeeperdocker安装下载对应的zookeeper镜像docker search zookeeper #查找对应的镜像docker pull zookeeper:latest#下载最新的zookeeper镜像#docker pull zookeeper:3.5.x 下载对应版本的的镜像单机部署#single zookeeper docker run -d -p:2182:2181 --name single-zooke

2020-10-28 17:16:22 1476

原创 编写一个SpringBoot 工程的start 模块

编写一个SpringBoot 工程的start 模块其实就是讲将打包的的jar工程(被依赖的工程)里的Bean的创建交给当前工程的Spring IOC,一般情况下Spring是不会扫描jar中的包的所以就无法将jar中的Bean 正常的加载到当前的Spring IOC中,但是SpringBoot 提供了一种方式在resources\META-INF\spring.factories 配置次jar的javaConfig 就可以实现将jar包中的Bean加载到当前Spring 环境中去工程目录结构配置

2020-10-20 18:29:23 843 4

原创 SpringBoot dubbo 的简单使用注解版本

SpringBoot dubbo 的简单使用注解版本关于工程的关系配置 可以看上一篇关于dubbo 的引用是 implementation group: 'org.apache.dubbo', name: 'dubbo-spring-boot-starter', version: '2.7.6'alibb-dubbo-mineserviceapi 模块 ---- 接口模块public interface AnnotationDemoService { String sayHello(

2020-10-17 18:19:25 424

原创 SpringBoot dubbo 的简单使用 xml 版本

SpringBoot dubbo 的简单使用 xml 版本使用gradle 创建父子工程dubbo 其实就是一个rpc 的远程调用的框架(主要功能),具体已经实现好了 ,并且dubbo 中实现了一些监控的功能alibb-cloud-study 父工程//setting.gradlerootProject.name = 'alibb-cloud-study'include 'alibb-dubbo-mineserviceapi'include 'alibb-dubbo-provider'in

2020-10-16 18:18:58 279

原创 Spring @ConfigurationProperties 和 @EnableConfigurationProperties 的使用

Spring @ConfigurationProperties 和 @EnableConfigurationProperties 的使用@ConfigurationProperties 的使用@Component@ConfigurationProperties("dev") // 将其和配置文件中的dev开头的属性进行关联public class DevConfig { private String user;//配置文件中的dev.user 的映射 public Strin

2020-10-13 11:11:23 345 1

原创 shell 常用查看log 的命令

shell 常用查看log 的命令用| 做分隔符,之后先将count:替换成 “”,然后用$2|$3|$4|$5 组成字符串 对相同的记录进行累计,最后遍历操作 awk -F '|' '{sub("count:","");arr[$2"|"$3"|"$4"|"$5] += $6}END{for(i in arr){print i,arr[i]}}' log.txtawk -F "|" BEGIN{SUM=0}{SUM+=$8}END{print sum}按分割后的第二列和第四列排序sor

2020-10-12 18:20:18 2774

原创 Spring Aop 的使用

Spring Aop 的使用pointcut 点的语法常用的execution(modifiners-pattern?ret-type-pattern declaring-type-pattern? name-param(param-patterm)throws-pattern?)? 表示:该参数可以出现一次或零次中文: execution(<修饰符>?<返回类型> <声明类型>?<方法名>(<参数>)<异常>?)举例:ex

2020-10-12 17:47:13 67

改造 Sentinel Dashboard 将规则持久化到Nacos

簇点链路 的流控的改造了一下

2020-12-21

空空如也

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

TA关注的人

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