九千万代码的梦想

S/MIME的技术流程

前言 近期在研究S/MIME协议,对于整个协议的大致流程网上有很多说明了,但是却很少有能够详细说明技术细节流程给技术实现提供指导方向的文章,因此在查阅大量文档后,我决定自己整理这样一篇文章来记录一下。 S/MIME协议 MIME协议是一个互联网标准,全称是多用途互联网邮件扩展(Multipurpose Internet Mail Extensions),它扩展了电子邮件标准,使其能够支...

MySQLWorkbench数据库在线复制

前言 在使用mysql的过程中,我们经常需要备份一个数据库用于各种测试,这时候就需要将一个正在使用的数据库复制一份用于变更测试,在MySQLWorkbench中这个功能使用起来远没有Navicat那么简单,这里提供一个简单的指引,用于复制数据库。 在workbench中,提供了一个migration的功能,这个功能可以用于对比两个schema的差异,并将两个数据库同步,我们将使用这个功能...

springboot使用jsw打包配置logback日志最佳实践

前言 使用springboot开发的应用,可以打包成一个可运行的jar包发布,但在实际生产环境中我们很少这么做,主要是考虑运维和监控相关的工作,一个单独的jar包不方便。 因此更多的作为真正生产发布我们一般打包成一个jsw包(Java Service Wrapper)发布。 jsw包有自己的日志规范,虽然实际上是在原有的日志框架上套了一个马甲,但是和原应用的日志的规范是冲突的,也就是会...

java中的远程调试

前言 在开发过程中,我们经常遇到这样的情况: 在开发环境中运行的时候没有出现问题,打包运行就有问题了 在特定的场景下,生产环境运行发生异常,在开发环境则是正常的 这两种情况下,要调试定位问题非常困难,需要增加很多日志来协助定位,但是再无法判断bug发生的位置的情况下,日志也未必能帮助我们定位问题,这种情况下,我们就可以借助远程调试机制来定位问题。 JVM开启远程调试 要...