摘要:
简介 TcpConnection类,TcpServer类,Acceptor类是构成非阻塞TCP网络编程库的重要组成部分。 本文主要针对muduo源码进行分析。(Acceptor类在上篇中已经分析过了) muduo网络库的单线程设计方式,即一个EventLoop 处理所有的事件,包括链接的建立、IO、 阅读全文
摘要:
Endian.h 封装了字节序转换函数(全局函数,位于muduo::net::sockets名称空间中) // Copyright 2010, Shuo Chen. All rights reserved. // http://code.google.com/p/muduo/ // // Use o 阅读全文
摘要:
简介 Poller class 是IO multiplexing的封装。在muduo中它是一个抽象类,因为muduo同时支持poll和epoll两种IO multiplexing机制。Poller是EventLoop的间接成员,只供其owner EventLoop在IO线程中调用,因此无需加锁。其生 阅读全文
摘要:
简介 Channel类,即通道类。Channel类是可能产生事件的文件描述符封装在其中的,这里的文件描述符可以是file descriptor,可以是socket,还可以是timefd,signalfd。但实际上它不拥有fd_,不用负责将其关闭,关闭是Eventpool的事情。 Acceptor和T 阅读全文
摘要:
(muduo源码系列大多是我在看muduo源码的时候结合网上博客总结的,我尽可能多的是对源码注释) 简介 Muduo的定时器功能主要由三个class实现,TimerId,Timer,TimerQueue,TimerQueue的接口只有两个addTimer()和cancel(),addTimer()是 阅读全文
摘要:
根据网上各种博客,然后自己写的一个无锁队列。 以后尝试性用这个代替线程池中的任务队列,应该这样会快很多。 1 #include <iostream> 2 #include <thread> 3 #include <atomic> 4 5 template<class T> 6 class LinkN 阅读全文
摘要:
/*****(一)将n划分成若干不同整数之和的划分数************ dp[i][j]表示将整数i划分成不超过j的划分数,分含不含j两种情况 dp[0][0] = 1 dp[i][j] = dp[i-j][j-1] + dp[i][j-1];(j<=i) = dp[i][i] (j >i) 阅读全文
摘要:
哈夫曼树的构造(哈夫曼算法)1.根据给定的n个权值{w1,w2,…,wn}构成二叉树集合F={T1,T2,…,Tn},其中每棵二叉树Ti中只有一个带权为wi的根结点,其左右子树为空.2.在F中选取两棵根结点权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为左右子树根结点的权值 阅读全文
摘要:
最近在看面经的过程中遇到一个问题 线程池的实现 我想了想 完全不会啊 于是就开始了我的线程池学习之路 在网上仔细研究了一下那个100行的C++线程池代码(那个作者在花式秀C++11),不过有一说一 他写的确实好。 先上代码 1 #include <vector> 2 #include <queue> 阅读全文
摘要:
题意: 对于给出的字符串S, 长度不超过1000, 求其中本质不同的子串的数量, 这些子串满足在字符串S中出现了至少不重合的2次 题解: 将串放入后缀自动机中然后求出每一个节点对应的子串为后缀的子串出现的最早和最晚的位置 然后根据 1 #include <set> 2 #include <map> 阅读全文