自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (8)
  • 收藏
  • 关注

原创 每日一Go·MySQL-14、慢 SQL 产生原因全解

慢 SQL 从来不是“偶然”,而是系统设计、索引结构、执行路径共同作用的必然结果。慢 SQL 的本质:不是查得慢,而是扫描多、IO 多、锁等待多。八、原因 6:排序 / 分组 / 分页不合理。二、慢 SQL 的 7 大根本原因。十、慢 SQL 线上排查 7 步法。十三、慢 SQL 调优终极思维模型。1. 慢 SQL 产生原因有哪些?十一、慢 SQL 定位工具矩阵。十二、经典慢 SQL 场景复盘。六、原因 4:扫描行数过多。

2026-11-12 14:50:12 202

原创 每日一Go·MySQL-13、SQL 优化 10 大黄金法则

一、法则总览二、法则 1:拒绝 `select *`问题:回表成本高网络传输浪费覆盖索引失效收益:减少 IO命中覆盖索引提升 3~10 倍性能三、法则 2:WHERE 必须命中索引四、法则 3:联合索引优于多个单列索引五、法则 4:等值在前,范围在后六、法则 5:ORDER BY 必须走索引七、法则 6:分页必须优化,拒绝深分页八、法则 7:JOIN 小表驱动大表九、法则 8:减少回表,优先覆盖索引十、法则 9:避免函数 & 隐式类型转换十一、法则 10:用 EXPLAIN 驱动优化。

2026-11-11 13:32:16 214

原创 每日一Go·MySQL-12、SQL 执行计划(EXPLAIN)深度解析

EXPLAIN 显示 `key = idx`,但 `key_len` 只包含 a 和 b 的长度(范围查询导致 c 之后失效),并且 `Extra` 仍然 `Using where`。4. 查 `Extra`:`Using temporary` / `Using filesort` / `Using where` 是重点优化对象。3. `Using index` = 覆盖索引(好);1. `type`、`key`、`key_len`、`rows`、`Extra` —— 五项足以定位 90% 问题。

2026-11-10 10:36:35 338

原创 每日一Go·MySQL-11、覆盖索引 & 回表原理

MySQL 调优的核心:减少回表次数. 回表决定慢 SQL,覆盖索引决定性能上限。如果 查询字段全部在索引中,就不需要回表 —— 这就是覆盖索引。慢 SQL 的本质不是“查得慢”,而是“回表次数太多”。五、覆盖索引为什么能快 10 倍?六、覆盖索引的 3 大核心应用场景。十、面试官 6 连问(覆盖索引)三、回表与覆盖索引执行流程对比。七、什么时候不适合用覆盖索引?3. Cache 命中率更高。覆盖索引 = 以空间换时间。八、覆盖索引设计黄金法则。

2026-11-05 13:20:19 87

原创 每日一Go·MySQL-10、联合索引最左匹配原则|10 分钟彻底搞懂索引为什么“有时失效”

联合索引设计决定 SQL 性能上限,最左匹配决定索引是否真正生效。80% 的慢 SQL,都是联合索引没用对导致的。联合索引是“多字段排序结构”,不是多个索引拼接。六、索引失效 10 大经典场景(敲黑板)字段是 varchar --> 索引失效。一、为什么 MySQL 需要联合索引?索引本质是:为 SQL 访问模式服务。七、联合索引设计黄金法则(敲黑板)2. 范围查询为什么导致索引失效?联合索引:(a, b, c)五、范围查询对索引的致命影响。

2026-10-25 14:21:44 143

原创 每日一Go·MySQL-9、索引存储结构|页分裂、页合并、索引高度与磁盘

一、MySQL 为什么以“页”为最小存储单位?InnoDB 最小存储单位不是行,而是 Page(页)1 Page = 16KB1. 为什么是 16KB?

2026-10-22 10:19:08 130

原创 每日一Go·MySQL-8、索引数据结构详解|为什么 MySQL 选择 B+Tree?

一、为什么索引一定要用数据结构?

2026-10-15 13:31:06 172

原创 每日一Go·MySQL-7、MySQL 核心原理全景图谱

