openjdk 选择 - openjdk what flavour to choose

Java 

openjdk 的发行版很多,比如 zulu openjdk、GraalVM、AdoptOpenJDK、Red Hat OpenJDK 甚至阿里开源的 Dragonwell,本文并不是评测,只是作为普通开发人员,我们应该做什么样的选择,至于性能评测,国庆有空可能会补充。但不在本文的讨论范围内,本文要

Eureka 高可用集群部署 - Eureka high availability cluster


本文介绍如何搭建高可用 Eureka 集群,并解决该过程中遇到的一些坑。本文算是 Eureka 系列文章的第一篇,后面会继续探索基于 Docker 的 Eureka 集群搭建、灰度发布、金丝雀发布、AB测试以及蓝绿部署,从而做到无缝的升级更新服务。 首先,我解释下所谓的灰度发布、金丝雀发布、AB测试

HttpServletRequest 获取参数、header、body

Java 

本文的初衷是java后端崩溃后,如何把入参传给 Sentry,从而更快速的定位和解决问题。入参包括:query string、form-data、body,还有 url、headers,当然考虑到分布式部署,还应该拿到当前的服务器 ip 以及端口,至于用户信息,header 里面一般包含了。 先上张

分布式锁的 redis 实现 - Distributed locks with Redis

Java 

分布式锁最经典的例子应该是分布式的电商系统里对商品的库存进行加锁了,举个简单的例子,单机时代,我们可能就一台机器,这时候也可能需要锁,为啥呢,多线程啊,所以还是有锁,比如最简单的 synchronize 到了分布式系统,synchronize 已经不够用了。因为不只有一台机器啊,即使 服务器 A 加

spring boot 发送邮件

Java 

我们在开发中总会遇到发送邮件或者发送短信验证码的事,本文讲述如果在 spring boot 项目里发送邮件。为接下来用户通过邮箱注册然后输入验证码激活做准备。通过本文,你能了解到,在 spring boot 项目里如何优雅的发送邮件,并与现有的邮箱服务器,比如163集成。 首先,我们添加依赖: <d

自建 sentry 并与 spring boot 集成


sentry 是开源的 crash 跟踪解决方案,支持超多语言,比如 nodejs(server + browser),java 后端,Android,ios 等等,基本称得上是全能的 crash 跟踪解决方案。本文主要讲述如何自建 sentry 并与 spring boot 集成。 自建 sent

spring boot 全局异常拦截 并通过 webhook 发送到 钉钉机器人

Java 

当后端程序由于各种原因出错时,如果将错误信息直接抛给客户端,用户肯定会一脸懵逼,除非当时的用户是你们的开发,本文主要讲述如果拦截全局异常,不把异常抛给用户,同时,如果做过客户端,应该知道,Android和ios都有第三方crash上报平台,如果能在出错后发消息到钉钉则很方便,本文主要解决这两件事。

spring boot 热部署 - spring boot hotswap

Java 

平时开发spring boot 项目中,如果是联调或者自己自测,那么每次修改代码都需要重启无疑很累,于是想到了热加载,即修改代码后热加载进去,无需重启应用,这无疑加快了开发速度。当然,如果尚处于开发阶段,这是好是坏就需要你自己去考量了。本文主要实现热加载,并给一个开关,这样子便可以在是否需要热加载中

策略模式 详解 - something about strategy pattern

Java 

设计模式是枯燥的,但设计模式却是很有必要的,这里,我只能以自己工作中的实际经验为基础,讲述什么是 策略模式 了。后面,我将继续补充其他的设计模式,欢迎阅读。 我是一名 Android 工程师,而全栈之旅本来的意义在于记录我一个 Android 工程师如何变身全栈的,不过现在却成了记录我个人生活与分享

Admin Api 简介之服务、路由和消费者 - kong 开源微服务API网关

Java 

出于管理的目的,kong 内置了一套 RESTful Admin Api , 主要有 服务、路由、消费者、证书、上游服务,本文讲述 Admin Api 的基本情况并详细讲述 服务、路由、消费者。后续的博文将讲述证书、上游服务。之后会搭建一套系统用于创建APP、用户注册、登录等。 如果你还不知道 ko