Macky_He
码龄8年
关注
提问 私信
  • 博客:36,970
    36,970
    总访问量
  • 27
    原创
  • 2,068,706
    排名
  • 7
    粉丝
  • 0
    铁粉

个人简介:比你优秀的人还比你努力,你有什么资格懈怠!不积跬步,无以至千里;不积小流,无以成江海!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2017-04-25
博客简介:

Macky_He的博客

查看详细资料
个人成就
  • 获得13次点赞
  • 内容获得18次评论
  • 获得108次收藏
  • 代码片获得115次分享
创作历程
  • 13篇
    2020年
  • 14篇
    2019年
  • 1篇
    2018年
成就勋章
TA的专栏
  • redis
    10篇
  • 踩坑记录
    1篇
  • Java并发
    1篇
  • 工具
    3篇
  • spring-boot
    3篇
  • 操作系统
  • spring security
  • 分库分表
    1篇
  • Maven
    1篇
  • 源码分析
    1篇
  • MySQL
    4篇
  • JVM相关
    3篇
  • Java并发编程
兴趣领域 设置
  • 编程语言
    java
  • 大数据
    redis
  • 后端
    mysqlspringspring boot分布式
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【redis深层次探索】Redis的主从复制(及读写分离)

一、说明在Redis中, 用户可以通过执行SLAVEOF命令或者设置slaveof选项, 让一个服务器去复制( replicate) 另一个服务器, 我们称呼被复制的服务器为主服务器( master) , 而对主服务器进行复制的服务器则被称为从服务器( slave)。数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。二、怎样实现主从复制2.1、命令追加当AOF持久化功能处于打开状态时
原创
发布博客 2020.11.05 ·
239 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

druid数据源使用Mybatis-Plus 3.4.0版本集成p6spy踩坑

一、异常日志org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection: dbType not support : null, url jdbc:p6spy:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=
原创
发布博客 2020.10.20 ·
1568 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【redis深层次探索】AOF持久化

一、说明AOF持久化功能的实现可以分为命令追加( append) 、 文件写入、 文件同步( sync) 三个步骤。1.1、命令追加当AOF持久化功能处于打开状态时, 服务器在执行完一个写命令之后, 会以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾。1.2、AOF文件的写入和同步Redis的服务器进程就是一个事件循环( loop) , 这个循环中的文件事件负责接收客户端的命令请求, 以及向客户端发送命令回复, 而时间事件则负责执行像serverCron函数这样需要定时运行的
原创
发布博客 2020.09.21 ·
223 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】RDB持久化

一、说明因为Redis是内存数据库, 它将自己的数据库状态储存在内存里面, 所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面, 那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题, Redis提供了RDB持久化功能, 这个功能可以将Redis在内存中的数据库状态保存到磁盘里面, 避免数据意外丢失。RDB持久化既可以手动执行, 也可以根据服务器配置选项定期执行, 该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB持久化功能所生成的RDB文件是一个经过压缩
原创
发布博客 2020.09.14 ·
181 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【七】-- 对象

一、说明redis基于简单动态字符串( SDS) 、 双端链表、 字典、 压缩列表、 整数集合等等,这些数据结构创建了一个对象系统, 这个系统包含字符串对象、 列表对象、 哈希对象、 集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。二、redis中的对象类型和编码Redis使用对象来表示数据库中的键和值, 每次当我们在Redis的数据库中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键( 键对象), 另一个对象用作键值对的值( 值对象)
原创
发布博客 2020.09.08 ·
153 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【六】-- 压缩列表( ziplist)

一、说明当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么Redis就会使用压缩列表来做列表键的底层实现。二、压缩列表在redis中的应用压缩列表( ziplist) 是列表键和哈希键的底层实现之一。三、压缩列表的实现压缩列表结构:压缩列表各部分详细说明三、总结压缩列表是一种为节约内存而开发的顺序型数据结构。压缩列表被用作列表键和哈希键的底层实现之一。压缩列表可以包含多个节点, 每个节点可以保存一个字节数组或者整数值。添加新节点
原创
发布博客 2020.08.26 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【五】-- 整数集合(intset)

一、说明整数集合( intset) 是集合键的底层实现之一, 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。二、跳跃表在redis中的应用当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。三、跳跃表的实现整数集合( intset) 是集合键的底层实现之一, 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。ty
原创
发布博客 2020.08.26 ·
164 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【四】--跳跃表(skiplist)

