MySQL 基础
其他 MySQL 相关技术沉淀文章 MySQL Insert 死锁问题研究 MySQL 自增列 Duplicate Error 问题分析 MySQL DateTime和Timestamp时区问题 一、基础1.1 常用索引有哪些普通索引、唯一索引、主键索引、组合索引、全文索引 1.2 聚集索引和非聚集索引区别聚集索引(Clustered Index)和非聚集索引(Non-clustered Index)是两种不同类型的数据库索引,它们的区别如下: 聚集索引(Clustered Index): 聚集索引中的数据行和索引的顺序相同,即它将数据行本身和索引按照相同的排序方式存储在一起。 一个表只能有一个聚集索引,因为数据行只能以一种顺序存储。 聚集索引通常用主键建立,但也可以使用其他具有唯一约束的列。 数据..
更多操作系统基础
其他 OS 相关技术沉淀文章 Linux内核虚拟地址空间 Linux0.11启动过程 一、基础1.1 进程、线程、协程区别 进程:进程是操作系统管理和调度的基本单位,拥有独立的内存空间和系统资源,通常适用于不同程序的并发执行。 线程:进程内的执行单位,共享相同的内存空间和资源,适用于一个程序内部的并发和多任务处理。 协程:编程语言实现的轻量级线程,在单个线程上实现多任务的协作式并发,适用于高并发场景和异步任务处理。 1.2 进程、线程上下文切换进程上下文切换开销: 进程上下文切换涉及保存当前运行进程的CPU寄存器状态、程序计数器、堆栈指针、内存管理信息(如页表)等,并恢复新进程的上下文信息。这些操作会带来很大的开销,因为: 上下文切换需要CPU从用户态切换到内核态,导致额外的运行时间。 需要保存和恢..
更多Golang基础
其他 Golang 相关技术沉淀文章 Golang Memory Model Golang 编译器优化那些事 深入理解 Golang Stack Golang “锁”事 Golang Context 详解 Go 泛型初窥 Go源码——Sync.Mutex Go源码——runtime.semaphore Go源码——runtime.mutex Go源码——Sync.Map的前生今世 GO非类型安全指针-Unsafe.Pointer Go 自定义引用包的域名 一次线上内存使用率异常问题排查 Go for-range 的奇技淫巧 Golang RWMutext 代码走读 Golang 内存对齐问题 Golang基础 - 脑图链接
更多网络基础知识
一、TCP基础知识1.1 TCP和UDP的区别?TCP是面向连接的协议,在收发数据前必须和对方建立可靠的连接,建立连接的3次握手、断开连接的4次挥手,为数据传输打下可靠基础; UDP是无连接的,不可靠传输,尽最大努力交付数据,协议简单、资源要求少、传输速度快、实时性高的特点,适用于对传输效率要求高,但准确率要求低的应用场景,比如域名转换(DNS)、远程文件服务器(NFS)等。 1.2 TCP 为什么需要三次握手?为什么需要四次挥手?如何保证可靠?为什么需要三次握手? 三次握手能确保双发的收发能力(确定双通道通畅)是OK。 为什么需要四次挥手 因为TCP是全双工协议,双方都可以发送和接收数据。当一方决定终止连接时,另一方可能还有数据需要发送。 如何保证可靠? 错误检测:TCP使用校验和功能来检测数据包在..
更多缓存基础技术
其他 Redis 相关技术沉淀文章 Redis 源码分析(一) :sds Redis 源码分析(二) :ADList Redis 源码分析(三) :dict Redis 源码分析(四) :intset Redis 源码分析(五) :ziplist Redis 源码分析(六) :quciklist Redis 源码分析(七) :skiplist Redis 高可用解决方案总结 基础1.1 Redis 常用的数据结构Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 Sting 、SDS(embstr、raw) List qucklist (ziplist、linklist) Set (dict、 ..
更多