使用Docker搭建Linuc C++编译环境

2019-12-17
阅读 2 分钟
10.2k
我现在做的是 Linux C++ 开发,但手头上没有 Linux 设备。目前的常用的方法有两种: 云主机; 虚拟机。 但是使用云主机不方便,使用虚拟机对电脑有一定要求。还有第三种方法:Docker。 本文介绍我使用 Docker 搭的一个 Linux C++ 编译环境。以下是我的需求: 可远程调试的 C++ 编译环境; 远程连接工具:ssh; 版本控制...

std::forward() 源码分析

2019-12-11
阅读 1 分钟
7.4k
当t是左值引用时,此时推到得到T = X&,则T&&展开为X& &&,经过引用折叠后得到X&,即最后返回static_cast<X&>(t)。

C++ 分割字符串函数 split

2019-10-30
阅读 3 分钟
26.1k
当str不为NULL,则从头开始搜索第一个合法的分隔符,然后使用'\0'替换分隔符,并使用静态变量(strtok版本)或者传入的变量(strtok_t版本)保存分隔符的位置,最后返回str。因为 C 风格的字符串是以'\0'结尾的,所以调用函数后就能得到分割的第一个字符串。

我“写”了一个低效的STL子集

2019-10-26
阅读 2 分钟
2.6k
tinySTL 本人参考《STL源码剖析》“写”了一个低效的STL 子集。代码中有比较详细的注释,可作为阅读《STL源码剖析》的辅助材料。 本项目为本人的练习项目,所以暂时未提供测试,不能保证完全正确。请多多包涵。 至于怎么“低效”了,我后面会整理一些我已经能预见到会低效的实现。敬请期待。 源码 Github 已完成 空间配置器 ...

使用 C++ 封装互斥量、条件变量

2019-10-25
阅读 3 分钟
3.6k
本文使用 C++ RAII 机制来封装互斥量、条件变量,使其自动管理互斥量、条件变量的生命周期,避免手动维护带来的资源泄露等各种问题。本文使用的是 Linux 下 Pthread 库。

基于 C++ 11 实现的多线程 Web 服务器

2019-10-25
阅读 1 分钟
8.7k
本人参照《Linux多线程服务端编程》,以及模仿该书使用的muduo,写了一个轻量的 Web 服务器。 源码 Github。代码中有比较详细的注释,可作为看《Linux多线程服务端编程》的辅助材料。 已完成 完成基本的Tcp(被动连接)库; 简易的HTTP服务器,可访问主页HTML和网站favicon图标。 技术 主从 reactor 模式: 主 reactor ...

std::move()源码分析

2019-10-20
阅读 2 分钟
7.8k
C++11 引入右值和移动语义,其中std::move()是不可或缺的。现在我们才看看std::move()是这么实现的。 remove_reference 在分析std::move()之前,先看看remove_reference,下面是remove_reference的实现: {代码...} remove_reference的作用是去除T中的引用部分,只获取其中的类型部分。无论T是左值还是右值,最后只获取...

C++ noncopyable类

2019-09-16
阅读 2 分钟
7.6k
在muduo中,有一个noncopyable类,继承了该类的派生类不能被拷贝,只能被移动。涉及拷贝的函数有两个:拷贝构造函数和拷贝复制操作符。将这两个方法声明为不可访问或者删除(=delete),即可达到不可拷贝的效果。

C++回声服务器_9-epoll边缘触发模式版本服务器

2019-03-03
阅读 3 分钟
2.4k
epoll默认情况下是水平触发模式,这次将epoll设置为边缘触发模式来实现服务器,而客户端直接使用完美回声服务器的客户端。 服务器代码 {代码...} 项目代码 github 参考 《TCP/IP网络编程》

C++回声服务器_8-epoll版本服务器

2019-03-03
阅读 3 分钟
2k
这次使用epoll函数实现服务器,而客户端直接使用完美回声服务器的客户端。 服务器代码 {代码...} 优点 无需编写以监视状态变化为目的的针对所有文件描述符的循环语句。 调用对应于select函数的epoll_wait函数是无需每次传递监视对象信息。 项目代码 github 参考 《TCP/IP网络编程》

C++回声服务器_7-select版本服务器

2019-03-02
阅读 3 分钟
1.8k
这次使用select函数实现服务器,而客户端直接使用C++回声服务器_2-修复客户端问题的客户端。 服务器代码 {代码...} 缺点 需要编写以监视状态变化为目的的针对所有文件描述符的循环语句; 每次调用select函数时需要传递监视对象信息。 优点 系统兼容性好,几乎所有的平台都支持。 项目代码 github 参考 《TCP/IP网络编程》

C++回声服务器_6-多进程pipe版本服务器

2019-02-27
阅读 3 分钟
1.5k
在服务器多进程版本的基础上,使用管道来向一个子进程发送接收到的数据,该子进程将接收到的数据保存到文件中。客户端代码不变。 服务器代码 {代码...} 项目代码 github 参考 《TCP/IP网络编程》

C++回声服务器_5-多进程版本

2019-02-27
阅读 4 分钟
2k
服务器和客户端都是用多进程来接收和发送数据。 服务器代码 {代码...} 客户端代码 {代码...} 辅助函数 {代码...} 项目代码 github 参考 《TCP/IP网络编程》

C++回声服务器_4-UDP connect版本客户端

2019-02-27
阅读 2 分钟
2.5k
服务器代码不需要修改,只需修改客户端代码。调用connect函数之后,可以调用write函数和read函数来发送、接收数据,而不需要调用sendto函数和recvfrom函数。

