自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

五岁小孩的博客

欢迎来到我的技术博客!这个博客是为了分享和探讨关于 Golang 技术和应用而创建的。 在这个博客中,我将分享关于 Golang 的最佳实践、技巧和经验。我将深入探讨 Golang 的核心特性,如并发编程、内存管理、标准库等

  • 博客(64)
  • 收藏
  • 关注

原创 Go 源码之旅-开篇

Go 源码之旅 开篇

2024-04-10 14:40:34 394

原创 如何给自己的网站添加 https ssl 证书

相信大家都知道 https 是更加安全的,特别是一些网站,有 https 的网站更能够让用户信任访问接下来以我的个人网站五岁小孩 (jxy.xj.cn)为例子,带大家一起从 0 到 1 配置网站 https证书是 腾讯云免费证书、服务器也是腾讯云的、使用 docker 部署的 nginx申请证书 -> 下载证书 -> 配置nginx -> 重启 ngix。

2024-04-08 19:54:26 6805 4

原创 如何实现小程序滑动删除组件+全选批量删除组件

如何实现小程序滑动删除组件+全选批量删除组件采用 uni-app 实现,可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【滑动删除组件+左滑删除+全选批量删除组件】,一键导入示例运行即可。

2024-04-05 15:28:45 814 2

原创 小程序实现微信 【我的】界面

小程序实现仿微信 【我的】界面采用 uni-app 实现,可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【小程序实现仿微信 【我的】界面】,一键导入示例运行即可。

2024-04-05 15:24:22 1104

原创 如何实现仿微信界面[我的+首页聊天列表+长按菜单功能+添加菜单功能]

如何实现仿微信界面[我的+首页聊天列表+长按菜单功能+添加菜单功能]采用 uni-app 实现,可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【仿微信界面[我的+首页聊天列表+长按菜单功能+添加菜单功能]】,一键导入示例运行即可。

2024-04-05 15:19:15 736

原创 Go 源码之读写锁 sync.RWMutex

Go 源码之读写锁 sync.RWMutex

2024-04-02 23:50:12 605

原创 Go 源码之互斥锁 Mutex

Go 源码之互斥锁 Mutex

2024-04-01 16:29:38 1099

原创 Go 源码之 gin 框架

gin.New()初始化一个实例:gin.engine,该实例实现了http.Handler接口。实现了ServeHTTP方法注册路由、注册中间件,调用addRoute将路由和中间件注册到 methodTree 前缀树(节省空间,搜索快)下,methodTree 的非叶子节点是相同 method 的 url 的最长公共前缀字符串,叶子节点是完整的 url 路径。

2024-03-31 15:30:25 902

原创 Go 源码之 Chan

Go 源码之 Chan

2024-03-29 17:08:18 1214

原创 Go 源码之切片 Slice

Go源码之切片 Slice

2024-03-28 17:22:45 642

原创 Go 源码之 Sync.Map

Go 源码之 Sync.Map

2024-03-26 16:17:46 909

原创 Go 源码之 Map

Go 源码之 Map

2024-03-25 18:43:01 883

原创 gorm实现多对多映射,以及预加载排序

gorm实现多对多映射,以及预加载排序

2024-03-24 14:04:29 570

原创 Go 源码之 gorm 的字段 clone 的设计

clone值描述设置1创建 DB 的默认值,表示 全新 DB,但是复用db.Session如果NewDb=true时,则clone=12则只复用 配置和Statementdb.Session如果NewDb=false时,则clone=10则直接复用原 dbdb.Where 等链式调用clone = 1表示全新的db句柄;open创建时,clone默认=1,db.Session如果NewDb=true时,clone=1clone = 0。

2024-03-23 10:20:46 685

原创 Go 源码之 gorm

实例都会有一个Statement的字段,Statement就是我们真正要执行的语句,我们的 Chain Method 和 Finisher Method,事实上都是在修改Statement这个结构体。gorm处理并发冲突的方法和golang的context相似,通过复制db结构解决;等等,这些在语句执行被执行前,设置和修改语句内容的,都叫 Chain Method。等等,会设置和修改语句内容,并执行语句的,都叫 Finisher Method。方法特定调用的简写,底层都是调用的。

