
Linux
陆尔尔
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2020-09-07
对于开发人员来说,往往对各种测试方法感到疑惑。特别是在整合代码的时候,我们就能深刻感觉受到测试的重要性。很多开发人员只注重写代码,轻视测试的重要性。总是代码一写完提交然后就交给测试组测试了,没多久测试组发回测试报告。然后又苦恼的修改自己代码的bug,慢慢地就开始讨厌测试组人员。没有经过自己细心测试的代码,不仅浪费了别人时间更影响到了自己的心情。接下来为大家细心讲述一下各种测试应用的环境及作用一、测试环境和角色 黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试 : 这些测试的范围正好是逐步递转载 2020-09-07 18:46:21 · 405 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型:一个场景,两种角色(生产者、消费者),三种关系(生产者与消费者同步互斥,生产者与生产者互斥,消费者与消费者互斥)功能:解耦(耦合度:数据之间的依赖度)、支持忙闲不均、支持并发实现:1、实现线程安全的队列,对外提供线程安全的数据入队、出队操作2、创建线程,分别为生产者与消费者数据入队或数据出队。/********************************************************** * Author : WangWei * Email转载 2020-08-03 10:18:08 · 782 阅读 · 0 评论 -
进程间通信方式总结(2)
liunx六大进程间通信方式管道,消息队列,共享内存,信号量,socket,信号,文件锁1,管道匿名管道:概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进程的通信。命名管道:概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,没有血缘关系的进程也可以进程间通信。**特点:1,面向字节流,2,生命周期随内核3,自带同步互斥机制。4,半双工,单向通信,两个管道实现双向通信。2,消息队列概念:在内核中创建一队列,队列中每个元素原创 2020-07-29 15:40:06 · 160 阅读 · 0 评论 -
进程间通信方式总结(1)
liunx六大进程间通信方式管道,消息队列,共享内存,信号量,socket,信号,文件锁一. 管道匿名管道概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进程的通信1 #include <unistd.h>2 int pipe(int fd[2]); // 返回值:若成功返回0,失败返回-1特点它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄转载 2020-07-29 15:33:27 · 192 阅读 · 0 评论 -
线程的同步与互斥
我们先来谈谈进程线程间互斥相关背景概念:临界资源:多线程执行流共享的资源叫做临界资源。临界区:每个线程内部访问临界资源的代码叫做临界区。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用。原子性:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成。互斥量大部分情况下,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。但有时候很多变量都需要在线程间共享,这样的变量称为共享变量原创 2020-07-29 11:17:34 · 822 阅读 · 0 评论 -
死锁
死锁概念死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。生活中例子(借鉴)办公室有一台公用的电脑用于查询资料,还有一台公用打印机用于打印。一天,Tom自己临时需要使用一下公用电脑,并用它打印一份材料;但是不巧的事,此时打印机已经损坏,而Jack正在维修。Tom并不知道是Jack正在维护,唯一能看到的就是打印机的状态显示在占用中,于是他就坐在电脑原创 2020-07-29 11:00:44 · 439 阅读 · 0 评论 -
线程详解
线程概念线程是一个进程内部的控制序列,是程序里的一个执行线路一切进程至少都有一个执行线程,线程在进程内部运行,本质上是在进程的地址空间内运行。在CPU眼中,看到的PCB要比传统的进程更加轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。总而言之,线程是在进程内部运行的一个执行流,Linux系统没有真正意义上的线程,而是用PCB模拟的。进程是承担分配系统资源的基本实体,线程是调度的基本单位。在线程组里面,所有的线程都是对等的关系,没有父线程的概念转载 2020-07-29 09:37:49 · 249 阅读 · 0 评论 -
linux系统根据端口号查找项目路径的两种方法
linux系统根据端口号查找项目路径的两种方法有时候项目部署的太多,都忘了放到哪里,只知道项目的访问端口,如何找到项目的位置呢?1、如果知道项目部署在tomcat里如果你的项目在linux 中是部署到tomcat容器里,可以输入下边的命令找到,如下:ps anx|grep tomcat它的意思是查找运行中的tomcat 程序。输入之后,如果有运行中的tomcat的话,会有下边的结果:当然它不仅仅只是用来看tomcat 的,比如你想看一下nginx 运行的位置,也可以ps anx|grep n原创 2020-07-28 20:54:26 · 6230 阅读 · 0 评论 -
模拟oj项目
项目介绍本项目仿照leetcode的形式,自行模拟了一个在线编译系统,基本框架在线编译器题目管理原创 2020-07-20 14:11:29 · 529 阅读 · 0 评论 -
linux下使用git提交代码
一、Git终端软件安装root用户下安装git : yum install git二、配置生成秘钥使用命令:ssh-keygen -t rsa -C "youremail@example.com"获取秘钥(这里的邮箱跟刚才git官网上注册的一致),进入/root/.ssh目录下,找到一个rsa.pub的文件,执行命令:vi id_rsa.pub ,将里面的所有内容全部复制。2. 浏览器进入自己的github,打开设置,进入ssh and GPG keys3、点击NEW ssh key,自转载 2020-07-15 09:12:48 · 3657 阅读 · 0 评论 -
实战项目--在线OJ系统(1)
项目需求模拟力扣实现一个在线编译器:基本框架在线编译器把网页上代码内容提交到服务器上,进行编译,运行,提交题目管理管理当前系统上所有的OJ题目,能够和网页进行交互,获取所有的题目列表以及某个题目详情代码实现#pragma once#include<stdint.h>#include<iostream>#include<cstdlib>#include<string>#include<sys/time.h>//时间戳原创 2020-07-12 21:59:53 · 1834 阅读 · 0 评论 -
wait和waitpid的区别和使用
wait和waitpid函数是用来处理僵死进程的。他们有一些区别,用的时候老是忘,就打算做个实验测试一下。也供像我这样UNIX网络编程新手学习参考。–>1、使用背景–>2、函数原型–>3、wait和waitpid区别=========================================================================–>1、使用背景什么是僵死进程(zombie)?zombie的作用是维护子程序的信息,以便父程序在以后能够调用它转载 2020-06-26 17:53:48 · 1490 阅读 · 0 评论 -
软硬链接的理解
引入软硬链接的原因在 UNIX 系统中 , 操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API ,使他们被处理时均可统一使用字节流方式. 也即是说 , UNIX系统中除进程外一切皆文件, Linux 也保持了这一特性.Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件。使用命令 mkdir 创建目录时,若期望...原创 2020-03-27 15:46:05 · 222 阅读 · 0 评论 -
进程间通信---system V IPC
System V 引入了三种高级进程间的通信机制:消息队列、共享内存和信号量。IPC对象(消息队列、共享内存和信号量)存在内核中而不是文件系统中,由用户控制释放。共享内存共享内存是System V 进程间通信中速度最快的,共享内存不提供同步和互斥机制,所以这部分必须由用户来完成。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,也就是说进程不再通过执行进入内核的系统...原创 2020-03-20 14:03:41 · 277 阅读 · 0 评论 -
C/S 与B/S 模型的联系与区别
客户/服务器模型(C/S)特点:非对等相互作用,即客户与服务器处于不平等的地位。表现在:服务器用有客户所不具备的硬件和软件资源以及运算能力,服务器提供服务,客户请求服务。户端与服务器的数量关系多个客户进程同时访问一个服务器进程(n:1)一个客户进程同时访问多个服务器提供的服务(1:n ).客户端与服务器的位置关系客户和服务器运行在同一台机器上———应用于网络应用程序开发测试。客...转载 2020-03-20 07:37:06 · 763 阅读 · 0 评论 -
网络基础-------HTTP协议
什么是HTTP协议?超文本传输协议,是用于从万维网服务器传输文本到本地浏览器的协议。是一个基于请求与响应的无状态的应用层协议,设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。HTTP报文格式HTTP特点无状态:协议对客户端没有状态储存,对事物处理没有记忆能力,比如访问一个网站需要反复进行登录操作无连接:每次请求需要通过TCP进行三次握手四次挥手,和服务器重新建立连接,...原创 2020-03-19 23:39:44 · 268 阅读 · 0 评论 -
网络基础------UDP协议
什么是UDP协议UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。UDP传输机制UDP提供不可靠服务,具有TCP所没有的优势:UDP无连接,时间上不存在建立连接需要的时延。分组首部开销小,TCP首部20字节,UDP首部8字节。UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时...原创 2020-03-19 23:04:50 · 776 阅读 · 0 评论 -
网络发展史
网络发展史一开始,接入网络中的主机不多时,是用一根铜轴线榄将各个主机相连的;主机之间是通过发送电(磁)信号进行通信的。当A主机给B主机发送消息的时候,电信号充斥着整根线缆,这个时候其他主机如果同时发送信号,就会产生干扰,所以,一台主机发送消息的时候,其余主机是不能发送消息的。主机之间是怎么标识的呢?那A主机怎么就知道B主机的存在呢?每个主机的每块网卡都有一个唯一的MAC地址,是固定的。如果...转载 2020-03-18 22:38:43 · 396 阅读 · 0 评论 -
linux下json库的安装
初级计算机小白,今天从早上一直尝试在linux下安装json 库,由于不够熟悉linux下有些报错的原因,一直在百度上试图找原因,包括看了好多个博主的json库安装博客,但是第一步就出现了问题,就是下载jsoncpp压缩包这一步,试了好几次都失败,命令是wget [json库网址],但是下载出来的都是以index.html形式保存,以至于在后面解压的时候解不出来,试了好多次,虽然到现在下午还没...原创 2020-03-16 15:26:16 · 2941 阅读 · 0 评论 -
群聊项目
Log.hpp#pragma once#include<iostream>#include<string>using namespace std;const char* log_level[]={ "Normal", "Warning", "Error", NULL};void Log(string msg,string level,string f...原创 2020-03-17 22:11:01 · 391 阅读 · 1 评论 -
进程间通信——管道
只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信。通常一个管道由一个进程创建,然后该进程调用fork,此后父子进程之间可应用该管道。管道提供流式服务(即单向通信)。一般而言,进程退出,进程退出,管道释放,所以管道的生命周期随进程。(文件的生命周期也随进程)一般内核会对管道操作进行同步与互斥。管道是半双工的,数据只能向一个方向流动,需要双方通信时建立两个管道。原创 2020-03-11 16:55:24 · 532 阅读 · 0 评论 -
网络基础——套接字
套接字应用层通过传输层进行通信时,TCP和UDP会同时遇到要为多个应用进程提供并发服务的问题,多个TCP链接或者应用程序可能需要通过一个TCP协议端口传输数据,为了将不同的应用程序区分开来,操作系统为应用程序与TCP/UDP交互提供了接口,成为套接字。套接字(Socket):(IP地址:端口号)端口:计算机通信的终点是应用进程,只要把所传送的报文交到目的主机合适的端口,不需要具体实现这个功能...原创 2020-03-10 22:37:01 · 598 阅读 · 0 评论 -
进程替换
进程替换我们之前说fork()创建子进程,是为了让子进程执行和父进程相同的程序,并且父进程只能获得子进程的一些特殊的信息,而如果我们需要子进程执行一些和父进程不同的程序,这里就需要进程替换了。父进程创建子进程后,子进程调用exec函数来执行另一个程序,进程的虚拟地址、物理地址以及硬盘之间映射关如下图:那进程是如何替换的呢?进程将当前要替换的程序的数据和代码将原有的数据和代码覆盖掉,从新...原创 2020-03-10 21:05:01 · 263 阅读 · 0 评论 -
linux下自行实现的简单shell程序
学过exec系列函数后,我尝试自行实现一个shell程序,先上代码#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<stdlib.h>#include<sys/wait.h>#include<sys/ty...原创 2020-03-10 20:57:26 · 288 阅读 · 0 评论 -
linux_I/O基础
输入/输出(I/O) : 是指主存和外部设备(如磁盘,终端,网络)之间拷贝数据过程在LINUX下,一切皆文件一个Unix 文件就是一个m个字节的序列:所有I/O设备都被模型化为文件。而所有的输入和输出都被当做相应文件的读和写设备优雅地映射成文件,允许Unix内核引出一个简单,低级的应用接口。叫做Unix I/O,使得所有的输入输出都能以一种统一且一致的方式来执行打开...原创 2020-03-10 20:38:24 · 151 阅读 · 0 评论 -
进程(2)
程序地址空间虚拟地址空间:虚拟地址空间是一个结构体 struct mm_struct给操作系统描述了一个完整连续的地址空间,每个进程都拥有一个该结构体,所有的进程都认为自己拥有全部的内存。为什么要使用虚拟地址空间?进程在通过虚拟地址从而获取变量数据,最终还是要去访问物理内存你的,因为数据存放在物理内存中.虚拟地址和物理地址通过页表完成映射,虚拟地址连续,物理地址不一定连续,通过映射转换实现数...原创 2020-03-05 17:32:43 · 121 阅读 · 0 评论 -
web自主服务器
#include "Util.hpp"#include "Protocol.hpp"#include <pthread.h>class Sock{ private: int sock; int port; public: Sock(const int &port_):port (port_),sock(-1) {} void Socket() ...原创 2019-11-22 22:01:57 · 207 阅读 · 0 评论 -
网络基础(2)
协议计算机网络中为进行数据交换而建立的规则。序列化和反序列化定义结构体来存放要交互的信息,发送数据时将这个结构体按照一个规则转换成字符串,接受到数据时按照相同的规则把字符串转换成回结构体。网络版计算器实现一个服务器版的计算器,客户端把要计算的数据发送给服务器端,服务器端计算完之后再将结构返还给客户端。方案一:约定好规则,客户端按照规则发送数据,比如,客户端发送一个"1+1"的字符串,...原创 2019-10-15 17:37:15 · 164 阅读 · 0 评论 -
进程
进程概念对于操作系统,进程就是一个运行中的程序。PCB,进程控制块,存放进程信息的结构体,可以理解为进程信息的集合task_struck时间片:程序在CPU上运行的时间状态:任务状态标识符:描述进程的唯一标识符,PID,区别于其他进程程序计数器:存放程序中即将被执行的下一条指令的地址上下文数据:进程间切换优先级I/O状态信息记账信息查看进程指令:ps -aux/-ef ...原创 2019-10-14 17:57:44 · 111 阅读 · 0 评论