自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go语言 依赖管理

在工程代码中,每种语言基本上都有自己的依赖管理工具,比如python的pip、node.js的npm,java的maven,rust的cargo,Go语言也有提供自己的依赖库管理工具。在go1.11之后,Go语言主要使用Go modules对代码依赖进行管理。

2025-11-11 16:41:31 604

原创 go算法题

1、4个协程交替依次按顺序打印0-40。

2025-09-05 13:19:12 138

原创 Go语言 中的堆--heap

在算法题目中,我们经常遇到需要动态维护一个集合的最值(最大或最小值)的场景,例如找出动态数据流中的第 K 大元素、Dijkstra 算法中的节点松弛操作等。这些场景的共同特点是,我们不仅需要找到当前的最值,还需要高效地添加新元素和删除最值。优先队列 (Priority Queue) 是实现这种操作的理想抽象数据结构,而 堆 (heap) 则是实现优先队列最常用、最高效的具体数据结构。Golang 的标准库 container/heap 提供了一套堆操作的算法。

2025-09-02 13:28:02 592

原创 go语言基本排序算法

【代码】go语言基本排序算法。

2025-08-28 15:13:12 249

原创 消息队列相关问题之RocketMQ篇

其中,利用了 NIO 中的 FileChannel 模型将磁盘上的物理文件直接映射到用户态的内存地址中(这种 Mmap 的方式减少了传统 IO,将磁盘文件数据在操作系统内核地址空间的缓冲区,和用户应用程序地址空间的缓冲区之间来回进行拷贝的性能开销),将对文件的操作转化为直接对内存地址进行操作,从而极大地提高了文件的读写效率(正因为需要使用内存映射机制,故 RocketMQ 的文件存储都使用定长结构来存储,方便一次将整个文件映射至内存)。发布者将消息发送到主题中,订阅者在接收消息之前需要先“订阅主题”。

2025-08-10 11:08:37 1016

原创 服务日志、监控

除了应用最广泛的 ELK,还有一些其它的方案比如。日志收集有很多种方案,我们用的是。,一些云厂商也提供了付费方案,比如阿里云的。负责日志数据的可视化分析。提供数据存储和检索能力,负责将日志收集到 ES,

2025-08-10 11:01:55 401

原创 Go语言中的一些问题

Go 语言的字符有以下两种:uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。var str = "hello 你好" //思考下 len(str) 的长度是多少?//golang中string底层是通过byte数组实现的,直接求len 实际是在按字节长度计算//所以一个汉字占3个字节算了3个长度。

2025-08-07 11:53:00 1078

原创 Go语言 单元测试

单元测试是软件开发中的一种测试方法,旨在验证代码中最小可测试单元(如函数、方法、类)的行为是否符合预期,它是开发流程的重要组成部分。单元测试的目标是发现代码中的缺陷和错误,并确保代码的正确性和稳定性。Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试。在包目录内,以_test.go为后缀名的源文件都是go test的一部分,而不是go build的构建部分。

2025-08-06 20:04:13 1066

原创 Go语言 string

字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,可以说是使用最多的一个数据类型了,凡是涉及到文本处理的地方,我们都会用到字符串。在go语言中,字符串其实就是一串由UTF-8编码的字符序列。接下来看一下官方库对。

2025-08-05 20:01:45 370

原创 Go语言 反射

反射可以认为是程序在运行时的一种能力,反射可以在程序运行时访问、检测和修改它本身状态,比如在程序运行时可以检查变量的类型和值,调用它们的方法,甚至修改它们的值。使用反射可以增加程序的灵活性,简单来说,反射就是程序在运行时能够检测自身和修改自身的一种能力。

2025-08-05 17:17:08 210

原创 Go语言 泛型

函数。

2025-08-05 17:12:24 874

原创 Go语言 协程池

Worker:用于执行任务的goroutineTask: 具体的任务Pool: 池子TaskTask有一个函数成员,表示这个task具体的执行逻辑:f func() error // 具体的执行逻辑Pool定义Pool有两个成员,Capacity表示池子里的worker的数量,即工作的goroutine的数量,JobCh表示任务队列用于存放任务,goroutine从这个JobCh获取任务执行任务逻辑:RunningWorkers int64 // 运行着的worker数量。

