关闭

CPP开发者

所属频道 单片机 公众号精选
伯乐在线旗下账号,专注分享C/C++开发相关的技术文章和工具资源。
  • 上帝视角:多核系统的负载均衡

    我们知道为了CPU之间减少“干扰”,每个CPU上都有一个任务队列。运行的过程种可能会出现有的CPU很忙,有的CPU很闲,如下图所示:为了避免这个问题的出现,Linux内核实现了CPU可运行进程队列之间的负载均衡。因为负载均衡是在多个核上的均衡,所以在讲解负载均衡之前,我们先看下多...

    单片机
    2021-10-14
  • C 内存模型

    ↓推荐关注↓本文是《C并发编程》一文的姊妹篇。将着重介绍C11标准引入的内存模型。前言在《C并发编程》一文中,我们已经介绍了C11到C17在并发编程方面的新增API。借助那篇文章中的知识,你应该已经可以开发一个完善的C并发系统。这对绝大部分人来说,是足够的了。但在一些情况下,我们...

    单片机
    2021-10-11
  • 图解 Linux 网络包接收过程

    因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。我们今天用图解...

    单片机
    2021-10-11
  • Modern C 有哪些能真正提升开发效率的语法糖?

    我们说的ModernC,一般指的是C11及以后的标准,从C11开始,ModernC引入了大量的实用的特性,主要是两大方面,学习的时候也可以从这两大方面学习:增强或者改善的语法特性;新增的或者改善的STL库。我们来看几个具体的案例:案例1:统一的类成员初始化语法与std::init...

    单片机
    2021-10-11
  • 为什么服务端程序都需要先 listen 一下?

    大家都知道,在创建一个服务器程序的时候,需要先listen一下,然后才能接收客户端的请求。例如下面的这段代码我们再熟悉不过了。int main(int argc, char const *argv[]){ int fd = socket(AF_INET, SOCK_STREAM,...

    单片机
    2021-10-11
  • C 内存管理(建议收藏)

    ↓推荐关注↓内存管理是C最令人切齿痛恨的问题,也是C最有争议的问题,C高手从中获得了更好的性能,更大的自由,C菜鸟的收获则是一遍一遍的检查代码和对C的痛恨,但内存管理在C中无处不在,内存泄漏几乎在每个C程序中都会发生,因此要想成为C高手,内存管理一关是必须要过的,除非放弃C,转到...

    单片机
    2021-10-11
  • 编写可移植 C/C 程序的一些要点

    ↓推荐关注↓以前做过两年C程序移植工作,从Win32平台移植到Linux平台。大约有上百万行C/C代码,历时一年多。在开发Win32版本时,已经强调了程序的可植性,无奈Win32团队里对Linux精通的人比较少,很多问题没有想到,直到后来移植工作开始时,才发现移植并非像想的那样简...

    单片机
    2021-10-11
  • C 与正则表达式

    ↓推荐关注↓正则表达式可以说是软件开发中最常用的功能之一。本文将以C语言为例,介绍其中的正则表达式相关知识。前言当你想要判断许多字符串是否符合某个特定格式;当你想在一大段文本中查找出所有的日期和时间;当你想要修改大量日志中所有的时间格式,在这些情况下,正则表达式都能帮上忙。简单来...

    单片机
    2021-10-11
  • TCP 连接中客户端的端口号是如何确定的?

    在TCP连接中,客户端在发起连接请求前会先确定一个客户端端口,然后用这个端口去和服务器端进行握手建立连接。那么在Linux上,客户端的端口到底是如何被确定下来的呢?事实上很多我们平时遇到的问题都和这个端口选择过程相关,如果能深度理解这个过程,将有助于我们对这些问题的深刻理解。Ca...

    单片机
    2021-10-11
  • 为了一个 HTTPS,浏览器操碎了心···

    我是一个浏览器,每到夜深人静的时候,主人就打开我开始学习。为了不让别人看到浏览记录,主人选择了“无痕模式”。但网络中总是有很多坏人,他们通过抓包截获我和服务器的通信,主人干了什么,请求了什么数据全被他们知道了!光窃听也就罢了,他们还经常篡改内容,在网页里面插入诱人的小广告,真是太...

    单片机
    2021-10-11
  • 关于 std::set/std::map 的几个为什么

    ↓推荐关注↓std::set/std::map(以下用std::map代表)是常用的关联式容器,也是ADT(抽象数据类型)。也就是说,其接口(不是OO意义下的interface)不仅规定了操作的功能,还规定了操作的复杂度(代价/cost)。例如set::insert(iterat...

    单片机
    2021-10-11
    se
  • 一文看懂 GDB 调试上层实现

    一、前言这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,在GNU的家族中的地位不可撼动。相信每位嵌入式开发工程师都使用过gdb来调试程序,如果你说没有用过,那只能说明你的开发经历还不够坎坷,还需要继续被BUG吊打。我们都知道,在使用...

    单片机
    2021-10-11
  • 英特尔为其 C/C 编译器全面采用 LLVM

    ↓推荐关注↓英特尔的长期编译器专家JamesReinders在一篇博客中透露,他们将在下一代英特尔C/C编译器中使用LLVM开源基础架构;并分享了一些相关信息。“LLVM有助于我们实现为英特尔架构提供最佳C/C编译器的目标。最新的英特尔C/C编译器使用LLVM,可提供更快的编译时...

  • C 日期和时间编程

    ↓推荐关注↓日期和时间是编程中非常常用的功能。本文是对C11到C17中相关编程接口的介绍。介绍C中可以使用的日期时间API主要分为两类:C-style日期时间库,位于头文件中。这是原先头文件的C版本。chrono库:C11中新增API,增加了时间点,时长和时钟等相关接口。在C11...

    单片机
    2021-10-11
  • 三级跳过程详解-从 bootloader 到 操作系统,再到应用程序

    不论是在x86平台上,还是在嵌入式平台上,系统的启动一般都经历了bootloader到操作系统,再到应用程序,这样的三级跳过程。每一个相互交接的过程,都是我们学习的重点。这篇文章,我们仍然以x86平台为例,一起来看一下:从上电之后,系统是如何一步一步的进入应用程序的入口地址。bo...