linux
xing1584114471
这个作者很懒,什么都没留下…
展开
-
linux --输出控制
原创 2018-06-06 18:24:58 · 128 阅读 · 0 评论 -
【技术篇】linux进程间通讯--消息队列
(一)什么是消息队列 消息队列提供了一个进程给另外一个进程发送数据块的方法,每个数据块都可以被认为是由自己的类型的,接受者接受的数据块可以有不同的类型;不像管道和命名管道那样,必须以先进先出的方式接收数据。 同管道类似的是,他有一个不足的地方就是每个消息的最大长度是有上限的(MSGMAX),每个仙子队列的总的字节数(MSGMNB),系统上消息队列的总数上限(MSGM...原创 2019-06-08 17:51:30 · 248 阅读 · 0 评论 -
【技术篇】文件的md5值
前言: 我们以一个wrold文档为例,新建一个xx.docx文件,然后在Linux下可以使用命令md5sum xx.docx计算md5值 -》835741aba850778a5b06bfd57f55c98c 。然后我在复制了一下这个文件,并将文件名改为yy.docx,然后重复上面的命令去计算这个新文件的md5值,然后得到的是相同的结果,文件的md5值是我在我们一个项目“文件传输...原创 2019-06-15 21:43:51 · 5660 阅读 · 0 评论 -
【linux操作系统】进程和线程
(一)进程 1.1 进程的概念 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 1.2 进程的优势 (1)每个进程互相独立,...原创 2019-06-18 16:37:32 · 1154 阅读 · 0 评论 -
【技术篇】查看linux系统负载情况
什么是系统平均负载? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。1可以被认为是最优的负载值。负载是会随着系统不同改变得。(一)uptime 用于获取主机运行时间和查询linux系统负载等信息。 内容说明...原创 2019-06-23 17:10:18 · 6547 阅读 · 2 评论 -
【linux】粘包的产生和解决
(一)预备知识 tcp是以流动的方式传输数据,没有边界的一段数据。像打开自来水管一样,连成一片,没有边界。传输的最小单位为一个报文段(segment)。tcp Header中有个Options标识位,常见的标识为mss(Maximum Segment Size)指的是:连接层每次传输的数据有个最大限制MTU(Maximum Transmission Unit),一般是1500比特,...原创 2019-07-03 23:55:24 · 1119 阅读 · 1 评论 -
【linux】死锁的概念和解决办法
(一)死锁的概念 可以理解成多个并发进程因争夺非共享的系统资源而产生相互等待的现象。存在两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程在占有资源和释放资源期间,其他线程将不能抢占该资源。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。(二)死锁产生必须同时满足的4个条件...原创 2019-07-04 21:08:47 · 613 阅读 · 0 评论 -
【linux】进程地址空间
(一)进程空间分布图: 一个linux进程的虚拟地址空间分布如下图所示,分为用户空间和内核空间,对于一个32位操作系统来说,4GB的空间分成两部分,低地址的0~3G给用户空间,高地址的3G~4G给内核空间 (二) 用户空间 2.1 只读数据段(.rodata,又叫做常量数据段)...原创 2019-06-30 16:18:19 · 252 阅读 · 0 评论 -
【数据库】存储引擎
(一)概念 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。例如,你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的...原创 2019-07-21 14:55:25 · 389 阅读 · 0 评论 -
【数据库】索引
(一)索引 1.1 概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。在没有索引的情况下,数据库会遍历全部数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。 1.2 创建索引的好处 (...原创 2019-07-21 18:09:59 · 443 阅读 · 0 评论 -
【linux】DNS解析过程简单了解
注:此文章只是为了做笔记,方便以后查阅,内容大部分只是摘录,具体内容可以通过https://blog.csdn.net/baidu_37964071/article/details/80500825了解。(一)DNS协议的概念 DNS —> Domain Name System —> 域名系统的英文缩写;它所提供的服务是用来将主机名和域名转换为IP地址的工作。(二)域...原创 2019-08-04 21:49:54 · 854 阅读 · 0 评论 -
【技术篇】linux进程间通讯--共享内存
(一)什么是共享内存 共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。共享内存的具体实现是不同进程共享的内存安排为同一段物理地址。共享内存是最高效的IPC机制,因为他不涉及进程之间的任何数据传输。这种高效率带来的问题是,我们必须借用其他的辅助方法来同步进程间对共享内存的访问,否则会产生静态条件,因此,共享内存一般会和其他进程间通信一起使用。具体信息可通过https...原创 2019-06-06 21:35:26 · 327 阅读 · 0 评论 -
【技术篇】IP寻址与地址解析
(一)IP地址概述 1.1 IP地址 IP地(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址。它为互联网上的每一个网络和每一台主机分配一个逻辑地址,常见的IP地址,分为IPv4与IPv6两大类,当前广泛应用的是IPv4,目前IPv4几乎耗尽,下一阶段必...原创 2019-05-22 20:40:04 · 7229 阅读 · 0 评论 -
【linux】select实现多个客户机与服务机之间的通讯
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <assert.h>#include <sys/select.h>#include <sys/time.h>#include <sys/socket.h>#include...原创 2018-10-20 19:06:31 · 438 阅读 · 0 评论 -
【linux】select实现键盘与显示屏的交互
(注意:在前面我实现过利用I/O函数select实现多个客户机与服务机之间的同时交互,是先定义了一个数组用来存存放服务机的套接字和连接到服务机的每个客户机所对应的文件描述符,然后再一一利用FD_SET放进集合中让select函数监视着,在下面的代码中,可以直接对比出,我并没有像之前一样先定义一个存放所有文件描述符的数组,这样做是因为现在我想要做的是将从键盘输入的字符直接打印在屏幕上,所以这里的se...原创 2018-10-24 01:10:23 · 474 阅读 · 0 评论 -
【linux】三种io函数的比较以及ET工作模式和LT工作模式的区别
io函数中ET和LT的区别: LT:描述符上有数据就绪,在提醒用户后,如果用户没有将该数据读完(处理完),在下一轮循环中io函数会继续提醒用户该描述符有数据就绪,直到用户将该描述符上所有的数据读完。这样的特点让LT工作模式具有可靠但低效率的特点。 ET:描述符上有数据就绪,在提醒用户后,如果用户没有处理完该描述符上的数据,在下一轮循环中io函数使不会再次提醒用户该描述符有数据就绪...原创 2018-10-26 23:31:29 · 900 阅读 · 0 评论 -
【linux】poll实现多个客户机与服务器之间的通讯
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <assert.h>#include <sys/select.h>#include <sys/time.h>#include <...原创 2018-10-24 14:02:32 · 366 阅读 · 0 评论 -
【linux】epoll----LT工作模式下实现多个客户机与服务机之间的通讯
(注:由于前面写过select和poll函数,在epoll函数中大部分代码会和钱前面两个的函数重复,所以在下面的代码中,不再注释重复代码,只将与之不同的代码注释,读者可以通过“https://mp.csdn.net/postedit/83215953”或者“https://blog.csdn.net/xing1584114471/article/details/83343021”了解)头文件...原创 2018-10-27 23:46:23 · 180 阅读 · 0 评论 -
【linux】epoll----ET工作模式下实现多个客户机与服务机之间的通讯
(注:由于前面写过select和poll函数,在epoll函数中大部分代码会和钱前面两个的函数重复,所以在下面的代码中,不再注释重复代码,只将与之不同的代码注释,读者可以通过“https://mp.csdn.net/postedit/83215953”或者“https://blog.csdn.net/xing1584114471/article/details/83343021”、“https:...原创 2018-10-27 23:55:34 · 189 阅读 · 0 评论 -
【linux】使用“libevent”库实现多个客户机与服务机之间的交互
头文件和宏定义声明:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <assert.h>#include <signal.h>#include <event.h>#includ...原创 2018-11-01 21:32:16 · 708 阅读 · 0 评论 -
【linux】linux进程间通讯--信号量
(一)信号量的产生 信号量是由 Dijkstra 提出来的,信号量概念是由并发编程领域迈出的重要一步。信号量的产生是为了在多个进程同时访问系统上某个资源时(同时写一个数据库的某条记录、同时修改某个文件),以确保同一时刻只有一个进程可以拥有对资源的独占。(二)关键代码段(临界区) 通常,程序对共享资源访问的代码知识短短的一部分,,但就是这短短的几句代码引发了进程之间的竞态...原创 2019-04-23 22:47:35 · 477 阅读 · 2 评论 -
【技术篇】静态库和动态库
(一)库是什么 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。通俗的来说库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。在库中的函数是相互关联的,通过这些函数的组成可以实现相应的功能。(二)库的种类 库分为静态库和共享库(共享库又叫动态库)。 二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序...原创 2019-05-19 16:14:55 · 4026 阅读 · 0 评论 -
【技术篇】fork源码剖析、写实拷贝技术
(一)预备知识1:clone、fork、vfork三个系统调用的实现都是通过 do_ fork()实现的,不同的是对do_ fork()的调用参数。关键是这些参数起的作用;系统调用clone()的主要用途是创建一个线程,这个线程可以是内核线程,也可以是用户线程。创建用户控件线程时,可以给定子线程用户空间堆栈的位置,还可以指定子进程运行的起点。同时也可以用clone()创建进程,有选择的赋值父进...原创 2019-05-12 11:55:03 · 320 阅读 · 0 评论 -
【技术篇】linux进程间通讯--信号
(一)信号的本质 软中断信号(signal,简称信号)是用来通知进程发生的异步事件。在软件层次上是对中断机制的一种模拟,在原理上一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通讯中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达。事实上,进程也不知道信号到底什么时候到达。进程间可以通过系统调用kill发送软中断信号。内核也可以因为内部事件而给...原创 2019-05-26 18:04:09 · 239 阅读 · 0 评论 -
【linux】git的使用
(一)安装git 1.1 挂载光盘 -> mount /dev/cdrom /mnt // 需要切换到管理员权限 1.2 配置yum源 ->cd /etc/yum.repos.d/ ->ls //查看配置 1.3 验证 -> yum repolist ...原创 2019-08-06 22:23:25 · 203 阅读 · 0 评论