- 浏览: 5247555 次
- 性别:
- 来自: 北京
-
最新评论
-
fanchengliang:
好用,特地登录了来顶
破解 navicat premium 11 -
w_mojian180:
这个方法对于子类来说是没效果的
Spring AOP会忽略从父类继承的方法 -
cremains:
如何使用redis实现分布式锁 -
wangyudong:
没这么麻烦吧,网上找了一个Holer工具,只需要配置一个Acc ...
公网访问局域网内的数据库 -
haoxuexi87:
Jmeter性能测试从入门到精通(2018年最新)课程观看地址 ...
JMeter 接口测试入门01
文章列表
分布式系统后台如何防止重复提交
分布式系统网络拓扑结构
场景描述
秒杀系统提交订单时,由于用户连续快速点击,并且前端没有针对性处理,导致连续发送两次请求,一次命中服务器A,另一次命中服务器B, 那么就生成了两个内容完全相同的订单,只是订单号不同而已.
gradle 是什么
gradle 是一个让构建自动化的工具,类似于maven,ant的功能.使用gradle可以给java项目编译,单元测试,打包,或者生成可执行的jar包等
gradle的依赖环境
gradle依赖java环境,所以使用gradle前需要安装jdk 或jre
gradle 构建项目的流程
使用hibernate时,发现一个错误:
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: Subquery returns more than 1 row
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:54
SQL:
select
inspection0_.houseInfo_id as ...
hibernate 的事务传播中两种类型的区别
最常用的两种就是
REQUIRED(0)
REQUIRES_NEW(3),
两者的区别:
REQUIRED(0):若当前存在一个事务,则加入该事务,而不用创建;
REQUIRES_NEW(3):不管当前是否存在事务,都会创建一个新的事务
这种区别会造成什么影响呢?
比如事务A 中调用其他类的方法 updateXXX,
隔离级别是REQUIRED(0):
如果事务A 是只读的,那么方法 updateXXX中若有更新数据库操作,则不会执行更新,即所有操作都是只读.
即事务A中 各种方法的执行,可读写特性和事务A保持一致.
...
hibernate 的事务传播容易出现的问题
先说下我们遇到的问题:
(1)get出来一个对象,修改其成员变量,
结果触发了自动更新(向数据库发送一条update指令),
其实根本没有调用update 方法
(2)对于持久态的对象,显示调用update,结果没有更新
第一个问题解决方法:
(a)把事务设置为只读
第二个问题的解决 方法:
把修改的dao方法的事务传播类型改为: REQUIRES_NEW
getXXX就算使用REQUIRES_NEW 也没有用.
updateXXX就算使用REQUIRES_NEW 也没有用.
最佳实践
(1) ...
如何解决 hibernate 自动更新实体类的问题
示例:
GrabOrder grabOrder = (GrabOrder)this.grabOrderDao.getCurrentSession().get(GrabOrder.class,grabOrderId);
grabOrder.setNickname(TimeHWUtil.getCurrentDateTime());
上述代码 会执行两条SQL:
查询和更新
为什么会更新呢?我明明没有调用DAO的update方法啊!!!
但是这里我调用了实体类的setter方法,
hibernate有一个机制:Hibernat ...
我们使用hibernate作为DAO层时,有时会遇到如下错误:
org.hibernate.QueryException: duplicate association path: agent
duplicate association
具体是什么错误呢?
Criteria criteria=this.inspectionOrderDao.createCriteria();
criteria.createCriteria("agent").add(Restrictions.eq("type", 1));//不报错
...
数据库事务的隔离级别分为四种:
(1)未提交读
事务A 能够读取事务B 未提交的数据
即:事务B在修改数据,未提交事务,A也可以进行读取;
(2)提交读
事务A只能读取事务B提交的数据,
即:事务B在修改数据,未提交事务,事务A不能进行读取,
只有等事务B提交之后,A才能读取
(3)可重复读
事务A在读取,事务未提交时,事务B是不能修改的,
只有等读的事务提交之后,事务B才能修改
(4)串行
所有的事务都是串行,即锁表.
问题:
1,事务A,事务B都是读的,可以并行吗?
除了串行,前3种级别都可以.
2.事务A,事务B都是修改,无法并行吗 ...
mac电脑升级为macOS Sierra 就无法使用seil了,使用的是Karabiner-Elements
macOS Sierra 中可以使用Karabiner-Elements 进行按键映射:
我的目的是单独按下F11,就相当于按下end.
但是fn+F11 ,就无法减少音量了,很奇怪.
所以采用脚本的方法实现:
{
"description": "Post end when F11 is pressed alone.post home when is held util 1 second",
...
直接上shell命令:
awk 'BEGIN{index2=1;sum=0;}{if($0~"1003"){index2=NR;sum++;print "第"NR"行: " ,$0;} else if (NR<index2+3 ) {print $0} else if (NR==index2+3){print "\n\n\n"}}END{print "共搜索到"sum"条"}' error.log.2018-04-17.log
命令解释:
命令执行结果:
...
目标:
查看日志文件中,所有空指针异常发生的位置,及前后10行,
前10行是为了看到请求的详细信息(接口 ,参数等),
后10行是为了查看异常发生的代码行号,定位代码bug.
命令:
grep -rnw "java.lang.NullPointerException" house_error.log |cut -d ':' -f 1 |xargs -n1 -i expr {} + 10 |xargs -i awk '{if(NR>={}-16 && NR<={})print NR":"$0;if(NR=={ ...
摘要: 现在网站都有后台日志,主要用于记录异常信息,和异常发生时的关键参数,用于排查bug.有时日志文件很大时,使用shell命令可以事半功倍.
场景:java web
目标:查看最近的一个空指针异常的位置,及
空指针异常发生时的前5行 ...
mac 使用Karabiner配置键盘映射(2)-核心标签的解读
KeyOverlaidModifier
使用场景:一般用在 改变Modifier(控制键,例如ctrl,command,alt等)的行为.
例如正常情况下,单独按下control或command 是没有反应(动作的),
但是我们可以通过KeyOverlaidModifier 增加反应.
实例:
目标:单独按下右边的command 触发Alfred
所以单独按下右边的command,触发F17就行:
<item>
<!-- 右边的command,单独按下相当于F1 ...
摘要: SpringMVC 自带的400或404 页面都是网页,不太适用于客户端需要的json数据
SpringMVC 自带的400或404 页面都是网页,不太适用于客户端需要的json数据,
默认的404:
默认的400页面:
如何实现对这些错误的响应自定义呢?
定义一个 ControllerAdvice 类:
在其中添加如下两个方法,分别响应400和404:
/***
* 响应400错误
* @param ex
* @param session
* @param request
* ...
对接支付宝支付的前提:
1,商户开通支付能力
登录蚂蚁金服 开放平台:https://open.alipay.com/platform/home.htm
需要开通 的功能选项有:
创建应用,类型是:网页&移动应用
设置应用的RSA 等各项参数,界面如下:
支付宝推荐使用RSA2 加密方式,老版的加密方式只有RSA 和md5,没有RSA2.
本项目使用RSA2 加密方式
2,对接支付宝依赖的jar包
<!-- https://mvnrepository.com/artifact/net.guerlab/sdk-alipay-core --> ...