Spring aop应用之实现数据库读写分离

2016年12月31日 没有评论

去年五月份的时候曾经写过一篇:Spring加Mybatis实现MySQL数据库主从读写分离,实现的原理是配置了多套数据源,相应的sqlsessionfactory,transactionmanager和事务代理各配置了一套,如果从库或数据库有多个的时候,需要配置的信息会越来越多,远远不够优雅,在我们编程界有一个规范:约定优于配置。所以就用Sping的aop实现了一个简单的数据库分离方案,具体实现代码放在了Github上,地址如下:


https://github.com/bridgeli/practical-util/tree/master/src/main/java/cn/bri[......]

Read more

分类: Java 标签: , , ,

Blowfish加密算法Java版简单实现

2016年12月18日 没有评论

前几天网上突然出现流言:某东发生数据泄露12G,最终某东在一篇声明中没有否认,还算是勉强承认了吧,这件事对于一般人有什么影响、应该怎么做已经有一堆人说了,所以就不凑热闹了,咱来点对程序猿来说实际点的,说一个个人认为目前比较安全的加密算法:Blowfish。
上代码之前,先说几点Blowfish加密算法的特点:

1. 对称加密,即加密的密钥和解密的密钥是相同的;
2. 每次加密之后的结果是不同的(这也是老夫比较欣赏的一点);
3. 可逆的,和老夫之前的文章介绍的md5等摘要算法不一样,他是可逆的;
4. 速度快,加密和解密的过程基本上由ADD和XOR指令运算组成;
5. 免费,任[……]

Read more

分类: Java 标签: ,

Dubbo服务telnet调试法

2016年11月27日 没有评论

公司的RPC的服务使用的是阿里巴巴的dubbo,老夫之前曾经写过一篇如何在测试环境远程调试dubbo服务,详情请参考这篇,但一直对如何调试线上dubbo服务不得法,不得已每次都需要写一个web服务调一下看数据,前一段时间经新来的一个同事提示可以使用Telnet调试,网上搜了一下资料,发现真的很爽,以下是学习笔记。
需要说明的是:Dubbo2.0.5以上版本服务提供端口支持telnet命令,不过应该没有公司使用2.0.5以下版本吧。

1. 进入调试模式


telnet localhost 20880

即:telnet + ip + 端口,这个不用解释,使用dub[……]

Read more

分类: Java 标签: , ,

VIM常用命令

2016年11月6日 没有评论

上个周苹果公司悍然发布了新版mac,消灭了功能键,包括ESC,终于使下面这个段子成为了事实:问,如何生成一段随机数?答:让一个非开发人员退出vim。哈哈,现在开发人员是不是也可以产生随机字符串了?发现自己作为一个vim党,竟然对很多vim常用的命令都不知道,今天就记一下笔记,让自己这个vim党称呼实至名归。
首先要说明的是,基本的vim命令像A、I、O进入编辑模式,ESC进入命令模式,“:”进入末行模式,以及常用的什么dd,yy,p等都认为大家已经熟练掌握,就不说了。

1. 替换字符


:%s/oldchar/newchar/g

这个命令同样可以解决:[……]

Read more

分类: Java 标签: ,

我看拉勾一拍之系统架构

2016年10月23日 没有评论

今年年中的时候由公司平台部转组到Alpha项目中心负责公司一拍项目组的技术研发工作,到现在已经快有将近半年的时间了,随着对系统的越来越熟悉,对原有系统的架构也越来越感到有些不合理的地方,随着自己水平的提升感觉对架构也有了一点自己的理解,所以今天就借这个机会说说自己的不成熟的建议。

一. 原有的架构

俗话说,一图胜千言,直接上图:

old_architecture-225x300

解释一下这几个系统分别的作用:
1. 后台管理系统不用说了,管理C和B可见的内容;
2. C端用户系统,是对C可见的一个系统,一拍是一个招聘系统,所以就是对候选人操作的后台;
3. B端用户系统,是对B可见的一个系统,通俗点讲就是HR操[……]

