Linux服务器开发
文章平均质量分 91
Linux高级开发
一路追随Bug~~
展开
-
Linux下各种锁的理解和使用及总结解决epoll惊群问题(面试常考)
一.锁锁出现的原因临界资源是什么: 多线程执行流所共享的资源锁的作用是什么, 可以做原子操作, 在多线程中针对临界资源的互斥访问... 保证一个时刻只有一个线程可以持有锁对于临界资源做修改操作...任何一个线程如果需要修改,向临界资源做写入操作都必须持有锁,没有持有锁就不能对于临界资源做写入操作.锁 : 保证同一时刻只能有一个线程对于临界资源做写入操作 (锁地功能)再一个直观地代码引出问题,再从指令集的角度去看问题#include <stdio.h>#includ原创 2022-03-21 21:03:35 · 670 阅读 · 0 评论 -
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 · 1244 阅读 · 0 评论 -
实战项目:手把手带你实现一个高并发内存池
项目介绍1.这个项目做的是什么?当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。2.项目目标模拟实现出一个自己的高并发内存池,在多线程环境下缓解了锁竞争问题,相比于malloc/free效率提高了25%左右,将内存碎片保持在10%左右。内存池介绍池化技术所谓“池化技原创 2022-03-19 14:45:20 · 759 阅读 · 0 评论 -
对面试必问tcp还是一知半解?最浅显易懂的高并发架构TCP知识详解
做为一个有追求的程序员,不能只满足增删改查,我们要对系统全方面无死角掌控。掌握了这些基本的网络知识后,相信一方面日常排错中会事半功倍,另一方面日常架构中不得不考虑的高并发问题,理解了这些底层协议也是会如虎添翼。本文不会单纯给大家讲讲TCP三次握手、四次挥手就完事了。如果只是哪样的话,我直接贴几个连接就完事了。我希望把实际工作中的很多点能够串起来讲给大家。当然为了文章完整,我依然会从三次握手起头。再说TCP状态变更过程不管是三次握手、还是四次挥手,他们都是完成了TCP不同状态的切换。进而影响各..原创 2022-03-19 14:03:09 · 243 阅读 · 0 评论 -
实例解析C++多线程并发---异步编程
线程同步主要是为了解决对共享数据的竞争访问问题,所以线程同步主要是对共享数据的访问同步化(按照既定的先后次序,一个访问需要阻塞等待前一个访问完成后才能开始)。这篇文章谈到的异步编程主要是针对任务或线程的执行顺序,也即一个任务不需要阻塞等待上一个任务执行完成后再开始执行,程序的执行顺序与任务的排列顺序是不一致的。下面从任务执行顺序的角度解释下同步与异步的区别:同步:就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用者主动等待这个调用的结果。 异原创 2022-03-11 20:59:26 · 2186 阅读 · 0 评论 -
实现一个高并发内存池-----对比Malloc
1. 什么是内存池1.1 池化技术池是在计算技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,有程序自管理,这样可以提高资源的利用率,也可以保证本程序占有的资源数量,经常使用的池化技术包括内存池,线程池,和连接池等,其中尤以内存池和线程池使用最多。1.2 内存池内存池(Memory Pool)是一种动态内存分配与管理技术,通常情况下,程序员习惯直接使用new,delete,malloc,free等API申请和释放内存,这样导致的后果就是:当程序原创 2022-03-10 14:45:22 · 550 阅读 · 0 评论 -
面试中,linux的进程里面的一些细节
面试中经常会被问到进程和线程的区别,你给面试官回答一个进程里包含许多线程他又不太高兴,嫌你答的太少了,要挂你。今天这篇文章先展开讲一讲 Linux 的进程里面的细节。Linux的进程是怎样创建的Linux系统创建进程都是由已存在的进程创建的(除了0号进程),被创建的进程叫做子进程,创建子进程的进程就做父进程。这句话是不是有点熟悉,没错,Linux进程串起来也是一颗树的结构。就像下面这样:在Linux中,为了创建一个子进程,父进程用系统调用fork来创建子进程。fork()其实就是把父进程原创 2022-03-10 14:14:06 · 211 阅读 · 0 评论 -
为什么要学IO模型(同步阻塞,异步非阻塞)?
先说答案因为资源有限,多线程的目的是为了最大限度的利用CPU资源。(一)基本概念1、Linux的底层是单进程,还是多进程?答案:用单线程实现了多任务。2、进程、线程、协程的区别是什么?进程(process)是资源分配的最小单位,线程(thread)是处理机调度的最小单位。进程是由一个或多个线程组成的。 线程:初始单位为8MB,固定不可变;由 内核完成 协程:初始一般为 2KB,可随需要而增大;由用户完成3、CPU有什么状态?内核态:Linux文件子系统,I/O读写磁原创 2022-03-09 15:03:55 · 241 阅读 · 0 评论 -
nginx反向代理和负载均衡策略实战案例
引言先来看下nginx在web服务器排名上的趋势:存在即合理,那为什么要使用nginx呢?这得看看nginx能帮我们做些什么。首先,nginx能做反向代理【关于反向代理和正向代理此处不做说明了,感兴趣的小伙伴自行谷歌】;比方说,我想在本地使用http://www.glmapper1.com的域名去访问http://www.taobao.com。那么这个时候我们就可以通过nginx去实现。再者,nginx能实现负载均衡,什么是负载均衡呢?就是说应用部署在不同的服务器上,但是通过统一的域..原创 2022-03-09 14:40:12 · 324 阅读 · 0 评论 -
内存优化总结:ptmalloc、tcmalloc和jemalloc
概述需求系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一块当前请求阶段的内存池, 因此对malloc的分配速度有一定的依赖关系。(而apache的内存池是有父子关系的,请求阶段的内存池会和连接阶段的使用相同的分配器,如果连接内存池释放则请求阶段的子内存池也会自动释放)..原创 2022-03-08 17:37:04 · 621 阅读 · 0 评论 -
从网络协议基础到socket连接池,搞懂tcp,http,socket,socket连接池之间的关系
前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。七层网络模型 首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。所有有关通信的都离不原创 2022-03-08 15:41:13 · 456 阅读 · 0 评论 -
一篇文章带你读懂 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 · 1058 阅读 · 0 评论 -
nginx源码分析--master和worker进程模型
一、Nginx整体架构正常执行中的nginx会有多个进程,最基本的有master process(监控进程,也叫做主进程)和woker process(工作进程),还可能有cache相关进程。一个较为完整的整体框架结构如图所示:二、核心进程模型启动nginx的主进程将充当监控进程,而由主进程fork()出来的子进程则充当工作进程。nginx也可以单进程模型执行,在这种进程模型下,主进程就是工作进程,没有监控进程。Nginx的核心进程模型框图如下:master进程监控进原创 2022-02-26 14:10:42 · 2072 阅读 · 0 评论 -
全网最详细的Intel CPU体系结构分析(内核源码)
前段meldown漏洞事件的影响,那段时间也正好在读Paul的论文关于内存屏障的知识,其中有诸多细节想不通,便陷入无尽的煎熬和冥想中,看了《计算机系统结构》、《深入理解计算机系统》、《大话处理器》等经典书籍,也在google上搜了一大堆资料,前前后后、断断续续地折腾了一个多月,终于想通了,现在把自己的思想心得记录下来,希望对有这方面困惑的朋友有些帮助。本文主要关注以下几个问题。什么是CPU的流水线?为什么需要流水线? 为什么需要内存屏障?在只有单个Core的CPU中是否还需要内存屏障? 什么..原创 2022-02-23 22:26:00 · 1615 阅读 · 0 评论 -
面试必问的网络知识,都在这100道题里了(值得收藏)
计算机网络模型1、五层因特网协议栈和七层OSI(Open System Interconnections)参考模型分别是什么?5层:应用层、传输层、网络层、数据链路层、物理层7层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层2、为什么考虑分层的架构,有什么优势和缺陷?分层优势协议分层具有概念化和结构化的优点。分层提供了一种结构化方式来讨论系统组件。模块化使更新系统组件更为容易。分层缺陷分层的一个潜在缺点是一层可能冗余较低层的功能。例如,许多协议栈在基于每段链路和基原创 2022-02-23 20:45:56 · 9580 阅读 · 0 评论 -
面试必问的红黑树,从根源上探究红黑树的本质
前言本文主要讲解下面试经常会问到的红黑树,看看究竟是什么神仙鬼怪。二叉树满足以下两个条件的树就是二叉树:本身是有序树(若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree)); 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;简单地理解,二叉树(Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉查找树要了解红黑树之前,免不了..原创 2022-02-22 16:06:37 · 487 阅读 · 1 评论 -
linux 多线程或多进程 epoll处理 accept 惊群问题
什么是惊群简单说,惊群是因为多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),当时间发生时,就会唤醒所有等待的(休眠的)进程(线程)。但是事件只能被一个进程或线程处理,而其他进程(线程)获取失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群。产生惊群的条件多个进程或者多个线程 同时等待处理一个事件具体场景复现测试环境 :debian11 内核5.10.0-8 编译器 clang11多线程和多进程在惊群问题上差不多,为了少些一点,下文中没有特殊说明,多线程 也包含原创 2022-02-21 17:17:19 · 3072 阅读 · 0 评论 -
全网最牛Linux内核Makefile系统文件详解(纯文字代码)
第一部分、概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows 的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile 还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为, makefile关系到了整个工..原创 2022-02-19 16:47:16 · 1455 阅读 · 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 · 605 阅读 · 0 评论 -
【C++20 协程原理】从 Linux 线程、线程与异步编程、协程与异步,一文带你弄清楚
协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换。协程和用户态线程非常接近,用户态线程之间的切换不需要陷入内核,但部分操作系统中用户态线程的切换需要内核态线程的辅助。协程是编程语言(或者 lib)提供的特性(协程之间的切换方式与过程可以由编程人员确定),是用户态操作。协程适用于 IO 密集型的任务。常见提供原生协程支持的语言有:c++20、golang、python 等,其他语言以库的..原创 2022-02-17 14:14:48 · 513 阅读 · 0 评论 -
Linux内存管理-详解mmap原理
1. 一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程映射同一文件,还能保证虚拟空间映射到同一块物理内存,达到内存共享的作用。2.虚拟内存?虚拟空间?其实是一个概念,前一篇对于这个词没有确切的定义,现在定义一下:虚拟空间就是进程看到的所有地址组成的空间,虚拟空间是某个进程对分配给它的所有物理地址(已经分配的和将会分配的)的重新映射。而虚拟...原创 2022-02-12 15:51:56 · 547 阅读 · 0 评论 -
记录一次腾讯c/c++ linux后台开发岗面试经历(面试题含答案)
腾讯c/c++ linux后台开发社招面试流程虽然因人而异,但就个人感受而言,腾讯的面试从考察内容方面来讲,还是有一定的共通性,这一点,可以从网上众多的面经可以看出。腾讯的面试的流程持续一个多月第一轮和第二轮电话面试,技术面;第三轮和第四轮现场笔试+面试,技术面;第六轮HR面;最后offer call;第一面时间晚八点半,电话面,开始项目介绍,技术难点、实现细节。大概说了20分钟左右,可能是项目架构比较复杂,口述不是特别形象,又聊了10分钟,貌似双方谁也没说服谁。开始聊计算机网络原创 2022-02-12 15:34:05 · 745 阅读 · 0 评论 -
深入理解DPDK-同步互斥机制详解
DPDK根据多核处理器的特点,遵循资源局部化的原则,解耦数据的跨核共享,使得性能可以有很好的水平扩展。但当面对实际应用场景,CPU核间的数据通信、数据同步、临界区保护等都是不得不面对的问题。如何减少由这些基础组件引入的多核依赖的副作用,也是DPDK的一个重要的努力方向。原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。对原子操作的简单描述就是:多个线程执行一个操作时,其中任何一个线程要么完全执行完此操作,原创 2022-02-11 15:52:33 · 974 阅读 · 0 评论 -
DPDK /网络协议栈怎么学?
如何学懂DPDK,这篇文章告诉你原创 2022-01-04 16:32:25 · 1137 阅读 · 0 评论 -
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 · 1234 阅读 · 0 评论 -
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 · 587 阅读 · 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 · 437 阅读 · 0 评论 -
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 · 389 阅读 · 0 评论 -
c/c++后台开发必知堆与栈的区别
作者:linux链接:https://zhuanlan.zhihu.com/p/268370042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式;(2)数据结构场景下,堆与栈表示两种常用的数据结构。1.程序内存分区中的堆与栈1.1 栈简.原创 2021-03-27 15:09:19 · 214 阅读 · 0 评论 -
状态模式:一个Epoll边缘触发的代理服务器设计
linux服务器开发相关视频解析:后台开发第204讲|【零声学院】大厂面试必备:设计模式篇|1. 开闭原则、单一职责、里氏替换、接口隔离以及组合优于继承 2. 模板方法 3. 责任链和装饰器模式后台开发第135讲|epoll的具体实现与epoll线程安全,互斥锁,自旋锁,CAS,原子操作|1. 互斥锁的原理 2. 自旋锁的使用场景 3. 三种操作的使用c/c++ linux服务器开发免费学习地址:c/c++ linux后台服务器高级架构师设计模式是一门热门的知识,...原创 2021-03-27 14:49:02 · 262 阅读 · 0 评论 -
操作系统内存管理,你能回答这8个问题吗?
linux服务器开发相关视频解析:后台开发第170讲|【零声学院官方视频】90分钟了解 Linux内存架构 听了就赚到了|1. numa的优势 2. slab/slob/slub的分配机制后台开发第178讲|【零声学院官方视频】epoll原理剖析以及reactor模型应用|1. epoll原理剖析 2. 单reactor原理以及应用c/c++ linux服务器开发免费学习地址:c/c++ linux后台服务器高级架构师1. 什么是物理内存2. 使用物理内存有什么缺点...原创 2021-03-25 14:12:15 · 228 阅读 · 0 评论 -
Linux性能优化专项学习(一)
01 | 学习Linux性能优化性能指标是什么?当看到性能指标时,你会首先想到什么呢?我相信“高并发”和“响应快”一定是最先出现在你脑海里的两个词,而它们也正对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的视角来考察性能,直接影响了产品终端的用户体验。跟它们对应的,是从系统资源的视角出发的指标,比如资源使用率、饱和度等。我们知道,随着应用负载的增加,系统资源的使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不..原创 2021-01-30 15:49:16 · 945 阅读 · 1 评论 -
数据库的存储结构
主流的key-value存储系统,都是在系统内部维护⼀个hash表,因为对hash表的操作时间复杂度为O(1)。如果数据增加以后,导致冲突严重,时间复杂度增加,则可以对hash表进⾏rehash,以此来保证操作的常 量时间复杂度。那么,对于这样⼀个基于hash表的key-value存储系统,是如何提供这么丰富的数据结构的呢?这些数据 结构在内存中如何存储呢?这篇⽂章将⽤⼤量的图⽚演示redis的内存布局和数据存储。1、Hash算法 先来看⼀个思考题,⽐如我们有⼀个k-v系统,如果我们把k-...原创 2021-01-21 15:25:13 · 426 阅读 · 0 评论 -
都2021年了,c/c++ 开发竟然还能继续吃香??
年后就迎来了金三银四,你准备好2021年的跳槽涨薪计划了吗?今天我就来给大家分享,c/c++作为老牌开发常青树,还能与java/python/go较较劲的岗位和技术在哪里!同时,给大家整理了2021年系统全面技术学习资料。文末领取,免费送给你!首先,先来看看c/c++开发能从事哪些开发岗位?01实验室开发不止计算机专业,很多工科专业,比如电信、电气、通信等专业,基本上正常的学习中都会使用到C++。都说C++兼具面向过程以及面向对象的特性,既...原创 2021-01-20 17:35:09 · 647 阅读 · 0 评论 -
从经典网络IO模型到新异步IO框架io_uring
网络IO两阶段网络IO涉及用户空间和内核空间,一般会有以下两阶段: 一阶段:等待数据准备就绪,即数据被copy到内核缓冲区(wait for data) 二阶段:数据从内核缓冲区copy到用户缓冲区(copy data from kernel to user) 根据以上两阶段不同,出现了多种网络IO模型,接下来一一进行分析。注意所展示的图中(wait for data)和(copy data from kernel to user)字段分别表示一二阶段。1. 阻塞I...原创 2021-01-19 21:42:36 · 432 阅读 · 0 评论 -
高并发:线程、线程锁与线程池(精华),手写代码实现线程池
前文:单线程——多线程的开启——线程锁——线程同步工具——手写连接池——连接池工具类。一、线程1.线程的概念2.线程与进程的关系3.定义:区别:如上!!!4.wait()和sleep()5.线程的状态及其他API二、线程锁线程并发同步时,引入了锁机制。1. 普通锁机制:synchronized 修饰代码块与volatile 修饰成员变量2.Lock!!共同点:都是从外面创建锁类、再把锁传到线...原创 2020-10-26 20:18:43 · 291 阅读 · 0 评论 -
总结如何从Linux开发工程师到Linux后台开发工程师再到Linux高级互联网架构师
前言:小编也是从事c方面10多年的工作经验、今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线。从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架构师。想必大家都知道从事后台开发首先就是要选择一种语言,小编今天跟大家分享是用C/C++ 做的后台开发。所以想从事这方面的朋友得有C/C++的基础。首先跟大家说的是从学习步骤:(Linux入门到精通篇)一、Linux开发环境1.了解Linux环境搭建,了解LinuxC编程2.了解.原创 2020-10-26 20:08:37 · 1149 阅读 · 2 评论 -
C/C++Linux服务器开发高级架构师、流媒体音视频学习视频续集
后台开发深入聊聊websocket协议,restful, tcp分包与粘包链接:https://pan.baidu.com/s/1ME0kF1KNKAJMUmJNpXyDRg提取码:0tbatcp网络服务模型,redis,nginx,memcached一起搞定链接:https://pan.baidu.com/s/1Mon9tb6h6xT8b-fzCAKc0Q提取码:fakb面试中,手撕线程池不再紧张,一节课都搞定链接:https://pan.baidu.com/s/13Qis...原创 2020-09-11 15:22:20 · 1205 阅读 · 1 评论 -
Linux C/C++服务器后台开发面试题总结
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C语言更偏向硬件底层开发,C++语言是目前为止我认为语法内容最多的一种语言。C/C++在执行速度上要快很多,毕竟其他原创 2020-09-11 14:57:00 · 537 阅读 · 0 评论 -
流媒体-Ubuntu 下 Janus Server 搭建笔记
1 简介Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway;Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 Media Server 服务。本文主要介绍如何在 Ubuntu 16.04 下搭建起 janus 服务器,实现 janus 官方 Demo 浏览器与 Android APP Demo(janus-gateway-android)之间的音视频通话。浏览器打开音视频采集的话需要 HTTPS 加密访问!原创 2020-08-27 17:32:06 · 1357 阅读 · 0 评论