- 博客(18)
- 问答 (2)
- 收藏
- 关注
原创 Golang sync.Cond 使用入门
是一个非常有用的同步工具,它帮助多个 Goroutine 协作和同步。我们可以用它来让某些 Goroutine 等待特定的条件,直到其他 Goroutine 发出通知。可以实现类似生产者-消费者的场景,生产者放入数据,消费者等待数据并处理。)来控制多个 Goroutine 的行为。以下是一个简单的例子,展示了如何使用。就是“条件变量”,它配合锁(在 Golang 中,
2025-01-03 11:38:39
286
原创 Gin 中 c.Set 和 c.Get 的使用详解
在 Gin 框架中,c.Set和c.Get提供了一种方便的方式,用于在请求生命周期内传递和共享数据。它们通常用于中间件和处理函数之间的数据传递。
2025-01-02 16:28:59
399
原创 GORM 牛掰高级用法- serializer
Serializer 就是一个序列化器,可以在存储或读取数据库字段时,自定义处理逻辑。例如,将 JSON 格式的数据存储为字符串,或者把二进制数据转换为其他类型。
2025-01-02 10:37:24
388
原创 docker 配置镜像加速,解决镜像拉取问题
使用 Docker 拉取镜像时,如果没有配置加速器,可能会遇到下载速度慢甚至失败的情况。为了解决这个问题,我们可以通过配置镜像加速器,大幅提升拉取镜像的速度。
2024-12-30 15:52:44
1110
原创 K8s 限流配置:别让你的服务被流量“打爆”
在使用 Kubernetes 部署服务时,有时候我们需要限制流量,避免因为某些请求过多导致服务崩溃或者资源不足。限流(Rate Limiting)是个不错的选择。这里简单聊聊 K8s 中限流的实现方式,不用太专业,大家能看懂就行。
2024-12-30 15:43:39
572
原创 Golang + Elasticsearch 踩坑记录
最近在用 Golang 和 Elasticsearch 搞一些数据搜索的功能,踩了不少坑,记下来分享给大家。希望能帮到刚开始用 Golang 操作 Elasticsearch 的朋友,避免走弯路。
2024-12-24 17:03:33
564
原创 Gin 中间件详解:从小白的角度出发
有时候我们代码写得不太好,接口可能会报错甚至直接崩溃。写一个中间件拦截这些错误,可以避免服务直接挂掉。err!= nil {c.JSON(500, gin.H{"error": "出错了!别慌!"})}()c.Next()中间件就像一排门卫,可以帮你检查进来的请求是否合规,还能帮你记录一些事情。学会用中间件,不仅代码更简单,功能也更强大。
2024-12-24 13:43:00
260
原创 Kubernetes 去亲和性(Anti-Affinity)详解
去亲和性允许我们指定 Pod 不应该和其他哪些 Pod 共同存在于同一个节点上。Pod 去亲和性(Pod Anti-Affinity):确保 Pod 不会和其他特定的 Pod 运行在同一个节点上。节点去亲和性(Node Anti-Affinity):确保 Pod 不会被调度到某些特定的节点上。这种机制有助于避免单个节点上的资源过载,或者确保关键应用的高可用性。
2024-12-23 13:54:40
429
原创 Golang 接入 NSQ 实现消费者和生产者
NSQ 是一个分布式消息队列系统,设计初衷是为了处理实时、高吞吐量的消息传递。它通过去中心化的设计来增强系统的高可用性和扩展性。NSQ 使用 TCP 连接来传递消息,支持高效的消息推送和拉取。
2024-12-23 13:46:04
509
原创 go get 多凭证切换(切换.netrc),实现多个私有包切换拉取
在实际开发 go 的场景中,我们需要拉取自己托管在代码平台的公共包(一般是开发场景中抽出来可以复用的包),但是有时候会有从不同的私有仓库拉取包的需求(自己写的开源项目和所在公司的包都在同一个平台),这时候 go get拉取会默认将.netrc 文件里面的内容作为凭证去拉取,且同.netrc 下面不能出现同一个machine,因此曲线救国的办法就是创建一个脚本去切换.netrc 的内容。
2024-11-26 14:41:06
174
原创 docker 搭建3节点 es+kibana,包搭建成功
官方文档中提供了安装单个 es 节点的方法,但是方法过于繁琐,接着往下翻即可找到官方提供的傻瓜式的 docker-compose.yml 和 .env 文件,直接下载并放到自己的目录下即可使用 docker-compose 进行集群搭建。1. 把 docker-compose.yml 和 .env 下载并放到本地同一目录下,需要需要注意的是要修改一下 docker-compose.yam 的 kibana 的配置,在环境变量加上 i18n 的设置,指定为中文,不然默认搭建出来的是英文的 kibana。
2024-10-25 16:54:04
347
原创 使用 Go 读写锁(sync.RWMutex)实现简易的缓存
在开发的过程中,为了保证并发读写的安全,会使用到 sync.RWMutex 对共享资源进行保护,以下就用读写锁实现一个简易的 kv 缓存。
2024-10-15 14:09:18
318
原创 本地配置多个ssh key,实现一个代码托管平台多个账号切换
因为是同一个托管平台,仓库地址都会类似于 git@codeup.aliyun.com:xxx/xxxx.xxxx.git ,托管平台的服务地址(codeup.aliyun.com)是一样的,因此需要对每个号进行下配置,让两个号走不同的 ssh key。这时候这个别名后的仓库在克隆时就会去走你第一步指定的 ssh-key,另外一个账号也是同理,就实现了同一个托管平台下使用不同的账号来操作不同的仓库。
2024-08-05 16:23:24
367
原创 k3s生成新证书,解决unable to connect to the server: x509: certificate is valid for xx.xx.xx.xx的问题
最近在使用阿里云流水线发布应用的时,发现 k3s 默认的证书仅针对所在服务器的内网有效,在流水线添加集群的时候会报错。
2024-07-24 09:25:04
688
2
原创 脏活累活通通交给defer,从此代码稳如老狗
golang中的defer关键字可以帮我们干很多脏活累活,合理的使用它能让我们的代码更稳而且也更可读,同时也提高了代码的可读性
2024-03-04 17:16:21
436
1
原创 vue2引入monaco-editor,封装以及常见问题踩坑总结
十分重要,首先,要找到跟当前vue版本匹配的monaco-editor版本,我是用的是vue2.x,尝试了最高支持的版本是monaco-editor 0.30.1,同时要实现代码提示需要引入与之匹配的的monaco-editor-webpack-plugin,这里我引入的是 6.0.0,亲测能完美实现代码提示。这几天使用业务中有一个需求是需要做代码在线编辑,因此对比了下首先想到了monaco-editor,但是实测引入到项目中会遇到一些坑点,因此将引入流程和坑点进行梳理。
2024-03-04 11:19:02
5672
6
原创 组件不能动态重载的曲线救国的方法,实现不刷新页面重载组件
最终曲线救国的方案就是:给这个组件绑定一个key,并且在单击这个"一键展开"的时候将reloadKey+1,这样就能实现重载这个组件,但是会有一个小小的闪烁,所以可以给组件加上缓入的动画,其他第三方组件如果不支持动态重载的话,也能用绑定key的方式让它动态加载。在写一个json格式化预览页面的时候,需要实现一键展开/收起右侧预览区json结构,但是这个组件提供的这个参数只能在组件加载时就配置好,并不能动态去进行修改这个参数实现展开/收起状态。
2024-03-01 13:50:58
557
原创 JSON.parse导致数字精度丢失末尾变成0问题解决方案
在写一个JSON预览小工具时发现JSON.parse遇到超长数字时会导致精度丢失,超出了安全范围之后的数会被替换为0,比如。其实解决方法很简单,只需要引入json-bigint库进行parse即可。完成如上操作,超出安全范围的数字即可被转换为字符串正常显示了。step2.使用json-big进行parse。step1.引入json-bigint。在JSON.parse之后会被变成。
2024-02-29 15:22:09
6371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人