- 博客(50)
- 收藏
- 关注
原创 趣谈设计模式之访问者模式-手机里的艺术咖,我是涂鸦艺术家
可以做一个配置页面用于用户的自定义配置,制作咖啡的时候先读取配置然后根据用户的自定义配置微调。), 老板姬比特打算把拉花引入到比特咖啡中(其本质是通过一系列预设的形状来“渲染”咖啡),比特咖啡APP的普通会员只能在配置界面选择基础的拉花图案,而VIP会员可以选择更加精美和丰富的拉花图案(而且保留VIP用户可以自定义拉花图案的功能),也就是不同角色的访客看到的拉花配置和视觉效果都不同,老板给这个功能起了一个非常”drama“的名字作为宣传点——“艺术咖系列”,把使用这个APP的用户称为”涂鸦艺术家“。
2025-08-05 12:01:40
1238
原创 趣谈设计模式之模板方法模式-老板,你的数字咖啡制作好了,请享用!
模板方法模式是一种行为设计模式,通过定义算法骨架并延迟部分步骤到子类实现,提高代码复用性和扩展性。它包含抽象类(定义算法框架)和具体子类(实现具体步骤),适用于需要统一流程但允许步骤差异的场景。示例展示了文档处理器和咖啡制作流程的实现,其中父类定义通用步骤,子类实现特定细节。该模式的优点包括代码复用和符合开闭原则,缺点是父类与子类耦合度高。适用于需要统一算法结构但允许部分步骤灵活变化的场景。
2025-07-31 17:33:58
568
原创 JWT防重放攻击:5分钟掌握核心防御策略
攻击者截获一个有效的 JWT 令牌,然后在稍后的时间重复发送这个令牌给服务器,冒充合法用户进行操作。✅ 举个例子:你登录后拿到了一个 JWT,攻击者在你请求时抓包拿到了这个 token。他可以在 24 小时后,重复使用这个 token访问你的账户,比如修改密码、转账等。防御手段适用场景是否推荐🔹 短有效期(TTL)所有场景✅✅✅ 强烈推荐🔹 刷新令牌 + 黑名单长期登录(App/PC)✅✅✅ 强烈推荐🔹 Unique Nonce(一次性随机数)高安全操作(转账、支付)
2025-12-30 11:00:00
114
原创 周报升级术:从流水账到价值输出
做了什么(简要)+ 为什么做(背景/目标)+ 怎么做的(关键动作)+ 产生了什么结果(数据/影响)+ 下一步计划(清晰可执行)
2025-12-29 11:30:12
364
原创 大模型相关概念浅谈
提示工程又名 提示词工程,指为模型生成内容创建有效指令的过程,因为模型生成的内容通常是非确定性的,所以构建一个从模型生成正确内容的提示是艺术和科学的结合。提示工程的通用指导原则流式传输是一种持续传输数据块的通信方式,与传统请求——响应模型不同,响应数据可分块发送。典型应用场景要了解流式输出,需要先了解长链接。长链接(Long Connection)是指在一次连接建立后,在一段时间内保持连接状态,持续进行数据传输,而不是每次传输数据都重新建立连接。与短链接相比,长链接减少了连接建立和断开的开销,适用于需
2025-12-26 16:51:54
727
原创 用户ID设计:安全与性能的最佳实践
项目推荐方案用户ID生成UUIDv4(随机生成)数据库主键CHAR(36)存储 UUIDJWT 中传递的用户标识sub字段使用 UUID安全性保障JWT 签名 + 不暴露自增ID + 不允许枚举前后端交互使用基于snowflake算法+业务前缀特性说明✅ 分布式唯一Snowflake 算法保证全局唯一,也可将 Snowflake 换成 Redis INCR(更简单)✅ 可读性强Z1001 易读、易查、易调试✅ 业务语义清晰前缀区分不同业务(Z=用户,O=订单)
2025-12-25 10:06:17
471
原创 高并发API鉴权实战设计思路
要点推荐做法鉴权方式无状态✅ 保持无状态,支持水平扩展权限控制在 JWT 中携带权限信息黑名单机制使用 Redis 存储jti,支持自动清理性能优化网关层统一鉴权 + 公钥缓存 + 限流安全防护HTTPS + 防重放 + 防暴力破解。
2025-12-24 11:45:00
1032
原创 FastAPI精确限流:API级防刷实战
如果你需要按用户 IDAPI 路径IP + 用户 ID等维度限流,可以自定义 key_func。# 按用户 ID 限流(需从 token 解析用户)# 从 JWT token 中解析 user_id# 假设你有一个解析函数。
2025-12-24 11:00:00
464
原创 JWT令牌类型全解析:Bearer、JWT与Refresh
token_type场景推荐token_type一般 API 认证(FastAPI + JWT)bearer(或bearerjwt明确 Token 是 JWT 格式jwt支持“记住我”或自动续期refresh使用 OAuth 1.0a(不推荐)mac。
2025-12-23 17:24:24
270
原创 代码坏味道:常见编程问题与优化方案
重复代码一般是因为需求迭代比较快,开发小伙伴担心影响已有功能,就复制粘贴造成的。重复代码很难维护的,如果你要修改其中一段的代码逻辑,就需要修改多次,很可能出现遗漏的情况,随着项目中重复代码越来越多,项目变得越难维护。
2025-12-23 15:31:44
1191
原创 前端埋码:数据采集实战
页面埋码(也叫“埋点”或“数据埋点”)是指在网页或 App 的特定页面、按钮、交互行为等关键位置,插入一段 JavaScript 代码(或 SDK),用于自动收集用户的操作行为数据。埋码 = 在页面上“埋下”一个数据采集的“探针”。埋码 = 为用户行为装上“数据记录器”它让模糊的“用户用了我的产品”变成清晰的“用户在第3步点了‘取消’,共1000人”——这是产品进化和商业决策的数据基石。如果你是产品经理、运营或前端开发,掌握埋码的核心逻辑和作用,将极大提升你的数据敏感度和产品判断力。
2025-12-23 11:17:14
1130
原创 渐进式账户锁定机制浅谈
所以在设计或管理一个系统,建议采用这种机制,既防不怀好意的用户恶意触发失败登录锁定,锁死合法用户造成“拒绝服务”,又不惹真正的用户在手抖或者忘记密码情况下,尝试登录导致锁定时间过过长影响用户体验 😄。在系统登录中,渐进式账户锁定机制(Progressive Account Lockout)是一种安全策略,用来防止暴力破解密码攻击,同时尽量减少对正常用户的干扰。其核心思想是:不是一两次错误就直接锁定账户,而是随着错误次数的增加,逐步加强锁定的惩罚。👉 这就是“渐进式”的体现:错误越多,锁定时间越长。
2025-12-22 09:58:47
259
原创 常见的前后端登录认证的几种模式(JWT、SSO、OAuth2.0)
🎯 JWT 就像一张“电子身份证”,它把你的身份信息加密封装成一个字符串,你带着它去访问系统,系统用“钥匙”验证它是否真实有效JWT不建议存储密码、银行卡号等敏感信息一定要用HTTPS传输JWT,防止被窃听设置合理的过期时间(如30min~2h)模式是否需要用户登录是否需要后端是否安全适用场景授权码模式✅ 是✅ 是⭐⭐⭐⭐⭐网站、App、任何有后端的场景隐式模式(简化模式)✅ 是❌ 否⭐⭐纯前端 SPA(不推荐)密码模式✅ 是✅ 是⭐。
2025-12-19 17:08:27
495
原创 超快Python包管理器uv:极速安装新选择
uvuvuv不仅仅是一个工具,它代表了Python 生态的未来方向快、安全、现代化。无论你是初学者还是资深开发者,从现在开始使用uv,你将体验到前所未有的开发效率。📎GitHub 项目📚官方文档。
2025-12-19 14:59:56
911
原创 diagrams画C4视图示例(未完..)
位于顶层,是软件系统架构图启点,表达系统全貌。本层不涉及具体细节(技术选型、协议、部署方案等其他细节),因此可以更好的向非技术人员介绍系统。待描述的核心系统以及相关用户、支撑系统、不应出现与核心系统无关的其他系统。
2025-11-07 17:21:58
166
原创 软件开发流程图
流水线部署到预生产环境&测试&发布生产。提交代码&创建到dev分支的MR。如有必要进行原有文档补充更新。创建到master分支的MR。流水线部署到开发环境&自测。编写代码&单元测试用例。梳理涉及界面功能范围。根据检视意见优化代码。
2025-11-07 10:06:18
813
原创 DDD落地实践探索(未完..)
在学习ddd如何落地实践之前,先了解什么是限界上下文?限界上下文是 DDD用于战略设计上提出的概念,用来确定语义所在的领域边界。限界就是 领域的边界, 上下文是 语义环境。通过领域的限界上下文,可以在统一的领域边界内用统一的语言进行交流。其定义: 用来封装通用语言和领域对象,提供上下文环境,保证在领域内的一些术语、业务相关对象等(通用语言)有一个确切的含义,没有二义性。这个边界定义了模型的适用范围,使团队成员明确的知道什么应该在模型中实现,什么不应该在模型中实现。
2025-10-27 15:36:43
919
原创 Python多patch装饰器使用指南
摘要:在Python单元测试中使用多个patch装饰器时,装饰器按从下到上的顺序应用,参数顺序需与之对应。示例展示了如何模拟两个外部函数,证明装饰器顺序不影响结果,但必须保持参数一致。建议保持代码清晰、覆盖所有测试路径、处理异常情况,并将测试集成到CI流程中以确保可靠性。
2025-10-21 15:48:33
429
原创 一文看懂Python装饰器执行顺序
本文通过三个示例演示了Python装饰器的执行顺序和嵌套机制。示例1和2展示了当使用@f1@f2装饰器链时,执行顺序为:先执行外层装饰器f2(outerf2),再执行f1(outerf1),然后依次执行内层wrapper函数(innerf1→innerf2)。示例3调整了wrapper函数内部逻辑,改变了print语句的顺序,但基本执行流程不变。实验证明,装饰器链的调用顺序与直接嵌套调用(f1(f2(test)))等价,且wrapper函数的执行顺序会影响最终结果。
2025-10-21 14:24:13
216
原创 PythonORM框架排序技巧:空值置后的JSON字段排序
通过case子句,Field字段的key为空值时赋值为无穷大,比如这的999999999。(2)且该字段中某个key的值为空的排列到最后。记一次通过ORM框架排序某个表json字段。(1)要求该字段按照升序排序。
2025-10-16 20:32:09
124
原创 架构设计与DDD(未完待续..)
贫血模型的实体有一堆属性和get、set方法,看不出具体的业务逻辑,要梳理这个实体关联什么业务,只能一层层的搜service,这就是贫血失忆症,不够面向对象。而充血模型,除了get、set方法,还包含具体的业务方法,每个实体都是清晰的,这样的模型就叫充血模型,充血模型内存计算会多一些,内聚核心业务逻辑处理。这才是面向对象的本质。
2025-10-09 17:13:31
1018
原创 构建高性能系统的思路
本文将详细介绍构建高性能系统的思路、使用的工具和手段,帮助开发者全面掌握构建高性能系统的技巧。通过合理选择和配置工具和框架,优化系统的各个组件,可以显著提高系统的性能和稳定性。· 在开始构建高性能系统之前,首先要明确系统的功能需求、性能目标和预期的用户规模。· Python:Python拥有丰富的库和框架,如Django、Flask和FastAPI,适合快速开发高性能Web应用。· 根据系统需求选择合适的编程语言和框架,如Python的FastAPI或Node.js的Express。
2025-09-30 18:58:19
596
原创 MR模板以及代码审查规范
【MR类型】:feature/* | bugfix/* | release/X.Y | dev | main。新增了xxxxx功能、逻辑…简要描述MR的主要内容。关联的issue编号, 如 #100。如果你是测试开发,还需要描述测试情况。会影响xxx模块、xxxx模块,…为了支持xxxx,需要xxxx…【新增内容】or 【变更内容】【简要描述】or 【标题】如果涉及到模块的修改、更新。xxxx平台——xxx模块。如果涉及到问题单号或者编号。
2025-09-29 16:02:06
605
1
原创 设计模式之代理模式-骆驼与巴巴羊的故事
兔子:你们之间的事,我不想掺和,不过我也不允许你被欺负,要不你找巴巴羊看看,他应该能帮上忙,前一阵白象惹事,巴巴羊用我家种的胡萝卜把白象打的鼻青脸肿的,灰头土脸跑了。骆驼:兔子,最近我家这边不太平啊,连小蚂蚁都开始威胁我了,鹰酱和他穿一条裤子的,你能卖给我几个葫芦卜或者蘑菇吗,价钱好说,我不缺钱,我缺的是安全感。骆驼:兔子,我家周围最近不太安全,有各种豺狼虎豹,你要不来我的沙漠派一些兵兔兔保护我好不好,保护费你随便开价。分析:在这三个动物关系种,巴巴羊作为兔子的代理,卖给骆驼胡罗卜之类的农副产品。
2025-09-25 15:37:50
1113
原创 设计模式之命令模式
换句话说就是, 命令模式把 命令内容、命令执行者、调用者或调用时间点分离,实现了请求的发送和执行之间的解耦。将请求和操作封装成对象,将不同请求和其接收者分开解耦来实现请求的发送、执行、撤销等操作。
2025-08-26 20:16:20
449
原创 趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
在程序运行时动态的选择不同的算法策略或者行为,是一种行为型设计模式。策略对象之间是独立的,没有共享状态,客户端自由选择不同的策略对象。
2025-08-19 19:31:31
917
1
原创 手机场景性能测试中的部分关键指标
在性能测试中,拦截率帧通常指的是在特定条件下,系统未能按时渲染的帧数占总帧数的比例。例如,在测试图形性能时,可能会同时考虑CPU、GPU和内存的使用情况,以全面评估应用的性能表现。在性能测试中,拦截原因分布指的是导致帧或图层未能按时渲染的各种原因的分布情况。2.拦截率:但凡一帧中有一个图层被拦截,这一帧则认为DSS被拦截,表针存在DSS优化空间的帧的比例,可细分为:视效拦截率和硬件规格拦截率。与拦截率帧类似,拦截率图层指的是在特定条件下,未能按时渲染的图层数占总图层数的比例。
2025-08-15 17:18:06
951
原创 算法知识笔记
有一种特殊的并行算法很流行, 就是分布式算法, 在并行算法只需要两到四个内核时,完全可以在笔记本电脑上运行它, 但是如果需要数百个内核呢, 在这种情况下,可让算法在多台计算机上运行, MapReduce是一种流行的分布式算法, 可以在流行的开源工具 Apache Hadoop使用它。布隆过滤器: 是一种概率性数据结构, 所以提供的答案有可能不对,但也有可能是正确的,google为了判断某一个网页是否收集过,可不使用散列表而是使用布隆过滤器, 使用散列表时答案绝对可靠, 而是用布隆过滤器时答案可能是正确的。
2025-08-11 20:11:32
558
原创 社交与职场中的墨菲定律
克服人性短板,避开成事暗礁: 改正恶习、相信自己不要自卑、只犯一次错误(不要在同一个问题上犯错误或者总是犯错误)、不要忧虑学会控制自己的情绪、妒忌心(宽容对待他人,客观看待自己)、切忌爱慕虚荣、不要贪婪知足常乐。做事情前理清条理(必须要做的、应该要做的、量力而为的、可委托他人做的、可以不做的)。其次人际交往空间距离不是固定的,有伸缩性,依赖于具体情境、交谈双方关系、社会地位、性格等。(3)、 青蛙法则: 居安思危,让你的职场永远精彩。(5)、 奥卡姆剃刀定律: 把握关键,化繁为简、去粗取精、去伪存真。
2025-08-10 22:53:18
449
原创 电影艺术好,电影知识得学
便使用 O.S.描述。一幕结束的时候,舞台的布幕会拉上,观众可以起身活动,进行社交与上厕所等,即所谓的中场休息时间。第二团队:拍摄一些不需要导演亲自到场的镜头,比如动作戏、各类空景镜头、名胜地标灾难片中的群众反应,以及一些事后补拍的不包含主要演员的镜头等。胶卷时代的制片可以先拍了再说,但数字时代的制片却需要先搞懂后期流程,才能知道拍摄时要用什么样的拍摄器材与方式,不能任意进入拍摄。第二幕(冲突\发展): 是全篇最长的一幕,导火索事件造成的冲突会进一步升级, 紧张感越来越高,主角要解决问题的阻力也越来越大。
2025-08-09 09:37:59
1389
原创 数据库表字段命名建议和最佳实践
数据库字段命名是数据库设计中的重要环节,良好的命名习惯可以显著提高数据库的可读性和维护性。通过遵循上述标准和最佳实践,可以确保字段名清晰、一致、简洁,并且易于理解和维护。在实际应用中,可以根据具体项目的需求和团队的习惯,灵活调整这些规则,以达到最佳的命名效果。
2025-08-08 17:25:03
1160
原创 typer:都2502年了谁还用argparse
Typer,构建强大的命令行界面。简单易上手,基于Python类型提示。它不仅可以用来构建命令行,而且它还是一个命令行工具,可以将你的脚本转为cli应用程序。易于编写: 强大的编辑器支持,自动补全,减少调试时间,设计上易于使用和学习易于使用和上手简洁可扩展复杂性:根据需要增加复杂性,创建任意复杂的命令树和子命令组运行脚本:可以使用自带的typer命令程序来运行脚本,自动将脚本转为cli那么它和我们常用的 argparse有什么区别呢?
2025-08-07 10:38:17
488
原创 10种常见的软件架构模式
架构模式是一个通用的, 可重用的的解决方案, 用于可复用的解决在给定的上下文中软件体系结构中经常出现的问题, 架构模式与软件设计模式类似, 但具有更广的范围。对等点可以作为客户端, 从其他对等点请求服务, 作为服务器, 为其他对等点提供服务, 对等点可以充当客户端或服务器或两者的角色, 并且可以随时间动态的更改其角色。这个模式用于设计一个解释用专用语言编写的程序的组件, 它主要指定如何评估程序的行数, 即以特定的语言编写的句子或表达式, 其基本思想是为每种语言的符号都有一个分类。高度动态的行为是可行的。
2025-08-06 00:52:32
1270
原创 趣谈设计模式之状态模式-您的数字饮品-比特咖啡!
通过与番茄钟的结合,比特咖啡帮助用户在工作和学习中保持专注,提升效率,同时享受咖啡带来的提神醒脑效果。首先是这款APP的起名,既然将要开发的这款APP是一个虚拟数字产品,在数字世界里,整个世界都是由0和1构成的,并结合自己的名字-姬比特,哦 对了!于是,姬比特开始研究如何将番茄钟的时间管理方式以模拟经营数字咖啡馆的形式展现出来,帮助用户在休息时间体验了咖啡的制作过程,又有效的管理的时间。在状态模式中,当对象的状态发生改变时,会将状态的处理委托给当前的具体状态对象,状态对象会负责处理相关的操作。
2025-07-30 15:55:05
1214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