自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nortyr的博客

人生有梦,各自精彩

  • 博客(43)
  • 收藏
  • 关注

原创 JavaAgent介绍 | 基本介绍及无侵入打印方法耗时

网上似乎没有直接的文档介绍这个,只找了instrument包的相关文档,其内容页。其中的内容也都是介绍javaagent相关。instrument包下核心就是字节码增强,此包下有2个核心接口:代理需要实现这个接口,并对class文件转化(增强):Instrumentation 为代码增强提供了必要的服务和功能。

2024-02-18 23:14:19 1051

原创 Checklist系列:JVM自检四十问,万字整理,推荐收藏

Stop The World:是指JVM在执行垃圾回收时,会暂停应用程序的所有线程,直到垃圾回收完成为止。在这个过程中,应用程序无法响应任何请求,所有的线程都会被挂起。OopMap:是指对象指针映射表,在Java虚拟机中用于存储对象引用的位置和类型信息。SafePoint:是在代码执行过程中的一些特殊位置,当线程执行到这些位置的时候,线程可以暂停。

2024-02-18 10:34:40 945

原创 生产问题复盘!Swap对GC的影响

swap 是把一块磁盘空间或者一个本地文件当做内存来使用。可用内存无法满足内存分配请求的时候,把不常用的内存数据存储到磁盘,并在内存中释放这部分内存。当进程再次访问这部分内存的时候,再读取到内存中来。

2024-01-26 10:52:23 574

原创 Checklist系列:MySQL自检五十五问,万字整理,推荐收藏

最近也打算整理一波已经学过的知识,名字已经想好了就叫《CheckList》系列,以后需要用到的时候也可以拿出来看。问题来源于网上常见的面试题,问题的答案多以官网为主,每个问题我都贴了链接,觉得我写的不清楚的地方可以点击链接查看原文。

2024-01-23 20:58:21 2297

原创 Google高性能开源框架gRPC:快速搭建及HTTP/2抓包

gRPC是google发起的一个*远程过程调用(rpc)*开源框架,可以在任何语言中,用任何编程语言编写。gRPC基于HTTP/2协议,使用Protocol Buffers作为序列化工具。gRPC官网:https://grpc.io/

2023-09-15 17:25:01 517

原创 如何优雅的实现一个Mybatis插件

虽然写的很少,但是,PageHelper的底层逻辑应该明白了,就是上面精细化实现没说了,这个应该有别的dalao写过文章了吧,我就懒得写了。再回顾下开篇的2个问题如何增强自定义插件加入到中即可,mybatis自己回生成责任链如何易用PageHelper是通过实现gitee地址:https://gitee.com/Nortyr/allinone。

2023-09-04 11:46:01 114

原创 @Async引发的循环依赖问题

未做特殊处理。

2023-08-28 19:23:09 176

原创 Hutool:WeakCache导致的内存泄漏

没想到一次bug定位这么火,身为电商网站的后台开发,别的不敢说,jvm调优啊,bug定位啊,sql调优啊简直是家(ri)常(chang)便(chan)饭(shi)。后续也会努力给大家带来更多文章的就在上面文章发了没几天,生产又出问题了,一台服务cpu使用率飙到20%以上查看gc日志发现,fullgc频繁,通过jstat排查,并没有释放多少内存【当时我再外面没有图】通过分析,是hutool的WeakCache导致的,涉及业务逻辑修改,就不透露解决方案了,下面为大家分析下为啥会内存泄漏。

2023-08-25 11:43:47 358

原创 MyBatis居然也有并发问题

问题:如果需要ognl的对象的方法和类不是public,那么会存在并发问题解决1:针对并发问题,升级Mybatis或者其他写法代替,反正看下,内部类是不是private有问题希望留言指出哈。

2023-08-09 16:35:21 448

原创 一看就会的Netty源码

整理下Netty,之前写了几篇博客,翻来翻去太累了,这里我就整理了下整理在了一起,并且,去掉了繁杂了源码解读,demo我也顺便精简了一下,完全当一个备忘录来看,完全没有一点点的源码。方便快速会议和整理,如果想看的话这里附上前几个博客的链接,估计也没谁想看。

2023-06-11 22:22:10 93

