自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翔云

Just try, don't shy.

  • 博客(773)
  • 资源 (15)
  • 收藏
  • 关注

原创 JWT核心工作原理

一个带签名的JSON数据包,通过密码学保证传输过程中不被篡改,是实现无状态身份验证的核心工具。核心口诀Header 定算法,Payload 装数据,Signature 保安全。短效令牌 + HTTPS + 强密钥 = 安全基础。需要进一步探讨 JWT 攻击防御(如密钥破解、KID注入)或 OIDC 中 JWT 的应用场景,欢迎继续提问!

2025-08-16 14:49:41 781

原创 OAuth 2.0授权流程

用户安全:避免第三方应用获取用户密码。权限控制:限制第三方应用访问范围(如仅读邮件)。用户体验:一键授权登录,无需注册新账号。系统解耦:资源服务器与认证逻辑分离。💡案例当你在知乎选择“用微信登录”时:知乎(客户端)→ 微信(授权服务器)→ 你(用户)授权 → 知乎获取Access Token → 读取你的微信头像/昵称。如果需要具体代码实现或某流程(如PKCE)的细节,欢迎进一步提问!

2025-08-16 14:29:28 699

原创 Bearer Token(令牌认证)和 OAuth 2.0 / OpenID Connect (OIDC) 区别和联系

OAuth 2.0 / OIDC 颁发的令牌(如Access Token、ID Token)本质上是不同层级的概念,但在实际应用中紧密相关。(规定如何安全寄送信封)。两者配合使用,但各司其职。(规定令牌如何放在HTTP请求中),利用OAuth框架实现跨系统授权。无需OAuth,简单高效。

2025-08-16 10:44:47 590

原创 HTTP 通信中的认证方式

认证方式安全性易用性适用场景关键优势主要缺陷基本认证★☆☆☆☆★★★★☆临时测试、低风险内部系统简单通用明文传输密码摘要认证★★☆☆☆★★☆☆☆旧系统(已淘汰)密码不明文传输实现复杂,安全性仍不足★★★★☆★★★★☆API、移动端、SPA无状态,灵活控制权限Token 泄露风险★★★★★★★☆☆☆第三方登录、SSO、开放平台标准化授权与身份联合架构复杂API Key★★☆☆☆★★★★★服务器间通信、开放 API简单易用仅认证应用,密钥泄露风险高客户端证书。

2025-08-16 10:36:16 617

原创 解耦主库负载,赋能数据流转:MySQL Binlog Server 核心指南

Binlog Server本质是解耦主库与从库间的Binlog传输,通过代理层实现负载分流、架构简化和异构集成。追求高可用 →KingBus;MariaDB环境 →MaxScale;实时数据管道 →mbinlogmq。在云原生与微服务架构下,Binlog Server正逐步成为MySQL数据生态的核心枢纽。

2025-08-08 09:03:21 851

原创 MySQL半同步复制机制详解:AFTER_SYNC vs AFTER_COMMIT 的优劣与选择

其设计缺陷(主库提交后等待 ACK)导致在主库崩溃时存在已提交事务丢失的风险,这违背了使用半同步复制提高数据安全性的初衷。MySQL 社区和官方早已认识到此问题。AFTER_SYNC它真正实现了半同步复制防止数据丢失的核心价值:确保每个对客户端报告成功提交的事务,其 Binlog 必定已持久化在至少一个从库上。它提供了更强的数据一致性和故障切换安全性。其潜在的性能开销(锁持有时间稍长)在绝大多数生产环境中微乎其微,且是保障数据安全必须付出的合理代价。MySQL 8.0 已默认使用。

2025-08-03 21:51:03 731

原创 MySQL 高并发下如何保证事务提交的绝对顺序?

