- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 软件生产环境问题处理三部曲-生产环境的“活系统”特性与不可预测性
一个数据库连接池的轻微调整,可能导致上游服务的线程池耗尽,进而引发整个应用链路的超时雪崩。:系统与环境的边界不断变化,第三方API、CDN、DNS都成为系统的一部分。:一个运行了200天的MySQL实例,即使查询没变,响应时间可能已慢了三倍。:组件间的交互不是简单的1+1=2,而是会产生乘数效应或抑制效应。:在测试环境运行良好的模式,在生产流量下暴露出完全不同的特性。:同一物理机、交换机、数据库实例上的其他租户影响你的性能。(蝴蝶效应):一个字节的差异可能导致完全不同的系统状态。”然后误删了生产数据库。
2025-12-09 10:21:42
642
原创 软件生产环境问题处理三部曲-生产环境与开发/测试环境的本质区别
目标是高效地编写新代码、尝试新想法、快速迭代。不稳定和频繁重启是常态。。目标是尽可能模拟生产,以发现功能、性能、安全等方面的问题。允许失败和调试。。唯一目标是。任何变更都是风险,稳定压倒一切。
2025-12-09 10:12:06
630
原创 一分钟学会限界上下文核心思想
本文探讨了限界上下文在领域驱动设计中的核心作用。通过"订单"一词在不同部门的歧义案例,说明同一个术语在不同业务场景下可能具有完全不同的含义和属性。限界上下文通过建立显式边界来解决这一问题,在每个边界内定义无歧义的通用语言和领域模型。文中以电商系统为例,展示了如何将整体业务拆分为商品、订单、物流、支付等独立的限界上下文,每个上下文专注特定业务领域,使模型保持内聚和清晰。这种方法能有效消除歧义,提升系统的可维护性和扩展性。
2025-11-20 11:51:28
356
原创 一分钟学会策略模式+工厂模式 go示例
读这段代码的人,不需要马上关心你的对象是怎么创建的,他们看到的时候会觉得,”奥,调用这个工厂然后输入策略类型执行支付就好了“,而不是”哎,这里先创建这些支付策略,然后再执行支付“。同时,你把未来的创建的对象都封装到工厂里了,以后有新的对象要创建,他们不需要到处去找哪些地方创建,就改这里就行了。同时,新增新的支付方式,只需要定义新的支付方式、注册,你不会影响到其它支付方式的支付流程代码。调整后的支付代码,你可以一目了然的看到业务处理就这么简单,输入支付类型、执行支付。用策略模式+工厂创建策略对象来解决。
2025-11-13 16:12:05
446
原创 缓存雪崩、击穿、穿透
请求了一个不在缓存的冷数据,导致直接打到数据库,并且数据库也没有这个数据,导致无法回填缓存,于是每次都会打到数据库,造成压力。1、缓存空对象,或布隆过滤器,当有新数据时,检查是不是缓存过空对象,把它更新,在缓存层拦截无效请求。3、布隆过滤器,在系统启动时,给所有id设置缓存,那么不在缓存的必然是不符合的请求,那么直接返回。2、标记客户异常行为,针对性策略返回内容,也就是请求风控,在接入层或风控层识别并阻断攻击源。3、分布式锁,避免大量重建缓存的请求,保证只有一个请求在重建缓存。2、永不过期,更新缓存内容。
2025-11-13 12:08:56
492
原创 上下文无关文法、产生式、终结符、非终结符
第二个产生式 <subject> ::= "I" | "You" | "He" | "She" 表示一个主语可是"I"、"You"、"He"或"She"。第三个产生式 <predicate> ::= "eat" | "drink" | "sleep" 表示一个谓语可是"eat"、"drink"或"sleep"。"I"、"You"、"He"、"She"、"eat"、"drink"和"sleep"是终结符,它们表示具体的词汇或符号。这意味着在给定的上下文中,一个非终结符的展开规则是固定的,不受其他符号的影响。
2024-04-20 16:32:40
1256
原创 【Python自动化游戏操作脚本】
还支持录制操作,然后播放录制的操作:意味着你只需要做一遍,后面不需要你再亲自做了。使用场景:回合制游戏自动刷图、固定游戏本自动行动、游戏一键连招。比如这一关只需要按哪些键盘、鼠标的,那就可以代替你的双手。如果你的工作内容操作比较固定,也可以使用它。支持自定义配置模拟鼠标键盘操作。
2023-11-30 15:21:25
775
转载 Ubuntu 创建自定义命令
命令:gedit ~/.bashrc在里面加上自己的命令toZxkp,和实际的指令alias toZxkp='. /mnt/win/toZxkp.sh'命令:source ~/.bashrc (立即生效)
2021-10-25 14:55:48
713
原创 PHP实现二叉树和测试
<?phpclass TreeNode{ private $value; private $leftChild; private $rightChild; public function __construct($value,$leftChild=null,$rightChild=null) { $this->value = $value; $this->leftChild = $leftChild; .
2021-05-19 20:18:52
180
原创 PHP实现队列和测试
<?php/** * Class MyList * 队列,先进先出,头部出,尾部入 * * */class MyList{ //队列头索引 private $head_index = 0; //出队的内容 private $out_value; //入队的内容 private $in_value; //队列数组 private $list_arr = []; //队列最大值(满了不能入队) .
2021-05-19 11:44:56
266
原创 PHP实现栈和测试
<?phpclass HeadStack{ //栈顶索引 private $top_index = -1; //出栈的内容 private $out_value; //栈数组 private $stack_arr = []; //栈最大值(满了不能入栈) private $max_num = 10; //初始化栈,设置栈最大值 public function __construct($max_num=10.
2021-05-19 11:04:12
153
原创 前缀树php实现1
<?phpclass TireNode{ public $data; public $children = []; public $isEndingChar = false; public function __construct($data) { $this->data = $data; }}
2021-05-18 10:47:53
139
原创 前缀树PHP实现2
<?phpinclude "TireNode.php";class Tire{ private $root; public function __construct() { $this->root = new TireNode("/");//根节点 } public function getRoot(){ return $this->root; } public function in.
2021-05-18 10:47:27
137
原创 从计算机的多级缓存设计出发得到的一些生活工作方法思考
1、如果能预见到可能性很大的操作,那么做提前处理 比如,读取当前页内容之后,很大可能要读取下一页,那么可以提前读取下一页。但是读取下一页的动作,是用户正在阅读当前页的期间去做的,异步去做,可以在用户阅读的同时同步进行。 发散思考: 1、流程步骤已经触发,还有后续步骤等着触发记录,那么期间就可以通过异步提前生成好下一步要保存的内容,用户点击的一瞬间就已经生成完毕。 2、用户保存数据后,可能存在领导审批的步骤,这个步骤的数据准备可以在保存之后就生成,也可...
2021-04-25 11:19:43
108
原创 消息队列-削峰
MYSQL单机处理请求是有上限的,因此需要把请求限制在一定数量上。一般的MYSQL每秒2K请求处理是中上水平,达到5K就处理不过来。通过消息队列来削峰,把请求的处理堆积在队列中,或队列满到10K或某个值,就不加入队列都可以,按顺序每秒2K的进行处理,达到削峰目的。...
2021-04-23 10:12:27
1392
原创 php+redis实现处理高并发秒杀(令牌桶限流)
<?phpclass redis_miaoshaControl extends mobileControl{ public function __construct() { parent::__construct(); } /** * 接口参数 * @return array */ public function getRules() { return [ '.
2021-04-21 15:32:46
970
原创 ORDER BY排序后,用LIMIT取前几条,发现返回的结果集的顺序与预期的不一样
如果order by的列有相同的值时,mysql会随机选取这些行,为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可能减少重复的概率
2021-02-23 11:19:24
484
原创 记录htaccess实战写法
<IfModule mod_rewrite.c>RewriteEngine onRewriteBase /itRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)\.html$ /it/solution/index.php?rewrite_param=$1 [L]RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1.
2021-02-04 10:41:13
211
原创 环境是如何潜移默化的影响组织或世界的发展进程
一个良好设计的产品,可以使维护人员,扩展人员需要花最少的时间去调整,有的甚至不需要维护人员、扩展人员。
2021-01-28 09:28:57
181
原创 稀缺-如何解决组织中的时间稀缺
组织的“赘肉”一点一点地被雪貂,随之一同被带走的,还有余闲。在这种情况下,组织很希望有一位干将,不是整天想着如何将一分钱掰成两半花,而是能超脱于每日的管窥心态,确保组织拥有足够的余闲。他所关注的不是今天需要完成什么工作,而是明天可能会出现什么样的突发事件,而这些突发事件又会如何影响紧张的工作计划。他的存在,能够保证专注于当下目标工作的人们,不会向未来的项目借用资源。并因此耗尽余闲,讲组织拉入未来的带宽陷阱。...
2021-01-28 09:27:09
154
2
原创 JMeter做压力测试记录
转载地址:https://blog.youkuaiyun.com/weixin_39089928/article/details/87369101
2020-11-25 15:52:05
98
原创 php脚本性能检测工具
1、xdebug安装把phpinfo()打印出来的页面复制到http://www.xdebug.org/find-binary.php,可以自动检测当前PHP版本需要下载哪一个,然后按照它的建议去下载,放到指定的php/ext目录下面,配置好对应的php.ini的扩展位置即可;指定Xdebug扩展文件的绝对路径zend_extension="C:\App\php\php\php-7.0.12-nts\ext\php_xdebug-2.7.0alpha1-7.0-vc14-nts.dll";启
2020-11-25 11:58:23
369
原创 phpize命令安装扩展失败的解决办法,包括autoconf版本低的解决办法
1、安装php扩展时要使用phpize命令,但是可能会报错error: Autoconf version 2.68 or higher is required2、这时候就需要安装更高版本的Autoconf3、用yum -y install autoconf命令安装好之后,/usr/bin/autoconf -V,查询到确实是最新版本4、执行phpzize命令依然报同样的错误5、strace /usr/local/php/bin/phpize命令,追踪phpize执行时究竟用了哪个路径的
2020-10-28 16:27:59
983
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