学习MySQL,如果只记零散知识点,很容易“会用但不懂”。

2026-10-14 14:16:55 168

原创 每日一Go·MySQL-6、日志系统全拆解

MySQL 日志系统全拆解:binlog / redo log / undo log / relay log + 两阶段提交.如果你搞不懂 MySQL 的日志系统,那么:宕机恢复、主从复制、数据一致性、事务安全性,你都只是“凭感觉”在用数据库。六、redo log + binlog 的两阶段提交(敲黑板)靠的是:binlog + relay log + 两阶段提交。四、redo log —— 崩溃恢复 & WAL 核心。如果只写数据页:随机IO + 延迟高 + 容易丢数据。

2026-09-23 22:13:13 88

原创 每日一Go·MySQL-5、锁机制全解析

真正的 MySQL 高手,拼的不是 SQL 技巧,而是:对锁机制的理解深度。答:表锁、行锁、共享锁、排他锁、间隙锁、Next-Key Lock。前提:必须命中索引, 否则: 行锁 → 退化为 表级锁扫描。InnoDB 的行锁:是加在索引上的,不是直接锁数据行。五、共享锁(S Lock) vs 排他锁(X Lock)不仅锁住 `10`,还锁住 `(5,10)` 整个区间。Next-Key Lock(记录锁 + 间隙锁)锁区间:(5,6), (6,8), (8,10)八、Next-Key Lock(终极核心)

2026-09-21 22:26:40 76

原创 每日一Go·MySQL-4、隔离级别 & 并发控制

默认隔离级别 = REPEATABLE READ在一致性 + 并发性能之间取得最佳平衡不可重复读 + 幻读并发三大问题四种隔离级别差异MVCC 运行机制ReadView 可见性判断源码地址*1、公众号“Codee君”回复“源码”获取源码pwd=jc1s。

2026-09-20 22:09:42 181

原创 每日一Go-84、从 0 到 1:用 Go 打造千万级 Excel 高性能批量处理系统(实战)

如果你需要在生产环境处理百万 / 千万级 Excel流式读取 + 并发处理 + 流式写入它们决定了:系统是否 OOM接口是否超时服务是否稳定加班费计算器:v x 小程序“加班计”源码地址*1、公众号“Codee君”回复“源码”获取源码pwd=jc1s。

2026-07-26 11:25:32 140

原创 每日一Go-83、Cobra 使用实战:10 分钟打造专业级 CLI 工具

配置完成后, 输入命令“devctl”, 然后按下 Tab 键,就能出命令的自动补全了.工程里 80% 的自动化,都可以用一个 CLI 工具解决。今天这篇「每日一 Go」,我们不讲概念、不背 API,:从 0 到 1,手把手带你用 Cobra 打造一个。到这里,你已经拥有一个工业级 CLI 框架的雏形。2. root.go --整个 CLI 的中枢。

2026-07-22 09:50:58 193

原创 每日一Go-82、Go 云原生生产环境故障排查实战:CPU 100% / 内存泄漏 / goroutine 泄漏

在 Go + Kubernetes 的生产环境中,最常见、也最让人头疼的问题之一,就是服务看起来还活着,但已经不能正常工作了。CPU 飙到 100%,QPS 掉光,Pod 不断被 HPA 扩容,日志却几乎什么都没报。这类问题往往不是代码直接 panic,而是资源被慢慢耗尽:死循环、锁竞争、GC 压力、内存和 goroutine 没有被正确释放。

2026-07-15 15:22:34 206

原创 每日一Go-81、云原生-Kind + Linkerd + APISIX + Gin:构建一套生产级 JWT 网关鉴权链路)

几乎是每个后端团队都会反复讨论的问题:是每个服务各自校验 JWT?显示验证码的脚步填写在Post-response里,这样每次请求的验证码就会显示到图片上。这里偷懒用之前写的快速生成RESTFul接口的工具来生成代码,之后再做修改。3. 修改 nodePort: 30080 ,保存退出,k8s自动重启服务。,让后端服务只关心业务本身,最终实现一条清晰、稳定、可扩展的认证链路。看见上面的输出,说明apisix到linkerd的路径打通了。

