
网络编程
文章平均质量分 87
JavaEdge聊AI
关注并私信我,获取更多大厂求职经验。《编程严选网》创始人
展开
-
为什么TCP要做成流式协议,而非包呢?
BTW,的确存在⽀持message的传输层协议SCTP,但过于复杂得不到⼴泛⽀持(Windows压根不⽀持),濒临灭绝。⽽那些适合⽤“⽤户包”来实现的功能(如微服务的RPC ),可直接⽤HTTP做传输层。即把⼀个本设计为应⽤层的协议,保留其Header,编码,拆包等基本能⼒;同时将如Cache协商,⽤不到的编码格式等扔掉不实现。在不对基础协议做更改的前提下就能run。另外⼀个选项⽤ZeroMQ,天然封装Req/Resp能⼒,可在此基础构造应⽤层协议。钱多⼤⼚,⾃⼰手写协议满足业务也完全可。原创 2023-10-07 23:35:38 · 159 阅读 · 0 评论 -
掌握网络架构核心!了解为什么要分层
回顾网络分层模型,也了解OSI模型和TCP/IP模型的区别和联系。对分层模型有了更加深入的理解,这个对我们开展网络排查工作,有指导性意义。应用层以HTTP为例,可以用浏览器开发者工具,实现远程IP识别、耗时分析、Cookie删除等需求。会话层和表示层以TLS为主,我们还是用浏览器开发者工具,可以查看证书细节、协商后使用的Cipher suite等信息,属于静态信息。然后学习了用tcpdump和Wireshark查看更详细的TLS握手细节的方法。这些信息是动态的,也只有用抓包分析的手段才能做到。原创 2023-07-02 21:01:49 · 849 阅读 · 0 评论 -
如何设计可向后兼容的RPC协议
RPC里协议的作用就类似文字中的符号,作为应用拆解请求消息的边界,保证二进制数据经过网络传输后,还能被正确地还原语义,避免调用方跟被调用方之间的“鸡同鸭讲”。原创 2023-02-03 09:57:55 · 380 阅读 · 0 评论 -
我的生物系学妹也能听懂的Java NIO中Write事件
不管系统底层三次连接是否成功,selector都会被唤醒继而触发OP_CONNECT事件,若握手成功,且该连接未被其他线程关闭,finishConnect会返回true,然后就能顺利进行channel读写。要触发写事件,要先向 selector 注册该通道的写事件,跟注册读事件一样,当底层写缓冲区有空闲,就会触发写事件。所以一般只要注册了写事件,就会立马触发,为避免 cpu 空转,在写操作完成后,需将写事件取消,然后下次再有写操作时重新注册写事件。),也可将数据发出去,但不灵活,可能浪费CPU。原创 2021-05-29 16:14:41 · 1479 阅读 · 4 评论 -
教你微信IM即时消息系统的架构设计
使用者眼中的聊天系统站在使用者的角度从直观体验上看,一个聊天系统至少组成部分:用户账号、账号关系、联系人列表、消息、聊天会话。聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项。账号和账号之间通过某些方式(比如加好友、互粉等)构成账号间的关系链。你的好友列表或者聊天对象的列表,我们称为联系人的列表,其中你可以选择一个联系人进行聊天互动等操作。在聊天互动这个环节产生了消息。同时你和对方之间的聊天消息记录就组成了一个聊天会话,在会话里能看到你们原创 2021-01-25 23:40:05 · 4367 阅读 · 2 评论 -
快给你的软件加IM聊天功能!
消息存储我们回想一下上一篇的内容,即时消息系统中,消息作为互动的载体,是必不可少的要素之一。一般来说,大部分即时消息系统为了便于查看历史消息或者用于暂存离线消息,都需要对消息进行服务端存储,因此,我们先来看一看,这些互动过程产生的消息在服务端应该怎么存储或者暂存。消息索引和消息内容这里,我以点对点消息的存储为例,来讲解一下。点对点消息的参与方有两个:消息发送方和消息接收方。收发双方的历史消息都是相互独立的。互相独立的意思就是:假设发送方删除了某一条消息,接收方仍然可以获取到这条消息。所以,从库.原创 2021-02-01 23:24:41 · 1337 阅读 · 0 评论 -
硬核干货:HTTP超时常见写bug姿势及解决方案
1 超时,网络终究是靠不住的HTTP调用既然是网络请求,就可能超时,超时错误分两种,connect timeout和read timeout,前者可能是网络问题,或者服务端连接池不够用了。后者是连接已经建立了,但是服务端太忙了,不能及时处理完你的请求。因此在实际开发中都需要注意考虑这些超时的处理措施。框架设置的默认超时时间是否合理?过短,请求还未处理完成,你有些急不可耐了呀!过长请求早已超出正常响应时间而挂了!网络不稳定性,超时后可以通过定时任务请求重试这时,就要注意考虑服务端接口幂等性原创 2021-07-15 16:10:54 · 3210 阅读 · 1 评论 -
RESTful 架构到底是什么?
导读来源REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。他参与设计了HTTP协议,也是Apache Web Server项目(可惜现在已经是 Nginx 的天下)的co-founder。论文地址:Architectural Styles and the Design of Network-based Software ArchitecturesREST章节:Fielding Dissertation: CHAPTER 5: Representational原创 2021-07-15 11:27:12 · 1260 阅读 · 0 评论 -
websocket 项目启示录
用于一用户二TOM 群发了消息Mike 也受到了消息的重创原创 2020-10-31 23:16:37 · 1254 阅读 · 0 评论 -
一文辨明QPS、TPS、PV、UV、DAU、MAU、并发用户数、吞吐量~
1 QPS(Queries Per Second)每秒查询率,一台服务器每秒能够响应的查询次数。一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,即每秒的响应请求数,即最大吞吐能力。2 TPS(Transactions Per Second)事务数/秒。一个事务指一个客户端向服务器发送请求,然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。辨明QPS和TPSTPS即每秒处理事务数,包括了用户请求服务器服务器自己的原创 2020-10-15 17:46:51 · 3621 阅读 · 1 评论 -
Java 网络编程实战(二) - Unix的I/O模型解析
网络编程的本质是进程间通信2 通信的基础是IO模型输入流文件,Java对象,字符串都可以是数据源输出流3 java.io 家族字符流字节流4 设计模式 - 装饰器模式奶茶店里面的装饰器模式(珍珠只是装饰)Socket也是一种数据源Socket是网络通信的端点Unix中的Socket是什么◆ Unix系统中一切皆是文件◆ 文件描述符表是已打开文...原创 2019-11-23 01:39:21 · 1684 阅读 · 0 评论 -
Java 网络编程实战(一) - 简介
网络编程进化石为什么学习呢!业务逻辑无非是增删改减会用框架却不懂底层模型教程计划特色原创 2019-11-17 22:51:11 · 2257 阅读 · 0 评论 -
Netty4的EventLoop和线程模型原理解析
简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。 显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的影响,因此开发人员需要理解与不同模型相关的权衡。在本文中,我们将详细地探讨 Netty 的线程模型。它强大但又易用,并且和 Netty 的一贯宗旨一样,旨在简化你的应用程序代码,同时最大限度地提高性能和可维护性。我们还将讨论致使选择...原创 2018-07-16 12:27:04 · 2048 阅读 · 0 评论