Linux
文章平均质量分 81
阿龙-
这个作者很懒,什么都没留下…
展开
-
阿龙的学习笔记---零拷贝
零拷贝概述零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效无零拷贝的文件传输:在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成:while((n转载 2021-03-13 13:15:08 · 86 阅读 · 0 评论 -
阿龙的学习笔记---《后台开发:核心技术与应用实践》读书笔记(二)--- 网络通信
二、网络通信OSI 7层: 物理层,数据链路层,网络层,传输层,会话层(会话连接断点续传),表示层(数据格式加密等),应用层。TCP/IP 4层:网络接口层(主机到网络层), 网络层, 传输层, 应用层。在4层模型中,ARP是放在网络接口层的。TCP/IP协议部分看之前的博客吧。socket网络编程API:网络字节序和主机字节序,也就是大小端,大小是说高低位放在起始位置(一般计算机内存是从低到高,所以大端是高位放在低地址,小端是低位在低地址)。网络都是大端字节序。四种网络IO模型:阻塞,非原创 2021-02-15 23:32:55 · 80 阅读 · 0 评论 -
阿龙的学习笔记---《后台开发:核心技术与应用实践》读书笔记(一)--- 编程语言 与 编译调试
听说是一本腾讯员工写的书,快到面试时候,拿来读一下看看,内容好像不太精,少了一丢丢所以然,但是包含了一些对面试有用的知识点,记录一下。一、编程语言c语言 是面向函数。size_of 对函数来讲是得到 函数返回值类型 的size。字节对齐的规则是按照结构体中长度最长的来对齐,比如说有double类型是8byte,那么20字节的结构体会占用24字节的内存。宏定义一段语句的时候可以使用do…while(0); 这样的话整个代码块还算是一个语句。extern ”C" 告诉编译器用C原创 2021-02-15 13:53:56 · 184 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(五)---优化与监测
微调内核参数最大文件描述符数量。epoll最大数量。GDB调试gcc或g++编译时,需要加上-g选项,产生必要的调试信息。开始调试:gdb a.out设置断点:(gdb) break(b) main.c 12 — 在main.c的12行设置断点。删除断点:查看断点的编号后,delete 编号,就可以删除了。禁用断点:disable。执行: run(简写r),后面可以添加运行参数继续:continue©next(n):执行下一行。step(s):进入函数内部。until(u原创 2021-01-21 12:11:42 · 87 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(四)---信号、定时器、多线/进程,线/进程池
信号kill函数可以发送信号给pid的进程。目标进程在收到信号时,需要定义一个接收函数来处理之。为一个信号设置处理函数,可以使用signal系统调用。信号也可以作为一个异步事件被复用I/O所监听,则可以统一事件源。定时器Linux可用的定时器方法有三种:socket提供的超时选项,是对数据接受与发送的阻塞调用的参数,比如send、 sendmsg、recv、 recvmsg、 accept和connect。根据其返回值与errno来判断是否时间已到。SIAGALRM信号,由alar原创 2021-01-20 18:29:51 · 73 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(三)---复用I/O总结、Epoll详解、I/O框架库libevent
I/O复用使得程序同时监听多个文件描述符。但是其本身是阻塞的。监听的同时就绪时,会顺序依次处理。主要有select, poll, epoll。select:select I/O复用系统调用,使用fd_set这个结构来存储文件描述符,以bit表示。并且有最大限制(好像是1024*8)。将可读,可写,异常的三组fd_set传入,然后如果有可读可写异常,则会修改对应的fd_set的标志位以告知用户。书里提到了就绪条件,供参考:对于标志位的结果,需要通过轮询的方式来查找,效率很低。原创 2021-01-20 12:36:28 · 334 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(二)---高性能服务器程序框架
高性能服务器程序框架服务器模型:C/S模型:服务器、客户端模型。客户端访问服务器获取资源。服务器启动后,创建监听socket,调用bind绑定服务器端口上,然后listen来等待客户端连接。服务器稳定后,客户端可以发起连接服务器。对于服务端,请求是随意异步事件,需要通过一些I/O模型来监听。使用I/O复用。当监听到请求后,accept接受,然后分配一个逻辑单元为这个连接服务。在处理服务的同时,还需要同时监听其他客户的请求,可以通过select系统调用来实现。服务器基本框架:.原创 2021-01-17 18:41:01 · 689 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(一)--- TCP/IP基础,Linux API
TCP/IP协议族数据链路层、网络层、传输层协议是在Linux内核中实现的。因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的API就是Socket。Socket提供两种功能:将应用程序数据从用户缓冲区中复制到 TCP/UDP内核发送缓冲区,以交付内核来发送数据;或者是从内核 TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据。应用程序以通过它们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为route原创 2021-01-15 22:23:33 · 92 阅读 · 0 评论 -
阿龙的学习笔记--- Docker 的一些概念总结
Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。我也将Docker类比于Python虚拟环境,可以有效的配置各个版本的开发环境,比如深度学习与Java环境。原创 2020-10-22 16:13:55 · 126 阅读 · 0 评论 -
阿龙的学习笔记---Linux GDB 调试工具(博客转载总结)
GDB基础操作:https://blog.csdn.net/21cnbao/article/details/7385161100个GDB小技巧,忒多了,留着以后看。https://www.kancloud.cn/wizardforcel/gdb-tips-100/146717GDB小结:https://blog.csdn.net/lm409/article/details/80303709原创 2020-06-27 15:03:19 · 87 阅读 · 0 评论