Serendipity'Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链

Go语言内存对齐

什么是内存对齐? 内存对齐是一个源于CPU访问内存方式的概念。现代CPU优化为在对齐的地址上访问内存——即地址是数据大小的倍数。 例如: int64(8字节)理想情况下应该从8的倍数的内存地址开始 int32(4字节)应该从4的倍数地址开始 如果变量未对齐,CPU可能需要执行多次内存读取才能获取完整数据。这会降低速度。此外,如果变量跨越两个缓存行,你将受到性能惩罚,因为CPU必须加载两个缓存行
2025-05-09
开发
#Go

Go内存泄漏问题

引言 Go 语言因其强大的并发特性和自动垃圾回收(GC)机制,受到广泛欢迎。然而,内存泄漏 依然是 Go 语言开发者需要关注的问题。虽然 Go 的 GC 可以自动管理内存,但如果代码中存在 不必要的引用、Goroutine 泄漏、资源未释放等问题,内存泄漏仍然可能发生,导致 程序性能下降 甚至 崩溃。 1. Go 语言的内存管理机制 在 Go 语言中,变量的内存主要分配在 栈(Stack) 和
2025-03-22
开发
#Go

viper的“陷阱”

第一个问题:SetConfigType()真的有用吗? 问题引入 当你使用如下方式读取配置时,viper会从./conf目录下查找任何以config为文件名的配置文件,如果同时存在./conf/config.json和./conf/config.yaml两个配置文件的话,viper会从哪个配置文件加载配置呢? 12viper.SetConfigName("config")vip
2025-02-20
开发
#Go

Go语言发送邮件

邮件协议 各种事物都有一个规范,也就是协议,比如我们在浏览器里面浏览网页,需要遵循各种网络协议,我们先来简单了解一下都有哪些协议 SMTP SMTP是 简单邮件传输协议,是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。它通常在 25、465、587 端口上运行。 另外 SMTP 协议属于TCP/IP协议簇 POP3 邮局协议的第3个版本,是因特网电子邮件的第一个离线
2025-01-12
开发
#Go

Git Commit 规范

git commit 规范 1. Commit 信息的基本格式 1234<type>(<scope>): <subject><body> # 可选<footer> # 可选 2. 详细说明 2.1. type(类型) 描述本次提交的性质,通常包括以下几类: 类型 描述 feat 新功能(feature) fix 修
2024-12-11
开发
#Git

数据结构

常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构”两个维度进行分类。 分类 根据逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线性关系;而在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;图则由节点和边构成,反映了复杂的网络关系。 逻辑结构可分为“线性”和“非
2024-12-04
算法
#算法

MySql事务

1. 事务的基础概念及ACID特性 1.1 什么是事务 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务。 1.2 事务的四大特性(ACID) 原子性(Atomicity):事务是最小的执行单位,不可再分割。事务的操作要么全部成功,要么全部失败回滚。 一致性(Consis
2024-10-31
开发
#MySql

依赖注入

什么是依赖注入 依赖注入 (Dependency Injection,缩写为 DI),可以理解为一种代码的构造模式(就是写法),按照这样的方式来写,能够让你的代码更加容易维护。 在GO语言中,wire是由 google 开源的一个供 Go 语言使用的依赖注入代码生成工具。它能够根据你的代码,生成相应的依赖注入 go 代码。 而与其它依靠反射实现的依赖注入工具不同的是,wire 能在编译期(准确地说
2024-10-16
开发
#Go

Golang单机锁

sync.Mutex 核心机制 通过 Mutex 内一个状态值标识锁的状态,例如,取 0 表示未加锁,1 表示已加锁; 上锁:把 0 改为 1; 解锁:把 1 置为 0. 上锁时,假若已经是 1,则上锁失败,需要等他人解锁,将状态改为 0. 下面首先拎清两个概念: 饥饿模式:当 Mutex 阻塞队列中存在处于饥饿态的 goroutine 时,会进入模式,将抢锁流程由非公平机制转为公平机
2024-09-26
开发
#Go

trie树

定义 字典树,英文名 trie。顾名思义,就是一个像字典一样的树。 可以发现,这棵字典树用边来代表字母,而从根结点到树上某一结点的路径就代表了一个字符串。 举个例子,1→4→8→121→4→8→121→4→8→12 表示的就是字符串 caa。 实现 12345678910111213141516171819202122232425262728293031323334353637383940414
2024-08-06
算法
#算法
123…6

搜索

Hexo Fluid content:
载入天数... 载入时分秒...
总访问量 次 总访客数 人