自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小画家

求知若饥,虚心若愚

  • 博客(470)
  • 资源 (5)
  • 收藏
  • 关注

原创 第二十二:golang 中 M 0 和 G0 的区别

2025-05-29 12:08:04 105

原创 第二十六:Mysql 慢查询 开启

对原始数据造成影响叫引用类型,不造成影响叫值类型。

2025-04-14 17:59:00 135

原创 第二十六:Map的基本原理

一: 双倍扩容二:增量式扩容三:等量扩容。

2025-04-14 15:52:30 106

原创 第二十五:channel 底层原理:channel 优雅的关闭

fmt.Println(original) // 输出: [1 2 3]深拷贝,要初始化一个切片的make。关闭一个channel 通道。

2025-04-14 01:16:11 280

原创 第二十四:查看当前 端口号是否被占用

系统将显示监听该端口的进程信息,包括进程名称、进程ID、用户和协议等。-P参数表示不将端口号转换为服务名,-n参数表示不将IP地址转换为主机名。这样可以加快查询速度,并显示原始信息。netstat -tulnp | grep :3306 // 在linux 下查看是哪一个端口的进程被占用。查看具体的: ps aux | grep docker // 查找整个进程。netstat -anp tcp | grep 端口号  // 查看进程名。lsof -P -n -i :8080  // 查看进程名。

2025-04-13 19:45:41 593

原创 第二十三:内存逃逸、互斥锁 Map 线程安全

常见的内存逃逸?

2025-04-13 15:52:31 164

原创 ssh免密连接服务器

2.cd /root/.ssh目录,会看到id_rsa、id_rsa.pub两个文件,此时再其中一台服务器上该目录下新建authorized_keys;原文链接:https://blog.csdn.net/haiziccc/article/details/97611202。3.将三台机器的id_rsa.pub文件内容全部复制到authorized_keys中;4.将该文件分发到另外两台服务器 /root/.ssh目录下;1. 在三台机器上分别执行ssh-keygen;5.测试ssh连接;

2025-04-12 16:21:10 135

原创 第二十二: go与k8s、docker相关编写dockerfile

k8s中如何使用go。

2025-04-12 16:20:20 556

原创 第二十一:golang 访问HTTPS请求跳过证书验证

【代码】golang 访问HTTPS请求跳过证书验证。

2025-04-12 13:35:15 147

原创 第二十:mysql——Undo Log、Redo Log和Binlog

当读取的某一行被其他事务锁定时,它可以从undo log中分析出该行记录以前的数据版本是怎样的,从而让用户能够读取到当前事务操作之前的数据【快照读】。其中事务ID每次递增,回滚指针第一次如果是insert语句的话,回滚指针为NULL,第二次update之后的undo log的回滚指针就会指向刚刚那一条undo log日志,依次类推,就会形成一条undo log的回滚链,方便找到该条记录的历史版本。redo log 物理日志 因为mysql最终是保存在数据页中的,物理日志记录的就是数据页的变更。

2025-04-07 23:03:23 494

原创 第十九:b+树和b-树

B+ 树:与 B 树不同,B+ 树的所有数据都存储在叶节点中,非叶节点只存储键值,并且起到索引作用。数据存储集中在叶节点:B+ 树的数据集中在叶节点,不会占用内部节点的存储空间,这使得 B+ 树的叶节点可以存储更多的数据,减少磁盘 I/O 操作。B+树的叶子节点存储数据,而非叶子节点只存储指针,不存储数据。:数据存储在叶节点,内部节点仅存储键值,叶节点通过链表连接,支持高效的范围查询和较少的磁盘 I/O。一致性更高:由于 B+ 树非叶节点不存储数据,只存储键值,它们的高度更低,减少了搜索的复杂度。

2025-04-07 19:26:04 984

原创 第十八:GC 垃圾回收

