目前项目的消息事件异步处理采用了Android事件总线的EventBus来实现,但它只能单机上执行,不能在其他子模块上执行该消息任务,且如果重启项目过程中,会导致消息事件处理不到。随着业务的发展,EventBus已经不那么适用了,毕竟它是专门用于Android的。因此现在项目改成用Redis的list实现消息队列。
最近发现返回给前段的json串出现了循环引用的问题,这是由于在json串中存在相同的属性信息,对象的属性之间存在相互引用导致循环,而fastjson支持循环引用/重复引用,并且是缺省打开的。所以会出现以下现象:
我们开发人员都有一种恐惧就是,当需求有增加时,需要在原来的代码上修改,这得多麻烦而且费时,还可能会将原来的代码改出bug,还有就是需要在方法调用之间加上日志记录,要在那么多个方法同时加上,代码的重复率很高,那么有没有什么方法可以满足以上两个很常见的问题呢?
Spring的面向切面编程可以完美解决。面向切面编程指的是在原来代码的基础上,加上增强的部分,生成一个代理的对象,也就是说,程序员可以在不修改源代码的情况下,实现对目标类的增强,其原理就是将一个被AOP动态增强的类,通过Java动态代理模式生成一个代理类。
代理模式是 Java 常用的一个设计模式,目的是为了生成一个代理的对象,去代理某个真实的对象,真正执行任务的是代理对象,调用方把这个代理对象当成真正的某个对象来执行。且代理对象还能在真实对象的基础上实现增强,Spring AOP 的底层原理就是 Java 动态代理模式。
发现自己不是很理解git的一些操作,因为一直都用图形化界面来操作git,对git的命令一知半解,故把某Tree卸载掉,逼着自己用git bash 命令行,效果很不错,深深地爱上它了,并对git有了很深刻的认识。
原文链接:http://blog.csdn.net/u014346301/article/details/53742679
在分布式系统下,我们会把工具库单独写成一个独立的项目,此时其它系统需要依赖它,那么我们就需要把它打包成可执行的jar包,并安装到本地仓库中。
原型链可以用作js中继承的主要方法,其思路是把当前原型对象等于需要继承的对象,从而使当前原型的指针拥有需要继承的对象的原型的引用,若这样继续继承下去,层层递进,就可构成原型链。
前面的文章很多都用到了Lambda表达式,Lambda表达式是一种函数式编程的风格,以前我们是这样实现多线程编程的:
new Thread(new Runnable(){
public void run(){
System.out.println("帅比辉");
}
};
).start();
如上,用到了匿名内部类,但这样做会造成代码重复率多,且臃肿,不易阅读,我们通过Lambda表达式改进一下:
new Thread(() -> {
System.out.println("傻比罗");
}).start();
在Java语言中,字符串是一种不可变类,即它是被final修饰过的类,因此也不可继承。
在项目开发过程中,我发现在业务中一次性需要多次访问数据库才能获取业务所需要的数据,又或者在一个业务点上需要同时大量向数据库插入或修改数据,这时如果不用并发处理,就会导致系统性能底下,数据库访问粗粒度大,单个线程负荷大,在分布式系统中容易导致雪崩效应,因此,需要对这些业务用并发加以处理。