- 博客(192)
- 收藏
- 关注
原创 【软件工程】tob和toc含义理解
关注技术实现细节、性能和稳定性,通常涉及底层技术选型、接口调用、容错处理等。:关注业务逻辑的设计合理性、数据一致性、用户体验等。:满足业务需求,同时保证。
2025-07-09 18:54:11
549
原创 【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
分区策略是关键:根据业务特点选择分区策略,我们按用户类型分区实现了并行处理批处理参数需要调优:避免小请求风暴:平衡延迟和吞吐BatchSize:根据数据库写入能力调整客户端复用很重要// 使用sync.Once确保单例// 初始化客户端})监控不可少// 监控批处理指标// ...处理逻辑...// 记录指标错误处理策略网络错误:重试机制数据处理错误:死信队列数据库错误:降级写入本地文件。
2025-07-09 18:52:37
995
原创 【Linux】面向小白,全流程无脑,VMware Workstation Pro + Ubuntu20.04虚拟机安装+Docker+MySQL+Redis+PgSQL+K8s+sh自动化脚本配置环境
想要↓选密码来偷懒时,是无法选中的,因为你点击聚焦到当前会话,浮窗就消失了),而且多个会话窗口如果重叠,密码选中会卡住,所以。这里也可以选22、24版本的ubuntu,只是后续apt配置可能不同,默认软件版本不同。可以预装软件,不推荐在这里勾选,版本可能比较旧,后续都可以根据需要单独下。这里要关闭当前终端,重新打开,才会发现主机名发生变化 (⊙o⊙)不用再输密码),输入一次密码,避免等会命令批量执行被打断输密码。后面对应的主机名变更一下,方便区分,这里把。,出现跳转,就可以用WindTerm连接了。
2025-07-07 18:47:28
407
1
原创 【Kubernetes】创建第一个应用指南及核心组件解析
操作命令示例说明创建资源仅创建(资源不存在时,区别于apply,资源存在时再次create会报错)更新资源创建或更新(推荐使用)查看Pod列表查看当前Namespace的Pod查看所有Namespace的Pod查看集群所有Pod查看Service查看Service列表。
2025-07-07 18:43:56
409
原创 【go】初学者入门环境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意
环境变量环境变量Win + Rsysdm.cplGOROOTGOPATHGOPATHsrcGOCACHEGOCACHE可以不配置,默认会存在这里,我的c盘紧缺,用到后面会占很多地方,所以配置到E盘go buildgo rungo versionfmt。
2025-06-28 19:18:49
986
原创 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
阶段系统作用1MySQL业务主库,负责存储真实、结构化的数据2Kafka消息中间件,做异步解耦、缓冲和流式处理3专用于搜索,支持全文检索、相关度评分等搜索功能4前端直接查 ES,提升搜索速度、支持搜索功能增强。
2025-06-25 18:52:07
413
原创 【JavaScript】Iterable可迭代对象,for..in和for..of操作区别,自定义可迭代对象实现
在 JavaScript 中,Iterable(可迭代对象)是指实现了方法的对象,这意味着它们可以被迭代(遍历)。数组(Array)字符串(String)MapSet函数的 arguments 对象NodeList(DOM 集合)特性for…infor…of遍历内容对象的可枚举属性(键名可迭代对象的值适用对象普通对象可迭代对象(数组、字符串等)原型链属性会遍历不会遍历顺序保证不保证保证能否用于普通对象可以不可以(除非实现迭代器。
2025-06-22 10:53:24
629
原创 【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql
【代码】【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql。
2025-06-06 09:50:07
546
原创 【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s
【代码】【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s。
2025-05-29 22:27:02
1501
1
原创 【Kubernetes】集群内部 Pod 与 Pod 如何通信,CNI是什么?Flannel vs Calico
CNI(Container Network Interface)插件是 Kubernetes 中负责Pod 网络通信Pod 如何获取 IPPod 到 Pod、Pod 到外部的通信如何走是否具备网络策略(安全控制)Kubernetes 默认不提供 CNI 插件,必须手动安装一个。插件常见用途是否支持网络策略是否支持 BGP/跨主机推荐人群Flannel简单稳定、入门优选❌ 不支持✅(只支持 VXLAN 传输)初学者、快速搭建Calico企业级、强大控制✅ 强大支持。
2025-05-29 20:44:35
478
原创 【Redis】热点key问题,的原因和处理,一致性哈希,删除大key的方法
这保证了在节点动态增减的情况下,只需迁移小部分数据,极大提升了系统的可扩展性与稳定性。一致性哈希是一种用于。
2025-05-28 19:54:55
879
原创 【设计模式】简单工厂模式,工厂模式,抽象工厂模式,单例,代理,go案例区分总结
提供一系列产品创建的接口,每个具体工厂创建一整套产品。用于创建一系列相关产品,适用于产品族的扩展。每个工厂可以返回多个产品实例,如 UI 工厂创建按钮、窗口、滚动条等。// 抽象产品// 抽象工厂// 支付宝产品实现fmt.Println("支付宝支付", amount)fmt.Println("支付宝退款", amount)// 支付宝工厂确保一个类只有一个实例,并提供一个全局访问点。为其他对象提供一个“代理”以控制对该对象的访问。
2025-05-28 11:08:35
1287
原创 【Redis】过期键删除策略,LRU和LFU在redis中的实现,缓存与数据库双写一致性问题,go案例
Redis 的过期键清除策略采用了惰性删除 + 定期删除的组合策略,在保证较低 CPU 开销的同时,尽可能释放内存空间。惰性删除是只在访问key的时候检查是否过期;定期删除定时进行部分key的过期检查;Redis 放弃了定时删除,是因为对每个key单独计时过期删除,会大大增加cpu负担LRU,全称,即「最近最少使用」策略,用于在内存满时淘汰最久未被访问的键。LFU,全称,即「最不常访问」策略。用于淘汰访问次数最少的键,更能避免短期热点带来的缓存污染。场景推荐方案优点需注意问题与优化点。
2025-05-27 19:00:38
1238
原创 【redis】redis内部逻辑执行不是单线程吗,为啥还要分布式锁,go的redis分布式锁案例
Redis单线程保证了单个实例内的命令原子性,但无法解决多客户端(多服务节点)对共享资源的竞争问题。分布式锁的本质是通过Redis的原子操作(如SET NX)实现跨服务的互斥控制,是解决分布式系统并发问题的核心方案之一。在Go语言中,合理实现分布式锁需考虑原子性、安全性、过期策略等细节,企业级应用中常结合业务场景选择合适的锁方案(如Redlock、Redisson等)。
2025-05-25 19:44:24
538
原创 【go】多线程编程如何识别和避免死锁,常见死锁场景分析,pprof使用指引
pprof是Go语言自带的性能分析工具,能够帮助开发者收集CPU、内存、goroutine等资源的使用情况,生成性能报告并提供可视化功能。它提供了全面的性能分析能力,是排查性能瓶颈、优化代码的重要工具。
2025-05-24 13:17:27
1154
原创 【Docker】docker compose和docker swarm区别
用于将多台 Docker 主机(物理机/虚拟机)组成一个统一的虚拟主机集群,实现容器化应用的。:让用户像管理单台主机一样管理多主机集群,简化容器化应用的规模化部署。:Docker 原生的。
2025-05-17 21:30:06
1185
1
原创 【MySQL】主要存储引擎简要介绍,mysql有了memory为啥还要用redis,面经二次优化版?
innodb:事务行级锁外键约束mvcc支持崩溃恢复适合读写均衡数据存在表空间acid事务提供一致性保障,mvcc的快照机制,使得读操作不加锁,行级锁使得并发写操作相对于myisam块很多,外键约束保障数据完整。-----------适合做财务系统,订单系统myisam:不支持事务表级锁支持全文索引适合读多写少磁盘存储blog系统,日志分析等,查询多,写入少的memory:不支持事务表锁内存存储,很快,适合高速读数据存在内存,断电丢失。
2025-05-17 20:15:13
774
原创 【计算机网络】HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3汇总讲解,清晰表格整理面试重点对比
即使某个请求的处理耗时较长,也不会影响其他请求帧的传输和响应,从而。,会消耗额外的时间和资源。特别是对于包含大量资源请求的网页,(至少 1 个 RTT 完成三次握手)、追问:HTTP/1.1 的管道化技术。作为传输层协议,主要解决了哪些。追问:HTTP/1.0 的。追问:HTTP/3 选择。回答:短连接每次请求都需。建立连接,请求完成后通过。回答:管道化允许客户端在。出于兼容性和稳定性考虑,机制,在弱网环境下能显著。追问:HTTP/2 的。(零往返时间)连接恢复。因处理复杂或网络问题。
2025-05-16 22:28:57
1189
原创 【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总
gRPC基于HTTP/2协议,原因:菜鸟教程总结版:HTTP/1.x中在HTTP/2中被解决产生原因同一个 TCP 连接上的请求必须按顺序发送,服务器也会按顺序处理请求并返回响应。HTTP/1.1 虽引入 长连接,允许复用 TCP 连接,但浏览器默认对同一域名仅建立 6-8 个并发连接(不同浏览器策略不同)当页面需要加载大量资源(如图片、CSS、JS 等)时,大量请求会被分配到有限的连接中,导致每个连接上的请求队列过长,加剧阻塞问题。HTTP/2解决方案引入 多路复用总结逻辑:ht
2025-05-16 21:59:35
868
原创 【redis】redis常见数据结构及其底层,redis单线程读写效率高于多线程的理解,
数据类型底层结构说明String根据长度和内容选择优化方式:int 表示整数,embstr 表示小字符串,raw 是通用 SDSListziplist(旧) /quicklistRedis 3.2+ 默认用 quicklist(多个 ziplist + 双向链表)Set小量整数用 intset,其他情况用 hashtableZSet哈希表查找,跳表排序;两个结构同时维护Hash字段少且短用 ziplist,否则用 hashtable。
2025-05-15 19:06:14
737
原创 【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证
客户端通过验证的签名,确保服务器身份可信,防止中间人攻击。客户端生成,用服务器加密后发送给服务器,只有服务器(持有私钥)能。双方基于预主密钥生成会话密钥(),后续(如AES)提高效率。加密用于加密用于预主密钥并非直接作为会话密钥,而是结合客户端和服务器(Client Random、Server Random),通过特定算法最终的。这增强了密钥的随机性和安全性。客户端和服务器在握手初期会(如ECDHE+AES-GCM),这决定了后续密钥交换和数据加密的具体方式。
2025-05-14 11:39:58
1087
原创 【go】binary包,大小端理解,read,write使用,自实现TCP封包拆包案例
包提供了字节序相关的编码和解码功能,常用于网络协议、文件格式或其他二进制数据的处理。字节序常量:小端序:大端序:系统原生字节序(Go 1.19+)核心函数:将数据按指定字节序写入io.Writer。:从io.Reader按指定字节序读取数据。:将整数按指定字节序写入字节切片。:从字节切片按指定字节序解析整数。
2025-05-13 16:19:13
696
原创 【git】clone项目后续,github clone的网络配置,大型项目git log 输出txt,切换commit学习,goland远程,自存档
【代码】【git】clone项目后续,github clone的网络配置,大型项目git log 输出txt,切换commit学习,goland远程,自存档。
2025-05-13 08:47:51
241
原创 【Linux】Linux内核的网络协议之socket理解
Socket 是 Linux 网络编程的核心,理解它有助于分析网络问题(如。状态)或开发高性能服务器(如 Nginx、Redis)。(文件描述符限制),默认通常是 1024,但可以调整。
2025-05-12 12:24:32
709
原创 【计算机网络】高频计网面试总结
SYN泛洪攻击属于DOS攻击,通过发送大量半连接请求,消耗服务器资源半连接指的是,三次握手中,服务器发送同步确认报文后,进入SYN_RCVD等待客户端的ACK,如果一直没收到,就会重发,浪费资源攻击者通过伪造大量假ip向服务器发送SYN同步报文,服务器回复同步确认报文,但是客户端不响应ACK,就会导致大量半连接占满队列,服务器瘫痪一般检测到大量随机ip且服务器出现大量SYN_RECV就可以判断是SYN泛洪攻击网络层:防火墙/路由器过滤异常流量限制每个ip的SYN速率。
2025-05-12 08:36:49
2229
原创 【mysql】执行过程,背诵版
如果是sql8.0之前,select会先从缓存中查找,命中则返回,由于表结构变更会导致缓存失效,已废除。解析树是SQL语句经过解析器处理后的结构化表示形式。它就像把一句SQL语句"拆解"成一个树状的结构图。
2025-04-30 16:06:01
307
原创 【go】简单问答八股,go的理解,接口,锁,channel
一个 Channel 只能传递指定类型的数据,比如。io.Writer接口只需要实现一个Write方法。发送到nil channel会永久阻塞。从nil channel接收会永久阻塞。关闭nil channel会panic。(比如文件、网络连接、缓冲区等)。示例:实现一个简单内存Writer。,不直接输出,常用于后续处理。Fprintf:格式化并输出到。Printf:格式化并输出到。Sprintf:格式化并。new 用于为给定类型。和 make 不同,
2025-04-30 11:30:33
642
原创 【go】周期定时器time.Ticker和一次性定时器Timer,使用案例,自存档
NewTicker返回一个新的Ticker,其中包含一个,该通道将在每次duration之后。节拍的由duration参数指定。
2025-04-30 11:30:02
309
原创 【go】defer捕获panic案例,自存档
在 Go 语言中,defer和recover是处理 panic 的两个重要机制。下面是一个完整的示例,展示如何使用defer语句中的recover。
2025-04-29 09:33:02
554
原创 【中间件】对中间件的认识,逻辑执行顺序go-zero中的应用案例
通俗一点讲,中间件就是:在请求到达真正的业务处理逻辑(比如controller、handler)之前先经过的一段拦截处理代码。就好像门卫,来的人(请求)都要先过一遍门卫,检查一下是否放行。一个HTTP请求的流程大致是这样请求进来 → 经过中间件A → 中间件B → 中间件C → 最终到业务逻辑Handler中间件的典型用途统一鉴权(比如检查用户Token是否合法)日志记录(记录访问日志)限流(防止接口被恶意刷爆)修改请求/响应统一处理错误CORS跨域处理(你前面做的就是!
2025-04-29 08:39:48
1078
原创 【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
跨域是浏览器安全机制;处理跨域主要是设置HTTP响应头;gin自己可以写中间件或用;go-zero直接在配置里加Cors: true;OPTIONS预检请求一定要处理,否则请求直接失败。
2025-04-28 17:53:22
1175
原创 【go】go语言slice/map的产生背景,及原理理解
先讲一下slice的产生背景,首先,go本身是有数组的,但是不会自动扩容,然而实际工作中会有很多场景是要求能自动扩容的,比如说你接用户的数据,你肯定要设置一个可以自动扩容的数组来接,因为你没办法预测他会传多大的数据,提前设置的数组过大或者过小都不合适,因此,go的slice应运而生slice结构包含一个指向底层数组的指针长度容量。这样的设置就可以看出他是一个轻量级的容器,因为实际上只是一个对底层数组的引用。slice的扩容机制,在长度超过容量的时候,如果容量<1024那么双倍。
2025-04-28 11:17:06
1382
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人