fananchong2
码龄12年
求更新 关注
提问 私信
  • 博客:686,535
    社区:33
    686,568
    总访问量
  • 318
    原创
  • 1,114
    粉丝
  • 73
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2013-12-25
博客简介:

范安崇的博客

博客描述:
不积跬步,无以至千里;不积小流,无以成江海。
查看详细资料
个人成就
  • 获得466次点赞
  • 内容获得120次评论
  • 获得812次收藏
  • 代码片获得876次分享
  • 博客总排名19,617名
  • 原力等级
    原力等级
    5
    原力分
    1,805
    本月获得
    1
创作历程
  • 17篇
    2025年
  • 24篇
    2024年
  • 17篇
    2023年
  • 34篇
    2022年
  • 52篇
    2021年
  • 46篇
    2020年
  • 40篇
    2019年
  • 58篇
    2018年
  • 32篇
    2017年
成就勋章
TA的专栏
  • Redis
    付费
    6篇
  • Go游戏服务器开发的一些思考
    付费
    96篇
  • 帧同步的一些思考
    付费
    9篇
  • 源代码分析
    付费
    51篇
  • vscode
    9篇
  • 设计方案
    11篇
  • C++
    11篇
  • DB
    3篇
  • 工具
    12篇
  • skynet
    2篇
  • gRPC
    6篇
  • 服务发现与 DNS
    4篇
  • Docker与Kubernetes
    31篇
  • 服务器3D场景建模
    10篇
  • Go语言杂文
    27篇
  • linux
    50篇
  • H5实践
    3篇
  • Golang 设计模式
    7篇

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 2

TA参与的活动 1

兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    架构
  • 搜索
    elasticsearch
  • 测试
    selenium测试用例postman
  • 软件工程
    jira
  • 运维
    容器jenkinsdevops自动化kubernetes系统架构网络运维开发graylogelk
  • 网络空间安全
    安全系统安全web安全安全架构
  • 服务器
    linuxcentos
创作活动更多

AI 镜像开发实战征文活动

随着人工智能技术的飞速发展,AI 镜像开发逐渐成为技术领域的热点之一。Stable Diffusion 3.5 FP8 作为强大的文生图模型,为开发者提供了更高效的图像生成解决方案。为了推动 AI 镜像开发技术的交流与创新,我们特此发起本次征文活动,诚邀广大开发者分享在 Stable Diffusion 3.5 FP8 文生图方向的实战经验和创新应用 本次征文活动鼓励开发者围绕 Stable Diffusion 3.5 FP8 文生图方向,分享以下方面的内容: 1. 技术实践与优化 - Stable Diffusion 3.5 FP8 模型架构解析与优化技巧 - 文生图生成效果的提升方法与技巧 - 模型部署与加速策略,例如使用 Hugging Face、Diffusers 等工具 - 针对特定场景(例如二次元、写实风)的模型微调与定制化开发 2. 应用场景探索 - Stable Diffusion 3.5 FP8 在不同领域的应用案例分享,例如游戏设计、广告创意、艺术创作等 - 利用 Stable Diffusion 3.5 FP8 实现图像编辑、图像修复、图像增强等功能的探索 - 结合其他 AI 技术(例如 NLP、语音识别)构建更强大的应用 3. 创新应用与思考 - 基于 Stable Diffusion 3.5 FP8 的创新应用场景设计 - AI 镜像开发的未来发展方向的思考与展望 - 对 AI 镜像开发伦理、安全等问题的探讨

29人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

制作 VSCode 插件

本文分享了作者使用AI辅助开发VSCode插件的过程与经验。文章指出,虽然AI能编写98%的插件代码,但在实际开发中仍遇到多个问题:首先发现自动生成的package.json中VS Code版本不一致导致运行失败;其次在WebView实现中,因缺少"type":"webview"配置导致控件无法显示。通过对比官方示例[vscode-extension-samples]解决了这些问题。作者认为AI是探索未知技术领域的利器,能提供大体可行的方案,但在细节处理上仍需人工调试
原创
博文更新于 2025.08.09 ·
505 阅读 ·
5 点赞 ·
0 评论 ·
9 收藏

Python 代码远程调试

debugpy 是用于远程调试 Python 程序的工具,尤其在 VSCode 中调试时,无法直接附加 Python 进程时,debugpy 提供了解决方案。通过参考官方文档,可以轻松实现远程调试。此外,VSCode 支持通过 Compound 配置一键附加多个进程,方便同时调试多个 Python 程序。需要注意的是,debugpy 与代码覆盖率工具如 coveragepy 都依赖于 sys.settrace,因此两者无法同时使用,存在冲突。
原创
博文更新于 2025.05.10 ·
466 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

KBEngine 源代码分析(三):组网逻辑