垃圾回收器从根对象(如全局变量和活跃的栈帧中的变量)开始,将它们标记为灰色。然后,它遍历这些根对象,将它们引用的对象标记为灰色或黑色,直到没有更多的灰色对象为止。在这个过程中,所有可达的对象都被标记为黑色,而白色对象则被视为垃圾并回收。在垃圾回收过程中,为了防止程序执行与垃圾回收冲突的操作,Go的垃圾回收器会暂停整个程序(STW)。这意味着在垃圾回收期间,所有的goroutine都会被阻塞,直到垃圾回收完成。:活跃的,可达的,但其引用可能尚未全部被检查。:活跃的,可达的,且已被标记。函数强制触发垃圾回收。

2025-04-07 18:46:21 484

原创 第十七:堆和栈的应用

一种先进后出的数据结构如:堆排序。先进先出的结构堆由开发人员分配和释放, 若开发人员不释放,程序结束时由 OS 回收,分配方式类似于链表。参考如下代码// C 中用 malloc() 函数申请//输出:00000000003BA0C0// 用 free() 函数释放free(p1);// C++ 中用 new 运算符申请//输出:00000000003BA0C0// 用 delete 运算符释放。

2025-04-07 18:32:44 367

原创 第十六:redis 的 zset 帖子投票要点,c.param,c.Query区别

苦。

2025-03-28 19:42:47 180

原创 第十五:使用Air实现Go程序实时热重载

怎样才能在基于gin框架开发时实现实时加载功能呢?像这种烦恼肯定不会只是你一个人的烦恼,所以我报着肯定有现成轮子的心态开始了全网大搜索。Air。彩色日志输出自定义构建或二进制命令支持忽略子目录启动后支持监听新目录更好的构建过程。

2025-03-27 16:07:24 467

原创 第十四: jwt token ,refresh token(二)

ErrorUserNotLogin = errors.New("当前⽤用户未登录")中间件 Middlewears。gin框架使⽤用jwt。

2025-03-27 15:31:36 205

原创 第十三:jwt的应用 token ,refresh token

我们需要定制自己的需求来决定JWT中保存哪些数据,比如我们规定在JWT中要存储username信息,那么我们就定义一个MyClaims// CustomClaims 自定义声明类型 并内嵌jwt.RegisteredClaims// jwt包自带的jwt.RegisteredClaims只包含了官方字段// 假设我们这里需要额外记录一个username字段,所以要自定义结构体// 如果想要保存更多信息,都可以添加到这个结构体中// 可根据需要自行添加字段。

2025-03-27 15:18:49 281

原创 第十二:内存对齐

2025-03-26 16:47:31 96

原创 第十二:josn 传递参数 shouldBindJSON 和结构体的 db字段

shouldBindJSON

2025-03-24 19:37:42 207

原创 第十一:雪花算法 snow_id

案例代码:分布式ID⽣生成器器分布式ID的特点全局唯⼀一性:不不能出现有重复的ID标识,这是基本要求。递增性:确保⽣生成ID对于⽤用户或业务是递增的。⾼高可⽤用性:确保任何时候都能⽣生成正确的ID。⾼高性能性:在⾼高并发的环境下依然表现良好。不不仅仅是⽤用于⽤用户ID,实际互联⽹网中有很多场景需要能够⽣生成类似MySQL⾃自增ID这样不不断增⼤大,同时⼜又不不会重复的id。以⽀支持业务中的⾼高并发场景。⽐比较典型的场景有:电商促销时短时间内会有⼤大量量的订单涌⼊入到系统,⽐比如每秒10

2025-03-24 18:45:58 213

原创 第十:Go语言标准库flag基本使用/切换目录的config.yaml

有以下两种常用的定义命令行flag参数的方法。//定义命令行参数方式1flag.StringVar(&name, "name", "张三", "姓名")flag.IntVar(&age, "age", 18, "年龄")flag.BoolVar(&married, "married", false, "婚否")flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")//解析命令行参数//返回命令行参数后的其他参数//返回命令行参数后的其他参数个数。

