自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(286)
  • 资源 (12)
  • 收藏
  • 关注

原创 Golang 中的 EOF 与 read: connection reset by peer 错误深度剖析

在 Golang 网络请求中,我们经常会遇到两种常见的错误:`EOF` 和 `read: connection reset by peer`。这两个错误虽然看似相似,但实际上有着本质的区别。这篇文章将深入探讨这两种错误的原因、区别以及如何优雅的处理它们。

2024-08-07 16:20:51 1418

原创 为什么你应该在代码中消除 “context deadline exceeded“ 错误

在 Go 语言中,`context` 包提供了一种跨 API 和进程边界传递请求作用域值、取消信号以及超时信号的方式。使用 `context` 可以帮助我们更好地控制 goroutine,避免 goroutine 泄漏等问题。

2024-06-14 12:12:52 3365

原创 gorm 中 MySQL 错误码映射与主键冲突错误处理

在使用 gorm 处理数据库操作时,尤其是针对 MySQL,有时我们会遇到 golang 标准库`errors.Is`函数无法直接识别特定的 gorm 错误类型的情况,如主键冲突错误。尽管 gorm 提供了`gorm.ErrDuplicatedKey`来表示此类错误,但在原始错误返回中并不能直接通过`errors.Is(err, gorm.ErrDuplicatedKey)`来进行判断。本文深入探究 gorm.io/driver/mysql 包中的错误转换机制...

2024-03-27 17:34:20 721 3

原创 深入Go语言:高效基准测试与性能分析指南

我们从头到尾深入探讨了如何用Go语言做基准测试,让你的代码跑得更快更高效。

2024-01-11 20:25:13 1363 1

原创 Ubuntu 上的终端革命:一站式 Zsh 和 Oh My Zsh 安装配置指南

本文介绍了如何在Ubuntu系统上安装和配置zsh和oh-my-zsh,包括基本安装步骤、配置插件等操作。提高终端的使用效率和定制性。

2024-01-03 18:24:18 10442

原创 GORM 中SQL、慢SQL打印日志传递 trace ID, Kratos框架输出日志trace id

这里我使用的log组件是kratos框架的log组件,设置好zap后注入为全局log。创建连接的地方注入我们重写后的自定义Logger。自定义的重写实现。最后,在查询的地方,带上。

2023-09-25 19:09:50 4834

原创 Mac 手动安装 sshpass

Mac 下手动安装免重复分步输入密码工具 sshpass

2023-09-06 20:19:33 4521

原创 为什么这么设计—— Go的GC

程序的全局变量和静态变量:这些变量在整个程序执行过程中都可以被访问到,因此垃圾回收器会将它们作为根节点。程序的调用栈中的变量:这些变量在函数调用过程中被创建,并在函数返回时被销毁。因此,在函数调用期间,它们被认为是根节点。当前执行的Goroutine:在 Go 语言中,Goroutine 是轻量级的线程,它们可以独立地运行,因此当前执行的Goroutine也被认为是根节点。强三色不变式(Strong Tri-Color Invariant):在任何时刻,灰色对象不会直接或间接引用白色对象。

2023-08-12 19:00:18 3573

原创 golang sync.singleflight 解决热点缓存穿透问题

在 `go` 的 `sync` 包中,有一个 `singleflight` 包,里面有一个 `singleflight.go` 文件,代码加注释,一共 200 行出头

2023-07-29 17:58:46 641

原创 如何在go中实现程序的优雅退出,go-kratos源码解析

通过对操作系统事件的监听,我们就可以对一些必须完成的任务进行优雅地停止,如果有一些任务必须完成,我们可以在任务开始使用 wg := sync.WaitGroup{} 来对任务进行一个Add操作,当所有任务完成,监听到操作系统的关闭动作,我们需要使用wg.wait() 等待任务完成再进行退出。我们可以注意到,在Run方法中,我们使用到了一个signal包下的Notify方法来对操作系统的关闭事件进行监听,这个是我们动作的核心,我把这部分单独整理在了。App结构体:包含应用程序的配置选项和运行时状态。

2023-07-29 14:06:23 994

原创 os.signal golang中的信号处理

在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。

2023-07-29 14:04:56 1094

原创 免费的云数据库:探索PlanetScale,划分分支的MySQL Serverless平台

