【个人技术经验及开发技巧分享】 【个人技术经验及开发技巧分享】
首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载

Louis

首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载
全部标签
Arthas 安装部署 Canal Redis RabbitMQ MySQL 定时任务 Nginx Kafka Zookeeper ES 链路追踪 消息中间件 Mybatis Spring SpringMVC 系统架构 tomcat 算法 数据库 Java基础 Spring Cloud Git

可重入独占锁ReentrantLock

luoxiaofeng 2022-07-25 学习笔记源码阅读

# 前言

image-20220726233126983

processon链接

https://www.processon.com/view/link/62dfe00de0b34d10ccd502bb

ReentrantLock是基于AQS框架的应用实现,具备AQS中的以下特性

阻塞等待队列 独占 公平/非公平 可重入 允许中断

ReentrantLock的核心实现

1.自旋 + CAS操作

2.CLH队列 双向队列

AQS当中的同步等待队列也称CLH队列,CLH队列是Craig、Landin、Hagersten三人 发明的一种基于双向链表数据结构的队列,是FIFO先入先出线程等待队列,Java中的CLH队列是原CLH队列的一个变种,线程由原自旋机制改为阻塞机制。

3.LocksSuport LockSupport.park(thread); LockSupport.unpark(thread);

阅读全文

阿尔萨斯(Arthas)

luoxiaofeng 2022-05-07 技术应用线上排查 Arthas

# 1 官方文档

image-20220712181718409

# 2 常用命令

# 2.1 trace

利用trace命令追踪方法耗时。

curl -O https://arthas.aliyun.com/arthas-boot.jar

java -jar arthas-boot.jar

trace com.mhs.api.stream.kafka.receiver.WaybillOggApiReceiver doOggWaybillHandel

阅读全文

Canal数据同步

luoxiaofeng 2022-05-19 技术应用部署指南 安装部署Canal

提示

Canal + Kafka + Mysql 数据同步方案示例。

# 1 MySQL开启binlog

查看MySQLs是否开启了binlog及binlog-format是否ROW模式。

-- 查看数据库版本
select version(); 

-- 显示OFF未开启 ON开启
show variables like ‘log_bin’

-- binlog_format 有三种:ROW,STATEMENT,MIXID
show variables like 'binlog_format';
1
2
3
4
5
6
7
8

MySQL安装目录下修改my.ini。

-- 在mysqld下面添加
log_bin=mysql-bin
binlog-format=ROW
server-id=1

-- 进入命令行重启mysql
停止 net stop mysql57
启动 net start mysql57
1
2
3
4
5
6
7
8

赋予canal用户复制权限。

-- 创建用户
create user 'canal'@'%' identified by '123456';

-- REPLICATION CLIENT
-- REPLICATION SLAVE
-- 复制相关。一般复制账号需要这两个权限。
grant select,replication slave, replication client on *.* to 'canal'@'%';

-- 刷新权限
FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
阅读全文

异步任务AsyncIAE

luoxiaofeng 2022-08-16 技术应用工作杂货

# 1 项目简介

提示

目前 AsyncIAE 项目暂时仅实现了异步导出功能,异步导入功能待开发。

AsyncIAE 项目的出现主要是为了解决过去导出服务实现较繁琐,开发人员额外花在导出功能的工时较多的问题。 项目包括服务端 async-iae-server 和客户端 async-iae-client 两部分。

AsyncIAE 项目包括以下特性:

  • 支持在查询接口上添加简单注解即可实现通用导出功能。
  • 支持自定义动态列头;支持多行列头。
  • 支持自定义导出逻辑,需在服务端实现指定接口。
  • 支持超过指定条数导出压缩包。
  • 支持通过指定阈值控制各业务类型的导出速度。
  • 支持小于指定条数时直接同步导出到浏览器。
阅读全文

缓存雪崩|击穿|穿透

luoxiaofeng 2022-05-08 学习笔记Redis Redis

# 1 缓存雪崩

# 1.1 什么是缓存雪崩?

缓存同一时间大面积失效,后面请求全部落到数据库,造成数据库短时间内承受大量请求而崩掉。

# 1.2 缓存雪崩有什么解决方案?

步骤 解决方案
事前 1)尽量保证整个redis集群高可用,发现机器宕机尽快补上。
2)缓存失效时间可以在原来的基础上加多一个随机值,避免同一时间集体失效。
事中 开启限流或者降级,避免Mysql崩掉。
事后 利用redis持久化机制保存的数据尽快恢复缓存。
阅读全文

SpringBoot

luoxiaofeng 2022-10-21 学习笔记开发框架

Spring

luoxiaofeng 2022-10-20 源码阅读框架

Sentinel

luoxiaofeng 2022-10-14 学习笔记开发框架

ZAB协议

luoxiaofeng 2022-09-23 学习笔记Zookeeper

# 1 简介

Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)

ZAB协议主要为了解决分布式一致性问题。支持 崩溃恢复 和 原子广播。

基于该协议,Zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。

image-20220923180408776

所有客户端写入数据都是写入到Leader节点,然后由Leader节点同步到Follower节点,从而保证数据一致性。

同步过程类似两阶段提交(2PC)

ZAB只需要Follower(含Leader自己的ack)有一半以上返回ack信息就可以执行提交,大大减小了同步阻塞,提高了可用性。

阅读全文

集群模式

luoxiaofeng 2022-09-23 学习笔记Zookeeper

# 1 Zookeeper集群模式角色

Leader : 处理所有的事务请求,集群中 只能有一个Leader,且只有leader才允许写入 。

Follower : 只能处理读请求,同时作为 Leader的候选节点。

即如果Leader宕机,Follower节点要参与到新的Leader选举中,有可能成为新的Leader节点。

Observer : 只能处理读请求。不能参与选举。

image-20220923173325237
阅读全文

上一页

下一页

全部标签
Arthas 安装部署 Canal Redis RabbitMQ MySQL 定时任务 Nginx Kafka Zookeeper ES 链路追踪 消息中间件 Mybatis Spring SpringMVC 系统架构 tomcat 算法 数据库 Java基础 Spring Cloud Git
Copyright © 2022-2023 Louis | 粤ICP备2022060093号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式