因此,即使在高并发下,MySQL 通过精心设计的组提交机制(尤其是 Flush Stage 的 FIFO 队列和 Sync Stage 的批量顺序刷盘),在提升性能的同时,依然严格保证了所有提交事务的 Binlog 写入顺序与它们获取提交机会的逻辑顺序一致。从库必须严格按照主库上 Binlog 记录的事务提交顺序来重放这些事务,否则会导致数据不一致。保证 Binlog 顺序性的机制主要依赖于 MySQL 的内部协调和锁机制,核心是。,尤其是在多线程并发提交事务的情况下。

2025-08-01 21:44:31 1026

原创 在线事务型的业务、实时分析类业务、离线处理类型的业务

一个成熟的系统架构往往需要同时支持这三种业务类型,它们相辅相成,共同支撑起复杂的业务需求。例如,一个电商平台需要OLTP处理下单支付,需要实时分析监控大屏和风险,需要离线处理生成销售报表和训练推荐模型。

2025-07-25 21:44:22 950

原创 数据库垂直拆分和水平拆分

特性垂直拆分 (Vertical Sharding)水平拆分 (Horizontal Sharding)拆分依据列 (Column) / 业务功能 (Business Function)行 (Row) / 数据记录 (Data Record)目标减少单表宽度、分散热点、业务解耦、优化资源解决海量数据存储、分散读写负载 (TPS/QPS)、并行处理影响范围表结构改变 / 数据库实例分离表结构不变,数据分布到多个相同结构的表/实例优点提升热点查询性能、业务清晰、资源隔离、易于优化大字段。

2025-07-24 22:48:39 911

原创 python中延迟加载结果集与完全加载结果集

摘要:本文介绍了两种数据库结果集处理方式。延迟加载包括游标(Cursor)和SQLAlchemy的延迟加载,特点是内存效率高但依赖活跃连接/会话,适合大结果集。完全加载(fetchall)则一次性将结果存入内存,连接独立但消耗较大内存,适合小结果集。最佳实践建议根据数据量选择:小结果集用完全加载,大结果集用游标处理,注意保持连接/会话开放,关系数据可用ORM但需避免N+1查询问题,推荐使用上下文管理器管理连接。

2025-07-05 22:30:00 333

原创 python 上下文管理器传递参数的方法

上下文管理器接收和传递参数的常见方法:1) 通过构造函数传递参数,如FileManager类;2) 使用contextlib.contextmanager装饰器,如database_connection函数;3) 在上下文管理器内部保存状态并返回实例,如QueryManager类;4) 嵌套上下文管理器传递参数,如ResourceManager的嵌套使用。这些方法展示了上下文管理器如何灵活地接收参数并在上下文内外传递数据。

2025-07-05 17:02:53 168

原创 python中上下文管理器 与 try finally有什么区别

Python中上下文管理器与try-finally的主要区别:上下文管理器使用with语句更简洁(如自动关闭文件),专为资源管理设计,代码复用性好;try-finally则提供更灵活的异常控制,适合复杂清理逻辑。前者适用于标准资源管理场景,后者用于需要精细控制异常或旧版Python环境。两者本质都是资源管理方案,但上下文管理器封装更优雅。

2025-07-05 16:58:12 333

原创 python中执行前置操作,后置操作的几种方法

Python提供了多种简化前置/后置操作的方法:1) 上下文管理器(最推荐),通过__enter__和__exit__实现资源管理;2) 装饰器,在函数执行前后添加额外操作;3) contextlib模块,用生成器简化上下文管理器创建;4) atexit模块,注册程序退出时执行的函数;5) try-finally语句,确保代码块执行后必执行清理操作。这些方法都能优雅地处理资源管理和前后置操作,其中上下文管理器最符合Python的设计理念。

2025-07-05 16:53:23 207

原创 golang 中当 JSON 数据缺少结构体(struct)中定义的某些字段,会有异常吗

情况结果风险JSON 缺少字段目标字段赋零值逻辑错误JSON 包含额外字段自动忽略(不报错)无JSON 字段类型不匹配解析错误(Unmarshal报错)需处理错误通过合理设计结构体和添加验证逻辑,可安全处理 JSON 字段缺失的情况。

