-
MySql:分库、分表、分区,我平时常用分区和归档分表,系统总结一下
原则上来说,分库、分表、分区可以同时存在单表抗2000万数据量问题不大,但具体的数据里还是要看记录大小、存储引擎设置、硬件配置等(简单来说就是B+树最多三层,别超过了)阿里巴巴建议:单表行数超过 500 万行或者单表容量超过 2GB之后,才需要考虑做... -
简诉下ES,平时只使用其搜索,不咋会介绍
数据模型基于文档的搜索引擎,它使用 JSON 文档来存储数据。ES中,相关的数据通常存储在同一个文档中,而不是分散在多个表中 节点 主节点 候选主节点(Master-eligible Node):可以被选举为主节点的节点。主节点主要负责集群本身的管理... -
内存管理的栈和堆(结合内存逃逸一起看)
栈(Stack)定义与特点• 栈是线程私有的内存区域,每个函数调用时会在栈上分配一块独立的内存空间(称为“栈帧”),存储函数的参数、局部变量和返回地址。• 自动管理:栈内存的分配和释放由编译器自动完成,遵循后进先出(LIFO)的顺序,函数执行结束时,... -
go的内存逃逸,为什么逃逸,怎么避免
在 Go 语言中,“内存逃逸”指的是本来可以分配在栈上的变量,由于它的引用超出了局部作用域(或者编译器认为有这种风险),而被分配到了堆上,从而增加了 GC 的负担和内存分配开销。 为什么会发生内存逃逸? 返回局部变量的指针如果一个函数返回局部变量的... -
饥饿模式
并发原语http://laiyong.wang/2024/06/24/concurrentPrimitive/ 一、饥饿模式的设计背景1. 问题场景1234567891011121314151617181920// 假设存在大量高频的锁竞争func ... -
为什么要有GMP调度解决了什么问题、如何实现协程并发,抢占式调度解决了什么问题
一、传统线程模型的痛点• 线程创建成本高(默认栈MB级别)• 线程切换需要内核态切换(微秒级)• 难以支撑百万级并发 二、GMP 模型解决方案核心组件1234567891011121314151617// Go runtime 关键结构(简化版)ty... -
map的并发问题
问题map在扩容时有并发问题(map扩容时)A协程在桶中读数据时,B协程驱逐了这个桶,A协程会找不到数据,或者读到错误数据 解决方案给map加锁使用sync.map(使用了两个map,分离了扩容问题,查改使用read,新增使用dirty) sync.... -
nil,空接口,空结构体有什么区别
我的总结nil是空,并不一定是空指针nil是六种类型的零值每种类型的nil是不同的,不能比较 空结构体 是go中特殊的类型空结构体的值不是nill指针也不是nill,但是都是相同(zerobase) 空接口空接口的值也不一定是nil类型为nil,值为... -
kratos打印sql日志
开启debug即可 代码里可以这样写 1234DB := repo.data.Db.Debug()querySql := DB.DistributeCustom.Query().Where(where...)querySql.Offset(int((... -
kratos学习记录
文档: https://go-kratos.dev/docs/getting-started/start视频: https://www.bilibili.com/video/BV1t3411h7uA 从0到1写一个接口:从表里查数据并返回ent 生成...