自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(609)
  • 资源 (3)
  • 收藏
  • 关注

原创 干就完了

平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

2021-06-16 15:33:50 84

转载 Java线程池ThreadPoolExecutor使用和分析(一)

相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理 线程池是可以控制线程创建、释放,并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡。 以下分析基于 JDK1.7 以下是本文的目录大纲:...

2022-03-24 15:59:50 621

原创 Spring-TX-Propagation-事务传播行为

Spring-Tx传播行为propagation提交异常捕获后异常required (rollbackOnly)do nothing / commitsetRollbackOnly / rollbacksetRollbackOnly / rollbackrequired_new (isNewTransaction)commit / commitrollback / rollbackrollback / commitcommit / rollbackn

2022-01-18 21:01:35 270

原创 菜单目录-行转树

listProjectVOSForFeishu: @Override public List<DashMenuTreeNodeVO> listProjectVOSForFeishu() { List<ProjectDashboardTabChartVO> projectDashboardTabChartVOList = dashboardMapper.listProjectDashboardTabChart(true); if (.

2022-01-06 12:48:09 660

原创 MySQL 执行计划

MySQL执行计划idselect_type materialized : 结果集被物化成临时表type const : 使用主键或唯一索引 ref : 普通索引 + 回表 或 const is null 或 联合索引最左匹配 ref_or_null : ref or is null range : 范围查找 index : 遍历普通索引,不需要回表 all : 嗯呢 eq_ref : 连表查询中被驱动表使用主键po...

2021-12-02 11:46:21 711

原创 《Redis设计与实现》

《Redis设计与实现》 第二章 简单动态字符串 2.1 SDS的定义 SDS(Simple Dynamic String) len 、 free 、 buf len = 5 , free = 5 , buf = Redis\0_____ , buf.length = len + free + 1 2.2 SDS与C字符串的区别 2.2.1 常数复杂度获取字符串长度...

2021-11-24 20:08:19 792

原创 日志打印 - 命令模式、模版方法模式

1. logback-spring.xml <appender name="monitorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>%msg%n</pattern> </encoder> <file>${logging.fil

2021-11-16 10:48:10 440

原创 Spring框架下利用AbstractRoutingDataSource配置多数据源

首先看Druid数据库多数据源DemoSpring的多数据源支持---AbstractRoutingDataSource,AbstractRoutingDataSource定义了抽象的determineCurrentLookupKey方法,子类实现此方法,来确定要使用的数据源public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean { protec

2021-07-22 22:13:56 906

原创 SpringBoot 整合 Redis

1. 引入SpringBoot-Redis POM<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-d

2021-07-05 21:15:18 379

原创 spring-retry

@EnableRetry@Retryable@Backoff@Recover

2021-06-11 14:46:00 144 1

原创 排查定时任务为什么不执行

首先看源码注释/** * Annotation that marks a method to be scheduled. Exactly one of the * {@link #cron}, {@link #fixedDelay}, or {@link #fixedRate} attributes must be * specified. * * 将一个方法标记为定时任务的注解。必须明确地指定cron,fixedDelay或fixedRate属性 * * * <p>

2021-06-04 22:20:56 415

转载 55 Read Committed隔离级别是如何基于ReadView机制实现的?

今天我们来给大家讲一下,基于之前我们说的ReadView机制是如何实现Read Committed隔离级别 的,那么当然了,首先就是要先做一些简单的回顾。这个RC隔离级别,实际上意思就是说你事务运行期间,只要别的事务修改数据还提交了,你就是可以读 到人家修改的数据的,所以是会发生不可重复读的问题,包括幻读的问题,都会有的。那么所谓的ReadView机制,之前我们讲过,他是基于undo log版本链条实现的一套读视图机制,他意 思就是说你事务生成一个ReadView,然后呢,如果是你事务自己更新的数据

2021-05-14 18:29:17 216 1

转载 54 基于undo log多版本链条实现的ReadView机制,到底是什么?

接着上次我们讲过的undo log多版本链条,我们来讲讲这个基于undo log多版本链条实现的ReadView 机制把这个机制讲明白了,下一次我们再正式讲解RC和RR隔离级别下的MVCC多版本并发控制机制,就很容 易理解了。 这个ReadView呢,简单来说,就是你执行一个事务的时候,就给你生成一个ReadView,里面比较关键 的东西有4个 一个是m_ids,这个就是说此时有哪些事务在MySQL里执行还没提交的; 一个是min_trx_id,就是m_ids里最小的值; 一个是ma

2021-05-14 17:22:03 167

转载 53 理解MVCC机制的前奏:undo log版本链是个什么东西?

今天我们正式开始切入讲解MySQL中多个事务并发执行时的隔离到底是怎么做的,因为我们知道默认是 RR隔离级别,也就是说脏写、脏读、不可重复读、幻读,都不会发生,每个事务执行的时候,跟 别的事务压根儿就没关系,甭管你别的事务怎么更新和插入,我查到的值都是不变的,是一致的! 但是这到底是怎么做到的呢?这就是由经典的MVCC多版本并发控制机制做到的,但是讲解这个MVCC机制之前,我们还得先讲讲 undo log版本链的故事,这是一个前奏,了解了这个机制,大家才能更好的理解MVCC机制。简单来说呢,我们

2021-05-14 15:56:20 237

转载 38 案例实战:数据库无法连接故障的定位,Too many connections

今天要给大家分析另外一个真实的大家都经常会碰到的数据库生产故障,就是数据库无法连接的问题 大家会看到的异常信息往往是“ERROR 1040(HY000): Too many connections”,这个时候就是说数据库的连接池里已经有太多的连接了,不能再跟你建立新的连接了! 不知道大家是否还记得我们最早讲过的数据库的整体架构原理,数据库自己其实是有一个连接池的,你的每个系统部 署在一台机器上的时候,你那台机器上部署的系统实例/服务实例自己也是有一个连接池的,你的系统每个连接Socket 都会对应着数据

2021-05-11 15:59:50 311

转载 第11章 RabbitMQ扩展

第11章 RabbitMQ扩展11.1 消息追踪11.1.1 Firehose11.1.2 rabbitmq_tracing插件11.1.3 案例:可靠性检测11.2 负载均衡11.2.1 客户端内部实现负载均衡轮询法 加权轮询法 随机法 加权随机法 源地址哈希法 最小连接数法 11.2.2 使用HAProxy实现负载均衡HAProxy提供高可用性、负载均衡及基于TCP和HTTP应用的代理,安装HAProxy 配置HAP

2021-03-17 18:32:52 392

转载 第1章 RabbitMQ简介

第1章 RabbitMQ简介1.4.4 生产和消费消息本节将显示目前最新的读者可以默认情况下,访问RabbitMQ服务的用户名和密码都是“guest”,这个账户有限制,默认只能通过本地网络(如localhost)访问,远程网络访问受限,所以在实现生产和消费消息之前,需要另外添加一个用户,并设置相应的访问权限。添加新用户,用户名为“root”,密码为“root123”:rabbitmqctl add_user root root为root用户设置所有权限:rabbitm

2021-03-15 15:06:14 140

转载 第7章 RabbitMQ运维

第7章 RabbitMQ运维7.1 集群搭建在1.4节中,RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的情况下继续运行,不过RabbitMQ集群不能保证消息的万无一失,但是不会备份消息(当然通过特殊的配置比如镜像队列可以解决这个问题,不同于队列那样拥有自己的进程,交换器其实只是一个名称和绑定列表。当消息发布到交换器时,实际上是由所连接的信道将消息上的路由键同交换器的绑定列表进行比较,然后再路由消息。当创建一个新的交换器时,RabbitMQ所要做的就是将绑定列表

2021-03-09 14:43:10 570

转载 第8章 跨越集群的界限

第8章 跨越集群的界限8.1 Federation8.1.1 联邦交换器8.1.2 联邦队列8.1.3 Federation的使用8.2 Shovel8.2.1 Shovel的原理8.2.2 Shovel的使用8.2.3 案例:消息堆积的治理

2021-03-08 16:17:24 167

转载 第5章 RabbitMQ管理

第5章 RabbitMQ管理5.1 多租户与权限5.2 用户管理5.3 Web端管理5.4 应用与集群管理5.4.1 应用管理5.4.2 集群管理rabbitmqctl set_cluster_name {name}设置集群名称。集群名称在客户端连接时会通报给客户端。Federation和Shovel插件也会有用到集群名称的地方,详细内容可以参考第8章。集群名称默认时集群中第一个节点的名称,通过这个命令可以重新设置。在Web管理界面的右上角(可参考图5-1)有个“(chang

2021-03-08 16:12:36 129

转载 第6章 RabbitMQ配置

第6章RabbitMQ配置一般情况下,可以使用默认的内建配置来有效地运行RabbitMQ,并且大多数情况下也并不需要修改任何RabbitMQ的配置。当然,为了更加有效地操控RabbitMQ,也可以利用调节系统范围内的参数来达到定制化的需求。RabbitMQ提供了三种方式来定制化服务:(1)环境变量(Enviroment Variables)。RabbitMQ服务端参数可以通过环境变量进行配置,例如,节点名称、RabbitMQ配置文件的地址、节点内部通信端口等。(2)配置文件(Configu.

2021-03-08 14:35:17 1141

转载 第8章 虚拟机字节码执行引擎

8.1 概述执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行指定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。在Java虚拟机规范中指定了虚拟机字节码执行引擎的概念模型,这个概念模型称为各种虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候

2021-03-07 17:37:59 108

转载 第9章 RabbitMQ高阶

第9章 RabbitMQ高阶默认情况下,在内存到达内存阈值的50%时会进行换页动作。也就是说,在默认的内存阈值为0.4的情况下,当内存超过0.4*0.5=0.2时会进行换页动作。可以通过在配置文件中配置vm_memory_high_watermark_paging_ratio项来修改此值。9.2.2 磁盘告警当剩余磁盘空间低于确定的阈值时,RabbitMQ同样会阻塞生产者,这样可以避免因非持久化的消息持续换页而耗尽磁盘空间导致服务崩溃。默认情况下,磁盘阈值为50MB,这意味着当磁盘剩余空间低于5

2021-03-05 18:39:47 265

翻译 第3章 垃圾收集器与内存分配策略

3.1 概述3.2 对象已死吗?3.2.1 引用计数算法3.2.2 可达性分析算法3.2.3 再谈引用(强、软、弱、虚)3.2.4 生存还是死亡(两次标记过程:GC Roots、finalize()、F-Queue、Finalizer)3.2.5 回收方法区3.3 垃圾收集算法3.3.1 标记-清除算法(Mark-Sweep)3.3.2 赋值算法(Copying)3.3.3 标记-整理算法(Mark-Compact)3.3.4 分代收集算法(Generationa

2021-03-03 22:10:00 57 1

转载 RabbitMQ实战指南 - 笔记

目录第1章 RabbitMQ简介第2章 RabbitMQ入门第3章 客户端开发向导第4章 RabbitMQ进阶第5章 RabbitMQ管理第6章 RabbitMQ配置第7章 RabbitMQ运维7.3 单节点故障恢复第8章 跨越集群的界限第9章 RabbitMQ高阶第10章 网络分区第11章 RabbitMQ扩展附录A 集群元数据信息示例SpringBoot 整合 RabbitMQ第1章 RabbitMQ简介第2章 RabbitMQ入门.

2021-03-03 16:25:00 280 1

翻译 第六章 类文件结构

目录类文件结构6.1 概述6.2 无关性的基石6.3 Class类文件的结构6.3.1 魔数与Class文件的版本6.3.2 常量池6.3.3 访问标志6.3.4 类索引、父类索引与接口索引集合6.3.5 字段表集合6.3.6 方法表集合6.3.7 属性表集合6.4 字节码指令简介6.4.1 字节码与数据类型6.4.2 加载和存储指令6.4.3 运算指令6.4.4 类型转换指令6.4.5 对象创建与访问指令6.4.6 操作数栈管理指令

2021-02-14 13:59:38 131

转载 第2章 Java内存区域与内存溢出异常

目录Java内存区域与内存溢出异常概述运行时数据区域程序计数器Java虚拟机栈本地方法栈方法区运行时常量池直接内存HotSpot虚拟机对象探秘对象的创建对象的内存布局对象的访问定位实战:OutOfMemoryError异常Java堆溢出虚拟机栈和本地方法栈溢出方法区和运行时常量池溢出本机直接内存溢出Java内存区域与内存溢出异常Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却

2021-02-09 19:22:23 84

翻译 第7章 虚拟机类加载机制

目录虚拟机类加载机制7.1 概述7.2 类加载的时机虚拟机类加载机制7.1 概述上一章我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机后会发生什么变化?这些都是本章将要讲解的内容。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与

2021-02-06 13:45:01 106

原创 RabbitMQ实战指南 - 笔记

RabbitMQ简介 什么是消息中间件 消息: 消息队列中间件: 传递模式: 点对点:基于队列 发布/订阅:基于内容节点 消息中间件的作用 解耦 冗余 扩展性 削峰 可恢复性 顺序保证 缓冲

2021-02-01 17:45:07 331

原创 Nginx-负载均衡-不停机部署

构建SpringBoot项目(nginx-slb) 项目动态变量配置文件(ArticleConfiguration) package club.limeyu.ngixnslb.conf;import lombok.Getter;import lombok.Setter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype

2021-01-22 13:59:54 1006

原创 SpringBoot - Idea - 远程Debug

配置Idea Run ->Edit Configurations... "+" -> Remote Name 填写 配置名称(branch-remote) Transport 选中 Socket Debugger mode 选中 Attach Host 填写 远程IP(被Debug的服务器ip) Port 填写 连接端口 (被Debug的服务器暴露的端口) 服务器项目启动(-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspen.

2021-01-21 10:53:24 116

原创 CentOS 7.4 MySQL 5.7 binlog

查看系统版本 [root@Lime-CentOS ~]# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) 查看MySQL版本 root@Lime-CentOS ~]# mysql --help | grep Distribmysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper 检查是否开启binlog..

2021-01-17 16:18:26 175 1

原创 SLF4J+LogBack实现不同级别的日志输出到不同文件

JDK LoggingCommons LoggingLog4jSLF4J和Logbacklogback节点配置详解转换符说明外观模式

2021-01-14 17:11:59 507 1

原创 mysqldump

-h :服务器IP地址-u :MySQL 用户名-p :MySQL 密码-P :服务器端口号-d : 不导出数据,仅导出表结构-A-B-- 导出das_cn库所有表结构及数据到20210112_das_cn_frm_data.sql文件中mysqldump -uroot -p das_cn > 20210112_das_cn_frm_data.sql-- 导出das_cn库所有表结构到20210112_das_cn_frm.sql文件中mysql...

2021-01-12 23:33:16 105

原创 GIT 新建仓库并关联远程仓库

初始化本地仓库 liangmydeMacBook-Pro:rabbitmq liangmy$ git initInitialized empty Git repository in /Users/liangmy/Documents/lmy/src_code/rabbitmq/.git/ 工作区代码添加到缓存区 liangmydeMacBook-Pro:rabbitmq liangmy$ git add . 缓存区代码提交 liangmydeMacBook-Pro:..

2020-12-24 19:11:18 206 1

转载 MySQL 重置Root密码

重置密码

2020-12-22 14:47:18 141

原创 CentOS 7.4 卸载、安装、升级Redis

查看Redis版本 www@ip-172-31-23-156:~$ redis-server -vRedis server v=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=9435c3c2879311f3 备份Redis数据 # 查看Redis配置文件# 获取备份文件路径 : dir /var/lib/redis# 获取备份文件名称 : dbfilename dump.rdbwww@ip-172-31-23-.

2020-12-18 18:07:40 1790 2

原创 OSS 对象存储迁移(七牛Kodo 迁移至 亚马逊S3)

知识储备:七牛Kodo qshellAWS Command Line Interfacemac下添加环境变量MultipartFile接收文件时的文件大小设置解决 413 Request Entity Too Large(请求实体太大)

2020-12-03 19:35:48 1052

转载 MAC系统占用很多硬盘空间怎么办?

原因的分析其实真正的原因是因为崩溃引起的, 为啥这么说, 我猜测, 因为mac本每次你用软件崩溃的时候都会自动保存. 这个机制有好有坏, 好处就是下次打开你发现没保存的东西都原样呈现给你(PC转过来的泪奔), 坏处就是上面的问题, 会占用了一大波寸土寸金的mac内存. 下面我们就来看看怎么处理吧.清理mac内存我这里是使用mac终端来的, 所以主要用到的命令是下面这些:查看文件大小:du -sh *找到占用量最大的文件夹打开文件夹cd查看当前路径pwd查看当前

2020-12-03 14:05:57 1381

转载 MySQL事务隔离级别和实现原理

MySQL 事务本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操作,用户付款后要涉及到订单状态更新、扣库存以及其他一系列动作,这就是一个事务,如果一切正常那就相安无事,一旦中间有某个环节异常,那整个事务就要回滚,总不能更新了订单状态但是不扣库存吧,这问

2020-11-26 18:51:23 434

CAS单点登录框架整合Spring Security

CAS 包含两个部分: CAS Server 和 CAS Client 。 CAS Server :其实就是一个war包,CAS框架已经提供。只需要把部署到web服务器上即可,主要负责对用户的认证工作。 在文章末尾的示例项目中提供。 CAS Client:就是开发过程中的web层, 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。不需要对这个部分进行过多编码,进行简单配置即可。

2020-03-07

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO.pdf

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。

2019-09-18

DataTables-1.9.4

DataTables 英文版

2017-08-20

空空如也

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

TA关注的人

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