2025-07-04 21:24:37 911

原创 dial tcp 10.1.68.88:3306: connect: cannot assign requested address

优先检查连接池:确保代码中复用数据库连接(80%问题根源)。验证网络连通性:telnet 10.1.68.88 3306 # 测试端口ping 10.1.68.88 # 测试基础连通性监控端口使用:ss -s | grep "TCP:" # 查看总TCP连接数netstat -ant | grep :3306 # 查看目标连接状态检查系统日志:dmesg | grep "TCP" # 查看内核级网络错误关键建议。

2025-07-02 21:09:08 560

原创 依赖注入(Dependency Injection, DI)的核心概念和解决的核心问题

如果多个类都需要同一个依赖项(比如一个数据库连接池或日志服务),并且各自负责创建它,会导致创建逻辑重复,难以统一管理和配置。当依赖关系变得复杂(如依赖依赖的依赖)时,手动管理对象的创建顺序、作用域(单例、请求作用域等)和销毁变得异常繁琐且容易出错。如上所述,紧耦合使得单元测试(孤立地测试一个单元)变得非常困难。使用容器后,创建对象的复杂性(对象图的构建)就完全交给了容器管理。一个),而是由外部(“注入器”)把依赖的东西“喂”给它。在实际的大型项目中,手动管理所有的依赖注入(像上面。里那样)会变得非常繁琐。

2025-06-28 16:04:51 858

原创 Go语言中nil判断的注意事项

场景注意事项接口变量接口包含nil指针时!nil(因类型非空)可nil的类型仅限指针、切片、映射、通道、函数、接口不可nil类型结构体、基本类型等与nil比较会导致编译错误nil值的行为nil切片/映射/通道有特殊行为(如append可用,写操作 panic 或阻塞)反射判断用IsNil()而非IsZero(),并确保类型支持函数返回接口避免返回具体类型的nil指针,应直接返回nil正确理解这些细节可避免常见的nil判断陷阱(尤其是接口相关的错误)。

2025-06-25 22:50:42 855

原创 import cycle not allowed---go语言中循环依赖问题

方法适用场景优点缺点合并包高耦合逻辑结构简单包可能变得臃肿接口解耦包间需要互相调用符合 SOLID 原则需设计接口提取公共包共享数据结构/工具代码复用可能过度抽象函数参数传递临时依赖灵活轻量不适合复杂场景依赖注入(DI)大型项目动态管理依赖,易于测试引入额外复杂度关键原则依赖方向单一化:确保包依赖是单向的(如 A→B→C,避免 A→B 且 B→A)面向接口编程:通过接口隐藏实现细节,减少直接依赖分层架构。

2025-06-22 14:44:01 877

原创 Go 循环依赖的依赖注入解决方案详解

/ Logger 审计日志接口// AuditService 实现审计日志// 实际审计日志实现println("审计日志: 用户", userID, "执行了", action)通过接口实现依赖反转使用 Wire 自动生成依赖装配代码保持代码的松耦合和可测试性特别适合大型项目和复杂依赖关系为常用组件定义 Provider Set使用选项模式配置服务结合工厂模式创建复杂对象这种解决方案不仅解决了循环依赖问题,还显著提高了代码质量和可维护性。

2025-06-22 14:39:22 759

原创 Wire 使用举例

/ Logger 日志接口// ConsoleLogger 控制台日志实现// FileLogger 文件日志实现// App 应用服务a.logger.Log("应用启动")// 应用逻辑...a.logger.Log("应用结束")编译时依赖注入:在编译时发现问题,而不是运行时类型安全:依赖关系由类型系统保证清晰的可视化:通过代码生成展示依赖关系易于重构:修改依赖关系后重新生成即可定义清晰的接口:使用接口解耦实现合理分组 Provider。

2025-06-22 14:26:38 442

原创 Wire--编译时依赖注入工具