一、说明跳跃表( skiplist) 是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均O( logN) 、 最坏O( N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。使用情况Redis使用跳跃表作为有序集合键的底层实现之一, 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员( member) 是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现。二、跳跃表在redis中的应用和链表
原创
发布博客 2020.08.24 ·
124 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【三】--字典

一、说明字典, 又称为符号表( symbol table) 、 关联数组( associative array)或映射( map) , 是一种用于保存键值对( key-value pair) 的抽象数据结构。二、字典在redis中的应用链表被广泛用于实现Redis的各种功能, 比如列表键、 发布与订阅、 慢查询、监视器等三、链表的定义每个链表节点使用一个adlist.h/listNode结构来表示:typedef struct listNode {//前置节点struct listNo
原创
发布博客 2020.08.18 ·
146 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【二】--链表

一、说明链表提供了高效的节点重排能力, 以及顺序性的节点访问方式, 并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构, 链表内置在很多高级的编程语言里面, 因为Redis使用的C语言并没有内置这种数据结构, 所以Redis构建了自己的链表实现。链表在Redis中的应用非常广泛, 比如列表键的底层实现之一就是链表。 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis就会使用链表作为列表键的底层实现。二、链表在redis中的应用链表被广泛用
原创
发布博客 2020.08.13 ·
139 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【redis深层次探索】数据结构和对象【一】--简单动态字符串(SDS)

一、SDS是什么?        Redis没有直接使用C语言传统的字符串表示( 以空字符结尾的字符数组, 以下简称C字符串) , 而是自己构建了一种名为简单动态字符串( simple dynamicstring, SDS) 的抽象类型, 并将SDS用作Redis的默认字符串表示。C字符串会用在无需对字符串进行更改的地方(日志打印)二、SDS用在什么地方?存储redis数据库中的字符串值用做AOF缓冲区客户端状态中
原创
发布博客 2020.08.07 ·
155 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Git常用命令归纳总结

一、git配置1.1 查看git配置信息#查看所有配置信息git config --list#查看某一项配置信息git config <key>1.2 修改配置信息git config --global user.name "Your Name"git config --global user.email "email@example.com"1.3 获取帮助git helpgit --helpgit help config二、git基础2.1 获取git仓库(
原创
发布博客 2020.06.05 ·
421 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

Spring Boot项目使用Graphics2D 生成二维码海报图片流返回给前端

这里写自定义目录标题前言生成图片最后效果(省略公司logo)代码开发中遇到的坑1.通过Postman能够获取出海报图片,但是前端获取是获取不到前言需求是生成二维码分享海报,作为学生加入班级的一个方式,本来想着用前端canvas来实现,生成想要的图片,可视化比较好。后来改为后端生成固定格式的海报图片,只是班级信息发生改变。就想着由前端传入响应的参数,后端根据参数使用Graphics2D 画一张海...
原创
发布博客 2020.04.27 ·
3852 阅读 ·
2 点赞 ·
9 评论 ·
9 收藏

阿里云服务器安装配置jenkins(centos)

阿里云服务器安装配置jenkins(centos)1. 安装命令(添加Jenkins仓库到yum源中,再安装)sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat/jenkins.i...
原创
发布博客 2019.10.30 ·
1744 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

阿里云docker搭建MySQL主从数据库

阿里云docker搭建MySQL主从数据库1.拉取MySQL镜像,博主搭建版本为MySQL5.7docker pull mysql:5.7效果:2.设置MySQL配置目录#新建数据目录mkdir -pv /mysql/data#新建主库配置目录mkdir -pv /mysql/001#新疆从库配置目录mkdir -pv /mysql/0023.新建配置文件#设置主库配...
原创
发布博客 2019.09.25 ·
413 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Mysql中事务ACID实现原理

引言    照例,我们先来一个场景~面试官:“知道事务的四大特性么?”你:“懂,ACID嘛,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)!”面试官:"你们是用mysql数据库吧,能简单说说innodb中怎么实现这四大特性的么?“你:“我只知道隔离性是怎么做的balaba...
转载
发布博客 2019.08.21 ·
1861 阅读 ·
2 点赞 ·
1 评论 ·
10 收藏

【JVM系列】(一)Java类的加载机制

1. 类加载的时机    类从被加载到虚拟机内存开始,到卸载出内存为止,他的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)七个阶段。其中验证、准备、解析三个阶段统称为连接(Link...
原创
发布博客 2019.08.20 ·
166 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Minor GC和Full GC的区别?

新生代GC(Minor GC):指的是发生在新生代的垃圾回收动作,因为大多数对象都具备朝生夕灭的特性,所以minor GC非常频繁,一般回收速度也比较快。老年代GC(Full GC):指的是发生在老年代的GC,出现了major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major Gc的策略选择过程)。Major ...
原创
发布博客 2019.08.20 ·
859 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

怎样避免死锁?

1.避免一个线程同时获取多个锁。2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。3.尝试使用定时锁,使用lock.tryLock(timeout)来代替内部锁机制。4.对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。...
原创
发布博客 2019.08.16 ·
171 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM之Java内存区域

JVM之Java内存区域    Java虚拟机在执行Java程序时会把它所管理的内存划分为若干个不同的数据区域;每个区域都会有各自不同的用途,创建销毁的时间也不尽相同,有的区域随着虚拟机进程启动而存在,有的则依赖用户进线程的启动结束而建立销毁;虚拟机管理的内存包含下列几个运行时数据区域;如下图所示:程序计数器(线程私有)  &nb...
原创
发布博客 2019.08.16 ·
129 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多