java基础知识
事务隔离性:
悲观锁:串行——例如:看电视当张三在看电视,其他人都不能看,只有张三看完之后,其他人才能看。
乐观锁:可以通过一个版本号进行控制——例如:张三想要修改这个值,而李四也想修改同样的值,那么加上版本号,张三和李四同时拿到版本号,张三根据版本号修改了值并且修改了版本号根据他获取的版本号,而李四去根据版本号修改的时候就不能修改。
如图所示:
- 负载均衡
负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。
根据负载均分发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。
服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡。
客户端负载均衡指的是在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求
基于ribbon实现负载均衡
ribbon是spring cloud的一个组件,它可以让我们使用一个注解就能轻松的搞定负载均衡。
@LoadBalanced注解
java中RESTful Api对比
断言的使用
下面两种写法一样
@Test
public void test1() {
...
User user = userDao.selectById(userId);
Assert.notNull(user, "用户不存在.");
...
}
@Test
public void test2() {
// 另一种写法
User user = userDao.selectById(userId);
if (user == null) {
throw new IllegalArgumentException("用户不存在.");
}
}
有没有感觉第一种判定非空的写法很优雅,第二种写法则是相对丑陋的 if {…} 代码块。那么神奇的 Assert.notNull() 背后到底做了什么呢?下面是 Assert 的部分源码:
public abstract class Assert {
public Assert() {
}
public static void notNull(@Nullable Object object, String message) {
if (object == null) {
throw new IllegalArgumentException(message);
}
}
}