发布了文章2019-12-17
我现在做的是 Linux C++ 开发,但手头上没有 Linux 设备。目前的常用的方法有两种: 云主机; 虚拟机。 但是使用云主机不方便,使用虚拟机对电脑有一定要求。还有第三种方法:Docker。 本文介绍我使用 Docker 搭的一个 Linux C++ 编译环境。以下是我的需求: 可远程...
发布了文章2019-12-11
当t是左值引用时,此时推到得到T = X&,则T&&展开为X& &&,经过引用折叠后得到X&,即最后返回static_cast<X&>(t)。
发布了文章2019-10-30
当str不为NULL,则从头开始搜索第一个合法的分隔符,然后使用'\0'替换分隔符,并使用静态变量(strtok版本)或者传入的变量(strtok_t版本)保存分隔符的位置,最后返回str。因为 C 风格的字符串是以'\0'结尾的,所以调用函数后就能得到分割的第一个字符串。
发布了文章2019-10-26
tinySTL 本人参考《STL源码剖析》“写”了一个低效的STL 子集。代码中有比较详细的注释,可作为阅读《STL源码剖析》的辅助材料。 本项目为本人的练习项目,所以暂时未提供测试,不能保证完全正确。请多多包涵。 至于怎么“低效”了,我后面会整理一些我已经能预见到会低...
发布了文章2019-10-25
本文使用 C++ RAII 机制来封装互斥量、条件变量,使其自动管理互斥量、条件变量的生命周期,避免手动维护带来的资源泄露等各种问题。本文使用的是 Linux 下 Pthread 库。
发布了文章2019-10-25
本人参照《Linux多线程服务端编程》,以及模仿该书使用的muduo,写了一个轻量的 Web 服务器。 源码 Github。代码中有比较详细的注释,可作为看《Linux多线程服务端编程》的辅助材料。 已完成 完成基本的Tcp(被动连接)库; 简易的HTTP服务器,可访问主页HTML和网站f...
发布了文章2019-10-20
C++11 引入右值和移动语义,其中std::move()是不可或缺的。现在我们才看看std::move()是这么实现的。 remove_reference 在分析std::move()之前,先看看remove_reference,下面是remove_reference的实现: {代码...} remove_reference的作用是去除T中的引用部分,只获...
发布了文章2019-09-16
在muduo中,有一个noncopyable类,继承了该类的派生类不能被拷贝,只能被移动。涉及拷贝的函数有两个:拷贝构造函数和拷贝复制操作符。将这两个方法声明为不可访问或者删除(=delete),即可达到不可拷贝的效果。
发布了文章2019-03-03
epoll默认情况下是水平触发模式,这次将epoll设置为边缘触发模式来实现服务器,而客户端直接使用完美回声服务器的客户端。 服务器代码 {代码...} 项目代码 github 参考 《TCP/IP网络编程》
发布了文章2019-03-03
这次使用epoll函数实现服务器,而客户端直接使用完美回声服务器的客户端。 服务器代码 {代码...} 优点 无需编写以监视状态变化为目的的针对所有文件描述符的循环语句。 调用对应于select函数的epoll_wait函数是无需每次传递监视对象信息。 项目代码 github 参考 《TC...
发布了文章2019-03-02
这次使用select函数实现服务器,而客户端直接使用C++回声服务器_2-修复客户端问题的客户端。 服务器代码 {代码...} 缺点 需要编写以监视状态变化为目的的针对所有文件描述符的循环语句; 每次调用select函数时需要传递监视对象信息。 优点 系统兼容性好,几乎所有的...
发布了文章2019-02-27
在服务器多进程版本的基础上,使用管道来向一个子进程发送接收到的数据,该子进程将接收到的数据保存到文件中。客户端代码不变。 服务器代码 {代码...} 项目代码 github 参考 《TCP/IP网络编程》
发布了文章2019-02-27
服务器和客户端都是用多进程来接收和发送数据。 服务器代码 {代码...} 客户端代码 {代码...} 辅助函数 {代码...} 项目代码 github 参考 《TCP/IP网络编程》
发布了文章2019-02-27
服务器代码不需要修改,只需修改客户端代码。调用connect函数之后,可以调用write函数和read函数来发送、接收数据,而不需要调用sendto函数和recvfrom函数。
发布了文章2019-02-26
这次我们实现一个UDP版本的回声服务器。 用于传输数据的函数 UDP套接字不会像TCP套接字那样保持连接状态,因此每次传输数据都要添加目标地址信息。 用于传输数据的函数: 发送数据到目标服务器。 {代码...} 其中to为存有目标服务器地址信息的sockaddr结构体变量的...
发布了文章2019-02-24
C++回声服务器_1-简单版本中的问题出在客户端。客户端通过write函数一次性发送数据,过一段时间再调用一次read函数,期望接收传输的数据。问题在于这段时间到底是多久?理想的客户端应在接收到数据时立即读取数据。
发布了文章2019-02-23
C++网络编程离不开socket编程。我们现在使用socket编写简单的回声服务器。 流程 这里所说的流程包括两部分: socket函数调用流程。 服务器与客户端交互流程。 socket函数调用流程 服务器与客户端交互流程 回声服务器主要功能:服务器将接收到来自客户端的数据传回客...
发布了文章2017-03-10
过完年回来后,我接手了公司的新项目。新项目是一个spa。很自然,我就想到了vue-cli脚手架了,当时研究一下它的webpack配置。于是,就有了其他的内容。
回答了问题2017-03-10
editorconfig
赞了文章2017-02-12
我们在做项目的时候,应该会有这种情况: "我写了一个组件,然后做成了 npm 包,然后给好几个项目一起用。" Vue 组件也是可以这么干的,所以在公司内部可能会将组件封装成 npm 模块后分发给各个项目。 不过在 Vue 的项目中,有两个小地方可能需要精心处理下 (●’◡’●) ...