学习笔记

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);
	}


2017年1月6日

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的方式去重复。

2017112

 

1hibernate一对多表插入的时候,如果这个插入方法没有事务,那么有可能存在只有一张表有数据的情况(另一张表插入的时候出异常了)


2017年1月18日


1:推荐一个很好的学习编程的网站,我在这里学习mongodb,http://www.runoob.com/mongodb/mongodb-tutorial.html



2017年2月14日

1:hadoop的第一个程序wordcount例子的运行。

2:linux中快速补齐命令按tab键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值