
网络编程
webSocket\HTTP、TCP
qililong88
这个作者很懒,什么都没留下…
展开
-
Netty学习笔记(十)心跳机制与断线重连
心跳是啥在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性.心跳机制的工作原理心跳机制的工作原理是: 在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互. 自然地, 当某一端收到心跳消息后, 就知道了对方仍然在线, 这就确保 TCP 连接的有效性转载 2020-09-19 12:14:01 · 887 阅读 · 0 评论 -
Netty学习笔记(九)新连接接入
引子在上一篇分析NioEventLoop那篇文章中分析NioEventLoop.run()时候提到当方法processSelectedKey()处理事件的时候,比如读事件,最终调用了unsafe.read();本文就来分析一下unsafe对象的read方法的具体实现。检测新的连接源码中的Unsafe是一个接口,在调试时可知其实现类为NioMessageUnsafe类,其read方法源码如下: private final List<Object> readBu.转载 2020-09-19 11:31:02 · 346 阅读 · 0 评论 -
netty学习笔记(八)ByteBuf分析2
引子java NIO 使用ByteBuffer作为字节容器,使用上过于复杂,为此netty使用ByteBuf来代替ByteBuffer。ByteBuf的APINetty的数据处理API通过两个组件暴露:ByteBuf和ByteBufHolder。 ByteBuf维护了两个不同的索引:readerIndex和writerIndex,分别用于读写。 我们在ByteBuf的源码的注释中看到: * +-------------------+------------------+-.转载 2020-09-19 11:29:10 · 549 阅读 · 0 评论 -
Netty学习笔记(七)ByteBuf分析
ByteBufjava NIO 使用ByteBuffer作为字节容器,使用上过于复杂,为此netty使用ByteBuf来代替ByteBuffer。ByteBuf是一个抽象类,不能直接使用,它的子类有:ByteBuf子类它有两个重要的指针:readerIndex读指针,writerIndex写指针。在ByteBuf的0到readerIndex区间内不可读,在readerIndex到writerIndex区间内可读,在writerIndex到capacity容量区间内可写入。另外Byte.转载 2020-09-19 11:26:58 · 267 阅读 · 0 评论 -
Netty学习笔记(六)Pipeline
Pipeline初始化Pipeline创建Netty在创建客户端Channel和服务端Channel的时候,都会调用父类的构造函数: protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newChannelPipeline(); }构造函数转载 2020-09-19 11:25:21 · 3344 阅读 · 1 评论 -
Netty学习笔记(五)NioEventLoop启动
引子在之前的文章中有提到BootStrap启动类中绑定端口的内部实现如下: private static void doBind0( final ChannelFuture regFuture, final Channel channel, final SocketAddress localAddress, final ChannelPromise promise) { channel.eventLoop().execu.转载 2020-09-19 11:22:41 · 338 阅读 · 0 评论 -
Netty学习笔记(四)NioEventLoopGroup分析
引子在上一篇文章中我们已经分析了Netty注册相关的逻辑,接下来再开看下NioEventLoopGroup这个类内部的相关构造。NioEventLoopGroup在之前的demo中第一行就是:EventLoopGroup bossGroup = new NioEventLoopGroup(1);这个NioEventLoopGroup类的构造函数最终实现如下:protected MultithreadEventExecutorGroup(int nThreads, E..转载 2020-09-19 11:21:27 · 494 阅读 · 0 评论 -
Netty学习笔记(三)Reactor线程模型
单线程模型所有操作都在同一个NIO线程处理,在这个单线程中要负责接收请求,处理IO,编解码所有操作,相当于一个饭馆只有一个人,同时负责前台和后台服务,效率低。单线程模型多线程模型多线程的优点在于有单独的一个线程去处理请求,另外有一个线程池创建多个NIO线程去处理IO。相当于一个饭馆有一个前台负责接待,有很多服务员去做后面的工作,这样效率就比单线程模型提高很多。多线程模型主从线程模型多线程模型的缺点在于并发量很高的情况下,只有一个Reactor单线程去处理是来不..转载 2020-09-19 11:19:56 · 208 阅读 · 0 评论 -
Netty学习笔记(二)Channel的分类
Channel分类在Netty中存在众多Channel类和接口,大致关系如下:Netty中Channel类图Channel:和Java Nio中的Channel同名,是Netty对网络底层读写和连接的抽象。 AbstractChannel: 是Channel的抽象实现类,抽象出了parent,id,unsafe,pipeline等概念。 AbstractNioChannel:封装Java NIO,通过Selector选择器进行IO事件的监听,拥有SelectionKey,readI.转载 2020-09-19 10:46:12 · 488 阅读 · 0 评论 -
Netty学习笔记(一)组件
Channel,EventLoop和ChannelFuture类构成了Netty网络抽象的代表:Channel:对应Socket EventLoop:对应控制流,多线程处理,并发 ChannelFuture:对应异步通知Channel接口Channel是对Socket的封装,大大降低了直接使用Socket的复杂性。EventLoop接口EventLoop用于处理连接的生命周期中所发生的事件。在服务端编程中,EventLoop起到了监听端口连接和数据读取的工作。ChannelFutu转载 2020-09-19 10:43:45 · 228 阅读 · 0 评论 -
微服务入门-1、RPC、APIgateway
微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互通讯。微服务的优势:独立性 每个微服务的构建、部署、扩容、缩容、数据库都是独立的。数据库表修改时,互补影响。 敏捷性 功能单一、可快速添加新需求 技术栈灵活 可以发挥不转载 2020-09-17 19:01:44 · 1189 阅读 · 0 评论 -
Tomcat消息处理流程
图1-1一、前言 平时我们都将项目扔给Tomcat就行了,做了撒手掌柜,没接触过JavaEE项目,对于请求从服务器接收后的处理流程模棱两可,不利于对Web项目的理解,我们现...原创 2020-09-17 17:10:18 · 280 阅读 · 0 评论 -
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
原文:https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascript.转载 2020-09-17 17:04:04 · 784 阅读 · 0 评论 -
WebSocket总结
IM通讯项目中用到了WebSocket建立连接,这里做一个简单地整理总结:一句话总结一下 WebSocket:WebSocket 是 HTML5 开始提供的一种独立在单个TCP连接上进行全双工通讯的有状态的协议(它不同于无状态的 HTTP),并且还能支持二进制帧、扩展协议、部分自定义的子协议、压缩等特性。一、Socket简介Socket又称‘套接字‘,应用程序通常通过‘套接字‘向网络发出请求或者应答网络请求。Socket可以实现应用程序间网络通信。Socket可以使用TCP/IP协议或..原创 2020-09-17 16:49:06 · 837 阅读 · 0 评论 -
Nginx conf配置详解
upstream 参数nginx关于upstream参数官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.htmlupstream 参数 参数 描述 service ...转载 2020-05-18 11:23:59 · 897 阅读 · 0 评论 -
爬虫与反爬虫策略
反爬虫策略:网页时代,验证header&签名,动态加载,反selenium/phantomjs,ip封禁,有毒数据,动态爬虫阈值(过了阈值后依然允许爬一阵再封禁),各种验证码,云厂商反爬模式识别app时代,ios和安卓的反逆向,比如安卓的加壳,代码混淆,强制登录token,账户管理,反抓包(ssl pin),包签名校验,反注入(监测),so,LLVM混淆,反Hook,异常账号识别,模式...原创 2020-03-27 18:05:49 · 254 阅读 · 0 评论