会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
明明1109
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
8
9
10
11
12
13
14
15
16
···
25
下一页
2022年4月12日
muduo笔记 网络库(九)输入输出缓冲区Buffer
摘要: 目录应用层缓冲区Buffer设计Buffer设计思想Buffer要求线程安全Buffer数据结构Buffer的操作基本IO操作自动增长size()和capacity()内部腾挪prependBuffer类的实现构造函数与析构函数读取prependable, readable, writable空间地
阅读全文
posted @ 2022-04-12 17:42 明明1109
阅读(2087)
评论(0)
推荐(0)
2022年4月11日
muduo笔记 网络库(八)EventLoop的多线程应用:EventLoopThread、EventLoopThreadPool
摘要: 目录EventLoop的多线程应用多个Reactor模型EventLoopThreadPool 事件循环线程池类EventLoopThreadPool类声明EventLoopThreadPool的构造与析构start() 启动IO线程池分派任务给IO线程的利器:getNextLoop()不常用的ge
阅读全文
posted @ 2022-04-11 00:50 明明1109
阅读(1555)
评论(0)
推荐(0)
2022年4月10日
muduo笔记 网络库(五)事件循环EventLoop
摘要: 目录事件驱动与EventLoopEventLoopEventLoop的构造与析构特定线程检查,确保线程安全loop循环添加、更新、删除通道定时任务runInLoop与queueInLoop执行用户任务eventfd与wakeup()唤醒eventfd原理EventLoop使用eventfd唤醒loo
阅读全文
posted @ 2022-04-10 19:53 明明1109
阅读(3122)
评论(6)
推荐(1)
2022年4月7日
std::swap与std::iter_swap 交换元素
摘要: std::swap std::swap 用于交换2个元素,g++源码如下 /** * @brief Swaps two values. * @param __a A thing of arbitrary type. * @param __b Another thing of arbitrary ty
阅读全文
posted @ 2022-04-07 22:47 明明1109
阅读(555)
评论(0)
推荐(0)
std::tie 简单应用:解压元组std::tuple
摘要: std::tie 介绍 std::tie是C++11以后引入的新特性,是一个函数模板,原型: template<class... Types> tuple<Types&...> tie (Types&... args) noexcept; tie将其参数通过引用方式绑定到tuple的元素,常用来解压
阅读全文
posted @ 2022-04-07 10:44 明明1109
阅读(828)
评论(0)
推荐(0)
2022年4月6日
LeetCode74 搜索二维矩阵
摘要: 题目 LeetCode74 搜索二维矩阵 提示: m == matrix.length n == matrix[i].length 1 ⇐ m, n ⇐ 100 -104 ⇐ matrix[i][j], target ⇐ 104 解 方法一:暴力搜索 遍历查找,O(mn)。 简单,但不是期望考察的算
阅读全文
posted @ 2022-04-06 16:38 明明1109
阅读(135)
评论(0)
推荐(0)
2022年4月5日
muduo笔记 单例模式类Signleton
摘要: 目录Signleton测试Singleton知识点 Signleton Signleton<T>使用pthread_once_t,确保T类型对象只初始化一次。 template <typename T> class Signleton : noncopyable { public: static T
阅读全文
posted @ 2022-04-05 15:35 明明1109
阅读(214)
评论(0)
推荐(0)
2022年4月2日
linux C 可变参数类型va_list
摘要: 可变函数参数,会用到va_list系列宏,在C中用于定义可变参数列表,包含可变参数信息。 常用的va_list系列宏 包含: va_start(ap, last)宏:初始化可变参数列表; va_arg(ap, type)宏:返回下一个参数; va_copy(dest, src)宏:复制参数列表指针,
阅读全文
posted @ 2022-04-02 20:55 明明1109
阅读(998)
评论(0)
推荐(0)
2022年3月29日
C++ POD类型
摘要: 什么是POD类型? POD是Plain Old Data,是C++定义的一类数据结构,如char,int,float,double等都是POD类型。Plain顾名思义,表明POD是个普通类型,Old代表是旧的,与C语言兼容,意味着可以用古老的memcpy()进行复制,memset()进行初始化等。也
阅读全文
posted @ 2022-03-29 00:38 明明1109
阅读(974)
评论(0)
推荐(0)
2022年3月28日
noexcept修饰符,noexcept操作符
摘要: noexcept的两个作用: 1)作为noexcept修饰符,声明函数是否抛出异常; 2)作为noexcept操作符,判断表达式是否抛出异常; noexcept修饰符 noexcept修饰符有两种形式:一种是简单在函数声明后加noexcept,另一种是接受一个常量表达式作为参数,如: void ex
阅读全文
posted @ 2022-03-28 13:47 明明1109
阅读(594)
评论(0)
推荐(0)
宏__cplusplus
摘要: 宏__cplusplus有2个作用: 1)用于C/C混合代码; 2)用于判断C版本; C, C++混合代码 编写C/C++混合代码时,头文件常会有如下声明: #ifdef __cplusplus extern "C" { #endif // C代码 #ifdef __cplusplus } #end
阅读全文
posted @ 2022-03-28 09:45 明明1109
阅读(2274)
评论(0)
推荐(0)
2022年3月24日
muduo笔记 网络库(六)Socket类及SocketsOps库函数封装
摘要: Socket类 Socket类是socket 文件描述符(sock fd)的一个轻量级封装,提供操作底层sock fd的常用方法。采用RTII方式管理sock fd,但本身并不创建sock fd,也不打开它,只负责关闭。 提供的public方法主要包括:获取tcp协议栈信息(tcp_info);绑定
阅读全文
posted @ 2022-03-24 08:45 明明1109
阅读(1080)
评论(4)
推荐(2)
muduo笔记 网络库(七)TCP连接TcpConnection、Acceptor、TcpServer
摘要: 目录TcpServer接受新连接Acceptor类Acceptor构造与析构Acceptor监听Acceptor接受连接TcpServer类TcpServer的构造与析构TcpConnection类断开Tcp连接断开连接方式Channel与断开连接TcpConnection与断开连接TcpServe
阅读全文
posted @ 2022-03-24 08:32 明明1109
阅读(2443)
评论(7)
推荐(2)
2022年3月13日
muduo笔记 网络库(四)TimerQueue定时器队列
摘要: 目录timerfd简要介绍定时功能相关类Timer类TimerId类TimerQueue类TimerQueue声明TimerQueue构造函数TimerQueue析构TimerQueue重要接口addTimer 添加定时器cancel 取消定时器handleRead处理TimerQueue上所有超时
阅读全文
posted @ 2022-03-13 20:33 明明1109
阅读(1532)
评论(0)
推荐(2)
2022年3月12日
muduo笔记 网络库(一)概括
摘要: 目录网络事件处理模式Reactor模式Proactor模式muoduo中的Reactor模式参考 网络事件处理模式 服务器编程中,通常有两种高效的事件处理模式:reactor模式,proactor模式。 Reactor模式 要求主线程(I/O单元)只负责监听文件描述符上是否有事件发生,有的话就立即将
阅读全文
posted @ 2022-03-12 19:58 明明1109
阅读(790)
评论(0)
推荐(0)
muduo笔记 网络库(三)事件通道Channel
摘要: 目录Channel 类Channel类声明handleEvent 处理事件handleEventWithGuard 识别事件并回调update 更新通道remove 移除通道参考 Poller的存在,是为了监听事件,但具体监听什么事件呢? 这就需要用到Channel类。一个Channel对象绑定了一
阅读全文
posted @ 2022-03-12 16:54 明明1109
阅读(1192)
评论(0)
推荐(1)
muduo笔记 网络库(二)I/O复用封装Poller
摘要: 目录Poller类派生类EPollPoller派生类PollPoller I/O复用使得程序能同时监听多个文件描述符,能有效提高程序性能。Linux下,实现I/O复用的系统调用主要有3个: 1)select(2);2)poll(2);3)epoll(7)。 muduo采用了2)和3),分别用Poll
阅读全文
posted @ 2022-03-12 16:40 明明1109
阅读(866)
评论(0)
推荐(0)
2022年3月8日
muduo笔记 线程池ThreadPool
摘要: 目录线程池模型线程池的组成ThreadPool接口ThreadPool实现数据成员线程池的构造启动与停止往工作队列加入任务对象从工作队列取任务对象子线程loopThreadPool的使用、测试小结参考 muduo线程池ThreadPool,采用的是固定线程数目的线程池方案。 线程池模型 模型图如下:
阅读全文
posted @ 2022-03-08 11:44 明明1109
阅读(1387)
评论(0)
推荐(1)
2022年3月7日
muduo笔记 日志库(二)
摘要: 目录后端AsyncLogging类数据成员LargeBuffer 存放大量log消息后端线程 异步写数据到log文件LogFile类构造函数滚动日志文件日志文件名写日志文件操作flush日志文件AppendFile类数据结构RAII方式打开、关闭文件写数据到文件使用异步日志小结参考 前半部分mudu
阅读全文
posted @ 2022-03-07 16:58 明明1109
阅读(2081)
评论(4)
推荐(2)
2022年3月6日
muduo笔记 日志库(一)
摘要: 目录日志库模型前端Logger类日志等级类型LogLevel用户接口构造函数输出位置,冲刷日志日志等级,时区析构函数Impl类Impl的数据结构Impl构造函数LogStream类实现Small Buffer存放log消息operator<<格式化数据staticCheck()静态检查小结 后半部分
阅读全文
posted @ 2022-03-06 22:45 明明1109
阅读(3704)
评论(4)
推荐(2)
上一页
1
···
8
9
10
11
12
13
14
15
16
···
25
下一页
公告