最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做[PlanetScale](https://app.planetscale.com)。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开发和测试。所有的数据都是隔离的,不会相互干扰。

2023-07-12 14:34:56 10477 4

原创 SpringBoot + Kotlin 中使用 GRPC 进行服务通信

SpringBoot + Kotlin 中使用 GRPC 进行服务通信

2023-07-10 18:02:04 1297

原创 Gorm Save更新踩坑记录|Gorm Save主键冲突|Duplicate entry ‘xxxx‘ for key ‘PRIMARY

在我最近使用Gorm进行字段更新的过程中,我遇到了一个问题。当我尝试更新status字段时,即使该字段的值没有发生变化,Gorm还是提示我“Duplicate entry 'xxxx' for key 'PRIMARY'”。

2023-06-03 17:10:11 4028 4

原创 Go 单元测试高效实践

敏捷开发中有一个广为人知的开发方法就是 XP(极限编程),XP 提倡测试先行,为了将以后出现 bug 的几率降到最低,这一点与近些年流行的 TDD(测试驱动开发)有异曲同工之处。在最开始做编程时,我总是忽略单元测试在代码中的作用,觉得编写单元测试的功夫都赶上甚至超越业务程序了。到后来,业务量越来越复杂,慢慢地,浮现一个问题,就是系统对于测试人员是一个黑盒,简单的测试无法保证系统所设计的东西都可以测试到。

2023-04-21 18:30:42 727 1

原创 将本地服务通过ssh代理给外部访问(如何使用 ssh 将本地服务代理给外部访问并保持 SSH 会话的连接性)

如何使用 ssh 将本地服务代理给外部访问并保持 SSH 会话的连接性。

2023-03-09 16:08:52 5244

原创 聊天记录存储实践

公司的某款游戏在1月初接入微软小冰AI聊天功能。为了保存聊天记录并为后续的统计功能做好准备,决定将聊天记录存放在服务端。

2023-02-27 11:49:06 1204

原创 Google Cloud Storage CORS跨域允许,忽略访问控制来源标头

google storage origin 'https://xxx.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

2023-02-15 16:47:18 787

原创 在google设置静态页面 CDN加速

在google设置静态页面 CDN加速https://console.cloud.google.com/storage/browser https://console.cloud.google.com/net-services/cdn/listhttps://console.cloud.google.com/net-services/loadbalancing/list/loadBalancers

2023-02-14 11:25:58 862

原创 docker start :FAIL Hypervisor framework fails

mac 上启动 Docker 提示环境变量出错: FAIL: Hypervisor framework fails

2023-02-13 15:32:08 1286

转载 为什么mysql的delete操作不释放磁盘空间

在InnoDB中,delete操作并不会真的删除数据,mysql实际上只是给要删除的数据打了标记,标记为删除。磁盘所占空间不会变小,即表空间并没有真正被释放。

2023-02-02 11:05:51 2448

原创 nginx代理静态网站css解析异常

今天在使用ecs进行部署网页时,出现了一个问题。使用nginx代理到页面index.html路径下,同路径的资源都可以加载到,但是却无法正确加载到页面样式。打开f12,网络和控制台都没有资源异常,但页面乱成了一锅粥。本地打开是正常的,上到服务器却不行?之前使用nginx时,并没有这个问题,于是我猜测是不是nginx新的版本对配置参数进行了修改?但我翻看了nginx的文档,却没有找到。

2023-01-31 18:12:28 1238

原创 浅析鹅鸭杀中服务端的技术实现和要点

按照类型搜索房间时,玩过鹅鸭杀的玩家会有一个明显的感觉,就是一个房间内,玩家不准备,会更容易被推荐和进入;等级低的玩家创建的房间,进入速度往往远慢于高等级玩家创建的房间。每个玩家搜索到的房间,都是从人多到人少都有。鹅鸭杀有一个有趣的设定,登录后设置语言后,就同时设置了地区,匹配查询到的房间也都是同地区的。这里可以发现,鹅鸭杀的登录属于全球同服的架构,根据不同地区的网络路由到尽量近的登录服务,数据存放在一起。当 r ≥ R 时,表示发声者超出了最大范围,收听者无法听到声音。

2023-01-07 17:41:54 1928

原创 OpenGPT的11种高效用法

OpenGPT的11种高效用法

2023-01-07 15:07:48 4912

原创 从typro到Obsidian

使用了typro 3年有餘,最近看到yukang的年終博客,又一次提到了Obsidian這個軟件。很久沒有還編輯工具的我,想要折騰一下。於是 馬上開始!第一步,啥也不知道,直接下載安裝瞅一瞅,說不定會非常簡單。然後就傻眼了,一整個VSCode的風格,設置裡關於同步的功能啥也沒有說… 然後我就去google “Obsidian 教程”,發現結果是亂七八糟的,要麼保姆到怎麼安裝,要麼是說gitte密鑰。但在看了幾個文章之後,我知道,一定是要通過Obsidan-git這個插件來和github進行連結的。但是Obs

2023-01-07 14:31:42 525

原创 软件系统设计细节,你不知道的13个实践经验!

帮助你更好地理解和实践系统设计细节!

2023-01-07 14:29:55 251

转载 git 加速代理设置,单仓库设置代理,指定仓库设置单独代理

相信这种方法大多人都使用过,当使用github的时候,需要开代理,但是使用国内的git仓库或者自建的git仓库的时候,代理反而成了累赘。部分转载自技术小黑屋:https://droidyue.com/blog/2022/10/26/speed-up-git-clone-via-proxy/有时候我们对 github 的仓库进行 clone 的时候,会发现很慢,甚至是龟速,很不够效率。上面的配置好,再次执行,基本上可以得到百倍的提效。我们通过检索 git 的帮助文档发现有这样的描述。

2023-01-05 11:28:00 2827

原创 最新版 Let’s Encrypt免费证书申请步骤,保姆级教程

最近将域名迁到了google domain,就研究了一下Let’s Encrypt的域名证书配置。发现网上找到的教程在官方说明中已经废弃,所以自己写一个流程记录一下。

2022-12-05 18:35:34 11180 1

原创 Jenkins启动失败:Failed to start LSB: Jenkins Automation Server.

ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS) ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE) jenkins systemd[1]: Starting LSB: Jenkins Automation Server..

