Linux
学习linux
你看看这个C还有++
C了个++
展开
-
select,poll,epoll
select和epoll属于IO多路转接模型,用于实现对大量描述符进行就绪事件监控,可以让进程针对就绪描述符进行操作,避免因对非就绪的描述符进行操作而阻塞,让一个进程轮询对大量的就绪描述符进行操作,实现多个客户端与一个服务端之间的数据通信IO多路转接模型 :select模型 poll模型 epoll模型select模型int select(int nfds,fd_set* readfds,f...原创 2019-10-25 18:25:33 · 192 阅读 · 0 评论 -
http和https
HTTP协议和HTTPS协议区别如下:1)HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性2)HTTPS在TCP三次握手阶段之后,还需要进行SSL 的handshake,协商加密使用的对称加密密钥3)HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书4)HTTP协议端口是80,HTTPS协议端口是443HTT...原创 2019-10-24 19:31:48 · 869 阅读 · 0 评论 -
五种IO模型
阻塞IO在内核将数据准备好之前,系统调用会一直等待,所有的套接字都是默认阻塞方式非阻塞IO如果内核还没有将数据准备好,系统调用会直接返回,并返回错误码非阻塞IO往往需要以循环的方式反复读写文件描述符,这个过程称为轮询,对CPU的浪费较大,一般只在特定的场景下使用信号驱动IO内核将数据准备好的时候,使用SIGIO信号通知应用程序进行IO操作IO多路转接从过程上看和阻塞IO类似,实际在...原创 2019-10-23 14:32:46 · 224 阅读 · 0 评论 -
网络1
一、计算机网络背景1.网络发展独立模式:计算机之间相互独立,每个终端各自持有客户数据。网络模式:多台计算机连接在一起,完成数据共享。局域网LAN:计算机数量增多,通过交换机和路由器连接在一起。广域网WAN:将远隔千里的计算机连在一起。二、协议 “协议”就是一种约定。1.协议分层 OSI 七层模型OSI(Open System Interconnection,开放系统互连)...原创 2019-08-24 12:24:30 · 196 阅读 · 0 评论 -
应用层
应用层:负责应用程序之间的数据沟通1.自定制协议结构化数据传输序列化:将数据对象安按照指定协议组织成为可持久化存储/数据传输的二进制数据串格式反序列化:二进制数据串按照指定的协议解析出数据对象2.HTTP协议认识URL:统一资源定位符...原创 2019-09-03 18:28:05 · 169 阅读 · 0 评论 -
传输层
TCP全称为 “传输控制协议(Transmission Control Protocol”). 人如其名, 要对数据的传输进行一个详细的控制; 所以,TCP的特性就是-面向连接,可靠传输,面向字节流TCPTCP协议段格式源/目的端口号:表示数据从哪个进城来,到那个进程去;32位序号/32位确认序号:保证TCP数据的有序交付(包序管理)4位TCP报头长度,表示该TCP头部由多少个...原创 2019-09-09 14:39:16 · 359 阅读 · 0 评论 -
TCP/UDP的区别
TCP与UDP基本区别基于连接与无连接TCP要求系统资源较多,UDP较少;UDP程序结构较简单流模式(TCP)与数据报模式(UDP);TCP保证数据正确性,UDP可能丢包TCP保证数据顺序,UDP不保证UDP应用场景面向数据报方式网络数据大多为短消息拥有大量Client对数据安全性无特殊要求网络负担非常重,但对响应速度要求高具体编程时的区别socket()的参...原创 2019-09-11 19:06:04 · 4556 阅读 · 0 评论 -
基于TCP/UDP的socket编程
socket编程接口socket常见API//创建socket文件描述符(TCP/UDP, 客户端 + 服务器) int socket (int domain,int type,int protocol); //domain:AF_INET 代表的是IPV4的地址域 // AF_INET6 代表的是IPV6的地址域 //type:套接字类型 // SOCK_STR...原创 2019-08-25 15:10:19 · 381 阅读 · 0 评论 -
基于TCP的socket的改进
在小编的这篇文章中—基于TCP/UDP的socket编程简单给出客户端与服务端之间的通信,但TCP存在的一个缺陷就是TCP为每个客户端新建了套接字进行独立通信,但是服务端无法获知那个客户端数据会先到达,因此可能阻塞在等待连接请求或者等待接收某个客户端的数据。解决的方案:多进程或者多线程 每个线程/进程独立负责一个功能 一个线程/进程复制客户端已经完成连接获取功能 为每个客户端搜新建一个线程...原创 2019-08-25 15:33:50 · 265 阅读 · 0 评论 -
网络层 -- IP
网络层:在复杂的网络环境中确定一个合适的路径 IP协议概念主机:配有IP地址,但是不进行路由控制的设备路由器:既配有IP地址,又能进行路由控制节点:主机和路由器的统称协议头格式4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * ...原创 2019-09-09 16:56:55 · 336 阅读 · 0 评论 -
数据链路层
负责相邻设备之间的数据帧传输,网络层的IP地址定位的是网络通信环境中的起点和终点,链路层的MAC地址定位的是相邻的网络设备网卡以太网“以太网” 不是一种具体的网络,而是一种技术标准,即包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构,访问控制方式,传输速率等以太网中的网线必须使用双绞线,传输速率有1M,100M,1000M等以太网是当前应用最广泛的局域网技术,...原创 2019-09-11 17:54:29 · 283 阅读 · 0 评论 -
Linux之线程
一、Linux线程概念1.什么是线程在一个程序里的一个执行路线就叫做线程,或者更准确的说:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质上是在进程地址空间内运行。Linux下pcb用来模拟实现线程,因此在Linux中pcb实际是一个轻量级进程。通过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。...原创 2019-08-18 17:49:35 · 105 阅读 · 0 评论 -
Linux之进程
进程是什么? 以用户的层面来说,进程就是一个运行起来的程序。对于操作系统来说,进程就是对一个程序运行的描述。操作系统上有很多运行的程序,操作系统必须去管理这些程序,那么他是如何管理的?方法就是 先描述再组织 进行管理。如何描述的?  ...原创 2019-07-22 16:18:55 · 131 阅读 · 0 评论 -
Linux之进程控制
进程创建, 等待, 终止. 使用代码实现原创 2019-07-23 18:04:59 · 133 阅读 · 0 评论 -
Linux之进程间通信的方式
因为进程的独立性(各自操作的都是自己虚拟地址空间中的虚拟地址,无法访问别人的地址)导致无法直接通信。因此按照通信场景的不同操作系统提供了几种不同的进程间通信方式。 按照system V标准:管道、共享内存、消息队列、信号量。&n...原创 2019-07-30 17:41:09 · 161 阅读 · 0 评论 -
文件描述符与文件指针
fd与FILE结构体的纵向对比 文件指针:C语言中使用文件指针做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括缓冲区和文件描述符。而文件描述符是文件描述符表的一个索引,也就是说c语言的文件指针是Linux系统中对文件描述符的一种封装。 &nb...原创 2019-07-30 13:35:35 · 194 阅读 · 0 评论 -
动/静态库生成与使用
编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用。原创 2019-07-30 13:17:42 · 309 阅读 · 0 评论 -
Linux的常用文件系统调用接口
在Linxu中也有相对应的文件系统调用接口,如open/read/write/lseek/close等,下面就对这几个接口1.openint open(const char *pathname, int flags, mode_t mode);各参数含义: pathname:指定要打开的文件名称。  ...原创 2019-07-16 11:01:41 · 1251 阅读 · 0 评论 -
Linux之进程调度算法
操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源。下面是几种常见的调度算法。1. 先来先服务(FCFS)调度算法  ...原创 2019-05-29 19:28:52 · 3535 阅读 · 5 评论 -
Linux之内存置换算法
在日常处理大批量的数据时,内存不可能把所有数据同时读进来,这时,如何用有限的内存资源处理大量的数据呢… …以下有三种常用的内存置换算法1.先进先出(First In First Out,FIFO)算法 FIFO算法的思想很简单,就是置换出当前已经待在内存里时间最长的那个页。FIFO算法的运行速度很快...原创 2019-05-29 20:07:01 · 1020 阅读 · 0 评论 -
Linux的权限
Linux的权限linux下的用户分类: 管理员(root),普通用户文件权限:文件操作分用户: 文件所有者 u 文件所属组 g &n...原创 2019-05-09 13:47:46 · 155 阅读 · 0 评论 -
Linux的常用的基本命令
linux命令的使用: 命名名称 [操作选项] [操作对象] 基本命令目录命令ls 浏览目录内容 -l 查看文件的详细信息 -a  ...原创 2019-05-09 11:16:01 · 196 阅读 · 0 评论 -
Linux的vim、gcc与其他编辑,编译器的相互比较
代码编辑器1.vim Vim是从 vi 发展出来的一个文本编辑器。它具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛的被使用。和Emacs并列成为Lunix系统用户最喜欢的编辑器。2.Eclipse Eclipse是一款很酷的开源代码编辑...原创 2019-05-18 15:50:58 · 791 阅读 · 0 评论 -
Linux中一些重要目录
在Linux系统中,一切皆是文件,目录也是文件,一切从 “/” 开始,以下是一些重要的目录的介绍。/proc Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件...原创 2019-05-09 14:23:25 · 157 阅读 · 0 评论 -
Linux的软件安装方式
安装方式: 拿RHEL7来打比方,最开始Linux上安装软件只提供源代码,需要自己去编译源代码,拷贝库文件等。现在有三种方式:1.RPM 红帽软件包管理器可以自动地执行上述过程,就是解决软件安装的复杂问题而出现的是源代码和安装规则...原创 2019-05-18 16:15:30 · 111 阅读 · 0 评论 -
Linux的readelf指令
概述readelf命令,一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(.so)或者静态库(.a) 等包含ELF格式的文件。以下命令的使用是基于android编译出来的so文件上面去运行。readelf常用命令 语法:readelf (选项)(参数:文件),除了 -v(版本信息...原创 2019-05-18 16:28:15 · 1244 阅读 · 0 评论 -
Linux下建立Git与GitHub的连接
Git 是一款开源的分布式版本控制系统,而 GitHub 是依托 Git 的代码托管平台。GitHub 利用 Git 极其强大的克隆和分支功能,使得社区成员能够自由地参与到开源项目中去。不过,在开始学习之前,你需要一个 GitHub 账号,以及一台能联网的 Linux 虚拟机。 &nbs...原创 2019-04-26 18:55:20 · 549 阅读 · 0 评论