2026-07-03 15:21:11 336

原创 每日一Go-80、云原生-几分钟在 Kind 搭建 APISIX 网关 + Linkerd 微服务网格环境

在企业级微服务架构中,如何让流量既高效、安全,又可观测,一直是每位 Go 工程师关心的问题。今天,我们将在本地 Kind 集群中,手把手搭建一个的完整实践环境,让你轻松体验高可用、高可观测、零侵入的微服务架构。从客户端发出的请求,通过 APISIX 作为南北向网关进入集群,再由 Linkerd sidecar 自动管理东西向流量,实现。整个过程无需修改业务代码,Gin、Go 服务可以专注于业务逻辑,而微服务网格在后台默默保障流量安全与稳定。

2026-06-22 11:34:39 118

原创 每日一Go-78、Go服务从 2k QPS 到 2w QPS 的优化方法

常用于压测 Web / API 服务(Go、Nginx、Spring Boot、Gin 等),特点是。QPS 上不去,但 CPU、内存看着也不算满。四、第三步:热点数据不该打 DB(引入缓存)1、vx“Codee君”回复“源码”获取源码。2️⃣ HTTP Server 参数优化。二、第一步:pprof 定位性能瓶颈。0(无限,但受 MySQL 限制)资源没跑满,QPS 却上不去。1️⃣ 开启 pprof。初始代码(问题版本)CPU:40% 左右。

2026-06-17 11:01:33 420

原创 每日一Go-77、多 K8s 集群如何高效切换?一篇讲透 KubeConfig / Context / 多环境管理

在日常开发和运维中,:本地有,云端有,机房里还有。如果你还在靠「不停改」来切换集群,那一定会踩坑。这篇文章我们就来。

2026-06-14 17:29:24 267

原创 每日一Go-76(架构篇)|多集群部署 / 容灾 / Failover / Backup / 热迁移

在用户无感知的情况下,把服务从集群 A 迁移到集群 B如果你只记住这一篇的3 句话单集群没有容灾能力备份的终点是恢复,不是存下来多集群是工程能力,不是云厂商特性。

2026-06-08 10:29:52 273

原创 每日一Go-75、CI/CD 到 K8s:云原生ArgoCD / GitOps 全流程实战(Go + Gin)

从 CI/CD 演进到 GitOps,是现代云原生团队的必经之路。一、为什么要从 CI/CD 进化到 GitOps?

2026-06-05 09:10:00 355

原创 每日一Go-74、Go 云原生可观测性实战之OpenTelemetry 全链路采集:Trace + Metrics + Logs

2. OTEL Collector:作为中转站,接收Trace/Metrics/Logs,再分发给Prometheus和相关后端。本文的前提是已经安装好了Kind和kube-prometheus-stack,如果没有安装,请参考。1. Gin App:使用OpenTelemetry SDK 注入中间件。友情链接:加班费计算器(vx小程序搜索“加班计”)3. Prometheus:接收指标。七、访问prometheus。六、访问jaeger。

2026-06-04 09:34:02 381

原创 每日一Go-73、云原生成本优化 —— 资源限制 & 指标驱动扩容

IO 密集型应用:CPU 消耗不高,但处理量巨大,此时应监控。消息消费型应用:应监控消息队列堆积量 (Lag)。

2026-06-03 14:37:55 482

原创 每日一 Go-72、分布式事务 & 一致性:本地消息表、事务消息、SAGA、TCC怎么选?

1. 思想:业务操作+记录消息,在同一个本地事务里完成;然后:异步任务扫描消息表,发送 MQ/HTTP,成功后标记已发送。CAP定理告诉我们:分布式系统中,一致性(C)、可用性(A)、分区容错(P)不可兼得。1. 核心思想:把一个大事务,拆成多个本地事务 + 对应的补偿操作。包括:学习成本、理解成本、使用成本、维护成本、排错成本、接手成本。1. 核心思想:先发“半消息”,再提交本地事务,最后确认消息。适合业务:订单、支付、通知类业务。

