沉迷单车的追风少年
CSDN博客专家,CSDN商业化专家,官方内容合作伙伴,官方认证“人工智能领域优质创作者”,入选2023年中国开发者影响力年度榜单。
代表专栏《Diffusion Models与深度学习》、《手把手写深度学习》、《深度学习-计算机视觉》、《手把手写C++服务器》等。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
手把手写C++服务器(0):专栏文章-汇总导航【持续更新】
手把手写C++服务器(1):网络编程常见误区手把手写C++服务器(2):C/C++编译链接模型、函数重载隐患、头文件使用规范手把手写C++服务器(3):C++编译常见问题、编译优化方法、C++库发布方式手把手写C++服务器(4):Linux四大必备网络分析工具手把手写C++服务器(6):编译实操——打开gcc/g++世界手把手写C++服务器(7)——给C语言程序员看的C++科普手把手写C++服务器(8):常用boost之program_options命令行参数解析原创 2021-07-28 11:58:34 · 4919 阅读 · 51 评论 -
手把手写C++服务器(43):数据库面试必背十题
事务的定义,事务的四大原则数据库事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作。事务具有四个重要的特性,通常被称为ACID,即:原子性(Atomicity):事务被视为不可分割的原子操作,要么所有操作都成功执行,要么所有操作都不执行,即要么事务的所有操作都被提交,要么全部回滚撤销。一致性(Consistency):事务的执行将数据库从一个一致性状态转换到另一个一致性状态。这意味着数据库在事务开始之前和结束之后,都必须满足所有的约束和完整性规则。原创 2024-06-25 21:15:00 · 873 阅读 · 4 评论 -
手把手写C++服务器(44):必知必会的计算机网络面试必问十题
服务端编程学习的过程中,一半精力都会用在网络编程上,熟知常见的网络编程知识点,不仅会在服务端编程的学习上事半功倍,同时也是面试必备的技能!原创 2024-06-28 18:19:45 · 649 阅读 · 2 评论 -
手把手写C++服务器(41):《More Effective C++》读后感和一些思考
前言:《Effective C++》一直是我最喜欢的技术书籍之一,作为姊妹篇的《More Effective C++》同样非常给力,还包含了很多常用的C++11新特性,读的过程中直呼过瘾的书籍了!原创 2024-04-25 10:58:58 · 933 阅读 · 2 评论 -
手把手写C++服务器(42):Git和GitHub使用教程
如图2、如果你git status 查看了当前状态发现有部分文件你不想提交,那么就使用git add xxx(上图中的红色文字的文件链接) 就可以提交部分文件到本地git缓存区。如图1、如果你git status 查看了当前状态发现都是你修改过的文件,都要提交,那么你可以直接使用 git add . 就可以把你的内容全部添加到本地git缓存区中。提交代码第五步:git push 把当前提交到git本地仓库的代码推送到远程主机的某个远程分之上。原创 2021-01-19 16:30:04 · 393 阅读 · 0 评论 -
手把手写C++服务器(41):《More Effective C++》读后感和一些思考
前言:《Effective C++》一直是我最喜欢的技术书籍之一,作为姊妹篇的《More Effective C++》同样非常给力,还包含了很多常用的C++11新特性,读的过程中直呼过瘾的书籍了!原创 2024-04-20 08:15:00 · 195 阅读 · 2 评论 -
手把手写C++服务器(44):必知必会的计算机网络面试必问十题
前言:服务端编程学习的过程中,一半精力都会用在网络编程上,熟知常见的网络编程知识点,不仅会在服务端编程的学习上事半功倍,同时也是面试必备的技能!目录1.OSI,TCP/IP,五层协议的体系结构,以及各层协议2.为什么在TCP四次挥手的过程中,主动关闭方要等待2*MSL时间?3.ARP是地址解析协议,简单语言解释一下工作原理4.HTTP和HTTPS的区别5.常用HTTP状态码和HTTP报文结构6.GET和POST的区别7.TCP三次握手和四次挥手的全过程8.在浏览器原创 2024-06-26 08:00:00 · 422 阅读 · 2 评论 -
手把手写C++服务器(40):《深入应用C++11,代码优化与工程级应用》读后感和一点思考
在std::thread中,join表示阻塞当前线程,直到线程函数执行结束。如果不希望线程被阻塞执行,可以调用线程的detach方法,将线程和线程对象分离。通过detach,让线程作为后台线程去执行,当前线程也不会阻塞了。但是,detach之后就无法和线程发生联系了,线程何时执行完主线程也无法控制了。而带参数的函数线程只需要在函数对象后加上对应的参数即可得到。原创 2023-04-20 07:45:00 · 541 阅读 · 5 评论 -
手把手写C++服务器(39):《Effective C++》读后感和一些思考
《Effiective C++》是我最喜欢的书籍之一(或许没有之一),里面详细介绍了改善程序设计的55种具体做法,对于C++程序员来说是一笔宝贵的财富,同时也是面试的高频考点,值得每隔一段时间就拿出来复习!!原创 2023-04-18 11:41:29 · 1149 阅读 · 19 评论 -
手把手写C++服务器(38):面试必背!Linux网络socket编程必会十问!
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】目录1、说一下客户端和服务端socket建立连接和关闭连接的过程2、如何将一个 socket设置成非阻塞模式3、什么是socket三大属性?4、阻塞模式下,send和recv函数行为是什么样子的?非阻塞模式下send/recv的返回值分别是什么?5、客户端发起连接时,如何主动指定通过本地某个端囗号去连接?bind函数如果端口号设置为0是什么行为?指定端口号连接bind端口号设置为06、list...原创 2021-10-18 20:35:44 · 483 阅读 · 6 评论 -
手把手写C++服务器(37):手撕代码——高并发多线程技术基石之异步connect【万字长文】
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:connect创建的时候是默认阻塞模式的,但是现实情况里可能会因为网络差、中间代理服务器、网关等因素造成连接速度慢。此时,在阻塞模式下,程序会阻塞在connect中很久。因此,在实际的项目中,我们一般倾向于使用异步connect技术,学习如何利用IO复用技术设置异步connect,不仅能为后面高并发多线程打下基础,也是后端开发面试必知必会的知识点。预备知识1、connect函数2、getsoc...原创 2021-09-29 21:30:00 · 747 阅读 · 4 评论 -
手把手写C++服务器(36):手撕代码——高并发高QPS技术基石之非阻塞recv【万字长文】
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:没有什么东西是永恒,没有什么方案是万能,阻塞模式和非阻塞模式各有利弊。创建socket是默认阻塞的。但是在高并发多QPS的场景中,阻塞模式会极大程度上影响并发性,使之并发名存实亡。上一讲: 讲了非阻塞send,并进行了实验;这一讲重点讲recv,为后面继续讨论非阻塞connect及与IO复用结合打下基础。目录预备知识1、send/recv的本质2、阻塞模式和非阻塞模式的应用场景3、文件描述...原创 2021-09-27 21:30:00 · 522 阅读 · 4 评论 -
手把手写C++服务器(35):手撕代码——高并发高QPS技术基石之非阻塞send【万字长文】
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:创建socket是默认阻塞的。但是在高并发多QPS的场景中,阻塞模式会极大程度上影响并发性,使之并发名存实亡。而send函数本质上并不是在网络上发送数据,而是将发送缓冲区的数据拷贝到数据内核中;recv函数的本质是将内核缓冲区中的数据拷贝到应用程序的缓冲区中。因此,当缓冲区满了的时候,阻塞/阻塞会影响send/recv的调用,我们这一篇文章重点讨论这一种情况;后面几讲会继续讨论非阻塞connect及与IO复用结合。...原创 2021-09-24 11:34:35 · 446 阅读 · 3 评论 -
手把手写C++服务器(34):高并发高吞吐IO秘密武器——epoll池化技术【两万字长文】
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言: 前文手把手写C++服务器(31):服务器性能提升关键——IO复用技术【两万字长文】介绍了IO复用技术,其中重点比较了select、poll、epoll三种IO复用技术,由于epoll池底层数据是红黑树,索引兴趣文件描述符的时间复杂度为O(1),并且采用回调的方式来检测就绪事件,极大提升了效率,比select、poll牛爆了。所以在系统设计时常作为主要的IO复用技术使用。本文围绕epoll池化技术,深入探索epoll...原创 2021-09-13 09:37:47 · 588 阅读 · 8 评论 -
手把手写C++服务器(33):Linux常用命令合集
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:服务端编程的过程当中,各种常用的命令行也会大量使用;熟悉常用Linux命令不仅仅是运维的基本要求,也是一个主程的基本门槛。这里汇总了总结出常用的命令,由于很多命令只有用的时候才会印象深刻,因此这里持续更新。和windows通信的时候也会经常用到一些windows命令行,这里一并归纳总结。目录常用Linux命令集合目前已经整理过的命令常用Linux命令集合...原创 2021-09-08 16:52:38 · 301 阅读 · 6 评论 -
手把手写C++服务器(32):三大事件之信号详解
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:信号实际上是一种软中断,信号机制实际上是进程间通信的一种方式。状态改变、系统异常、系统状态的变化等等,这些是信号的来源。信号作为一个异步事件,对维护服务器稳定,避免异常终止有重要的作用。本文从常见的64中Linux信号出发,步步深入,详解信号事件。64种Linux信号使用 kill -l 命令查看Linux信号:kill -l 1) SIGHUP 2) SIGINT 3)..原创 2021-09-02 21:25:51 · 418 阅读 · 10 评论 -
手把手写C++服务器(31):服务器性能提升关键——IO复用技术【两万字长文】
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言: Linux中素有“万物皆文件,一切皆IO”的说法。前面几讲手撕了CGI网关服务器、echo回显服务器、discard服务的代码,但是这几个一次只能监听一个文件描述符,因此性能非常原始、低下。IO复用能使服务器同时监听多个文件描述符,是服务器性能提升的关键。虽然IO复用本身是阻塞的,但是和并发技术结合起来,再加上一点设计模式,一个高性能服务器的基石就基本搭建完成了。目录1、预备知识(1)文件描述符...原创 2021-08-31 11:46:02 · 1093 阅读 · 12 评论 -
手把手写C++服务器(30):手撕代码——基于TCP/IP的抛弃服务discard
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:前面两讲讲了echo服务器和CGI网关服务器《手把手写C++服务器(29):手撕echo回射服务器代码》《手把手写C++服务器(28):手撕CGI通用网关接口服务器代码》。discard作为做简单的TCP长连接服务,只需要关注“消息/数据到达”的服务。本讲将会手撕discard代码,后面章节讲解C++面向对象风格的封装socket的时候也会以discard举例。目录discard服务的前世今生预备知识...原创 2021-08-29 23:21:16 · 605 阅读 · 10 评论 -
手把手写C++服务器(29):手撕echo回射服务器代码
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:上一讲《手把手写C++服务器(28):手撕CGI通用网关接口服务器代码》讲解了如何利用复制文件描述符dup重定位标准输出,写一个简单的CGI通用网关服务器。今天我们主要利用splice来实现一个简单的echo回射服务器。目录预备知识1:什么是echo回射服务器?预备知识2:socket请求和响应一般框架响应框架:请求框架:预备知识3:两个文件描述符之间零拷贝移动数据:splice()参...原创 2021-08-28 09:21:21 · 653 阅读 · 5 评论 -
手把手写C++服务器(28):手撕CGI通用网关接口服务器代码
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:前文《手把手写C++服务器(26):常用I/O操作、创建文件描述符》《手把手写C++服务器(27):五大文件描述符零拷贝、控制总结》详细学习了I/O操作,这一讲在前面文章的基础之上,手把手实现一个CGI通用网关接口服务器。虽然通用网关接口已经被主流解决方案所抛弃,但是我们手撕源码的过程中,还是能够加深对I/O编程、网络编程的认识,非常具有现实意义。目录预备知识一:什么是CGI通用网关接口?预备知识二:...原创 2021-08-25 11:09:15 · 617 阅读 · 8 评论 -
手把手写C++服务器(27):五大文件描述符零拷贝、fcntl控制总结
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:前文《手把手写C++服务器(26):常用I/O操作、创建文件描述符》、《手把手写C++服务器(25):万物皆可文件之socket fd》总结了常见的IO操作和文件描述符的相关知识,这一讲将详解五大数据读写函数:readv/writev、sendfile、mmap/munnmap、splice、tee和控制IO行为和属性的函数fcntl()。目录基本读写函数read()/write()和基本打开关闭函数op...原创 2021-08-22 09:51:44 · 693 阅读 · 12 评论 -
手把手写C++服务器(26):常用I/O操作、创建文件描述符
前言:通过上一篇文章(),Linux万物皆文件的一定深入人心。如何操作这些文件?I/O函数将震撼登场!第一讲会讲解基础的read() 和 write()函数,TCP和UDP读写函数、通用数据读写函数、创建文件描述符的pipe、dup、dup2函数,以及背后的相关知识。温馨提示,如果你还不清楚什么是文件描述符,请看上一讲《手把手写C++服务器(25):万物皆可文件之socket fd》目录基本读写函数:read()和write()参数释义:基本打开关闭函数: open()和close(原创 2021-08-19 20:35:41 · 509 阅读 · 10 评论 -
手把手写C++服务器(25):万物皆可文件之socket fd
前言:大家一定听说过在Linux当中,万物皆是文件,任何客观的存在都是以文件形式呈现。前面讲socket编程的时候(手把手写C++服务器(21):Linux socket网络编程入门基础、手把手写C++服务器(22):Linux socket网络编程进阶第一弹)可以看出,sockfd伴随socket的“生老病死”,这一讲就从Linux文件描述符开始讲起,详细聊一聊socket fd。目录万物皆可文件的Linux服务器最宝贵的资源之一——文件描述符文件描述符最大文件描述符限制系统建.原创 2021-08-17 21:14:58 · 606 阅读 · 10 评论 -
手把手写C++服务器(24):socket请求/响应一般框架、TCP修改缓冲区、内核监听listen最大长度
前言:本系列文章手把手写C++服务器(15):网络编程入门第一个TCP项目以封装好的网络库为例,重点讲解了如何正确的建立TCP连接,如何正确地销毁TCP连接,如何在安全的时机关闭连接,如何处理丢包问题。本文在上一篇文章手把手写C++服务器(21):Linux socket网络编程入门基础的基础上,从原生的socket角度出发,进一步深入玩转TCP编程。.原创 2021-08-15 11:04:32 · 1100 阅读 · 12 评论 -
手把手写C++服务器(23):必知必会!操作系统面试十连问
前言:系列文章手把手写C++服务器(17):自测!TCP协议面试经典十连问受到了大家的收藏和点赞,谢谢读者的支持。操作系统是后端开发工程师的童子功,掌握常见的操作系统基础知识不仅有助于我们日常开发,也是面试过程是必备的技能。本文总结了十道最常见的操作系统面试题。目录问题一:什么是进程?什么是线程?什么是守护进程?进程和线程之间有什么区别?什么是进程?什么是守护进程?什么是线程?进程与线程有什么区别?问题二:并发和并行有什么区别?问题三:大内核和微内核有什么区别?问题四:分原创 2021-08-12 10:01:50 · 425 阅读 · 10 评论 -
手把手写C++服务器(22):网络数据读写、地址信息、socket选项、获取服务信息
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:前面一篇文章手把手写C++服务器(21):Linux socket网络编程入门基础,讲解了如何建立socket连接、如何转换/使用socket地址、如何绑定/监听/发起/接受/断开/终止/关闭连接。socket博大精深,进阶会多写几弹,这一讲主要熟悉如何TCP、UDP读写以及通用数据读写,如何操作网络地址,socket选项设置等,进一步熟悉linux网络编程。目录TCP数据读写:recv()、send(...原创 2021-08-08 22:38:34 · 870 阅读 · 10 评论 -
手把手写C++服务器(21):Linux socket网络编程入门基础
本系列文章导航:手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:刚开始写C++服务器的时候,我们进行网络编程肯定是使用socket API,等熟练之后,会根据我们自己的需要,封装这些API组成自己的网络编程库。如何优雅地封装?这是一个哲学问题,非常能体现C++程序员的功底。但是首先要熟悉socket的常见用法,这一篇博客带你入门,并用手把手写C++服务器(18):TCP紧急传输的方法——带外数据 (原理与代码示例)这篇文章作为综合应用实例。目录什么是socket?so..原创 2021-08-05 20:20:05 · 891 阅读 · 12 评论 -
手把手写C++服务器(20):网络字节序与主机字节序、大端、小端与共用体
本系列文章导航: 手把手写C++服务器(0):专栏文章-汇总导航【更新中】前言:在正式开始学习socket编程之前,有必要了解网络字节序、主机字节序、大小端、如何判断大小端、在Linux当中如何转换主机字节序与网络字节序。为之后通用socket地址、专用socket地址、地址转换等知识点打下基础。目录什么是字节序?字节序分类:大端字节序、小端字节序网络字节序与主机字节序不同字节序之间传输问题Linux主机字节序-网络字节序转换API面试题:写一段程序判断大小端...原创 2021-08-03 11:37:24 · 920 阅读 · 8 评论 -
手把手写C++服务器(19):序列化数据网络传输解决方案
前言:数据传输是服务器编程必须要面临的问题之一,原始数据传输是非常脆弱的,序列化传输是业界常用的方法,其中谷歌的PB方案广受欢迎,我之前在华为、百度做后台开发时,PB也是项目中主要的解决方案,值得服务器编程者学习。目录C++传输序列化数据解决方案1、二进制方式2、XML3、Boost.Serialization4、Protocol buffersPB使用流程简述详细使用步骤1、定义.proto文件2、定义消息3、标注数据类型4、代码示例原创 2021-07-31 16:02:56 · 1385 阅读 · 8 评论 -
手把手写C++服务器(18):TCP紧急传输的方法——带外数据 (原理与代码示例)
前言:TCP的三次握手四次挥手的面向连接的传输特定,本质上保证了传输的可靠性,此外,还有字节编号机制、滑动窗口机制、超时重传机制、选择性确认机制等,最大程度上保证了其可靠性传输。但是凡事利弊相依,福祸相生,保证可靠性的同时,必然牺牲了其他的特性,紧急数据传输就是其中之一。如果需要传输紧急数据,需要进行什么样的步骤?要在三次握手四次挥手、字节编号机制、滑动窗口机制、超时重传机制、选择性确认机制等等这些框架之下进行,是不是会耽误了紧急的实时性和优先性呢?原创 2021-07-28 18:26:43 · 462 阅读 · 6 评论 -
手把手写C++服务器(17):自测!TCP协议面试经典十连问
前言:前面一篇文章《手把手写C++服务器(15):网络编程入门第一个TCP项目》介绍了一个简单入门级的TCP项目,这一篇文章重点讲一讲面试常见的TCP协议相关的十个问题,都是后端开发程序员必知必会的经典知识点。问题一:讲一下TCP三次握手四次挥手的过程三次握手:四次挥手:问题二:TCP和UDP之间有什么区别?问题三:TCP拥塞控制有哪几种方法?什么是拥塞避免?什么是快速恢复?什么是拥塞发生?拥塞控制常用方法:拥塞窗口拥塞避免快速恢复问题四:什么是慢启动问题五:什么是TCP黏包和拆包问题原创 2021-07-25 15:24:35 · 3219 阅读 · 18 评论 -
手把手写C++服务器(16):服务端多线程并发编程入门精讲
前言:相比于Go语言这种原生支持并发、自动垃圾回收的服务端“天选之子”,C++的多线程编程显得臃肿、困难。但是在C++服务器编程当中,多线程是一道绕不开门槛,是提高应用程序响应和性能的重要利器,能够隐藏诸如I/O这样耗时的操作延迟。特别是C++11引入了std::thread之后,C++对并发的支持显得异常强大。这篇博客做一个入门级的总结,以便日后讲解服务端编程的知识。目录线程与进程拥有资源调度系统开销通信方面Go语言并发-借鉴解读Go语言并发编程Go语言主动垃圾回收原创 2021-07-19 19:02:24 · 1615 阅读 · 20 评论 -
手把手写C++服务器(15):网络编程入门第一个TCP项目:正确建立和关闭TCP连接
前言:前面一篇博客讲述了第一个UDP项目,这篇博客来讲一讲TCP。TCP建立容易,销毁困难;TCP接收容易,发送困难。我们都知道TCP是一个可靠的协议,但是真的不会丢包吗?如何安全地关闭TCP连接?什么时候关闭TCP连接?长时间不关闭会有怎样的后果?目录TCP三次握手-四次挥手过程三次握手:四次挥手:代码架构正确关闭TCP连接源代码参考原创 2021-07-15 10:24:43 · 2676 阅读 · 12 评论 -
手把手写C++服务器(14):基于UDP测量两台机器之间的网络延迟
前言:网络延迟是网络编程中不可避免的话题,特别是直播、聊天等实时性要求高的应用场景,对网络延迟特别敏感。常用的测量网络延迟工具有基于TCP的qperf等,但是手写一个测量网络延迟的工具可以更好地帮助我们理解UDP等知识。目录原理代码逻辑运行效果源代码参考原创 2021-07-07 22:32:47 · 1464 阅读 · 16 评论 -
手把手写C++服务器(13):C++11新特性之静态断言static_assert
前言:我们学过很多断言,动态断言、零宽断言等等,这些在我之前的blog里都有总结。静态断言是C++11中的新技术,在服务端编程中经常使用,这里做一个学习总结。目录语法优点示例参考语法static_assert(常量表达式,提示字符串)如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串。因为s.原创 2021-07-05 21:40:04 · 978 阅读 · 10 评论 -
手把手写C++服务器(12):TCP自连接原理、Python示例、解决方案
前言:《手把手写C++服务器》系列的第一篇文章:手把手写C++服务器(1):网络编程常见误区,当中就讲解了TCP自连接是网络编程常见的误区之一。这篇blog进一步讨论TCP自连接问题,并给出Python实例代码,以及这类问题的解决方案。目录什么是TCP自连接问题?为什么说是坑?TCP自连接带来的危害?选择端口的范围查看端口号如何解决TCP自连接问题?Python3程序示例参考原创 2021-07-04 16:41:57 · 722 阅读 · 4 评论 -
手把手写C++服务器(11):手撕网络带宽测试工具TTCP
前言:TTCP诞生于1984年,是Unix很流行的网络带宽测试工具,并从中衍生出了著名的网络测试工具Ipref。TTCP手撕的源代码量比较小,是网络编程入门的最佳练习demo。本篇文章参考陈硕的TTCP,进行学习分析。目录1、program_options控制命令行输入2、代码框架3、带宽计算原理4、内存优化5、讲解视频6、源代码参考原创 2021-07-02 16:19:31 · 1549 阅读 · 12 评论 -
手把手写C++服务器(10):结构体struct常用技术之柔性数组、字节对齐、__attribute__
柔性数组:为变长结构体而生数组名不占用内存空间柔性数组的定义方法为什么需要柔性数组?怎样使用柔性数组?结构体中的字节对齐问题__attribute__:进行属性设置1、aligned:指定对选哪个的对齐格式2、packed:取消编译过程中的优化对齐3、at:绝对定位,将变量或函数绝对定位到flash或RAM中4、weak:转换成弱符号类型5、unused:忽略未使用函数的告警6、deprecated:管理过时代码7、may_alias:取消拒绝类型打印指针原创 2021-07-02 11:55:36 · 779 阅读 · 5 评论 -
手把手写C++服务器(6):编译实操——打开gcc/g++世界
前言:前面几篇文章简单介绍了Linux C/C++编译原理、优化方法等(手把手写C++服务器(2):C/C++编译链接模型、函数重载隐患、头文件使用规范)、(手把手写C++服务器(3):C++编译常见问题、编译优化方法、C++库发布方式),这一篇一个简单的功能程序TTCP为例,介绍gcc/g++编译的具体用法和实战操作。GCC和G++有什么区别?https://www.zhihu.com/question/20940822GCC/G++编译步骤https://www.runoob...原创 2021-06-29 14:45:46 · 1210 阅读 · 15 评论 -
手把手写C++服务器(5):《计算机操作系统(西电版)》读后感和一点思考
前言:本科生涯即将进入尾声,还是给自己留下了不少遗憾,其中一个就是没有机会学习计算机三大专业课,反而是在很多永远都不会用到的专业课上(比如空气动力学、量子物理等),花费了太多的时间和精力。现在终于没了GPA和rank的压力,可以静静地在自己的世界里遨游。一提到OS,大部分人想到的可能都是《深入理解操作系统》、《现代操作系统》等机械工业出版社的大块头经典巨著;一直以来,我都非常喜欢西电自己写的书,特别是自己读过的樊昌信老师的《通信原理》、吴大正老师的《信号与系统》等,当年学的时候爱不释手啊,浓浓工程派的书籍很原创 2021-06-28 15:20:33 · 968 阅读 · 10 评论