2024-03-22 21:07:30 1058

原创 Go 源码之 Context

在 Go 语言中,context用于管理请求的生命周期和取消操作context提供了一种方便的方式来传递取消信号可以设置超时时间用于跟踪请求的上下文中的相关信息context的使用可以提高代码的可维护性和可读性,它使得处理并发任务更加安全和可靠在 Go 源码中,contextcontext 接口定义了基本的操作context 的具体实现通常使用协程来管理和传播取消信号通过传递 context 对象,不同的函数可以共享和处理相同的上下文信息使用context正确传递和使用context。

2024-03-22 21:05:54 720

原创 栈和堆的数据结构

都是计算机科学中常用的数据结构。

2024-03-22 20:59:22 903

原创 分布式理论 CAP + Base

Base:基本可用(Basically Available)和最终一致性(Eventually consistent)CAP 规则下 AP 模型 的延伸,AP + Base,实现 服务高可用 + 数据最终一致性最终一致性:也就是允许节点之间的数据出现短暂的数据不一致情况,但是节点高可用。

2024-03-21 10:36:42 454

原创 golang内存分配

在程序运行过程中,垃圾收集器会自动管理内存的分配和回收,以确保程序不会出现内存泄漏或者内存溢出等问题。总之,Go语言的内存分配由垃圾收集器负责管理,程序员可以使用make和new函数进行堆分配,也可以使用函数调用进行栈分配。在堆分配中,需要手动释放不再使用的内存,否则会造成内存泄漏。但是,在Go语言中,由于有垃圾收集器的存在,程序员通常不需要手动释放内存。但是,栈分配的内存大小通常比较有限,因此不能用于分配大量的数据。栈分配是通过函数调用来实现的。Go语言中的内存分配可以通过两种方式进行:堆分配和栈分配。

2024-03-21 10:36:11 425

原创 mac 解决 go link name must refer to declared function or variable

在 执行 go mod tidy 时报错,如下。go link name must refer to declared function or variable

2024-03-21 10:35:38 472

原创 go 字符串高效拼接

最常用的方法肯定是 + 连接两个字符串。这与python类似,不过由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。

2024-03-21 10:18:58 315

原创 (大白话)一口气带你学完 flex 布局

Flex是Flexible Box的缩写,意为”弹性布局;任何一个容器都可以指定为Flex布局。十分简单灵活,几行代码就可以实现各种页面的的布局;彻底摆脱各种 float、display、position。采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目基础代码。

2024-03-20 19:40:49 727

原创 遍历二叉树

先序遍历可以想象为,一个小人从一棵二叉树根节点为起点,沿着二叉树外沿,逆时针走一圈回到根节点,路上遇到的元素顺序,就是先序遍历的结果。

2024-03-20 19:15:20 270

原创 recover 之后打印 panic 的调用栈

【代码】recover 之后打印 panic 的调用栈。

2024-03-20 19:14:49 158

原创 goalnd debug操作

goalnd debug操作有劳各位看官 ,你们的支持是我最大的动力!!!同时也欢迎大家在评论区提问、分享您的经验和见解!!!

2024-03-20 19:14:14 357

原创 服务 OOM 情况分析

简称内存溢出,正常情况下服务是部署在服务器上的,oom表示服务占用的内存达到服务器的可用内存,如果是k8s的话,pod是可配置服务最大的内存,超过则oom。所有会导致内存增大并且溢出的可能性。

2024-03-20 19:13:44 211

原创 Go 的 recover

recover 是用来捕获程序的 panic 的,需要和 defer 配合使用// 有效recover()// 生效的范围有问题,panic(1)在第一个defer中没用recover,直接panicrecover()panic(2)panic(1)// 无效主协程的recover不能处理子协程的panic,子协程的panic只能子协程自己处理,一个协程中最上层能够捕获下层的panic。

2024-03-20 19:13:12 341

原创 go 的 struct 能不能作为 map 的 key

struct可以作为map的key,只要其所有字段都是可以比较的即可。

2024-03-19 17:03:54 682

原创 go 的 struct 能不能比较

