关闭

CPP开发者

所属频道 单片机 公众号精选
伯乐在线旗下账号,专注分享C/C++开发相关的技术文章和工具资源。
  • C   中的值类别

    C 中的值类别

    ↓推荐关注↓表达式是C语言的基石。每个表达式都有两个属性:类型(type)和值类别(valuecategory)。前者是大家都熟悉的,但是后者却可能是我们不太在意的。本文的目的是介绍与值类别相关的一些知识。前言本文是C基础系统文章中的一篇,将介绍C中的值类别,以及与之相关的一些概念。表达式与值类别C的程序由一系列的表达式(expressions)构成。表达式是运算符和操作数的序列,表达式指定一项计算。例如:22或者std::cout

    2021-09-23
  • 真正的 C   高手原来都是在这里炼成的

    真正的 C 高手原来都是在这里炼成的

    C语言由于在构建系统软件领域的关键作用而被誉为“皇冠上的明珠”。随着C20国际标准的正式发布,C进入全新的里程碑。来自Google、微软、腾讯、华为等业界专家纷纷表示,包括C20在内的现代C语言将为系统级软件的开发、构建、设计带来重要且深远的影响。为此,我们特邀C之父、美国工程院、ACM、IEEE院士BjarneStroustrup,和来自国内外C与系统软件领域的大师、专家、学者,汇聚一堂,于2021年11月25-26日于上海召开2021全球C及系统软件技术大会。深度探讨C与系统级软件技术领域的最佳工程实践和前沿方法。经过数年积累,【全球C及系统软件技术大会】已经成为系统软件领域公认的风向标会...

    2021-09-23
  • C   内存管理(建议收藏)

    C  内存管理(建议收藏)

    ↓推荐关注↓内存管理是C最令人切齿痛恨的问题,也是C最有争议的问题,C高手从中获得了更好的性能,更大的自由,C菜鸟的收获则是一遍一遍的检查代码和对C的痛恨,但内存管理在C中无处不在,内存泄漏几乎在每个C程序中都会发生,因此要想成为C高手,内存管理一关是必须要过的,除非放弃C,转到Java或者C#,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C内存管理问题。1.内存管理伟大的BillGates曾经失言:640Koughttobeenoughforeverybody—BillGates1981程序员们...

  • 编写可移植 C/C   程序的一些要点

    编写可移植 C/C  程序的一些要点

    ↓推荐关注↓以前做过两年C程序移植工作,从Win32平台移植到Linux平台。大约有上百万行C/C代码,历时一年多。在开发Win32版本时,已经强调了程序的可植性,无奈Win32团队里对Linux精通的人比较少,很多问题没有想到,直到后来移植工作开始时,才发现移植并非像想的那样简单。后来,我发现大家对移植工程师都比较轻视,不管是从工资待遇还是管理层的态度来看都是这样。他们往往认为,你们不过是把别人实现好的东西移植过去罢了,你老老实实,按步就班去做就行了,根本不需要丝毫创意。事实并非如此,特别是对于大项目,其中遇到的问题和困难可谓一言难尽。比如前面提到的那个项目,虽然过去好几年了,很多问题我仍然...

  • 20 张图让你彻底掌握负载均衡的秘密!

    20 张图让你彻底掌握负载均衡的秘密!

    前言今天我们来深度解密一下负载均衡器LVS的秘密,相信大家看了你管这破玩意儿叫负载均衡?这篇文章后,还是有不少疑问,比如LVS看起来只有类似路由器的转发功能,为啥说它是四层(传输层)负载均衡器呢,今天我们就来逐渐揭开LVS的迷雾,本文将会用图解的方式浅入深地探讨LVS的工作机制最好大家对网络是如何连接的,数据包的收发机制有所了解,这样会很容易理解本文的知识点,如果对此没概念,建议大家看看这篇文章,把网络是如何连接的给你安排得明明白白没看过也没关系,本文会对一些必要的知识点做些铺垫,争取让大家都能看懂负载均衡器的诞生在很长一段时间内小章公司的DAU(日活)不超过10,所以他只部署了一台机器,毕竟...

  • Linux 文件系统是怎么工作的?

    Linux 文件系统是怎么工作的?

    ↓推荐关注↓和CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。那么,磁盘和文件系统是怎么工作的呢?又有哪些指标可以衡量它们的性能呢?索引节点和目录项文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。我们要记住最重要的一点,在Linux中一切皆文件。不仅普通的文件和目录,就连块设备、套接字、管道等,也都要通过统一的文件系统来管理。为了方便管理,Linux文件系统为每个文件都分配两个数据结构,索引节点(indexnode)和目录项(direc...

    2021-09-22
  • Cache 工作原理,Cache 一致性,你想知道的都在这里

    Cache 工作原理,Cache 一致性,你想知道的都在这里

    ↓推荐关注↓可以随便到网上查一查,各大互联网公司笔试面试特别喜欢考一道算法题,即 LRU缓存机制,又顺手查了一下LRU缓存机制最近有哪些企业喜欢考察,超级大热门!今天给大家分享一篇关于 Cache 的硬核的技术文,基本上关于Cache的所有知识点都可以在这篇文章里看到。关于 Cache 这方面内容图比较多,不想自己画了,所以图都来自《ComputerArchitecture:AQuantitativeApproach》。这是一本体系架构方面的神书,推荐大家看一下。本文主要内容如下,基本涉及了Cache的概念,工作原理,以及保持一致性的入门内容。1、为什么需要Cache1.1为什么需要Cache...

    2021-09-22
  • “这个需求做不了”

    “这个需求做不了”

    当我们遇到莫名其妙的需求,却又不得不去实现时,穿这款卫衣

    2021-09-22
  • 图解 Linux 网络包接收过程

    图解 Linux 网络包接收过程

    因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。我们今天用图解的方式,来深度理解一下在Linux下网络包的接收过程。还是按照惯例来借用一段最简单的代码开始思考。为了简单起见,我们用udp来举例,如下:int main(){    int serverSocketFd = socket(AF_INET, SOCK_DGRAM, 0);    bind(serverSocketFd,...

    2021-09-22
  • Modern C   有哪些能真正提升开发效率的语法糖?

    Modern C  有哪些能真正提升开发效率的语法糖?

    我们说的ModernC,一般指的是C11及以后的标准,从C11开始,ModernC引入了大量的实用的特性,主要是两大方面,学习的时候也可以从这两大方面学习:增强或者改善的语法特性;新增的或者改善的STL库。我们来看几个具体的案例:案例1:统一的类成员初始化语法与std::initializer_list:在C98/03中,假设我们要初始化一个类数组类型的成员(例如常用的清零操作),我们需要这么写:class A { public:     A()     {         //初始化arr         arr[0] = 0;         arr[1] = 0;         arr...

    2021-09-22
  • 为什么服务端程序都需要先 listen 一下?

    为什么服务端程序都需要先 listen 一下?

    大家都知道,在创建一个服务器程序的时候,需要先listen一下,然后才能接收客户端的请求。例如下面的这段代码我们再熟悉不过了。int main(int argc, char const *argv[]){ int fd = socket(AF_INET, SOCK_STREAM, 0); bind(fd, ...); listen(fd, 128); accept(fd, ...);那么我们今天来思考一个问题,为什么需要listen一下才能接收连接?或者换句话说,listen内部执行的时候到底干了啥?如果你也想搞清楚listen内部的这些秘密,那么请跟我来!一、创建socket服务器要做的第一...

    2021-09-22
  • 百度 C   工程师的那些极限优化(并发篇)

    百度 C 工程师的那些极限优化(并发篇)

    导读:对于工程经验比较丰富的同学,并发应该也并不是陌生的概念了,但是每个人所理解的并发问题,却又往往并不统一,本文系统梳理了百度C工程师在进行并发优化时所作的工作。一、背景简单回顾一下,一个程序的性能构成要件大概有三个,即算法复杂度、IO开销和并发能力。由于现代计算机体系结构复杂化,造成很多时候,工程师的性能优化会更集中在算法复杂度之外的另外两个方向上,即IO和并发,在之前的《百度C工程师的那些极限优化(内存篇)》中,我们介绍了百度C工程师工程师为了优化性能,从内存IO角度出发所做的一些优化案例。这次我们就再来聊一聊另外一个性能优化的方向,也就是所谓的并发优化。和IO方向类似,对于工程经验比较...

    2021-09-18
  • C   内存模型

    C  内存模型

    ↓推荐关注↓本文是《C并发编程》一文的姊妹篇。将着重介绍C11标准引入的内存模型。前言在《C并发编程》一文中,我们已经介绍了C11到C17在并发编程方面的新增API。借助那篇文章中的知识,你应该已经可以开发一个完善的C并发系统。这对绝大部分人来说,是足够的了。但在一些情况下,我们可能还需要走得更远。回顾一下,上文中提到的知识是以互斥体为中心的。为了避免竞争条件,是保证任何时候只有一个线程可以进入临界区。这就存在两个问题:可能会出现死锁并发的效率不够这其中,死锁的问题在上文中已经说过。而对于第二点,之所以并发效率不够高,是因为那些策略都是基于锁(lock-based)的:一旦有一个线程进入临界区...

  • 你踩过几种 C   内存泄露的坑?

    你踩过几种 C 内存泄露的坑?

    在ModernC之前,C无疑是个更容易写出坑的语言,无论从开发效率,和易坑性,让很多新手望而却步。比如内存泄露问题,就是经常会被写出来的坑,本文就让我们一起来看看,这些让现在或者曾经的C程序员泪流满面的内存泄露场景吧。你是否有踩过?1.函数内或者类成员内存未释放这类问题可以称之为outofscope的时候,并没有释放相应对象的堆上内存。有时候最简单的场景,反而是最容易犯错的。这个我想主要是因为经常写,哪有不出错。下面场景一看就知道了,当你在写XXX_Class*pObj=newXXX_Class();这一行的时候,脑子里面还在默念记得要释放pObj,记得要释放pObj,可能因为重要的事情要说三...

    2021-09-17
  • 深入理解 Linux socket

    深入理解 Linux socket

    socketfd长什么样子?什么是socketfd?粗糙的来讲,就是网络fd,比如我们最常见的C/S客户端服务端的编程模式,就是网络通信的一种方式。撇开底层和协议细节,网络通信和文件读写从接口上有本质区别吗?其实没啥区别,不就是读过来和写过去嘛,简称IO。我们先看一下socketfd是什么样子的?随便找了个进程root@ubuntu:~# ll /proc/1583/fdtotal 0lrwx------ 1 root root 64 Jul 19 12:37 7 -> socket:[18892]lrwx------ 1 root root 64 Jul 19 12:37 8 -> sock...

    2021-09-17