自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linux高级开发的博客

关于C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术分享。

  • 博客(168)
  • 收藏
  • 关注

原创 一个10年C++程序员对技术和业务的感悟,献给还在迷茫中的你

我越来越担心我作为一个C++程序员的未来。恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积...

2020-08-04 22:15:08 28419 40

原创 Linux后台服务器架构师开发学习资料

King-90分钟搞定tcp/ip协议栈链接:https://pan.baidu.com/s/1iWU4uLVHeRO0o_ciXK0rIA 密码:krkgLee-高性能服务器为什么需要内存池链接:https://pan.baidu.com/s/1oSOLGmTE3LwMjS5LDXWd-w 密码:2hjoKing-支撑亿级io的底层基石 epoll实战揭秘链接:https://...

2019-07-11 10:47:01 1313

原创 c/c++Linux后台服务开发全套视频收录(持续更新中)

1.微信面试心得 — 后端服务性能内参链接:https://pan.baidu.com/s/1RGU32Z7g0RN8p26qVAwhUQ 密码:6ua92.zero down-time更新服务程序链接:https://www.bilibili.com/video/av574291993.手把手带你实现线程池https://www.bilibili.com/video/av57...

2019-07-08 15:10:04 7136 2

原创 Linux下各种锁的理解和使用及总结解决epoll惊群问题(面试常考)

一.锁锁出现的原因临界资源是什么: 多线程执行流所共享的资源锁的作用是什么, 可以做原子操作, 在多线程中针对临界资源的互斥访问... 保证一个时刻只有一个线程可以持有锁对于临界资源做修改操作...任何一个线程如果需要修改,向临界资源做写入操作都必须持有锁,没有持有锁就不能对于临界资源做写入操作.锁 : 保证同一时刻只能有一个线程对于临界资源做写入操作 (锁地功能)再一个直观地代码引出问题,再从指令集的角度去看问题#include <stdio.h>#includ

2022-03-21 21:03:35 476

原创 HTTP keep-alive和TCP keepalive的区别,你了解吗?

1、从文中找出我的IP2、http请求中是客服端还是服务端主动关闭的tcp连接?请阅读到最后的彩蛋部分HTTP和TCP都是老生常谈的知识点,本文不进行铺开赘述。我们可能在HTTP和TCP中都听说“长连接”的说法,也听过HTTP中有keep-alive,TCP中有keepalive。那么,HTTP和TCP的长连接有何区别?HTTP中的keep-alive和TCP中keepalive又有什么区别?Tips:HTTP中是keep-alive,TCP中是keepalive,HTTP中是带中划线的。.

2022-03-21 17:56:47 1125

原创 实战项目:手把手带你实现一个高并发内存池

项目介绍1.这个项目做的是什么?当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。2.项目目标模拟实现出一个自己的高并发内存池,在多线程环境下缓解了锁竞争问题,相比于malloc/free效率提高了25%左右,将内存碎片保持在10%左右。内存池介绍池化技术所谓“池化技

2022-03-19 14:45:20 684

原创 对面试必问tcp还是一知半解?最浅显易懂的高并发架构TCP知识详解

做为一个有追求的程序员,不能只满足增删改查,我们要对系统全方面无死角掌控。掌握了这些基本的网络知识后,相信一方面日常排错中会事半功倍,另一方面日常架构中不得不考虑的高并发问题,理解了这些底层协议也是会如虎添翼。本文不会单纯给大家讲讲TCP三次握手、四次挥手就完事了。如果只是哪样的话,我直接贴几个连接就完事了。我希望把实际工作中的很多点能够串起来讲给大家。当然为了文章完整,我依然会从三次握手起头。再说TCP状态变更过程不管是三次握手、还是四次挥手,他们都是完成了TCP不同状态的切换。进而影响各..

2022-03-19 14:03:09 187

原创 C++后台开发面试题总结(涉及C++基础、多线程多进程、网络编程等)

C++后台开发面试题总结(涉及C++基础知识、多线程多进程、TCP/IP网络编程、Linux操作、数据结构与算法)因巩固知识体系,面试,梳理以往看到过的知识点,故总结如下相关题目,题目答案请自行google baidu,这里只提供题目。一、C++基础知识面试题总结1、多态的实现2、说说C/C++的区别3、const关键字4、说说malloc/free 和 new/delete区别5、指针和引用的区别6、C++中堆和栈的区别7、关键字static8、在C++程序中调用被

