Netty

书单记录

淺唱寂寞╮ 提交于 2020-07-29 07:20:05
1:深入理解Java虚拟机 周志明 第二版 [ √ ] 2:深入分析Java Web技术内幕 [ √ ] 3:穿越计算机的迷雾 第二版 [ ......进行中 ] 4:Java 8实战 [ ......进行中 ] 5:JAVA并发编程实践 [ -- ] 6:MySQL 技术内幕:InnoDB存储引擎 [ -- ] 7:高性能MySQL(第3版) [ -- ] 8:Redis实战(Redis in Action) [ -- ] 9:Netty实战(Netty in Action) [ -- ] 10:领域驱动设计 [ -- ] 11:Head First设计模式 [ -- ] 12:编码的奥秘 [ -- ] 13:深入剖析Tomcat [ -- ] 来源: oschina 链接: https://my.oschina.net/u/4265622/blog/4291832

咕泡三期 Java高级开发 java进阶大型互联网架构师专题

筅森魡賤 提交于 2020-07-29 04:55:33
咕泡三期 Java高级开发|java进阶大型互联网架构师专题 微云链接:链接:https://share.weiyun.com/hBSBy6Ri 密码:2jcqev 百度网盘: 链接: https://pan.baidu.com/s/1-hQxabDqeHzxBA-yWIvZGQ 密码: otf9 更多资源加微信:itit11223344 Java架构班开学典礼 【回放】Java架构班开学典礼(2月19日 20:00-21:30) 02 架构师内功心法之设计原则 【回放】为什么要学习软件架构设计原则(2月22日 20:00-22:00) 03 架构师内功心法之设计模式 【回放】设计模式总览及工厂模式详解(2月23日 20:00-22:00) 【回放】单例模式详解(2月26日 20:30-22:30) 【回放】原型模式与建造者模式详解(2月29日 20:00-22:00) 【回放】深度分析代理模式详解(3月1日 20:00-22:00) 【回放】门面模式与装饰器模式详解(3月4日 20:30-22:30) 【回放】享元模式与组合模式详解(3月7日 20:00-22:00) 【回放】适配器模式与桥接模式详解(3月8日 20:00-22:00) 【回放】委派模式与模板方法模式详解(3月11日 20:30-22:30) 【回放】策略模式与责任链模式详解(3月14日 20:00-22:00)

Netty 传输

末鹿安然 提交于 2020-07-28 10:50:52
Netty 为每种传输的实现都暴露了相同的API,所以无论选用哪一种传输的实现,你的代码都仍然几乎不受影响。在所有的情况下,传输的实现都依赖于 interface Channel 、ChannelPipeline 和 ChannelHandler。 传输 API 的核心是 interface Channel,它被用于所有的I/O操作。 每个 Channel 都将会被分配一个 ChannelPipeline 和 ChannelConfig。ChannelConfig 包含了该 Channel 的所有配置设置,并且支持热更新。由于特定的传输可能具有独特的设置,所以它可能会实现一个 ChannelConfig 的子类型。 由于 Channel 是独一无二的,所以为了保证顺序将 Channel 声明为 java.lang.Comparable 的一个子接口。因此,如果两个不同的 Channel 实例都返回了相同的散列码,那么 AbstractChannel 中 compareTo() 方法的实现将会抛出一个 Error。 ChannelPipeline 持有所有将应用于入站和出战数据以及事件的 ChannelHandler 实例,这些 ChannelHandler 实现了应用程序用于处理状态变化以及数据处理的逻辑。 ChannelHandler 的典型用途包括:

10w定时任务,如何高效触发超时

