资源简介:前情提要只要写过 c/c++ 的项目的童鞋应该对对象生命周期的问题记忆犹新。怕有人还不理解这个问题,笔者先介绍下什么是生命周期的问题?一个 struct 结构体生命周期分为三个步骤:出生:malloc 分配结构体内存,并且初始化;使用:这个就是对内存的常规使用了;销毁:free 释放这个内存块;最典型结构体“生命周期”问题的...
资源简介:来源:CPP开发前沿以良好的方式编写C++ class假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯。① Header(头文件)中的防卫式声明complex.h:# ifndef __COMPLEX__# define __COMPLEX__class complex{}# endif防止头文件的内容被多次包含。② 把数据放在private声明下,提供接口访问数据# ifndef ...
资源简介:置顶/星标公众号????,硬核文章第一时间送达!为什么要并发编程大型的软件项目常常包含非常多的任务需要处理。例如:对于大量数据的数据流处理,或者是包含复杂GUI界面的应用程序。如果将所有的任务都以串行的方式执行,则整个系统的效率将会非常低下,应用程序的用户体验会非常的差。另一方面,自上个世纪六七十年代英特尔...
资源简介:导读:对于工程经验比较丰富的同学,并发应该也并不是陌生的概念了,但是每个人所理解的并发问题,却又往往并不统一,本文系统梳理了百度C++工程师在进行并发优化时所作的工作。全文15706字,预计阅读时间24分钟。一、背景简单回顾一下,一个程序的性能构成要件大概有三个,即算法复杂度、IO开销和并发能力。由于现代计算机...
资源简介:导读:在百度看似简简单单的界面后面,是遍布全国的各个数据中心里,运转着的海量C++服务。如何提升性能,降低延时和成本就成了百度C++工程师的必修功课。伴随着优化的深入攻坚,诞生并积累下来一系列的性能优化理论和方案,其中不乏一些冷门但精巧实用的经验和技巧。本文从内存访问角度,收集总结了一些具有通用意义的典型...
资源简介:扫码关注“程序喵大人”,选择“星标”公众号重磅干货,第一时间送达! 来源:高效程序员 链接:https://mp.weixin.qq.com/s/z2ysvalLedD3YzRrptq2nw大家好,应粉丝要求,我们今天带来了C++的基础知识大汇总,当然这是精简版的,但是篇幅也不少,应该说该有的也都有了,建议大家收藏慢慢学习,同时希望对大家的C++学习有...
资源简介:前面我们重点分析了如何通过 fork, vfork, pthread_create 去创建一个进程或者线程,以及后面说了它们共同调用 do_fork 的实现。现在已经知道一个进程是如何创建的,但是进程何时被执行,需要调度器来选择。所以这一节我们介绍下进程调度和进程切换的详情。进程的分类在 CPU 的角度看进程行为的话,可以分为两类:CPU 消耗...
资源简介:我们说的 Modern C++,一般指的是 C++11 及以后的标准,从 C++ 11 开始,Modern C++ 引入了大量的实用的特性,主要是两大方面,学习的时候也可以从这两大方面学习:增强或者改善的语法特性;新增的或者改善的 STL 库。我们来看几个具体的案例:案例 1:统一的类成员初始化语法与 std::initializer_list<T>:在 C++98/03 中...
资源简介:大家好,我是飞哥!经常在后台收到读者的交流,Linux 源码那么庞大,飞哥你是如何读的呢?由于问这个问题的太多,我想有必要专门写一篇文章聊一聊。首先,我先说一点,其实我本人不是搞内核相关工作的。我和大多数同学都一样,从事的也是应用层上的开发,负责的是后端模块。那我为什么要研究源码这个之前我说过,是因为我在...
资源简介:在《一文读懂 | 进程怎么绑定 CPU》这篇文章中介绍过,在 Linux 内核中会为每个 CPU 创建一个可运行进程队列,由于每个 CPU 都拥有一个可运行进程队列,那么就有可能会出现每个可运行进程队列之间的进程数不一样的问题,这就是所谓的 负载不均衡 问题,如下图所示:(图1)最极端的情况是,一个 CPU 的可运行进程队列拥有...
资源简介:前言TCP协议是大厂面试必问的知识点。整理了15道非常经典的TCP面试题,希望大家都找到理想的offer呀公众号:捡田螺的小男孩1. 讲下TCP三次握手流程开始客户端和服务器都处于CLOSED状态,然后服务端开始监听某个端口,进入LISTEN状态第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SEND 状态第二次握手(SYN=1, ACK...
资源简介:平时聊天时总会有朋友叫猫哥猫哥的,开始时我会纠正一下,后来叫猫哥的实在太多了,我也实在纠正不过来,也是懒得纠正了。然而然而然而,我公众号后台其实是可以回复程序喵关键字领取资料,可是偏偏有人如图这样:总能在公众号后台看到有人回复“程序猫”,错误的关键词导致这些人看不到原本设置的关键词“程序喵”对应的回...
资源简介:编译:伯乐在线 - 郑芸,英文:Henrik Warne来源:CPP开发者Bug 是绝佳的学习机会。所以我们怎样尽可能多地从修复的 bug 中吸取经验?我至今已经用了 13 年的一个方法是,写下这个 bug 的简单描述、修复方法以及吸取的经验。遥想 2002 年,我偶然发现一篇描述这个方法的博客(很不幸,我没再找到)。我从那时起就使用这个...
资源简介:未来的软件,从诞生起,就是生在云上,长在云上的。这个说法绝对不是没有根据的,看看现在的互联网大厂在做的事情,你就知道了: 阿里宣布成立云原生技术委员会,并投入数十亿大力推动阿里经济体全面云原生化,对外赋能数百万家企业进行云原生改造,提升 30% 研发效率的同时降低30% IT 成本,帮助客户迈入数字原生时代。华...
资源简介:hi,大家好,欢迎来到极客重生的世界,今天给大家分享的是Linux 网络新技术,当前正流行网络技是什么?那就是eBPF和XDP技术,Cilium+eBPF超级火热,Google GCP也刚刚全面转过来。新技术出现的历史原因廉颇老矣,尚能饭否iptables/netfilteriptables/netfilter 是上个时代Linux网络提供的优秀的防火墙技术,扩展性强,能够满...
资源简介:导读:如果你也读CS专业,如果你也不知道怎么回答“学计算机不就是学修电脑”这个CS系的宿命之问,推荐一定读一读《深入理解计算机系统》。《深入理解计算机系统》是一本什么样的书呢?两个字,经典。原因有二,第一,这书无数业界大牛推荐,第二,这书和你印象中的经典一样,给人的第一感觉就是厚实。不过,厚实也很容易再...
资源简介:作者 | Kostya Shishkov 译者 | 弯月 责编 | 欧阳姝黎出品 | CSDN(ID:CSDNnews)C和C++孰优孰劣之争貌似永远不会有结果,我们也就看看热闹吧:虽然 C 语言并不是我所学的第一门语言,也不是我的最后一门语言,但是我仍然非常喜欢 C,当需要写程序时,我的第一选择还是 C。同时,我也会关注现代编程语言...
资源简介:来源 | https://blog.csdn.net/Solstice/article/details/8547547声明 | 本文为CSDN博主[陈硕]原创文章,如有侵权请联系删除最近看见交流群里小伙伴在讨论这个问题,自己也很感兴趣,上网找到了陈硕大佬的这篇文章,分享给大家!以下是正文:我在《Linux 多线程服务端编程:使用 muduo C++ 网络库》第 1.9 节“再论 shared...
资源简介:在软件中随处可见命名:要给变量、函数、参数、类和封包命名,还要给源代码及源代码所在目录命名,甚至还有jar文件、war文件和ear文件命名。但是,看似简单的命名,也是让不少程序员头疼的问题。有一些小伙伴,在进行变量命名的时候,对于自己熟悉的英文,可能还会用英文命名一下,如果需要命名的部分不会用英文表达,或许...
资源简介:封面是我最近在追的动漫《眷思量》,推荐给大家!本文作者:陈硕来源:https://www.zhihu.com/question/22608820/answer/21968467看完后不再迷茫!在校学生的编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。下面简单谈谈我对学习这...
资源简介:导读:随着移动互联网的发展,视频化浪潮借着5G的东风扑面而来。然而众多用户在进行视频化创作的过程中,被传统视频编辑器复杂的功能和陡峭的学习曲线劝退。为此,百度百家号业务研发团队结合用户的实际创作需求,开发出一款简单易用的在线视频编辑和发布工具——百家号在线视频编辑器。本文将细致地介绍这一编辑器的技术原...
资源简介:socket fd 长什么样子?什么是 socket fd ?粗糙的来讲,就是网络 fd,比如我们最常见的 C/S 客户端服务端的编程模式,就是网络通信的一种方式。撇开底层和协议细节,网络通信和文件读写从接口上有本质区别吗?其实没啥区别,不就是读过来和写过去嘛,简称 IO 。我们先看一下 socket fd 是什么样子的?随便找了个进程root@u...
资源简介:来源:IBN,作者:Cameron Lairdhttps://www.ibm.com/developerworks/cn/aix/library/au-memorytechniques.html本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序,并且...
资源简介:导读:程序core是指应用程序无法保持正常running状态而发生的崩溃行为。程序core时会生成相关的core-dump文件,是程序崩溃时程序状态的数据备份。core-dump文件中包含内存、处理器、寄存器、程序计数器、栈指针等状态信息。本文将介绍一些利用core-dump文件定位程序core原因的方法和技巧。全文7023字,预计阅读时间 13分钟...
资源简介:C++开发究竟需不需要学点Rust?个人认为:需要!早就是优势!多年以前,后端还是Java和C++的天下呢!那时好多人都说Go的生态不好,它作为后端主要语言还有很长一段距离。然而,看看现在,多数做后端开发的人都转到Go去了。貌似现在的Rust和当年的Go有点类似的味道?对于 Rust 这个新语言,很多人可能都听过,但是没用过。实...
资源简介:封面自己画的,应该还算比较可爱的吧,复古类型的可爱啦。为什么是森林呢,嗯~~周末看了书《挪威的森林》,其中有句话是:如果你掉进了黑暗里,你能做的,不过是静心等待,直到你的双眼适应黑暗。此篇文章关于 C/C++/Linux后端开发的全路线。前言于我而言,最开始学习就是 C++,除了计算机专业,其他专业可能学习的第一门编...
资源简介:卷友们好,我是阿秀。阿秀在去年找工作时,大概面试过四十余场,不敢说自己的面试经验很丰富,但至少也不差的。所以专门花了点时间把自己的面试经验总结了一下,分享给大家!可以说,三个多月的时间里,40 余场面试,都浓缩在这 6262个字里了。在此之前,先分享一下自己昨天的小确幸,可以说是20多年以来收到的最好的儿童节...
资源简介:转自:Guancheng (G.C.)在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。1、用锁来防止数据竞跑在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新...
资源简介:CVE-2021-22555:一个影响2006年(Linux kernel v2.6.19-rc1 发布)至今(Linux kernel v5.12-rc8)的所有Linux内核版本的漏洞,可导致本地提权与容器逃逸;该漏洞是个内核级漏洞,跟Linux的发行版本没有关系,也就是说只要Linux 内核版本在v2.6.19-rc1 ~v5.12-rc8 之间的内核,都存在被黑客利用该漏洞攻击的可能。该漏洞...
资源简介:C++对比其他语言到底难在哪里?有人对C++异常推崇,除了性能优势,还有什么优点,怎么学好C++?01C++的能力上限非常高,可以说在软件领域没有C++做不好和做不到的事情,只是开发者水平和成本问题,而C++之后出现的语言都有些无论如何都做不好或根本做不到的事情。C++虽然能力上限高,但是达到这个上限对开发者的要求也很高...