`
文章列表
分布式系统后台如何防止重复提交 分布式系统网络拓扑结构 场景描述 秒杀系统提交订单时,由于用户连续快速点击,并且前端没有针对性处理,导致连续发送两次请求,一次命中服务器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 --> ...
Global site tag (gtag.js) - Google Analytics