C/C++
文章平均质量分 92
攻城狮百里
学无止境
展开
-
提升你的校招简历:推荐高质量C++项目示例!
是一个用 C++ 实现的轻量级多线程 HTTP 服务器项目,帮助开发者学习和理解 HTTP 协议、C++ 多线程编程、以及高并发处理。该项目实现了基础的 GET 和 POST 请求处理,并集成了日志系统、线程池、定时器等功能。非常适合需要与 Redis 进行高效通信的 C++ 项目,尤其是那些涉及缓存、消息队列、数据存储等方面的应用程序。原创 2024-08-30 17:58:32 · 1179 阅读 · 0 评论 -
C++ 网络编程:完成端口IOCP
IOCP(I/O Completion Ports)是Windows操作系统提供的一种高效的异步I/O模型,主要用于处理大量并发I/O请求的应用程序。原创 2024-08-05 15:04:44 · 737 阅读 · 0 评论 -
2024最新首选C/C++开发教程(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
适合人群:计算机相关专业在校生、转入互联网开发、转后台开发岗位、有C/C++基础、底层原理理解不够深入。内容:强化理论知识,并以项目运用,项目实现为主导来教学,1对1学习计划,简历书写/面试复盘指导。原创 2024-07-23 15:01:18 · 1068 阅读 · 0 评论 -
2024整理C++毕设项目合集,(教程+源码)简直不要太爽了!
包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等)原创 2024-07-18 19:52:15 · 1004 阅读 · 0 评论 -
C++正则表达式
C++11引入了正则表达式支持,使得C++标准库可以处理字符串模式匹配和搜索。C++标准库中的正则表达式功能集中在<regex>原创 2024-07-17 22:04:16 · 1064 阅读 · 0 评论 -
C++11新特性介绍
默认函数(defaulted functions):通过= default显式声明,指示编译器生成默认实现。删除函数(deleted functions):通过= delete显式声明,禁止特定函数的调用。override:用于显式表明一个虚函数重写了基类中的虚函数,有助于捕捉函数签名不匹配的问题。final:用于禁止类的进一步继承或虚函数的进一步重写,确保特定行为不被改变。这些关键字增强了C++代码的可读性、安全性和维护性。尾置返回类型将返回类型放置在函数签名的尾部,而不是函数名之前。原创 2024-07-13 15:03:35 · 988 阅读 · 0 评论 -
C++ 14新特性个人总结
考虑一个简单的例子,我们想要定义一个依据类型变化的π值,以便能够获取不同精度的π值(例如,floatdouble等)。return 0;这个例子中,我们定义了一个变量模板pi,其类型是模板参数T。因此,我们可以请求pi的不同类型版本,获取相应精度的π值。在C++14之前,聚合类主要用于简单地将数据组合在一起,没有复杂的类初始化语义。没有用户定义的构造函数没有私有或保护的非静态数据成员没有虚函数没有基类在 C++14 中,通过在字符串字面值后添加s后缀,可以直接创建实例。原创 2024-06-25 20:35:47 · 675 阅读 · 0 评论 -
现代C++编程:C++ 17新特性个人总结
函数位于头文件<utility>中。它接受一个引用作为参数,并返回参数的const类型引用。这个函数非常简单,但在需要确保不修改传入对象的情境下非常有用。原创 2024-06-13 20:54:56 · 817 阅读 · 0 评论 -
现代C++编程:C++ 20新特性总结
概念是一种用于描述模板参数必须满足的条件或特性的机制。它们可以看作是模板参数的“类型约束”,让编译器在模板实例化时能够提前验证这些约束,从而提供更明确的错误提示和更强的编译时保障。协程是通过在函数返回类型前面添加co_awaitco_yield或co_return关键字来定义的。// 对范围进行一系列操作: 过滤、变换、排序和反转}) // 只保留偶数}) // 每个数值乘以3// 反转顺序// 打印结果return 0;原创 2024-06-11 17:42:16 · 2727 阅读 · 0 评论 -
上岸必看:C++ 24校招/25实习求职指南
校招和实习是应届生步入职场的重要途径,是职业生涯的起点。通过实习和校招进入的岗位,C++应届生能够更好地了解行业现状,明确自己的职业兴趣和发展方向。有的时候,实际工作中的体验甚至会引导你重新考虑和规划自己的职业道路。并且许多大厂通过实习生项目筛选。表现优秀的实习生很可能被转为正式员工,这为应届生提供了直接的就业机会。原创 2024-04-15 21:48:03 · 891 阅读 · 0 评论 -
C/C++进阶/架构师(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)开发学习路线、系统性学习教程
C++学习可以划分为几个主要阶段,每个阶段的学习目标和推荐资源都有所不同。原创 2024-04-12 22:13:31 · 1132 阅读 · 0 评论 -
内存模型与memory orde
以上就是我们所有说到的内存模型:SC(完全一致性),TSO(完全存储一致性),PSO(部分存储一致性),RMO(完全宽松),这些都是硬件架构上的不同会带来内存可见性问题,但是除此之外,cpu在执行的时候也会乱序,编译器在编译优化的时候是会对指令做重排的,,也会产生如上的内存模型,所幸c++给我们封装了memory_order,让我们直接忽视硬件-cpu-指令这些运行细节,就只是从内存模型的角度去控制程序的运行;转载 2023-11-28 16:21:21 · 116 阅读 · 0 评论 -
Linux C/C++ Server websocket协议与服务器实现
原文 https://www.cnblogs.com/go-ahead-wsg/p/17294745.html服务器需要主动推送(长连接)给客户端数据,通常使用websocket协议,比如股票信息实时数据等;websocket服务器为websocket协议+reactor实现websocket协议与http协议对比,http协议是针对网页设计的协议,为一请求一连接形式适合短连接,而websocket为长连接,握手使用文本字符串,传输为二进制数据,数据包更小更快,可主动推送数据给客户端。转载 2023-11-02 16:25:17 · 842 阅读 · 1 评论 -
C++对象的内存分布和虚函数表
都包含在虚函数表中,所不同的多重继承有多个虚函数表**,当子类对父类的虚函数有重写时,子类的函数覆盖父类的函数在对应的虚函数位置,当子类有新的虚函数时,这些虚函数被加在第一个虚函数表的后面**在c++中类的成员函数都是保存在静态存储区中的 ,那静态函数也是保存在静态存储区中的,他们都是在类中保存同一个惫份。类图的解释:D2覆盖了B的vB,GD覆盖了D1的vD1同时也覆盖B的vB,GD也有自己的虚函数vGD。上述类图的解释:B的v2覆盖了A的v2,C的v1覆盖了A的v1,C的v3覆盖了B的v3.原创 2023-11-01 15:54:28 · 63 阅读 · 0 评论 -
C++11原子量实现自旋锁
首先,我们需要一个bool值来表示锁的状态,这里直接使用标准库中的原子量 atomic (C++ 11的原子量可以参考:https://www.cnblogs.com/FateTHarlaown/p/8919235.html) ,在我的平台(Cygwin64、GCC7.3)上 atomic 的成员函数is_lock_free()返回值为true,是无锁的实现(如果内部使用了锁来实现的话那还叫什么自旋锁 = =)。当V的值与A相等时,将V与B的值交换。需要强调的是上面的操作是原子的,要么不做,要么全部完成。转载 2023-11-01 15:13:10 · 312 阅读 · 0 评论 -
Qt开发工程师成系统性长体系教程
QT跨平台开发工程师必备技术栈。原创 2023-10-14 16:13:46 · 157 阅读 · 0 评论 -
浅析 Makefile
上面的意思是将所有.c文件都经过编译器编译生成.o文件,其中表示的是所有的依赖,在上面的场景中就是当前目录下所有.c文件。在当前目录下,只有main.c和test.c两个文件,并没有.o文件,上面的Makefile之所以能运行,是因为它的隐含规则。对于c语言来讲,如果有地方依赖.o文件,会自动去寻找相同名称的.c文件,并构建出.o文件。前面我们声明的BUILDDIR就是一个自定义变量,要注意的是,如果声明了一个和默认变量一样的变量就会覆盖默认变量,这也给我们提供了一个改变默认规则的入口。原创 2023-02-13 22:02:42 · 1194 阅读 · 1 评论 -
必学十大经典排序算法,看这篇就够了
2021年C/C++Linux服务器开发/后台架构师知识体系整理十大排序算法可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的算法思想描述,为了方便大家理解,我还找来了动图演示;这还不够,我还附上了对应的优质文章,看完不懂你来砍我,觉得不错就给我来个好看。术语铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后转载 2021-07-05 21:36:25 · 922 阅读 · 5 评论 -
一名合格的音视频开发人员,需要掌握哪些技能呢?音视频技术该怎么学?
在线教育、音视频会议、即时通讯等产品都是基于音视频技术开发,如今越来越多的App中都大量加入了音频、视频元素,比如说注册与登陆的扫脸验证,dou音、wei视的音视频变速、变调录制、实时滤镜、人脸识别特效等,音视频开发技术越来越吃香。从技术上来说,音视频主要分为两个方向,一个是搞音视频算法,另一个是搞音视频工程。搞算法的人非常少,需要有很深的数学能力和算法背景。学习成本高,一般小企业不需要也养不起。这类人基本都会去大公司,专注一个领域,轻轻松松年薪百万。搞工程,需要有扎实的理论基础,很强的技术功底,对音原创 2021-07-02 20:53:19 · 2578 阅读 · 4 评论 -
Android FFmpeg 实现带滤镜的微信小视频录制功能
本文将实现对采集的预览帧(添加滤镜)和 PCM 音频同时编码复用生成一个 mp4 文件,即实现一个仿微信小视频录制功能。音视频录制编码流程本文采用的是软件编码(CPU)实现,所以针对高分辨率的预览帧时,就需要考虑 CPU 能不能吃得消,在骁龙 8250 上使用软件编码分辨率超过 1080P 的图像就会导致 CPU 比较吃力,这个时候帧率就跟不上了。音视频录制代码实现Java 层视频帧来自 Android Camera2 API 回调接口。private ImageReader.OnImageAv转载 2021-06-18 17:13:38 · 251 阅读 · 0 评论 -
2021 C/C++Linux后台开发岗权威学习路线,而这可能也是你离腾讯最近的一次!
关于c/c++,很多人一开始就会觉得,光凭这个能找到工作? 而关于Linux,大部分的人可能对它的了解仅仅限于知道它有个内核,一般都是做运维的。 然后就是这样的属性,却成为腾讯的核心岗位之一。针对这样的岗位需求,TX也归纳了关于内部职级T1-T9的技术内容点。1.语言2.数据结构与算法3.数据库4.网络原理还有操作系统、网络编程、分布式架构、云原生、软技能等方面的能力划分,详细的归纳整理了各个职级对于技术能力的要求, 所以真的可能就是你离腾讯最近的一次面试机会与挑战了!因为懒,就不全贴原创 2021-05-28 21:26:47 · 396 阅读 · 2 评论 -
线程池讲解(C++)|LinuxC/C++服务器开发
1. 前言线程池是一般服务端或者客户端编程经常要用到的一种管理线程的类,从网上找到一个比较好的线程池实现,主要运用C++11。记录一下理解过程,帮助学习线程池和C++11。150行代码手写线程池 :https://www.bilibili.com/video/BV1yQ4y1o7zv/2. 代码2.1 先上代码threadPool.hpp/* * @Author WangYubo * @Date 09/17/2018 * @Description 线程池实现的头文件 */ #ifnd转载 2021-05-21 20:27:47 · 586 阅读 · 0 评论 -
超详细 C/C++ 学习路线分析
C/C++遍布的领域有后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,分布架构,还有现在最为流行的人工智能等一些新的技术领域。所以说:C/C++俨然已成为一门贵族语言,成为了编程界最重要的语言之一。C/C++在编程语言中的重要性不言而喻,那么,我们如果想要学习C/C++,应该怎么去学习?需要学习一些什么东西呢?一、C/C++入门阶段刚入门的时候我们主要是学习培养编程思维和动手能力,深刻理解面向过程和面向对象的思想方法,这对以后转载 2021-05-13 17:28:15 · 5759 阅读 · 0 评论 -
硬核干货 | C++后台开发学习路线
2020秋招提前批C/C++相关开发拿到腾讯、华为等offer学习路线及时间安排推荐时间为4个月,包括四部分:语言,计算机基础知识,项目基础知识,项目实践。语言推荐学习1个月学习方针:视频为主,书籍为辅。配套视频:C语言,C++语言C++ Primer Plus集中学习该书的1~8章,涉及C语言基础语法及指针、结构体的使用。C和指针该书全面深入的剖析了指针的概念与使用,是C语言的进阶。C++ Primer作为C++查询的工具书,相当于新华词典.转载 2021-05-11 20:11:47 · 340 阅读 · 0 评论 -
Linux C++网络编程
要想找一份Linux c++ 方面的好工作,在面试过程中游刃有余,那么这篇文章就是为你定制的。因为作为一个校招的学生,我在学习和面试过程中的经历总这个体系的文章,希望可以帮助到你。因为内容太多,本文先从学习资料入手。谈到 Linux c++ 网络编程,一时之间不知从何入手,那么大问题不好解决,就拆解成小问题逐个击破。一、Linux起初对 Linux 的认识就是黑框、高大上。但是在慢慢接触的过程中你会逐渐爱上她,因为你会省去双手从键盘移动到鼠标的时间,同时他一切皆文件 的思想,让你管理任何东西都可以像转载 2021-04-28 16:17:18 · 1010 阅读 · 0 评论 -
Linux C++ 开发环境搭建
前言工欲善其事必先利其器,想要学好 Linux C++ 编程,那么就要有对应环境,本文将带你一步步搭建开发环境。准备工作为了学习方便,在 win 下面安装虚拟机,然后安装 CentOs 操作系统。当然也可以使用 阿里云等云产品(但个人推荐本地搭建,因为阿里云远程连接经常掉线)。搭建 centos 开发环境: 前文介绍过,这里将不再赘述。安装常用工具作为一个合格的程序员我觉得所有的东西都应该标准化、文档化。所以我对我的文件进行规划:/home/package : 存放二进制安装包/转载 2021-04-27 16:34:13 · 1593 阅读 · 0 评论 -
校招| C++ 后台开发学习路线
一直有一些读者来问我要 学习经验。我也很想写一个学习路线给大家,希望可以帮助到更多的小伙伴少走弯路。之前一直没写的原因在于自己觉得自己懂得太少,还没成为一个大佬,还没成为一个精通某个领域的专家,怎么能教别人如何学习呢?现在思维转变了,可能现在的自己还没办法分享自己成为一个极客大牛的学习经历。但是可以分享自己从菜鸡到校招拿下几家大公司 Offer 的学习经验呀。希望能帮助到一些零基础学习计算机,跨专业学计算机,正在找实习,正在校招的同学。这个学习路线是具有 很强的可复制性 的。只要大家能每天能抽原创 2021-04-15 21:05:41 · 448 阅读 · 0 评论 -
C++后台开发不知道怎么学?先看看这份学习路线吧!
在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗。不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发。后台开发工程师主流使用的编程语言有C++、Java、PHP以及目前慢慢流行的Golang等。本文就将以C++的角度,讲讲如何学习和准备后台开发的岗位。一、语言基础无论是C++开发还是Java开发,对于一个码农而言,最重要的就是对于编程语言的熟悉。同样,无论从事哪种类型的岗位,首当其冲的就是要掌握好语言基础。 C++是一转载 2021-04-08 15:26:46 · 411 阅读 · 0 评论 -
多线程---解析无锁队列的原理与实现
前言为什么需要无锁队列呢?我们知道,多核心优化是现在游戏开发的一个重点课题,无论是工程实践也好,研究算法也罢,将工作并行化交由多线程去做是一个非常普遍的场景。对于这种场景,我们通常会采用线程池+命令队列的方式去实现,其中的命令队列就会使用互斥锁或是无锁队列。并且由于命令队列的读写是较轻量级的操作,采用无锁队列的性能要高于有锁的操作。因此,实现无锁队列等无锁数据结构,可以看作是迈入多线程编程的基石。推荐视频:https://www.bilibili.com/video/BV1354y1b7nz/问题描述原创 2021-04-07 16:21:51 · 1593 阅读 · 0 评论 -
LinuxC/C++服务器开发学习路线(已签腾讯sp,附学习资料)
找完工作后一直想找时间写点东西,回馈牛客,由于在忙各种事情,一直拖到现在。作为一个19届的老油条,趁在毕业之前,将我的学习总结分享给大家,希望对正在找实习或者找工作的同学有所帮助。个人介绍首先介绍下自己吧,我是一名非科班硕士,本科专业机械,期间参加过一些学科竞赛(智能车竞赛、机创等),研究方向主要是自动化,软件方面的基础基本为零。我真正开始学习软件基础知识是从研一开始,实验室主要是C++开发,而由于我科专硕只有两年,在秋招之前学习的时间不到一年,由于实验室管理制度严格,导师项目催得比较紧,我学习的时间都转载 2021-04-01 17:55:21 · 928 阅读 · 0 评论 -
如何拿下BAT:我的学习路线(C/C++)
前言我希望可以把我从实习到秋招这一路以来的体会和经历分享给大家。作为一个还没有正式进入公司的在校学生,我在技术上还是一个实打实的”菜鸟“,但是作为一个应届求职者,我是"专业的"。本节我将从面经积累,价值观以及学习路线这三个角度介绍我的经验。面经积累我有一个习惯,就是记录和整理知识。从春招实习开始,我每一次面试都会录音,事后都会复盘。所有的面试记录,面试官问的问题,手写的算法题以及我个人面试的感受我都会记录下来。看过《深入理解计算机系统》的小伙伴都应该知道程序的执行是有空间局部性和时间局部性,其实面试官转载 2021-03-31 15:33:38 · 390 阅读 · 0 评论 -
tcp协议详解(后端面试常问问题)
关联视频:tcpip accept,11个状态,细枝末节的秘密,accept的秘密 . tcp协议头的秘密 . tcp状态机的秘密tcpip协议栈与网络API的关联协议头tcp报文头定义:struct tcphdr { unsigned short sport; unsigned short dport; unsigned int seq; unsigned int ack; unsigned char hdrlen:4 resc:4; unsigned char cwr:1,转载 2021-03-30 15:25:29 · 302 阅读 · 0 评论 -
一文概括进程、线程、协程、串行、并行以及并发概念
推荐视频:【LinuxC/C++】线程池如何做到最高效,线程的效率真的比进程高?推荐课程: LinuxC/C++服务器开发/架构师 腾讯T8认证进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。通俗的来讲,进程就是一个程序的运行实例,例如打开一个软件其原创 2021-03-26 21:38:37 · 1280 阅读 · 0 评论 -
3月,腾讯最新职级技术要求曝光,Linux炸了。
北京时间3月8日,腾讯借助腾讯课堂平台首发了对标腾讯职级体系,而作为c/c++Linux开发更有详细职级技术匹配要求学习图谱,赶紧来领一份吧,手快有,手慢无!1.语言2.数据结构与算法##3.数据库##4.网络原理还有操作系统、网络编程、分布式架构、云原生、软技能等方面的能力划分,赶紧来免费领取一份吧!添加官方学习交流群免费领取而拥有了与之匹配的技术栈,我们该如果提升自身的技术能力呢?这里首推的就是获得腾讯课堂“薪选”好课的c/c++Linux后台服务器架构课程。三大优势奠定大厂o转载 2021-03-23 15:02:15 · 390 阅读 · 0 评论 -
STL用法总结
推荐视频:STL高级用法 vector stack queue deque set mapVector1.初始化数组初始化 int a[5] = {1,2,3,4,5}vector初始化 vector A[10] = {1,2,3,4,5}vector A(10, 1);2.二维数组初始化赋值vector<vector> f1(n, vector(m,0));3.常用函数排序:sort(nums.begin(), nums.end());插入:nums.inser原创 2021-03-22 22:16:01 · 499 阅读 · 0 评论 -
Linux服务器开发/架构师必掌握的核心技能点!
想必大家都知道从事后台开发首先就是要选择一种语言,今天跟大家分享是用C/C++ 做的后台开发。所以想从事这方面的朋友得有C/C++的基础。首先跟大家说的是从学习步骤:(Linux入门到精通篇)一、Linux开发环境1.了解Linux环境搭建,了解LinuxC编程2.了解Linux安装,命令使用,shell编程3.shell脚本实现检测局域网内哪些ip地址机器宕机二、Linux C编程1.Linux C编程 统计文件单词数量包括:文件操作、文件指针2.Linux C编程 实现通讯录包括:结转载 2021-03-18 15:28:57 · 624 阅读 · 0 评论 -
Linux C/C++ 学习路线(已拿腾讯、百度等)
Linux C/C 从零基础到入门、到熟悉的一些路线,对于想走这个方向的同学,可以认真看看,分享到这里来,希望对于正在走 Linux C/C 路上的同学能有所帮助。我将大致按照以下的目录,分享自己一路走来的一些学习经历。一、秋招自己的一些情况二、Linux C/C 方向的一些思考三、计算机基础知识的梳理四、C 方向的深入学习路线五、项目 亮点 面试的一些思考六、更多的个人分享在校期间,我一直走的都是 Linux C/C 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux原创 2021-03-10 15:53:58 · 1006 阅读 · 0 评论 -
如何拿到大厂offer——C++后台学习路线
一点简单学习和秋招经验,希望可以对后来的同学有一些帮助,特别是对一些找不到学习方向的同学吧。笔者是211本,985硕,非科班,无实习,无论文,我主要使用的语言是C++,投递的都是后端开发的岗位,拿到的offer有:字节跳动,快手,腾讯云,百度,猿辅导,华为,网易雷火和阿里云。下面就学习方法,实习和面试技巧三个方面分享一下我的经验1.学习方法1.1 看书我并不是计算机专业的,学习C++大概是从去年年初开始,我学习的主要方式是看书和写代码,先说一下学习流程,书单在最后一起给出:在刚开始学习的时候原创 2021-02-22 16:40:52 · 933 阅读 · 1 评论 -
云原生学习之Docker
1. 为什么需要容器?下图是一个比较传统的软件架构:做过java的同学可能对上图的架构方式比较了解,我们通常会将一个应用程序生成一个war包,放到一个tomcat容器当中并在一台虚拟机(VM)中启动运行,然后配置nginx的负载均衡策略,将来自用户的请求转发到某个tomcat应用上,这种基于主机或虚拟机部署的应用会存在以下几个问题:可移植性差需要事先安装应用所需要的运行环境,比如java应用所需要的jdk或者jre,如果需要重新部署一个应用,就需要重新初始化环境再安装应用,过程繁琐; 另外如果一个应原创 2021-02-18 20:03:46 · 304 阅读 · 0 评论 -
Linux内核进程调度时机和过程
1、调度类型和时机调度触发有两种类型,进程主动触发的主动调度和被动调度,被动调度又叫抢占式调度。主动调度:进程主动触发以下情况,然后陷入内核态,最终调用schedule函数,进行调度。1、当进程发生需要等待IO的系统调用,如read、write。2、进程主动调用sleep时。3、进程等待占用信用量或mutex时,注意spin锁不会触发调度,可能在空转。被动调度:当发生以下情况时会发生被动调度:1、tick_clock,cpu的时钟中断,一般是10ms一次,也有1ms一次的,取决于cpu的主频,原创 2021-01-30 16:28:05 · 3263 阅读 · 2 评论