自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小烧卖的博客

记录工作和生活感悟

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

原创 一文看懂PostgreSQL内核(架构篇)

本文从宏观介绍了pg的框架,很多细节会在之后的文章一一介绍,虽然文章开头把pg吹的天花乱坠,但是我们也可以通过pg的架构看到很多历史包袱,毕竟是一个发展30多年的数据库了。比如采用多进程模型,导致高并发的场景中显得过于笨重了;只能使用heap table作为存储引擎,不支持很多优秀的开源存储引擎;没有考虑分布式的设计,分片、HA、多主的实现都需要借助其他插件来完成,但是插件局限性很大,不如原生架构做的好。虽然 PostgreSQL 有历史包袱,但它仍然是世界上最强大的开源关系型数据库。

2025-03-15 00:06:59 839

原创 [c++]const指针总是记混怎么办?

只需记好const和* 这两个优先级即可

2025-03-01 17:31:30 223

原创 10分钟搞懂的混合逻辑时钟HLC

本文简单介绍一种分布式授时机制,用纯软件思路实现了一套去中心化,多点授时的机制。cockroachDB就用这套机制来保证事务的ACID特性。

2025-03-01 00:29:33 815

原创 复盘一次查git commit的乌龙

在一个风和日丽的下午,我喝着咖啡敲着代码,突然就接到平台组测出来这个这次TDengine发版的性能比上次发版的性能下降了不少,然后就是自然而然甩锅接锅的环节,当锅甩到我头上的时候,我是不以为然的,自认为我的几个改动的提交怎么会影响性能?所以理所当然的去revert掉我的几次提交,然后再测一下性能。结果好巧不巧,测试用例本身就是概率性复现性能问题,结果我revert掉测试刚好没有发现性能问题,此时的我更加理直气壮了,这肯定不是我的锅啊!

2025-02-26 21:23:11 397

原创 线程同步方式的对响应速度影响这么大?

更让人惊讶的是,这个结果有些违反常识——循环sleep的响应速度居然超过了条件变量和信号量这两种同步方式!为此,我咨询了DeepSeek,但它似乎也遇到了知识盲区。这让我不禁感慨,AI虽然能一本正经地回答问题,但有时也会误导人类啊。

2025-02-24 19:11:15 720

原创 Golang算法(二)数据结构

栈type Stack struct { head *Node }type Node struct { data interface{} next *Node}func NewStack()*Stack { s:=&Stack{ head: &Node{ data: nil, next: &Node{}, }, } return s}func (s *Stack)Push(data interface{}) { n:=&amp

2020-11-04 20:09:36 798 1

原创 数据库事务相关理论知识

数据库事务基本概念什么是事务事务ACID特性原子性(atomicity)一致性(consistency)隔离性(isolation)持久性(duration)存储结构串行化调度隔离级别及实现方式读未提交读已提交可重复读可串行化实现方式锁基本概念什么是事务事务(transaction)是构成单一逻辑工作单元的操作集合。是访问并可能更新各种数据项的一个程序执行单元。事务ACID特性原子性(atomicity)事务操作在数据库中要么全部正确反映出来,要么完全不反映。一致性(consistency)

2020-10-23 11:15:13 318

原创 Goroutine和OS线程的区别

前言Goroutine作为go语言核心的特色,与其他语言线程并不太一样,其并发性远好于其他语言多线程实现方式,那么Goroutine和线程的区别有哪些呢?区别内容goroutine线程内存占用动态栈(2K~1G)固定栈(2M)调度自带的调度器,不用内核上下文调用scheduler内核函数状态保存到内存中GOMAXPROCS可以通过该参数设置cpu并行数,并且阻塞休眠都不会消耗其他Goroutine去调度需要系统线程去调度标识没有ID,无法通过全局查

2020-10-20 17:13:25 145

原创 Git常用知识

git基础建仓git init //去本地项目目录中建仓git clone <url> //复制远程的项目到本地目录中文件状态上图把项目文件状态分为:未跟踪和已跟踪;已跟踪的文件有三种情况:未修改、已修改、放入暂存区查看当前文件状态:git status跟踪文件(未跟踪–>已跟踪)放入暂存区(修改–>暂存区):git add <filename>忽略文件:创建一个.gitignore文件,用通配符去设置需要忽略的文件。详见https:/

2020-09-30 15:17:07 126

原创 正则表达式和通配符详细介绍

通配符通配符是bash的操作环境中,为了增强代码的处理数据能力而出现的哦,限定在shell中使用,也就是在别的语言环境中用不到哟,命令行中grep,ls,find用通配符即关键字查找或其他操作。其中常用的通配符如下:符号意义*代表0~∞个任意字符?代表1个任意字符[ ]代表1个括号内的字符[-]代表1个括号连续范围内的字符[^]^符号代表取反,即1个不是括号内的字符正则表达式正则表达式出现的地方就多了,除了操作系统中ls,cd一些指令不支持,

2020-08-20 20:36:22 647

原创 sql测试语言Sqllogictest

关于Sqllogictest原文链接:https://www.sqlite.org/sqllogictest/doc/trunk/about.wiki测试脚本注释:#不要求返回结果的语句(如建表,增删改):每个语句后接一个SQL命令,预期成功ok,预期失败errorstatement ok #注意末尾不要加 ';'statement error #查询语句预期返回结果并进行比较query <type-string> <sort-mode> <label&

2020-08-20 17:07:31 630

原创 Golang算法(一)排序和分治

Golang算法学习,持续更新排序插入算法排序插入算法思想:想象成抽牌,左边是手上的牌,右边是牌堆,从右边不断抽取牌,并且同坐边一一比较,发现合适的位置就插入。时间复杂度:n~n^2;空间复杂度:1难点:查找到比自己小的数或者循环到-1时,退出循环,此时计数会-1,因此插入数的时候别忘了+1func insertion_sort(arr []int) { for i := 1; i < len(arr); i++ { temp := arr[i] j := i - 1 fo

2020-07-24 19:20:15 329

空空如也

空空如也

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

TA关注的人

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