Read more

分类: Java 标签: , ,

Redis 3.0入门二之集群搭建和使用

2016年9月16日 没有评论

上一篇文章讲了redis的主从搭建,主从一般只能解决我们读写分离的问题,可以增加我们的系统的负载能力,但是并不能解决单点问题,大家应该知道在互联网公司各个服务肯定不能出现单点问题,所以这一节就记录一下如果让我们的系统更加高可用。

一、集群搭建

需要先说明的是,集群搭建需要至少6个节点:3主3从(因为没有那么多机器,所以就在一台上搞了)

1. 创建文件夹redis-cluster,然后在其下面分别创建6个文件夹,存放6个实例

    mkdir -p /usr/local/redis-cluster
    mkdir 7001;mkdir 7002;mkdir 7[......]

Read more

分类: Redis 标签: , , ,

Redis 3.0入门一之主从搭建

2016年8月28日 没有评论

周末没事看北京尚学堂之前的公开课视频,发现了白贺翔老师有一节课讲redis 3.0的视频教程,还不错,以下是学习笔记。

一、单机版搭建

首先是下载地址:http://redis.io/download,假设我们下载是redis-3.0.0-rc2.tar.gz
安装步骤:

1. 把我们下载好的redis-3.0.0-rc2.tar.gz放到Linux的/usr/local文件夹下
2. 解压tar -xzvf redis-3.0.0-rc2.tar.gz -C /usr/local/
3. 进入到redis-3.0.0-rc2目录下,进项make
4. 进入到src下[……]

Read more

分类: Redis 标签: , ,

Dubbo远程debug方法

2016年8月14日 没有评论

公司项目的rpc服务基于阿里巴巴的dubbo架构,开发dubbo项目的时候测试只能跑junit test,但实际工作中由于很多时候junit test写的不全,出了问题只能再加日志分析原因(典型的没事找事型),这次和公司移动端的推送联调IM服务,发现他们已经把老夫之前听说的远程debug用在了实际工作中,刚好趁此机会实验了一把,以下是笔记,以待自己和需要的朋友参考。

1. dubbo服务的设置

我们自己观察dubbo的start.sh和start.bat这两个脚本会发现有如下两端代码

①. start.sh


JAVA_DEBUG_OPTS=""[......]

Read more

分类: Java 标签: , ,

多线程应用之批量数据处理

2016年7月24日 没有评论

我们都知道多线程是为了加快数据处理的,但至于怎么用,因为在工作中,我一直很少用,所以对多线程不是很了解。之前处理一个功能时,由于没有经验,导致速度很慢,前一段时间经老大提示,可以用多线程解决,突然发现原来多线程可以这么用可以来处理这一类问题,今天记录一下,作为笔记也作为一个给读者的参考,好了先说一下问题:公司的业务的业务不仅分模块而且是分库分表的,这样就导致一个问题,当我们要查询一个数据时,不能连表查询,不能只通过一个接口获得数据,最容易想到的常规做法就是:


	public List<Data> queryDatas() {
		List<Data> d[......]

Read more

分类: Java 标签:

全文索引服务solr入门四之solr集群搭建与应用

2016年7月10日 没有评论

经过前面几篇文章的努力,我们的solr服务终于跑起来了,可以对外提供服务了,虽然有一点小瑕疵(对中文支持不是很好,但可以通过IK分词来解决,示例可以看老夫之前的这篇文章),但还是存在一个致命的问题:单点!对于现代互联网公司,这个一个不可忍受的缺点,所以本节我们就来解决这个问题,在搭建集群之前,我们先看看要搭建的集群的目标:

goal

从这张图上,我们可以清晰看到我们需要三台zookeeper服务器和四台solr服务器,一共七台服务器(实际上老夫去哪找那么多集群,所以使用伪分布式的方式搭建集群,即在同一台服务器上创建多个实例模拟集群),确定了目标之后,我们就开始搭建我们的集群。

四. zookee[……]

Read more

分类: 全文索引 标签: , , ,