2025-03-24 15:52:23 561

原创 第九:gin框架默认的日志并配置日志归档 使用zap

本文介绍了在基于gin框架开发的项目中如何配置并使用zap来接收并记录gin框架默认的日志和如何配置日志归档。我们在基于gin框架开发项目时通常都会选择使用专业的日志库来记录项目中的日志,go语言常用的日志库有zaplogrus等。网上也有很多类似的教程,我之前也翻译过一篇。但是我们该如何在日志中记录gin框架本身输出的那些日志呢?

2025-03-20 19:37:52 509

原创 第八:在Go语言项目中使用Zap日志库 / viper 调用

能够将事件记录到文件中,而不是应用程序控制台。日志切割-能够根据文件大小、时间或间隔等来切割日志文件。支持不同的日志级别。例如INFO,DEBUG,ERROR等。能够打印基本信息,如调用文件/函数名和行号,日志时间等。

2025-03-20 19:34:27 831

原创 第七:go-redis 使用

golang

2025-03-20 15:27:17 118

原创 第六:go 操作 redis-go

Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。

2025-03-20 14:54:28 1114

原创 第五: redis 安装 / find 查找目录

mac brew 安装 redis要在Mac上使用Homebrew安装Redis,你需要先安装Homebrew包管理器。如果你还没有安装Homebrew,可以通过以下步骤进行安装。

2025-03-20 14:17:32 316

原创 第四节:sqlx库使用指南

在项目中我们通常可能会使用连接MySQL数据库。sqlx可以认为是Go语言内置的超集,它在优秀的内置基础上提供了一组扩展。这些扩展中除了大家常用来查询的和外还有很多其他强大的功能。

2025-03-19 19:27:02 981

原创 第三:go 操作mysql

客户端对SQL语句进行占位符替换得到完整的SQL语句。客户端发送完整SQL语句到MySQL服务端MySQL服务端执行完整的SQL语句并将结果返回给客户端。把SQL语句分成两部分,命令部分与数据部分。先把命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。MySQL服务端执行完整的SQL语句并将结果返回给客户端。事务:一个最小的不可再分的工作单元;

2025-03-19 19:24:38 1390

原创 第二:go 连接mysql 数据库《配制mysql》

mac  mysql 安装 的步骤。

2025-03-17 18:51:45 328

原创 第一:c.Netx 嵌套执行

c.Netx

2025-03-17 16:34:55 131

原创 第二十一:Go标准库Context

给一个函数方法传递Context的时候,不要传递nil,如果不知道传递什么,就使用context.TODO()Context的Value相关方法应该传递请求域的必要数据,不应该用于传递可选参数。以Context作为参数的函数方法,应该把Context作为第一个参数。对服务器传入的请求应该创建上下文,而对服务器的传出调用应该接受上下文。当一个上下文被取消时,它派生的所有上下文也被取消。Context是线程安全的,可以放心的在多个goroutine中传递。是一个接口,该接口定义了四个需要实现的方法。

2025-03-16 17:12:19 529

原创 第二十:并发与安全锁、互斥锁 与 读写互斥锁

在Go语言中,可以使用互斥锁(mutex)来实现协程之间的数据共享和同步。互斥锁是一种机制,用于保护共享资源的访问,防止多个协程同时修改数据。总结:Go语言协程可以通过通道进行通信,通过互斥锁进行数据共享和同步。这些机制使得并发编程变得简单且高效,适用于各种并发场景。通过互斥锁的加锁和解锁操作,可以确保同一时间只有一个协程能够修改共享资源,从而实现数据的安全共享和同步。

2025-03-13 13:11:50 232

原创 第十九:channel 的使用 select 多路复用

