自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ctr: content digest XXX not found

ctr 推送镜像到本地仓库报错 ctr: content digest sha256:b96e30ccb0a1e225493e53d4f81cb2c27183406e5f902ed43c4bf15dc6f21c9c: not found。

2024-12-16 23:57:11 400

原创 Containerd容器管理工具(轻量级、工业容器管理工具)

2016年Docker公司推出了Docker Swarm,意在一统Docker生态,让Docker既可以实现容器应用管理,也可以实现大规模容器编排,经过近1年左右时间的市场验证后,发现在容器编排方面无法独立抗衡kubernetes,所以Docker公司于2017年正式宣布原生支持Kubernetes,至此,Docker在大规模容器编排应用市场败下阵来,但是Docker依然不甘心失败,把Docker核心依赖Containerd捐给了CNCF,依此说明Docker依旧是一个PaaS平台。

2024-12-16 10:00:00 927

原创 couldn‘t validate the identity of the API Server: could not find a JWS signature in the cluster-info

在kubernetes集群安装的时候,集群使用了一段时间。work节点数量不够了,你又安装了新的work节点。

2024-11-18 18:30:50 285

原创 DockerFile与容器构建技术

Dockerfile是一种能够被Docker程序解释的剧本。Dockerfile由一条一条的指令组成,并且有自己的书写格式和支持的命令。当我们需要在容器镜像中指定自己额外的需求时,只需在Dockerfile上添加或修改指令,然后通过docker build生成我们自定义的容器镜像(image)。

2024-11-17 19:48:08 1562

原创 Docker容器化部署MySQL主从集群(CentOS9+MySQL9)

我这里使用的是MySQL最新镜像,MySQL版本9.0.1,该版本很新,很多操作命令和配置参数都有变化,搭建集群的过程中碰到很多问题。解决问题过程查阅了很多官方文档,下面是列出了我参考的官方文档。

2024-10-14 09:30:00 1696 2

原创 docker启动MySQL容器失败原因排查记录

在这一行-v /opt/mysql/conf:/etc/mysql,我们将主机路径/opt/mysql/conf挂载到容器路径/etc/mysql下,实际上容器配置在/etc/mysql/conf.d/目录下。如上图,查看日志发现是没有配置文件目录,我们的命令指定的配置文件路径是/etc/mysql/,而容器读取的配置文件路径是/etc/mysql/conf.d/。最近在尝试容器搭建MySQL集群时碰到一个错误,启动MySQL时碰到一个,经过排查解决,在此做一个记录。发现MySQL是已经exit了。

2024-10-13 13:33:40 1026

原创 Netty源码-业务流程之请求处理

findContextInbound找到一个责任节点(Inbound类型)执行,MASK_CHANNEL_READ是channel read掩码。MASK_ONLY_INBOUND(下图2)表示所有Inbound事件掩码集合,MASK_CHANNEL_READ和MASK_ONLY_INBOUND与运算结果不是0,就表示执行channelRead事件

2024-10-03 12:24:12 814

原创 FutureTask源码解析

Java创建线程一般用Thread,Runable。如果需要返回结果,就用Callable。Callable运行需要配合Future。Future是一个接口,一般用FutureTask实现类去接收Callable任务返回的结果。FutureTask是同步非阻塞执行的任务,他不会主动通知你结果。

2024-10-01 09:30:00 584

原创 Netty源码-业务流程之写数据

我们看到下图中,先通过findContextOutbound方法找到下一个责任节点再执行。如果我们自定义方法里用的是ctx.writeAndFlush(写入并发送数据),那么下面就是走第一个分支,否则走第二个分支,继续进入next.invokeWrite我们来到AbstractChannel.AbstractUnsafe#write,又是Unsafe类型,Netty的大量读写操作在这个类,进入最后一行的方法addMessage,该方法里面有对写入高水位的判断,

2024-09-30 09:30:00 1701

原创 MongoDB入门

MongoDB:是一个数据库 ,高性能、无模式、文档性,目前nosql中最热门的数据库,开源产品,基于c++开发。是nosql数据库中功能最丰富,最像关系数据库的。特性l 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;l 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;l 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;l 完整的索引支持,支持查询计划;l 支持复制和自动故障转移;

2024-09-29 09:30:00 876

原创 Redis高级特性及应用

可以通过以下命令配置慢查询时间阈值(慢查询值得是上图中执行命令的时间,不包含其他时间)一般配置到1000就可以慢查询保存在内存的一个链表中slowlog-max-len 128 //这个配置项是慢查询链表的长度,默认128执行两条命令,并查看慢查询记录。

2024-09-28 09:30:00 1143

原创 Netty源码解析-响应式实现(Reactor模式)

我们看到上面通过channelFactory构造了channel,最下面一行通过config().group().register(channel)注册channel。那么我们进入group()看一下mainReactor需要自己定义,即是ServerBootstrap的两个EventLoopGroup中的parentGroup,初始化的时候设置进去。然后在bind的时候将Group注册到channel上,同时只会注册一个。

2024-09-27 18:23:53 870

原创 Netty源码解析-锁机制

