Linux高性能服务器
文章平均质量分 89
学习《Linux高性能服务器》
Mr.liang呀
分享知识 探讨技术
展开
-
嵌入式开发系统软件
就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造嵌入式软件最基本的理解是软件+硬件结合,来对产品做出定义,而非嵌入式软件又或是纯互联网行业则是单纯的对软件做出定义,其兼容性差,软件移植性差。传统行业上对嵌入式的应用较为广阔,即便现在互联网行业如此发达,但是不得不承认,传统行业在社会发展中有不可替代的地位。传统行业与互联网的结和的嵌入式开发应用更是具有光明前景的。,用于实现对其他设备的控制、监视或管理等功能。嵌入式软件就是基于嵌入原创 2022-09-20 09:37:42 · 1471 阅读 · 0 评论 -
Dbus网络通信原理与实现双向通信的关键技术点
DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。原创 2022-09-19 15:42:56 · 1309 阅读 · 0 评论 -
CAN 通信原理学习
CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的`高性能和可靠性`。CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)。原创 2022-09-19 08:01:18 · 5997 阅读 · 0 评论 -
Linux编程--小注
文章目录第二章 IP协议详解第二章 IP协议详解摘抄两个名词:无状态:是指IP通信双方不同步传输数据的状态信息,因此所有的IP数据报的发送、传输和接收都是相互独立、没有上下文关系的;无状态服务最大的缺点是无法处理乱序和重复的IP数据报。无连接:是指IP通信双方都不长久的维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。...原创 2022-03-14 16:32:04 · 126 阅读 · 0 评论 -
WebServer-master
文章目录轻量级Web服务器搭建涉及的知识点总结 2022春整体知识框架Eventfd 事件通知创建文件描述符HTTP请求之get/post & 长连接和短连接Reactor(反应池) 架构异步日志系统的实现阻塞IO和非阻塞IO串行化和闩锁 latch介绍thread.join()方法移动构造函数Java之wait() notify()/notifyall()条件变量和互斥量一起使用内联函数Muduo 架构的几个封装函数RALL(资源获取即初始化)机制详解并发控制的悲观主义策略和乐观主义策略(乐观锁和原创 2022-03-06 21:53:55 · 1917 阅读 · 0 评论 -
muduo---C++网络编程库
陈硕 muduo参考资料muduo源码剖析muduo基于Reactor模式实现Reactor模式也是目前大多数Linux端高性能网络编程框架和网络应用所选择的主要架构,例如内存数据库Redis和Java的Netty库等。muduo 架构整个架构依照reactor模式,如如下图:所谓的reactor模型,是有一个循环的过程,监听对应事件是否触发,触发时调用对应的callback函数进行处理;这里的事件在muduo中包括socket可读写事件、定时器事件。在其他网络库中如libevent也包原创 2022-01-16 15:21:10 · 3503 阅读 · 0 评论 -
深入了解 Reactor 网络编程架构模型
Reactor网络编程架构模型常见的网络编程模型有:Reactor Proactor Asynchronous Completion Token and Acceptor_Connector这里介绍最主流的reactor模型:通常网络编程模型处理的主要流程如下: initiate => receive => demultiplex => dispatch => process eventsI/O多路复用可以用作并发事件驱动(event-driven)程序的基础,即整个事件驱动原创 2022-01-16 14:32:28 · 2057 阅读 · 0 评论 -
编写 shell 脚本
文章目录简介基础使用shell运行输出重定向输入重定向多命令顺序执行常用符号read读取键盘输入的值数值运算变量置换变量默认变量局部变量环境变量declare申明变量类型基础语法echo打印输出printf 格式化打印cut提取列test条件判断流程控制if判断case多选择判断for循环while循环until循环简介Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,原创 2021-12-30 13:03:15 · 2174 阅读 · 0 评论 -
Linux(ubuntu) 基础
本文主要讲解一些有关linux下的相关知识:文章目录一 shell 命令二 文件系统三 ubuntu磁盘管理操作四 Ubuntu下压缩和解压缩五 ubuntu用户和组六 ubuntu 文件权限管理七 Linux连接文件操作八 补充一 shell 命令1、目录信息查看命令lsls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的ls test1/查看指定路径2、目录切换命令cd3、当前路径显示命令pwd4、系统信息查看命令uname5、清理屏幕命令clear6、显示文件内原创 2021-12-28 13:29:40 · 2392 阅读 · 2 评论 -
16 关于IO流分离的其他内容 && 17 优于select的epoll(IO复用功能)
**文章目录第16章 关于IO流分离的其他内容16.1 分离IO流16.1.1 两次IO流分离16.1.2 分离流的好处16.1.3 流分离带来的EOF问题16.2 文件描述符的复制和半关闭16.2.1 终止流时无法半关闭的原因第16章 关于IO流分离的其他内容:什么是流?调用fopen函数打开文件后,可以通过返回值 与文件进行数据交换。因此说调用fopen函数后创建了流(stream)**FILE *fopen(const char *path,const char *mode);其中,原创 2021-12-27 11:15:16 · 327 阅读 · 0 评论 -
14 多播和广播 && 15 套接字和标准IO
**第十四章 多播和广播**假设我们要向10000名用户发送相同的数据,如果使用TCP提供服务,则需要10000个套接字连接,即使使用了UDP套接字提供服务,也需要10000次数据传输。像这种需要向大量客户端发送相同数据时,会对服务器端和网络流量产生负面影响,这时可以使用多播技术解决。14.1 多播Multicast多播方式的数据传输基于UDP完成,区别在于,UDP数据传输以单一目标进行(一对一建立连接),而多播数据同时传递到加入特定组的大量主机,也就是说可以向多个主机传递数据。14.1.1原创 2021-12-23 18:11:04 · 137 阅读 · 0 评论 -
12 I/O复用 &&13 多种I/O函数
**十二章 I/O复用**12.1 基于I/O复用的服务器端采用多进程的方法构建服务器端,在每次客户端请求连接时,就会创建新的进程。因为创建进程需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,因此相互间的数据交换也要求采用相对复杂的方法(IPC属于相对复杂的通信方法)I/O复用的方法构建服务器端会有效减少上面的缺点,但是该模型并不适用于所有情况,应根据目标服务器的特点采用不同的实现方法。12.1.1 复用是什么??“复用” 用行内话说时:在一个通信频道中传递多个数据信号技术定义原创 2021-12-22 13:42:41 · 253 阅读 · 0 评论 -
《高性能》第一篇 <TCP/IP协议详解> 第一章 TCP/IP 协议族
文章目录**第一章 TCP/IP协议族**1.1 TCP/IP协议族体系结构以及主要协议1.1.1 数据链路层1.1.2 网络层1.1.3 传输层1.1.4 应用层1.2 封装1.3 分用1.4 测试网络1.5 ARP协议工作原理1.5.1 以太网ARP请求/应答报文详解1.5.2 ARP高速缓存的查看和修改1.5.3 使用tcpdump观察ARP通信过程第一章 TCP/IP协议族1.1 TCP/IP协议族体系结构以及主要协议TCP/IP协议族是一个四层协议,自底向上分别是数据链路层、网络层、传输层原创 2021-12-21 20:25:38 · 1459 阅读 · 0 评论 -
十行C++代码实现高性能HTTP服务 && 原理与实现
实战 干货!!话不多说,我们来一起看看,10行C++代码怎么实现一个高性能的Http服务,轻松QPS几十万int main() { WFHttpServer server([](WFHttpTask *task) { task->get_resp()->append_output_body("<html>Hello World!</html>"); }); if (server.start(8888) == 0) {原创 2021-12-20 11:06:04 · 1218 阅读 · 1 评论 -
十 多进程服务器端
**主要讲解多进程的具体实现**:10.1 进程概念以及应用10.1.1 并发服务器端的实现方法网络程序中 数据通信时间比CPU运算时间更多,因此,向多个客户端提供服务是一种有效利用CPU的方式有几种具有代表性的并发服务器端的实现模型和方法:1 多进程服务器端;通过创建多个进程提供服务2 多路复用服务器:通过捆绑并统一管理I/O对象提供服务3 通过生成与客户端等量的线程提供服务本文主要是讲解第一种模型10.1.2进程:占用内存空间的正在运行的程序CPU核个数和进程数目关系:核原创 2021-12-18 20:07:12 · 721 阅读 · 0 评论 -
九 套接字的多种可选项
本章主要介绍套接字的多种特性:9.1 套接字可选项和I/O缓冲大小9.1.1 套接字多种可选项上表中可以看出,套接字可选项是分层的。IPPROTO_IP 层是IP协议相关事项。IPPROTO_TCP层TCP协议相关的事项。SOL_SOCKET层是套接字相关的通用可选项。实际上可选项比上表多很多,但是不是都要背下来的,用的时候去查就行啦,用的多就记住了。下面挑选一些进行讲解。9.1.2 getsockopt && setsockopt我们几乎可以针对表中的所有选项进行读原创 2021-12-17 15:41:17 · 303 阅读 · 0 评论 -
Redis 面试常见
Redis面试常见内容:1 Redis常用数据结构String:是以一种纯字符串作为value的形式存在的,使用场景一般是存储简单的键值类型。比如用户信息,登录信息,配置信息等。还有一种用得比较多的是string的incr/decr操作,即自减/自增操作。调用它是原子性的,无论调用多少次,都一一计算成功,例如需要增减库存的操作。Hash:在redis中,hash因为是一个集合,分为大key、小key、小key的value,使用场景类似存储商品信息,大key为商家id,小key是商品id即goodsI原创 2021-12-14 22:02:31 · 120 阅读 · 0 评论 -
Linux下的调试神器GDB(未完待更........
重点介绍:gccg++GDBLinux下编译C用到gccgcc -c hello.c //编译hello.c文件 生成可执行文件hello.c文件 ./hello.o //运行文件gcc-o 用于连接文件gcc -o hello hello.o world.o //将hello.o 和world.o连接成可执行文件Linux下编译CPP文件用到g++gcc只能编译C++源文件,不能自动和C++程序使用的库连接;g++可以用来完成C++程序的编译和连接,程序会自动调用原创 2021-12-14 20:04:33 · 480 阅读 · 0 评论 -
三 地址族和数据序列
第三章 地址族和数据序列这章主要将主要讲解:如何为套接字分配IP地址和端口号IP地址的分类和区分网络字节序(大端序和小端序),htons htonl函数的使用inet_addr函数使用、inet_aton inet_ntoa函数使用3.1 分配给套接字的IP地址和端口号IP是 Internet Protocol (网络协议)的简写,是为收发网络数据而分配给计算机的值端口号是另一回事,不是给计算机的值,是给指定ip下的应用程序的需要。3.1.1 网络地址为了是计算机连网,并且收发数据,原创 2021-12-14 13:46:34 · 436 阅读 · 0 评论