- 博客(21)
- 收藏
- 关注

原创 基于GitHub Action实现项目 CI / CD 模式的自动化部署上线
在项目部署上线的时候 , 我们经常在不同的系统切换(我通常是在window本地开发 , 在服务器Linux部署) , 十分的麻烦 , 为了更方便的项目迭代和项目部署 , 今天介绍一下GitHub Action 这一神器 , 下面将分析三种action任务。
2025-03-07 17:13:14
1009
原创 Go语言底层(五): 深入浅出Go语言的ants协程池
Go语言协程池ants实现原理ants是Go语言中一款高效的协程池库,通过复用协程资源优化高并发场景下的性能。库的核心优势在于:性能提升:复用协程降低创建销毁开销动态调控:支持运行时调整并发规模生命周期管理:提供统一回收机制实现上采用worker池模式,包含:goWorker:执行单元,持久运行处理任务Pool:管理worker队列和对象池workerArray:worker集合接口核心流程:初始化时预创建worker并启动回收协程提交任务时获取可用worker执行通过sync
2025-06-14 21:08:09
761
1
原创 Go 语言底层(四) : 深入 Context 上下文
Go语言Context包详解Context是Go并发编程中用于控制协程生命周期、超时处理和跨API通信的核心工具。文章从基本使用和底层实现两方面解析:使用层面:通过Background/TODO创建根ContextWithCancel提供手动取消机制WithTimeout实现超时自动取消WithValue传递请求域数据(需注意仅适用于轻量级数据)实现原理:采用树形结构组织Context,emptyCtx作为所有Context的起点cancelCtx通过done通道和children
2025-06-09 21:12:02
886
2
原创 Go语言底层(三): sync 锁 与 对象池
本文介绍了Go语言标准库sync包提供的并发控制工具,主要包括互斥锁(sync.Mutex)和读写锁(sync.RWMutex)两类同步机制,以及对象池(sync.Pool)这一内存优化组件。互斥锁适用于不确定读写比例的全局锁定场景,读写锁则针对读多写少情况优化性能。对象池通过复用临时对象减少内存分配和GC压力,其底层采用多级缓存机制实现高效并发访问。文章还分析了对象池的数据结构和工作原理,包括Get/Put操作流程以及两级缓存(victim机制)设计。这些并发原语为Go程序提供安全的共享资源访问保障,是
2025-06-05 21:29:02
992
原创 Go语言底层(二) : GMP 模型
协程是go的一大特色 ,也是go为什么那么快的原因之一 . 哪GO的调度器是如何演变的?为什么让Go协程如此的高效呢?
2025-04-07 20:54:25
1023
原创 GO语言底层(一) : GC垃圾回收机制
go语言底层的内存分配为什么那么快 ?, 什么是GC垃圾回收机制 ? , Go 语言的回收机制的演变历程是什么 ?
2025-03-29 20:56:03
1047
原创 电商秒杀系统架构设计
我们做那其实总结一下秒杀其实只要做好一件事,那就是库存能扛得住热点扣减,并且不发生少卖就行了。秒杀的核心 : 解决高并发使用的核心组件 :RedisRocketMQMysql。
2025-03-25 20:21:38
710
原创 详解 HTTPS 加密过程
我们都知道 , HTTP的传输都是明文传输的这种传输方式是极其不安全的 , 现在的所有的网站都是基于https , 今天为大家解密 HTTPS 加密
2025-03-17 15:30:13
370
原创 基于 https 设计实现网关数字签名与URL加密
我们都知道 , https是基于对称加密和非对称加密实现的 , 保证了信息请求体信息的安全 , 但是对于URL参数而言 , 并没有起到保护作用 , 这部分信息可能会被中间人窃取和篡改 , 为此 , 我们一般不会把重要信息放在URL参数中 ,但是我们还可以通过url加密的方法来解决这个问题。
2025-03-15 20:16:00
508
原创 docker搭建 Cannal + Rocketmq(单机)监听数据库 binlog 实现双写一致性
登录 ip:8080 的 mq 界面, 查看是否成功转发数据。进入 mysql 检查 binlog 是否启动。启动 docker-compose 拷贝数据。compose 文件 ( 注意版本信息 )解开 canal 的数据挂载 , 然后。检查所有的日志文件是否报错。
2025-02-24 19:57:59
211
原创 go语言Gin框架源码解析
在熟练掌握了gin框架的使用后 , 是时候了解一下gin框架源码的实现了提示:以下是本篇文章正文内容,下面案例可供参考。
2025-01-24 20:27:59
961
原创 docker 一键部署RocketMq各种集群模式 + Proxy 代理模式
修改docker-compose.yaml 取消注释,开启持久化配置。设置权限,否则会写入文件失败,造成启动失败。配置 docker-compose 文件。编写 docker-compose 文件。编写 docker-compose 文件。配置 proxy.json 文件。配置 proxy.json 文件。复制docker里面的文件。关闭相关docker进程。的注释实现数据持久化。
2025-01-16 21:38:47
718
原创 rocketMq代理create system broadcast topic DefaultHeartBeatSyncerTopic failed on cluster DefaultCluster
这玩意非常的恶心 , 有很多原因会导致这个 , 这里不得不吐槽一下 rmq 那边对这部分错误处理不够到位我在网上搜了很多, 大部分原因都是说什么连接有问题 ,什么乱七八糟的都有下面贴一下我的部分compose文件内容 , 如果想详细知道几种搭建方式的 , 可以看一下我发布的其他文章。
2025-01-16 21:26:15
810
3
原创 Docker 一键部署 RocketMq 集群 | 包含单节点部署 , 单台多Master部署 , 多台部署 ( 同步 / 异步 )
修改docker-compose.yaml 取消注释,开启持久化配置。设置权限,否则会写入文件失败,造成启动失败。配置 docker-compose 文件。编写 docker-compose 文件。编写 docker-compose 文件。复制docker里面的文件。关闭相关docker进程。的注释实现数据持久化。
2025-01-12 14:56:44
561
原创 GORM(Go 的 ORM 库)连接数据库,并实现增删改查操作
在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或它们的指针。同时也支持及接口(interfaces)。gorm.ModelRole string `gorm:"size:255"` // 设置字段大小为255not null"` // 设置会员号(member number)唯一并且不为空Num int `gorm:"AUTO_INCREMENT"` // 设置 num 为自增类型。
2025-01-06 20:35:36
1046
原创 ElasticSearch8 黑马万字笔记
Elasticsearch 是一个高度可扩展的开源实时搜索和分析引擎,它允许用户在近实时的时间内执行全文搜索、结构化搜索、聚合、过滤等功能。Elasticsearch 基于 Lucene 构建,提供了强大的全文搜索功能,并且具有广泛的应用领域,包括日志和实时分析、社交媒体、电子商务等。Elasticsearch 架构主要由三个组件构成:索引、分片和节点。索引是文档的逻辑分组,类似于数据库中的表;分片是索引的物理分区,用于提高数据分布和查询性能;节点是运行 Elasticsearch 的服务器实例。
2024-11-26 20:40:15
1068
原创 ElasticSearch8 的保姆级别docker部署(包含ssl证书部署)
1.1.1. 创建文件夹1.1.2. 注释调 和 的数据卷挂载启动 compose 文件做数据卷映射1.1.3. 取消注释重新启动即可1.2.1. 创建文件夹1.2.2. 注释调 和 的数据卷挂载 并启动容器1.2.3. 复制数据卷 文件内容1.2.6. 取消注释重新启动即可参考文档ElasticSearch和Kibana的安全设置以及https设置_kibana 和 elasticsearch 之间启用传输层安全-
2024-11-26 20:08:39
1235
原创 尚硅谷Redis7 基础篇笔记
String是redis最基本的数据类型,一个key对应一个value。string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512MString是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的。意味着Redis的string可以包含任何数据。
2024-11-24 20:43:56
749
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人