2026-06-02 21:00:34 277

原创 每日一Go-71、理论知识:CAP 、一致性原理 、Raft 机制(简化实现一个 Raft)

因此,我们通常在 CP(侧重强一致性,如 Etcd/Consul)和 AP(侧重可用性,如 Cassandra/Eureka)之间做权衡。在分布式系统开发中,Go 语言因其原生支持并发(Goroutine 和 Channel)而成为实现共识算法的首选语言。Partition Tolerance(分区容错性): 即使节点之间的网络断开(分区),系统仍能运行。Availability(可用性): 每次请求都能得到响应(不保证是最新的)。Consistency(一致性): 每次读取都能读到最新写入的数据。

2026-05-31 14:54:27 191

原创 每日一Go-70、Prometheus + Grafana 从采集到告警的完整实战(Go + Kind)

Prometheus 是一个以时间序列为核心、通过 Pull 模型采集指标、用 PromQL 做聚合分析、最终通过告警驱动运维决策的监控系统。Grafana 是一个:把 Prometheus 里的“冰冷指标”,变成你一眼能看懂、能做决策的可视化与告警平台。kube-prometheus-stack 已自动配置好,不需要手动加。一、在Kind 集群里装 Prometheus + Grafana。二、让 Go 服务暴露 Prometheus 指标。三、让 Prometheus 抓到你的Go服务。

2026-05-29 11:31:18 328

原创 每日一Go-69、为什么装了 Istio,却感觉什么都没发生?(Sidecar 到底干了什么)

如果你装完 Istio 后的感觉是:“好像什么都没发生”那说明:它已经稳定接管没干扰你业务没引入风险这是一个基础设施最好的状态。友情链接:加班费计算器(vx小程序搜索“加班计”)*源码地址*评论区要。

2026-05-27 18:03:49 379

原创 每日一Go-68、基于 Kind 的 Istio 本地实战(完整可跑)

Istio 的强大功能(流量管理、安全、监控)是依靠在你的应用容器旁运行的一个“边车”代理(Envoy)实现的。你需要告诉 Istio 在你部署应用时自动把这个代理“塞”进去。简单来说,当你的架构从“单体”演进到“微服务”后,原本简单的进程内调用变成了错综复杂的网络调用。的 External IP,我们需要手动将 Istio 的入站服务改为。,并匹配我们在 Kind 配置中映射的端口(30000 和 30001)。三、在K8s中安装 Istio。

2026-05-26 10:17:49 274

原创 每日一Go-67、K8s 探针(Liveness / Readiness / Startup)——为什么你的服务“活着却不可用”?

但因为没有 Readiness,流量依然往这个“慢 Pod”上发,导致整体链路拖慢。你的 Go 程序刚启动,正在连接数据库或预热几百兆的缓存。此时程序进程在,Liveness 认为是好的,于是流量涌入,用户看到一堆错误。信号时,你应该手动将 Readiness 设为失败,让 K8s 提前切断流量,实现无损发布。**如果数据库挂了,你所有 Pod 都会被 K8s 重启,造成“雪崩”。下面是一个用 Gin 实现的典型例子,展示了如何区分这三种状态。

2026-05-25 09:11:36 53

原创 每日一Go-66、K8s 蓝绿发布 & 金丝雀发布实战:Service 切流量 + Ingress 灰度一次讲透

它之所以叫这个名字,是因为以前矿工下井前会先放一只金丝雀进去,如果金丝雀出了意外,说明井下有毒气,矿工就不会进去。简单来说,金丝雀发布(Canary Deployment)就是一种“先找一小拨人试用,没问题再全量推广”的策略。蓝绿发布 = 两套完整环境(Blue/Green)同时存在,通过 Service 一次性切换流量。总结起来,金丝雀发布是用最小的代价,在真实的战场上验证武器。少量流量先给新版本,逐步放量。三、什么是金丝雀发布?

2026-05-24 11:51:30 307

原创 每日一Go-65、一次搞懂 K8s 配置、扩缩容与发布:ConfigMap / Secret / HPA / 滚动更新

