自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 问答 (1)
  • 收藏
  • 关注

原创 springboot获取不到客户端ip问题排查

springboot 2.5.7版本中CloudPlatform多了Kubernetes platform的类型识别,导致部署在k8s中添加了RemoteIpValve逻辑

2022-11-19 16:36:11 2196 1

原创 TransmittableThreadLocal的错误用法

前言ThreadLocal能够在单个线程中传递参数,使用可以用在系统参数的传递或者在链路跟踪中传递trace相关信息,需要说明的是单单使用ThreadLocal是不会出现ThreadLocal值线程共享的,但仅仅使用ThreadLocal还不够,如果代码中有使用异步,ThreadLocal就无能为力了,这时可以使用JDK自带的InheritableThreadLocal,这次ThreadLocal变量线程共享,就是因为使用了InheritableThreadLocal。我们的项目使用springboot

2022-02-16 22:09:56 1492 2

原创 AQS中的condition是如何实现的

condition的作用condition的使用场景其实很多,涉及到条件判断的并发场景都可以用到,比如:阻塞队列的ArrayBlockingQueue中做队列满和空的条件判断CyclicBarrier中做阻塞与唤醒所有线程的判断DelayQueue中的阻塞获取队列数据的判断线程池ThreadPoolExecutor中awaitTermination方法的条件判断condition怎么用呢?在使用synchronized时我们可以使用wait()、notify()、notifyAll()方法

2022-02-16 22:02:42 385

原创 Skywalking收集与发送链路数据部分源码解析

链路收集大体逻辑这里先不分析skywalking是如何自动收集数据的,而是说一下agent在收集后如何存储与发送给collector,这部分的架构关系到性能开销与对服务的影响大体逻辑如下:agent内部缓存维护了一个生产消费者,收集数据时将生产的数据按分区放到缓存中,消费者用多线程消费数据,将缓存的数据封装成grpc对象发送给collector链路数据接收与发送数据的接收与发送主要在类TraceSegmentServiceClient中处理其中的一个重要属性是DataCarrier,它来实现的生

2022-02-16 21:54:50 470

原创 SimpleDateFormat与DecimalFormat的并发安全

java中并发安全需要注意的类

2022-02-16 21:50:11 2332

原创 GitBook使用学习

这里写自定义目录标题网页端与客户端网页端客户端命令行创建GitBook初始化图书导入GitBook客户端本地部署看效果浮动目录导航打赏插件代码复制插件参考:过年期间正好时间比较多,学习一下GItBook的使用输出是一项很重要的能力,基于微信或简书发表文章已经成为很多人的选择,而对于系统一些的知识体系或专题就不适用了在其他平台的写作内容都存在别人的服务器上,为了避免丢失自己要再保存一份,使用GitBook在本地和云端都有备份,还可以看到自己的编辑历史因此,如果你想输出自己的知识专题,或者自己出一本书,

2022-02-16 21:09:47 2138

原创 AQS原理解析(二、共享模式)

上一篇介绍了AQS独占模式的原理,参考链接AQS原理解析(一),这篇介绍一下AQS的共享模式如何实现的。共享模式可以做什么java concurrent包中的很多阻塞类可以一次控制多个线程的挂起和唤醒,比如Semaphore、CountDownLatch,他们内部都继承了AQS并实现了tryAcquireShared,tryReleaseShared方法共享模式逻辑线程调用acquire...

2018-11-18 19:35:09 280

原创 java多线程编程的核心——AQS原理解析

AQS是什么java concurrent包中有很多阻塞类如:ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、Synchronous、FutureTask等,他们的底层都是根据aqs构建的,它可以说是java多线程编程最底层核心的抽象类。既然这么重要,我们就来看看它底层原理到底是什么。aqs全称AbstractQueu...

2018-10-31 10:32:18 243

原创 浅析乐观锁、悲观锁与CAS

乐观锁与悲观锁处理多线程并发访问最常用的就是加锁,锁又分成乐观锁和悲观锁。悲观锁在多线程访问共享资源时,同时只允许一个线程独享此资源,其他线程都被悲观锁阻塞,只有当前拥有锁的线程释放锁,其他线程才能被唤起竞争这个资源,每个线程在获取资源前都要悲观的检查该资源是否已经被占用,所以悲观锁的开销是巨大的,但安全性高,用synchronized关键字或者ReentrantLock都是悲观锁。乐观锁...

2018-10-10 11:05:16 956

原创 一次性搞清楚unicode、codepoint、代码点、UTF

最近在处理字符过滤,重新研究了下字符、unicode和代码点的相关知识,首先要说一下编码的基本知识unicodeunicodeunicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。计算机采用八比特一个字节,一个字节最大整数是255,还要表示中文一个字也是不够的,至少需要两个字节,为了统一所有的文字编码,unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,...

2018-09-20 07:54:18 21950 3

原创 HashMap原理分析

HashMap的原理在面试时经常问到,也有很多人分析过,自己也写一写,仅供参考,部分内容参考别人的文章一、HashMap的数据结构数组和链表是最基本的数据结构,但这两个基本是两个极端1、数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;2、链表链表存储区间离散,占用内存比较

2015-07-21 15:31:02 259

原创 java annotation+反射的应用记录

使用java 的annotation和反射的小例子,记录下来以供参考,实现的功能是 配置页面可以动态选择一个实现检核接口的类,保存输入的参数,在真正检核时传入保存的参数配置页面如下:第一行选择了检核1 有三个参数需要输入,第二行可以看到下拉选单,内容是根据annotation标注的class生成的下拉选单是根据annotation标注的class生成的,

2015-07-21 15:09:40 448

转载 Java编程中“为了性能”尽量要做到的一些地方

最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单

2014-03-05 15:46:53 367

原创 开篇记录

在java行业工作2年了,发现要学习的东西真不少,现在觉得有必要记录一下学习心得,工作中的问题,以及分享一些牛人的文章,顺便写写随笔

2014-03-05 15:44:18 339

空空如也

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

TA关注的人

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