handy源码阅读(六):tcp类】的更多相关文章

首先是tcpconn和tcpserver类: struct TcpConn : public std::enable_shared_from_this<TcpConn>, private noncopyable { enum State { Invalid = 1, Handshaking, Connected, Closed, Failed, }; TcpConn(); virtual ~TcpConn(); template <class C = TcpConn> static…
源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中. 连接Hbase,读取hbase的过程,首先代码如下: def tableInitByTime(sc : SparkContext,tableName : String,columns : String,fromdate: Date,todate : Date) : RDD[(ImmutableBytesWritable,Result)] = { val configuration = HBaseConfigura…
分为UdpServer类和UdpConn类. struct UdpServer : public std::enable_shared_from_this<UdpServer>, private noncopyable { UdpServer(EventBases* bases); int bind(const std::string& host, unsigned short port, bool reusePort = false); static UpdServerPtr sta…
通道,封装了可以进行epoll的一个fd. struct Channel: private noncopyable { Channel(EventBase* base, int fd, int events); ~Channel(); EventBase* getBase() { return base_; } int fd() { return fd_; } //通道id int64_d id() { return id_; } short events() { return events_;…
SafeQueue类继承与信号量mutex(用于加锁),nonocopyable 定义如下: template <typename T> struct SafeQueue : private std::mutex, private noncopyable { static const int wait_infinite = std::numeric_limits<int>::max(); SafeQueue(size_t capacity = ) : capacity_(capac…
EventsImp用于完成事件的处理. class EventsImp { EventBase* base_; PollerBase* poller_; std::atomic<bool> exit_; ]; int nextTimeout_; SafeQueue<Task> tasks_; std::map<TimerId, TimerRepeatable> timerReps_; std::map<TimerId, Task> timers_; std:…
类EventBase继承于类EventBases,继承于noncopyable.  其中noncopyable是一个去除了拷贝构造和赋值构造的类. noncopyable: class noncopyable { public: noncopyable() = default; virtual ~nonocopyable() = default; noncopyable(const noncopyable& non) = delete; noncopyable& operator=(con…
使用poll内核函数等待事件发生: struct PollerBase: private noncopyable { int64_t id_; int lastActive_; PollerBase(): lastActive_(-) { ); id_ = ++id; } ; ; ; virtual ~PollerBase() {}; }; struct PollerEpoll : public PollerBase { int fd_; std::set<Channel*> liveChan…
Object 1. @HotSpotIntrinsicCandidate @HotSpotIntrinsicCandidate public final native Class<?> getClass(); 使用@HotSpotIntrinsicCandidate注解标注的方法,表示JVM可能为该方法提供了一些基于CPU指令的高效实现,而非使用Java的实现. 2. native方法 getClass().hashCode().clone().notify()等方法的默认实现都是native…
本篇讲nsqlookupd中tcp.go.tcp_server.go tcp_server.go位于util目录下. 123456789101112131415161718192021222324252627282930313233343536373839 package util       import (    "log"    "net"    "runtime"    "strings")type TCPHandle…
初始化过程中四个数据成员中的两个数据成员被初始化: 一.vc被初始化为STP提供的C调用接口函数vc_createValidityChecker(): 二.optimizeDivides被初始化为false 重点探讨另外两个数据成员. 一.ExprHashMap constructed ExprHashMap< std::pair<ExprHandle, unsigned> > constructed; ExprHashMap为一个模板类, 继承unorderedmap,由于自定义…
String public final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc { ... } 1. value数组 用于存储String的字符. @Stable private final byte[] value; @Stable注解表示变量最多被修改一次,称为"稳定的". 2. checkBoundsO…
1. Struts2架构图  当外部的httpservletrequest到来时 ,初始到了servlet容器(所以虽然Servlet和Action是解耦合的,但是Action依旧能够通过httpservletrequest取得请求参数), 然后通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和 Dispatcher:FilterDispatcher主要通过AcionMapper来决定需要调用哪个Actio…
一.前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐.笔者也会顺着他的顺序来阅读一遍,除了基础的方法外,添加了其他补充内容. 二.HashMap结构概览 以下是HashMap的数据结构: 不同于之前的jdk的实现,1.8采用的是数组+链表+红黑树,在链表过长的时候可以通过转换成红黑树提升访问性能.大多数情况下,结构都以链表的形式存在,所以检查是否存在树节点会增加访问方法的时间,但是相较于其优点来说还是可以接受的. 三.…
一.前言 今天我们来看一下本次集合源码阅读里的最后一个Map--IdentityHashMap.这个Map之所以放在最后是因为它用到的情况最少,也相较于其他的map来说比较特殊.就笔者来说,到目前为止还没有用到过它 ┐(゚-゚)┌.它的罕见与它的用途有关,当时的Map设计者是这么说的: This class is designed for use only in the rare cases wherein reference-equality semantics are required. 这…
2019独角兽企业重金招聘Python工程师标准>>> 作者:张学程 本文为 DM 源码阅读系列文章的第六篇,在 上篇文章 中我们介绍了 binlog replication 处理单元的实现,对在增量复制过程中 binlog event 的读取.过滤.路由.转换以及执行等逻辑进行了分析. 本篇文章我们将会对 relay 数据处理单元的实现进行详细的讲解.这个单元的作用是从上游 MySQL/MariaDB 读取 binlog event 并写入到本地的 relay log file 中:当…
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AFNetworking的网络安全策略,尤其指HTTPS(大家可以先简单了解下HTTPS).再一个就是分析下AFNetworkReachabilityManager文件,看看AFNetworking如何解决网络状态的检测. 2. AFSecurityPolicy - 网络安全策略 之前我们在AFURLS…
38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocketBlocking套接口阻塞属性设置 13)setupStreamSocket设置流式套接口 本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 简介 网络相关函数是一系列用于操作网…
原文链接:http://xueliang.org/article/detail/20200712234015993 前言 在Netty的线程模型中,对于一个TCP连接的读写操作,都是由一个单线程完成的,对于刚入门Netty的新手,这完全颠覆我们熟知的多线程能够加快处理速度,缩短处理时间的常规思路. 实际上,Netty采用了异步通信模式,一个IO 线程可以并发处理N 个客户端连接和读写操作,这从根本上解决了传统同步阻塞IO 一连接一线程模型,架构的性能.弹性伸缩能力和可靠性都得到了极大的提升. 源…
25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment 25 BasicUsageEnvironment0基本使用环境基类——Live555源码阅读(三)UsageEnvironment 简介 代码定义如下 BasicUsageEnvironment0构造析构与重置 ResultMsg系列方法 getResultMsg() const方法(获取buffer) appendToResultMsg方法(添加msg到buffe…
24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment 简介 下面是其定义 UsageEnvironment的构造与析构 reclaim方法(自我回收) internalError方法(内部错误) 这是Live555源码阅读的第三部分,包括了UsageEnvironment相关的三个类. 本文由乌合之众 lym瞎编…
21_BasicTaskScheduler基本任务调度器(一)——Live555源码阅读(一)任务调度相关类 BasicTaskScheduler基本任务调度器 BasicTaskScheduler基本任务调度器的定义 BasicTaskScheduler的构造与析构 下面来介绍一下schedulerTickTask函数(调度滴答任务) 这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http:…
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso scheduleDelayedTask方法(调度延时任务) scheduleDelayedTask方法有三个参数,分别是时间microseconds,任务proc,数据clientData. 其使用这三…
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso BasicTaskScheduler0 基本任务调度类基类 BasicTaskScheduler0是一个用作传递的类,它继承自TaskScheduler,又派生出BasicTaskScheduler.其…
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso TaskScheduler任务调度器抽象基类 TaskScheduler是一个抽象基类,其定义在live555sourcecontrol\UsageEnvironment\include\UsageEn…
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 任务调度是Live555源码中很重要的部分.前面介绍的基本组件类在这里都用到了. 任务调度部分有三个类,其有继承关系. 抽象基类TaskScheduler 派生出 BasicTaskScheduler0…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso 哈希表的增删查改 这是BasicHashTable基本哈希表类源码分析的最后一个部分,即哈希表的基本操作方法.这里时间没有直接给出修改条目的方法,因为它包含在了add方法中. Add方法(增加条目) Add方法先…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso BasicHashTable的辅助方法 这里介绍的是一些用来对哈希表进行一些基本的哈希操作的函数. randomIndex(uintptr_t i) const方法 randomIndex(uintptr_t i…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso BasicHashTable基本哈希表类 这个类搞的很复杂,实质上没什么东西,就是很难看. 先画一个简图 先说说这个BasicHashTable的设计吧. 这个表的内部嵌套定义了一个TableEntry(表条目)…
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/ 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso HashTable抽象哈希表类 HashTable类内部嵌套定义了一个迭代器类Iterator,这个迭代器类用于循环访问表的成员.这也是一个抽象类,但是其有一个静态的方法static Iterator* crea…