C++回声服务器_3-UDP版本

2019-02-26
阅读 4 分钟
2.6k
这次我们实现一个UDP版本的回声服务器。 用于传输数据的函数 UDP套接字不会像TCP套接字那样保持连接状态,因此每次传输数据都要添加目标地址信息。 用于传输数据的函数: 发送数据到目标服务器。 {代码...} ​ 其中to为存有目标服务器地址信息的sockaddr结构体变量的地址值。 接收来自服务器的数据。 {代码...} ​ 其中fro...

C++回声服务器_2-修复客户端问题

2019-02-24
阅读 3 分钟
2k
C++回声服务器_1-简单版本中的问题出在客户端。客户端通过write函数一次性发送数据,过一段时间再调用一次read函数,期望接收传输的数据。问题在于这段时间到底是多久?理想的客户端应在接收到数据时立即读取数据。

C++回声服务器_1-简单版本

2019-02-23
阅读 4 分钟
3.7k
C++网络编程离不开socket编程。我们现在使用socket编写简单的回声服务器。 流程 这里所说的流程包括两部分: socket函数调用流程。 服务器与客户端交互流程。 socket函数调用流程 服务器与客户端交互流程 回声服务器主要功能:服务器将接收到来自客户端的数据传回客户端。 服务器的功能: 服务器在同一时刻只能与一个客...

vue-cli webpack配置分析

2017-03-10
阅读 17 分钟
55.5k
过完年回来后,我接手了公司的新项目。新项目是一个spa。很自然,我就想到了vue-cli脚手架了,当时研究一下它的webpack配置。于是,就有了其他的内容。

我把很多的第一次献给了2016--2016总结

2016-12-30
阅读 2 分钟
3.5k
寒假回学校后不久,春招就开始了。当时对于实习面试毫无概念,所以参考大神同学的简历,自己写了一份简历。简历写好了,就开始网申了,同时,暴风雨将要来临了。虽然网申之后都会有笔试机会,但我基本都是被虐,虐到“十分沮丧,甚至开始怀疑人生”。还有一些小公司,是不需要笔试的,直接就是技术面。虽然没有被虐,但很...

table宽度

2016-12-22
阅读 1 分钟
4.8k
题目虽然是说table的宽度,但其实最让人抓狂的是单元格td的宽度。平时开发中也经常会遇到这方面的问题,所以我找资料学习table的宽度的算法。

知乎第一场前端live的笔记与感想

2016-11-19
阅读 2 分钟
2.9k
11月7日,我参与了知乎live在前端领域的处女秀——小爝大大的前端工程师如何不断自我提升,live里干货满满。整场live,小爝大大的语速偏快,我不是挑刺,我想表达的意思是同样1分钟的语音,语速快的话,信息量就很大很多了。所以,知乎上的如何评价小爝的《前端工程师如何不断自我提升》的Live的问题中,有人回答说“花1个...

一个你可能没有注意到的关于JavaScript属性设置的知识

2016-11-06
阅读 2 分钟
1.6k
之前,我以为除了对象被设置为不可扩展的情况,其他情况下给对象添加新属性都会成功。但没想到,还有其他不能添加新属性的情况。我所说的这种情况,就是原型链上有与你将要添加的属性同名的属性的时候。

JS 类数组对象(ArrayLike Object)的判断

2016-10-28
阅读 2 分钟
6.1k
在这里我有一个疑问,根据定义,函数也有length数值属性,应该也是类数组对象。但如果o是一个函数,那么typeof o返回的是'function',并不是'object',以致于调用isArrayLike函数会得到false。(感觉还是因为定义不严谨导致的)

JS属性特性(属性描述符)

2016-10-26
阅读 7 分钟
6.1k
configurable:可配置性,控制着其描述的属性的修改,表示能否修改属性的特性,能否把属性修改为访问器属性,或者能否通过delete删除属性从而重新定义属性。默认值为true。

JS括号匹配问题

2016-10-14
阅读 2 分钟
10.7k
这个问题的最根本只有两种情况,一种是并列的,即没有嵌套的情况,如()[]{};另一种情况就是嵌套的情况,如{[()]}。第一种情况是比较简单的,有难度的是第二种情况。存在嵌套的情况的解决方法,是首先匹配最里面的括号对,即我们常说的从内部开始瓦解。

斐波那契数列求和的js方案以及优化

2016-10-10
阅读 3 分钟
21.9k
memoization方案在《JavaScript模式》和《JavaScript设计模式》都有提到。memoization是一种将函数执行结果用变量缓存起来的方法。当函数进行计算之前,先看缓存对象中是否有次计算结果,如果有,就直接从缓存对象中获取结果;如果没有,就进行计算,并将结果保存到缓存对象中。

层叠上下文

2016-10-09
阅读 5 分钟
2.6k
层叠顺序遵循下图的规则,其中在张鑫旭大大的博文中提到inline-block的层叠顺序与图中inline box是一个level的;z-index:auto实际上和z-index:0单纯从层叠水平上看,可以认为是同一level(两者在层叠上下文领域有着根本性的差异)。(如要看完整图片请移步到张鑫旭大大博文)

js数组去重(包含ES6解决方案)

2016-09-30
阅读 3 分钟
15k
Take 2 strings s1 and s2 including only letters from ato z. Return a new sorted string, the longest possible, containing distinct letters, - each taken only once - coming from s1 or s2.