2022-03-11 21:06:31 6703 1

原创 实例解析C++多线程并发---异步编程

线程同步主要是为了解决对共享数据的竞争访问问题,所以线程同步主要是对共享数据的访问同步化(按照既定的先后次序,一个访问需要阻塞等待前一个访问完成后才能开始)。这篇文章谈到的异步编程主要是针对任务或线程的执行顺序,也即一个任务不需要阻塞等待上一个任务执行完成后再开始执行,程序的执行顺序与任务的排列顺序是不一致的。下面从任务执行顺序的角度解释下同步与异步的区别:同步:就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用者主动等待这个调用的结果。 异

2022-03-11 20:59:26 2083

原创 实现一个高并发内存池-----对比Malloc

1. 什么是内存池1.1 池化技术池是在计算技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,有程序自管理,这样可以提高资源的利用率,也可以保证本程序占有的资源数量,经常使用的池化技术包括内存池,线程池,和连接池等,其中尤以内存池和线程池使用最多。1.2 内存池内存池(Memory Pool)是一种动态内存分配与管理技术,通常情况下,程序员习惯直接使用new,delete,malloc,free等API申请和释放内存,这样导致的后果就是:当程序

2022-03-10 14:45:22 464

原创 面试中,linux的进程里面的一些细节

面试中经常会被问到进程和线程的区别,你给面试官回答一个进程里包含许多线程他又不太高兴,嫌你答的太少了,要挂你。今天这篇文章先展开讲一讲 Linux 的进程里面的细节。Linux的进程是怎样创建的Linux系统创建进程都是由已存在的进程创建的(除了0号进程),被创建的进程叫做子进程,创建子进程的进程就做父进程。这句话是不是有点熟悉,没错,Linux进程串起来也是一颗树的结构。就像下面这样:在Linux中,为了创建一个子进程,父进程用系统调用fork来创建子进程。fork()其实就是把父进程

2022-03-10 14:14:06 175

原创 为什么要学IO模型(同步阻塞,异步非阻塞)?

先说答案因为资源有限,多线程的目的是为了最大限度的利用CPU资源。(一)基本概念1、Linux的底层是单进程,还是多进程?答案:用单线程实现了多任务。2、进程、线程、协程的区别是什么?进程(process)是资源分配的最小单位,线程(thread)是处理机调度的最小单位。进程是由一个或多个线程组成的。 线程:初始单位为8MB,固定不可变;由 内核完成 协程:初始一般为 2KB,可随需要而增大;由用户完成3、CPU有什么状态?内核态:Linux文件子系统,I/O读写磁

2022-03-09 15:03:55 205

原创 nginx反向代理和负载均衡策略实战案例

引言先来看下nginx在web服务器排名上的趋势:存在即合理,那为什么要使用nginx呢?这得看看nginx能帮我们做些什么。首先,nginx能做反向代理【关于反向代理和正向代理此处不做说明了,感兴趣的小伙伴自行谷歌】;比方说,我想在本地使用http://www.glmapper1.com的域名去访问http://www.taobao.com。那么这个时候我们就可以通过nginx去实现。再者,nginx能实现负载均衡,什么是负载均衡呢?就是说应用部署在不同的服务器上,但是通过统一的域..

2022-03-09 14:40:12 260

原创 内存优化总结:ptmalloc、tcmalloc和jemalloc

概述需求系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一块当前请求阶段的内存池, 因此对malloc的分配速度有一定的依赖关系。(而apache的内存池是有父子关系的,请求阶段的内存池会和连接阶段的使用相同的分配器,如果连接内存池释放则请求阶段的子内存池也会自动释放)..

2022-03-08 17:37:04 565

原创 从网络协议基础到socket连接池,搞懂tcp,http,socket,socket连接池之间的关系

前言​ 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。七层网络模型​ 首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不

2022-03-08 15:41:13 377

原创 一篇文章带你读懂 io_uring 的接口与实现

io_uring是 Linux 提供的一个异步 I/O接口。io_uring在 2019 年加入 Linux 内核,经过了两年的发展,现在已经变得非常强大。本文基于 Linux 5.12.10 介绍io_uring接口。io_uring的实现主要在fs/io_uring.c中。io_uring 的 用户态 APIio_uring的实现仅仅使用了三个 syscall:io_uring_setup,io_uring_enter和io_uring_register。它们分别用于...