2022-12-02 14:56:51 2465

原创 Gradle重新安装后下载插件失败 Read timed out 问题解决

本地是可以拉取成功的,而本地从上面截图中地址下载一样是很慢的。经过两天的漫长折磨后,我开始寻找我本地安装gradle时,是否有什么设置。于是我想到我最开始使用gradle时,用过前同事的Gradle配置对本地gradle的配置进行过重写。在~/.gradle/init.gradle 文件中!!!

2022-12-02 14:45:37 4886

原创 go微服务框架Kratos简单使用总结

Kratos是B站开源的一款go的微服务框架,最近PS5上的 战神·诸神黄昏比较火,主角就是奎托斯。这个框架的名字就取自他。在进行框架选型时,对比了目前主流的很多go微服务框架,如Zero,最后对比之下,选择了Kratos,原因是Kratos给了开发人员更多的选择和更多的自由空间,方便自定义实现和选用很多东西,可以更快的适应已有的服务 以及 让开发者更快地上手使用(因为选用自己熟悉的工具)。

2022-11-15 17:09:49 8833

原创 java 生成grpc调用service

在java中生成grpc调用service,供java或者kotlin中使用

2022-11-15 17:08:55 1103

原创 go 管道简单入门及注意事项:管道创建,发送、接受数据,管道关闭

go 管道简单入门及注意事项:管道创建,发送、接受数据,管道关闭

2022-10-09 17:32:02 927

原创 服务端三种方式实现单设备登录

单设备登录,顾名思义,一个账号在一个app中只能在一个设备上进行登录。使用的场景例如:账号多端登录时云存档的一致性问题。

2022-09-27 20:14:29 2928

原创 Hash算法加密,BCrypt加密算法在java和go中的应用

为了信息安全,在工作中总免不了和加密算法打交道,相信大家多少都听过 MD5、SHA、BCrypt等算法。在接口加密、token校验、密码加密等等场景中,我们最熟悉的应该就是Hash算法这个名词了。hash是什么呢?密码又如何保证安全呢?如何用起来呢?本篇来进行一个简单通俗的解答。

2022-09-27 19:30:28 910

原创 正确地进行错误处理

http状态码是状态码,而不是错误码,是可以完全利用起来的。有的开发者认为,只要是预期内的错误,比如参数错误,都是可以用200返回的,然后在内部用isfailed来进行判断。目前国内的大小厂、第三方,都是统一返回200的,或许是出于一些业务考虑,可行,但并不一定最优。使用code在约定上会规范一些,更好统计。经过一些实践和积累,对错误处理进行阶段性的总结。结构体中,正确为统一一套结构体(业务返回)。预定义错误统一返回http状态码为400。其他(主要是500)为预期之外的异常。

