Shi Hai's Blog

随遇而安

kubernetes test SIG组相关能力梳理

提供的服务及相关能力: 项目CI和工作流自动化工具:prow、tide; 支持规划化项目CI的基础设施:boskos、ghproxy、greenhouse; 测试工件的提取、展示和分析: gubernator、kettle、testgrid、triage; 任务配置管理并确保它们使用一致的流程:job configs、kubetest; 方便github的配置管理:peribolos、la...

行为驱动设计(BDD)学习

BDD诞生背景 行为驱动开发(BDD: Behavior Driven Development)的概念是2003年由Dan North提出来的。Dan North在给很多程序员培训TDD等敏捷实践时,发现大家都有一个共同的问题:不知道从哪里开始进行测试、测试什么,不测试什么,要测试多少次。为了解决这个问题,Dan North就引入了BDD这个概念。可以说BDD是在TDD的基础上演化而来。 在...

零基础搭建vitepress总结

需要用到搭建一个简易web网站管理一些markdown文件,约等于无前端基础。 搭建的环境是centos 一、基础环境安装 1.1 配置nodejs // 下载nodejs包 wget https://nodejs.org/dist/v20.0.0/node-v20.0.0.tar.gz tar zxvf node-v20.0.0.tar.gz // 编译安装 cd node-v20.0...

《乌合之众-大众心理研究》阅读随笔

作者前言 理性不过是较为晚近的人类才具有的属性,而且尚未完美到能够向我们揭示无意识的规矩。 导言:群体的时代 令人难忘的历史事件,不过是人类思想不露痕迹的变化所造成的可见后果而已。这种重大事件所以如此罕见,是因为人类这个物种最稳定的因素,莫过于他世代相传的思维。 第一卷 群体心理 第一章 群体的一般特征 我们有意识的行为,是主要受遗传影响而造成的无意识的深层心理结构的产物。 从感情及其激起的...

新脑血管疾病介绍和紧急预防

同窗十几年的同学突然离世,平时身体健康,毫无预兆,挺让人震惊的。 和同学亲友沟通过程中,一个细节让我十分诧异:公司同事在等120到来的12分钟时间内没有进行任何紧急抢救措施。120也没有提供任何线上的救助指导。离世原因无法考证,但通过同学亲戚的描述应该是心源性猝死/心肌梗死。 一、新脑血管疾病 1.1 心源性猝死 猝死:指外表看似健康的人,因内在疾病而发生的迅速死亡,是一种临床表现。 导...

java 学习总结

最近开始要重新使用Java,已经有若干年没使用了,另外完全不懂Java编程语言背后的设计意图。 借机好好回炉重新学习学习,学习材料从谷歌扒拉过来的。 一、static关键字 static修饰的变量存放在静态区。 二、final关键字 final修饰的变量无法被修改。final+static修饰的变量表示一个常量。 三、java接口 对于不同的程序员群体来说,同意一份阐明他们的软件如何交互...

groovy学习

主要想通过Groovy来管理架构的DSL,实际用DSL的逻辑组织会强于json、xml这类文件存储格式,当然带来的成本还是需要熟悉一下groovy的语法。主要还是对官网给的一些示例代码熟悉一下,主要重点想看一下怎么定义DSL和存储格式(ToString、yaml、json、xml等)的输出。 groovy吸收了很多Java和Python的语言特性,代码本身应该用vim编辑是比较高效的,不过...

AWS最佳架构实践随笔

对AWS最佳架构实践的上下文及演进驱动力做个单纯的考古活动,内容主要从各个网站介绍上拷贝过来,如要看完整文档建议看参考文献相关索引链接。 一、亚马逊最佳架构实践 1.1 目标 它提供了一种方法,使您能够根据最佳实践持续衡量架构,并确定需要改进的方面。审查架构的流程是关于架构决策的建设性对话,不是一种审核机制。 1.2 框架的六大支柱(Pillar) 1.2.1 卓越运营(Operatio...

记一个python默认参数引用泄露问题

一、问题背景 如下这段代码后,执行compute()函数前后,引用计数居然多了3,也就意味泄露了3个引用。 cache={}会让cache引用变量的引用计数加2,另外还有1个引用计数的增加以及怎么产生引用泄露的呢? import sys class A: pass def compute(cache={}): cache[0] = dict() x = A()...

python urllib内存泄露问题分析

一、问题背景 在python2/3中调用urllib模块会有循环引用没被释放,触发代码如下所示: import gc import sys if sys.version_info.major == 3: from urllib import request urlopen = request.urlopen else: import urllib2 url...