/ store.go (存储层)// Provider 函数:创建消息// service.go (服务层)// Provider 函数:创建服务,依赖 Store 接口// app.go (应用层)// Provider 函数:创建应用,依赖 MessageService//go:build wireinject // 标记此文件仅由 Wire 处理// Injector 函数:声明依赖关系NewMessageApp, // 提供 MessageApp。

2025-06-21 23:45:32 1006

原创 Python 中的 `lru_cache` 详解

它会自动缓存函数的计算结果,当使用相同的参数再次调用时直接返回缓存结果,避免重复计算。,清理操作只会影响调用它的特定函数实例,不会影响其他函数或模块的缓存。在 Gunicorn/Uvicorn 等多进程部署中,→ 重新输出 “小型缓存计算: 3”(缓存失效)类中的不同实例共享同一个缓存(除非使用实例方法)→ 清理操作只影响当前工作进程的缓存。→ 输出 “小型缓存计算: 3”→ 输出 “大型缓存计算: 3”模块提供的装饰器,用于实现。是 Python 标准库。(证明两个函数缓存独立)在 Python 的。

2025-06-14 14:42:52 1401

原创 精准测量 MySQL 主从复制延迟—pt-heartbeat工具工作原理

本质:通过“主库打时间戳 → 从库重放 → 本地计算时间差”实现延迟测量。优势精度高(微秒级)、可靠性强(不受主库空闲影响)、兼容任意MySQL版本。适用场景读写分离架构的延迟监控;主从切换前的数据一致性校验;复制性能瓶颈分析。📌部署建议。

2025-06-14 14:05:26 806

原创 MySQL从库复制延迟的监测

监测方法精准度部署复杂度适用场景主要缺陷⭐⭐⭐快速概览延迟趋势易受时间同步/网络中断干扰Binlog位点对比⭐⭐⭐⭐⭐判断事务堆积量无法量化延迟时间⭐⭐⭐⭐⭐⭐⭐跨版本通用,需高精度监控需维护心跳进程,污染binlogMySQL 8.0+ GTID时间戳⭐⭐⭐⭐⭐⭐⭐事务级延迟分析,复杂复制拓扑仅限MySQL 8.0+且需GTID⭐⭐⭐⭐⭐⭐⭐⭐读写分离一致性保障需业务改造传递GTID。

2025-06-14 13:22:51 943

原创 Python Wheel 打包基本原理详解

Wheel作为Python打包生态的核心组件,其设计体现了Python社区对"简单比复杂更好"哲学理念的实践,是Python软件分发现代化的基石。格式,提供更快速、可靠的安装体验。)是Python的官方二进制包格式,旨在替代传统的。验证RECORD签名。

2025-06-08 15:37:29 897

原创 Python Web项目打包(Wheel)与服务器部署全流程

通过此方案,您可以实现Python Web项目的标准化打包和可靠的生产环境部署,适用于Flask、Django、FastAPI等主流Web框架。

2025-06-08 15:27:28 579

原创 Python项目的构建和部署方案推荐

根据团队规模和项目复杂度选择合适方案,初期建议从容器化(Docker Compose)起步,逐步过渡到Kubernetes集群管理。Python项目的构建和部署有多种成熟方案,根据项目规模和需求可选择不同工具链。

2025-06-08 15:17:45 1034

原创 2025年AI编程工具推荐

2025年,AI编程工具已从辅助工具升级为开发流程的核心生产力引擎。这些工具不仅能大幅提升编码效率、降低错误率,还推动了“自然语言驱动开发”的新范式。当前工具已实现“需求→代码”的转化,未来将向多模态交互(如AR可视化代码)、自主调试等方向演进。选型时需结合项目规模、技术栈及隐私要求,善用免费资源(如Trae、Windsurf)可显著降低开发成本。这类工具重新定义了集成开发环境,深度融合AI能力,支持从代码生成到调试部署的全流程。,但需注意:AI更擅长执行而非设计,系统架构与核心逻辑仍需人工把控。

2025-06-07 22:59:34 772