当配置写在代码/Dockerfile里,改个DB地址就需要重建镜像+重新发布;有了ConfigMap之后,配置和程序就彻底解耦。1. 注意:Secret默认只是Base64编码,并不是真正的加密。在生产环境中,请结合KMS(密钥管理服务)使用。它通过监控指标(CPU、内存或者自定义指标)来自动调整副本数。1. 前提条件,需要在Deployment里配置滚动更新的策略。一、ConfigMap:把“配置”从镜像里剥离出来。4. 强制滚动(不改任何配置)

2026-05-23 22:05:12 55

原创 每日一Go-64、Go工程师必看!30分钟在Docker Desktop打造高可用K8s集群实战

一、安装Kind(Kubernetes IN Docker)前提条件是你本机已经安装了Docker Desktop1. windows,终端命令模式。2. windows,手动模式下载文件放到 C:\Program Files\Go\bin下,命名为 kind.exe重启终端参考网址:https://kind.sigs.k8s.io/docs/user/quick-start/[#installation](javascript:😉二、创建集群1. 编写配置,kind-config.yaml。

2026-05-22 20:55:25 211

原创 每日一Go-63、90% 的人学不会 K8s,不是因为难,而是第一天就被名词打蒙了

你不需要告诉 K8s “怎么做”(第一步启动容器,第二步检查状态),你只需要告诉它**“最终状态是什么”**(我要 3 个运行中的 Nginx 副本),剩下的事情由 K8s 的控制循环(Control Loop)自动完成。StatefulSet:适用于有状态应用(如数据库Redis,MySQL),保证 Pod 有固定的网络标识和持久化存储。定义:Pod 是 K8s 中最小的可部署单元,一个 Pod 可以包含一个或多个紧密相关的容器。Pod 是有生命周期的,一旦销毁重启,IP就会变。

2026-05-21 14:59:22 213

原创 每日一Go-62、什么是 K8s?它能干什么?以及你必须上它的“斩杀线”

你只说一句:“服务A,用这个镜像”,K8s就会自动:找合适的节点、启动容器、接入网络、管理生命周期。这时候,服务器就从“主角”变成了“耗材”。以前,进程挂了靠人工去重启;现在有了K8s以后,容器挂了自动重启;Docker 解决的是“程序怎么打包”,K8s解决的是“程序多了,世界怎么不乱”。K8s的斩杀线,从来不是技术门槛,而是从“人开始不可靠”的那一刻开始。K8s是一个:让“系统自动保持在正确状态”的运维控制系统。不是“要不要上”,而是“立刻上,不然就晚了”。K8s,不是锦上添花,是越过斩杀线后的必需品。

2026-05-10 11:59:48 398

原创 每日一Go-61、构建云原生基石:Harbor 私有镜像仓库在企业级生产环境中的落地实践

目前,是全球及国内企业级私有 Docker 仓库(Registry)中最流行、功能最全面的选择。它最初由 VMware 开源,现在是 CNCF(云原生计算基金会)的毕业项目。相比 Docker 官方提供的简单版Registry,Harbor 提供了图形化界面、基于角色的权限控制(RBAC)、镜像漏洞扫描、多仓复制以及合规性审计等强大的企业级功能。

2026-05-08 22:04:10 460

原创 每日一Go-60、Docker 实操(Go 工程从 0 到跑起来)

访问官网 https://www.docker.com,下载Docker Desktop。下载完后,双击安装包“Docker Desktop Installer.exe”,都默认下一步安装好。在镜像仓库(https://hub.docker.com/)就可以看见你刚才push的镜像了。改变思维,赶紧上车吧!你能不能把一个服务从代码送到线上跑起来,这一步,Docker是分水岭。双击桌面上的“Docker Desktop”图标,启动Docker。把镜像导出为一个包,上传到目标服务器上,在目标服务器上再次导入。

2026-05-06 09:52:43 228

原创 每日一Go-59、云原生入门为什么一定要学Docker?

如果你是:后端开发准备学云原生或者只是想搞清楚 Docker 到底在火什么Docker 不是为了炫技,而是为了让“部署”这件事不再折磨人。*源码地址*私给。