2022-03-08 14:56:21 966

原创 nginx源码分析--master和worker进程模型

一、Nginx整体架构正常执行中的nginx会有多个进程,最基本的有master process(监控进程,也叫做主进程)和woker process(工作进程),还可能有cache相关进程。一个较为完整的整体框架结构如图所示:二、核心进程模型启动nginx的主进程将充当监控进程,而由主进程fork()出来的子进程则充当工作进程。nginx也可以单进程模型执行,在这种进程模型下,主进程就是工作进程,没有监控进程。Nginx的核心进程模型框图如下:master进程监控进

2022-02-26 14:10:42 1884

原创 全网最详细的Intel CPU体系结构分析(内核源码)

前段meldown漏洞事件的影响,那段时间也正好在读Paul的论文关于内存屏障的知识,其中有诸多细节想不通,便陷入无尽的煎熬和冥想中,看了《计算机系统结构》、《深入理解计算机系统》、《大话处理器》等经典书籍,也在google上搜了一大堆资料,前前后后、断断续续地折腾了一个多月,终于想通了,现在把自己的思想心得记录下来,希望对有这方面困惑的朋友有些帮助。本文主要关注以下几个问题。什么是CPU的流水线?为什么需要流水线? 为什么需要内存屏障?在只有单个Core的CPU中是否还需要内存屏障? 什么..

2022-02-23 22:26:00 1525

原创 面试必问的网络知识,都在这100道题里了(值得收藏)

计算机网络模型1、五层因特网协议栈和七层OSI(Open System Interconnections)参考模型分别是什么?5层:应用层、传输层、网络层、数据链路层、物理层7层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层2、为什么考虑分层的架构,有什么优势和缺陷?分层优势协议分层具有概念化和结构化的优点。分层提供了一种结构化方式来讨论系统组件。模块化使更新系统组件更为容易。分层缺陷分层的一个潜在缺点是一层可能冗余较低层的功能。例如,许多协议栈在基于每段链路和基

2022-02-23 20:45:56 8716

原创 面试必问的红黑树,从根源上探究红黑树的本质

前言本文主要讲解下面试经常会问到的红黑树,看看究竟是什么神仙鬼怪。二叉树满足以下两个条件的树就是二叉树:本身是有序树(若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree)); 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;简单地理解,二叉树(Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉查找树要了解红黑树之前,免不了..

2022-02-22 16:06:37 375 1

原创 linux 多线程或多进程 epoll处理 accept 惊群问题

什么是惊群简单说,惊群是因为多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),当时间发生时,就会唤醒所有等待的(休眠的)进程(线程)。但是事件只能被一个进程或线程处理,而其他进程(线程)获取失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群。产生惊群的条件多个进程或者多个线程 同时等待处理一个事件具体场景复现测试环境 :debian11 内核5.10.0-8 编译器 clang11多线程和多进程在惊群问题上差不多,为了少些一点,下文中没有特殊说明,多线程 也包含

2022-02-21 17:17:19 2952

原创 全网最牛Linux内核Makefile系统文件详解(纯文字代码)

第一部分、概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows 的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile 还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为, makefile关系到了整个工..

2022-02-19 16:47:16 1359 1

原创 还搞不懂nginx?看看这篇nginx知识总结

安装安装依赖安装 nginx 之前,确保系统已经安装 gcc、openssl-devel、pcre-devel 和 zlib-devel 软件库gcc 可以通过光盘直接选择安装 openssl-devel、zlib-devel 可以通过光盘直接选择安装,https 时使用 pcre-devel 安装 pcre 库是为了使 nginx 支持 HTTP Rewrite 模块下载nginx 下载编译安装通过上面的下载页下载最新的稳定版#wget http://nginx.org

2022-02-18 14:47:53 515

原创 【C++20 协程原理】从 Linux 线程、线程与异步编程、协程与异步,一文带你弄清楚

协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换。协程和用户态线程非常接近,用户态线程之间的切换不需要陷入内核,但部分操作系统中用户态线程的切换需要内核态线程的辅助。协程是编程语言(或者 lib)提供的特性(协程之间的切换方式与过程可以由编程人员确定),是用户态操作。协程适用于 IO 密集型的任务。常见提供原生协程支持的语言有:c++20、golang、python 等,其他语言以库的..