从上面的讨论的五种锁优化技术可以看出来,Netty对锁的优化可以说做到极致,各种场景下都对锁的优化有大量使用,这也是Netty高性能的一个重要原因,这些值得我们学习在项目中使用。

2024-09-26 09:30:00 1392

原创 分布式锁实现

redis分布式锁是用的对最多的,有现成的开源库Redission可以用,能满足大部分需求。一般情况下使用redis锁就可以。zookeeper分布式锁可以实现读写锁,公平锁和非公平锁,能实现的锁种类更多,也是一种很好用的锁,但是需要自己实现。MySQL实现起来稍显麻烦,也需要自己实现。三种锁均不是绝对安全的锁,都可能存在失效的情况。唯一安全的锁是数据库乐观锁,请看https://juejin.cn/post/7390689983789023247。

2024-09-25 23:32:21 1211

原创 数据库中间件Mycat

Mycat是基于Java编写的实现了MySQL协议的数据库中间件,可以将它看成一个数据库代理,可以直接用MySQL客户端工具访问。其核心功能是分库分表和读写分离。MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 Mycat 变得非常的强大。官网。

2024-09-24 10:00:00 1061

原创 Netty源码解析-Netty源码包及IO模式源码分析

Netty通过channel的反射工厂获取channel的构造器,channel类型通过参数传递(这里实现对不同类型IO的支持),channel通过反射工厂在需要的时候构造出来(这里是一个优化)。我们可以看到Netty的代码确实做了很多优化。

2024-09-24 09:30:00 2042

原创 MySQL 事务与隔离级别

数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,如果部分成功,那么已成功的必须回滚,恢复数据的原始状态。

2024-09-23 10:00:00 1248

原创 Netty源码解析-零拷贝

Netty源码系列-Netty如何使用零拷贝零拷贝是一种很重要的IO优化策略,在一些开源软件上都有应用,比如Kafka也使用零拷贝技术来提升吞吐量。

2024-09-23 09:30:00 600

原创 Netty源码-业务流程之构建连接

从前面的源码分析文章我们知道NioEventLoop是处理请求的线程,通过Selector获取事件,当它收到READ、ACCEPT事件的时候会去构建连接,通过JDK构建连接。

2024-09-22 09:30:00 370

原创 CompletableFuture-详解使用及源码解析

Async结尾的是异步执行的API,通常有带线程池和不带线程池的版本run开头的是无参方法,没有返回值supply开头的是有参方法,有返回值以Accept开头或者结尾的方法,有参数,没有返回值以Apply开头或者结尾的方法,有参数,有返回值带有either后缀的方法,表示谁先完成就消费谁。

2024-09-21 10:00:00 1000

原创 Netty对处理粘包和半包的支持

Netty对粘包和拆包的处理非常方便,有很多方法。本文介绍几种方法,并讨论优缺点,可以根据需求选择合适的

2024-09-21 09:30:00 938

原创 Netty源码解析-请求处理与多路复用

Netty源码系列-NioEventLoop,在正常情况下我们还是使用GenericEventExecutorChooser来选择EventLoop,这里PowerOfTwoEventExecutorChooser对next方法做了优化,所以在EventLoop组长度是2的指数的时候我们可以更快的处理跨平台通过java虚拟机实现,调用java虚拟机的方法,在不同的平台,该方法由不同的java虚拟机实现,这样实现跨平台,这蒸是java通过虚拟机实现跨平台的方式。

2024-09-20 10:00:00 1114

原创 Mysql分库分表

Mysql作为做流行的开源数据库,在各大互联网公司被广泛使用。通常我们用一个库就可以满足需求,但是随着业务的增长,数据量和并发量迅速膨胀。Mysql单表数据量到百万以上的时候,查询效率就会受到影响,另外Mysql单库能承受的并发也有限。这个时候我们需要做分库分表,来提高数据库的性能和扩展性

2024-09-20 09:30:00 2426

原创 Raft协议原理详解-分布式一致性

提到Raft不得不提到Paxos,Paxos 协议是由 Leslie Lamport在1989年提出的一种分布式一致性协议,它是分布式系统领域中的经典协议之一。Leslie Lamport 是分布式计算领域的著名科学家,曾获得图灵奖等多项荣誉。Paxos 协议被称为经典协议,

2024-09-19 10:00:00 1594

原创 关于RedLock算法大佬的争论

根据Martin和antirez对分布式锁的讨论,我们知道,由于分布式系统的各种问题程序暂停、系统时间跳跃、网络延迟等问题导致锁的基本特性互斥性实现起来非常困难。分布式锁必须在客户端出故障的时候能够被释放,同时要保证锁的互斥性,那么有两种措施:1)设置一个超时时间这种方案可能会存在这个问题,客户端没有执行完成锁已经过期并被其他客户端获取,那么在事务提交前需要判断锁是否超时,这又因为GC或者网络原因导致在判断后到事务提交前这段时间内锁状态可能已经变化,锁由未超时变成超时又被其他客户端获取,违反了互斥性。

2024-09-19 09:30:00 1015

原创 TiDB介绍及原理

TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

2024-09-18 12:45:03 1659

原创 Java锁优化之批量重偏向

