ActiveMQ集群搭建

简述

activemq提供了多种方式来保证activemq的可靠性。
包括:

  • 纯Master/Slave
  • Shared File System Master Slave
  • JDBC Master Slave
  • Broker clusters-静态
  • Broker clusters-动态(基于组播,动态发现brokers)

但单纯的使用上面的一种没法既达到高可用,同时有具有负载均衡的能力。

生产环境集群搭建建议

所以可以考虑Master/Slave+Broker clusters-静态来实现。Master/Slave保证了Slave复制master的数据,Broker clusters-静态实现了非消息生产者的broker拥有对外提供消费的能力。即在broker1上生产了消息,如果broker1与broker2配置了static network Connectors,那么客户端监听broker2也可以拿到broker1生产的消息。所以生产环境建议二者集合。

Read more
使用Apache HttpClient进行https调用

简介

本文使用的Apache HttpClient版本为4.5.6.

在使用Apache HttpClient执行https请求时,有时会遇到ssl相关的异常,这里介绍如何通过HttpClient执行https请求。

这里有2种方式:忽略ssl证书并信任任意连接 和 导入证书到秘钥库。

忽略ssl证书并信任任意连接

ssl初始化时需要证书管理器(TrustManager),我们这里使用了一个实现了X509TrustManager的证书管理器。它不做证书的验证,并信任任意的连接。
然后通过HttpClients的setSSLSocketFactory()设置SSLSocketFactory即可。

Read more
git回退到某次提交

在工作中难免会遇到把不该提交的代码提交的情况,不过好在我们可以回退。

idea中的做法1

如果你使用idea,那么通过简单的几部操作就可以回退到任意一次提交。

1.右键->git->Show History,列出所有的提交记录。

Read more
推荐一个日志工具类

任何系统都少不了日志记录,方便了解系统运行情况,也为了方便排查问题。我们通常会在需要记录日志的类中定义一个Logger,如下代码:

1
private Logger logger = Logger.getLogger(NodeService.class);

但是在每个类中都这样定义一个Logger,工作量比较大,很繁琐。而且如果你用的Log4j,你后续想改成其他的日志实现,可能logger的定义都需要改,这就是一个很大的工作量了。
所以为了少写代码,也为了维护方便,有必要定义一个日志工具类。

Read more
使用maven的mybatis-generator插件生成代码

在有了数据库表结构后,我们可以使用maven的mybatis-generator插件来自动生成Mapper、实体类和DAO。

1.配置mybatis-generator插件

打开项目的pom.xml文件,在<plugins>中增加mybatis-generator的plugin。

Read more
maven私服(nexus)搭建

一、为何要搭建maven私服

1.有的公司开发电脑没法直接连外网,下载不了依赖;可以通过私服(私服服务器可以连接),开发电脑连接私服服务器下载依赖。
2.项目协作。某个项目包含多个模块,开发人员A将模块打包提交到私服,其他人从私服获取该模块的依赖。

二、使用私服与不使用的区别

1.不使用私服

Read more
UrlRewrite的配置与使用

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。

优点

一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多

二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
四:可以很方便的重用,提高网站的移植性。如果我们后台方法改动的话,可以保证前台的页面部分不用改。这样就提高了网站的移植性。

Read more
Linux更新或删除jar中的文件

增加/更新目录或文件

如果用springboot将所有东西打成一个jar,要更新某个文件,再打包上传就很麻烦了。
所以这个时候就需要将某个文件打到jar中。

1
jar uvf demo-0.0.1-SNAPSHOT.jar BOOT-INF/

上面的命令是将BOOT-INF/目录下的所有目录和文件覆盖到demo-0.0.1-SNAPSHOT.jar中。也就是,如果demo-0.0.1-SNAPSHOT.jar中有某个文件,那么该文件会被覆盖,如果没有则会添加进去。

Read more
使用Boxcryptor加密你的云盘

前言

现在云盘大家都不陌生,有的人手好几个。经过上一次云盘的事件,目前剩下的也不多了。目前百度云、腾讯微云、天翼云盘、坚果云是用的比较多的。国外的云盘咱们就不讨论了,毕竟要翻墙,速度没保障。

在这些云盘中,百度云有2T的免费空间,基本一些大的视频或文件会存储在百度云。腾讯微云、天翼云空间也只有几G到10多G,对上传下载有限制,所以用的不多。最后一个要提到的就是坚果云,
老实说因为不像其他3个云盘服务提供商都是大公司,所以心里没底。不过服务说实在的还是不错的。坚果云其实是一个同步工具,可以对指定的目录(可以随意指定多个)进行同步,同步的速度也很快,增量同步。
它没有空间的限制,不过免费用户每个月上传流量1G,下载流量3G。如果只是基于办公需求已经足够。

Read more
使用spring validation完成数据后端校验

前言

数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,如果数据库中出现一个非法的邮箱格式,也会让运维人员头疼不已。我在之前保险产品研发过程中,系统对数据校验要求比较严格且追求可变性及效率,曾使用drools作为规则引擎,兼任了校验的功能。而在一般的应用,可以使用本文将要介绍的validation来对数据进行校验。

Read more