11 张哈希

尚未进行身份认证

暂无相关简介

等级
TA的排名 1k+

Java中对于位运算的优化以及运用与思考

引言随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码。之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候考虑内存的限制优先于处理器),所以很多时候,利用位运算来节约空间或者提高性能,那么这些优秀的思想,放到目前的Java中,是否还有必要这么做呢?我们逐一思考与验证下(其实这也是一个关于Premature...

2020-01-08 19:02:10

修改Linux SSH的端口与SELinux究竟是什么

最近,发现修改ssh端口后,无法启动ssh服务,发现是SELinux限制了这个,此篇文章简单记录下。SELinux简介SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。SELinux 有三种工作模式,分别是:enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。permissive:宽容模式。违反 SELinux...

2019-12-07 10:59:46

SparkML(1)环境构建

工欲善其事必先利其器,我们先搭建好我们的开发环境。安装配置好Docker首先,我们需要Docker。毕竟我们的重点并不是在安装配置spark上面,怎么简便,怎么做是最好的啦。不过为了适用尽量多的场景,我们会配置一个单机集群,同时配置Pycharm远程调试。安装Docker的步骤,网上已经有很多了,我们这里贴一个基于CentOS 8系统的安装方式(用户最好是root,省的权限麻烦):首先配置...

2019-12-06 12:17:31

Spring Cloud Hystrix ThreadPool的bug

BUG背景JDK: 11.0.4Spring Cloud Finchley.SR3相关配置:#开启hystrixfeign.hystrix.enabled=true#关闭断路器hystrix.command.default.circuitBreaker.enabled=false#禁用hystrix远程调用超时时间hystrix.command.default.executi...

2019-11-28 19:31:33

由一次不断GC并耗费过长的时间所想到的工具 - jvmkill与jvmquake

最近发现线上的某个查询微服务,发生了一个奇怪的问题,GC次数突然变多,GC的时间耗费也变多。并不是一直有这个问题,而是每隔一段时间就会报出来的。查看jstat -gcutils 10000:有类似于如下的:S0 S1 E O M CCS YGC YGCT FGC FGCT GCT0.00 100.00 100.0...

2019-11-25 17:35:30

结合CompletableFuture与Spring的Sleuth结合工具类与allOf以及anyOf

系列目录:Spring WebFlux运用中的思考与对比CompletableFuture与Spring的Sleuth结合工具类CommpetableFuture使用anyOf过程中的一些优化思考结合CompletableFuture与Spring的Sleuth结合工具类与allOf以及anyOf之前实现的CompletableFutureWithSpan,不能直接使用anyOf或者...

2019-11-22 17:06:38

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结合工具类

本文基于JDK 11 and JDK 12按照上一篇内容的分析,我们想在异步代码保留原有的spanId和traceId需要在异步调用前,使用:Span span = tracer.currentSpan();try (Tracer.SpanInScope cleared = 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的不兼容问题与解决

本文的环境:OpenJDK 11.0.4,Spring Cloud finchley SR4,Spring Boot 2.0.3最近遇到了一个问题,在feign调用的时候,时常会出现这样一个奇怪的错误:2019-10-07 08:00:00.620 ERROR [xxx,e1ba4c7540954aa3,871b99c4576d42e3] [24] [XNIO-2 task-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模块化从Java 9开始,由于引入了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

查看更多

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