2022-09-16 17:00:46 479

原创 go Jenkins流水线极速打包镜像上传

由于go本身打包机制良好,当依赖文件不多时,构建速度的优化可能并不明显,这时候我建议使用一体的Dockerfile直接构建,可以减少一些维护成本。在上述步骤中,第一步是打一个go的可执行文件,然后再构建一个linux环境。需要注意的是,以上的“go-1.18.6”是在Jenkins中进行安装时,起的名字,指向的是具体的插件,而不是这里填什么Jenkins下载什么。在上述构建中,最慢的步骤是go的打包,如果选择选用服务器安装go进行打包,再将打好的可执行文件直接构建成docker镜像,一定会快很多。

2022-09-08 18:18:15 1047

原创 Jenkins流水线极速打包

在java环境中使用gradle环境中的打包。需要注意的是,以上的“java8”和“gradle-6.5.1”都是在Jenkins中进行安装时,起的名字,指向的是具体的插件,而不是这里填什么Jenkins下载什么。在使用Jenkins流水线进行打包时,发现直接使用Dockerfile去构建一个java或者go程序会非常慢,go好一点也要一分钟,java则需要3分钟以上。在上述构建中,最慢的步骤是gradle的build,如果选择使用服务器进行打包,再将打好的jar包直接构建成docker镜像。

2022-09-07 18:40:00 1281

原创 提交代码触发Jenkins流水线更新

提交哪个构建哪个,或者某个指定分支提交才构建。jenkins自己的restful接口在权限认证上比较麻烦,所以我选择了Jenkins的插件generic-webhook-trigger使用下来感觉没有选错。

2022-09-07 18:39:18 661

原创 go 在gin中使用 接口限流工具redis_rate

go 在gin中使用 接口限流工具redis_rate

2022-08-29 19:35:23 1372

好用的mac系统清理软件

好用的mac系统清理软件

2022-04-29

go1.16.5.darwin-amd64.pkg

macOS x86架构 64位系统 go语言 SDK

2021-06-05

GenerateAllSetter-2.3.zip

GenerateAllSetter是一款idea插件,可以实现一键生成对象所有的set方法,在开发中非常实用

2020-12-11

JavaEE项目SSM项目所需全部jar包(mysql)

JavaEE项目SSM项目所需全部jar包(mysql),使用与Eclipse、Myeclipse等IDE中使用

2020-09-16

LeetCodePractice.rar

本人LeetCode做题练习,简单、中等、困难皆有,内含题目、解题思路、解题方法。可以有效地练习我们的数据结构和算法。一个月更新更新一次。

2020-06-18

教你如何处理好毕业论文答辩开场白和结束语.doc

将毕业设计答辩中所注意的点、开场白和结束语,学生答辩注意事项以及一些示例,帮助我们更好的应对我们的毕业季。祝大家都能顺利拿到学位!!

2020-05-14

欧美精选模板35款(可以参照答辩模板中的样式自行设置).rar

这是包含各种场景和风格的毕业答辩ppt模板素材,希望能够帮助到同在毕业季的你们,所需积分0,互相学习,乐于分享。快乐的程序员!

2020-05-14

答辩PPT模板35款.rar

这是包含各种场景和风格的毕业答辩ppt模板素材,希望能够帮助到同在毕业季的你们,所需积分0,互相学习,乐于分享。快乐的程序员!

2020-05-14

Visualization.zip

此套页面可以实现我们演示二叉树、avl树、B树等数据结构的演示动画,可供学习使用,非常方便,大大有利于我们理解数据结构

2020-04-29

谷歌浏览器-最好用的调试工具.rar

强大的开发者工具,可用于web前后端的调试功能,如果你的工作是web相关工作,不防体验一下这款工具,超乎你的想象

2020-03-20

WinSCP-5.13.4-by_w_monster.rar

用来进行连接不同服务器的软件,如:可以使用Windows连接linux,并且进行传输文件,编辑等功能

2020-03-11

apache-tomcat-8.5.42.rar

apache-tomcat-8.5.42.rar javaweb运行所需服务器,汤姆猫8.x,可用于eclipse、myeclipse、idea等IDE平台

2020-02-26

空空如也

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

TA关注的人

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