11 张哈希

尚未进行身份认证

暂无相关简介

等级
TA的排名 1k+

CommpetableFuture使用anyOf过程中的一些优化思考

CompetableFuture的上一篇我们讲述了如何将CompletableFuture与Spring Sleuth结合起来。这篇我们继续优化CompletableFuture。CompletableFuture的allOf首先我们看看allOf的定义:public static CompletableFuture<Void> allOf(CompletableFuture&...

2019-11-18 20:21:37

CompletableFuture与Spring的Sleuth结合工具类

本文基于JDK11andJDK12按照上一篇内容的分析,我们想在异步代码保留原有的spanId和traceId需要在异步调用前,使用:Spanspan=tracer.currentSpan();try(Tracer.SpanInScopecleared=tracer.withSpanInScope(span)){//执行异步代码}每次使用Compl...

2019-11-13 17:22:41

Spring WebFlux运用中的思考与对比

本文基于Spring Cloud Finchley SR4本文通过几个问题,解析下Spring WebFlux用法最佳实践,并与另一框架Vertx作对比1. 是否一定要用默认的Web容器,用自己的Web容器是否可以,同时是否可以有web和webflux是可以的,这样的依赖是可行的(容器用tomcat和undertow或者其他都可以,这里使用undertow):2. 怎样实现真正的异步背...

2019-11-12 17:55:48

一次由于OOM导致锁没有释放的定位流程(结合Arthas)

本文基于Spring Cloud Fincheley SR4, Arthas 3.1.4最近发现业务上返回慢,并且feign的fallback被触发了。查看日志,发现触发了重试,是什么触发的重试呢,通过异常堆栈发现:Caused by: feign.RetryableException: connect timed out executing GET http://test-service...

2019-10-30 20:34:27

JEP解读与尝鲜系列1 - Java Valhalla与Java Inline class

涉及到的JEP:Project ValhallaJEP 169: Value ObjectsJEP 218: Generics over Primitive Types这些特性将在JDK14实现Valhalla项目背景最主要的一点就是,让Java适应现代硬件:在Java语言发布之初,一次内存访问和一次数字计算的消耗时间是差不多的,但是现在,一次内存访问耗时大概是一次数值计算的2...

2019-10-22 19:17:49

从JDK8升级到JDK11,看这篇就足够了

原文地址:https://blog.codefx.org/java/java-11-migration-guide/。 在原文的基础上,增加了一些我遇到的具体的坑还有在特定场景下的解决方案,供大家参考一些背景在背景知识,我们会讨论一些关于新的JDK Release周期,OpenJDK特性归一化,LTS(Long-term support长期支持版本)的事情。1. 新的发布周期这个就可以...

2019-10-17 15:45:10

OpenJDK11与Spring Cloud Finchley的不兼容问题与解决

本文的环境:OpenJDK11.0.4,SpringCloudfinchleySR4,SpringBoot2.0.3最近遇到了一个问题,在feign调用的时候,时常会出现这样一个奇怪的错误:2019-10-0708:00:00.620ERROR[xxx,e1ba4c7540954aa3,871b99c4576d42e3][24][XNIO-2task-286][xx...

2019-10-07 17:18:11

Spring Boot 注解收集 - @SpringBootApplication

从哪个版本引入?从1.2.0这个版本开始引入,在之前的版本,一般的应用都会用到如下两个个类来启动SpringBoot应用:@EnableAutoConfiguration: 启动自动配置,此注释自动载入应用程序所需的所有Bean。包括从classpath的spring.factories文件加载configuration,并初始化bean的操作@ComponentScan:从配置路径中,扫...

2019-09-16 20:04:51

OpenJDK8升级到OpenJDK11需要注意的修改与异常

目前,JDK两个长期版本是8和11,由于大部分项目使用的还是8,所以从8升级到11会遇到一些困难。本篇文章会基于实践遇到的问题,分类总结可能1.Java模块化从Java9开始,由于引入了JPMS(https://openjdk.java.net/projects/jigsaw/spec/),开始更精细化的包管理和模块复用,导致很多JDK默认加载的包被移除了。其中我们可能会碰到的例如:...

2019-09-11 12:26:23

从OpenJDK8到OpenJDK11 - StackWalker类

本文基于OpenJDK 11之前升级了JDK到OpenJDK11,把遇到的问题以及解决方案列一下。每篇文章会以提出问题,思路说明,解决问题的思路去行文。这篇文章是关于堆栈信息获取的。遇到的问题 - 调用堆栈获取之前有做调用堆栈监控上报,某些仅采集调用类,某些需要采集调用方法,总体来说:在Java8中,我们可以这样去获取调用堆栈:通过Reflection类:private st...

2019-09-10 19:57:14

JDK核心JAVA源码解析(7)- 集合相关(1) - LinkedList

想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。本篇文章针对JAVA中集合类LinkedList进行分析,通过代码解释Java中的Fail-fast设计思想,以及LinkedList底层实现和与ArrayList对比下的就业场景。本文会...

2019-09-04 18:33:56

Java8之后的业务取值避免空指针的一种解法

写业务代码的时候,通常会遇到数据库POJO对象转换为前端需要的VO对象,这时经常会遇到烦人的空指针问题,Java 8之前,我们可能这么写:对于对象field复制风格:a.setCreateTime(b.getCreateTime().getTime());a.setAmount(b.getPayed()+b.getVoucher());对于装饰器风格:public Long g...

2019-09-03 11:44:28

Java Map运用的思考与Funtional Interface联想

最近看到了一篇好文章:Map best practices - http://blog.tremblay.pro/2019/08/map.html虽然内容精简,但是思路确实很赞。假设我们有一个Map<String,List<String>>的Map,我们想实现分组,一般思路是先看这个key是否存在,不存在的话,就新建一个List并放入,存在就返回这个List。一...

2019-09-02 17:24:03

Java获取HttpServletRequest真实的调用ip

有时候我们需要获取Http请求的源IP,但由于有着各种代理,与反向代理,还有代理请求头标准的缺失,导致我们想拿到真正的ip变得更加困难。这篇文章来总结下一个目前可行的比较全面的通用方法。首先,真实调用的ip,应该不是内网ip,并且考虑到客户端多样性,我们从通用的Header出发,并也考虑各种常见客户端的自定义Header。验证IP有效有效ip范围是,1.0.0.0~255.255.255.2...

2019-08-29 18:29:21

Spring RequestMapping检测路径匹配核心类AntPathMatcher

本文基于Spring 5.0+项目某些页面是通过后台映射的,匹配映射路径时,有那种路径参数匹配。其中一个定义好的路径匹配是:/{corporationName}_{vendorName}/{shopName}_with_{retailer_name}?g={goodsId}当时没有仔细看,其实{goodsId}也应该作为路径参数,可能是前端想要拿到这个id,放在url参数的位置比较容易...

2019-08-28 10:48:14

MySQL原理 - InnoDB表的限制

本文基于MySQL 5.7目前OLTP业务的表如果是使用MySQL一般都会使用InnoDB引擎,这也是默认的表引擎。那么这种引擎有什么限制呢?根据官方文档总结下:参考:https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html在MySQL5.6.9以后的版本,一个表的最大列个数(包含虚拟列,虚拟列是MySQL5....

2019-08-19 20:02:11

Spring Boot 2.0 + FastJson 1.2.+作为JSON序列化

SpringBoot配置FastJson的时候,报错:java.lang.IllegalArgumentException: Content-Type cannot contain wildcard type '*' at org.springframework.util.Assert.isTrue(Assert.java:116) ~[spring-core-5.0.13.RELEASE.j...

2019-06-14 10:12:07

Spring cloud实现FeignClient指定Zone调用

本文基于SpringCloudFincheleySR3背景介绍目前项目多个区域多个集群,这些集群共用同一个Eureka集群。通过设置eureka.instance.metadata-map.zone设置不同实例所属的zone,zone之间不互相调用,只有zone内部调用(其实这里用zone做了集群隔离,实际上集群肯定是跨可用区的,这里的eureka中的zone在我们项目里面并不是可用...

2019-06-13 15:52:05

Java9之后的模块化烦恼解决(由RocketMQ升级OpenJDK11想到的)

本文基于OpenJDK11最近从OpenJDK8升级到了OpenJDK11,系统业务MQ用的RocketMQ,升级RocketMQ过程中,在已修改好JVM参数的情况下(参考我另一篇文章),遇到如下异常:java.lang.IllegalStateException: java.lang.reflect.InaccessibleObjectException: Unable to make ...

2019-05-24 11:58:59

ElasticSearch常见问题解决 - 1. 启动与客户端依赖

本文基于ElasticSearch7.0.1修改配置ip为外部ip时,相关错误maxfiledescriptors[4096]forelasticsearchprocessistoolow,increasetoatleast[65536]修改最大打开进程数,切换到root权限用户,修改/etc/security/limits.conf,给启动elastic...

2019-05-05 21:08:09

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 博客之星
    博客之星
    授予通过"CSDN博客之星评选"中脱颖而出的十大博客之星称号的用户。
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。