自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Slf4j MDC使用transmittable-thread-local解决多线程日志跟踪

使用Slf4j的MDC方案可以在日志中打印TraceID来实现链路追踪,可以很好的帮助定位线上问题,但是传统的MDC方案不能处理线程池或者其他的异步场景,为此研究下其他的解决方案。

2022-10-11 23:31:45 3035 5

原创 Quarkus系列(1)--为什么要使用Quarkus

Java Native前言Java的优势Java的缺陷云原生时代一个Java应用容器化Hotspot虚拟机GraalVMQuarkus参考资料前言Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于 Web 的内容和企业软件的全球标准。Java 在全球各地有超过 900 万的开发人员,使您能够高效地开发、部署和使用精彩的应用程序和服务。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!97% 的企业桌面运行 Jav

2021-05-13 23:58:24 1177

原创 springboot-native编译实践

springboot-native编译实践前言编译JDK9之后获取纳秒的问题参考资料前言在云原生时代,java似乎显得很臃肿,动辄几百兆的JDK和较慢的启动速度限制了在云上的拓展能力,而且java流行的重要特性“一次编写,到处运行”也在随着容器化的技术而变得不那么重要;很明显java也随之与时俱进,积极朝着云原生的方向改进。比如JDK16支持musl libc可以在AlpineLinux安装,减小镜像的体积。最重要的更新当属于GraalVM,可以直接将java代码编译成本地的机器码,运行时不需要JAVA

2021-04-23 21:49:02 3723 1

原创 Java16支持alpine体验

