5 奇妙之二进制

尚未进行身份认证

我要认证

欢迎关注二进制人生公众号

等级
TA的排名 1w+

知识储备之Linux下进程间同步和通信机制培训第三天(3)信号量

文章目录1. 信号量2. 信号量的工作原理3. 二元信号量4. 信号量如何保护共享资源5. 与信号量相关的函数5.1 创建信号量5.2 删除和初始化信号量5.3 改变信号量的值5.4 sembuf中sem_flg的设置问题6.信号量实现进程间同步1. 信号量产生背景:多个程序同时访问一个共享资源可能会引发一系列问题,所以我们需要一种方法,来保证共享资源的有序访问。信号量本质上是一个计数器,用于控制多进程对共享资源的存取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属

2020-10-18 14:01:03

知识储备之Linux下进程间同步和通信机制培训第一天(0)综述

1 产生背景同一个进程中的线程间由于共享内存地址空间,因此可以使用全局变量或者开放地址的堆空间直接通信, 不需要额外的开销。但是进程间由于各自空间地址独立,导致不可能直接通信,因此需要使用额外的开销——进程间通信机制。IPC的全称是Inter-process Comminication,就是进程间通信。2 进程通信的应用场景数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。

2020-10-18 13:59:11

知识储备之Linux下进程间同步和通信机制培训第一天(1)无名管道

文章目录1、管道的概念2、管道创建3、编程实战4、探究管道的读写行为1、管道的概念管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,用来完成数据传送。读端 和 写端管道特点半双工只能用于具有亲缘关系的进程之间。管道的缓冲区是有限的(ubuntu实测64K)。管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令,或记录)等等。管道的数据被读走后就没了。向读端关闭的管道内写数据时,write() 所在进程会(收到 SI

2020-10-18 13:54:42

Linux C/C++ or 嵌入式面试之《网络编程系列》(13) select/poll/epoll区别

文章目录selectPollepoll涉及到网络编程时,IO多路复用问及的概率非常大。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select,poll,epoll都是IO多路复用的机制。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。关于同步IO和

2020-09-25 13:44:49

嵌入式软件工程师or Linux C/C++工程师技术面专题(60篇+,200多个问题)-- 决战2020秋招、2021春招、疫情之下跳槽(永久更新!!!)

今年受疫情影响,企业经营必不可免地受到冲击,企业在选人用人方面比以往都更加谨慎,招聘也更加苛刻。hr都试图用最低的成本去招最优秀的人才。本人从事嵌入式软件开发多年,结合自己的经验,推出了《嵌入式软件工程师技术面专题》,预计会有40篇,分成硬件协议、多进程多线程编程、网络编程、linux基础、C/C++等几大模块,每一篇在末尾都总结了相关提问,其中有些知识,即使是工作了两三年的同学也未必都懂,所以社招的同学也可以看,对于找工作绝对有帮助。**不打无准备之战,提前做好准备,方可立于不败之地**。欢迎大家订阅,只

2020-08-17 19:18:50

程序员简洁简历模板分享

文章目录灰白色调蓝灰色调深绿色调灰白色调https://pan.baidu.com/s/1qB7P-9QjkTcv_GEwm4b94g提取码:9wdi蓝灰色调https://pan.baidu.com/s/1rx9ghG0EfdGJA1TXj51mmA提取码:iad6深绿色调https://pan.baidu.com/s/1TvlyX0PUrrHCoDqWkRnb6Q提取码:v1r2...

2020-09-10 19:31:55

非技术面问题杂项汇总

1、您对我们公司了解多少?在面试之前,最好简单了解下公司,最直接的途径就是访问官网,至少要知道g公司主要业务和产品。2、你还有什么要问的吗?对于技术面,可以这么说:假如我有幸加入贵公司,主要工作是什么?一方面是体现你对这份工作感性兴趣,另一方面这个问题对自己也挺重要的,多了解工作内容,不然后面进去发现不是自己喜欢的工作,会很难受的。3、你选择离职的原因是什么?对于跳槽来说,这个问题是必问的。这个问题大家情况都不一样,结合自身情况吧,但最好不要过分diss老东家。4、未来有什么职业规划?基本上

2020-09-07 17:35:09

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较1、前置后置增减运算符重载的形式自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

2020-09-01 19:13:14

Linux C/C++ or 嵌入式面试之《网络编程系列》(6) 套接字编程杂项讨论

文章目录关于socket阻塞与非阻塞情况下的recv、send、read、write返回值烦人的SIGPIPE信号关于socket阻塞与非阻塞情况下的recv、send、read、write返回值read/recv:阻塞与非阻塞recv返回值没有区分,都是<0:出错,=0:对端关闭,>0:接收到的数据大小。特别:非阻塞模式下返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认

2020-09-01 11:40:05

Linux C/C++ or 嵌入式面试之《C++ STL系列》(2) 关联式容器面试问题汇总

占个坑

2020-08-29 22:14:54

Linux C/C++ or 嵌入式面试之《C++ STL系列》(1) 序列式容器面试问题汇总

C++中vector和list的区别vector和数组类似,拥有一段连续的内存空间。vector申请的是一段连续的内存,当插入新的元素内存不够时,通常以2倍重新申请更大的一块内存,将原来的元素拷贝过去,释放旧空间。因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。list是由双向链表实现的,因此内存空间是不连续的。只能通过指针访问数据,所以list的随机存取非常没有效率,时间复杂度为o(n); 但由于链表的特点,能高效地进行插入和删除。vector拥有一段连续

2020-08-29 15:06:35

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(15) 几种常用的排序算法C实现

文章目录1、冒泡排序法2、选择排序3、插入排序4、快速排序(快排)5、归并排序1、冒泡排序法算法思想让数组中相邻两个数字进行比较,如果是升序排列,如果左边的大于右边,则交换,相当于将较大的数往后挪。第一趟有n个数据,需要比较n-1次,可以将最大的数挪到数组最末端,第二趟只有n-1个数据了,只需要比较n-2次…每一趟可以决出一个数,n个数只要决出n-1个数的位置,剩下一个数也就定了,所以最多需要比较n-1趟。总共需要比较1+ 2 + … + n-1 = n(n-1)/2,所以算法复杂度是O(n^2

2020-08-28 23:39:23

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(5) C++ this、const关键字面试汇总

文章目录1、this指针2、const关键字问题1、this指针this 指针是一个隐含于每一个非static成员函数中的特殊指针,它指向该成员函数调用者的对象。当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。成员函数函数体内所有对类成员的访问,都会被转化为“this->类成员”的方式。this 指针被隐含地声明为: ClassName *const this,这意味着不能给 this 指针赋值;在 ClassName 类的 const

2020-08-28 19:22:43

Linux C/C++ or 嵌入式面试之《网络编程系列》(14) 几种网络服务器模型

模型1:多线程模型每来一个连接,服务器就会新建一个线程来处理该连接的读写事件。特点:1)采用阻塞式 I/O 模型读取数据;2)每个连接都需要独立的线程完成数据读取,业务处理,数据返回的完整操作。存在问题:1)当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大;2)连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 read 操作上,造成线程资源浪费。因此,为了解决这种一个线程对应一个客户端模式带来的问题,提出了采用线程池的方式,也就说创建一个固定大小的线程池,来一个客户端,