JVM对synchronized锁做了很多优化,这也是为什么synchronized锁的性能和ReentrantLock相比较的原因,在这些优化之后,synchronized和ReentrantLock性能上不相上下了,使用上更加方便,是最好的选择。

2024-09-18 11:42:25 499

原创 Redis主从架构原理

我们使用redis的时候为了预防单点故障,通常要做高可用设计,redis主从架构就是一种防止redis主节点宕机启用从节点的高可用设计方案。下面我们看一下redis主从架构的设计原理。

2024-09-17 14:03:30 1377

原创 volatile的底层实现

java内存模型定义的java线程使用内存的规则,主要目标是定义程序变量的访问规则,即虚拟机中变量存储到内存以及从内存访问的细节。java的每条线程都有自己的工作内存(一般对应CPU高速缓存),线程工作内存保存了该变量的主内存副本,线程对变量的操作都在自己的工作内存进行,线程、工作内存、主内存关系如图

2024-09-17 09:30:00 863

原创 Netty与网络编程

Netty的特点1)高并发:基于 NIO(Nonblocking IO,非阻塞IO)开发,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高;2)传输快:传输依赖于零拷贝特性,尽量减少不必要的内存拷贝,实现了更高效率的传输;3)封装好:封装了 NIO 操作的很多细节,提供了易于使用调用接口。Netty的优势1)使用简单:封装了 NIO 的很多细节,使用更简单;2)功能强大:预置了多种编解码功能,支持多种主流协议;

2024-09-16 09:00:00 1470

原创 ConcurrentHashMap源码深度分析

ConcurrentHashMap源码深度分析

2024-09-15 21:50:36 1171

原创 Netty源码-Server启动流程

Netty之Server启动流程源码深度解析

2024-09-15 10:00:00 770

原创 redis主从环境搭建

redis主从模式经常使用,我们来尝试一下如何搭建Redis主从环境

2024-09-14 14:58:01 1180

原创 MySQL间隙锁,next-key锁

间隙锁是对索引记录之间的间隙的锁,或者是对第一个索引记录之前或最后一个索引记录之后的间隙的锁。next-key锁锁定的范围为间隙锁+记录锁,

2024-09-14 11:23:04 1375

原创 看这一篇学会读jvm字节码

以上展示了一个简单的java程序的字节码阅读方法,关键是理解java的字节码指令基于栈编程模型,这样就好理解了,jvm指令在jvm规范中都可以查到,只要理解了这个,碰到不认识的指令,直接去jvm规范查询,我们就可以轻松看懂字节码。我们看字节码可以看到jvm编译class文件过程中做的一些优化,比如常量运算直接在编译阶段就做了,执行阶段不需要再处理。看字节码可以加深我们对Java的理解。

2024-09-14 01:34:16 902

原创 Netty源码-业务流程之读事件

Netty业务流程之读事件源码深度解析

2024-09-13 20:21:20 407

原创 JVM频繁GC分析

本文记录一次频繁GC的分析。

2024-09-12 23:54:08 500

原创 Spring Boot创建定时任务

项目中经常要用到定时任务,比如发邮件短信、清理缓存等等spingboot 创建定时任务非常简单,只需要几个注解就可以。下面我给一个定时清理缓存的任务,测试程序缓存功能的时候经常要用到。

2024-09-12 23:40:06 414

原创 Mysql数据库sql优化案例

对于sql调优需要对各种方案都执行看具体执行时间,才能判断优劣,还要考虑到有些表数据是一直增长到,已经调好到sql能不能适应数据增长很重要,有些sql调优方案在数据量不大到情况下可能不如另外一种方案,但是数据量增长以后可能就不一样了。

2024-09-11 10:54:45 594 1

原创 分布式锁和spring事务管理

高并发情况下,分布式事务很容易出问题,要对各种情况分析是否可能出问题,并要对所有可能出问题的情况做充分的测试才能保证程序健壮。RedLock算法并不是一个严谨的算法,有一些问题,使用的时候要了解他的特性。关于RedLock算法有一个Martin和算法作者antirez的争论,请看我的另一篇文章关于RedLock分布式锁大佬的争论。

2024-09-11 00:52:49 1206

Atom64位 文本编辑工具

Atom,开源的文件编辑器,功能强大,界面非常美观,可以媲美UE的编辑器。重点是可以安装各种插件扩展功能非常强大,Julia语言默认集成环境。

2018-11-20

启动试用期过期软件脚本

我下载了Navicat的试用版,然后过期了,我就写了一个脚本,把系统时间设置为过期前的时间,然后启动,可以一直试用,不用担心过期。 这个脚本是用来启动Navicat的python脚本, 开头两行设置时间为过期之前的时间,path是exe文件路径,用来启动Navicat,任意其他的软件都可以。 #过期前时间 before_expire_date='2017-08-27' #exe文件路径 path=r'C:\"Program Files"\PremiumSoft\"Navicat for MySQL"\navicat.exe'

2018-09-25

一款非常好用的telnet工具

一款非常好用的telnet工具,可以用来测试端口是否正常,开发的程序员们经常要用到

2018-08-08

空空如也

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

TA关注的人

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