2022-02-17 14:14:48 414

原创 Linux内存管理-详解mmap原理

1. 一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程映射同一文件,还能保证虚拟空间映射到同一块物理内存,达到内存共享的作用。2.虚拟内存?虚拟空间?其实是一个概念,前一篇对于这个词没有确切的定义,现在定义一下:虚拟空间就是进程看到的所有地址组成的空间,虚拟空间是某个进程对分配给它的所有物理地址(已经分配的和将会分配的)的重新映射。而虚拟...

2022-02-12 15:51:56 506

原创 记录一次腾讯c/c++ linux后台开发岗面试经历(面试题含答案)

腾讯c/c++ linux后台开发社招面试流程虽然因人而异,但就个人感受而言,腾讯的面试从考察内容方面来讲,还是有一定的共通性,这一点,可以从网上众多的面经可以看出。腾讯的面试的流程持续一个多月第一轮和第二轮电话面试,技术面;第三轮和第四轮现场笔试+面试,技术面;第六轮HR面;最后offer call;第一面时间晚八点半,电话面,开始项目介绍,技术难点、实现细节。大概说了20分钟左右,可能是项目架构比较复杂,口述不是特别形象,又聊了10分钟,貌似双方谁也没说服谁。开始聊计算机网络

2022-02-12 15:34:05 608

原创 深入理解DPDK-同步互斥机制详解

DPDK根据多核处理器的特点,遵循资源局部化的原则,解耦数据的跨核共享,使得性能可以有很好的水平扩展。但当面对实际应用场景,CPU核间的数据通信、数据同步、临界区保护等都是不得不面对的问题。如何减少由这些基础组件引入的多核依赖的副作用,也是DPDK的一个重要的努力方向。原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。对原子操作的简单描述就是:多个线程执行一个操作时,其中任何一个线程要么完全执行完此操作,

2022-02-11 15:52:33 840

原创 深入理解 http 反向代理(nginx)

要理解什么是反向代理(reverse proxy), 自然你得先知道什么是正向代理(forward proxy).另外需要说的是, 一般提到反向代理, 通常是指 http 反向代理, 但反向代理的范围可以更大, 比如 tcp 反向代理, 在这里, 不打算讨论 tcp 之类的反向代理, 当文中说到反向代理时, 指的就是 http 反向代理.正向代理通常直接称为代理(proxy), 无需强调它是正向的, 在 http 协议中, 代理即指正向代理.直接访问而要谈论什么是正向代理, 则需...

2022-02-09 15:04:29 12444 12

原创 Linux服务器开发之MySQL 集群方案

案例:100W 的客户端,每三分钟上传一次数据。数据库如何设计?能够查询所有记录?相关推荐:第四十八讲|MySQL需要了解哪些方面,才能算熟悉MySQL官方 MySQL 集群方案MySQL Replication MySQL Replication 是 mysql 自带的功能,主从复制是通过重放 binlog 实现主库数据的异步复制。即当主库执行了一条 sql 命令,那么在从库同样的执行一遍,从而达到主从复制的效果。在这个过程中,master 对数据的写操作记入二进.

2022-01-08 15:56:56 164

原创 DPDK /网络协议栈怎么学?

如何学懂DPDK,这篇文章告诉你

2022-01-04 16:32:25 1097

原创 c/c++后台开发前景到底如何?该如何提升?

最近听到很多人都在讲:在这个Java热火朝天,人工智能高能吹捧的市场,c/c++开发人员还有人要?小编想说的是:有,而且很多企业都是有在招c/c++开发人才。只是IT这个行业:普遍高端稀缺,中端平衡,低端饱和。后台开发第330讲|c/c++开发方向如何选择,嵌入式,qt/mfc,游戏开发,后端开发| c/c++为什么开发方向多样?|为什么不推荐 qt/mfcc/c++的难度系数比其他语言都高。所以愿意去选择他的人数一年比一年少。如果时间充足,对c/c++比较感兴趣的伙伴 ,可以

2021-12-02 16:42:00 7473

原创 2021年关于Redis最新的50道面试题(含答案)

1、什么是 Redis?Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。Redis的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个value的最大限制是 1GB,不像 memcached 只能保存 1MB 的

2021-08-28 15:20:07 1175

