于公于私,你都需要一张急救员证
于公于私,你都需要一张急救员证
“如果有一天,遇见需要帮助的人时,即使已经完全忘记急救知识,也请陪在他身旁,告诉他,我会和你一起等待救护人员过来的” —急救第一课
背景介绍心源性猝死每当我们听到诸如“xxx连续加班后猝死”等新闻时,我们会觉得这种事情离我们既熟悉又陌生
熟悉的是因为职业关系,现代年轻人经常会面临加班、熬夜、饮食不规律、应酬喝酒等损害健康的因素,这些恰好和新闻中猝死人员的发病原因有关系。陌生的是好像这些猝死的事件都发生在新闻中,自己身边好像并没有遇到这样的案例。
于是不禁让我感到困惑,现实里猝死这件事情离我们到底有多远?
以下是来自国内的最新研究数据,齐鲁医院陈玉国/徐峰团队在心脏骤停研究领域取得新进展
做个简单的换算,按照全国人口推算(按2020第七次人口普查数据来看,不含港澳台地区总人口约为14亿),我国每年心跳骤停发病人数约为 103万
在经过EMS救治的28969患者中,院外心脏骤停居首位的发病地点是家中或住宅,发生比例为**76.85%,公众场所位居第二占比16.35%**,而发生在诊所(2.36%)或者救护车的比例(4.44%)加起来还不到1 ...
初探-契约测试(Contract Test)
初探-契约测试(Contract Test)—题记:人们总是好奇什么是永恒的,然而唯有变化是永恒的自打一进入公司以来,就体验到了测试的重要性
无论是TDD、Bug bush、Unit test、Integration test、E2E Test…
都不禁让我感受世界之浩瀚,测海之无涯
所以,随着新项目上需要认识一个Contract Test的东西之后
我不禁感慨道,还有完没完了?😂
测试金字塔在了解契约测试之前,不得不先祭出经典的测试金字塔
从图上可以很清楚的看到,金字塔越往上反馈的时间越长,同时花费的代价也越大。
所以平时我们更多的精力是放在Unit Test中,方便更及时的发现潜在的风险,还能降低成本
而Integration Test则往往需要启动mock server,所以开销相对会更大一些。但同时,相对于Unit Test它更加不关注细节,测试的范围更广
曾经有一个项目写了非常多的Integration Test,导致每次push代码的时候,都要跑8分钟的测试
而E2E Test和更高等级的测试更加贴近用户操作,所以对于软件内部细节则越来越不关注。
虽然 ...
为什么我们的代码越写越乱?
为什么我们的代码越写越乱?本文并不是探讨熵增效应、复杂系统设计等话题,仅仅作为个人上项目以来的感想。
缘起最近要从一个上了半年的项目下了,相比于我上一个中途上马的项目,这个项目是从前期需求讨论到后面代码落地,我都有幸全程参与其中。
除了继续体验人聚又人散的伤春悲秋之外,最近最让我感到困惑的是为什么面对明明我全程参与的代码,我却有种陌生感?甚至现在如果要新增一个很简单的需求,我都要盯着代码看好久才能大概知道如何下手
一句话就是:
我对我的代码失去了掌控!!!
而仅仅在两个月前,我还能滔滔不绝的和新上项目的小伙伴讲述我们的代码架构,以及代码中的注意事项。
如果将这种感觉具象化的描述一下就是,我明明照着设计图,小心翼翼一层一层的盖楼房,将要盖完的时候打眼一瞧
嘿,我们这是搭了一坨什么东西呀~
基于此,我决定趁着最近不忙好好分析分析,这样的感觉究竟来源于什么。
原因一:重构不足我这里说的重构不足并不是指没有重构,相反,作为一个以敏捷开发著称的公司,重构早已融入我们的日常工作中。
这里我所说的重构缺位,是指我们平时的重构并没有频繁的进行。
还记的在GBT培训的时候,第一次看见小峰 ...
CR-BOX——疫情放开后如何自我防护
CR-BOX——疫情放开后如何自我防护前言随着12月份国内各大城市陆陆续续开始施行“全面放开”的防疫政策,身边阳性感染陡然增多了起来。
直到上周,先是项目组的同事们接二连三的出现发热随后公布阳性症状,然后是我身边的室友、朋友、女朋友也都出现了新冠阳性反应,不得不感叹一句这个Omicron传播速度真的可怕。
这是一张网上流传的各省份第一波峰值预测图
值得一提的是,虽然身边越来越多的人出现了阳性症状,但我很自豪地说,在我一系列的操作之下,我依然没有出现任何症状。(希望发出去后不要被打脸)
在这里为了减轻大家的焦虑,我决定分享一下我目前的防疫措施
减少和人的接触(切断传染源,比如居家办公)
只要离开卧室,必带N95(切断传播途径)
卧室开窗通风,并全天24小时开电油汀(减少空气中病毒含量)
肉、蛋、奶、新鲜叶子蔬菜、柑橘类水果(增强7大基础营养物质保障,给免疫系统提供必要物质基础)
当然,在做好上述一切措施之后,大家很大概率就不会被传染。但是上述描述中的开窗通风其实是有待商榷的。
因为现在来到了冬天,冬天之所以是传染病高发季节,主要原因就在于大家都呆在室内且门窗紧闭。室内空气中 ...
记一次由Launchctl引发的Bug事件
记一次由 Launchctl 引发的Bug事件起因事情的起因是,on beach 的时候打开了自twuc以来都没有再动过的本地环境
发现Mysql密码忘了,于是想先关闭当前Mysql进程,然后再通过skip-grant-tables 跳过密码实现登录。
于是熟练的开始了terminal操作
突然发现,不对啊,为什么这个进程好像kill不掉呀
见鬼了。。。。。
作为一个唯物主义者,冷静片刻后,开始寻找解决思路。
从上面可以很明显看出,kill掉了9884 和 9971 这两个进程后,他两立马变成了新的进程号 10044 和 10131
首先,kill进程后其PID变更了,说明该进程不是关不掉的,而是在关掉之后,立马又被重新启动了,于是被分配了新的PID
那么,是谁重启了他们呢?
经过一番搜索后,终于在一篇讨论帖下面发现了一个线索:Unable to stop MySQL on OS X 10.10
里面高赞的答案里提到了launchctl
那么 launchctl 是什么呢?
launchctlwiki上定义的 launchctl
a unified, open-source s ...
设计模式浅谈之-责任链
从一张关于Excel文件导入的故事卡谈起在9月份的时候,还有一件事让我觉得很有收获
在领到一张关于excel导入的故事卡时候,我像往常一样开始找文军老师 pair coding
故事卡的内容主要是要将excel的内容进行批量导入,并且导入后还要进行判空校验、格式校验、业务场景校验(用户是否存在、用户A、B是否存在关系)、重复数据校验以及最后的组装等操作
区别于以往pair时我们先写测试的惯例,文军老师那天突然问我
“你知不知道责任链?”
“学设计模式的时候好像听说过,但是也没有实践过”
文军老师看出了我不会的尴尬,随即开始讲起了什么是责任链
责任链设计模式从wiki上的介绍来看,责任链主要是
In object-oriented design, the chain-of-responsibility pattern is a behavioral design pattern consisting of a source of command objects and a series of processing objects. Each processing object co ...
记一个项目中的DDD实践
8月上了一个项目,on boarding 的时候TL和Coach就说我们项目使用的是DDD架构让我们先了解一下。
什么是DDD?“DDD”全称叫Domain Driven Design,在wikipedia中有这样的解释
Domain-driven design (DDD) is a software design approach [1] focusing on modelling software to match a domain according to input from that domain’s experts.
这样解释的云里雾里的,初看时根本不知所云。什么是domain?他和我们熟知的 Module 有没有区别联系?domain expert 又是什么鬼,使我更加难以理解。
于是又从网上查阅了一些资料,结合原作者Eric Evans的《Domain-Driven Design: Tackling Complexity in the Heart of Software》书中的描述,才敢提笔勉强写一点粗浅的认识,还望诸位笑看。
贫血模型抛开一上来就给一个概念下定义的 ...
Fegin不能发起携带Body的Get请求的探究与思考
OpenFeign简介
Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Hystrix
Spring Cloud Feign具备可插拔的注解支持,支持Feign注解、JAX-RS注解和Spring MVC的注解。
以上是OpenFeign的一个简洁,我们可以用它更优雅的项目中发起HTTP请求。但是由于本身是基于各种http客户端进行封装的,所以不免损失了些许的灵活性。也正是因为这一点,在一些实际的使用中就遇到不小的问题。
遇到问题业务方有一个GET方法的接口,但是接口参数需要在body内通过application/json的方式传递进去,如果在springmvc中实现这个接口的话,大概会是如下模式
1234567891011@GetMapping("/demo")public String demo(@RequestBody Req req) { return re ...
我是如何搭建起来这个博客网站的(下)
如何部署在服务器上众所周知,我们的网站如果就在本地启动的话,是没有办法被互联网上其他用户访问到的,所以必须挂到服务器上。这里有几种选择:
直接挂载到GitHub上(或码云上面)
购买阿里云、腾讯云等云服务器厂商的服务器进行挂在
(本站使用的)将项目托管到GitHub仓库里,并通过Vercel链接到GitHub仓库进行部署
这里比较推荐第三种,也是本站使用的方法。
首先第一种方案需要在本地Hexo g编译生成出public文件夹,然后将这个文件夹的内容上传到GitHub上才能用,比较麻烦。
并且,由于GitHub在国内访问并不稳定,尤其是某些运营商(没错,移动说的就是你)访问的又慢又不稳定,故最不推荐
其次,第二种方法,好处很多,既然用上了服务器,那么后端也可以考虑上了,之后的功能扩展也会变得轻松很多。
缺点就是,可能就是比较费钱,并且由于使用的是国内的服务器,将来域名需要备案。
最后,我要重点介绍一下第三种方法,先上架构图:
简单说明一下思路
在GitHub上建一个仓库(建议设置成Private),作用同步本地的文件
注册Vercel账号(就用GitHub账号注册),点击导入G ...
我是如何搭建起来这个博客网站的(上)
我要做一个什么样的网站首先明确我的需求点,即我的博客要有哪些功能。
我的博客要能实现基本展示文章功能;
我的博客文章要支持MarkDown写作语法;
我的博客要有文章分类(按照类别、标签);
我的博客网站要有友链、个人展示页等;
我的文章能开通评论,以便于和读者交流沟通;
我的文章要能按照时间轴进行排序,方便进行新老文章的查找;
附加功能:
最好有一个搜索功能,能够帮助我快速的定位一篇文章;
最好有一个网站访客记录功能,比如多少人点击了这篇文章;
最好对每一篇文章做一个字数统计功能;
其中,我发现上述需求点,除了留言功能、访客统计(后来发现也可以用前端技术解决)需要后端做数据存储,其余的需求完全可以用前端技术来解决。
博客主要是放置一些静态资源(如html、css、js)。并不太涉及增删改查的功能,且一般也不怎么需要用户登陆等权限操作。
所以,抛开传统的网站设计:前端+后台的设计思路。能不能单纯的用前端框架来实现一个博客网站,就成了我的当务之急。
很有意思的是,当我抱着这个想法去搜索时,发现网上早已经有了一大堆成熟的解决方案。
例如:Hexo、Hugo、Solo、JekyII ...