相同类型的struct的实例值可比较: A1 = A2。相同类型的指针类型的实例值可比较 &A1 = &A2。不同类型的struct不可比较:A1!

2024-03-19 17:03:24 469

原创 Go 通过 hash 判断文件是否被修改

通过一下函数对指定文件进行hash md5,生成md5字符串,修改文件后再生成新的md5字符串,两个对比即可知道文件是否有改动。

2024-03-19 17:02:32 612

原创 goalng 格式化 proto

保存Goland配置并重启Goland,proto文件发生修改则可立即被格式化。设置—Tools—File Watchers—新增。

2024-03-19 17:02:01 914

原创 分布式唯一ID生成

雪花算法生成的ID是纯数字且具有时间顺序的。

2024-03-19 17:01:28 616

原创 protoc 自定义插件生成代码

个人博客地址正常根据proto生成对应的go代码首先安装 protoc编译工具,然后安装go代码生成插件go install github.com/golang/protobuf/protoc-gen-go@latestprotoc --go_out= [文件生成的位置] [proto所在的目录]加上-I 则表示生成某个文件时会搜索需要导入的其他proto此时生成的只有go代码,如果需要生成grpc连接客户端,则需要。

2024-03-18 14:19:30 498

原创 使用decimal包解决golang浮点数运算失真

decimal建议只用做计算;不建议用来字符串和浮点数之间转换,比如Decimal 转float64 会自定约算小数点,而且大量数据计算下性能差。

2024-03-18 14:18:53 537

原创 Go 单元测试中 testing 包的数据类型M/T/B/PB

testing.M对main方法进行的测试testing.T对函数/方法进行单元测试testing. B对性能进行的测试testing.PB。

2024-03-18 14:18:22 1172

原创 go去除时间的时分秒

如2021-12-18 12:14:16 格式化为 2021-12-18 00:00:00。

2024-03-18 14:17:52 388

原创 Go 基准测试 Benchmark

Go 基准测试 Benchmark

2024-03-18 14:17:20 1083

原创 go 打印错误时同时输出trace调用栈

go 打印错误时同时输出trace调用栈。

2024-03-17 21:24:49 203

原创 为什么不推荐使用else if

当然是为了简洁易读啦。

2024-03-17 21:24:19 354

原创 使用Bitmap设计数据库单个字段保存多种组合状态

BitMap 的基本原理就是用一个bit 位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。= 0 或者 1280 & 1024 = 1024。1280 & 256!=0 或者 1280 & 256 = 256。& 表 两个数相同位数都为1 则为结果为1,反之为0。因此2的n次方在二进制中只有一个bit位为1。如 2的8次方:100000000。2的n次方 相当于把1往左移n位。

2024-03-17 21:23:46 309

小程序滑动删除组件+全选批量删除组件+附源码

使用 uni-app、uview 组件开发,全端(微信小程序、QQ小程序、抖音小程序等等) 支持滑动删除组件、支持左滑删除、长按进入批量删除、全选删除、长按弹窗删除、 组件式开发,文章后面提供了源码下载,可以一键导入到 HbuilderX 开发工具,一键运行示例体验

2024-04-03

uni-app+小程序+纯canvas 转盘

纯 canvas 画布实现的转盘,使用 uni-app 、uni-ui、canvas 实现,理论上是支持全端(如微信小程序、支付宝小程序、抖音小程序等等)部署,不同小程序可能存在样式上差异 直接下载后使用 HbuilderX 导入即可使用 功能 * 轮盘转动 * 自定义转盘选项 * 支持设置选项权重,按权重进行抽奖 * 支持转速减速调整,模拟真实转盘转动 * 支持选项颜色设置 使用场景:轮盘、转盘、抓阄、抽奖、替你做决定、做选择、今天吃什么、周末去哪里玩等等都可以自定义转盘的内容

2024-03-27

uni-app 实现小程序 仿微信 我的界面

使用 uni-app 实现小程序 仿微信 【我的】界面

2024-03-30

微信小程序引导组件【添加到我的小程序】

使用 uni-app 实现的 微信小程序引导组件 component,用户点击按钮,会弹窗提示引导用户【添加到我的小程序】

2024-03-30

空空如也

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

TA关注的人

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