原创 tmux基本原理

成为系统管理员和开发者的核心生产力工具,尤其适合远程服务器管理和复杂工作流场景。,通过解耦终端显示与运行进程实现会话持久化。(Terminal Multiplexer)的核心原理基于。

2025-05-31 22:28:12 547

原创 ssh连接断开,保持任务后台执行——tmux

它能让用户在一个连接中执行多个任务,并在断开连接后保持任务后台运行,非常适合远程服务器管理或长时间运行的任务。掌握 tmux 可极大提升终端工作效率,尤其适合管理服务器或复杂工作流。)是一个强大的终端复用工具,用于在单个终端窗口中管理多个。Ctrl+b 方向键。

2025-05-31 22:25:07 469

原创 binlog 解析工具——my2sql

my2sql是一款基于 Go 语言开发的 MySQL binlog 解析工具,支持从二进制日志(binlog)中生成原始 SQL、回滚 SQL(闪回 SQL)、去除主键的 INSERT SQL 等,还能生成 DML 操作统计信息。数据快速回滚(闪回):通过逆向解析 binlog 生成反向 SQL,恢复误删除或误修改的数据。主从数据一致性修复:主从切换后新主库数据丢失时,通过 binlog 恢复数据。生成标准 SQL 与统计信息:用于审计、数据迁移,或分析高频更新表、大事务及主从延迟问题。

2025-05-25 15:43:18 1158 1

原创 binlog解析工具——binlog2sql

binlog2sql是一款开源的 Python 工具,用于解析 MySQL 的 binlog 文件,生成标准 SQL 或回滚 SQL,实现数据恢复和衍生功能。数据快速回滚(闪回):通过解析 binlog 生成反向 SQL,恢复误删除或误修改的数据。主从切换修复:当主从切换后新主库数据丢失时,通过 binlog 恢复数据一致性。生成标准 SQL:用于审计、数据迁移或分析数据库操作历史。

2025-05-25 13:05:32 1174

原创 Buffer Pool如何进行预热

在 MySQL 中,Buffer Pool 预热(Warm-Up) 是指将数据库重启后需要高频访问的数据页提前加载到内存中,以减少冷启动时因磁盘 I/O 导致的性能下降

2025-04-27 07:00:00 653

原创 聚簇索引是否会全部加载到内存

在 MySQL 的 InnoDB 存储引擎中,聚簇索引的数据不会全部加载到内存中。

2025-04-27 06:30:00 296

原创 Buffer Pool是什么,有什么作用

在 MySQL 的 InnoDB 存储引擎中,Buffer Pool(缓冲池) 是 内存中的核心组件,负责缓存表数据、索引和其他 InnoDB 相关的数据结构。

2025-04-26 21:58:00 693

原创 关于聚簇索引

聚簇索引(Clustered Index)是 一种将数据行物理存储顺序与索引键值逻辑顺序紧密结合的索引结构。在 MySQL 的 InnoDB 引擎中,聚簇索引直接决定了表中数据的物理排列方式,因此每个表有且只有一个聚簇索引。

2025-04-26 21:53:45 365

原创 MySQL二进制日志格式有哪几种