若如初见. 提交于 2020-07-28 10:19:13
一、缘起 很多时候,业务有定时任务或者定时超时的需求,当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描。 例如 :58到家APP实时消息通道系统,对每个用户会维护一个APP到服务器的TCP连接,用来实时收发消息,对这个TCP连接,有这样一个需求:“如果连续30s没有请求包(例如登录,消息,keepalive包),服务端就要将这个用户的状态置为离线”。 其中,单机TCP同时在线量约在10w级别,keepalive请求包大概30s一次,吞吐量约在3000qps。 一般来说怎么实现这类需求呢? “轮询扫描法” 1)用一个Map<uid, last_packet_time>来记录每一个uid最近一次请求时间last_packet_time 2)当某个用户uid有请求包来到,实时更新这个Map 3)启动一个timer,当Map中不为空时,轮询扫描这个Map,看每个uid的last_packet_time是否超过30s,如果超过则进行超时处理 “多timer 触发法” 1)用一个Map<uid, last_packet_time>来记录每一个uid最近一次请求时间last_packet_time 2)当某个用户uid有请求包来到,实时更新这个Map,并同时对这个uid请求包启动一个timer,30s之后触发 3)每个uid请求包对应的timer触发后,看Map中

咕泡三期 Java高级开发 java进阶大型互联网架构师专题

瘦欲@ 提交于 2020-07-28 04:27:17
咕泡三期 Java高级开发|java进阶大型互联网架构师专题 微云链接: 链接:https://share.weiyun.com/4Ruecunx 密码:m4xy7s 百度网盘:链接: https://pan.baidu.com/s/1UBSJaWNobkTmZ7uTGVMRQg 密码: 1bpw 如果失效联系微信:itit11223344 Java架构班开学典礼 【回放】Java架构班开学典礼(2月19日 20:00-21:30) 02 架构师内功心法之设计原则 【回放】为什么要学习软件架构设计原则(2月22日 20:00-22:00) 03 架构师内功心法之设计模式 【回放】设计模式总览及工厂模式详解(2月23日 20:00-22:00) 【回放】单例模式详解(2月26日 20:30-22:30) 【回放】原型模式与建造者模式详解(2月29日 20:00-22:00) 【回放】深度分析代理模式详解(3月1日 20:00-22:00) 【回放】门面模式与装饰器模式详解(3月4日 20:30-22:30) 【回放】享元模式与组合模式详解(3月7日 20:00-22:00) 【回放】适配器模式与桥接模式详解(3月8日 20:00-22:00) 【回放】委派模式与模板方法模式详解(3月11日 20:30-22:30) 【回放】策略模式与责任链模式详解(3月14日 20:00-22:00

面试官:kafka日志段如何读写都不知道,好意思说精通Kafka吗?

瘦欲@ 提交于 2020-07-28 02:03:47
引子 之所以写这篇文章是因为之前面试时候被面试官问到(倒)了,面试官说:“你说你对Kafka比较熟?看过源码? 那说说kafka日志段如何读写的吧?” 我心里默默的说了句 “擦…我说看过一点点源码,不是一点点。早知道不提这句了!”,那怎么办呢,只能回家等通知了啊。 但是为了以后找回场子,咱也不能坐以待毙, 日拱一卒从一点点到亿点点 。今天我们就来看看源码层面来Kafka日志段的是如何读写的。 Kafka的存储结构 众所周知,Kafka的Topic可以有多个分区,分区其实就是最小的读取和存储结构,即Consumer看似订阅的是Topic,实则是从Topic下的某个分区获得消息,Producer也是发送消息也是如此。 topic-partition关系 上图是总体逻辑上的关系,映射到实际代码中在磁盘上的关系则是如下图所示: 每个分区对应一个Log对象,在磁盘中就是一个子目录,子目录下面会有多组日志段即多Log Segment,每组日志段包含:消息日志文件(以log结尾)、位移索引文件(以index结尾)、时间戳索引文件(以timeindex结尾)。其实还有其它后缀的文件,例如.txnindex、.deleted等等。篇幅有限,暂不提起。 以下为日志的定义 以下为日志段的定义 indexIntervalBytes可以理解为插了多少消息之后再建一个索引,由此可以看出

四面蚂蚁金服(已拿offer),分享面试经历总结