2025-08-05 14:27:37 380

原创 Go语言 定时器

我们常常会有这样的场景:比如到了未来某一时刻,需要某个逻辑或者某个任务执行一次,或者是周期性的的执行多次,有点类似定时任务。这种场景就需要用到定时器,Go语言中也内置了定时器的实现,

2025-08-05 10:36:36 201

原创 Go语言Context

是Go语言中引入的一个标准库接口,其定义如下:这个接口定义了四个方法:主要有以下两种方式创建根context: 从源代码分析和并没有太多的区别,都是用于创建根context,根context是一个空的context,不具备任何功能。但是一般情况下,如果当前函数没有上下文作为入参,我们都会使用创建一个根context作为起始的上下文向下传递。

2025-08-04 22:50:26 184

原创 Go语言select

select是Go语言层面提供的一种多路复用机制,用于检测当前goroutine连接的多个channel是否有数据准备完毕,可用于读或写。Go语言的select语句,是用来起一个goroutine监听多个Channel的读写事件,提高从多个Channel获取信息的效率,相当于是单线程处理多个IO事件,其思想基本相同。

2025-08-04 22:41:06 438

原创 Go语言 并发安全sync

谈到并发或者并行一个绕不开的话题就是进程和线程,弄清楚进程与线程的本质是并发编程的前提,那么究竟什么是进程,什么是线程呢?

2025-08-04 22:00:05 899

原创 Go语言 逃 逸 分 析

一个变量是在堆上分配,还是在栈上分配,是经过编译器的逃逸分析之后得出的“结论”。Go 语言里编译器的逃逸分析:它是编译器执行静态代码分析后,对内存管理进行的优化和简化。在编译原理中,分析指针动态范围的方法被称之为。通俗来讲,当一个对象的指针被多个方法或线程引用时,则称这个指针发生了逃逸。决定一个变量是分配在堆上还是分配在栈上。

2025-08-04 15:22:34 973

原创 Go语言 延 迟 语 句

延迟语句(defer)是Go 语言里一个非常有用的关键字,它能把资源的释放语句与申请语句放到距离相近的位置,从而减少了资源泄漏的情况发生。

2025-08-04 00:34:09 643

原创 Go语言Channel

channel的特点:不要通过共享内存来通信,而要通过通信来实现内存共享。Go 的并发哲学,它依赖 CSP 模型,基于 channel 实现。

2025-08-03 20:01:28 833

原创 GO语言接口

所以,当实现了一个接收者是值类型的方法,就可以自动生成一个接收者是对应指针类型的方法,因为两者都不会影响接收者。但是,当实现了一个接收者是指针类型的方法,如果此时自动生成一个接收者是值类型的方法,原本期望对接收者的改变(通过指针实现),现在无法实现,因为值类型会产生一个拷贝,不会真正影响调用者。当然,上面的说法有一个简单的解释:接收者是指针类型的方法,很可能在方法中会对接收者的属性进行更改操作,从而影响接收者;也就是说,不管方法的接收者是什么类型,该类型的值和指针都可以调用,不必严格符合接收者的类型。

2025-08-03 17:22:05 615

原创 数组与切片

注意,底层数组是可以被多个 slice 同时指向的,因此对一个 slice 的元素进行操作是有可能影响到其他 slice 的。slice 的底层数据就是数组,slice 是对数组的封装,它描述一个数组的片段。的索引2(闭区间)到索引6(开区间,元素真正取到索引5),容量到索引7(开区间,真正到索引6),为5。索引2(闭区间)到索引5(开区间,元素真正取到索引4),长度为3,容量默认到数组结尾,为8。另起炉灶,将原来的元素复制新的位置,扩大自己的容量。,将新的容量将扩大为原始容量的2倍,也就是10了。

2025-08-03 09:39:51 306

原创 Map底层结构与原理