原创 2021年最新整理的秋招,春招100道mysql的面试题(含答案)

1. MySQL 索引使用有哪些注意事项呢?可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则索引哪些情况会失效查询条件包含or,可能导致索引失效 如何字段类型是字符串,where时一定用引号括起来,否则索引失效 like通配符可能导致索引失效。 联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。 在索引列上使用mysql的内置函数,索引失效。 对索引列运算(如,+、-、*、/),索引失效。 索引字段上使用(!= 或者 < >,not

2021-08-28 14:20:35 9738

原创 Linux虚拟内存管理,MMU机制详解

相关教程:后台开发第286讲|【Linux内核篇】剖析Linux内核MMU详解|1、物理内存组织结构 2、虚拟地址空间划分 3、内核与用户空间布局 4、内存映射原理机制MMU现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持。首先引入 PA 和 VA 两个概念。PA如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到.

2021-08-21 17:43:15 2525

原创 Linux下的音视频开发和安卓的音视频开发有什么区别吗?

不管哪个平台大部分的音视频知识都是相同的,比如FFmpeg不管在Linux、Windows、Android、IOS都是通用的;比如RTMP、HLS、HTTP-FLV、RTP等流媒体知识也是不分平台;再比如WebRTC,也是跨平台的音视频应用。音视频开发难点在哪里?现在上车还来得及吗?(全网最详细音视频学习路线分享)一、行业现状核心竞争力:定义音视频是程序界的皇冠,掌握音视频意味着你的技术航向已驶向蓝海,不用担心会被其他人替代。而音视频是有门槛的,是与其他人拉开差距的分水岭,不然也不会有“你想做音

2021-08-13 17:26:21 557 1

原创 Android音视频开源项目系列1.0

项目Android平台PlayerSDKhttps://github.com/JeffMony/PlayerSDK.git这是一个专注音视频播放器的库,目前还在不断优化中,主要功能如下:支持ijkplayer 和 exoplayer 两种播放器 支持进度条和seek功能支持二维码扫描网址功能 支持循环播放的功能支持倍速的功能 支持针对HLS Master视频的切换清晰度功能添加Player实例监控方法 支持GLSurfaceView渲染视频播放时调整声音大小 播放视频加

2021-08-05 16:18:30 322

原创 C++多线程编程,线程互斥和同步通信,死锁问题分析解决

c/c++ linux服务器开发相关视频解析:后台开发第178讲|【零声学院官方视频】epoll原理剖析以及reactor模型应用|1. epoll原理剖析 2. 单reactor原理以及应用聊聊线程面试那些事||线程起源||线程模型||进程和线程的联系和区别||为什么需要线程池c/c++ linux服务器开发免费学习地址:c/c++ linux后台服务器高级架构师C++11的多线程类threadC++11之前,C++库中没有提供和线程相关的类或者接口,因此在编写多线程程..

2021-05-08 15:32:54 547 1

原创 linux服务器高效内存池的具体实现(含实例源码)

linux服务器开发相关视频解析:后台开发第174讲|nginx源码分析之内存池与线程池|1. nginx的使用场景 2. nginx源码 内存池,线程池,日志 3. nginx的多进程网络实现c/c++ linux服务器开发免费学习地址:c/c++ linux后台服务器高级架构师在编程过程中,尤其是对于C语言开发者,其实编程就是在使用内存,不停地变化内存中的数据。当我们想开辟一片新的内存使用时,就会使用malloc实现。但是通过查阅很多资料,发现频繁的使用malloc并不是很好的..

2021-05-06 17:02:34 380

原创 TCP传输层面试中常问的问题汇总(你所不知道的传输层)

c/c++ linux服务器开发相关视频解析:后台开发第153讲|手写一个用户态网络协议栈,瞬间提升你网络功底|1. 网卡基础架构 2. netmap/dpdk的实现 3. 网络协议栈实战c/c++ linux服务器开发免费学习地址:c/c++ linux后台服务器高级架构师1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么.

2021-05-06 16:55:59 367

原创 c/c++后台开发必知堆与栈的区别

作者:linux链接:https://zhuanlan.zhihu.com/p/268370042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式;(2)数据结构场景下,堆与栈表示两种常用的数据结构。1.程序内存分区中的堆与栈1.1 栈简.

2021-03-27 15:09:19 195

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除