自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hikeboy的博客

有道无术,然术可求;有术无道,而止于术

  • 博客(40)
  • 收藏
  • 关注

转载 【spring的事务】分布式事务-单应用多数据源

@Transaction注解只能对单一数据源生效在前文中的Spring事务传播机制@Transactional(rollbackFor = Exception.class) public void doPay(RefillRequest refillRequest) { // 完成支付转账 accountAmountService.transfer(refillRequest.getUserAccountId(), refillRequest.getBusinessAccountI

2021-02-15 13:26:36 697

原创 Spring事务@Transactional源码简要分析

Spring实现@Transactional的核心原理还是AOP的动态代理:加了@Transactional注解之后,就对这个动态代理插入了一堆事务管理的增强逻辑,开始执行方法之前先开启事务,方法中有报错就回滚事务,如果没有报错就提提交事务。依赖了Spring Boot1.5.9之后,会自动依赖引入Spring-tx-4.3.13.RELEASE.jarorg.springframework.transaction.interceptor这个包下的TransactionInterceptor 是

2021-02-12 13:10:17 423

翻译 【spring的事务】传播机制应用实践-单应用单数据源

都知道Spring可以通过增加@Transactional注解来支持事物。根据阿里编码规范,一般建议加在方法级别,不要笼统的加在类的级别。这个注解一般要加rollbackFor,就是指定哪些异常类型才要回滚事务还有比较重要的,就是有个isolation属性,你可以自己手动调整事务的隔离级别。问题:一个加了@Transactional的事务方法,和嵌套了另外一个@Transactional的事务方法的时候,包括再次嵌入@Transactional事务方法的时候,如果出现异常,是怎么传播的?pub

2021-02-08 07:52:53 357

原创 Git 一些高阶命令的工作应用场景

场景持续更新ing1、写了2个需求的代码一次性提交暂存了, 不符合规范,想分2次分别commit此时需要先执行一个命令,进入交互式模式:git add -i可以revert把已经提交暂存的文件挪出来。2、版本的回退和前进:git reset --hard commit标识符3、在当前分支上,如果要回退到过去的某个历史版本的话,那么此时应该是用git log就可以,但是如果要回到未来的某个版本,是用git refloggit log和git reflog的区别:git log,是你当前的分支指向

2020-08-01 22:29:20 269

原创 线上服务的JVM的GC日志如何阅读

一、JVM 启动参数jvm_common_options = -Xms6g -Xmx6g -Xss256K -XX:GCTimeRatio=19 -XX:SurvivorRatio=8 -XX:+AggressiveOpts -XX:ParallelGCThreads=24 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -X...

2020-02-24 00:48:56 1809

原创 指数基金系列(一)-开篇(2019-12-19 迁移到雪球更新)

“听说你在证券公司工作,给我推荐几只内幕股票呗?”“在么,帮忙看看这只股咋样,能买/卖么?”这是经常碰到一些亲朋好友对我提的问题。“不好意思,我从来不炒股票”此时,部分人就会以一种鄙夷见外的眼光投向我,认为在我眼里把他当外人。从业三年了,我确实从来不炒股票,只投资指数基金。近来通过历史数据对指数基金进行了一些量化策略分析回测,决定将一些体会通过一系列博文记录下来。不荐股,不预测,只尽...

2019-07-31 14:07:06 835 2

原创 基于Apache Curator改进的主从组件的开发

一, 问题背景以前曾基于ZooKeeper的原生Java API 实现的一个分布式主从组件,其基本原理是:各个节点服务启动时争抢在zookeeper注册临时节点的操作,谁注册了约定的临时节点,谁就是master详情见:https://blog.csdn.net/hikeboy/article/details/80086379有一天QA突然发现有个基于该组件的worker服务处于不可用状态,...

2019-01-19 22:17:05 529

原创 ZooKeeper-3.4.10 源码的一个Bug:创建临时节点时数据不能为空

在用ZooKeeper的API 创建临时节点时,试了好几次都不成功zkClient.createEphemeral(currentServiceIpNode)于是使用/zookeeper-3.4.10/bin/zkCli.sh 运行命令行尝试创建临时节点[zk: localhost:2181(CONNECTED) 2] create -e /zk_demo/tempDataExceptio...

2019-01-07 21:51:40 3071 1

原创 Linux环境下搭建apama运行环境

1,首先su - work 切到非root用户下2,到apama官网 http://www.apamacommunity.com/downloads/ 下载Linux版本的安装包 apama_10.1.0.3_amd64_linux.zip 上传到Linux服务器的application目录下并解压缩,得到文件夹apama_10.1.0.3_amd64_linux3,创建一个/...

2018-07-19 20:31:00 1301

原创 ZooKeeper基本原理与分布式主从节点实践

我们在运行一些worker实时任务时,为了防止单个节点宕掉后,能有从节点继续工作,从而保证系统的高可用。在此场景下我们需要实现: 1,从节点不能与主节点同时工作,也就是同一时刻只能有一个节点在运行任务。 2,从节点要随时知晓主节点是否正常工作ing,一旦发现主节点宕,立马争取得主节点权顶替工作。Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,能...

2018-04-27 22:58:28 3079

原创 Dubbo工程里的数据传递实体model必须且建议只实现一种接口

问题背景: 一个dubbo接口,返回值为一个排序的 List,为了排序方便,对List<model>中的model实体实现了comparable接口,重载了compare方法。在dubbo工程中跑单元测试一切正常 但是部署到注册中心后,在客户端调用该接口的结果却发现排序是无效的。 原因:dubbo接口的model实体,必须实现Serializable...

2018-02-21 18:52:55 2126

原创 不修改数据库编码格式的前提下解决emoji表情存储乱码问题

在数据库存储emoji表情字符时,会出现乱码。网上搜索的解决方案是修改为utf8mb4编码即可解决,详情参看 http://blog.csdn.net/LuckyQueen0928/article/details/78592278那么问题来了,在生产环境下,数据库往往很多是已经使用了多年的老项目。数据库层面的编码格式是不能随意去修改的。那么如果在不修改数据库层面的编码集的前提下,解决emoji表...

2018-02-21 00:36:35 1345

原创 dubbo的函数返回类,含有有参构造函数时,必须写明一个无参构造函数

package com.foundersc.ifc.adviser.shop.model;import lombok.Data;import java.io.Serializable;@Datapublic class PageModel implements Serializable{ private String begin = "0"; private String end =

2017-07-11 16:26:32 2528

原创 [../conf] 路径找不到Scala配置文件

今天需要引用一个Scala程序的jar包,该Scala程序通过沪深行情计算出信号点信息。我需要将信号点存入本地DB。写好调用Scala的Service后,在单元测试Test中跑没问题,但是一旦启动Tomcat 在SpringMVC的 Task配置的定时任务中调用 或者在@Controller中调用,就会报错:03-Jul-2017 09:43:37.831 严重 [http-nio-8080-exe

2017-07-03 10:35:42 966

原创 com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token

造成该异常的原因:http的服务端对某个客户端不需要的属性加了transient关键字: private transient byte[] contentByte;加了该关键字后,返回的json数据虽然没有了contentByte的内容,但是该字段名称依然存在: “contentByte”:{} 只是结果为空{}解决方法: 客户端接收返回结果的entity对 contentByte属性

2017-05-08 22:43:41 24202 1

原创 关于oracle的原生sql排序分页

用惯了mybatis和SpringJPA自带的分页API,今天维护一个老项目,需要使用oracle的原生sql实现分页。基本思想来自这篇文章:http://blog.csdn.net/honey_potter/article/details/53014284在进行排序并取分页时,主要利用了rownum的属性。这篇文章的方法有个坑,会导致取出来的前五个并不是理想排序的前五个错误写法一:select *

2017-05-05 14:22:15 1133

原创 通过Http获取远程数据 转化为Class类的通用方法

经常需要从远程获取数据转为实体类,可以通过泛型的实现getRemoteData 方法可以把远程获取的数据转化为自己定义的任何类把获取的Json数据转为class 依赖 jackson <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson

2017-04-11 20:28:16 1101

原创 因并发造成创建了2条相同订单解决的方法

在订单的创建和支付系统时,会有检查逻辑是否已经签约。如果查到某个客户与某个投资顾问的投顾服务产品已经有签约关系,则不允许重复签约。但是QA反应,因目前客户端可以多终端登陆,QA反应当两个终端同时间提交同一订单时,会对同一产品生成2个订单。为了避免在同一时间的2个请求生成2个订单,可以通过Redis缓存一个lockkey来生成一个锁。基本思路为:在开始创建订单前,在redis中缓存一个由客户号cl

2017-04-09 00:06:23 5310 2

原创 SpringJPA 直接实现count(*)

刚开始使用JPA时,基本都依赖@query(SQL)注解通过原生sql来实现根据编号统计条数: 方法一:@Query(" select count(t) from FollowerInfo t where investUserId = :invUserId") Integer findFollowerNumberByInvUserId(@Param("invUserId") Long in

2017-03-29 11:34:26 72446 4

原创 JPA 查询 未查询到时返回的list的size为0 但是引用并不为空

错误写法: List<SignedInfo> signedInfoList = adviserCommSignedRepository.findByDeviceIdAndAdviserId(deviceId,adviserId,new Sort(new Sort.Order(Sort.Direction.DESC,"updateDate"))); if (signedInfo

2017-03-24 12:58:05 4680 1

原创 SpringJPA 源码中CrudRepository和JpaRepository的Save方法的区别分析

@Slf4j@Servicepublic class AdviserCommSignedServiceImpl implements AdviserCommSignedService { @Autowired AdviserCommSignedRepository adviserCommSignedRepository; public boolean checkHasSig

2017-02-28 14:58:00 21701 1

原创 数据库表的自增ID createDate和updateDate 用JPA注解代替触发器实现

对于数据库表的自增ID , createDate和updateDate 等字段,用JPA注解代替触发器实现,效率会高很多。 由于这些属性很多entity都有 可以写成两个基本entity :BaseEntity和AbstractEntity 然后其他entity继承BaseEntity即可BaseEntity@MappedSuperclasspublic class BaseEntity e

2017-02-20 09:53:41 5145

原创 Spring JPA 使用@transaction注解时产生CGLIB代理冲突的解决方法

在使用JPA进行数据库的删除操作时需要使用@Transactional注解来支持事物: @Modifying @Transactional @Query(" delete from FollowerInfo " + " where crmAuth = :crmAuth and investUserId = :invUserId") void delet

2017-02-13 16:37:51 2001

原创 Json解析SONObject[" + JSONUtils.quote(key) + "] is not a JSONObject

在解析Json时,出现is not a JSONObject 的异常JSONObject str1=jsonObject.getJSONObject(“resultCode”);JSONObject jsonObject = JSONObject.fromObject(content);通过查看getJSONObject源码的源码发现,是传入的JSON字符串的不符合规范,但是把整个JSON返回的串在

2017-02-07 13:36:00 6557

原创 Solr 千万级大数据索引查询导致服务器崩溃的原因和解决

最近对老旧系统改造需要提高大数据量的查询速度,引入了solr。建了个28803309条的索引:但是查询时出现了后半部分数据无法全部查询出来:第0-10条可以查出来, solrQuery.setStart(0); solrQuery.setRows(10);第1千万到1千万零10条也可以查出来 solrQuery.setStart(10000000);solrQuery.setRows(10000

2016-11-10 17:48:28 13418

原创 Spring JPA使用时,提高程序运行效率的几个点总结

1, 在删除操作时,最好不要用jpa,直接在dao方法上@query,也就是用sql语句,能快些:jpa实现删除需要@transaction注解,该注解有可能造成tomcat出问题。。而且改成@query可以提升速度 2,sql中去掉trim 改java实现 在@query里的sql语句中,避免出现类似于trim(c.brokerAccount) ,需要补全参数时用java代码String.f

2016-10-11 17:57:13 14187 1

原创 Could not resolve dependencies for project com.newhero.project:project-service:jar:0.0.1-SNAPSHOT:

[ERROR] Failed to execute goal on project project-service: Could not resolve dependencies for project com.newhero.project:project-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies for [com.new

2016-09-23 11:17:31 8995 2

原创 Spring Data JPA的findBy函数不能对部分属性查询

findBy函数查询结果一定是整个对象的所有字段,想要某个字段,只能用List接受整个结果再去get(i)找到想要查找的字段:例如 本想通过如下写法查询到ItemValue list list=findItemValueByBranchCodeAndItemIDAndVersion但是打印出查询结果可知: List<Object> itemstr=tbSdeptIndexDao.findItemV

2016-09-14 14:02:07 4649

原创 No property month found for type **TbExamResult**!

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property month found for type TbExamResult!Caused by: org.springframework.beans.factory.BeanCreationException: Error creating

2016-09-14 11:43:26 528

原创 删除IDEA工程,重新git 上拷贝下来后打开,需要重新import maven

删除本地的整个工程,从git重新拷贝下来后会出现注解无法解析的情况。首先,用IDEA打开拷贝下的工程要选择import 而非open file。就会提示加载maven工程; 然后 moudle-》右键-》Maven-》Reimport 即可

2016-09-14 11:37:03 3654

原创 Spring Data JPA 直接调用存储过程的方法

@NamedNativeQueries( { @NamedNativeQuery( name = "FixedFeeOrderValidCalculate", query = "insert into kh.tb_cust_tdyw" +

2016-09-12 15:59:20 8656 1

翻译 输入一个年月,输出往前推5个月的年月,考虑跨年

public String GetPre_5_month_startdate(String tradeMonth){ // select to_char(add_months(to_date(i_trademonth, 'yyyyMM'), -5), 'yyyyMM') || '01' // into v_pre_5_month_startd

2016-09-12 15:37:12 544

原创 使用SpringData JPAQL获取查询结果query.getResultList()读取后EntityManager会自动关闭

System.out.println("*******"+query.getResultList().get(4).toString()+"*********************"); List<Object[]> list = query.getResultList();以上代码 运行会报错 java.lang.IllegalStateException: EntityMa

2016-09-08 11:40:49 6650

原创 SpringDataJPA class与数据库表出现找不到主键的问题

1,检查@Id的包 很多的包里有该注解,主键注解需要import javax.persistence @Id的注解引入包2,@Query 进行删除操作时 返回值必须是int @Query("delete from ServiceProductOrderValidNum vc where vc.month = ?1") @Modifying int deleteByMonth(St

2016-09-05 20:56:08 4190

转载 Hibernate中 session.getTransaction().commit(); 和session.beginTransaction().commit();

Exception in thread “main” org.hibernate.TransactionException: Transaction not successfully started at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:131) at StudentTes

2016-08-18 12:03:38 4781

翻译 配置jdbc时注意特殊字符的转码

Thu Aug 18 11:06:57 CST 2016 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must

2016-08-18 11:32:19 7663 3

原创 在Spring2.5+JDK1.8时 使用context.annotation出错

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [beans.xml]; nested exception is java.lang.IllegalStateException: Cont

2016-08-15 20:43:21 5121 3

原创 在ideal中以equinox-SDK-Neon框架输出一个基于osgi的helloworld例子

1, 下载equinox-SDK-Neon,然后打开ideal-configure-preferences。然后搜索找到OSGi。配置好存放equinox的路径。    2,新建一个maven工程project名为Helloworld    3然后在helloworld的project下新建2个moudle 分别名为HelloProvider和HelloTest  注意artificial命

2016-07-12 21:04:29 1270

原创 文章标题

首先,如果gitlab上的工程不是自己所建立,则只能往develop的分支push 不能往master分支push     master和develop通过git status命令查看  通过git checkout 命令切换在克隆的路径下新建一个weimiantong3.md的文件  然后 git commitcommit之后会进入vi编辑器 按“i” 进入编辑模式 输入提交的备备注信息后,按s

2016-07-11 20:00:45 228

原创 git 如何push本地文件到gitlab远程仓库

首先,如果gitlab上的工程不是自己所建立,则只能往develop的分支push 不能往master分支push     master和develop通过git status命令查看  通过git checkout 命令切换在克隆的路径下新建一个weimiantong3.md的文件  然后git commit commit之后会进入vi编辑器 按“i” 进入编辑模式 输入

2016-07-11 17:14:25 14262

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除