自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 project reactor 项目实战

项目中的rpc通过reactor-netty编写,未使用webflux自带的webClient,有以下几个原因自带的WebClient使用的是http协议,对于rpc场景冗余的信息比较多,没必要(当然它比较成熟)使用reactor-netty练练手,虽然简陋,但是收获多(主要原因…)这里先贴一下reactor-netty的官网,reactor-netty是对netty的完整reactor实践本文写的还是有些仓促,有一些点表述的不是很好,还请读者见谅,后续我再改改~

2024-01-12 14:43:25 1639 2

原创 logback自定义kafkaAppender, 日志循环输出导致代码死锁

自定义同步kafkaAppender时,发生springboot启动死锁,排查及解决

2023-10-03 16:08:22 811

原创 记一次dispath导致的request 重复读取

记一次 request 重复读取

2023-08-19 11:04:55 345

原创 基于logback扩展的traceId方案

基于logback扩展的traceId简单实现,支持线程池、异步appender~

2022-11-24 17:55:01 5841 2

原创 druid keepAlive bug踩坑

druid 1.2.5及以下版本 连接保活bug踩坑

2022-08-03 00:36:59 7395 1

原创 记@Bean的一个妙用:注册远程服务

序今天在研究异步导出如何注册rmi服务时,看到了一个没见过的写法,@Bean(name=“/xxxx”),即bean的name是以“/”开头,像这样@Resource private ExcelManageService excelManageService; @Bean(name = "/excelManageService") public HessianServiceExporter excelManageService() { HessianServic

2022-05-25 17:51:51 218

原创 自定义配置feignClient,并使用@RequestLine

序言之前在项目里请求三方服务时,使用的是restTemplate,其在组装参数上略显麻烦,其实我们可以使用openFeign自动的组件去请求三方服务,实现更加优雅步骤依赖导入这些就不说了,直接进入正题定义配置文件,配置请求接口。@Configurationpublic class TestFeignConfig { // 获取配置文件,自己用的是apollo @ApolloJsonValue("${test.api}") private TestISVInfo testIsvI

2022-04-23 23:55:27 7064

原创 一次线上死锁复盘

最近公司大促,公司系统线上频繁死锁,造成大量事物回滚,经过一番研究记录一下我学到的知识~

2022-03-17 16:47:21 944

原创 mybatis 注释大坑,导致参数越界

背景今天单测的时候发现我有个sql总是报越界错误,但是sql再三检查分明没有问题。最后发现是上面注释掉的sql的问题!!!mybatis并不会忽略xml中注释掉的代码,它会被读取到要解析的boundSql变量中。这也直接导致在解析的时候,把注释掉的代码中的占位符也给读取了出来,参数数量从4个变成了8个但是在生成执行sql的时候又会忽略注释代码,也就是说如果注释sql里存在占位符的话,会使得输入的参数数量大于执行sql需要的参数数量,最终报错有兴趣的同学可以到MybatisDefaultPa

2022-02-10 19:00:31 771 2

原创 变量的线程传递

背景我们有些时候会碰到需要在线程池中使用threadLocal的场景,典型的比如分布式链路追踪的traceId,业务场景中的获取用户id等简单信息。如果你去查看下自己公司这块代码的实现,你会发现他们几乎都没有使用jdk自带的ThreadLocal对象,而是使用了alibaba的TransmittleThreadLocal,为什么呢,这就关系到一个线程变量之间的传递性。在此之前,我们先来了解在java中,一个线程初始化经历了哪些步骤~线程初始化干了什么一句话概括,线程初始化时,在参数缺省的情况下,会

2022-01-31 19:46:19 1753

原创 java读取properties和yaml文件

自开始工作之后,就再也没有在csdn上写笔记、分享知识了,或许是太忙了吧…今天想把csdn上的文章重新捡起来,以后定期发一篇,巩固知识~读取Properties文件package com.nanachi.agent.demo;import java.io.*;import java.lang.instrument.Instrumentation;import java.nio.charset.StandardCharsets;import java.util.Properties;/**

2022-01-16 20:17:39 623

原创 记一次maven无法导包

问题描述这礼拜做任务的时候遇到一个奇怪的问题,maven中导入的依赖无法import,IDE一直说找不到。其实这样的问题之前也遇到过,但通过在maven里重新reload project就好了。这次确不行解决过程刚开始一直以为是缓存问题,疯狂的清缓存,重启,结果还是不行。看IDE的Build标签,也是显示同步成功无奈,第二天来上班的时候再来弄这个问题经过和同事们的讨论,最终发现是版本号的问题。我有两个包忘记在父pom中添加版本号,导致这个dependency下面的包都无法进行导入,因为mav

2021-02-28 22:11:31 337

原创 数据库主从(一主一从)模式,docker配置步骤

记录一下今天数据库的主从配置配置docker-compose.ymlversion: '3'services: mysqmaster: image: mysql restart: always container_name: mysql-master environment: MYSQL_ROOT_PASSWORD: 123456 #root账户密码 command: --default-authentication-plugi

2020-11-23 22:51:20 278

原创 如何写一个简单的spring boot starter~

在开始手写starter前,先去看懂springboot自动加载的原理~写一个普通类,里面要写上各种属性,以便我们自动配置。@Datapublic class ShareDemo { private String name; private Integer age; private Boolean real; private String desc;}创建一个autoconfigure包,在里面写该类的自动配置类,和属性类(属性类也可以放在另外一.

2020-10-14 09:30:21 303

原创 druid mysql 允许多语句执行

在数据库连接参数上加&allowMultiQueries=true在druid的配置中,去掉wallspring.datasource.driud.filters=config,stat(去掉了wall

2020-10-12 19:23:44 466

原创 逃逸分析实例详解

简介逃逸分析是编译程序优化的一个方式,一个依据。众所周知,java中的垃圾回收靠的是GC,但是GC所花的时间不容忽视,是影响我们程序性能的一大重要因素。为了减少GC的时间,我们得采取措施,避免产生一些不必要的对象在堆中。而逃逸分析,就是迈向巅峰的第一步。简单的例子逃逸分析,分析的是**对象指针(java中可以指引用)**的活动范围,比如,我们在fun()方法中创建一个变量apublic void fun(){ Integer a = 130;}a对象的引用就在这个fun所在的栈中,它

2020-09-02 22:25:50 874

原创 软中断和硬中断

什么是硬中断硬中断是中断流程的上半部分,是和硬件相关的中断,比如说网卡收到了数据包的时候,网卡就会发送一个中断给cpu,通知它有数据来了。硬中断的主要特征是它只处理耗时短的任务,比如单纯的接受数据,和Reactor模型里的reactor线程的作用差不多。什么是软中断软中断是中断的下半部分,它主要处理一些较复杂的较耗时的操作,比如接受到数据以后,一层一层向上剖析,解码。它是由中断程序触发,而非硬件。为什么要分硬中断和软中断首先我们得记住,现代操作系统设计的目的主要就是两个,吞吐量和低延迟,把中断分为

2020-08-29 15:21:55 737

原创 ThreadLocal 基本原理与set源码解析

看文章前先了解java弱引用和多线程简介当我们想要多个线程使用同一个变量时,会出现并发安全问题,这时候我们必须采取措施,对变量的访问进行同步。为了达到这个目的,我们一般是采用加锁的方式解决,但是加锁的方式太重了,会使系统的并发量大大降低,有什么办法能够解决这个问题呢?当然有,不过是另辟蹊径: 不对访问进行同步,而是对每个线程,复制一份该变量,每个线程操作自己的那部分变量,来消除并发安全。Threadlocal就是用来干这个的Threadlocal的使用public class MyThrea.

2020-08-07 19:38:17 759

原创 binlog初探

binlogbinlog是记录所有数据库表结构变更(例如CREATE、ALTER…) 以及表数据修改的二进制日志。binlog在数据库的data文件夹下是这样的形式它包括index结尾的索引文件和日志本身作用用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步用于数据库的基于时间点的还原内容逻辑格式的日志,可以简单认为就是执行过的事务中的sql语句什么时候产生事务提交的时候。并且是一次性将一个事务中的多个sql语句记录到binlog中。但它的速度会相对慢一些。

2020-07-28 11:19:22 318

原创 Netty和Reactor模型

前言在我们传统的网络模型中,往往是一个线程一个请求,这样可以避免请求因为线程阻塞而得不到处理(前提是机器性能足够),但这种模式,只适用于并发量较小的场景,并发量一大,一个线程一个请求的开销是机器不能承受的。reactor模式单线程Reactor在该模式下,Reactor单独占一个线程,负责对请求的接受,分发(java nio 中即为selector),java NIO就采用了这种模式。我们来看看具体流程服务器端的Reactor是一个线程对象,它注册一个acceptor事件处理器到它下面,只有被

2020-07-11 22:01:25 354

原创 NIO之零拷贝

NIO的零拷贝的0指的是,0次需要cpu的拷贝,DMA拷贝不算在里面。零拷贝可以大大提高我们数据传输的效率。传统IO磁盘 -> 内核空间的缓存内核空间的缓存 -> 用户态中的程序缓存对数据做一系列操作用户态中的程序缓存 -> 内核态的网卡内存网络发送(或拷贝到磁盘)!在一次传统的IO中,操作系统一共进行了4次拷贝,4次操作系统状态转换 注意,磁盘到内核态的读写是通过DMA拷贝,外部设备(磁盘,U盘)不通过CPU直接与系统内存交换数据。但是内核空间到用户空间需要CPU的

2020-07-04 18:37:01 504

原创 NIO之Buffer原理介绍

可以看到java为除boolean外的每一种类型都准备了一个对应的Buffer类当然,如果要到网络上传输必须得是byte字段功能mark用于标记某次读/写的位置,可用reset()回到这里position下一个读写的位置limit第一个不应该读/写的索引位置,position < limitcapacityBuffer能够存放的最大容量我们来看ByteBuffer,它有两个主要的子类,DirectByteBuffer和HeapByteBuff.

2020-07-02 16:00:15 484

原创 https简单理解

概念https全称为Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的http协议,它在http的基础上,在应用层添加了SSL/TLS,保证传输内容的私密性,常用于支付交易等环节。除了SSL层的添加,CA中心的认证是也是https之所以安全的关键,否则会被中间人攻击所欺骗。HTTPS传输流程:客户端向服务器发起请求服务器收到请求后先随机生成一对公钥和私钥,然后将公钥和其他信息使用某种hash算法生成一个消息摘要,传

2020-06-16 09:44:39 1086

原创 Bean对象的实例化过程,讲下doGetBean方法!

Bean对象的实例化过程1. 检查currenthashmap里是否有bean(是否已经实例化为单例bean对象)inal String beanName = transformedBeanName(name); Object bean; // Eagerly check singleton cache for manually registered singletons. // 看看bean是否已经被单例实例化 Object sharedInstance = getSingleton

2020-05-21 14:31:12 261

空空如也

空空如也

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

TA关注的人

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