在 MySQL 中,二进制日志(Binary Log)的格式决定了主库如何记录数据的变更事件,并直接影响复制的行为和一致性。通过合理选择二进制日志格式,可以优化 MySQL 的复制性能和数据一致性。如果对数据一致性要求极高,建议始终使用。:记录数据行的实际变更(修改前/后的行数据),而非 SQL 语句。等),从库通过重放这些 SQL 语句实现数据同步。以下是每种格式的详细说明及其事务的事件组成。二进制日志中会记录完整的 SQL 语句。:记录实际执行的 SQL 语句(如。的行数据变更前后的值(如旧值。

2025-03-18 22:50:11 1142

原创 为什么“连接断开可能导致锁未释放”

大多数情况下:数据库会在连接断开时自动释放锁,但需依赖数据库的实现和配置。极端场景下:因网络问题、数据库检测延迟或代码缺陷,锁可能未及时释放,导致类似死锁的阻塞问题。解决方案:通过事务超时设置、完善的代码逻辑和运维监控降低风险。

2025-03-18 22:45:31 868

原创 分布式锁的实现

分布式锁是分布式系统中协调多节点并发访问共享资源的机制,其核心目标是保证在分布式环境下同一时刻只有一个客户端能执行关键操作。

2025-03-18 22:23:21 1084

原创 deepseek推荐10本程序员必读书籍

以下是提升程序员技能的10本经典书籍推荐,涵盖编程思想、算法、系统设计、代码质量及职业发展等核心领域,结合多个权威来源整理而成。

2025-02-23 22:03:08 813

Visual Basic 6.0下制作OCX控件

该文档详细阐述了在VB6.0下制作并测试OCX控件的全过程。

2011-08-25

U盘安装XP_Win7系统指南

本文档主要讲述了如何使用U盘进行系统的安装。并针对安装系统过程遇到的问题进行了解答。希望给有需要的人一点帮助。

2014-07-12

Linux下的C++标准库

Linux下的std C++ 标准库 下载后,解压,将文件拷贝到/lib或者/usr/lib目录下,可以解决提示libstdc++。so找不到的问题

2013-06-04

深入理解linux内核 第三版 Daniel P. Bovet &Marco Cesati 勘误

深入理解Linux内核 第三版是经典的linux内核分析的圣经,里面分析透彻,解析明了。 书中有些错误影响阅读,经过多方收集,特列出。

2011-03-07

Linux RS485 通信代码

本资源给出了Linux下进行RS485通信的实例代码

2012-03-20

Linux系统下dhcp源码

提供Linux系统下DHCP源码下载 dhcp-3.1.1.tar.gz

2012-03-16

sqlite嵌入式编程实例

本资源给出了linux+ARM 环境下SQLite数据库嵌入式编程实例。 详细内容请参考 Linux下SQLite数据库移植与编程 . http://blog.youkuaiyun.com/lanyang123456/article/details/7680670

2012-06-20

ndiswrapper 最新版本下载 ndiswrapper-1.57.tar.gz

ndiswrapper是Linux用于安装无线网卡驱动的一款软件。 ndiswrapper调用Windows下的驱动为Linux系统所用。

2012-03-07

Spreadsheet-ParseXLSX-0.16.tar.gz

该包用于解决无法找到Spreadsheet-ParseXLSX的问题,具体安装方法可参考http://blog.youkuaiyun.com/lanyang123456/article/details/41519501

2014-11-26

Linux下使用USB转串口获取GPS数据

本文档,就linux系统下如何使用GPS设备(USB插口)读取GPS数据做了比较详细的阐述。主要介绍了如何使用USB转串口驱动,以及如何打开ttyyUSB0,如何读取数据等等。

2012-03-01

mysql-replicant-python.zip

书中使用的示例代码下载

2021-08-29

Linux下sqlite3编程实例

本文件给出了sqlite编程实例源码及其执行结果。其中,源码实例中包括了最常用的一些API,非常适合对于初学者学习使用。 有关SQLite安装与编程请参考下面的帖子 Linux下SQLite数据库安装操作与编程 . http://blog.youkuaiyun.com/lanyang123456/article/details/7680532

2012-06-20

git post-update

服务器代码库工作区不更新问题解决,具体问题描述请参看 http://blog.youkuaiyun.com/lanyang123456/article/details/76378229

2017-07-30

rt5370驱动

腾达 无线USB网卡 型号:W311M 芯片类型:rt5370 该驱动是linux下针对rt5370 rt2800等芯片的驱动,可以通过交叉编译移植到嵌入式开发板。

2012-03-20

考研数学公式大全 最全面的

最全面的公式集合,一个很好的参考工具,涵盖高数 概率论 线性代数

2009-05-23

空空如也

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

TA关注的人

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