java
文章平均质量分 52
山间明月江上清风_
编程就是算法和数据结构,算法和数据结构是编程的灵魂
展开
-
spring cloud stream操作kafka和redis,以及kafka与redis队列性能比较(未完)
上次用redis队列做了性能测试,不过redis毕竟不是专门用来做队列的,这次用kafka试试。这次我用spring cloud stream来操作kafka。Spring Cloud Stream是构建消息驱动的微服务应用程序的框架。Spring Cloud Stream基于Spring Boot构建独立的生产级Spring应用程序,并使用Spring Integration为消息代理提供连接。...原创 2021-05-26 15:18:00 · 789 阅读 · 0 评论 -
JDK8占用内存过大解决方案(Klass Metaspace占用默认1G)
原因是JDK8的元数据区和Klass Metaspace放在直接内存里,而且Klass Metaspace默认1G内存,还会持续占用,为的就是避免动态加载类空间不足,不过在开发时可以把他空间做下限制。https://blog.csdn.net/mayifan0/article/details/80479903...转载 2018-09-11 10:26:20 · 5355 阅读 · 0 评论 -
JsonFormat时间解析不准确问题
今天遇到一个比较奇葩的问题。我请求报文的时间是字符串"2018-06-25 17:57:54"到了controller用@RequestBody解析后时间变成了Mon Jun 25 00:00:00 CST 2018时分秒被狗吃了!而我的JsonFormat也指定了时分秒,按理说不会出现这样的问题。@JsonFormat(pattern = "yyyy-MM-dd HH...原创 2018-06-26 14:38:30 · 4616 阅读 · 0 评论 -
Swagger Ui只显示部分接口的办法
Swagger UI默认显示所有接口,连endpoint,jpa restful等接口也会显示可以通过一下配置:@Configuration@EnableSwagger2public class SwaggerConfig { @Bean public Docket api(){ return new Docket(DocumentationTy...原创 2018-06-20 09:46:19 · 21702 阅读 · 0 评论 -
JDK8 parallelStream性能测试
JDK8有提供一个很好的并行操作parallelStream。public static void main(String[] args) { long t0 = System.nanoTime(); // 初始化一个范围100万整数流,求能被2整除的数字,toArray()是终点方法 int a[] = IntStream.range(0, 1_000_000).f...原创 2018-06-15 09:48:18 · 2073 阅读 · 0 评论 -
aviator表达式教程
Aviator是一个轻量级、高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行。特性包括:支持绝大多数运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式(?:) 支持操作符优先级和括号强制设定优先级 逻辑运算符支持短路运算。 支持丰富类型,例如nil、整数和浮点数、字符串、正则表达式、日期、变量等,支持自动类型转换。 内...翻译 2018-05-22 11:28:20 · 10263 阅读 · 0 评论 -
解决conversionRule不生效问题
今天遇到一个奇葩问题<configuration scan="true" scanPeriod="60 seconds" debug="false"> <conversionRule conversionWord="msg" converterClass="com.guohuai.basic.component.logback.SensitiveDataCon原创 2018-05-11 13:10:46 · 7266 阅读 · 0 评论 -
并发解决方案-基于redis的消息队列
上一篇教大家用spring-data-redis来实现redis的消息队列:https://blog.csdn.net/u011870280/article/details/80012732现在接着来做一个测试,试试redis队列在并发场景下的性能。首先来一个没队列的场景,比如团购秒杀大家来抢一双鞋子在上篇项目的基础上引入数据库相关依赖:<dependency&g...原创 2018-04-21 01:37:26 · 18002 阅读 · 1 评论 -
用spring-data-redis实现redis消息队列教程
今天来用一个spring-data-redis封装好的redis队列功能。首先要有个redis,没有去官网下载:https://redis.io/基于springboot,省掉一些配置首先在idea创建maven工程redis-message,目录结构如下然后配置pom.xml<?xml version="1.0" encoding="UTF-8"?><...原创 2018-04-20 00:27:21 · 4501 阅读 · 1 评论 -
shiro框架实现基于redis的SessionDao
今天有个项目要从单价改成分布式部署,但是安全框架shiro只有单机存储的SessionDao。于是自己实现了个基于redis存储的SessionDao。配置文件:<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" valu...原创 2017-03-09 15:00:18 · 12355 阅读 · 2 评论 -
httpclient中设置timeout失效问题
今天做一个上传功能,一个200M的文件上传需要9分钟,设置了50秒的timeout一直不生效RequestConfig resConf = RequestConfig.custom().setConnectTimeout(50000).setSocketTimeout(50000).setConnectionRequestTimeout(50000).build(); ...原创 2017-01-17 11:03:59 · 9556 阅读 · 0 评论 -
使用jpa报No query defined for that name错误
今天使用jpa创建本地查询时出现java.lang.IllegalArgumentException: No query defined for that name。。。。。一个很sb的问题,调用entityManager.createNamedQuery方法第一个参数传的是配置好的sql的name。如果直接传sql,调用createNativeQuery方法就好了...原创 2016-12-23 16:52:53 · 7330 阅读 · 2 评论 -
新线程中调用service里update方法阻塞问题
今天在job开了个线程池,传了个sevice对象进去操作结果update操作全部阻塞!查询没问题,日志没输出异常深入spring代码发现,是获取具体的事务处理器这里出了问题解决方式,在开启线程池的方法前加上@Transactional(readOnly=false),这样会注入TransactionManager,可以操作update方法了...原创 2016-08-16 10:05:04 · 1729 阅读 · 0 评论 -
hibernate一对多注解懒加载失效问题
在House类里有关联HouseInfo,设置了懒加载但是页面ajax返回还是有HouseInfos的数据。经排查,问题出在controller这边:@response注解启用jackson框架对House进行解析然后调用了每个属性的get方法,自然houseInfos的懒加载就失效了解决方法,给houseInfos字段加上@JsonIgnore注解忽略json解...原创 2016-04-13 10:16:35 · 1626 阅读 · 0 评论 -
Field xx in xxxx required a bean of type xxxx that could not be found解决方案
原因是因为两个不同class的bean 名字重复了,初始化报错解决方案,将其中一个bean指定下别名:原创 2019-04-26 13:35:44 · 7257 阅读 · 0 评论 -
java逆序单向链表实现
假设有一个单向链表,若要将其逆序ABCDNULL第一次循环ANULLBCD第二次循环ANULLBCD第三次循环ANULLBCD第四次循环ANULLBCDjava代码如下:public class ReverseChain { private static Node chain; static{ Node last=null; f...原创 2019-04-28 10:48:14 · 492 阅读 · 0 评论 -
网关TPS优化(zuul)
gateway要做异步接入(同步转异步),将请求在pre filter发消息到kafka,然后直接响应处理中状态。然后测试TPS才100出头。里面有两个mysql update和一个kafka消息发送。处理时间也就50ms,不至于这么慢发现原因在配置:zuul.debug.request: truezuul.include-debug-header: falsezuul.okhtt...原创 2018-09-14 11:59:29 · 2682 阅读 · 2 评论 -
Deadlock found when trying to get lock(死锁)问题解决
今天压测用户中心的登录接口。发现这个接口在并发下几乎不可用,错误率70%。查看后台日志全是:登录接口出现死锁了。看了下代码,登录中做了更新用户登录时间,插入用户log。查询数据库,发行用户更新和插入log都会lock wait判断可能是在压测同一个用户登录时,某个请求中的事务读取到了另一个请求里事务未提交的数据。从而需要等待之前的事务提交。(幻读)然后将事务隔离机制改成...原创 2018-09-25 14:52:06 · 58556 阅读 · 9 评论 -
hibernate flush问题
当在同一个事务使用sql(比如jdbctemplate或jpa的nativequery)时,需要把之前jpa或者em的操作flush出去,否则sql就会先执行,再执行hql。原创 2019-01-22 10:31:54 · 518 阅读 · 0 评论 -
jpa+hibernate5中lazy无效的解决办法(JpaRepository的save方法源码解析)
今天发现fetch = FetchType.LAZY这个设置无效,在查询和新增都会查一遍。@ManyToOne(optional = false, fetch = FetchType.LAZY)@JoinColumn(name = "loan_req_no", referencedColumnName = "loanReqNo", insertable = false, updatab...原创 2019-01-03 15:18:51 · 2134 阅读 · 0 评论 -
调用toString方法会StackOverflowError的原因和解决方案
今天遇到一个问题,调用一个实体类的toString方法直接就StackOverflowError(栈溢出)了。java.lang.StackOverflowError at sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.in...原创 2018-12-21 15:38:09 · 4105 阅读 · 0 评论 -
h2数据库被锁定解决方案
最近发生过H2数据库被锁定,项目启动不来的问题。排查后发现是H2数据库当被打开时,都会创建一个锁定文件,以指示数据库正在使用的其他进程。如果关闭数据库,或者打开数据库的进程终止,则会删除此锁定文件。而当java程序不是优雅关闭,直接kill掉java进程时,这个锁定文件没被删掉,下次启动项目就会报数据库被锁定。查官网也提供了解决方案,改成socket锁定,不维护锁文件:Strin...原创 2018-12-19 16:09:44 · 5553 阅读 · 0 评论 -
关于java的map顺序的问题
java里面HashMap类的在put的时候会先hash下key算出数组的下标,hash的源码如下:static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }可以看是根据key的...原创 2018-12-19 15:24:41 · 1368 阅读 · 0 评论 -
@PathVariable报错Could not find acceptable representation解决方案
今天用@PathVariable出现了下面问题:Could not find acceptable representation。原因是url参数里参数是文件名,带了.符号。如下图:@ApiOperation(value = "下载", nickname = "download") @RequestMapping(name = "下载", value = "download/...原创 2018-12-17 11:06:02 · 755 阅读 · 0 评论 -
lombok的@Builder导致初始化字段无效解决办法
当用@Builder注解时,类里面的初始化字段就无效,比如下面类中的totalAmt和lineNum字段就会置为null。@Builderpublic class FileExport { private String charset; private String[] fields; private String amtField; private Big...原创 2018-12-07 09:19:44 · 5427 阅读 · 0 评论 -
org.apache.commons.beanutils.ConversionException: No value specified for 'BigDecimal'解决方案
在调用org.apache.commons.beanutils.BeanUtils.populate出现org.apache.commons.beanutils.ConversionException: No value specified for 'BigDecimal'apache有提供BigDecimalConver转换类,出现这个问题一般是值为null的情况解决方案:...原创 2018-12-05 09:31:39 · 7081 阅读 · 2 评论 -
Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available.解决
用 AopContext.currentProxy()函数没配置会照成这个问题可以通过注解:@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)或配置:<aop:aspectj-autoproxy proxy-target-class="true"expose-proxy="true"/>...原创 2018-12-04 16:13:11 · 21527 阅读 · 5 评论 -
使用hibernate审计和jpa实现历史记录表
1.首先在需要记录历史的Entity上加@Audited 对不需要审计的字段可以加@NotAudited2.配置文件中加上自定义审计历史表后缀spring.jpa.properties.org.hibernate.envers.audit_table_suffix=_history然后Entity的任何改动都会在history表记录了...原创 2018-11-30 16:33:38 · 1862 阅读 · 0 评论 -
EncryptionOperationNotPossibleException解决方案
今天换电脑了,以前正常的功能报异常:org.jasypt.exceptions.EncryptionOperationNotPossibleException at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:1051) at org.jasyp...原创 2018-11-28 19:15:20 · 19117 阅读 · 2 评论 -
JpaTransactionManager的初始化和获取事务
初始化JpaTransactionManager时调用栈:org.springframework.orm.jpa.JpaTransactionManager.<init>(JpaTransactionManager.java:118)org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.trans...原创 2018-11-26 13:56:50 · 7524 阅读 · 0 评论 -
java foreach内部实现
今天突然想看看foreach内部实现是怎样的,比如如下代码:for (EmailClientEntity emailClient : emailClientDao.findAll()) {//TODO something...}通过javap看看字节码指令: public void initAllEmailSession(); Code: 0: aload...原创 2018-11-23 11:28:52 · 767 阅读 · 0 评论 -
java mail获取邮件正文方法
之前用java mail获取content都是空,后来发现类型是Multipart,而且里面有好几层正确的获取邮件正文代码如下public static String parseMultipart(Multipart multipart) throws MessagingException, IOException { StringBuffer bodyText = ne...原创 2018-11-23 09:59:33 · 3343 阅读 · 2 评论 -
ids for this class must be manually assigned before calling save()
今天发现一个问题:org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():看了下,我这个实体类没有定义ID自动生成策略,ID没有值照成的。...原创 2018-11-13 14:52:08 · 3392 阅读 · 0 评论 -
java打印调用栈的方法
System.out.println(ExceptionUtils.getStackTrace(new Throwable()))原创 2018-11-12 11:15:17 · 2473 阅读 · 0 评论 -
优雅处理lambda内异常方法
jdk8函数式编程用的很爽但是遇到需要处理异常就很尴尬,需要这么写:List<Integer> integers = Arrays.asList(3, 9, 7, 0, 10, 20);integers.forEach(i -> { try { System.out.println(50 / i); } catch (Arithmeti...原创 2018-12-25 15:30:12 · 1003 阅读 · 1 评论