Java16支持alpine体验前言体验总结参考资料前言最近Java16发布了,其中一个很重要的特性就是可以支持在AlpineLinux 中运行了,由于AlpineLinux 采用了musl libc和busybox以减小系统的体积和运行时资源消耗,得以使AlpineLinux的docker镜像非常小,只有5-6M,这在云原生环境下非常有优势。然而jdk16之前的版本都是运行在glibc上的,要想在alpine上运行,一般都给alpine装上gclib,这样增加了体积,大概12M左右(https://h

2021-03-28 23:58:34 697

原创 Java中的纳秒

Java中的纳秒前言JDK8获取纳秒的问题JDK9之后获取纳秒的问题参考资料前言最近在使用InfluxDB保存系统的操作日志,如果在插入的时候不指定time字段,influxDB会默认设置time,但一般来说,数据经过多方周转如果采用默认的插入时间,对业务来说误差较高。我们的日志是发送给kafka,然后消费者订阅kafka消费数据再保存到influxDB,数据会有延迟。因此会在数据产生的时候写入time字段值,对时间的精度要求比较高,这样才能有效防止数据丢失。Java中时间精度最高的应该是纳秒了,所以

2020-12-09 21:09:43 4899

原创 消灭电脑的弹窗广告和浏览器广告

消灭电脑的弹窗广告和浏览器广告前言1. 火绒2. Edge Chromium & Chrome插件2.1 uBlock Origin2.2 tampermonkey最后总结前言近些年,广告的形式越来越丰富,几乎无孔不入。电脑的弹窗广告,浏览网页有推荐广告,搜索引擎的搜索广告,浏览视频的片头广告等等,特别是电脑的弹窗广告最烦人,现在就推荐一些软件和浏览器插件消灭这些广告,让个人电脑更加的清爽。1. 火绒火绒确实是国内的一股清流,没有广告、弹窗等骚扰用户的行为,界面清爽干净整洁。而且火绒可以拦

2020-10-18 21:22:19 1411 2

原创 使用Durid连接池出现wait_timeout错误分析

使用Durid连接池出现wait_timeout错误分析前言Durid连接池核心的配置总结参考资料前言最近其他团队使用hive的jdbcTemplate操作的时候出现了wait_timeout错误,经过定位是因为mysql数据库的wait_timeout设置的时间为1800秒(默认为28800秒即8个小时)。hive的元数据是存在mysql当中的,hiveserver默认的连接池是bonecp(新版本改成了HikariCP),bonecp配置不合理导致的,由此也研究下项目中用到的Durid连接池。D

2020-10-08 23:05:27 1971

原创 win10解决快捷键冲突

win10解决快捷键冲突前言具体操作参考资料前言最近Idea的快捷键Ctrl + Alt + 左键一直无效,应该是和系统的其他快捷键冲突,在网上找了很多软件都没有效果,推荐的比较多的是pchunter和windows hotkey explorer都很久没有更新了,也不支持win10。后来在知乎上发现了一个软件OpenArk可以检测删除快捷键,而且软件很小,很轻量。具体操作打开官方地址:https://github.com/BlackINT3/OpenArk下载最新的release包。下载到本地之

2020-09-26 22:09:27 3137 3

原创 tomcat的Session和Cookie

从tomcat的session周期分析常用的缓存失效机制前言1. session和cookie的创建2. Cookie被解析的过程3. 通过URL传参jsessionid4. request.getSession5. Guava中的LocalCache的过期机制最后总结参考资料前言http本身是无状态的协议,session和cookie恰好补充了这个状态。通过了解tomact的seesion和cookie的原理,可以在此基础上搞明白session共享和SSO单点。1. session和cookie的

2020-06-08 19:49:20 855

原创 tomcat的Session周期和常用的缓存失效机制

从tomcat的session周期分析常用的缓存失效机制前言1. tomcat的启动方法2. ManagerBase类3. ContainerBackgroundProcessorMonitor和ContainerBackgroundProcessor4. LinkedHashMap过期机制5. Guava中的LocalCache的过期机制最后总结参考资料前言session的失效机制实际上是一种LRU过期淘汰机制,在缓存系统设计中有很广泛的应用,比如LinkedHashMap的失效机制,redis的值

2020-06-06 00:12:39 1192

原创 伪共享(false sharing)和缓存填充行

伪共享(false sharing)和缓存填充行前言1. 伪共享的含义2. CPU缓存3. 缓存行4. 如何避免“伪共享”5. Java8中用到sun.misc.Contended的地方最后总结参考资料前言最近在看Disruptor源码的时候,底层RingBuffer的实现涉及到了“伪共享”概念,并用缓存填充行去解决以提高性能。搜索了下,其中Jdk也有实现,如Striped64类当中的Cell,jdk8以上用sun.misc.Contended注解解决操作系统的不同差异(在appclassloader

2020-05-13 23:53:48 654

原创 mysql优化常用备忘录

mysql优化知识备忘录1. 查询慢2. SQL执行顺序3. 索引3. 性能分析最后总结参考资料记录整理常用的mysql知识,供学习和工作备注使用。1. 查询慢主要表现在mysql查询慢,执行时间长,等待时间长。查询语句写的烂,多级子查询嵌套。索引失效,优化器没有执行索引,高水位。关联查询太多join(设计缺陷,业务调整)。服务器调优及各个参数设置(缓冲、线程数等)。数据库在刷新...

2020-05-05 23:08:03 383

原创 mysql可重复读和幻读的理解

mysql可重复读和幻读的区别可重复读和幻读的定义最后总结参考资料很多教程和书籍对mysql的可重复读和幻读的解释都比较含糊,本文结合原理和其他的考证,深入分析下。这里讨论的引擎是常用的InnoDB。可重复读和幻读的定义先看下《高性能MySQL(第三版)》对隔离级别的描述。这里对幻读的描述为所谓幻读,指的是当某个事物在读取某个范围内的记录时,另外一个事物又在该范围内插入了新的记...

2020-04-20 00:18:17 1493

原创 NIO和Netty的思考和理解(一)

一直以来对于java IO和NIO的阻塞和非阻塞的理解片面,这段时间深入学习下,在此基础之上,拓展下Netty的架构...

2020-04-11 14:01:17 391 1

原创 秒杀超卖问题方案

秒杀超卖问题前言1. 每次都自减2. 先判断再自减最后总结前言关于秒杀的设计,网上的讨论很多,良莠不齐,但大多会有这几个共识。将流量挡在前端,可以用nginx+redis+lua限流库存提前预热到redis当中,在redis中减库存减库存之后,发送消息到队列,后续动作消费队列,减轻对数据库的压力为解决超卖问题,扣库存的操作用redis分布式锁,升级版就是将单个redis库存分成多...

2020-03-25 20:34:48 581 1

原创 对Hystrix熔断器的理解

Hystrix熔断器的理解Hystrix熔断器的理解1.HystrixCommandAspect 入口解析2.HystrixInvokable3.AbstractCommand.toObservable4.Observable的defer/just/lift5.Hystrix熔断的原理流程图Hystrix熔断器的理解最近想要做一个滑动窗口的统计失败率触发告警,想用Hystrix来扩展下,发现H...

2019-09-01 12:08:23 731

原创 对List进行非固定下标的随机平均分组

对List进行非固定下标的平均分组前提源码前提项目中用到了一个调度算法,会对List中的任务平均分组到不同的集群中,之前的思路是平均取余数,然后将余数加到最后一个分片中,这样资源有很大的浪费。因为最后的余数可以加到之前的所有的分片当中,而不必是最后一个。网上有一个流传度交广的算法是将余数分配到了前几个切片中,这样在调度比较频繁的时候,前几个人集群负载会较大,造成负载不均。现在的改进是将余数随机...

2019-08-12 14:01:55 347

原创 调用链SkyWalking和APM工具选型思考

调用链和APM工具选型思考前提选型1. 集成方式的考虑2. 存储方式修改为Mysql3. 告警规则配置最后总结前提项目用的是SpringCloud全家桶,所以刚开始在调研调用链工具的时候,选择了zipkin,SpringSleuth内部就集成了zipkin,在集中到项目中使用了一段时间之后,发现功能太弱了,如apm、告警等,如果要增加功能,需要自己去定制。后面我们又增加了admin来监控微服务...

2019-07-27 17:39:59 1040

原创 使用ShardingSphere进行分表的一些心得

使用ShardingSphere进行分表的一些心得ShardingSphere简介使用心得1. 不支持一个表多个策略2. 复杂的SQL很可能会解析错误3. 对集中化配置的分布式主键配置不友好4. 项目中用PageHelper分页插件可能会有异常最后总结如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也...

2019-07-24 22:28:03 14781 7

空空如也

空空如也

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

TA关注的人

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