原创 Zookeeper整理

zookeeper: 分布式应用程序的分布式协调服务,主要用来解决分布式集群中应用系统的一致性问题。这里只做一下重点整理。

2023-06-05 16:11:55 271

原创 「查漏补缺」线程池源码分析

如果当前Worker(工作线程数后面用Worker代替)数量少于核心线程数,则创建Worker并执行如果当前Worker已经等于核心线程数,则尝试往阻塞队列塞再次检查线程池状态,如果异常执行拒绝策略如果没有Worker,添加非核心线程如果当前Worker已经等于核心线程数,阻塞队列也无法塞了,尝试创建非核心Worker并执行如果阻塞队列也无法塞了,Worker也到了最大线程数(maximumPoolSize)了,就执行拒绝策略。

2023-05-29 22:27:50 51

原创 「Netty源码」FastThreadLocal源码

承接上文,这篇主要就分析FastThreadLocal顺带分析下相关内容what既然又了ThreadLocal为什么Netty又创建了一个FastThreadLocal呢,首先,先看下FastThreadLocal的注释,类注释上面说明了。简述一下通过FastThreadLocalThread访问会更快取代了Hash映射,使用常量处理频繁访问的场景A special variant of  ThreadLocal that yi

2022-11-06 15:42:39 160

原创 「查漏补缺」ThreadLocal源码

