I/O模型和Java NIO源码分析
最近在学习Java网络编程和Netty相关的知识,了解到Netty是NIO模式的网络框架,但是提供了不同的Channel来支持不同模式的网络通信处理,包括同步、异步、阻塞和非阻塞。学习要从基础开始,所以我们就要先了解一下相关的基础概念和Java原生的NIO。这里,就将最近我学习的知识总结一下,以供大家了解。 为了节约你的时间,...
Android面试题 之 网络通信基础面试题
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点序列化判断标准序列化后的码流大小性能跨语言Serializable方式码流偏大性能较低XML方式人机可读性好文件格式复杂、占带宽JSON轻量级、兼容性好、格式简单,人机可读性较好可读性没有XML好,额外空间消耗比较大Proto...
2024-06-17
IO复用模型同步,异步,阻塞,非阻塞及实例详解
IO模型介绍 常用的5种IO模型: {代码...} 再说一下IO发生时涉及的对象和步骤: 对于一个network IO (这里我们以read举例),它会涉及到两个系统对象: 一个是调用这个IO的process (or thread) 一个就是系统内核(kernel) 当一个read操作发生时,它会经历两个阶段: 等待数据准备,比如accept(), recv()等待数据 (Waiting for ...
2020-02-08
阿里开发者招聘节 | 面试题05: 关于epoll和select的区别,哪些说法是正确的?
摘要: 阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的笔试真题这一次将陆续放出(面试题答案将在专辑分享结束后统一汇总分享)。并通过这些笔试真题开放阿里巴巴工作机会,让更多的开发者加入到阿里这个大平台。
Handler机制情景分析
在整个Android的源码世界里,有两大利剑,其一是Binder IPC机制,,另一个便是消息机制(由Handler/Looper/MessageQueue等构成的). Android有大量的消息驱动方式来进行交互,比如Android的四剑客Activity, Service, Broadcast, ContentProvider的启动过程的交互,都离不开消息机制,Android某种意义上也可以说成是一个以...
Swoole笔记(四)
Process Process是swoole内置的进程管理模块,用来替代PHP的pcntl扩展。 swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读键盘输入可以重定向为管道读取数据。 配合swoole_event模块,创建的PHP子进程可以异步的事件驱动模式。 创建子进程 函数原型: {代码...} $function,子进...
android源码分析-深入消息机制
android里的消息机制是非常重要的部分,这次我希望能够系统的剖析这个部分,作为一个总结。首先这里涉及到几个部分,从层次上看,分为java层和native层2部分;从类上看,分为Handler/Looper/Message/MessageQueue。
2017-03-14
整理
open:根据不同的底层操作系统创建不同的selector。windows采用的是poll方式,linux采用的是epoll方式。register:将通道包装为selectKey,放入fdMap和pollWapper。select:处理掉cancleKeys,调用pollWapper.poll,返回可读通道,可写通道,异常通道,根据poll返回结果更新selectKeys。select返回之后:根据返回的publi...
2021-04-16
物联网高并发编程之C10K问题原理和解决方案
互联网还不够普及,用户也不多。一台服务器同时在线100个用户估计在当时已经算是大型应用了。所以并不存在什么C10K的难题。互联网的爆发期应该是在www网站,浏览器,雅虎出现后。最早的互联网称之为Web1.0,互联网大部分的使用场景是下载一个Html页面,用户在浏览器中查看网页上的信息。这个时期也不存在C10K问题。
这才是 PHP 高性能框架 Workerman 的立命之本
在这个大家都崇尚高性能的时代,程序员的谈笑间句句都离不开高性能,仿佛嘴角边不挂着「高性能」三个字都会显得自己很 Low,其中众所皆知的 Nginx 就是高性能的代表。有些朋友可能连什么是高性能都不一定理解,其实高性能就是单位时间内能处理更多的客户端请求,如果要问具体能处理多少请求,这个就要结合软硬件条件来评...
2024-07-29
PHP异步编程,异步的本质
实现异步的方式有哪些? swoole提供了一些异步方法, 那它们底层是用哪种方式实现的呢? 实现异步的方式有: 线程方式 进程方式 IO复用 线程方式和进程方式类似, 有异步请求时, 开一个线程或者进程, 获取到数据后, 线程间可以直接共享数据. 进程间可以通过进程通信机制,如共享内存,管道等方式进行数据传送. 思路很简单, 可...
Redis 为什么这么快,你知道 I/O 多路复用吗?
今天我们讨论一下 redis 面试高频题,为什么 Redis 那么快? 首先,你可以先想一下答案,我先说下大家普遍的答案:单线程基于内存操作,速度快I/O 多路复用相信很多人第一时间回答出来上面这些,那么面试官一般会接着问,所有的操作都是单线程吗?单线程为什么快呢,什么是 I/O 多路复用?很多人这个时候就会 G 了。今天...
2022-12-13
Node.js架构简介
Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。Node.js 除了使用V8作为JavaScript引擎以外,还使用了高效的libev和libeio库支持事件驱动和异步式 I/O。
2015-03-10
reuseport与惊群效应
SO_REUSEADDR vs SO_REUSEPORTBSDSO_REUSEADDR效果1:0.0.0.0:21与127.0.0.1:21可以同时绑定效果2:对于TCP连接,绑定到某个特定IP+port时,可以忽略其time_wait状态注意:该选项只对调用bind()的新套接字有效,与正在占用地址的套接字是否使用了该选项无关。SO_REUSEPORT效果:允许多个套接字绑定到相同的IP+port注意:...
2024-10-24
PHP实现高并发服务器
一提到高并发,就没有办法绕开I/O复用,再具体到特定的平台linux, 就没办法绕开epoll. epoll为啥高效的原理就不讲了,感兴趣的同学可以自行搜索研究一下。
2020-12-01
Netty in Action笔记(Chpater1 ~ 2) First Netty application
【Chapter 1 Netty and Java NIO APIs】 The entire Netty API is asynchronous.
2015-03-07
[nginx文档翻译系列]连接处理方法
nginx支持各种连接处理方法。特别方法的可用性取决于所使用的平台。平台支持几种方法,nginx通常会自动选择最有效的方法。然而,如果需要的话,可以通过使用指令明确的选择一个连接处理的方法。
2016-08-05