3.Netty from the ground up
Netty 组件:
- Bootstrap / ServerBootstrap
- EventLoop
- EventLoopGroup
- ChannelPipeline
- Channel
- Future / ChannelFuture
- ChannelInitializer
- ChannelHandler
接下来将会在本章对上面组件进行介绍,为了避免分散地介绍它们,我们将详细说明它们是如何在一起工作的。
Netty 组件:
接下来将会在本章对上面组件进行介绍,为了避免分散地介绍它们,我们将详细说明它们是如何在一起工作的。
本章内容主要介绍:
前面关于 Netty 架构的省略。
整个 Netty 的 API 都是异步的。异步处理并不新鲜,已经出现有一段时间了。在这些年里,IO 经常出现瓶颈,所以异步处理变得越来越重要。
在使用资源时调用异步处理可以变得更有效率,因为当任务进行时,我们可以去干其他事,直到我们收到任务完成的信息。
可以到官网下载,也可以直接使用 maven 依赖:
1 | <dependencies> |
减少HTTP请求,是雅虎前端性能优化35条军规的第1条,2006年雅虎提出了这35条军规,从那以后,就深深地影响到了一批又一批的前端开发者,即使在12年后的今天,影响力依旧不减…
但是,雅虎军规中还有1条是:拆分资源以最大化利用浏览器并行下载的能力。现在问题就来了,减少HTTP请求,但网页所需的资源并不能减少(否则网页就不再是之前的网页了),所以减少HTTP请求,主要是通过合并资源来实现的,一边是建议合并资源,一边是建议拆分资源,显然是有冲突的地方,那么到底该怎么做呢?网上有些文章也讨论过这个问题,但大多是停留在想当然的理论分析上,而且忽略了TCP传输机制的影响。
名称 | 底层结构 | 线程安全 | 有序 | 值唯一 |
---|---|---|---|---|
LinkedList | 双向链表 | x | √ | 不唯一 |
ArrayList | 数组 | x | √ | 不唯一 |
Vector | 数组 | √ | √ | 不唯一 |
HashTable | 数组+链表 | √ | x | 不为空 |
HashSet | 数组+链表 | x | x | 唯一 |
TreeSet | 红黑树 | x | √ | 唯一 |
HashMap | 数组+链表/红黑树 | x | x | 不唯一 |
TreeMap | 红黑树 | x | √ | 不唯一 |
ConcurrentHashMap | 数组+链表/红黑树 | √ | x | 不唯一 |
如果一个对象具有强引用,那垃圾回收器(Garbage Collection,GC)绝不会回收它。当内存空间不足,JVM 宁愿抛出 OutOfMemoryError,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
原文Spring中获取request的几种方法,及其线程安全性分析
本文将介绍在使用 Spring MVC 开发中,获取 request 对象的几种方法,并讨论其线程安全性。
在使用 Spring MVC 开发 Web 系统时,经常需要在处理请求时使用 request 对象。比如:获取客户端 IP 地址、请求的 URL、header 中的属性(Cookie、授权信息)、body 中的数据等。
由于在 Spring MVC 中,处理请求的 Controller、Service 等对象都是单例的,因此获取 request 对象时最需要注意的问题,便是 request 对象是否线程安全:当有大量并发请求时,能否保证不同请求/线程中使用不同的 request 对象。