帅比萌擦擦* 提交于 2020-07-27 13:31:51
蚂蚁花呗一面(一个小时): HashMap底层如何实现? HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头? 1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类的? java的内存分区? java对象的回收方式,回收算法? 线程池的工作原理,几个重要参数,然后给了具体几个参数分析线程池会怎么做,最后问阻塞队列的作用是什么? linux怎么查看系统负载情况? 请详细描述springmvc处理请求全流程? spring 一个bean装配的过程? 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理 Tomcat的基本架构是什么? 什么是类加载器? 说说双亲委派模型机制? 蚂蚁花呗二面 讲一下项目 线程池由哪些组件组成? 有哪些线程池,分别怎么使用?拒绝策略有哪些? 查询中哪些情况不会使用索引? 数据库索引,底层是怎样实现的,为什么要用B树索引? Mysql主从同步的实现原理? MySQL是怎么用B+树? 有使用过哪些NoSQL数据库?MongoDB和Redis适用哪些场景? 描述分布式事务之TCC服务设计? Redis和memcache有什么区别?Redis为什么比memcache有优势? Redis 的数据结构 海量数据过滤,黑名单过滤一个 url。 讲一讲AtomicInteger

Netty、Redis、ZooKeeper高并发实战(笔记三)

做~自己de王妃 提交于 2020-07-27 13:02:42
Netty、Redis、ZooKeeper高并发实战(笔记三) 将Doug Lea著名的文章《Scalable IO in Java》:http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf,开阔下眼界。 Reactor反应器模式 反应器模式由Reactor反应器线程、Handlers处理器两大角色组成: (1)Reactor反应器线程的职责:负责响应IO事件,并且分发到Handlers处理器。 (2)Handlers处理器的职责:非阻塞的执行业务处理逻辑。 在Java的OIO编程中,最初和最原始的网络服务器程序,是用一个while循环,不断地监听端口是否有新的连接。如果有,那么就调用一个处理函数来处理,示例代码如下: while(true){ socket = accept(); //阻塞,接收连接 handle(socket) ; //读取数据、业务处理、写入结果 } 这种方法的最大问题是:如果前一个网络连接的handle(socket)没有处理完,那么后面的连接请求没法被接收,于是后面的请求通通会被阻塞住,服务器的吞吐量就太低了。对于服务器来说,这是一个严重的问题。 为了解决这个严重的连接阻塞问题,出现了一个极为经典模式:Connection Per Thread(一个线程处理一个连接)模式。 class

面试题-讨论一下线程数设计的问题

淺唱寂寞╮ 提交于 2020-07-27 08:33:24
起源是这样的,一问朋友(super冰)让我回答下上次面试阿里的一道题目。问题是这样的: 给你一台8核16g服务器,你会给你的应用程序设计多少个线程,为什么这么设计。如果是io密集型的呢?如果是cpu密集型的呢? 这里就讲讲自己的理解吧,有可能全网打脸(*^▽^*)。 这里就直接将io密集型和cpu密集型吧。鉴于笔者看过的源码中,比如netty之类的,默认都是给CPU核数的两倍。这里就借鉴这个经验吧。在IO密集型的机器中,个人感觉就给CPU核数的两倍吧。因为IO操作的话,应该、可能大部分操作都是文件流操作类型的,用户对系统的性能应该要求得不是那么高,因此多出来的那些线程可以处理一些其他的事情。 如果是CPU密集型的话,个人感觉就给核数+1至4个线程吧。因为CPU密集型的话,肯定是有大规模的计算过程,要是线程数量给的太多的话,就会造成CPU之间频繁的切换,那就得不偿失了。多给1-4个线程呢,我的想法是万一那个线程挂了,或者阻塞了,这些线程就该出来接力了。 当然以上都是笔者自己的想法,仅供参考。 来源: oschina 链接: https://my.oschina.net/u/3367603/blog/4317701

并发 底层 设备 连接 知识库

夙愿已清 提交于 2020-07-26 23:32:25
Netty java Mina Supersocket .net ACL 非阻塞异步 IO Netty 一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高,两张图让你了解BIO和NIO的区 Mina 将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题 https://blog.csdn.net/tomisaboy/article/details/53689026 acl 库的 C 库(lib_acl) 的 aio 模块设计了完整的非阻塞异步 I https://www.cnblogs.com/caipeiyu/p/5559112.html SuperSocket与Netty之实现protobuf协议,包括服务端和客户端 https://blog.csdn.net/snowwolf_love/article/details/67044216 Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个通过 Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的 事件驱动 的异步API https://www.jianshu.com/p