组件收到 onRegisterNewApp 协议的通用实现是 ServerApp::onRegisterNewApp。比如 baseapp basemgr loginapp 等都是不同组件类型的组件(服务)号的,都是 Y ,即有链接)服务发现的方法是其他服务使用 UDP 广播的方式,通知所有 machine 服务。=1 时,会根据组件的连接关系,向 machine 获取这些组件类型的组件信息。machine 服务是 KBEngine 用来做服务治理的。首先 machine 的眼里,维护的都是组件信息。
原创
博文更新于 2025.04.30 ·
144 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KBEngine 源代码分析(三):组网逻辑

组件收到 onRegisterNewApp 协议的通用实现是 ServerApp::onRegisterNewApp。比如 baseapp basemgr loginapp 等都是不同组件类型的组件(服务)号的,都是 Y ,即有链接)服务发现的方法是其他服务使用 UDP 广播的方式,通知所有 machine 服务。=1 时,会根据组件的连接关系,向 machine 获取这些组件类型的组件信息。machine 服务是 KBEngine 用来做服务治理的。首先 machine 的眼里,维护的都是组件信息。
原创
博文更新于 2025.04.30 ·
104 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KBEngine 源代码分析(二):协议注册和处理

比如我们查看文件说明协议定义。通过宏来表达协议定义。宏展开,即生成真正的宏定义代码与协议定义相关的宏。
原创
博文更新于 2025.04.28 ·
216 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KBEngine 源代码分析(一):Python C++ 混合编程

不过不影响学习如何使用 Python 官方库提供的 API ,实现 C++ Python 混合编程。目录提供了 KBEngine 把 C++ 代码中的类注册到 Python 的机制。类也没实质性东西,主要继承了 Python PyObject 类和调用了宏。类和一些列宏,按上述格式填写,就可以把 C++ 类注册进 Python。这 2 个文件,封装了下,在 C++ 中调用 Python 的。相对现在的 C++ 17/20 ,这个目录的分装相对不优雅。具体代码就不详细说明了,问 AI 就能懂啦。
原创
博文更新于 2025.04.28 ·
132 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

交易行梳理

因此类似 MySQL InnoDB Redo 日志的方式,可以保证已经做到哪一步,或者操作完成了。某些情况,可能重试就是失败,比如下架中进程重启;但是又在其他进程被人买走。订单分布式锁过期处理也可以一定程度上保护因为合理的并发导致重试失败。简单起见,不需要做 Undo 日志,即不做回滚功能。Redo 不要写文件,统一为 DB 读写,作为一张表。交易行查询服(exquery)可以独立出来。注意以上 DB 表设计,主键中首个字段为。因此失败几次,要限制重试次数。需要引入对象池,避免内存分配和碎片问题。
原创
博文更新于 2025.04.17 ·
1025 阅读 ·
10 点赞 ·
0 评论 ·
8 收藏

排队系统梳理

概念别名说明承载上限在线人数上限在线人数OnlineNum当前在线人数玩家的票玩家持有的票最新的票号NextTicket下个排队获取的票号放票窗口该区间的票号可以进入游戏单次放票人数避免放票窗口开的过大,让并发登录给服务造成压力逾期放票间隔避免放票窗口停止不动。
原创
博文更新于 2025.04.16 ·
565 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

MMO 架构梳理

每个进程定期拉取 Servers ,对感兴趣的服务信息和本地做 diff,进而知道服务新增或失效。Game 会缓存角色数据、场景数据,玩家下次登录在缓存有效的情况下,应该进原来的 Game。回复 Client OK ,并转发切换场景给 Game ,Game 本地场景切换逻辑。切换的前提是该场景事先已创建,如何实现创建,需要走具体业务逻辑。服务依赖,不是功能,是项目服务间依赖关系的一种客观事实描述。,保证不管任何并发情况,分配的 Game 是一样的。这样每个进程可以对自己感兴趣的服务,收集服务信息。
原创
博文更新于 2025.04.10 ·
1275 阅读 ·
27 点赞 ·
0 评论 ·
14 收藏

状态同步梳理

后端场景主循环 30帧/秒,根据客户端输入(可能有),将场景中的变化状态信息,广播给场景内客户端(也可以是 AOI 内)可以看到 FPS 正好相对奇葩,介于 MMO 与 MOBA 之间。直接使用 MMO 方式状态同步更好?其次,FPS 人数又远小于 MMO ,帧同步游戏技术的一些特性就可以拿来用了。但是假如,项目有 FPS 技术基础,单人本状态同步的流畅性就可以发挥到极致了。即使网络时延几秒(甚至更长),玩家也可以有流畅的体验。一般的用 MMO 方式的状态同步即可。
原创
博文更新于 2025.04.09 ·
630 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

游戏赛季和数据处理

在无赛季时,通常标识一条数据所属,会用 [ AccountID, RoleID ] 来标识。提供摘要文档输出,这样就可以方便的判断新赛季是否有哪个功能需要修复数据。赛季通常跨度几个月,新赛季会有很多配置调整,通常以人力无法对比。因为每个功能数据,数据什么级别数据,都是事先已知确定的。即问题 1,功能代码可以几乎不做任何代码修改即可。因此只要 DB 存储层做支持,即可。
原创
博文更新于 2025.04.08 ·
716 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

C++ 数据竞态检查