在计算机科学里,被称为相关数组、map、符号表或者字典,是由一组对组成的抽象数据结构,并且同一个 key 只会出现一次。有两个关键点:map 是由key-value对组成的;key只会出现一次。简单说就是最基本的增删查改。map 的设计也被称为 “The dictionary problem”,它的任务是设计一种数据结构用来维护一个集合的数据,并且可以同时对集合进行增删查改的操作。。哈希查找表用一个哈希函数将 key 分配到不同的桶(bucket,也就是数组的不同 index)。

2025-08-02 10:48:36 964

原创 go语言数据结构与排序算法

【代码】go语言数据结构与排序算法。

2025-07-23 12:51:31 560

原创 B树、B+树的区别及MySQL为何选择B+树

B树(B-tree)是一种平衡树结构,每个节点可以存储多个键值对,并保持有序。它通过分裂和合并节点来维持平衡,确保所有叶子节点处于同一层。节点结构:每个节点包含多个键值(keys)和指针(pointers)。键值用于搜索,指针指向子节点或数据。度(degree):B树的最小度t(t \geq 2)定义了节点的键数范围。对于一个节点:根节点:至少有1个键(除非树为空)。非根节点:键数在[t-1, 2t-1]之间。指针数:键数加1。高度平衡。

2025-07-21 19:05:38 892

原创 最短路径、最短路径树和最小生成树

用最少的边集将一个图连成任意2点可达,并且这个边集的总长度最小。保证整个拓扑图的所有路径之和最小。通常用Prim算法和kruskal算法求解。从一个指定的顶点出发,计算从该顶点出发到其他所有顶点的最短路径。网络的源点到所有结点的最短路径构成的树。,Floyd算法求解。

2025-07-16 12:17:15 270

原创 go语言中的for range

通过 for range 遍历的返回值有一定的规律:

2025-03-30 11:56:33 321

原创 一文搞懂TCP三次握手与四次挥手

数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。

2024-02-24 09:55:05 486

原创 k8s中的基础概念

【代码】k8s中的基础概念。

2024-01-11 12:22:10 836

原创 go中for range的坑以及解决方案

相信小伙伴都遇到过以下的循环变量的问题,那是因为循环的val变量是重复使用的,即仅有一份。也就是说,每次循环后赋给val的值就会把前面循环赋给val的值替换掉,所以打印出来的值都是最后一次循环赋给val的值。

2024-01-10 12:21:01 1800 3

原创 Nginx随笔

apt update。

2023-08-14 16:41:08 1622

原创 GO中Json的解析

一个json字串,需要解析出来,拿到数据。

2023-08-02 17:31:58 1745

原创 go-zero的配置及gorm、自定义返回等的引入以及扩展

go-zero引入gorm以及自定义返回错误、自定义返回数据等扩展及中间件

2023-06-30 14:46:45 2842 5

原创 openai api的go用法

最近openai火爆,研究了一下在go中的用法,采用官方的go-openai库。2、需要配置本地代理。

2023-04-14 11:08:51 673

原创 proto3 需要注意的几个问题

proto3 需要注意的几个问题

2023-02-24 15:00:08 471

原创 特殊字符转义与联合列表模糊查询

特殊字符转义

2023-02-23 14:31:12 411

原创 kratos V2 框架设计自定义返回结构以及跨域

kratos v2自定义返回结构

2022-12-22 17:31:13 1921 1

原创 cookiecutter工具

cookiecutter

2022-11-08 15:12:14 915

原创 Docker Desktop的安装

docker desktop compose

2022-10-21 14:58:54 3065

原创 Docker Compose Yaml(Yml)

docker compose yaml yml

2022-10-20 16:17:02 6516

原创 Docker与Docker Compose的安装以及Portainer容器管理工具

Docker

2022-10-19 16:54:17 4691

distpicker.js

根据2019年11月30号最新的地址代码在原有的distpicker.js文件基础之上进行添加港澳台地址的distpicker.js文件,是三级联动的插件

2019-12-10

空空如也

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

TA关注的人

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