bingoohuang
bingoohuang
 图:天空之境茶卡盐湖上的背影,来自[500px](https://500px.com/photo/270209549/salt-lake-chaka-by-xy-zhang?ctx_page=2&from=search&ctx_type=photos&ctx_q=chaka+lake) 读了3天前的思特沃克一篇文章:[写了这么多年代码,你真的了解SOLID吗?| 洞见](https://mp.weixin.qq.com/s/VLgSGx8tWYR2a_0IqRCyig),里面提到了SRP原则是最容易理解,但是却最难于驾驭的一个设计原则,有点像烹饪中“盐少许”一样,不太容易把握。 从SRP的S代表线条美来看,有人觉得胖点好,有人觉得瘦点妙,所谓环肥燕瘦,不能苛求。但是在一个全球化的时代,在一个信息满天飞的时代,这种审美潮流还是趋向一致的。 (未完待续)
# 为啥Go的变量类型要放在变量名后面 早上看一篇博客[Cloud-Native Java vs Golang](https://medium.com/swlh/cloud-native-java-vs-golang-2a72c0531b05),然后上它的[github仓库](https://github.com/viggin543/reactive-code-with-quarkus),顺便溜了要一眼下面的这段代码: ```kotlin package org.acme import io.vertx.core.json.JsonArray import io.vertx.core.json.JsonObject import io.vertx.mutiny.mysqlclient.MySQLPool import io.vertx.mutiny.sqlclient.Row import io.vertx.mutiny.sqlclient.RowSet import java.util.concurrent.CompletionStage import javax.inject.Inject import javax.ws.rs.GET import javax.ws.rs.Path import javax.ws.rs.Produces import...
## [SonarQube](https://www.sonarqube.org/)介绍   SonarQube社区版是开源的代码质量管理平台,涵盖了架构设计、注释、编码规范、潜在缺陷、代码复杂度、单元测试、重复代码7个维度。通过强大的插件扩展机制,支持对主流编程语言的指标分析,目前可以支持超过20种以上主流编程语言。 SonarQube 在进行代码质量管理时,会从下图所示的七个纬度来分析项目的质量。  SonarQube 在进行代码质量管理时,会从七个纬度来分析项目的质量。 - 糟糕的复杂度分析:文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。 - 重复:显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方。 - 缺乏单元测试:可以很方便的统计并展示单元测试覆盖率。 - 没有代码标准:sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写. - 没有足够的或者过多的注释:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。 - 潜在的bug:可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷。 issue的类型分为五个: - [Blocker]阻断:错误,高概率影响程序运行,例如:内存泄漏,未关闭的JDBC连接等等,代码必须修复。 - [Critical]严重:低概率影响程序运行活着一个安全漏洞的错误,例如:空catch块,SQL注入等,这样的代码需要立即审查。 - [Major]主要:代码缺陷,影响开发人员的生产力,例如:裸露一段代码,复制代码块,未使用的参数,这样的代码需要关注或忽略。 -...
# Redis开发规范 [1] 强制 [2] 推荐 [3] 参考 ## 使用规范 1. [2] 冷热数据区分 > 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 1. [2] 业务数据分离 >...
小勇同学@lvyong1985说克隆[bssh](https://github.com/bingoohuang/bssh)半天也没反应,是不是历史库太大了。想想,应该是历史中曾经有一个vendor的夹子,所以的依赖都在里面,虽然有一次commit时,我把它给删除了,但是在完整克隆的时候,还是存在于[历史](https://github.com/blacknon/lssh/tree/7b4e758e6513690febf43c43627691c91ec1fbd6/vendor)之中的。删除之后的[效果](https://github.com/bingoohuang/bssh/tree/22a0de47839484c46161ef18007eeea6c5da851d) [删除脚本](https://stackoverflow.com/a/32886427): ```bash # Remove DIRECTORY_NAME from all commits, then remove the refs to the old commits # (repeat these two commands for as many directories that you want to...
# 海拉姆定律(Hyrum's Law) 在看[Building a high performance JSON parser](https://dave.cheney.net/high-performance-json.html)时,里面提到[海拉姆定律 Hyrum's Law](https://www.hyrumslaw.com/) > An observation on Software Engineering 关于软件工程的一点看法 > Put succinctly, the observation is this: > > 简单地说,观察结果是: > >...
话说要选个OpenJDK的版本。也就Amazon Corretto 和 Alibaba Dragonwell。没有做具体对标之前 ,心里其实大概有了一个谱,那就是选Amazon Corretto。因为Alibaba在开源上,除了一些工具类的(例如[druid](https://github.com/alibaba/druid))还可信赖之外,其它方面,臭名昭著例如dubbo发布一个初始版本,做一番宣传blabla,然后多年不维护,内部使用与外部开源分离。 对标: | PK | Amazon Corretto | Alibaba Dragonwell | |----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------| |官方简介|Amazon Corretto 是开放 Java 开发工具包 (OpenJDK) 的免费、多平台、生产就绪型发行版。Corretto 提供长期支持,其中包括性能增强和安全修复。亚马逊在内部的数千种生产服务上运行 Corretto,并且 Corretto 已被证明能够兼容 Java...
[demo](https://demo.qameta.io/allure/#) ``` allure US: [ə'lʊr] UK: [ə'ljʊə(r)] v. 诱惑 n. 吸引力;诱惑力;引诱力 Web 魅力;倾城之魅 ```  感谢金良 @liujinliang 的介绍。
领导想POSTMAN建个组,这样就能共享请求了,结果只能加5个,超了得交钱,我说,何不IDEA HTTP Request呢,据说很香。 ## 一些例子 ### GET ```http GET http://localhost:8090/persons/all ``` ### HTTP header, you can include them with the other headers ```http GET http://localhost:8090/persons/all Accept-Language:en-US,en;q=0.9 Authorization:BasicQWxhZGRpbjpvcGVuIHNlc2FtZQ== Cookie: name=value; name2=value2;...
# 对开发人员有用的定律、理论、原则和模式 [来源](https://cloud.tencent.com/edu/learning/course-2366-37478) ## 盖尔定律 (Gall's Law) > 一个切实可行的复杂系统势必是从一个切实可行的简单系统发展而来的。从头开始设计的复杂系统根本不切实可行,无法修修补补让它切实可行。你必须由一个切实可行的简单系统重新开始。 > 约翰·盖尔 (John Gall) 系统不是「设计」出来的,而是「优化」出来的。 在系统论中,有一条很经典的原则,叫做加尔定律,讲的是同样的道理: > 一个运转正常的复杂系统,总是从一个运转正常的简单系统演化而来。 > 反之也是一样的:一个从零开始设计的复杂系统永远不会起作用,也不可能让它起作用。你必须重新开始,从一个简单的系统开始。 > Gall's Law, by John Gall 盖尔定律说明了设计高度复杂的系统很可能会失败。它们很难一蹴而就,更多是从简单的系统逐渐演变而来。 最典型的例子便是互联网。如今的互联网是一个高度复杂的系统,而它最早只是被定义为一种在学术机构之间共享内容的方式。互联网成功实现了最初的目标,并且随着时间不断演化,最终成就了如今的复杂繁荣。 ## KISS 原则...