首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/u_13850524/2775179

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

【技术原理】网络IO模型分析介绍(上)

Linux的网络IO模型 网络IO的本质是socket的读写,socket在Linux中被抽象为流,IO可以理解为对流的操作。 IO的分类和范畴 IO本身可以分为内存IO、网络IO和磁盘IO还有缓存IO等,一般讨论IO时更多是指后(网络IO和磁盘IO,因为这两个是最慢的哈哈),此处特别分析和说明网络IO。 操作处理的分类 阻塞/非阻塞 针对函数/方法的实现方式而言,即数据就绪之前是立刻返回还是等待,即发起IO请求后是否会阻塞。 阻塞IO机制 阻塞IO情况下,当用户调用read后,用户线程会被阻塞,等内核数据准备好并且数据从内核缓冲区拷贝到用户态缓存区后read才会返回。可以看到是阻塞的两个部分。 CPU把数据从磁盘读到内核缓冲区。 CPU把数据从内核缓冲区拷贝到用户缓冲区。 非阻塞IO机制 非阻塞IO发出read请求后发现数据没准备好,会继续往下执行,此时应用程序会不断轮询polling内核询问数据是否准备好,当数据没有准备好时,内核立即返回EWOULDBLOCK错误。 直到数据被拷贝到应用程序缓冲区,read请求才获取到结果。并且你要注意!这里最后一次 read 调用获取数据的过程,...

如何让Spring MVC框架使用我们封装的JsonUtils实现消息的序列化和反序列化,并适配actuator框架

spring mvc默认使用的json序列化和反序列工具是jackson,虽然我们项目中也是默认使用jackson,但由于一些历史项目存在日期格式不统一问题,我们需要自定义针对日期类型字段自适应解析,支持将时间戳、各种格式日期字符串都能解析为Date类型实例、LocalDate、LocalDateTime类型实例。 除此之外,笔者选择自己封装json解析框架,项目中引入了哪个json框架的依赖,JsonUtils工具类就自动切换使用哪个框架,因此笔者约定禁用json框架的注解,统一使用Java的transient关键字声明不需要序列化和反序列的字段,以适配各种框架,也适配Java的序列化。 综上,我们不得不想办法让Spring MVC框架使用我们封装的JsonUtils实现交互消息的序列化和反序列化。 那么,如何让Spring MVC框架使用我们封装的JsonUtils实现交互消息的序列化和反序列化? 替换SpringMVC消息转换器 Spring MVC在接收到请求时,先根据url找到HandlerMethod,在调用HandlerMethod之前,会先根据请求头的Content-T...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册