【代码】C++ 数据竞态检查。
原创
博文更新于 2025.04.04 ·
363 阅读 ·
9 点赞 ·
0 评论 ·
4 收藏

看 MySQL InnoDB 和 BoltDB 的事务实现

单写(串行写):写时拷贝当前 B+ 树,构建新 B+ 树,最后原子切 meta 页。MySQL 事务不会锁表,不同行记录的写操作,可以并发(某些不行,注意间隙锁)它的 MVCC 为 N 个版本,粒度是按行可以有多个版本。多读:一致性非锁定读,不同事务隔离级别读取不同行版本数据。它的 MVCC 为 2 个版本,当前版本和正在写的版本。MySQL InnoDB 支持多读多写方式的并发级别。BoltDB 支持多读单写方式的并发级别。多写:不同行的写,可以并发。多读:可以并发读当前版本。
原创
博文更新于 2025.03.25 ·
286 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

MySQL InnoDB 事务隔离级别和锁

READ COMMITTED(读取已提交)和REPEATABLE READ(可重复读)的读,会根据 MVCC 机制,读历史版本数据(不同的是版本的定义不同)根据锁的粗粒度,还有意向锁(InnoDB事务并发决策用的,可以不用关注)根据事务隔离级别不同,可能为行锁,或升级为间隙锁。非唯一索引的 SQL 语句,均可以升级为间隙锁。
原创
博文更新于 2025.03.20 ·
518 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

看 MySQL InnoDB 和 BoltDB 如何写磁盘

DB 产品,会 WAL 后再写磁盘;WAL 日志又称 redo 日志,用于失败时的恢复操作。BoltDB 的实现构思巧妙,相当于新建 1 棵 B+ 树,原子切换 meta 页。看下 MySQL InnoDB 存储引擎、 BoltDB 是如何解决该问题。需要写的页数 1 页到 N 页不等(数据少,就在 meta 页)BoltDB 当前 meta 页指向磁盘 B+ 树。因为实际磁盘页未被写坏,因此总能 redo 正确。该页使用 redo 日志文件也无法恢复正确了。
原创
博文更新于 2025.03.13 ·
357 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

一种日志聚类的方法

比如线上有大类日志,需要一种方法,统计各类日志输出的次数,并排列输出。这样可以比较直观的获取是否存在大量某些错误日志等。一般比较省事的,可以使用某些大数据产品,比如。
原创
博文更新于 2025.02.20 ·
282 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

Jenkinsfile共享库介绍

类似的,比如获取某个服的 DB 配置等等,也可以在共享库内实现一次, jenkinsfile 中直接从环境变量中获取。jenkinsfile 通常是一些脚本,没有共享库,重复脚本会非常多。可以在 vars 下编写 groovy 文件,比如。每个 jenkinsfile 中,只要调用。比如, resources 目录下有配置。比如,重复的获取配置代码,到后期维护不易。共享库主要用来抽离公共函数。,自动加载对应服的配置。
原创
博文更新于 2025.01.16 ·
863 阅读 ·
5 点赞 ·
0 评论 ·
9 收藏

Percolator 事务模型的理解和梳理

其他各种情况:正常、各种异常,都以 main lock 的情况,进而读取正确数据。根据上述介绍,可以发现, Percolator 对于异常是一种 lazy (懒)处理。这时, A 的值为 hello ( write 字段指示了当前数据是哪个版本)这里主要解释下,为啥这个阶段,只要 main lock 的提交成功即可。对于超时的情况,仅仅根据版本号,其实是不够的,因为数据可能在多台主机上。比较正规(严谨)的是版本号用全局时间戳代替,即版本号也是时间戳。任何一方写失败等,做回滚处理。
原创
博文更新于 2024.07.17 ·
852 阅读 ·
18 点赞 ·
0 评论 ·
5 收藏

【C++】EntityX 的事件模块介绍与代码分析

该库使用 C++11 提供了,函数句柄的订阅与发布。本文不做介绍,以后再介绍,因为还有 C++14 tuple/index sequence 的实现方式。该类作用是内部实现用于包裹使用者自己定义事件,让其具备通过 Event()::family() 内部标识 E。即通过 Event()::family() 赋予 E 自动获得 EventID 的能力。使用者直接是自己定义事件 struct ,比如记为 E。是一个基于 C++11 的 ECS 开源库。这些代码均比较简单,细节,不再一一介绍。
原创
博文更新于 2024.07.11 ·
626 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

【C++】一种优雅的枚举定义的代替技巧

很多系统,仅程序运行态时用来区分不同的值,这时,如果有不需要额外维护值的方法,自然是更优雅的。枚举值,在如 db 存取、网络传输等,需要关注确定的值,且不能修改。而上述方法,就非常简单、简洁的提供了自动生成不同值的一种方法。比如,做事件触发系统。代码时,发现一种更为优雅的定义方式。然后事件类型,通过继承。
原创
博文更新于 2024.07.09 ·
307 阅读 ·
10 点赞 ·
0 评论 ·
3 收藏
加载更多