java想要拿15000以上的工资,需要具备的知识:
高并发,线程同步(threadLocal,同步锁),jvm,spring,mybatis,Hibernate , mysql,mq,Nginx ,nosql(mongodb,redis)
2016年12月22日
1:spring+hibernate的框架里面有两个让人心烦的地方,第一个是从数据库查询到实体,在代码中一旦修改某个字段后,它会自动更新数据库,第二个笔记麻烦的地方是,你在一个事务里面,如果,如果既有hql,又有sql,控制台打印的执行语句会让你感觉迷茫。sql在事务提交前就执行了,hql在事务提交后才执行的。
2:如何保证事务的最小单元化?
3:事务的传播性如何理解以及合理运用?
4:通过配置文件配置事务,还是写注解配置事务好?到底哪一种更加优秀?
5:配置了一个spring的事物的切面,结果呢,切面点下的所有包下的方法都默认有了事物,好烦啊。
6:spring bean执行顺序,init_method配置的方法,和quartz定时任务调度的方法,那个会先执行?
7:多表关联查询,分页查询怎么搞。
2017年1月4日
1:spring管理的service不要轻易抛异常。
有的项目用spring管理事务的,用配置文件配置了service层的所有方法都有事务,这个时候,如果向外抛异常,那么,异常前面的sql语句将得不到执行,程序会有很大的漏洞。我就遇到了,本来支付后除了异常,需要将状态改变了,不再支付了,结果除了异常后,没有改变状态,又重新支付了。
2:如何让同一个订单不并发?
经常遇到这样的并发问题,相同的订单不允许并发,不同的订单允许并发。(特别是在创建订单,支付的时候,如果相同的订单并发了,很容易出问题)
解决方式如下:
首先定义一个map
/**
* 用于防止并发的全局变量
*/
private static HashMap<String,Integer> groupVariable=new HashMap<String,Integer>();
key=操作方式+订单id,比如支付订单就是PayOrder+id作为key,创建订单就是CreateOrder+id作为key。
然后每次创建订单或者支付的时候就从map里面取key信息(取key的方法要加上同步锁),如果没有取到,说明当前没有人在创建订单或者支付订单,那么没有并发。
否则,说明已经有人在操作了,抛出异常。
@Override
public Integer putGroupVariableValue(String type, String value) throws Exception {
synchronized (groupVariable) {
if (groupVariable.containsKey(type + value)) {
if(BBOOConstants.GroupVariable_type_B2BPay.equals(type)){
throw new Exception("有其他人正在支付该订单,请刷新后重试!");
}else if(BBOOConstants.GroupVariable_type_EtdzCreateOrder.equals(type)){
throw new Exception("有其他人正在处理该订单,请刷新后重试!");
}else if(BBOOConstants.GroupVariable_type_Import.equals(type)){
throw new Exception("有其他人也在导入该订单,请刷新后重试!");
}else if(BBOOConstants.GroupVariable_type_B2BCreateOrder.equals(type)){
throw new Exception("该订单其他人正在创单,请刷新后重试!");
}
} else {
groupVariable.put(type + value, 1);
}
}
return groupVariable.get(type+value);
}
1; 关于如何防止业务人员,同时打开多个页面,然后不同时间段对这个页面进行操作。(同一个操作执行了多次)
2017年1月7日
1:如何将sqlserver数据库中的数据拷走?
2:SQLSERVER中数据表t_order中有个account=NULL,我用select * from t_order where account!=2查不到这条记录。
2017年1月11日
1:hql 用left join fetch多表查询的时候,会出现重复的数据。这个时候要用select distinct tablename的方式去重复。
2017年1月12日
1:hibernate一对多表插入的时候,如果这个插入方法没有事务,那么有可能存在只有一张表有数据的情况(另一张表插入的时候出异常了)
2017年1月18日
1:推荐一个很好的学习编程的网站,我在这里学习mongodb,http://www.runoob.com/mongodb/mongodb-tutorial.html
2017年2月14日
1:hadoop的第一个程序wordcount例子的运行。
2:linux中快速补齐命令按tab键。