❝该提前分析的都分析完了,现在,来看一下ThreadLocal,本来还想还顺带学习一下Netty封装的FastThreadLocal,但是写的有点多了,后面抽时间再写一篇了❞WhatThreadLocal也是日常开发中比较常用的,他的注视就很好的诠释了他是干什么用的。简单的说,ThreadLocal可以看作线程的私有变量。需要注意的是,他并不是用来处理共享变量的,下面会进行分析/*This class provides thread-local variab

2022-11-02 00:45:56 99

原创 「查漏补缺」强/软/弱/虚引用

强引用强引用:Object o = new Object()软引用:new SoftReference(o);弱引用:new WeakReference(o);虚引用:new PhantomReference(o,Queue);本次会用到命令-XX:+PrintGCDetails会打印[GC (Allocation Failure) [PSYoungGen: 29680K->4080K(29696K)] 73163K->72619K(9

2022-10-24 09:45:07 549

原创 「Netty源码」EventLoopGroup初始化分析

NioEventLoopGroup初始化过程,有一些细的地方就没有深入了,这里只分析bossgroup。中就有对应实现了,多的酒省略了,大体调用关系可以将时序图和下面代码结合起来看,这里我总结下,的实现,就是通过选择器来执行,但是,debugger的时候,基本上也没有走到这,拿了。增强,展开会很多,后面可能会单独写博客,这里如果想看可以结合。之前写的太烂了,重新整理下,个人向整理笔记,本片大致内容为。,既然是线程工厂,我们需要关心的也就创建线程方法,就是用。创建的线程工厂,简单的看一下,这个线程工厂为。

2022-10-17 09:09:31 135

原创 「NIO源码」JavaNIO源码 & JNI分析二:Java NIO源码分析

Channel:对socket的封装Selector:对Epoll&epoll_event2个结构体的封装SelectionKey:关联上面2个,有了文件描述符快速找到对应Socket参考文章linux文档:https://man7.org/linux/man-pages/man2/

2022-09-23 13:11:03 644

原创 「NIO源码」JavaNIO源码 & JNI分析一:linux API介绍

最近重温网络的时候,突然发现,底层就那么些接口,java肯定也是封装了底层接口,看过我前面Nio相关的小伙伴肯定知道对这些类有点影响(Buffer,Channel,Selector,SelectionKey),可是跟底层对应不起来啊,这一篇就透过源码看一下,大概能帮助你更好的了解这几个类,及底层的实现。偏重个人兴趣向整理,如有不适,欢迎吐槽。

2022-09-20 17:07:19 466

原创 「Mybatis」动态SQL源码分析

前情概述最近,在阅读源码,阅读到标签解析的时候发现,各家的实现方式不一样例如dubbo,所有标签解析,全部在一个方法中,然后各种ifelse解析,只有在最底层,只存在一种标签的情况下,才用for循环解析,代码如下(不想看可以跳过这一部分) private static BeanDefinition parse(Element element, ParserContext parserContext, Class<?> beanClass, boolean required) {

2022-05-20 10:33:30 458

原创 「Spring源码」循环依赖解析&遇到的bug分析

本篇分析内容Spring循环依赖源码解析@Async引发的bug分析闲聊本来打算开开信心摸鱼看源码了,突然被问了一个bug,这好奇心就忍不住了,循环依赖照理来说Spring应该处理好了,怎么还会有问题呢?正好之前鸽了好久没写了,就借此机会分析下,先贴报错:org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'XXXXXA': Bean wi.

2022-05-06 14:42:29 667

原创 Dubbo源码简述

本章分析本章分析内容大致如下,不打算走大段大段的源码分析了,就讲个大概,源码这东西吧,还是得自己过一遍。所以,看完应该只能了解个整体大概,细分领域就可以不用看了(可以给我留言,如果有人感兴趣可以写个分析下)。服务暴露流程服务引用流程在前面的《「Dubbo源码」Spring整合Dubbo》中已经发分析,这篇主要就以ServiceBean和ReferenceBean为主了服务暴露流程大致流程如下ServiceBean其他对bean创建过程中的生命周期就略过了(就是赋值啥的,自己看看吧)

2022-04-12 09:53:43 646

原创 Java SPI,Dubbo SPI,Spring SPI 三种SPI分析

系统整理下Java SPI,Dubbo SPI,Spring SPI。Java SPI简述有点类似于策略设计模式,定义好接口,在文件中写实现类的全路径名。调用ServiceLoader.load的时候返回一个迭代器,他内部是一个懒加载,当调用hasNext的时候才会根据全路径名读取文件,调用next的时候才会实例化。本质上就是,获取接口全路径名,安规范去该路径下按行读取文件,然后用同一个类加载器加载类,返回。(源码很简单,就不多说了,使用方法看图)优点类似于模板方法,定义好接口,实现可以完全由

2022-03-19 00:55:55 745

原创 「Dubbo源码」Spring整合Dubbo

最近在研究dubbo源码,有一点之前没怎么细看,就是Spring怎么整合Dubbo的,还有就是Dubbo是怎么拓展Spring的。正好也好久没更新博客了,水一波博客。dubbo版本:2.5.3spring版本:4.3.6.RELEASEps:最近回头看以前的博客,感觉代码过多,不大好,以后尝试使用多用文字的形式,少贴代码本篇研究的问题Spring是怎么整合DubboDubbo是怎么拓展Spring的Spring是怎么整合第三方框架的大体的解析顺序如上所示。最终调用com.alibaba

2022-03-14 01:02:15 431

原创 「Spring-Aop」源码分析四:Aop源码解析

众所周知,Aop各种切面肯定是通过创建代理(Aop的各种基本概念各位听都应该听会了,这里就不多赘述了)。但是问题随之产生了,我们已经分析了普通bean的解析及创建,aop是在哪边创建代理对象的呢,怎么匹配切点的呢。这篇也是围绕这两个问题进行分析。动态代理的分析上一篇已经分析完了,感兴趣的可以看一下。传送门本篇研究的问题代理对象的创建匹配切点测试代码@Aspectclass AdviceUsingThisJoinPoint { private String lastEntry = "";

2022-02-10 20:39:37 366

原创 「Spring-Aop」源码分析三:JDK动态代理&Cglib

马上春节啦,没啥事情了,抽空整理了下Spring源码。前两天整理了Spring的Ioc,后面就开始Aop了。看能更到哪就更到哪吧,不定期更新~~~~反正也没人看本期做一个提前准备,研究下JDK动态代理和Cglib。看完还是搞不明白,来砍我。JDK动态代理测试代码public interface Test1 { void sayHello();}public interface Test2 { void sayBye();}public class TargetIn.

2022-01-29 17:28:23 595

原创 「Spring-IoC」源码分析二依赖注入&依赖循环

书接上文我对IoC感兴趣的2个点分别是IoC是怎么获取bean信息,并管理bean的IoC引以为豪的依赖注入IoC是怎么解决循环依赖的(没错完全是因为网上说面试爱问)现在已经解决了第一个问题了,下面来分析下第二个问题–依赖注入依赖注入简单来说就是自己创建对象交给Spring容器管理。那肯定就有以下几个步骤了创建对象将对象所依赖的对象注入进来怎么解决循环依赖的问题的本篇也将围绕着三点展开了。ps:源码分析乃个人总结,如果有任何不对的地方,欢迎联系我讨论创建对象在上一篇中已

2022-01-28 21:59:08 640

原创 「Spring-IoC」源码分析一获取bean信息

好久没更新了,年末最后一个季度确实会比较忙,也是抽空看完了Spring的源码,这里进行一下回顾总结,现在Spring的源码实在太多,有的分析的也很细致,这里就不打算分析的太细了。还是按照之前的节奏,按照我看源码的几个点进行分析。如果有什么问题,还希望多多指教。下面开始源码分析Spring相信大家都用的最多的框架了,基本功能也都了解,这里就做过多介绍了(别问,问就是懒~)。我们直切主题。反正我困惑的就几个点IoC是怎么获取bean信息,并管理bean的IoC引以为豪的依赖注入IoC是怎么解决循.

2022-01-27 19:55:23 463

原创 Netty源码看这篇就够了

前言后面打算开始撸其他框架源码,而Netty对Java NIO的一层封装,提供了一套简单易用的API,经常被其他框架拿来用,我先花了点时间研究了下。这里整理下对源码的解读,以及对几个关键对象的介绍。分析了之前两篇流水账式的源码分析的不足,这次尝试聚焦几个不同重点进行分析。个人netty注释版本:https://gitee.com/Nortyr/netty原netty地址:https://github.com/netty/netty看完能收获什么Java网络编程介绍一个简单的EchoServ

2021-11-17 23:48:42 1398 1

原创 「Netty源码分析二」服务端启动流程分析

先看源码源码地址public static void main(String[] args) throws Exception { // Configure SSL. //配置ssl final SslContext sslCtx; if (SSL) { SelfSignedCertificate ssc = new SelfSignedCertificate(); sslCtx = SslContextBuilder.forServer(

2021-11-04 01:10:58 138

原创 「Netty源码一」网络IO介绍

ChannelIO操作纽带,一个Channel代表与实体开放开放连接。在网络IO中一般就是和Buffer读/写数据用。JAVA NIO中的一些主要Channel的实现FileChannel:从文件中读写数据。DatagramChannel:能通过UDP读写网络中的数据。SocketChannel:能通过TCP读写网络中的数据。ServerSocketChannel:可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。常用方法in

2021-10-25 01:24:29 106

原创 万字整理MyBatis源码

MyBatis差不多在我刚学编程就一直在用,一直没有去看它源码,这次,正好研究到了,把源码看了一遍,还是有不小的收获的,特意整理了下,如果有任何问题,欢迎指出概述MyBatis这个orm框架其实就是把JDBC给封装了一层,用过的朋友肯定知道,创建一个mybatis_config.xml配置文件,创建一个mapper接口,创建一个mapper.xml文件,然后在service层中调用了。暂且先不分析源码,如果假设自己开发这么个orm框架,功能完全喝MyBatis一样,那摆在自己面前的问题总共有如下3个

2021-09-06 01:07:57 173

原创 Fastjson关于is开头序列化问题

问题描述public class Demo { private Boolean isHot; private Boolean isQuick; public Boolean getHot() { return isHot; } public void setHot(Boolean hot) { isHot = hot; } public Boolean getQuick() { return is

2021-08-01 11:54:53 2751 1

原创 【Effective Java】10~14 equals,hashcode,toString,clone,Comparable

看完《Effective Java》感觉写的相当好,中间大部分都以作为参考手册,故整理出来。结合框架源码,jdk源码,自己的demo,给大家更多的示例,便于大家理解。每一条的介绍为个人理解,如果有任何不对,希望指出。对于博客有任何建议也希望给出建议。10.覆盖 equals 时请遵守通用约定 equals设计的初衷时满足以下4点每个实例唯一类没有必要提供逻辑相等的测试功能,Object的equals已经足够超类已经覆盖了equals,对于子类同样适用类如果是私有的,确保它的equals永远不会被调用如果你

2021-07-26 01:04:15 107

原创 【Effective Java】5~9条依赖注入、不必要对象、过期引用、finalizer、try-with-resources

看完《Effective Java》感觉写的相当好,中间大部分都以作为参考手册,故整理出来。结合框架源码,jdk源码,自己的demo,给大家更多的示例,便于大家理解。每一条的介绍为个人理解,如果有任何不对,希望指出。对于博客有任何建议也希望给出建议。5.优先考虑依赖注入来引用资源 依赖注入:把依赖的资源通过构造器传入给实例对象。用过spring的应该都知道他的好处了,但是例子public interface Computer {    

2021-07-21 01:20:50 209 2

原创 【Effective Java】1~4条笔记整理 静态工厂、builder模式、单例、私有构造方法

看完《Effective Java》感觉写的相当好,中间大部分都以作为参考手册,故整理出来。结合框架源码,jdk源码,自己的demo,给大家更多的示例,便于大家理解。每一条的介绍为个人理解,如果有任何不对,希望指出。对于博客有任何建议也希望给出建议。1.用静态工厂方法代替构造器 传统创建对象通常是使用者使用构造器来完成,第一条给了另外一种方式,就是通过静态方法,返回一个对象,该对象可以每次new一个或者反复使用同一个对象,这个完全交给开发者来决定。举个例子    pu

2021-07-18 02:12:16 248

原创 Clickhouse表引擎介绍

Clickhouse表引擎介绍表引擎作用数据如何存储,从哪写入,从哪读取支持哪些查询,以及如何支持。并发数据访问如果存在,使用索引是否支持多线程数据复制表引擎类型MergeTree适用于高负载,最强大的表引擎同构后续的后台数据处理,快速插入数据,然后应用规则在后台合并这些部分支持数据复制、分区、辅助数据跳过索引以及其他引擎不支持的其他功能种类MergeTreeReplacingMergeTreeSummingMergeTreeAggregatingMerg

2021-04-15 16:59:06 867

原创 ClickHouse基本介绍

ClickHouse&列式数据库简单介绍ClickHouse最初是为YandexMetrica世界第二大Web分析平台而开发的它是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它是真正意义上的列式数据库,什么是列式数据库呢列式数据库rowIdguidname001aaazhangsan002bbbfawaikuangtu传统的行式数据库是这样存数据的001:aaa,zhangsan002:bbb,fawaikuangtu但

2021-04-07 23:10:41 1128

原创 DataX的简单使用

DataxETLETL,是英文Extract-Transform-Load的缩写,用来描述将资料从来源端经过抽取(extract)、转置(transform)、加载(load)至目的端的过程。DataX介绍DataX是阿里云开源的一款离线数据同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。环境准备JDK(1.8以上,推荐1.8)Python(推荐Python2.6.X)Apach

2021-03-28 20:58:11 507

原创 【Docker】Docker从入门到加班

填个坑Docker是什么?Docker 属于 Linux 容器的一种封装,提供一整套虚拟运行环境,提供简单易用的容器使用接口。Docker能将应用程序部署到虚拟容器中,让程序可以在这个虚拟容器中运行,与外界环境隔离。Docker架构Docker更详细的架构如图所示,采用CS架构,client通过RESTFUL API发送docker命令到docker daemon进程,docker daemon进程执行镜像编译,容器启停以及分发,数据卷管理等,一个client可以与多个docker daemon.

2021-01-11 01:27:52 131

原创 【计算机网络】你必要知道的计算机网络知识点整理

十一8天玩的有点嗨了,好不容易闲下来,整理下http协议这个似懂非懂的东西。本篇文章为个人看书,阅读博客所得,如有任何问题,欢迎指出。快速导航什么是http协议什么是http协议HTTP协议–超文本传输协议(Hypertext Transfer Protocol),HTTP协议是建立在TCP协议之上的一种应用,好本篇结束????。开个玩笑,HTTP协议呢经历过几个版本:http/0.9,http/1.0,http/1.1,http/2,http/3...

2020-10-12 00:45:12 225

空空如也

空空如也

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

TA关注的人

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