自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux I/O 原理和零拷贝

消息中间件中的零拷贝操作系统的零拷贝零拷贝的概念广义狭义之分广义上的零拷贝狭义上的零拷贝Linux I/O 机制IO中断与DMADMA的意义零拷贝的出现常见的零拷贝mmap 内存映射mmap定义mmap 后IO读取过程mmap的实现Mmap的在RocketMq中的实现sendFile定义IO读取过程Kafka中的 零拷贝Sendfile With DMA Scatter/Gather Copy背景实现IO读取过程操作系统的零拷贝最近在阅读消息中间件相关的源码,在消息存取时用到了mmap或者page ca

2021-03-24 13:56:32 192

原创 Kafka最新源码编译过程

开篇最近准备研究一下kafka的源码,最直接的就是把源码下载下来,通过debug进行研究。经过一段折腾,最终把环境给搭建好了,在这里和大家分享一下。步骤第1步安装 Java 和 Gradle安装Idea的 Scala 插件提示:如果你电脑上没有安装过 Gradle 或者 Scala 可以先去官网上看一下 kafka 依赖的版本,然后下载成一样的,不然在编译过程中还会现在他们依赖的版本。或者修改配置文件改变版本号第2步下载 Kafka 的源码使用如下命令:$ cd {要存储Ka

2020-07-09 18:33:12 2614 1

原创 Spring源码解析之创建AnnotationConfigApplicationContext发生了什么

开篇本篇文章是Spring源码分享的第三篇,有了前两篇分享的基础,从这篇开始进行源码的分析。因为是做源码分析且是逐行解析,以后的文章我会先把代码注视贴出来,然后最后做个总结。通过这篇文章你可以获得什么了解new AnnotationConfigApplicationContext() 时发生了什么正文当我们在代码中写了new AnnotationConfigApplicationContext();这行代码时,Spring帮我们做了一些什么?如下代码: AnnotationCon

2020-07-08 21:37:15 501

原创 Spring源码解析之常用拓展点的使用

Spring拓展点的使用开篇阅读本篇文章你可以获得什么为什么要学习Spring拓展点常用的拓展点的分类Bean工厂的后置处理器什么是Bean工厂的后置处理器?实现了BeanFactoryPostProcessor的实现类实现了BeanDefinitionRegistryPostProcessor的实现类开篇本篇文章是分析Spring源码基础的第二篇文章章,第一篇文章请看 Spring源码解析之BeanDefinition这篇文章主要讲解Spring在创建工厂和实例化Bean时用到的相关的拓展点,以便

2020-06-24 10:27:44 297

原创 IDEA重装后也打不开怎么办

背景我电脑使用的是破解版的IDEA,今天不知道怎么回事,需要重新激活。然后就是一段拖拽,最后没有成功,想到可能是版本更新的问题,然后准备换一个新的激活的JAR,就把原来所有破解的jar包都删了,如下/Users/{}/.jetbrains/jetbrains-agent-v3.0.0.jar,并且也删除了对应的idea.vmoptions中自己添加的信息,我当时是以为删对了。然后就进行重启,发现怎么都打不开。着急解决打开 /Applications/IntelliJ IDEA.app/Contents

2020-06-23 23:19:26 1200

原创 Spring源码解析之BeanDefinition

Spring源码解析之BeanDefinition通过阅读本文你能获得什么为什么要学习BeanDefinitionBeanDefinition在Spring中的作用BeanDefinition的定义BeanDefinition的类型BeanDefinition的实战通过阅读本文你能获得什么1、什么是BeanDefinition2、怎么用BeanDefinition定制化开发为什么要学习BeanDefinitionBeanDefinition看名称可以大致明白是用来描述spring中bean的

2020-06-18 19:54:19 537

原创 JVM调优基础篇-内存模型

JVM内存模型阅读完本文你可以获得什么?本文目的内存模型概述类加载子系统阅读完本文你可以获得什么?了解JVM调优三步曲熟悉JVM内存模型了解方法区、永久代、元空间的区别知道为什么JDK8后从永久代变成了元空间了解CLASS文件格式本文目的JVM调优,通俗的来讲分为三步:事前、事中、事后。事前:是项目上线前根据对象大小,和预估流量进行计算,看看新生代、老年代、方法区,应该怎么设置大小事中:是项目上线期间在还没有发生OOM之前根据GC的情况进一步判断参数配置事后:是发生OOM后根据“

2020-05-23 20:18:50 257

转载 JVM指令手册

背景最近在学习JVM字节码指令,通过 jclasslib 工具 可以显示出来命令,但是不知道是怎么在操作数栈和局部变量表怎么移动的,通过查寻指令手册才能看明白。列在这希望也能帮助学习JVM的你。0x00 nop 什么都不做。 0x01 aconst_null 将 null 推送至栈顶。 0x02 iconst_m1 将 int 型-1 推送至栈顶。 0x03 iconst_0 将 int 型 0 推送至栈顶。 0x04 iconst_1 将 int 型 1 推送至栈顶0x05 iconst_2

2020-05-22 21:59:43 240

原创 spring和mybatis整合为什么只定义了接口?为什么设置自动装配模型为BY_TYPE

背景是不是还在疑惑为什么我们在工程中定义了接口mybatis就可以直接操作我们的数据库?是不是想了解spring和mybaits整合的原理?了解原理后我们能复用在工程上的东西是什么?换句话说怎么提高代码的逼格?目的基于上述背景,笔者准备深入源码带大家一探究竟,读完这篇文章大家可以的到的收获了解Mybatis和Spring整合的底层原理知道为什么只定义了接口就可以直接操作数据库了解Spring中的拓展点和FactoryBean的使用可以自己定义插件提高代码逼格Spring中自动装配的类型

2020-05-20 18:12:45 748

原创 mysql基础-Innodb逻辑存储结构

通过阅读本文可以了解什么?磁盘预读概念数据页结构innoDb的行格式行溢出VARCHAR(65535) 大小的列能不能创建怎么定位到一条数据为什么尽可能设置为非NULL字段从InnoDB存储引擎的逻辑存储结构来看,所有的数据都被逻辑逻辑的存放在一个空间中,成为表空间。表空间又由 段、区、页组成。本文着重将页和行记录相关的数据磁盘预读mysql服务器是我们在生产环境中常用的服务器,大部分的存储引擎数据都是写入到磁盘中的而服务器每次读取数据时会先从pagecache读取数据,如果page

2020-05-18 10:27:03 452 1

原创 ZooKeeper的常用使用场景

ZK的常用使用场景一、注册中心实现方式基于临时节点基于监视通知机制注意:ZK集群可能会挂掉,所以为了防止zk挂掉后我们还能正常的进行服务的调用,需要在本地做一次缓存,只有当产生变化时这份缓存才会失效经典场景:dubbo中使用ZK做注册中心,并且引入了服务目录的概念,服务目录就是本地的一个缓存,但是当服务提供者列表发生变化时会更新这个缓存列表并且重新进行服务的导入作为注册中心的缺点分析数据一致性的需求:zk是一个cp的系统,但是注册中心更应该考虑a,当发生分区等问题时,只保证最终一致性

2020-05-17 16:46:52 559

原创 Zookeeper结构

zk的服务器模式仲裁模式:zk复制集群中所有服务器的数据;大多数服务器保存数据成功后才返回客户端成功独立模式:一个单独的服务器,zk的状态无法复制会话1.客户端设置的监视点和会话相关联,会话到期后等待中的监视点会移除2.在对zk集合进行任何操作之前,必须先与服务器创建会话3.当会话因为某种原因终止时,这个会话建立的临时节点也会消失4.zk客户端可以透明的将会话从一个服务器转移到另一个服务器5.会话提供了顺序保证,保证一个会话中的请求按FIFO的顺序执行,但当一个客户端打开了多个会话不能保证

2020-05-17 16:37:50 265

原创 Zookeeper的基础概念

ZK的设计目标1.简单的数据结构:共享的树型结构,类似与文件系统,数据存储于内存;2.可以构建集群:避免单点故障,超过半数就可以对外提供服务 ZAB协议;3.顺序访问:对于每一个写请求,zk会分配一个全局唯一递增ID,利用这个特性可以实现高级的协调服务;4.高性能:基于内存操作,服务于非事物请求,适用于读操作为主的场景;ZK可以做什么1.数据的发布与订阅 :通过监听机制2.命名服务 :依赖于临时节点3.负载均衡 :依赖于临时节点4.集群服务 :比如选主,依赖于临时节点

2020-05-17 16:35:57 202

原创 常用广告术语

CPM:全称(Cost Per Mille) CPM是一种展示付费广告,只要展示了广告主的广告内容,广告主就为此付费CPC:全称(Cost Per Click) CPC是一种点击付费广告,根据广告被点击的次数收费CPA:全称(Cost Per Action) CPA是一种按广告投放实际效果计价方式的广告,每次转化多少钱(如:注册)CPS:全称(Cost Per Sales) CPS是一种以实际销售产品数量来计算广告费用的广告,每次成功交易收费CPT:全

2020-05-17 16:32:26 3316

原创 spring常用扩展点术语介绍

BeanDefinition用来描述一个Bean,Spring会根据BeanDefinition来生成一个Bean,我们可以修改其中的属性来干预对象的生成。BeanFactory表示Bean工厂 ,常用的有DefaultListableBeanFactory以及AnnotationConfigApplicationContext等。BeanFactory为Spring管理Bean提供了一套通用的规范。可以通过BeanFactory获得Bean。FactoryBean自己也是一个Bean,可以

2020-05-17 16:26:40 367

原创 JVM调优基础篇-java对象大小计算

背景简化:最近由于项目需要,需要计算一下对象的大小,防止放开灰度后导致服务期频繁GC读完这篇文章可以获得什么?对象的内存布局指针压缩的原理预估对象的大小对象是否只能在堆上分配基础1、对象的内存布局一个Java对象在内存中包括对象头、实例数据和补齐填充3个部分由于本文主要是讲述对象的大小计算,所以不会详细讲解每个部分的作用,有兴趣可以上网搜索一些相关文章阅读。对象头所有对象都会有的部分:Mark WordMark Word 用于存储对象自身的运行时数据如哈希码(HashCod

2020-05-17 15:28:03 1498 1

zookeeper.xmind

学习zookeeper时做的总结,资源免费,共享给大家,有需要的可以拿走

2020-05-17

空空如也

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

TA关注的人

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