![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 78
qlql489
你可以被打倒,但不能被打败
展开
-
springboot获取不到客户端ip问题排查
springboot 2.5.7版本中CloudPlatform多了Kubernetes platform的类型识别,导致部署在k8s中添加了RemoteIpValve逻辑原创 2022-11-19 16:36:11 · 2484 阅读 · 1 评论 -
TransmittableThreadLocal的错误用法
前言ThreadLocal能够在单个线程中传递参数,使用可以用在系统参数的传递或者在链路跟踪中传递trace相关信息,需要说明的是单单使用ThreadLocal是不会出现ThreadLocal值线程共享的,但仅仅使用ThreadLocal还不够,如果代码中有使用异步,ThreadLocal就无能为力了,这时可以使用JDK自带的InheritableThreadLocal,这次ThreadLocal变量线程共享,就是因为使用了InheritableThreadLocal。我们的项目使用springboot原创 2022-02-16 22:09:56 · 1623 阅读 · 2 评论 -
AQS中的condition是如何实现的
condition的作用condition的使用场景其实很多,涉及到条件判断的并发场景都可以用到,比如:阻塞队列的ArrayBlockingQueue中做队列满和空的条件判断CyclicBarrier中做阻塞与唤醒所有线程的判断DelayQueue中的阻塞获取队列数据的判断线程池ThreadPoolExecutor中awaitTermination方法的条件判断condition怎么用呢?在使用synchronized时我们可以使用wait()、notify()、notifyAll()方法原创 2022-02-16 22:02:42 · 400 阅读 · 0 评论 -
Skywalking收集与发送链路数据部分源码解析
链路收集大体逻辑这里先不分析skywalking是如何自动收集数据的,而是说一下agent在收集后如何存储与发送给collector,这部分的架构关系到性能开销与对服务的影响大体逻辑如下:agent内部缓存维护了一个生产消费者,收集数据时将生产的数据按分区放到缓存中,消费者用多线程消费数据,将缓存的数据封装成grpc对象发送给collector链路数据接收与发送数据的接收与发送主要在类TraceSegmentServiceClient中处理其中的一个重要属性是DataCarrier,它来实现的生原创 2022-02-16 21:54:50 · 491 阅读 · 0 评论 -
SimpleDateFormat与DecimalFormat的并发安全
java中并发安全需要注意的类原创 2022-02-16 21:50:11 · 2557 阅读 · 0 评论 -
AQS原理解析(二、共享模式)
上一篇介绍了AQS独占模式的原理,参考链接AQS原理解析(一),这篇介绍一下AQS的共享模式如何实现的。共享模式可以做什么java concurrent包中的很多阻塞类可以一次控制多个线程的挂起和唤醒,比如Semaphore、CountDownLatch,他们内部都继承了AQS并实现了tryAcquireShared,tryReleaseShared方法共享模式逻辑线程调用acquire...原创 2018-11-18 19:35:09 · 291 阅读 · 0 评论 -
java多线程编程的核心——AQS原理解析
AQS是什么java concurrent包中有很多阻塞类如:ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、Synchronous、FutureTask等,他们的底层都是根据aqs构建的,它可以说是java多线程编程最底层核心的抽象类。既然这么重要,我们就来看看它底层原理到底是什么。aqs全称AbstractQueu...原创 2018-10-31 10:32:18 · 274 阅读 · 0 评论 -
浅析乐观锁、悲观锁与CAS
乐观锁与悲观锁处理多线程并发访问最常用的就是加锁,锁又分成乐观锁和悲观锁。悲观锁在多线程访问共享资源时,同时只允许一个线程独享此资源,其他线程都被悲观锁阻塞,只有当前拥有锁的线程释放锁,其他线程才能被唤起竞争这个资源,每个线程在获取资源前都要悲观的检查该资源是否已经被占用,所以悲观锁的开销是巨大的,但安全性高,用synchronized关键字或者ReentrantLock都是悲观锁。乐观锁...原创 2018-10-10 11:05:16 · 972 阅读 · 0 评论 -
一次性搞清楚unicode、codepoint、代码点、UTF
最近在处理字符过滤,重新研究了下字符、unicode和代码点的相关知识,首先要说一下编码的基本知识unicodeunicodeunicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。计算机采用八比特一个字节,一个字节最大整数是255,还要表示中文一个字也是不够的,至少需要两个字节,为了统一所有的文字编码,unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,...原创 2018-09-20 07:54:18 · 22586 阅读 · 3 评论 -
java annotation+反射的应用记录
使用java 的annotation和反射的小例子,记录下来以供参考,实现的功能是 配置页面可以动态选择一个实现检核接口的类,保存输入的参数,在真正检核时传入保存的参数配置页面如下:第一行选择了检核1 有三个参数需要输入,第二行可以看到下拉选单,内容是根据annotation标注的class生成的下拉选单是根据annotation标注的class生成的,原创 2015-07-21 15:09:40 · 464 阅读 · 0 评论 -
HashMap原理分析
HashMap的原理在面试时经常问到,也有很多人分析过,自己也写一写,仅供参考,部分内容参考别人的文章一、HashMap的数据结构数组和链表是最基本的数据结构,但这两个基本是两个极端1、数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;2、链表链表存储区间离散,占用内存比较原创 2015-07-21 15:31:02 · 265 阅读 · 0 评论