技术博客

用string adapter来解决系统接口对接中发现的空值验证问题

java

客户用的是很旧版本的ERP系统,在与客户系统做接口对接的时候发现了一个问题。假设接口请求需要的body是xml格式的,共有三个字段:name, mobile, email。由于客户ERP系统比较老,如果某个字段没有值,传的是空字符串,而不是将该字段在请求消息体中隐藏。客户发的请求类似下面的例子:

更多 →

June 1, 2020

Spring Quartz 指定Scheduler Name

springquartz

当前项目使用quartz与spring来做基于数据库的集群化任务调度,但是在实际使用过程发现同一个scheduler中,不同group之间任务调度可能会相互跑串。当前项目中使用的 quartz-scheduler 版本 2.3.1, spring 版本 3.2.18.RELEASE。

更多 →

May 31, 2020

Manjaro安装VMware Workstation

manjarovmware

安装VMware workstation yay -S vmware-workstation 启动时候如果报错:Please make sure that the kernel module `vmmon’ is loaded. 则需要重新安装一下linux-headers,加载一下vmmon模块

更多 →

May 26, 2020

Manjaro设置chrome为默认浏览器

manjarochrome

安装完 Manjaro,一般会自带 Firefox浏览器。如果自己想再安装 chrome,并且设置成默认浏览器,则需要两个步骤: 在 Default Applications 中选择 Chrome 为默认的浏览器。除了这一步还不够,打开 chrome 依然有提示说“chrome 不是默认浏览器”,这就需要下面的第二步来解决。 在 File Association 中找到 html 项, 选择使用 Chrome 打开该类型的文件。

更多 →

May 25, 2020

MacOS中通过ISO镜像制作U盘安装盘

mac

使用MacOS自带的dd命令,就可以将ISO镜像写入到U盘。这就可以利用这个命令来制作安装windows,Linux等系统用U盘 通过下面的命令,找出U盘挂载的路径

更多 →

May 21, 2020

Postgres关闭某个数据库关联的session

postgres

Postgres删除数据库的时候,报错:有其他用户正在使用该数据库,无法删除。这时,需要关闭这个数据库的相关的连接,然后再删除数据库 可以执行下面的命令来关闭连接:

更多 →

April 23, 2020

Docker Hub国内镜像加速

docker

国内访问Docker Hub速度比较感人,这个时候需要配置国内的镜像,来加速下载。由于镜像服务可能出现宕机,建议同时配置多个镜像。 Ubuntu 16.04+、Debian 8+、CentOS 7新建或者修改 /etc/docker/daemon.json,写入如下内容

更多 →

April 22, 2020

修改Alpine镜像源

alpinedocker

docker使用alpine作为基础可以减少image的大小,但是如果编写的dockerfile中需要安装一些软件,在编译image过程中,可能速度会很慢甚至卡住。

更多 →

April 21, 2020

转: Postgres数据库DBA常用命令

postgres

原作者:廖学强 原文链接:点击这里 查看帮助命令 DB=# help --总的帮助 DB=# \h --SQL commands级的帮助 DB=# \? --psql commands级的帮助 按列显示,类似mysql的\G

更多 →

January 27, 2020

根据ID来管理分布式session - 新老界面session不一致导致强制登出问题的修复

session分布式

背景由于历史原因,原先的界面是用vaadin框架来实现。但是这个框架不适合互联网的分布式系统,正在逐步用目前主流的前端框架重写各个模块,把旧的vaadin页面替换掉。在替换过程中,新老界面并存。

更多 →

January 26, 2020

Mac 检查附近wifi所使用的信道

wifi

信道,也称作通道或频段,是以无线信号作为传输载体的数据信号传送通道。2.4G频段的工作频率为2.4-2.4835GHz,这83.5MHz频带划分为13个信道,各信道中心频率相差5MHz,向上向下分别扩展11MHz,信道带宽22MHz。中国采用欧洲/ETSI标准,使用1-13信道。

更多 →

January 24, 2020

Mac下shell命令支持map

shelldeclare

Mac自带的bash是3.x版本的,shell中的declare命令不支持-A这个参数,会报下面的错误: declare: -A: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...] 这个参数从bash 4.x开始支持,需要升级至4.x以上的版本

更多 →

January 19, 2020

Quartz job使用过程中的发现问题与改进

quartz

遇到的问题与原因分析生产环境中遇到的问题: 服务在启动过程中,不时地卡住,后来发生的越来越频繁。看日志分析,卡在初始化quartz job store的时候 服务在运行过程中,不时地出现定时任务不被触发的情况 通过分析,得知问题产生的原因:

更多 →

January 5, 2020

复盘 - 手机app上一行代码导致的生产事故

生产事故复盘

过程由于一些历史原因,以及与原先代码的兼容性,临时文件存储在minio中。 某天,生产环境突发事故,minio集群的CPU与内存爆了,只能重启集群。过了十来分钟,很多服务都不可用,健康检查都不通过。日志中的错误信息显示,这些服务都是数据库拿不到连接。需要事先处理数据库连接的问题,于是连接到数据库查死锁,终止导致死锁的sql进程,再重启来恢复这些服务。

更多 →

December 10, 2019

重建基于pglogical逻辑复制的从库

postgrespglogical从库

《Postgres 9.x 升级至 10.x》一文中提到了使用pglogical逻辑复制升级。基于这种方式的升级有个缺点,就是主库的DDL发生改变的话,那么从库的复制就会有影响,可能需要重建从库来解决。

更多 →

December 6, 2019

Postgres 9.x 升级至 10.x

postgres升级pglogical

目前主要有两种升级方式,它们分别使用于不同的场景。 升级方式 优点 缺点 pglogical逻辑复制升级 停机时间短 需提前准备从库,并搭建replication,在replication期间,需考虑DDL语句带来的影响。 pg_upgrade升级 不需要提前准备replication 升级完成后需检查index是否正常,并执行vacuum analyze,对于数据量较大的库,这可能耗时较长 逻辑复制升级前提条件 所有表都必须有主键 可以用下面的语句来检查

更多 →

December 1, 2019