
技术问题探索
laoxilaoxi_
码农,邮箱laoxilaoxi@foxmail.com
展开
-
在SpringBoot下使用Mybatis-plus设置了TypeAliasesPackage,IDEA运行可以,但打包不生效
一、背景SpringBoot项目,使用了Mybatis-plus的MybatisSqlSessionFactoryBean去生成SqlSessionFactory的Bean,其中设置了TypeAliasesPackage,在IDEA里直接运行可以正常启动,打包运行就报entity的别名找不到。//配置sqlSessionFactory的bean,设置分页拦截配置@Bean(name = "sqlSessionFactory") public SqlSessionFactory sql原创 2020-07-28 22:33:31 · 9165 阅读 · 3 评论 -
死信队列+TTL实现延迟重试
思路MQ配置:1.设置正常处理队列及绑定关系,exchange,queue,key2.创建5s延迟队列queue_5s,10s延迟队列queue_10s,20s延迟队列queue_20s,差错处理队列queue_error,分别于exchange_delay绑定,设置routingKey分别为key_5s,key_10s,key_20s,key_error3.分别配置queue_...原创 2019-12-30 14:36:06 · 496 阅读 · 0 评论 -
Guava 缓存读后总结
目录零、说明一、初始化二、缓存回收机制四、其他说明Cache API(偷懒一下)零、说明Guava - cache是一个本地缓存,读了一些源码和文档在此总结一下。先来个上手例子(学习官网套路)LoadingCache<Key, Object> loadingCache = CacheBuilder.newBuilder() ...原创 2018-06-21 13:51:50 · 917 阅读 · 0 评论 -
信号量Semaphore学习总结
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release S...原创 2018-06-21 17:06:33 · 494 阅读 · 0 评论 -
交易系统热点账户问题(一)
目录一、热点账户二、热点账户常见问题三、纯修改余额方式及其特点一、热点账户 热点账户就是高频进行扣款、入账的账户,也就是热点账户该条数据为热点数据,会被频繁更新。一般热点账户分为两种,一种是频繁扣款的热点账户,另外一种是频繁入账的热点账户。二、热点账户常见问题 1、性能瓶颈问题 2、数据库压力问题 3...原创 2018-07-08 23:10:12 · 8280 阅读 · 2 评论 -
线程池Executor框架简介及选型
目录一、Executor简介二、线程池的合理使用一、Executor简介 1.Executor构成(可了解也可不了解)Executor由三部分构成,任务、任务执行、异步结果。 任务:任务实现了Runnable或者Callable 任务执行:接口有Executor、ExecutorServi...原创 2018-07-12 23:54:59 · 1500 阅读 · 1 评论 -
交易系统热点账户问题(二)
目录一、概述二、业务场景分析三、业务角度热点账户实践及其特点四、其他角度方案一、概述本篇着重介绍一下从业务层面的热点账户的经验与实践,修改余额的几种方式见上篇介绍交易系统热点账户问题(一) 二、业务场景分析可将业务场景划分为如下:高频入:B端收单账户(结算账户),业务中间账户(业务处理时记录在途资金)高频扣:B端代扣代发账户(B端支付账户),B端手续...原创 2018-07-19 20:54:59 · 2549 阅读 · 0 评论 -
交易系统热点账户问题(三)
一、概述本篇着重介绍一下从数据库设计层面的热点账户的经验与实践,修改余额方式及业务层面见交易系统热点账户问题(一),交易系统热点账户问题(二)。二、问题分析热点账户的性能问题,除了修改余额方式的优化跟结合业务场景的优化,还有一方面可从DB资源上优化。打个比方(数据不准确,只是想说明数据库资源也会是一个可优化的地方):如果一个实体机数据库,对单条数据的更新tps可达到1000/s...原创 2018-08-26 19:50:26 · 1416 阅读 · 0 评论 -
SpringBoot启动报错“找不到或无法加载主类”
问题描述: springboot项目打成jar包后,通过java -jar启动,报错“找不到或无法加载主类”问题排查: 1.本地 mvn install 打包,然后java -jar jar包,启动成功 2.将jar上传到linux服务器,java -jar jar包,启动失败,报错“java命令不存在” 原因:jdk没有配置...原创 2018-11-02 13:58:03 · 7878 阅读 · 4 评论 -
SpringBoot启动项目后自动关闭,日志打印"Stopping Service"
问题描述: Java -jar jar包,启动springboot项目,在还没启动完成,日志打印出“Stopping Service”,查看jar进程存在,但访问服务不通,日志无报错。问题排查: 尝试了各种方式,重新打包,修改tomcat为外部tomcat,修改端口等等都不起作用,依然存在问题。 后来猜测报错了,只是因为日志没有打印出来,又去修改日志级别及其他配置...原创 2018-11-02 14:00:59 · 5657 阅读 · 6 评论 -
表字段加了索引但是查询依然很慢
之前遇到一个问题(因为最近又遇到了,所以记录下来),表字段加了索引但是查询依然很慢,大概的情况如下问题描述:有个表T_ORDER(匿名),字段若干,其中有个TX_TIME交易时间,MERCHANT_NO商户号都已经添加了索引,表数据量较大5000W+SQL大致如下(实际SQL比下面的复杂一点点,会做 LEFT JOIN 其他表,但是不多):SELECT * FROM T_ORDE...原创 2019-01-22 23:21:28 · 7955 阅读 · 2 评论 -
仅 READ_COMMITTED 和 SERIALIZABLE 是有效的事务处理级
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: 仅 READ_COMMITTED 和 SERIALIZABLE 是有效的事务处理级...原创 2019-07-10 09:38:55 · 3075 阅读 · 1 评论 -
Spring事务开启了却不生效
示例:public interface TestService { /** * 保存list * @param datas 数据 */ void save(List datas);}public class TestServiceImpl implements TestService { @Transactional @O...原创 2019-07-15 23:13:44 · 1285 阅读 · 0 评论 -
SpringAOP获取方法参数上的注解
一、示例① 如下代码,自定义一个参数注解@Test,并将其使用到方法参数上,用于标注需要检验的参数/*** 自定义注解,用于参数*/@Target(PARAMETER)@Documented@Retention(RetentionPolicy.RUNTIME)public @interface Test{}/*** 接口层,使用使用@Test注解标记参数*/@R...原创 2019-08-08 21:11:40 · 18552 阅读 · 10 评论 -
apollo多namespace时,存在相同key,前覆盖后
一、配置方式演示//config配置方式1@Configurationpublic class TestConfig { @Value("${config.value.cfgVal}") private String cfgVal; public String getCfgVal() { return cfgVal; }}//conf...原创 2019-08-16 09:10:06 · 5391 阅读 · 7 评论 -
SpringBoot中修改proxyTargetClass,但事务代理始终为CGLIB
一、配置在Springboot中,开启事务特别简单,如下1.在启动类上或者配置类上增加@EnableTransactionManagement2.在需要开启事务的方法上增加@Transactional二、问题因为本人有个特别不好的习惯,经常把@Transactional注解使用在interface的方法上,最近遇到一个问题,事务不回滚。但在排查问题时debug发现,开...原创 2019-08-20 23:55:09 · 6279 阅读 · 0 评论