- 博客(22)
- 收藏
- 关注
原创 Go面试题(二)
Go 的接口是「鸭子类型」,核心要讲清接口结构+动态分派+空接口 / 非空接口区别。defer 是 Go 的延迟执行机制,核心要答清执行时机+执行顺序+参数求值。4. 内存逃逸(Memory Escape)分析内存逃逸是 Go 编译器的优化策略,核心要讲清定义+原因+检测方法+影响。① 局部变量的指针被返回 / 传递到函数外部;② 切片 / 映射存储了指针类型(如),且长度动态扩容;③ 接口接收任意类型值(接口底层的存储指针,触发逃逸);④ goroutine 中引用外部变量(goroutine
2026-04-15 10:03:26
315
原创 golang面试题——轮流打印
1.写两个协程,分别轮流打印数字1-10,如协程1打印1,协程2打印2,协程一再打印3,协程2再打印4...2.扩展:从2个协程改成。
2026-03-19 11:27:53
46
原创 八种常见的设计模式
生命周期和服务一致,核心解决「资源复用(如连接池 / 配置)」问题,要保证线程 / 协程安全(Go 用 sync.Once,Java 用双重校验锁),场景是数据库连接池、全局配置、日志工具。策略模式聚焦「算法执行」,核心是「你给我对象,我帮你。:配置管理、数据库连接池、日志工具。:消息通知、订单状态变更、事件监听。:支付方式、文件解析器、消息渠道。:排序算法、促销规则、支付方式。:远程调用、权限控制、延时加载。:支付流程、文件上传、报表生成。:日志、缓存、权限、限流增强。:不修改原类,动态增强功能。
2026-03-09 12:28:02
298
原创 MySQL写时复制(COW)
客户端连接 → SQL 解析 / 优化 → 执行器调用 InnoDB 接口 → InnoDB 加锁 / 写 undo/redo log → 更新缓冲池 → 写入 binlog → 两阶段提交 → 异步刷盘 → 返回结果。
2026-02-27 11:28:06
580
原创 golang机考常考场景题汇总
写一个方法,并发从mysql、redis、http读取数据,哪个先获取到数据,返回哪个结果。本代码由trae生成。
2026-01-14 20:57:35
221
原创 常用的Linux命令
awk [选项] '模式 {动作}' 文件。85.7%的CPU时间花在了。查看go代码运行性能消耗情况。上,证实了锁竞争是瓶颈。
2026-01-13 10:48:33
340
原创 mysql分库分表
当表中数据量过大时,整个查询效率会降低,为了提升效率,要将一个表中的数据分散到多个数据库的多个表中。垂直分片从业务角度,将不同的表拆到不同库中。水平分片从数据角度,将一个表中的数据,拆分到不同的库或表中。(如按uid取模结果分到不同表中)从根本上解决了数据量过大造成的查询效率低的问题。
2026-01-07 22:01:49
761
原创 golang面试题(一)
1)部署简单部署环境依赖少;编译成机械码;直接运行即可部署2)静态类型语言编译时就能检测出隐藏的大多数问题;强类型方便阅读与重构3)并发通过goroutine可并发执行程序4)工程化比较优秀GoDoc可以直接从代码和注释生成文档;GoFmt统一代码格式;GoLint代码语法提示;测试框架内置5)强大的标准库runtime系统调度机制;高效的GC垃圾回收;丰富的标准库;简单易学;25个关键字;c语言的简洁基因,内嵌c语言语法支持;面向对象特征(继承、多态、封装);跨平台。
2025-11-15 21:00:10
984
5
原创 Golang的数据类型及底层实现原理
true/false:可以直接赋值,或通过=判断条件赋值。不同的整型类型间不能自动类型转换;强制类型转换时要注意精度丢失问题。两个不同类型的整型数不能直接比较,但各种类型的整型变量都可以直接与字面常量进行比较。没有声明类型时,类型将被自动设为float64;复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示 虚部(imag)。字符串的内容可以用类似于数组下标的方式获取,但字符串的内容不能在初始化后被。
2025-11-06 22:58:50
720
原创 GoLang的GMP调用
,通过Goroutine(G)、线程(M)和处理器(P)的协同工作实现轻量级协程的动态调度。新建G'时,G'优先加入到P的本地队列,如果队列满了,则会把本地队列中一半的G移动到全局队列。所有的P都在程序启动时创建,并保存在数组中,最多有GOMAXPROCS(可配置)个。P队列为空时,M也会尝试从全局队列拿一批G放到P的本地队列,或从其他P的本地队列一半放到自己P的本地队列。M运行G,G执行之后,M会从P获取下一个G,不断重复下去。
2025-10-30 18:09:18
1130
原创 Linux网络I/O复用并发模型
参考:【黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目】 https://www.bilibili.com/video/BV1cr4y1671t/?
2025-10-29 18:07:41
1428
原创 redis持久化和内存淘汰策略
1.noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。2.volatile-ttl:对设置了TTL的key,比较key的剩余TTL值。TTL越小越先被淘汰。3.allkeys-random:对全体key随机进行淘汰,也就是从db->dict中随机挑选。4.volatile-random:对设置了TTL的key,随机进行淘汰,也就是db->expires中随机挑选。5.allkeys-lru:对全体key,基于LRU算法进行淘汰。
2025-10-28 23:12:36
811
原创 redis数据结构及底层实现结构
(4)每次执行新增、查询、修改、删除操作时,都检查一下dict.rehashidx是否大于-1,如果是则将dict.ht[0].table[rehashidx]的entry链表rehash到dict.ht[1],并且将rehashidx++,直至dict.ht[0]的所有数据都rehash到dict.ht[1](一次迁移一个元素,该元素只能出现在dict.ht[1]或者dict.ht[0]中)(由于前一节点长度增加,后一个节点要保存前一个节点的长度,也会增加,再后一个保存前面的大小随着都需要增加。
2025-10-27 16:56:31
987
原创 Mysql的整体架构
对来自客户端的连接进行权限验证并将相关的连接信息维护到连接池中,以便于下次连接,通过Connectors组件支持多种编程语言(如Java、PHP)的交互,连接池(Connection Pool)复用TCP连接,减少三次握手开销。:提供NoSQL,SQL的API,SQL解析,SQL语句优化,SQL语句缓存等相关组件。语法分析器、查询优化器。:接收DML/DDL语句及存储过程调用1。:将SQL语句拆解为语法树,识别操作类型(如SELECT、WHERE条件)。。
2025-10-22 10:19:36
455
原创 Mysql—锁
悲观锁认为被它保护的数据是极其不安全的,每时每刻都有可能变动,一个事务拿到悲观锁后(可以理解为一个用户),其他任何事务都不能对该数据进行修改,只能等待锁被释放才可以执行,适用于高冲突场景。数据库中的行锁,表锁,读锁,写锁,以及syncronized实现的锁均为悲观锁。:属于表级锁,分为意向共享锁(IS)和意向排他锁(IX)。可重复读隔离级别时,当数据被锁定时,不能执行插入操作,说明加了间隙锁。每次操作锁定整张表,其特点是开销小、加锁快,但锁定粒度大,并发度较低,MyISAM引擎主要使用此类锁。
2025-10-21 14:33:55
817
原创 从输入网址到页面展示都经历了什么
域名相比于 IP 地址,更容易被用户,其次其还具有商业标识价值和网络导航及搜索引擎优化的作用。DNS(Domain Name System):一个专门保存域名和IP地址映射关系的服务器,它是分布式的。
2025-10-10 23:19:47
883
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