首页
学习
活动
专区
工具
TVP
发布

高性能服务器开发

专栏作者
344
文章
518083
阅读量
213
订阅数
为什么时不时会看到「珍惜生命,远离 C++」?
这个问答提问一下子把我的思绪拉入往昔那些使用 C/C++ 的“峥嵘岁月”里。女朋友还是原来的女朋友,而我却不是当初的那个我了。
范蠡
2023-01-04
7940
C++ 有奖竞猜
我已经将问题贴在代码的注释中,小伙伴们可以在评论区回答,第一位给出正确答案并给出合理解释的同学将获得如下图书一本(邮费自负哦)。
范蠡
2023-01-04
2220
C++ 新增的 stl 容器实用方法,你知道几个?(文末赠送 C++20 书籍)
1 原位构造与容器的emplace系列函数 在介绍emplace和emplace_back方法之前,我们先看一段代码: #include <iostream> #include <list> class Test { public:     Test(int a, int b, int c)     {         ma = a;         mb = b;         mc = c;         std::cout << "Test constructed." << std::endl;
范蠡
2022-10-08
9320
女朋友:听说中国很厉害的程序员都没有头发?
女朋友突然对我说:听说在中国,很厉害的程序员都没有头发? 我一愣,不行,这次必须驳倒她,不然小方的代码写不下去了。 我读书的时候,特别仰慕两位大神: 云风 一位是云风——吴云洋,这是一位水平非常高的前辈,当年他一毕业就被网易 CEO 的丁磊一张机票接到网易去了,担任梦幻西游的主程序,这个游戏后来成了经典,也成就了网易。虽然现在很多优秀的大学生被大厂录取,但是被 CEO 直接点名,买好飞机票请到公司后无来者。 我那会儿读他写的游戏库风魂的代码以及他去网易的前后的故事、他如何招人、如何创业,非常钦佩。 我上学的
范蠡
2022-08-26
4240
Modern C++ 最核心的变化是什么?
个人觉得最核心的变化是右值引用的引入,右值引用是  C++ 走向现代化的最重要一步。建议每一位 C++ 开发者都应该深入去了解并充分使用它。 右值引用是 C++11 中最重要的新特性之一,它解决了 C++ 中大量的历史遗留问题,使 C++ 标准库的实现在多种场景下消除了不必要的额外开销(如 std::vector, std::string),也使得另外一些标准库(如 std::unique_ptr, std::function)成为可能。即使你并不直接使用右值引用,也可以通过标准库,间接从这一新特性中受益。
范蠡
2022-08-26
9430
女朋友:有点感慨,这些年她在背后默默为你做了那么多事......
我之前在 《女朋友问我:什么时候用 C 而不用 C++?》这篇文章中说,C++ 与 C 语言的一个很大区别是,C++ 编译器在我们的代码背后偷偷加了许多代码,尤其是 C++11 有了明确的右值引用,引出移动构造和右值赋值(operator =(T&&))之后,这一点更加明显。 最近把 C++11 右值相关的内容重新复习了一下之后,加上使用右值技术改造了一些项目之后,甚是感慨,所以有了这篇文章。 先来看一段代码吧: /**  * 版本1  */ #include <iostream> #include <f
范蠡
2022-08-26
3700
女朋友问:这些年你看过哪些网络编程书籍?
最近有点忙,今天就写一篇摸鱼文章吧。 之前写过一篇《网络编程到底要怎么学?》的文章,今天就和大家聊一聊我这些年读过的网络编程书籍(这里不包括纯讲计算机理论的书籍),我会结合自身阅读感受和对实践的帮助来谈一谈我的读后感。 一、Socket 编程类书籍 1. 尹圣雨的《TCP/IP 网络编程》 如果你从来未接触过网络编程,或者想找一本网络编程入门书籍,那么我建议你选择尹圣雨的《TCP/IP 网络编程》,作者韩国人。这本书的特点是: 针对零基础读者,讲解了什么是网络编程(Socket 编程); 详细地介绍 Soc
范蠡
2022-08-26
9430
女朋友:七夕,你的 HttpServer 又崩了......
在上一篇文章《女朋友:一个 bug 查了两天,再解决不了,和你的代码过去吧!》,我们介绍了使用智能指针的几个注意事项,如果不注意这些细节,使用智能指针不仅不能帮你管理内存,而且还会造成难以排查的崩溃。 这不,今天是七夕,原本打算和女朋友吃饭、看电影......一气呵成的,结果我的 HttpServer 又崩溃了。 1. 背景 在上篇文章中我们介绍了我的 HttpServer 有 HttpSessionManager、HttpSession 和 HttpConnection 三个类,这三个类都是用于框架内部的
范蠡
2022-08-26
4080
女朋友:一个 bug 查了两天,再解决不了,和你的代码过去吧!
1.背景 最近因为项目需要,使用 C++ 开发一个简易的 HTTP Server,基本框架写完后,实际测试了一下,却出现了一个 crash 问题,而崩溃的地方莫名其妙的,排查了差不多两天,最终解决。C/C++ 程序内存崩溃问题,不管对新手还是老手来说,都是不容易解决的问题。本文通过这个实际工作中的案例来分析一下,如果一个 C/C++ 程序崩溃,应该如何排查。 2.服务结构 这个 HTTP Server 依赖一个基础工程,我们叫它 base 库吧,这个基础工程来自大团队的公共组件,编译后的文件叫 libbas
范蠡
2022-08-26
6090
女朋友问我:什么时候用 C 而不用 C++?
从事 C/C++ 编程快九个年头了,今天女朋友突然问我:什么时候用 C 而不用 C++?一下子把我的思绪拉入往昔那些使用 C 和 C++ 的“峥嵘岁月”里。女朋友还是原来的女朋友,而我却不是当初的那个我了。 老实说,这些年用 C 和 C++ 分别写过很多项目,也研究像 Linux 内核、Nginx、Redis、freeswitch 等各种经典 C 项目,当然研究的 C++ 项目也不少(例如 MySQL 的源码),玩的不亦乐乎,常看常新,看到这些经典项目的精彩代码处时有时候喜不自禁,那真是笑看妻子愁何在,
范蠡
2022-08-26
3730
女朋友要去面试 C++,我建议她这么做
大家好,我是张小方。 事情是这样的,有一位学医的小同学有个学计算机的女朋友,她投递了大厂 C++ 研发实习岗位,准备去参加 C++ 面试了,找到小方求助如何准备,于是有了这篇文章。 小方作为《C++服务器开发精髓》一书作者,资深 C++ 面试官,这次就来和大家聊一聊 C++ 研发实习生面试如何准备以及面试会被问到哪些问题。 1. 自我介绍的技巧 面试的开场通常是面试官让面试者做一下自我介绍。这个自我介绍比较有讲究,但是大多数同学的自我介绍都平平无奇,基本上是,我叫 XXX,毕业于 XXX 院校 XXX
范蠡
2022-08-26
7840
包装开源项目作为自己的项目,来字节面试的同学现场翻车了......
1. 项目介绍 最近在 github 上找了一个开源的 C++ 版本的 http server 代码,如果你很好奇,为什么我会看起这个项目来,可以拉到文末。 项目地址: https://github.com/yhirose/cpp-httplib 这个项目在 github 上看起来挺流行的,有 7.4k 的 star 和 1.6k 的 fork,属于比较受欢迎的项目了。 深入地看了下该项目,有如下优点: 代码整体风格和质量还不错,支持 C++ 11 语法; 代码量不大,如果想在项目中使用,只要包含一个 ht
范蠡
2022-08-26
7560
C++17一个很冷门很有意思的新特性
最近发现了一个有意思的特性:void_t。 void_t是C++17引入的一个新特性,它的定义很简单(有些编译器的实现可能不是这样,但也大体类似): template< class... >using void_t = void; 看着它很简单,但它搭配SFINAE却可以在模板元编程中发挥巨大作用。 比如在编译期判断类是否有某个类型using: template <class, class = std::void_t<>>struct has_type : std::false_type {}
范蠡
2022-07-01
5970
C++ 为什么不加入垃圾回收机制
来源:http://www.codeceo.com/article/why-cpp-not-use-gc.html 作者:M-先生 ---- Java的爱好者们经常批评C++中没有提供与Java类似的垃圾回收(Gabage Collector)机制(这很正常,正如C++的爱好者有时也攻击Java没有这个没有那个,或者这个不行那个不够好),导致C++中对动态存储的官吏称为程序员的噩梦,不是吗?你经常听到的是内存遗失(memory leak)和非法指针存取,这一定令你很头疼,而且你又不能抛弃指针带来的灵活性。
范蠡
2022-06-29
7510
我把 b 站拉黑了!
分享一篇旧文: 无意中在知乎看到这样一个提问: 感觉算法在程序员中快被吹上天了,如果只是搞编程的话,是不是没必要死磕算法? 看到不少人各种吹算法,什么刷leetcode啥的,之前刚入门编程之前我也以为算法有那么重要,我还担心我那点算法功底进公司抗不了几天就被劝退了,身边也见过不少刷题家,完全把自己刷魔怔了,只会刷题,连接个linux服务器问我说用windows远程连接能连接上吗?让他关闭个连接,不会关,之后半天连不上问我咋回事原来是把服务器关机了,业务代码几乎写不出来,天天死磕算法,我跟他们不一样入门了之
范蠡
2022-06-16
4330
高性能服务器开发 2021 年原创文章汇总
满纸荒唐言 你伤害了我,却一笑而过。 寻一句温馨的话 工作 3 万,副业 5 万 写代码太苦了,我决定改行送外卖了...... 曾经想去的二三四五,曾经想娶的女子...... 轩猿传 我苦难的转行计算机开发的经历 小方哥,你一个月挣多少钱? 如果你不喜欢你现在的大学怎么办? 我的第一份工作 4000 块钱的 offer 我把 b 站拉黑了! 我不想上班了! 写给未猝死的打工人 想去字节跳动 写给想去字节写 Go 的你 为什么你面试字节跳动没下文了? 大厂伤我千百遍,我待大厂如初恋 字节跳动应届生薪资都能
范蠡
2022-05-30
5820
人生唏嘘!985大学同宿舍六位室友,15年后现状~
大家好,我是小方。 同学会的意义,在于让我们看到时光在每个人身上流淌过的痕迹,毕竟一个人的人生远远不足以满足对这个世界的贪恋。 今天给大家分享一则,北京某985高校同一个寝室6位女生,在毕业15年后,近40岁的生活状况。 看完后,确实还挺感慨的。我在原文的基础上,把一些涉及个人隐私的部分给予了删除。 现在分享给大家,希望也能给大家带来一些感悟。 985高校毕业15年后 近日,网上流传出北京某985高校同一个寝室6位女生,在毕业15年后,近40岁的生活状况。整体上还是不错的,但都有各自的酸甜苦辣。 最
范蠡
2022-05-17
8320
使用epoll时需要将socket设为非阻塞吗?
一、结论 提出这个问题说明对网络编程的一些基础原理未搞明白,先说下结论: 一个 socket 是否设置为阻塞模式,只会影响到 connect/accept/send/recv 等四个 socket API 函数,不会影响到 select/poll/epoll_wait 函数,后三个函数的超时或者阻塞时间是由其函数自身参数控制的。 二、原理分析 下面详细的解释,为了方便解释,在这之前我们先明确几个基础概念: connfd:创建 socket,主动发起连接的一端(客户端),该端调用 connect 函数主动发起
范蠡
2022-04-21
2.2K0
那些做客户端 C/C++ 开发的同学,现在怎么样了?
我读研的时候,沉迷于 Windows 编程而不能自拔,那个时候也和楼主有一样的困惑。毕业的时候找工作,非 Windows C/C++ 岗位不去,因为技术功底比较好,很快就成为客户端负责人。 为了说明问题,我来给你讲个案例吧。 一、如何开发一款类电驴客户端? 假设我们现在要开发一个类似电驴这样的软件,软件界面如下图: 对电驴源码感兴趣的,可以点击下面的公众号获取:  打开后回复“五套源码”,获取电驴源码 如上图所示,假设操作系统选择 Windows,使用语言使用 C++,这就要求您必须熟悉 C++ 常用
范蠡
2022-03-08
3.6K0
写给未猝死的打工人
这两天某互联网巨头公司员工猝死的事情,想必大家已经知道了,给家人留下一地困境和悲伤,让人唏嘘不已。 2019 年我与人创业的时候,也是 996,那个时候,作为负责人的我,曾建议一位同事合理安排生活和工作,那位同事直接回怼我:现在每天早上九点到晚上九点,一周工作六七天,我有鸡毛的生活!我竟无言以对。 目前,大型互联网公司加班加点已是被大众所熟知。上学的时候,我其实挺信奉这样一句话:如果学不死,就往死里学。想着好好学习,考上一个好的大学,找一份好的工作。 至少,在我们曾经面朝黄土背朝天的父辈眼里,考上好大学就意
范蠡
2022-03-04
3270
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档