2020-08-28 16:34:20

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(4) C语言结构体对齐、枚举、宏、联合体面试问题汇总

结构体对齐问题常常是作为笔试题出现。文章目录结构体对齐问题枚举与宏联合体和结构体区别C和C++结构体区别结构体对齐问题网上总结的几条规则都不对,根据经验判断吧。(1)按结构体最大成员对齐,(但32位机下double、long long按照4字节对齐)案例1struct A{ char a; short b; int a; };8案例2struct A{ int a; double b;};12并非16。(2)结构体嵌套嵌套的结构体会在先内部完成对齐。案例3str

2020-08-23 16:35:11

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(14) C++常见面试题杂项汇总

文章目录1、C++函数形参传递方式有哪几种?2、重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?3、内存的分配方式有几种?4、空指针和悬垂指针的区别?5、什么是封装6、C++中的空类,默认会产生哪些成员函数7、extern "C"的作用8、9、10、1、C++函数形参传递方式有哪几种?值传递、指针传递和引用传递。2、重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,

2020-08-23 13:21:37

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(12) C++ 引用、常引用、引用和指针的区别、引用的作用、常引用的作用

引用的知识点好多,学崩了。文章目录引用引用和指针的区别引用的作用常应用引用引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;  int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。注意事项:(1)声明引用时,必须同时对其进行初始化。(2)引用声明完毕后,相当于目标变量名有两个名

2020-08-23 11:18:04

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(9) C风格类型转换、C++四种类型转换、C++特殊隐式类型转换

文章目录1、C的类型转换方式2、C++新增的四种类型转换3、C++独特的隐式类型转换1、C的类型转换方式首先C++兼容C的类型转换方式。(1)隐式类型转换C在以下四种类型中会进行隐式转换:算术运算符中,低类型转换为高类型(有符号转无符号,char->short->int->float->double)赋值表达式中,右边的值自动隐式转换为左边变量的类型,并赋值函数调用参数传递,系统隐式将实参转换为形参的值函数有返回值,系统隐式将返回表达式类型转换为返回值

2020-08-23 00:22:43

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(7) C++ 继承、单一继承、派生列表、多继承、菱形继承、虚继承、虚基类面试问题汇总

文章目录继承单一继承派生列表多继承菱形继承虚继承继承继承是面向对象程序设计中复用代码的重要手段,它允许程序员在原有类特性的基础上进行扩展增加功能。这样产生的新的类叫派生类。继承体现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。重点:代码重用。单一继承一个类只继承于一个类叫做单一继承。class A{};class B :public A //单一继承{}派生列表派生类通过派生列表来指出其从哪个(哪些)基类继承而来。类派生列表的使用规则:①派生列表不能出现在类

2020-08-22 22:46:54

Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(17) 虚拟地址、物理地址、MMU、分页机制、TLB问题汇总

占个坑

2020-08-21 19:38:42

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。