- 浏览: 7741 次
- 性别:
- 来自: 杭州
最新评论
文章列表
15年进入一家国内知名的互金企业,随着公司业务的高速发展、系统架构也发生了天翻地覆的变化,本文只要介绍我司信贷系统如何从单体的系统架构演变为微服务分布式系统架构。
15年初公司发展金融信贷 ...
好久没写博客了、一直也没有写点东西的习惯。近一年多经历了公司两轮服务化进程,对分布式、服务化等相关技术有了更多的心得,望以后慢慢整理 鼓励自己。也是受抢月饼阿里小伙伴的激励、感觉自己还远远不足,加油加油。
对于写出干净简洁的代码,还是有几分把握的,毕竟熟读clean code、面向对象以及设计模式也还都了解,而且平时码代码还是比较注意的。但是最近发现工程中自己的代码是越写越差、看得自己都不满意。魔术数字、注释等常见的规范都时不时会漏掉。如果要找客观原因 能说出不少,但是不可否认代码是自己的。工程越写越庞大 代码越来越多、不规范的代码也随之增多,受破窗效益、本身的 ...
在多线程编程中常常需要进行同步而锁定某个对象,通常采用synchronized来实现,部分情况下采用Java.util.concurrent.lock更加合适。ReentrantLock实现了Lock接口、是常用的实现类。
Lock和synchronized有个明显的区别在于----lock必须在finally里面释放,如若不在finally中释放,则操作中抛出异常、锁又可能永远得不到释放,这点非常重要。
Lock lock = new ReentrantLock();
lock.lock();
try {
...
1、oracle
select * from (select t.*, rownum rn from (select * from t1 order by t1.cid desc) t where rownum < 100000) where rn > 99900;
t1为表名 cid为表的关键字段
2、MySQL
select * from t1 limit 10,20
t1为表名 ,limit函数
3、SQL server
top
1、内部类
public class Singleton {
private static class SingletonHolder {
public static Singleton singleton = new Singleton();
}
public Singleton getResource() {
return SingletonHolder.singleton;
}
private Singleton() {};
}
...
1、Happens-before
JMM使用happens-before的概念阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。两个操作可以是一个线程内、也可以是不同线程之间。Happens-before规则如下:
程序顺序规则:一个线程中的每个操作,h-b于该线程中的任意后续操作;
监视器规则:对一个监视器锁的解锁,h-b于随后对这个监视器的加锁;
Volatile变量规则: ...
1、LinkedBlockingQueue
阻塞队列、线程安全,可在构造方法参数中指定容量、默认容量为Integer.MAX_VALUE,实现了BlockingQueue接口以及Collection和Iterator接口的所有方法,不接受null元素。常用方法有put和take,put方法在队列满 ...
刚接触动态代理模式的时候,感觉着东西确实有意思,但仔细想想貌似平常很少情况下会被使用。后来知道了Spring AOP的底层是采用动态代理实现的。
项目中采用spring声明式的事务控制、确实能够感受到AOP的存在,也能隐约明白AOP的底层实现和动态代码有莫大的关系。JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在 ...
最近在多线程编程中用到了wait(),随之即面临notify与notifyAll的选择、本人代码中使用两者皆可,查看两者的定义后、发现两者的选择还是很讲究的。
所有处于wait状态的线程,需要使用notify或者notifyAll才能被唤醒、重新被唤醒进入锁的争夺队列。notify即随机唤醒等待中的一条线程;notifyAll即唤醒全部处于等待中的线程。
两者的使用上都存在缺陷,使用notify时、容易导致死锁,而使用notifyAll时容易导致资源竞争使用的异常。所以两者的使用得根据实际情况选择、并没有说普遍的说法。下面分别 ...
面试过程中被问到了这个问题,当时虽然答对了、但是仍然属于一知半解状态,网上有详细的说明、以此为基础增加了自己的理解和测试。
一个日本作者-结成浩的《java多线程设计模式》有这样的一个列子:
pulbic class Something(){
public synchronized void isSyncA(){}
public synchronized void isSyncB(){}
public static synchronized void cSyncA(){}
public static ...