Java界的Jason Turners

Brian Goetz Java Concurrency in Practice的作者 Joshua Bloch Effective Java的作者 视频挺有意思的:Effective Java, Third Edition - Keepin'it Effective Lukas Eder Java、SQL、jOOQ Best Practices and Lessons Learned from Writing Awesome Java and SQL Code Trisha Gee JetBrains社区经理 Life Beyond Java 8写得特别棒 Vlad Mihalcea 博客大部分和JPA与数据库相关 Simon Ritter Azul Java Venkat…

Spring Boot项目中指定依赖版本

端午节前将Spring Boot的版本升级到2.3.1.RELEASE之后,假期回来的第一天就推送上线,最近线上系统开始爆一些奇奇怪怪的错误,比如: paho3625270288893656: Timed out as no activity, keepAlive=60,000,000,000 lastOutboundActivity=4,391,824,700,168,296 lastInboundActivity=4,391,767,474,515,409 time=4,391,884,700,372,796 lastPing=4,391,824,700,242,264 或: Lost connection:…

AWS Classic Load Balancer配置Proxy Protocol

阿里云SLB不支持在TCP上挂SSL证书,拿HAProxy作为服务前置挂载证书会吃掉2个TCP连接数,单机只能撑近32K(65K的一半)的外部连接数。可以通过一些方法(比如增加Virtual Network Interface)突破这个限制,但服务因需挂SSL证书而额外绑定HAProxy,增加了一层中间件,架构图画出来后总觉得不好看。周一跑去服务器上动手脚,挂好SSL证书,可以拿掉HAProxy,连接数也突破了这个限制。 检查连接的时候发现服务能认TCP Source IP,阿里云SLB默认就开了Proxy Protocol,挺厉害的,不需要Client那边额外设置就能拿到Source IP。于是去AWS控制台找了一圈ELB的选项,没有开启Proxy Protocol的设置,倒是文档上写了可以通过awscli开启,折腾了一下把这个配置打开了,这里记录一下。 Proxy Protocol是什么Proxy Protocol是HAProxy的作者Willy Tarreau在2010年实现的一个Internet协议,在三次握手之后,由Proxy往TCP上插一个很小的数据包来传递客户端信息,如源IP、目标IP等,在负载均衡和后端服务通信或更复杂的网络环境时非常有用,有点类似HTTP请求上的X-Forwarded-For头。 Proxy Protocol有两个版本,V1和V2。 Human-readable header format (version 1)V1很简单,…

在国内阿里云ECS上搞环境小贴士

昨天下午对一台阿里云的线上测试环境的机器进行压测,压到快下班的时候所有容器都挂了,机器上的HAProxy启动不了,我直接敲sudo reboot重启机器,结果机器再起不能。 抱着希望提了个工单,好长时间没人理,挺绝望的。我于是下定决心强行关机,重装系统,系统启动正常之后,邮件、短信通知我工单系统有回复了: 我坚信比我还专业的阿里云工程师肯定看不上我这样的运维,于是五星好评分期付款,开始跑机器初始化脚本。 初始化很快,建立用户、Docker还有各种Packages一下子就安装好了,最后安装HAProxy、Ansible和配置Jenkins的时候击碎了我的玻璃心,网络要么无法连接,要么是100B/s的下载速度,后面试了很多方法,加快了这个速度,遂记录下来以示后人。以下均为阿里云于2020年4月17日19点提供的Ubuntu 16.04的ECS主机上的操作。 HAProxy自带的源更新到最新之后,HAProxy为1.6.X版本,不支持在监听上追加expose-fd listeners,也就是0宕机重载功能,这个特性在1.8版本上才支持。光速吟唱:简单点就是本质上是利用新Linux Kernel里SO_REUSEPORT的Socket选项,允许同一台主机上的多个Socket同时binding在同一个TCP Port上,HAProxy在reload时把旧进程listener FD传给新进程listener,旧进程处理完当前连接后退出,新进程处理新的用户连接。…

2019 Black Friday And Cyber Monday

每年黑五都会信用卡大出血,去年买得比较多,今年很多消费提前,今年黑五并没有买太多东西。 中行信用卡的活动要求5个订单,每单超过¥600才会触发返现,最低消费是¥3000,返现¥300。 买了的 镁光DDR4笔记本内存,16G x 2,亚马逊海外购,https://www.amazon.cn/dp/B071H38422/ 本体¥637.76 + 运费税费¥119.82 = ¥757.58,是目前质量与价格都非常不错的32G笔记本条,买了两条回来把家里的电脑升到64G 中行信用卡可以返现10%,这次下单也才¥757.58 * 0.9 = ¥681.9 去年京东买的32G内存条要1300,京东32G内存普遍在800+,现在681.9到手,挺值的 AppStore Gift Card,Digital…

Intellij IDEA单元测试时报Test events were not received

最近用Intellij IDEA 2019.2.3反复跑单元测试的时候,单元测试没有运行,抛出一个Test events were not received的信息,看了一下运行单元测试的命令竟然是gradle :project-name:cleanTest :project-name:test --tests "some.class.some.method" 查了一下,Intellij IDEA从2019.2.1版本开始,会将Gradle管理的项目的测试代码,默认使用Gradle来运行,从Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle进入,可以看到: 将Run tests using: Gradle中的Gradle修改为Intellij IDEA,接下来到Run/…

reinstall emqx

After reinstall emqx, we could not start emqx any more. I tries several times and find the access to solve this problem without losing external configs include emqx.conf and plugins' configs ## stop emqx sudo systemctl stop emqx ## disable from systemd sudo systemctl disable emqx ## remove from apt sudo apt…

DeskMini 310组装及安装Hackintosh记录

上次Brix挂掉之后,买了个HP ZBook 15 G1把Brix的硬盘、网卡、内存都挪到里面,32G的内存用起来特别舒服。公司的个人电脑是Mac Mini 2012款和MacBook Pro 15 2015款,内存都已经升级到最高支持的16G,开启太多浏览器页面和稍微多一点的Docker镜像内存就爆掉,很多事情只能下班回家里做,有次在做存储方案的时候需要写入大量数据,关掉了其他程序也没用,内存和硬盘使用率满了,一上午跑不出东西,郁闷了一周觉得要把这个Mac Mini出掉,换更好的设备。调研了好长时间,我组装好了一台DeskMini 310机器,也在上周顺利把Mac Mini卖掉,朋友和网友都在催我写个文章说说这台机器的前因后果,今天终于有时间写点东西。 硬件购买DeskMini 310是110的升级款,有几个亮点: 机身小巧,只有1.92L支持Intel 8系与9系的桌面CPU,最大TDP 65W支持1根M2硬盘,2块SATA 2.5寸硬盘最高支持双通道32G内存无独显,方便安装Hackintosh确定好主机之后,再确定CPU、散热器、内存、硬盘和无线网卡就好了,配置单如下: 主机及电源:…