如何白piao一个免费的泛域名SSL证书
前提为了给个人博客提速,全部静态资源放到云上的对象存储中,并且加了CDN,耗费了不少RMB。新申请的域名也备案通过了,但是SSL证书一般需要按年付款,看了下鹅云上最便宜的泛域名证书也裤头一紧:
毕竟至少是一年一付,金额也不算少(4块钱一天),感觉钱包压力有点大。于是通过多种搜索方式,找到了一种可行的白piao泛域名SSL证书的方案,并且应用于已经备案好的个人博客域名上。最终子域名可以通过HTTPS协议访问,效果如左下的图:
那么开始发车!
本文只适用于在鹅云上备案、解析的域名,已经把成功把HTTPS应用于鹅云的CDN,其他云厂商没有进行试验,有兴趣的伙伴可以自行按照下文的思路重演。
...
2020年上半年,差点全栈与重新开始爆肝| 掘金征文
简短回顾2019年末到2020年年中,算是活了20多年来,境况最差的一段时间了,这里的差是指大环境(经济、实业,就业等等)。广州珠江新城花城汇恰饭和逛街的人少了很多,不少区的餐馆倒闭了,甚至找不到下一个接盘的商家,就闲置在那里。所以大概明白了为什么面试或者贩卖焦虑类型的文章会在很多知识分享平台火起来,因为大家都很焦虑,大家都想突围,我也是焦虑众人之一。
2019年底我离开了自2016年以实习生加入的某广州某科技金融公司,去了一家小的创业公司担任架构和打杂工程师。如果是同一个领域的伙伴就知道,当时圈内很多巨头都暴雷了,考虑到风险、可持续发展性以及刚好遇到赏识我的前Boss出来创业,我很短时间内做 ...
品城记探店之鹭江滨江东路丘大6仔记餐厅
前提有时候做事就是心血来潮想去做一件事,然后就行动了。
端午假期一天突然觉得太无聊,中午睡醒(已经是下午2点)没什么食欲,突然想起之前品城记的某一期提到的丘大6仔记餐厅,加上本来就比较喜欢港式茶餐厅或者粤式早茶,于是起床洗漱上地铁出发。看了一下大致行程要1个多小时(文冲-> 鹭江,出了地铁口还要走一公里),于是在地铁上看了一下大众点评里面的菜品推荐。
正文以鹭江地铁站B出口为起点,地图如下(又到了大家最喜欢的灵魂画图环节):
到店的时候大概下午5点多,当时人还不算多,我要了个单人桌,前面只有2桌排队。餐厅在二楼,被分隔成多个区域,容积比较大,估计能容下上百人一起吃饭:
前台领到一 ...
冷饭新炒:理解Snowflake算法的实现原理
前提Snowflake(雪花)是Twitter开源的高性能ID生成算法(服务)。
上图是Snowflake的Github仓库,master分支中的REAEMDE文件中提示:初始版本于2010年发布,基于Apache Thrift,早于Finagle(这里的Finagle是Twitter上用于RPC服务的构建模块)发布,而Twitter内部使用的Snowflake是一个完全重写的程序,在很大程度上依靠Twitter上的现有基础架构来运行。
而2010年发布的初版Snowflake源码是使用Scala语言编写的,归档于scala_28分支。换言之,大家目前使用的Snowflake算法原版或者改良 ...
Canal v1.1.4版本避坑指南
前提在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的):
这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道、管道)上线一段时间,不出坑的时候风平浪静,一旦出坑令人想屎。重点吐槽几点:
目前最新的RELEASE版本为v1.1.4,发布于2019-9-2,快一年没更新了。
Issue里面堆积了十分多未处理或者没有回应的问题,有不少问题的年纪比较大。
master分支经常提交异常的代码,构建不友好,因为v1.1.4比较多问题,也曾经想过用master代码手动构建,导入项目之后决定放弃,谁试试谁知道,可以尝试对比导入和构建MyBatis的源码。
...
MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
背景最近有一个数据统计服务需要升级SpringBoot的版本,由1.5.x.RELEASE直接升级到2.3.0.RELEASE,考虑到没有用到SpringBoot的内建SPI,升级过程算是顺利。但是出于代码洁癖和版本洁癖,看到项目中依赖的MyBatis的版本是3.4.5,相比当时的最新版本3.5.5大有落后,于是顺便把它升级到3.5.5。升级完毕之后,执行所有现存的集成测试,发现有部分OffsetDateTime类型入参的查询方法出现异常,于是进行源码层面的DEBUG找到最终的问题并且解决。
问题复现项目中有一个查询方法类似下面的演示例子:
public interface OrderM ...
Java线程生命周期与状态切换
前提最近有点懒散,没什么比较有深度的产出。刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期、状态切换以及线程的上下文切换等等。编写本文的时候,使用的JDK版本是11。
Java线程的实现在JDK1.2之后,Java线程模型已经确定了基于操作系统原生线程模型实现。因此,目前或者今后的JDK版本中,操作系统支持怎么样的线程模型,在很大程度上决定了Java虚拟机的线程如何映射,这一点在不同的平台上没有办法达成一致,虚拟机规范中也未限定Java线程需要使用哪种线程模型来实现。线程模型只对线程的并发规模和操作成本产生影响,对于Java程序来说 ...
通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布
前提前段时间顺利地把整个服务集群和中间件全部从UCloud迁移到阿里云,笔者担任了架构和半个运维的角色。这里详细记录一下通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布的核心知识点和操作步骤,整个体系已经在生产环境中平稳运行。编写本文使用的虚拟机系统为CentOS7.x,虚拟机的内网IP为192.168.56.200。
动态负载均衡的基本原理一般会通过upstream配置Nginx的反向代理池:
http { upstream upstream_server{ server 127.0.0.1:8081; ...
深入理解Java的动态编译
前提笔者很久之前就有个想法:参考现有的主流ORM框架的设计,造一个ORM轮子,在基本不改变使用体验的前提下把框架依赖的大量的反射设计去掉,这些反射API构筑的组件使用动态编译加载的实例去替代,从而可以得到接近于直接使用原生JDBC的性能。于是带着这样的想法,深入学习Java的动态编译。编写本文的时候使用的是JDK11。
基本原理下面这个很眼熟的图来源于《深入理解Java虚拟机》前端编译与优化的章节,主要描述编译的过程:
上图看起来只有三步,其实每一步都有大量的步骤,下图尝试相对详细地描述具体的步骤(图比较大难以分割,直接放原图):
实际上,仅仅对于编译这个过程来说,开发者或者使用者不必 ...
SonarQube搭建手记
前提这篇文章记录的是SonarQube服务搭建的详细过程,应用于云迁移后的PipleLine的代码扫描环节。
笔者有软件版本升级强迫症,一般喜欢使用软件的最新版本,编写此文的时候(2020-05-17)SonarQube的最新版本为8.3.1。
SonarQube简介SonarQube是一个代码质量管理开放平台,它集成了数千种自动的静态代码分析规则,旨在提高开发人员的代码质量和安全性,使得开发人员编写更加干净,更加安全的代码。主要提供了三个比较大的功能:
代码可靠性支持:提前捕获和提示代码中的错误,从而避免未定义的行为影响到终端用户。
应用安全支持:修复可能危害到应用程序的漏洞,并通过 ...