在Go语言中,可以使用互斥锁(mutex)来实现协程之间的数据共享和同步。互斥锁是一种机制,用于保护共享资源的访问,防止多个协程同时修改数据。总结:Go语言协程可以通过通道进行通信,通过互斥锁进行数据共享和同步。通过互斥锁的加锁和解锁操作,可以确保同一时间只有一个协程能够修改共享资源,从而实现数据的安全共享和同步。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型。Go 语言中的通道(channel)是一种特殊的类型。声明的通道类型变量需要使用内置的。

2025-03-12 19:34:13 324

原创 第十八:go 并发 goroutine

channel 可以让多个goroutine 之间实现通信。

2025-03-12 13:50:00 390

原创 第十七:go 反射

reflect包在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和两部分组成,并且reflect包提供了和两个函数来获取任意对象的Value和Type。TypeOf在Go语言中,使用函数可以获得任意值的类型对象(reflect.Type),程序通过类型对象可以访问任意值的类型信息。注意:Go语言的反射中像数组、切片、Map、指针等类型的变量,.Name()空。ValueOf返回的是类型,其中包含了原始值的值信息。

2025-03-11 18:03:24 899

原创 第十六:接口定义,接口变量,空接口

/定义一个类型,一个抽象的类型,只要实现了say()这个方法的类型都可以称为sayer类型。// 不管传进来的是什么,都要打 Ta ,就要执行Ta的 say() 方法。只要实现了接口中规定的所有方法,那么我们就称它实现了这个接口。t := tiger{name: "老虎的测试"}// 打的函数,上面所有方法 都要实现 da 的这个方法。p := pig{name: "猪的测试"}// 接口不管你是什么类型,它只管你要实现什么方法。c := cat{name: "测试"},如有写操作的接口叫。

2025-03-11 17:27:56 416

原创 第十五章:go package 包的管理

作为包名,那么这个包的引入方式就称为匿名引入。一个包被匿名引入的目的主要是为了加载这个包,从而使得这个包中的资源得以初始化。需要注意的是,Go语言中不允许引入包却不在代码中使用这个包的内容,如果引入了未使用的包则会触发编译错误。packagename:包名,可以不与文件夹的名称一致,不能包含。匿名引入的包与其他方式导入的包一样都会被编译到可执行文件中。如果引入一个包的时候为其设置了一个特殊。符号,最好与其实现的功能相对应。package:声明包的关键字。函数将被执行并且仅执行一遍。

2025-03-10 23:28:54 225

原创 第十四:结构体的“继承”/结构体字段的可见性

结构体字段的可见性。

2025-03-10 22:47:54 157

原创 第十三章:go 语言定义一个接收者方法

方法和接收者注意:方法一定是属于某一个类型的 《重点》Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做。接收者的概念就类似于其他语言中的this或者self。其中,官方建议使用接收者类型名称首字母的小写,而不是selfthis之类的命名。例如,Person类型的接收者变量应该命名为pConnector类型的接收者变量应该命名为c等。方法与函数的区别是,函数不属于任何类型,方法属于特定的类型。

2025-03-10 18:28:31 335

原创 第十二章:结构体定义和结构体实例化

age int// 创建指针类型的结构体第二种方式:p3.city = "湖南"p3.name = "李磊"name: "p4的名字",age: 9,city: "广东",

2025-03-10 17:51:37 149

php精典雅php精典php精典php精典

php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典php精典

2009-04-17

PS应用PS应用PS应用

PS应用PS应用PS应用PS应用PS应用PS应用PS应用PS应用

2009-08-06

垃圾数据,麻烦管理员删除

垃圾数据,麻烦管理员删除垃圾数据,麻烦管理员删除垃圾数据,麻烦管理员删除

2019-02-18

php +smarty

php +smarty 的应用php +smarty 的应用php +smarty 的应用php +smarty 的应用

2009-08-06

JS文件开发区 JS文件开发JS文件开发

JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发JS文件开发

2009-04-16

空空如也

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

TA关注的人

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