2020年5月4日

网络编程实战

摘要: “一段数据流从应用程序发送端,一直到应用程序接收端,总共经过了多少次拷贝?” 先看发送端,当应用程序将数据送到发送缓冲区时,调用的是 send 或 write 方法,如果缓存中没有空间,系统调用就会失败或者阻塞。我们说,这个动作事实上是一次”显式拷贝“。而在这之后,数据将会按照 TCP/IP 的分层 阅读全文

posted @ 2020-05-04 16:16 flysong 阅读(237) 评论(0) 推荐(0) 编辑

2019年9月7日

算法训练营0:栈排序,直方图最大面积,最大红矩形

摘要: 栈排序 问题描述 给定一个序列 A,请你将它升序排序。 输入格式 第一行一个正整数 n,表示序列长度。 第二行 n 个用空格隔开的非负整数,描述这个序列。 输出格式 n 行,每行一个非负整数,表示排序后的序列。 样例输入 41 3 2 10 样例输出 12310 数据范围保证 n #include #include using namespace std; //myStack:输入栈,栈中的所有... 阅读全文

posted @ 2019-09-07 22:40 flysong 阅读(262) 评论(0) 推荐(0) 编辑

2019年8月3日

C++沉思录读书笔记

摘要: 抽象是有选择的忽略,编程也依赖于一种选择,选择忽略什么、何时忽略。编程就是通过建立抽象来忽略那些我们此刻并不重视的因素。 在使用你的程序时,如果因为不遵守规则而导致工作失败,大部分人不会反躬自省,而会怪罪到你头上。 第四章 类设计者的核查表 class X { public: X(){} // 如果 阅读全文

posted @ 2019-08-03 21:09 flysong 阅读(110) 评论(0) 推荐(0) 编辑

2019年5月11日

muduo网络库学习:缓冲区Buffer及TcpConnection的读写操作

摘要: 在tcp的通信过程中,内核其实为tcp维护着一个缓冲区 当调用write/send时,会向内核缓冲区中写入数据,内核和tcp协议栈负责将缓冲区中的数据发送到指定<ip,port>的目标位置。 当有数据到达内核的tcp缓冲区中,如果开启了对套接字可读事件的监听,那么内核会让套接字变为可读状态,从而从p 阅读全文

posted @ 2019-05-11 22:51 flysong 阅读(614) 评论(0) 推荐(0) 编辑

2019年5月2日

muduo网络库学习:Tcp建立连接与断开连接

摘要: 通常服务器在处理客户端连接请求时,为了不阻塞在accept函数上,会将监听套接字注册到io复用函数中,当客户端请求连接时,监听套接字变为可读,随后在回调函数调用accept接收客户端连接。muduo将这一部分封装成了Acceptor类,用于执行接收客户端请求的任务。 Acceptor 对TCP socket, bind, listen, accept的封装 , 将sockfd以... 阅读全文

posted @ 2019-05-02 22:45 flysong 阅读(884) 评论(0) 推荐(1) 编辑

2019年4月29日

muduo网络库学习:reactor模式,EventLoop::runInLoop,多线程

摘要: 修改Logging.h,使日志中打印的函数显示类名。static std::string _CutParenthesesNTail(std::string&& prettyFuncon){ std::string::size_type pos = prettyFuncon.find('('); if(pos!=std::string::npos) prettyFuncon.erase(pret... 阅读全文

posted @ 2019-04-29 22:05 flysong 阅读(425) 评论(0) 推荐(0) 编辑

2019年4月28日

muduo网络库学习:reactor模式

摘要: Muduo 是基于 Reactor 模式的网络库,其核心是个事件循环 EventLoop,用于响应计时器和IO事件。Muduo采用基于对象(object based)而非面向对象(object oriented)的设计风格,其事件回调接口多以 boost::function + boost::bind 表达,用户在使用muduo的时候不需要继承其中的class。 阅读全文

posted @ 2019-04-28 20:53 flysong 阅读(586) 评论(0) 推荐(0) 编辑

2019年1月12日

算法训练:动态规划

摘要: 数字三角形 时间限制:2 sec 空间限制:256 MB 问题描述 给定一个高度为 n 的“数字三角形”,其中第 i 行(1<=i<=n)有 i 个数。(例子如下图所示) 初始时,你站在“数字三角形”的顶部,即第一行的唯一一个数上。每次移动,你可以选择移动到当前位置正下方或者当前位置右下方的位置上。 阅读全文

posted @ 2019-01-12 17:01 flysong 阅读(209) 评论(0) 推荐(0) 编辑

2019年1月9日

muduo网络库基础知识点—c++,Boost

摘要: typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1]; T必须是完全类型 在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。 在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。 但有时应用程序 阅读全文

posted @ 2019-01-09 21:13 flysong 阅读(501) 评论(0) 推荐(0) 编辑

2018年12月1日

C++ 新标准 11/14 语言新特性 - 2

摘要: explicit关键字 C++2.0之前explicit用于一个实参的构造函数(none explicit one argument constructor)。多于一个参数的不会发生隐式转换。 Complex1的im有默认值,所以只有一个需要的实参,还是属于none explicit one arg 阅读全文

posted @ 2018-12-01 00:14 flysong 阅读(805) 评论(0) 推荐(1) 编辑

导航