2026-05-04 22:25:50 386

原创 每日一Go-58、NATS 如何做到高可用?NATS集群部署方式来了

NATS 支持多种集群部署方式,以下是主流部署方案:一、Docker Compose:3节点JetStream集群1. 文件结构3. 配置文件4. Go客户端连接集群方式二、K8s部署(生产推荐)在K8s中部署NATS集群,最推荐的方式是适用StatefulSet。因为NATS节点需要稳定的网络标识来建立集群内部路由,并且在开启JetStream持久化的时候需要挂载稳定的存储卷PVC。1. 定义配置2. 定义服务3. 定义控制器4. 运行5. 验证6. Go客户端连接k8s集群方式。

2026-04-27 08:53:01 96

原创 每日一Go-57、Go + NATS:微服务时代,消息队列的最优解之一

NATS是为分布式系统而生的超轻量、高性能消息系统。如果说Kafka是数据仓库型MQ,RabbitMQ是业务规则型MQ;原文地址 https://mp.weixin.qq.com/s/au93KJBM5rBFlSVmpPx1Ww。总结起来就是:微服务用NATS,大数据用Kafka,复杂业务流用RabbitMQ。生产级系统,JetStream是必选项。二、为什么Go和NATS是天生一对。是让系统彼此“活着”的那层空气。一、什么是NATS?

2026-04-22 08:36:09 233

原创 每日一Go-56、什么是缓存穿透、击穿和雪崩?如何保障数据的一致性?

SingleFlight:Go官网扩展包 golang.org/x/sync/singleflight 可以将针对同一个Key的多个并发请求合并为一个,只执行一次DB查询。现象:一个热点Key(例如秒杀商品)在过期的瞬间,大量并发请求涌入。因为缓存失效,这些请求会同时去查询数据库并尝试回填缓存,到hi数据库瞬间挂掉。缓存空对象:即使数据库返回空,也在Redis中存一个过期时间很短的特定值(如 nil 或 “empty”)。多级缓存:结合本地缓存(freecache/bigcache)和分布式缓存。

2026-04-21 22:31:13 267

原创 每日一Go-55、分布式 ID 生成(雪花算法 / Segment / Redis / DB)

六、方案3:Segment号段(美团/京东订单号)友情链接:加班费计算器(vx小程序搜索“加班计”)缺点:Redis单点;一、为什么分布式系统一定要“自己造ID”?七、方案4:雪花算法(Snowflake)这是所有分布式系统大忌,不推荐。五、方案2:Redis INCR。机器ID:数据中心+worker。一次取一段(例如:1000个)趋势递增、完全本地生成、无依赖。检测回拨直接panic/等待。二、分布式ID的核心指标。适合低并发系统/管理后台。

2026-04-21 09:29:50 274

ubuntu10.04下android开发环境搭建

ubuntu10.04下android开发环境搭建指南

2011-11-05

PHP批量转换文件格式

php批量读取文件夹一的内容,并把所有子文件夹里的文件生成新格式并放到文件夹二里对应文件夹一的文件夹中,也就是乐呵乐呵

2013-03-29

VS6.0+SQLServer2000实现电话充值卡卡号和卡密自动生成系统,并写入数据库和文件

本程序基于VS6.0和SQLServer2000平台开发,生成不重复的卡号和卡密,并将卡号和卡密保存到数据库和文件中,在数据库中保存密文,在文件中保存明文,便于制卡

2010-08-26

UCenter+MediaWiki+Discuz X2实现单点登录

UCenter+MediaWiki+Discuz X2实现单点登录

2012-02-22

UC、MW整合所需接口 Auth_UC

uc和mw整合所需的认证接口,值得研究下

2012-02-22

node-v0.6.10.msi

windows 32位 node.js安装包

2012-02-12

windows api notifyicon

windows api之系统托盘实例,用作交流

2011-11-14

Windows API 程序设计参考大全源码

Windows API 程序设计参考大全 源码

2009-11-11

空空如也

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

TA关注的人

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