java
文章平均质量分 80
阿拉斯加大闸蟹
JDcloud;ByteDance;XueQiu;YiChe;CATARC
展开
-
并发设计演进和在多语言设计模式里的思路特性
文章目录CSP简述CSP form wiki并发问题并发方案并发实现之-actor模型并发实现之-Goroutineactor模型与goroutine对照Goroutine实现实现简述Goroutine调度机制Goroutine优缺点实操ChannelGolang syncContextRace题外话Rust非均匀内存访问调度器(Non-uniform memory access,NUMA架构)CSP简述CSP form wikiCommunicating sequential processes翻原创 2022-04-27 14:48:19 · 7836 阅读 · 0 评论 -
关于RPC框架封装时ThreadPool的选型和设计
Tomcat的: Dubbo的: grpc官方默认的: xueqiu-spring的:Tomcat的:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html name 描述 maxThreads: 最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断 The maximum number of request proce原创 2021-06-23 17:35:31 · 8145 阅读 · 0 评论 -
Gson反序列化的adapter的cache机制在非单例下引起的性能问题
一、问题现象2021-04-07 18:42发现总体的qps没有任何变化的情况下,包括mysql的qps没有任何增加,接口总体的p99相较于redis版本升级前增加了30~50ms(与预期不符,预期是redis版本切换之后P99无影响)二、排查过程1.排查GCyoung gc也有相应变化,p99在升高时期,young gc的次数变多,由点图换成了线图。但同时对比了早上开盘期间9:30~10:30之间的,也是出现的有yong gc频繁,但是P99没有像redis版本...原创 2021-04-12 18:22:43 · 4561 阅读 · 0 评论 -
spring redis引入多个StringTemplate bean报错
问题背景:项目里最初有一个RedisTemplate. 然后新增了个集群 我创建连接池和template,结果。旧redis的数据全跑到新集群来了我当时debug了下,发现俩Template里 连接池,连的是一个ip但是。你有一个 配置了 Primary,假如3个集群的话 怎么搞两个【非】primary的 不还是覆盖?解决过程:、测试通过 吃完饭回来一看,得把spring自动注入的那个给注销掉原因:spring里面我这个使用的是lettuce,他的内部类Le.原创 2021-03-25 15:21:03 · 4165 阅读 · 0 评论 -
lettuce偶现Connection reset by peer异常排查
问题描述:服务的异常日志中偶现查询超时1min服务异常日志偶现连接断开排查过程:问:这个明显网络超时,按照lettuce的默认超时配置,我这边看完lettuce的配置源码逻辑告诉你另外需要以下几个信息:1.是不是只有这一台服务节点有异常,所有的服务节点都有异常报错吗?2.出现异常时的redis命令和参数,发生时所连接的redis node的ip3.redis服务端监控没有异常(例如:网络,磁盘,慢日志)答:1.目前2个都有出现2.。。。3...原创 2020-12-24 10:28:07 · 9656 阅读 · 3 评论 -
分布式限速器
限流算法漏桶算法漏桶算法思路很简单,水(也就是请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。 示意图(来源网络)如下:令牌桶算法令牌桶算法和漏桶算法效果一样但方向相反的算法,更加容易理解。随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入令牌(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了。新请求来临时,会各自拿走一个令牌,如果没有令牌可拿了就阻塞原创 2020-10-20 14:50:59 · 2762 阅读 · 0 评论 -
Broken pipe (CLOSE_WAIT) 问题排查
问题:|ERROR|c.x.s.c.s.AccessPermissionFilter|b2a299e5a8cbe429.b2a299e5a8cbe429<:b2a299e5a8cbe429||Unexpected error occurred in AccessPermissionFilter: com.xueqiu.snowball.common.servlet.ExceptionWrapper: org.apache.catalina.connector.ClientAbortExceptio原创 2020-08-10 13:48:16 · 4922 阅读 · 1 评论 -
redis线上动态增加密码认证
首先这个需求要是做得话,大部分情况下如果仅仅是把redis当做cache的话不会有很多的问题,然后如果是当做存储使用的话,其中的问题还不少,首先从网上找到了这两篇内容:1.基于proxy代理实现:https://www.dazhuanlan.com/2020/01/20/5e253da29ab4f/2.修改jedis源代码:https://blog.csdn.net/TVwR8OfV0P/article/details/80155363而我们使用的是lettuce,基于netty编写的,如果要是原创 2020-07-20 10:40:39 · 2121 阅读 · 0 评论 -
parallelSteam高性能:并行计算惹的祸
Java 中提供了ForkJoinPool 并发流式计算框架,推荐系统中也大量使用 parallelSteam 进行业务处理,提高系统处理能力,如:批量获取StatusForkJoinPool相比之前Java6中的线程池来说使用更加方便(流式计算),Fork-Join的模式也比ThreadPoolExecutor中的BlockingQueue更友好。那么是不是所有的stream调用都应该使用parallelSteam呢?1、并发消耗更多的资源https://stackoverflo.原创 2020-05-14 16:36:52 · 3508 阅读 · 0 评论 -
lettuce 监控日志
代码地址:https://github.com/singgel/lettuce-infra/问题:线上的redis日志不是很全面,例如:1.无法得知数据返回的remote address2.没有主动记录slowlog慢查询日志3.没有记录connection连接状态4.没有集群的网络拓扑分析:按照官方提供的EventBus总线,异步事件流提供了metric指...原创 2020-04-21 10:42:18 · 3221 阅读 · 0 评论 -
lettuce MGET性能分析
现象:根据服务redis响应p99不符合理想,根据redis server端的监控指标发现在系统调用期间出现的超100ms的查询不是由于slowlog导致分析:1.查看两台机器之间的延时,一个RT延时不超过0.15ms2.查看redis server,在server端设置5ms的延时监控,目前为止也是没有采集到的对应延时时间大的时候的指标config set lat...原创 2020-04-17 16:30:05 · 3889 阅读 · 0 评论 -
httpclient哪家好?
目录基本的配置可选种类可选使用方式我球docs直接粘过来,我就不用写两份了,哈哈哈https://github.com/singgel基本的配置连接池 因为目前 HTTP 1.1 不支持多路复用,只有 HTTP Pipeline 这用半复用的模型支持。所以,在需要频繁发送消息的场景中,连接池使必须支持的,以减少频繁建立连接所带来的不必要的性能损耗。 超时时间设...原创 2019-10-23 16:05:52 · 1282 阅读 · 0 评论 -
深入研究枚举类型
枚举类型入门代码:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/enumClass您已经知道,Java 代码的两个基本的构造块是 类和 接口。现在 Tiger 又引入了 枚举,一般简称它为enum。这个新类型允许您表示特...原创 2018-04-02 08:52:00 · 409 阅读 · 0 评论 -
JAVA8 Collectors的lambda表达式 lambda并发
https://github.com/singgel?tab=repositorieslambda并发:/** * 根据标签列表获取标签值 * * @param upsTags * @return */ public List<LeafTagValue> listLeafTagValueByTags(List<S...原创 2018-07-17 19:06:47 · 671 阅读 · 0 评论 -
JAVA9 AutoCloseable接口的自动关闭
https://github.com/singgel?tab=repositories面向对象的编程语言本来就是很简单的,让人容易理解,最近在看java9新特性的时候看到了try-with-resources 。try-with-resources 声明在 JDK 9 已得到改进。如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources...原创 2018-07-18 17:04:05 · 2164 阅读 · 1 评论 -
Java 程序死锁问题原理及解决方案
https://github.com/singgel?tab=repositoriesJava 语言通过 synchronized 关键字来保证原子性,这是因为每一个 Object 都有一个隐含的锁,这个也称作监视器对象。在进入 synchronized 之前自动获取此内部锁,而一旦离开此方式,无论是完成或者中断都会自动释放锁。显然这是一个独占锁,每个锁请求之间是互斥的。相对于众多高级锁 (L...原创 2018-08-01 14:23:11 · 1941 阅读 · 1 评论 -
由全局异常处理引发的Java注解的原理思考
https://github.com/singgel?tab=repositories package com.yiche.bigdata.exception;import com.yiche.bigdata.constants.ResultCode;import com.yiche.bigdata.entity.dto.Result;import com.yiche.bigdata...原创 2018-08-08 11:11:23 · 1013 阅读 · 0 评论 -
关于json传输的过程中字段不对应的问题
https://github.com/singgel?tab=repositories 前情摘要先来一点故事补充,话说小明的领导给小明安排了一个任务,很简单就是调用别人的API,我们作为Client接收数据并进行相应的处理,领导说由于各种原因,目前不知道对方接口的返回数据格式,所以你先做数据解析吧,先写XML格式的,于是小明开始着手工作了,经过编码,调试,并且领导也review通过了。但是...原创 2018-08-08 14:08:04 · 2943 阅读 · 0 评论 -
回调的原理、实现与应用
C++能看不能写,网上找的写的很好的,比Java看着好理解多了,另外我的git里面有大量的相关资源:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms什么是回调 函数指针有什么用呢?一个最常用的地方就是回调。 ...原创 2016-06-22 08:41:32 · 390 阅读 · 0 评论 -
生产者与消费者
生产者与消费者问题 wait() / notify()方法采用的是synchronized关键字来进行加锁,但是同时要注意的是,要是用循环的方式来进行wait等待,切记不要使用else的方式来自于javadoc的API中的一段提示,不然会导致在时间延迟(如网络延迟)的情况下,双方的信息不对称,导致线程无法结束demo:1.仓库public class Storage...原创 2016-06-21 13:32:57 · 532 阅读 · 0 评论 -
JVM 优化经验总结
对应的测试代码我放在了github上:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/oom开始之前Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相...原创 2017-11-16 13:10:12 · 323 阅读 · 0 评论 -
java后端研发经典面试题总结,为公司招兵买马
垃圾回收算法1.标记-清除算法标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象。在标记完成后统一回收被标记的对象。这个算法两个问题。一个是效率问题,标记和清除的效率不高。第二个问题是标记-清除之后会有大量不连续的碎片空间,如果我们需要更大的连续内存就必须GC。 2.复制算法复制算法,不同于标记-清除,复制算法大多数用于新生代,它需要大小相...原创 2018-02-06 18:09:48 · 1399 阅读 · 1 评论 -
了解泛型 识别和避免学习使用泛型过程中的陷阱
表面上看起来,无论语法还是应用的环境(比如容器类),泛型类型(或者泛型)都类似于 C++ 中的模板。但是这种相似性仅限于表面,Java 语言中的泛型基本上完全在编译器中实现,由编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种实现技术称为 擦除(erasure)(编译器使用泛型类型信息保证类型安全,然后在生成字节码之前将其清除),这项技术有一些奇怪,并且有时会带来一些令人迷惑的后果。...原创 2017-01-13 08:37:01 · 445 阅读 · 0 评论 -
JAVA八大排序算法
最近面试招人,感觉自己的智商秀逗了,强化训练,强化原理记忆,跑通多种思路不混乱https://github.com/singgel/eight-sorting-algorithms选择排序---直接选择排序 选择排序包括两种,分别是直接选择排序和堆排序,选择排序的基本思想是每一次在n-i+1(i=1,2,3,...,n-1)个记录中选取键值最小的记录作为有序序...原创 2018-05-17 16:58:58 · 5537 阅读 · 2 评论 -
线程池的原理及实现
1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程池包括以下四...原创 2016-09-06 16:00:44 · 498 阅读 · 0 评论 -
线程池的原理及实现
本博文的代码地址:https://github.com/singgel/NettyDemo/tree/master/src/test/java/com/singgel/threadPool1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程...原创 2016-12-13 14:41:03 · 877 阅读 · 0 评论 -
Java动态代理的两种实现方法
本博客的相关代码:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/ProxyAOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者...原创 2016-11-24 11:14:47 · 1051 阅读 · 0 评论 -
ThreadPool有界、无界队列以及5大参数
代码放在了github上:https://github.com/singgel/NettyDemo/tree/master/src/test/java/com/singgelJava提供了4钟线程池:newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledThreadPool你可以通过E...原创 2017-05-02 17:37:07 · 2741 阅读 · 0 评论 -
Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
由C#的大数据量操作调用DLL的bulkCopy,引发的JDBC思考能考虑到在应用程序client和 数据库服务器DB server间减少交互时间,批量更新处理的绝对是有助于重构和优化代码的好同志; 但这种优化一定要注意方法,如果是自行去重新发明一种轮子的话, 效果往往是不如人意的。 例如Tom Kytes曾在他的著作里提到这样2个例子,他去协助开发的2家企业的在研发应用的过程中,分...原创 2016-11-19 14:04:34 · 1733 阅读 · 0 评论 -
轻松掌握 Java 泛型
数据类型转换和错误为理解泛型类型为何如此有用,我们要将注意力转向 Java 语言中最容易引发错误的因素之一 - 需要不断地将表达式向下类型转换(downcast)为比其静态类型更为具体的数据类型(请参阅 参考资料中的“The Double Descent bug pattern”,以了解进行数据类型转换时,可能会碰到的麻烦的某些方面)。程序中的每个向下类型转换对于 ClassCastExc...原创 2017-01-09 16:08:49 · 653 阅读 · 0 评论 -
Java自定义一个注解时所使用的注解都是干嘛的
不想写代码?复制吧,少年:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/annotation一、注解:深入理解JAVA注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解...原创 2016-08-04 16:14:30 · 2354 阅读 · 0 评论 -
集合迭代时对集合进行修改抛ConcurrentModificationException原因的深究以及解决方案
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentMod...转载 2016-09-02 19:13:20 · 904 阅读 · 0 评论 -
Java实现一个简单的缓存
不想敲代码,来我的git复制吧,少年:https://github.com/singgel/Spring-SkillTree/tree/master/spring-test/src/test/java/com/hks/springtest/cache阅读spring的源码,其中大部分的使用了缓存,因此想一探究竟缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是...原创 2016-09-12 09:04:45 · 961 阅读 · 0 评论 -
Java 8 中的 Streams API 详解
不想写代码的少年,git有:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/lambda为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 Out...原创 2017-10-13 10:41:31 · 628 阅读 · 0 评论 -
关于spring中@Transactional注解抛出异常不回滚的现象
今天在开发中,遇到了如题这样的问题,我自己手动抛出异常,数据还是会写入的数据库中,并且不会发生回滚,导致产生了垃圾数据。后来上网查了一下,发现spring中,注解的事务回滚是默认RunTimeException才会回滚,如果抛出的不是RunTimeException,spring是默认不会回滚的。 并且,你的程序中try catch了,哪怕是RunTimeException,也是不会回滚的。...原创 2017-01-04 15:56:17 · 3492 阅读 · 0 评论 -
《深入理解java虚拟机》读书笔记二
目录垃圾收集算法垃圾收集器内存分配与回收策略技术到了一定的程度,总是想要进一步的提高,但是有时候苦于网上的资料参差不齐,有些更是让人只知其表,我本人是找不到比较好的方法来打开新的道路。又苦于前方路途迷茫,有时也是看着各大V推荐的书籍进行阅读,和在学校一样,读书读不进去,写代码倒是飞快。开了blog,那就一点一滴记录下来吧书籍地址:https://github.com/s...原创 2017-05-03 13:43:32 · 293 阅读 · 0 评论 -
ASM原理详解,以及使用附代码,AOP利器
少年,git代码,带你快速理解:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hks/eightsortingalgorithms/asm一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class ...原创 2018-10-19 17:41:03 · 4010 阅读 · 0 评论 -
分布式ID 雪花算法JAVA实现
少年不想写,来吧:https://github.com/singgel/SnowFlakesnowflake的结构如下(每部分用-分开):概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。...原创 2018-11-15 09:44:35 · 1156 阅读 · 1 评论 -
apm几种trace工具比对
目录基本信息基于skyWalking和zipkin的使用总结:skyWalking:zipkin:参看资料:内容是在我球的docs上直接复制过来的,懒得写两份,资源缺少的留言,我发你基本信息 skyWalking pinpoint zipkin sofaTracer ...原创 2019-05-05 19:14:52 · 2016 阅读 · 0 评论 -
sleuth+zipkin详解
目录sleuth:源码:信息:原理:采样率:附加信息:zipkin源码:信息:原理:Log plugins实现作用:性能:缺点:参考资料:内容是在我球的docs上直接复制过来的,懒得写两份,资源缺少的留言,我发你sleuth:spring-cloud-starter-sleuth: 英文名是侦探,它的功能是在项目中自动为日...原创 2019-05-05 19:15:33 · 4562 阅读 · 0 评论