- 博客(16)
- 收藏
- 关注
原创 IO通信之多路复用
什么是多路复用器 聊多路复用器之前呢,先回归昨天的NIO,NIO的出现解决了BIO阻塞线程、一连接一线线程问题。但是它有缺点吗,答案是肯定的。NIO的缺点 我们把问题放大,如果有一万个连接但是只有一个连接是有数据的,但是对于我们的NIO来说,他每次都会遍历所有连接并且去调用内核,我们都是到用户态切换内核态的消耗还是很大的,这里就会涉及到操作系统的知识,当用户态切换到内核态时会有一个80中断,需要经历的过程大致为,保存用户线程的现场信息,根据中断描述符从中断向量表中查找指令,调用指令,恢复现场,如果
2021-03-02 11:59:32
245
原创 浅谈线程池
简介: 线程池创建的几种方式及取舍。能力有限,仅供参考。 先解释一下两个概念,核心线程数和最大线程数的区别,比如电商网站平常我们可以用50个线程来处理用户的所有请求,但是当双十一的时候请求明显增多这是我们需要用500个线程来解决用户的请求,50就是核心线程数,500就是最大线程数 先上线程池流程图吧(图片来源博客园@徐志毅侵删)第一种Executors.newCacheThreadPool() 这种方式没有入参,核心线程数为0个,最大线程数为Integer.maxValue空闲线程60.
2021-02-20 12:41:22
349
原创 浅谈锁升级
简介: 以下内容均为原创转载须标注出处。能力有限,仅供参考。我觉得在了解锁之前了解对象的内存布局是有必要的上图为普通对象的内存布局markwordclass pointerdatapadding属于对象头部分包含hashCode、分代年龄、锁信息。总共占8个字节java miror镜像的地址,负责找到方法区中对象的一些信息。开启指针压缩的情况下占4个字节,不开启的情况占8个字节,默认开启表示对象的数据补齐操作,在64位计算机中每次读8个字节数据,当对象的大小正好为8.
2021-02-20 12:36:36
389
2
原创 TCP/IP协议
简介: 文章问个人学习的心得,仅供参考,不足之处请指出。TCP/IP协议是什么TCP/IP协议是一个面向连接的可靠的网络协议 面向连接:一个逻辑概念,它需要自己与目标主机进行三次握手来建立连接才能完成通信。创建连接完成也会进行资源的分配。 可靠的:连接时三次握手确认机制保证自己与目标主机的连接。四次分手机制来保证连接资源的释放。每次接收消息都会返回发送方ack确认包。什么是三次握手 这个图就表示三次握手的过程,我个人认为他就是为了保证可靠性而进行的一个测试,测试两台主机是否能接受对方.
2021-02-20 12:26:03
394
1
原创 Redis学习笔记(四)
今天比较少,最后一点知识了,还有Redis的底层数据结构,ziplist,quicklist,intset,skiplist,基数数(暂时没有使用),listpack(ziplist的升级版更加省空间,而且不涉及级联更新),emb,rawganxingq感兴趣的可以自己查一下...
2021-02-20 12:13:20
109
原创 Redis学习笔记(三)
这个是我自己学习总结的Redis基本的一些知识,没有详细写,给大家一个学习的方向,链接如下。https://www.processon.com/view/5f962ef17d9c0806f28e4b4e#map
2021-02-20 12:12:29
100
原创 Redis学习笔记(二)
这个是我自己学习总结的Redis基本的一些知识,没有详细写,给大家一个学习的方向,链接如下。https://www.processon.com/view/5f962ef17d9c0806f28e4b4e#map
2021-02-20 12:11:38
96
原创 IO通信学习总结
简介: 仅个人心得,仅供参考,不足之处望请指出。聊IO通信我们从最基本的也是最古老的BIO说起什么是BIO 其实就是我们所讲的阻塞IO,他是由操作系统指令支持的。BIO原理 如果要追踪系统调用需要用1.4版本的jdk编译运行,所以NIO就不追踪了,直接用学习时老师的图吧。 图片是通过strace命令来追踪系统调用时生成的out.*日志文件,这个命令是根据进程ID号来分文件的,我们只需要关注划红线的地方就好,当我们执行程序时需要生成Socket时就会从操作系统中执行Socket命令创建.
2021-02-20 12:04:18
617
原创 从架构的角度看Kafka(五)
本文章内容皆出自作者阅读胡夕著Apache Kafka 实战一书的总结,可能有理解错误,仅作为参考。如有侵权,笔者将会删除它们。注:这篇文章是Kafka文章的第四篇,笔者建议从头看,如果读者感兴趣可以先看第四篇从架构的角度看Kafka(四) 这篇文章是基于Kafka 10.0.0,如果读者的版本不一致,请查看版本是否支持这些。一、consumer 1.1 消费者组 1.1.1 消费者组介绍 消费者组是Kafka一大亮点,官方给出的定义翻译说来是:消费者使用一个消费者组名来标记.
2021-01-18 17:29:52
1111
原创 从架构的角度看Kafka(四)
本文章内容皆出自作者阅读胡夕著Apache Kafka 实战一书的总结,可能有理解错误,仅作为参考。如有侵权,笔者将会删除它们。 注:这篇文章是Kafka文章的第三篇,笔者建议从头看,如果读者感兴趣可以先看第三篇从架构的角度看Kafka(三) 注:这篇文章是基于Kafka 10.0.0,如果读者的版本不一致,请查看版本是否支持这些。 1.1 自定义分区 对于Java版本的producer,它会对消息的Key进行murmur2哈希运算,然后再对分区数取模。murmur是一个很优秀的h.
2021-01-15 15:52:52
297
原创 从架构的角度看Kafka(三)
本文章内容皆出自作者阅读胡夕著Apache Kafka 实战一书的总结,可能有理解错误,仅作为参考。如有侵权,笔者将会删除它们。注:本文将会讲解producer的使用以及一些机制。1.1 Client Kafka有很完善的生态系统,支持大部分主流的语言。笔者这里就简单列举一下书中列出的客户端不在展开说了,后续我们将使用Java客户端来举例。1.2 producer大概生产流程。 Kafka生产端可以想象成一个工厂,有两批工人一个代表生产消息线程,一个代表负责将消息发送到Kafk.
2021-01-14 17:11:06
181
原创 从架构的角度看Kafka(二)
本文章内容皆出自作者阅读胡夕著Apache Kafka 实战一书的总结,可能有理解错误,仅作为参考。如有侵权,笔者将会删除它们。 注:这篇文章是Kafka文章的第二篇,笔者建议从头看,如果读者感兴趣可以先看第一篇《从架构角度看Kafka(一)》一、Kafka使用场景 1.1、消息传输 我们第一次接触可能都是作为消息传输来学,作用很简单,就是生产者与消费者解耦,异步操作。Kafka是一个很好地选择,它有很高的吞吐量以及可行性。 1.2、用户行为追踪 在大数据时代,这些用户的行为.
2021-01-13 10:31:37
170
原创 从架构的角度看Kafka(一)
本文章内容皆出自作者阅读胡夕著Apache Kafka 实战一书的总结,如有侵权,笔者会删除它们。注:可能很多人包括我自己都会把Kafka等一些消息系统称为消息中间件或者消息队列而次数中称他们为消息系统或者消息引擎。1、Kafka设计 1.1.1、性能指标 吞吐量:对于Kafka我们可以单纯的认为,生产者单位时间内可以向Kafka发送多少条消息。 延时:生产者向Kafka发送消息到消息成功被创建经历的时间。 对于一个消息引擎而言,我们肯定希望他既能够有很高的吞吐量又有很低的.
2021-01-12 13:29:21
272
2
原创 今天看到有人在问SpringBoot自动装配原理。
很多人讲这个会从@EnableAutoConfiguration注解为入口其实对于初学者来说还是不太容易理解,为什么有这个注解就会自动装配了其实SpringBoot的入口在invokeBeanFactoryPostProcessors(beanFactory);这个方法中,熟悉Spring源码的应该知道,这个类会加载执行我们的所有BeanFactoryPostProcessor,而这个方法中SpringBoot做了扩展,就是获取BeanFactory中的所有BeanDefinitionRegistryPo
2020-10-30 19:29:31
137
原创 Redis的两种JSON的序列化器 GenericToStringSerializer和Jackson2JsonRedisSerializer
Redis的两种JSON的序列化器 GenericToStringSerializer和Jackson2JsonRedisSerializer今天springboot整合redis时出现了Could not read JSON: Can not deserialize instance of com.springboot.entities.User out of START_ARRAY token错误,研究了半天才解决,想和大家分享一下。以下内容为枯燥的源码解读,用GenericToStringSeri
2020-07-30 21:56:01
2873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