精华内容
下载资源
问答
  • Wireshark学习

    千次阅读 多人点赞 2020-01-31 14:00:32
    镜像抓取两个或两个以上的物理端口,并捆绑而成的虚拟机接口流量。交换机厂商一般会把这样的虚拟机接口称为Port-Group接口或Port-Channel接口。 2)服务器NIC运行于端口冗余模式。请将连接服务器网卡的两个交换机...

    0x1 Wireshark安装和下载

    老样子给出Wireshark下载地址Wireshark官网,下载完成后除了选择安装路径外都可以直接下一步默认安装配置。如果嫌下载慢我这还有刚下好的最新版本x64 v3.2.1,给大家带来便利网盘入口,密码:sayb
    我这里安装的版本是Wireshark v3.0.6
    在这里插入图片描述

    0x2 Wireshark的安置

    想要使用Wireshark首先要知道Wireshark部署位置,要根据当前需要抓包环境的完整网络拓扑图,至少要知道出故障网络的网络拓扑才能有效的进行网络抓包和诊断。根据网络拓扑图才可以找到合理安置Wireshark的位置。
    安置Wireshark的方法:
    1)确定要抓取并监控的设备发出的流量
    2)将安装了Wireshark的主机或笔记本连接到目标主机所在的交换机上(同一局域网)
    3)开启交换机的端口监控功能(该功能叫端口镜像或交换式端口分析器[Switched Port Analyzer,SPAN]),把受监控设备发出的流量重定向给Wireshark主机。
    按照以上步骤就可以进行抓包了,这是最简单的操作。
    Wireshark可以用来监控LAN端口、WAN端口、服务器/路由器端口或接入网络的任何其他设备发出的流量。需要按照下图所示方向配置端口镜像,即可监控到S2服务器所有进出流量,Wireshark也可以安装到S2服务器本身对本机抓包。
    在这里插入图片描述
    注意,流量监控的特性是需要交换机支持的,而不是Wireshark软件本身。
    Wireshark软件包中自带WinPcat函数库,这个库主要作用是通过软件形式模拟网卡,并获取网卡收发消息的。(Windows下使用的类库,可以用这个进行开发类似Wireshark的网络分析小工具)
    因为我是之前就安装过Wireshark,这里按照书中版本的安装截图进行说明
    在这里插入图片描述
    TShark组件:一种命令行协议分析器。
    Wireshark 1/2:对老版本兼容软件,保证新版本出现问题可以随时切回老版本使用。安装这个比较稳妥。
    拓展功能和和工具也都默认选上,里面有很多关于协议解析和过滤数据包好用的功能和工具。

    0x3 操作方法wireshark配置方案图

    1、服务器流量监控
    如上图所示,如果想要监控服务器的收发流量只需要将安装Wireshark的笔记本与服务器连接在相同交换机下,然后让该交换机重定向流量到Wireshark就可以开始抓包。也就是上图标号1所指向的位置。当然也可以直接在服务器上安装Wireshark本机抓包。
    2、路由器流量监控
    可以根据以下各种情形,来监控进出路由器的流量
    情形1:监控路由器连接交换机的LAN口的进出流量
    1)将Wireshark设备接在编号2的位置上(路由器和交换机中间)
    2)开启交换机上的端口镜像功能,把与路由器LAN口相连的端口流量重定向至连接Wireshark主机的端口。
    情形2:监控安装在路由器上的交换模块端口读进出流量
    1)当路由器安装了一块交换模块时,如图编号6(5指的是WAN端口,6指的是LAN端口)
    2)只能监控链接到交换模块的设备流量(因为路由器先把流量处理后交给了交换模块,交换模块再转交交换机,Wireshark接入的位置相当于交换模块和交换机之间自然只能接到交换模块的流量)
    情形3:监控未安装交换模块的路由器的WAN口的流量
    1)可在路由器WAN口和服务提供商(SP)网路间架设一台交换机,在该交换机上执行端口监控。如下图
    在这里插入图片描述
    2)同样开启交换机端口监控功能,将连接WAN口的端口流量重定向到安装Wireshark的笔记本上。
    情形4:嵌入了抓包功能的路由器
    启用路由器内置抓包功能时,请确保路由器有足量的内存,不能因为开启该功能而影响路由器的速度。
    某些厂商将抓包功能嵌入了路由器或路由器操作系统。
    监控路由器流量时请注意:发往路由器的数据包并不一定都会得到转发。有些数据包在发送的过程中有可能丢包,路由器本身也可能因为内存不足对一部分数据从接收端口原路送回。还有广播包不会得到路由器转发。
    3.防火墙流量监控
    有两种手段进行监控:
    1)监控防火墙内口流量
    2)监控防火墙外口流量
    如下图
    在这里插入图片描述监控防火墙内口,可以查看内网所有用户发起的Internet的流量,其源IP地址均为分配给内网用户的内部IP地址。监控外口,能看到所有经过防火墙放行的访问Internet的流量,这些流量IP地址均为外部IP地址(拜NAT所赐,分配给内网用户的内部IP地址被转换成了外部IP地址)。
    4、分路器和Hub
    执行流量监控任务时,可能会用到以下两种设备。
    **分路器:**可在受监控的链路上用分路器(Test Access Point,TAP)来取代互联网到路由器间的交换机的位置。与交换机作用相同,而且TAP便宜方便,还可以把出错的数据包给Wireshark,交换机遇到错误就会直接将错误包丢弃。
    **Hub:**也是为替代监控互联网到路由器之间的路由器而设计的,它时半双工设备。用这个设备,路由器和SP设备之间穿行的每个数据包都能被Wireshark注意获取。但半双工的缺点也很明显,流量速度太慢,会显著加剧流量的延迟。所以一般抓包都不用Hub

    0x3 幕后原理

    LAN交换机运作方式
    1)LAN会不断地学习接入本机的所有设备的MAC地址。
    2)收到发往某MAC地址的数据帧时,LAN交换机只会将其从学的此MAC地址的端口外发
    3)收到广播帧时,交换机会从出接收端口外的所有端口外发
    4)收到多播帧时,若未启用Cisco组织管理协议或Internet组织管理协议监听特性,LAN交换机会从除接收端口以外所有的端口外发;如启用了上面两种特性之一,LAN交换机会通过接连了相应多播接收主机的端口外发多播帧。(简单来说,如果没开特性就全发跟广播一样,开启特性就根据哪些主机开了上面的专门接收多播的端口选择性的发送)
    5)收到目的MAC地址未知的数据帧时(这种比较罕见),交换机会从除接收端口意外的所有端口外发。
    接下来以下图为例进行说明第二层(L2)网络的运作方式。
    在这里插入图片描述
    接入网络的每台设备都会定期发送广播包。ARP请求消息和NetBIOS通告消息都属于广播包。广播包已经发出,就会遍布整个L2网络(如图虚线所示)。上图发广播帧的计算机是1号终端,所有交换机接到这个广播帧后都会记录这个MAC帧和发出MAC帧的计算机端口M1。
    当PC2要将一帧发送给PC1时,由于所有交换机都学过了PC1的MAC帧地址。PC2的MAC帧会被转发给SW5,由于SW5已经知道了PC1的地址,则会继续转发给其他知道PC1的MAC地址的交换机,一直到最终的PC1的地址。
    因此,将交换机上的某端口配置为镜像端口,先把受监听端口流量重定向到该端口上,再接入安装了Wiershark的笔记本电脑,即可观察到到所有受监控的端口流量。如果直接连接Wireshark笔记本电脑而不做任何配置,只能抓取到流过这个笔记本网卡的单播流量,以及广播和多播流量。
    注意:Wireshark再对于不同交换机端口之间交换的同一VLAN流量,Wireshark会从流量接收端口的流入方向以及流量发送端口的流出方向分别收取一遍,所以会抓到重复的数据包。

    0x4 在虚拟机上抓包

    1、再驻留于单一硬件平台的VM上抓包
    在这里插入图片描述
    由图可知,个操作系统(客户操作系统)分别运行了多个应用程序APP。这些操作系统都运行于虚拟化软件之上,而虚拟化软件则运行于硬件平台之上。
    现实生活中想要实施抓包有两种选择:
    1)在有待监控的主机上安装Wireshark
    2)在LAN交换机上开启端口镜像功能,将连接受监控主机的网卡(NIC)的交换端口流量重定向至Wireshark主机。
    在驻留于单一硬件的虚拟化平台(云端)进行抓包方法有两种:
    1)在有待监视的指定服务器上安装Wireshark,直接在服务器上抓包。
    2)在安装了Wireshark的笔记本电脑连接交换机,开启重定向服务,重定向进出口的流量。在上图所示场景中,将笔记本电脑连接至交换机某个空闲端口(8口)相连,开启端口镜像功能,将1、2口流量重定向至8口,不过这种抓包方法容易碰到问题。
    第一种抓包方式直接。第二种有可能碰到问题。
    如上图,服务器和LAN交换机之间通常会通过两条以上的链路互联。可以把这样的连接方式称为链路聚合(LAG)、端口/网卡结对(teaming)或EtherChannerl(如用Cisco 交换机)。在监控服务器流量时,得检查连接服务器的交换机接口时运行于负载共享(load sharing)模式还是端口冗余(port redundancy)(也叫做故障切换或者主备[Failover]模式)。若运行于端口冗余模式:请先确认连接服务器网卡的活跃交换机端口,再配置镜像,实施抓包。若运行于负载共享模式(一个网络请求,由两个网卡一起完成,但两个网卡的流量却完全不等),则必须采用以下三种流量镜像之一:
    1)镜像抓取LAG接口的流量。即镜像抓取两个或两个以上的物理端口,并捆绑而成的虚拟机接口流量。交换机厂商一般会把这样的虚拟机接口称为Port-Group接口或Port-Channel接口。
    2)服务器NIC运行于端口冗余模式。请将连接服务器网卡的两个交换机物理端口(如下图所示交换机的1、2两口,选项A)中活跃端口流量镜像至Wireshark主机。
    在这里插入图片描述
    3)在LAN交换机上配置两路端口镜像,将连接服务器双网卡的两个物理机端口流量同时镜像给Wireshark主机的双网卡。
    还有一个问题:
    在负载共享抓包模式下抓包,若进出服务器流量过高,采用方法1,将会把两块网卡京享值Wireshark主机单网卡。这种流量已经超过了网卡接包的最大流量上限,Wireshark主机不可能抓全所有服务器流量,某数据包势必会被丢弃。因此想要保证抓全所有流量包,请保证Wireshark主机的NIC速率高于受监控服务器网卡速率,或采用3方法(用双网卡抓包)

    0x5 在刀片服务器上抓包

    刀片服务器是指在标准高度的机架式机箱内可插装多个卡式的服务器单元,是一种实现HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,为特殊应用行业和高密度计算环境专门设计。刀片服务器就像“刀片”一样,每一块“刀片”实际上就是一块系统主板。
    在这里插入图片描述
    下图是刀片式服务器机箱的硬件网络拓扑
    在这里插入图片描述
    所示刀片式服务器机箱(刀箱)包含以下部件。
    刀片服务器:硬件刀片,通常安装在刀箱正面。插在刀箱卡槽上的小单元。
    服务器:虚拟服务器,也叫虚拟机,驻留于硬件刀片服务器之内。也就是每个卡槽上的服务器里都有个虚拟机服务器。
    内部LAN交换机:内部LAN交换机安装在刀箱的正面或背面。此类交换机一般都有12 ~ 16个内部(虚拟)端口和4 ~ 8个外部(物理端口)。
    外部LAN交换机:安装在通信机架上的物理交换机,不属于刀箱。
    监控服务器刀箱(里刀片服务器的流量)会更困难,因为进出刀片服务器的流量是没有办法直接抓取的。
    刀箱内部流量监控
    要监控进出特定服务器的流量,请在虚拟服务器上安装Wireshark。此时只要确定收发流量的虚拟网卡。检查虚拟机的网络设置即可确认这一点,还可以启动Wireshark,在Wireshark-Capture Interface界面确认接收流量的虚拟机网卡。
    刀片服务器与导向内部交换机所连服务器之间(上图1)的流量监控
    要监控刀片服务器与导向内部交换机所连服务器之间的流量,请在导向内部交换机上开启镜像功能,将上连刀片服务器的内口(虚拟端口)流量重定向至下连Wireshakr主机的外口(物理端口)。
    刀箱内部交换机所连服务器与外部交换机所连设备间(标号2)的流量监控。
    在内部或外部LAN交换机开启端口镜像功能,抓取流量。

    0x6 开始抓包

    0x6.1 操作方法

    只要开启软件,进入启动窗口即可看见所有本机网卡及流量状况
    在这里插入图片描述
    发起单网卡抓包最简单的方式就是双击有流量经过的网卡,还可以选中指定网卡后点击小鲨鱼的图标2。
    1、多网卡抓包
    先按下Ctrl或Shift键,再用鼠标选择就可以选中多个网卡选项。我随便找了4个本地连接做演示。
    在这里插入图片描述
    选中后点击鲨鱼图标,就可以同时抓取选中的内容的流量了。这里只是举个例子。
    多网卡抓包很多情况下会用到。比如,只要Wireshark主机配备了两块物理网卡,即可同时监控到两台不同服务器的流量或一台路由器的两个接口流量,如下图。
    在这里插入图片描述
    2、如何配置实际用来抓包的网卡
    1)在菜单中点击捕获->设置选项,会弹出捕获接口窗口。可以在窗口中配置抓包网卡的参数
    在这里插入图片描述
    2)可以在该窗口中的网卡列表区域选择实际用来抓包的网卡,无需配置网卡上的其他参数,直接点击start就可以开始抓包。
    3)左下角有个"在所有接口上使用混杂模式的复选框"。一旦勾选,Wireshark主机便会抓取交换机(端口镜像功能)重定向给自己的所有数据包,哪怕数据包的目的不是本机地址;若取消勾选,Wireshark就只会接收自己本机需要的数据报,丢弃重定向接口的数据包。
    4)在网卡列表区域正下方,有抓包过滤器输入栏。
    3、将抓到的数据存入多个文件
    可在网卡列表的“输出”选项卡下配置,点击“输出选项卡”会弹出以下窗口。
    在这里插入图片描述
    Wireshark会将抓到的数据保存到我们自定义的路径下。若勾选了"自动创建新文件,经过…“复选框,则可以设定条件,让Wireshark按照所指定的条件,将抓包数据存入多个文件,文件名格式为文件路径栏内输入的文件名+_xxxx_时间戳。该功能在有待监控的网络链路的流量极高或需要长期抓包的情况下十分有用。在这种情况下可以设定条件,让Wireshark在指定事件之后、抓取到指定规模的数据之后,或者抓取到指定数量的数据包只好,将抓包数据存入一个新文件。
    4、设置抓包选项参数
    点击选项,在左上角1区域内设置显示抓包后要显示的选项。右上角2区域显示解析选项。
    在这里插入图片描述
    5、网卡管理
    在这里插入图片描述
    弹出管理接口窗口,在该窗口下可以看到所有网卡信息,包括未在启动窗口的网卡列表区域出现的网卡。
    在这里插入图片描述
    Wireshark还能时时读取应用程序抓取到数据包。
    6、远程机器上抓包
    1)在远程机器上安装pcap驱动程序,也可以在远程机器上完整安装Wireshark软件包。
    2)在Wireshark启动窗口选择“捕获->设置->管理接口”,在弹出的另一个管理接口窗口中,点击远程接口选项卡,在该选项卡中点击左下角”+“按钮,会弹出一个远程接口按钮
    在这里插入图片描述
    3)在该窗口添加参数。
    主机IP地址或主机名
    输入端口2002,不填则默认为2002
    可以选择不验证,验证就是添加登陆的用户名密码
    4)登陆有待采集数据的远程机器
    5)回到接口管理界面点击OK按钮,这样远程机器的网卡就会出现在本地网卡列表中,操作与本机一样。
    7、开始抓包——在Linux/UNIX机器上抓包
    Linux和UNIX系统自带tcpdump工具。我们需要记住以下常用指令

    ;从指定接口抓包:
    	语法: tcpdump -i <接口名>
    	例子: tcpdump -i eth0
    ;将从指定接口抓到数据存入指定文件
    	语法: tcpdump -w <文件名> -i <接口名>
    	例子: tcpdump -w test001 -i eth1
    ;读取抓到的数据包文件
    	语法: tcpdump -r <文件名>
    	例子: tcpdump -r test001
    

    8、从远程通讯设备采集数据
    该功能常规理念是,某些厂商的网络设备具备本机抓包功能,抓包完毕之后,还支持将抓包文件导出至外部主机。
    按Cisco的说法,该功能名为嵌入式数据包捕获(EPC)功能,配置方法可在思科官网进行搜索。

    0x6.2 Wireshark抓包原理

    将Wireshark主机的网卡接入有线或无限网络开始抓包时,介于有线(或无线)网卡和抓包引擎之间的软件驱动程序便会参与其中。在Windows和UNIX平台上,这一软件驱动程序分别叫作WinPcap和LibCap驱动程序;对于无线网卡,行使抓包任务的软件驱动程序名为AirPacP驱动程序。
    若需要精准获取时间还需要利用NTP协议从NTP服务器上获取。

    展开全文
  • C语言课程设计-球队管理系统(课设报告)

    千次阅读 多人点赞 2019-07-06 22:42:43
    int load() /*打开文件,读取里面的数据,写出*/ { struct person *p; p=player; FILE *fp; int i; if((fp=fopen("file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { ...

    C语言课程设计-球队管理系统

    一,前言
    这个是我学期末的一项C语言课设作业,经过大佬点播,身为小白的我终于完成了它,鉴于博客中还没有关于此方面(球队信果息管理)的内容,先把我的作业在此分享给大家。仅作为参考,作为一个小白能力有限,写的有点简单啊,如果想实现更多的功能可参考别的信息管理系统作为参考。
    二,直接上代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void display();
    void find();
    void menu();
    void change1();
    int load();
    void save();
    void sore();
    struct person
    {
    	int ID;
    	char name[24];
    	char sex[24];
    	char position[24];
    	char place[24];
    	float score;
    	char email[24];
    	long telephone;
    }player[24];
    void display()//显示所有信息
    {
    	int a=0;
    	struct person *p;
    	printf("ID   name   sex     position     place    score         email     telephone\n");
    	for(p=player;p<player+24;p++)
    	{
    		a=1;
    		printf("%d   %s  %s     %s    %s    %.1f        %s      %ld  \n",p->ID,p->name,p->sex,p->position,p->place,p->score,p->email,p->telephone);
    	}
    	if(a==1)
    		{
    			printf("返回主菜单\n");
    			system("pause");//页面停留
    			system("cls");
    			menu();
    
    		}
    }
    void find()
    {
    	struct person *p;
    	int num,loop;
    	printf("\n请输入编号:\n");
    	scanf("%d",&num);
    	for(p=player;p<player+24;p++)
    	{
    		if(p->ID==num)
    		{
    			loop=1;
    			printf("ID   name   sex     position     place    score    email    telephone");
    			printf("\n%d   %s   %s   %s   %s   %f   %s   %ld  \n\n",p->ID,p->name,p->sex,p->position,p->place,p->score,p->email,p->telephone);
    			printf("返回主菜单\n");
    			system("pause\n");
    			menu();break;
    
    		}
    
    	}
    	if(loop==0)
    		{
    			system("cls");
    			printf("无此球员信息\n");
    		}
    		printf("无此球员信息,请重新选择编号");
    		find();
    	
    }
    void change()
    {
    	system("cls");
    
    	int b,c,num;
    	struct person *p;
    	int loop=0;
    	printf("\n请输入需要修改的球员编号:\n");
    	scanf("%d",&num);
    	for(p=player;p<player+24;p++)
    		{
    			if(p->ID==num)
    			{
    				do
    				{
    					puts("\n\n1.ID   2.name   3.sex    4.position    5.place    6.score    7.email    8.telephone   9.所有信息   10.取消并返回\n");
    					printf("请选择要修改的信息种类: [  ]\b\b\b");
    					scanf("%d",&c);
    					if(c>10||c<1)
    					{
    						system("cls");
    						puts("\n选择错误!请重新选择!\n");
    						getchar();
    					}
    				}while(c>10||c<1);break;
    			}
    			else
    			{
    			    if(p == p+24)
    				printf("无此球员,请重新选择\n");
    			}
    	}
    
    	do
    	{
    		switch(c)
    			{
    				case 1: printf("ID:");scanf("%d",&p->ID); break;
    				case 2: printf("name:");scanf("%s",p->name); break;
    				case 3: printf("sex:");scanf("%s",p->sex); break;
    				case 4: printf("position:");scanf("%s",p->position); break;
    				case 5: printf("place:");scanf("%s",p->place);break;
    				case 6: printf("score:");scanf("%f",&p->score);break;
    				case 7: printf("email:");scanf("%s",p->email);break;
    				case 8: printf("telephone:");scanf("%ld",&p->telephone);break;
    				case 9: change1();break;
    				case 10: menu();
    			}
    	save();//修改完保存
    	puts("\n修改后的信息:\n");
    	printf("ID   name   sex     position     place    score    email    telephone\n");
    	printf("%d   %s   %s   %s   %s   %f   %s   %ld  \n",p->ID,p->name,p->sex,p->position,p->place,p->score,p->email,p->telephone);
    	puts("是否完成修改 请选择\n1/完成并退出  2/继续修改 3/修改其他球员信息");
    	printf("    [  ]\b\b");
    	scanf("%d",&b);
    	}while(b==2);
    	if(b==1)
    		menu();
    	if(b==3)
    		change();
    
    
    }
    void change1()
    {
    		struct person *p;
    		int num,loop=0;
    		printf("\n请再次输入编号:\n");
    		scanf("%d",&num);
    		for(p=player;p<player+24;p++)
    			{
    				if(p->ID==num)
    				{
    					loop=1;
    					printf("请输入该球员的新信息:依次输入 ID   name   sex     position     place    score    email    telephone\n");
    					scanf("%d%s%s%s%s%f%s%ld\n",&p->ID,p->name,p->sex,p->position,p->place,&p->score,p->email,&p->telephone);
    					break;//有bug
    				}
    			}
    		if(loop)
    		{
    			printf("\n修改成功!!\n");
    			printf("返回主菜单");
    			system("pause");
    			menu();
    
    		}
    		else
    		{
    			system("cls");
    			printf("\n不存在该球员!!\n");
    			printf("\n");
    			change();
    		}
    
    }
    void sort()//排序
    {
    	struct person p;//定义结构体变量,做中间变量
    	int j,k;
    	int i;
    	for(i=0;i<24;i++)
    	{
    		k=i;
    		for(j=i+1;j<24;j++)
    			if(player[j].score>player[k].score)
    			{
    				k=j;
    		        p=player[k];player[k]=player[i];player[i]=p;
    			}
    	}
    	display();
    	printf("返回主菜单\n");
    
    
    }
    void max()//找出得分最高
    {
    	int i,m=0;
    	for(i=0;i<24;i++)
    	{
    		if(player[i].score>player[m].score)
    			m=i;
    	}
    	printf("本赛季最佳球员是:%s\n\n",player[m].name);
    			printf("返回主菜单\n");
    			system("pause");//页面停留
    			menu();
    }
    int load() /*打开文件,读取里面的数据,即写出*/
    {
    	struct person *p;
    	p=player;
    	FILE *fp;
        int i;
        if((fp=fopen("file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/
    	{
    		printf("\n文件不存在!\n");
            return 0;
    	}
        for(i=0;!feof(fp);i++)  /*处理到文件结尾*/
    		for(p=player;p<player+24;p++)
    			fscanf(fp,"%d\t%s\t%s\t%s\t%s\t%f\t%s\t%ld\n",&p->ID,p->name,p->sex,p->position,p->place,&p->score,p->email,&p->telephone);
        fclose(fp);
    	return 0;
    }
    void save() /*保存学生信息*/
    {
    	struct person *p;
    	p=player;
    	//void exit();
    	FILE *fp;
    	int i;
        if((fp=fopen("file.txt","wb"))==NULL)/*只打开或建立一个二进制文件,只允许写数据*/
    	{
    		printf("\n文件不存在!\n");
    	}
        for(i=0;i<24;i++)
          if(player[i].name[0]!='\0')
             if(fprintf(fp,"%d\t%s\t%s\t%s\t%s\t%f\t%s\t%ld\n",p[i].ID,p[i].name,p[i].sex,p[i].position,p[i].place,p[i].score,p[i].email,p[i].telephone)==1)/*将一批数据作为一个整体一次性写入磁盘文件*/
                printf("文件写入错误!\n");
        fclose(fp);
    }
    void face()/*访问起始页面*/
    {
    	system("color 4e");
    	printf("\n\t                         ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
    	puts("\n");
    	puts("\t                              ┃                                       ┃");
    	puts("\t                              ┃                                       ┃");
    	puts("\t                              ┃       欢迎访问球队管理系统!           ┃");
    	puts("\t                              ┃                                       ┃");
    	puts("\t                              ┃                                       ┃");
    	puts("\t                              ┃                制作人:燕京理工学院高鸿浩         ┃");
    	puts("\t                              ┃                        2019.6.20      ┃ ");
    	puts("\n ");
    	printf("\n\t                              请按回车键继续……\n");
    
    	getchar();
    	system("cls");
    }
    void tail()
    {
    	printf("\n\t                         ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
    	puts("\n");
    	puts("\t                             ┃                                               ┃");
    	puts("\t                             ┃                                               ┃");
    	puts("\t                             ┃       感谢访问球队管理系统!欢迎下次再来!      ┃");
    	puts("\t                             ┃                                               ┃");
    	puts("\t                             ┃                                               ┃");
    	puts("\t                             ┃                  制作人:燕京理工学院高鸿浩            ┃");
    	puts("\t                             ┃                          2019.6.20            ┃ ");
    	puts("\n ");
    
    }
    void menu()/*主菜单*/
    {
    	int choice;
    	int n;
    	do
    	{
    		system("cls");
    		printf("\n");
    		printf("                                          ---巴塞罗那球员信息管理系统---\n");
    		puts("\n");
    		printf("                                             1/按编号查询球员信息\n");
    		puts("\n");
    		printf("                                             2/  修改球员信息\n");
    		puts("\n");
    		printf("                                             3/按照本赛季成绩排序\n");
    		puts("\n");
    		printf("                                             4/ 本赛季最佳球员\n");
    		puts("\n");
    		printf("                                             5/  显示所有信息\n");
    		puts("\n");
    		printf("                                             6/     退出\n");
    		puts("\n");
    		printf("                                          请选择服务种类(1-6) : [ ]\b\b");
    	    scanf("%d",&n);
    	    if(n<1||n>6)
    		{
    		   system("cls");
    		   printf("选择错误!  请重新选择!\n");
    		   system("pause");
    		   choice=1;
    		}
    		else
    		{
    			break;
    		}
    	}while(choice==1);
    		switch(n)
    		{
    			case 1:system("cls");system("cls");find();break;//调用find函数以对球员进行查找
    			case 2:system("cls");change();break;//调用change函数以对球员信息进行修改
    			case 3:system("cls");sort();break;//调用sort函数以对球员进行按成绩排序并输出
    			case 4:system("cls");max();break;//调用max函数以输出全场最佳球员
    			case 5:system("cls");display();break;//调用display函数以输出全部信息
    			case 6:system("cls");tail();break;//调用tail函数以展现末尾页面
    		}
    }
    
    int main()
    {
    	load();
    	face();//调用face函数以展现主页面
        menu();//调用menu以展示功能菜单
        return 0;
    }
    //一定要注意文件的内容格式要与fscanf()里面的格式一一对应,此处不是代码注释 可删。
    

    接下来是我课设报告中的部分内容

    一、设计目的
    球队信息管理系统(足球)
    对于一支球队来说,他要管理球队的球员信息,包括姓名,年龄,国籍,性别,联系方式,图片,身高,体重。球队要参加比赛,因此比赛日程可能要考虑比赛性质,又包括友谊赛,联赛,杯赛,为了基金管理者倒计时的设计是必要的,另外就是工资管理一个球员的工资,包括基本工资跟奖金,而奖金又包括进球奖金,比赛奖金及其他奖金,工资跟比赛的结果密切相关,我们要在数据库中添加比赛记录,最后就是机构管理,球队的机构设置及负责人的各种信息
    开发其系统主要为了帮助广大球员提高工作效率,节约资源,提高信息的精确度,实现球员。员信息管理的工作流程的系统化,规范化和自动化。
    本次设计只有球员信息模块管理,涉及到的信息有ID,姓名,籍贯,邮箱,身高,性别,体重,场上位置,出生日期。涉及到的功能有,查询,修改,储存,以及确定和取消按钮。并且可以推送出最近一场比赛的最佳球员。
    二、功能描述

    1. 根据球员编号查询球员信息
    2. 显示所有学生信息
    3. 修改学生信息,并保存
    4. 保存学生信息到文件
    5. 按得分从高到低显示所有球员信息
    6. 显示本赛季最佳球员(mvp)
    7. 退出系统
      三、总体设计
      首先定义结构体,定义主函数,用主函数调用文件数据写出函数load,将文件里面的数据写出并赋给结构体变量,然后调用face函数以显示欢迎界面,调用menu函数以显示菜单。
      menu函数通过switch条件语句调用各功能函数,选择1时,可按编号查询球员,2可以修改球员信息并保存,修改球员信息有包括了对球员ID,name,sex等的信息修改,修改完成后又通过一个switch条件语句来选择接下来的执行项(1/完成并退出2/继续修改3/修改其他球员信息);3可以按本赛季成绩排序并输出排序结果;4可以输出本赛季得分最高的球员,即本赛季最佳球员;5可以显示球队球员的所有信息;6 可以调用fail函数以显示退出系统页面。

    执行流程图如下:

    四、详细设计
    包括系统各模块(函数)的组成、功能、参数说明、相互调用关系等;各功能模块的算法处理流程说明。

    参数说明:
    ID球员编号
    name姓名
    sex性别
    position国籍
    place场上位置
    score得分
    email邮箱
    telephone电话
    a,b,c,num 等实现某单一功能的局部变量(如:循环变量)
    *p结构体指针 指向 struct person
    player[24]结构体变量

    1,定义结构体(用来储存球员各种信息的变量)
    struct person
    {
    int ID;
    char name[24];
    char sex[24];
    char position[24];
    char place[24];
    float score;
    char email[24];
    long telephone;
    }player[24]

    2,函数
    1,main函数,顺序调用load,face(展示欢迎页面),menu(展示功能菜单)函数当执行到load函数时将file文件打开并将里面的数据写出并赋给结构体变量

    2,face函数 用来展示欢迎页面
    3,menu函数
    通过switch条件语句调用自定义函数以实现相应功能

    4.display函数 用来显示所有球员的所有信息(无调用关系)
    利用循环使指针指向每一个球员信息的储存位置,并输出每次指向的地址储存的信息
    在这里插入图片描述

    5.find()函数 //根据编号查询信息,如果没有此球员则此函数调用其本身再次输入编号并进行查找
    在这里插入图片描述

    6.change函数
    可以修改球员信息并保存,修改球员信息有包括了对球员ID,name,sex等的信息修改,修改完成后又通过一个switch条件语句来选择接下来的执行项(1/完成并退出2/继续修改3/修改其他球员信息)调用关系见下页流程图
    在这里插入图片描述

    7.change1函数
    修改全部信息,调用关系如下流程图
    在这里插入图片描述

    8.max()函数 用到了“打擂台”算法,找出得分最高球员

    void max()//找出得分最高
    {
    	int i,m=0;
    	for(i=0;i<24;i++)
    	{
    		if(player[i].score>player[m].score)
    			m=i;
    	}
    	printf("本赛季最佳球员是:%s\n\n",player[m].name);
    			printf("返回主菜单\n");
    			system("pause");//页面停留
    			menu();
    }
    
    
    1. sort()函数 用了选择法 算法
    void sort()//排序
    {
    	struct person p;//定义结构体变量,做中间变量
    	int j,k;
    	int i;
    	for(i=0;i<2;i++)
    	{
    		k=i;
    		for(j=i+1;j<2;j++)
    			if(player[j].score>player[k].score)
    			{
    				k=j;
    		        p=player[k];player[k]=player[i];player[i]=p;
    			}
    	}
    	display();//调用display以显示排序后的数据
    	printf("返回主菜单\n");
    
    
    }
    
    1. load()函数 被调用函数 写出文件里面的数据并赋给结构体变量 代码如下:
    int load(){
    	struct person *p;//结构体指针
    	p=player;//给p赋初始位置
    	FILE *fp;//文件指针
        int i;
        if((fp=fopen("file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/
    	{
    		printf("\n文件不存在!请输入:\n");
            return 0;
    	}
        for(i=0;!feof(fp);i++)  /*处理到文件结尾*/
    		for(p=player;p<player+24;p++)
    			fscanf(fp,"%d\t%s\t%s\t%s\t%s\t%f\t%s\t%ld\n",&p->ID,p->name,p->sex,p->position,p->place,&p->score,p->email,&p->telephone);
        fclose(fp);
    	return 0;
    }
    

    7.save()函数 被调用函数

    void save() /*保存学生信息*/
    {
    	struct person *p;
    	p=player;
    	//void exit();
    	FILE *fp;
    	int i;
        if((fp=fopen("file.txt","wb"))==NULL)/*只打开或建立一个二进制文件,只允许写数据*/
    	{
    		printf("\n文件不存在!\n");
    	}
        for(i=0;i<24;i++)
          if(player[i].name[0]!='\0')
             if(fprintf(fp,"%d\t%s\t%s\t%s\t%s\t%f\t%s\t%ld\n",p[i].ID,p[i].name,p[i].sex,p[i].position,p[i].place,p[i].score,p[i].email,p[i].telephone)==1)/*将一批数据作为一个整体一次性写入磁盘文件*/
                printf("文件写入错误!\n");
        fclose(fp);
    }
    
    
    1. tail()函数//显示尾页

    3,体会
    程序设计过程,起初很有信心,想尽可能实现更多功能,但发现过程是艰辛的。发现现有知识并不能完成设计,为了满足对函数功能的设计需要,查书学习涉及到的知识,在科技博客CSDN中找经典算法以及寻求大佬的帮助。经过自己的努力和摸索,一条条附有相应功能的函数写了出来。我本以为定义好函数就完成一大部分工作了,但是后来发现定义函数之后只是开启了整体的第一步,以后最难得部分是将各个函数有机的串联在一起,接下来的工作就是对各个函数的拼接以及结构体的定义。在整体结构完成之后,对程序进行调试,调试,再调试。发现问题,解决问题,再发现问题,解决问题,如此反复几十次,过程中发现的许多问题,随着发现问题并且解决问题,我对C语言程序设计的认知也越来越深了。哪方面印象最深的,就是出现了一个问题需要静下心来慢慢调。总体上来说,就是基本功不扎实,练得少。
    五天的时间,从不敢下手,到每次抱着试一试的态度编写,我觉得我不仅仅是学到了C语言知识,更是锻炼了逻辑思维,和学会面对困难时要冷静。

    4,参考文献
    1.谭浩强.C语言程序设计[M].北京 清华大学出版社,2019年1月.293-350.
    2.明日科技 C语言项目案例分析 北京 清华大学出版社,2012年1月
    3.CSDN博客

    展开全文
  • 将城市公安交通管理的业务应用划分为五大核心平台智能交通管控平台、交通信息服务平台、交通运维管理平台、交通地理信息平台和交通信息资源平台,如下表所示: 表4‑1核心业务平台及功能 序号 ...

    1.1.  概述

        在用户需求的基础上,通过对城市公安交通指挥系统各技术子系统的功能进行梳理、分类,根据GA/T445-2010 《公安交通指挥系统建设技术规范》、GAT1146-2014《公安交通集成指挥平台结构和功能》要求的功能和我公司自行拓展的功能,将城市公安交通管理的业务应用划分为五大核心平台,即智能交通管控平台、交通信息服务平台、交通运维管理平台、交通地理信息平台和交通信息资源平台,如下表所示:

    表 4‑1核心业务平台及功能

    序号

    功能

    业务平台

    1

    监视道路交通状况

    智能交通管控平台

     

    日常组织与管控,指挥、协调交通安全保卫工作

    2

    应急指挥调度、组织协调、决策支持和执行监督

    3

    城市内多级公安交通指挥系统协调控制

    4

    GIS基本显示、GIS基本操作、GIS基本编辑和GIS地图查询功能

    交通地理信息平台

    5

    地图元素统计、地图打印输出、地图定位、地图切割等

    6

    将交通设备设施、交通状态、交通路径等在GIS地图上进行标绘

    7

    采集公安交通管理信息

    交通信息服务平台

    8

    发布道路交通管理信息

    9

    管理交通设备设施

    交通运维管理平台

    10

    系统应用运维监测

    11

    配置警力资源,实行警务考核

    12

    用户权限管理、数据字典及系统参数管理等

    13

    交通信息的采集、存储、分析、交换

    交通信息资源平台

    1)智能交通管控平台

        作为公安交通指挥中心核心应用平台,以总队、支队、大队、路面岗勤为主用户群,以城市交通状况监测、交通日常管控、突发事件处置为核心业务,通过交通信息资源云中心对接交互,为指挥中心、科室、路面等各角色提供各类应用的业务平台。

    2)交通地理信息平台

        针对交管平台专门打造的地理信息应用系统,以公安网为基础,以警用电子地图为核心,以地理信息技术为支撑,对空间地理数据进行可视化展现及空间数据分析,为核心业务平台提供基础支撑。

    3)交通信息服务平台

    为公安交管用户提供面向公众的交通信息服务,实现交通信息采、编、审、发,通过诱导屏、微信、微博等方式对外发布。

    4)交通运维管理平台

        作为交通技术服务部门提供运维管理工具,通过设备管理、设施管理、警力资源管理、应用运行监测和系统管理等手段有效管理交通设备、应用系统和警力资源,提高智能交通系统的整体运行效率。

    5)交通信息资源平台

        交通信息资源平台为应用系统提供统一的数据采集和传输服务,支撑跨单位间按需信息交换与共享。实现多种类型的数据采集,可靠、快速、安全地数据传输,多种类型的数据交换等一系列的功能和非功能性需求,从而实现互连互通、数据共享。

    1.2.  交通信息服务平台

    1.2.1.           平台概述

        交通信息服务平台主要为公安交管用户、社会公众、信息服务商提供综合交通信息服务,平台主要对交通信息的采、编、审、发的完整业务流程进行管理从而实现对信息服务和数据进行统一管理、统一审核、统一发布。

    1.2.2.           平台特点

    1.交通数据多源化

        通过六合一、智能交通管控平台、互联网网站、第三方业务系统等多源通道采集交通路况、交通事故、交通事件、施工占道、交通管制、停车场位等数据,对这些数据进行清洗、融合及发布。

    2.服务内容多样化

        平台为社会公众、第三方系统提供出行规划服务、我的违法服务、交通路况服务、恶劣天气预报服务、个性化订阅服务、微信服务、短信服务、微博服务、诱导服务、一键发布服务。

    3.发布手段多元化

        基于互联网技术的交通信息服务,能通过诱导屏、短信、微信、移动APP、微博、网站、广播电视等多元化媒介,为用户提供随时随地随心所欲的服务内容。

    4.发布信息规范化

        基于《GA/T1049.1-2013  公安交通集成指挥平台通信协议 第6部分》,形成公司的信息内容规范发布。

    1.2.3.           平台结构

    1.2.3.1    逻辑结构

    图 4‑1逻辑结构

    ±  信息规范体系

    信息规范体系纵向贯穿框架体系的各个层次。

    信息规范标准体系主要参考公安部《GA/T1049.1-2013  公安交通集成指挥平台通信协议》、《GA/T515.1-2011  公安交通指挥系统设计规范》、《GA/T 1146-2014  公安交通集成指挥平台结构和功能》、《GA/T 651-2014  公安交通指挥系统工程建设通用程序和要求》、《公安交通集成指挥平台技术实施方案》。

    ±  安全保障体系

        安全保障体系纵向贯穿框架体系的各个层次。主要包括数据加密传输、用户身份验证、IP验证、用户权限验证等。数据加密传输:根据数据等级不同,采用不同的加密传输机制;用户身份验证:根据访问服务时携带的用户名和密码登录服务系统,登录过程是根据身份信息自动进行的,不需要用户手工操作;IP验证:用户登录到服务系统时,用户访问服务的机器的IP地址需要和注册的IP地址相同;用户权限验证:根据用户身份信息登录服务系统后,系统根据用户权限判断用户是否可以访问相应的服务。

    ±  交通信息服务平台

        交通信息服务平台主要由二个系统和三个服务组成,分别是信息采集服务,信息订阅服务、信息发布服务和交通信息分拣与发布系统。

    交通信息分拣系统主要负责对自动采集或前端上报的信息进行人工确认。

    交通信息发布系统主要负责信息进行编辑排版发布及对发布结果进行统计分析。

        信息采集服务主要负责自动采集实时路况、交通管制、施工占道、交通事故、交通事件、停车场位等业务数据。

        信息订阅服务主要负责信息的订阅及信息推送。可订阅的内容包括指定路线的路况、施工占道、交通管制、交通事故、交通事件、停车场位的信息。

        信息发布服务主要负责将编辑排版好的内容通过短信服务、微信服务、微博服务、诱导屏服务发布到前端,同时信息发布服务也可供业务系统或第三方服务调用。

    ±  数据接入层

        技术子系统主要包括交通流子系统、指挥调度系统、运维子系统、停车场子系统、施工占道子系统、交通管制子系统、六合一系统、事故处理系统、视频子系统及其它第三方子系统。

    ±  支撑层

        交通信息资源平台主要提供数据库访问组件、日志组件、权限组件、多语种组件、皮肤组件、业务对象组件、消息服务等功能。

        交通地理信息平台主要提供地图引擎、路线规划、POI查询等功能。

    1.2.3.2    物理结构

    图 4‑2物理结构图

    1.2.4.           业务流程

    1.2.4.1    交通信息人工分拣流程

    交通动态信息的获取有多种手段,包括微信上报、网站上报、业务系统抽取、人工录入。采集上来的数据不一定准确,因此需要人工进行分拣。

    图 4‑3交通信息人工分拣流程图

    1.2.4.2    交通信息发布流程

    交通信息发布分三块:交通信息编辑排版之后再发布;交通信息编辑排版之后,进入审核再发布;通过业务系统调用发布服务直接发布。

    图 4‑4交通信息发布流程图

    1.2.4.3    交通信息审核发布流程

    交通信息需要审核再发布的进入该流程,否则直接进行发布。

    图 4‑5交通信息审核发布流程图

    1.2.5.           平台组成

    1.2.5.1    交通信息分拣系统

    交通信息分拣系统的主要功能是对微信上报、网站上报、业务系统抽取、人工录入的信息进行分类及视频确定。

    图 4‑6交通信息分拣系统功能示意图

    1.2.5.1.1.         路况信息分拣

    通过信息采集服务自动采集业务系统的路况、高德路况和微信、网站人工上报的交通路况信息进行视频确认分拣。通过视频确认路况的状态和上报的路况状态是否一致。

    路况信息包括道路编号、道路名称、路段名称、路段编号、路段状态、更新时间等信息。

    1.2.5.1.2.         交通事件分拣

    通过信息采集服务自动采集业务系统的交通事件和微信、网站人工上报的交通事件信息进行视频确认分拣。通过视频确认交通事件的真实性。

    事件信息包括事件发生地、事件类型、发生时间,事件内容等信息。

    1.2.5.1.3.         交通事故分拣

    通过信息采集服务自动采集业务系统的交通事故和微信、网站人工上报的交通事故信息进行视频确认分拣。通过视频确认交通事故的真实性。

    事故信息包括事故发生地、事故类型、发生时间,事故内容等信息。

    1.2.5.2    交通信息发布系统

    交通信息发布系统是综合信息发布系统,系统通过调用微信模版、微博模版、短信模版、诱导模版、网站模版,将内容生成适合不同通道的内容并发布出去。

     

    图 4‑7交通信息发布系统功能示意图

    1.2.5.2.1.         交通信息发布

    交通信息采集模块或交通信息分拣系统形成的发布内容会自动进入交通信息发布模块,进行高级编辑排版及发布通道选择。

    不需要审核的信息,编辑排版后直接发布。

    图 4‑8交通信息编辑

    交警新闻、通知通告、办事指南、政策法规、安全知识只能在本模块进行编辑排版及发布。这些内容可以通过微信、微博、短信、网站方式进行发布。

    1.2.5.2.2.         交通信息审核发布

    ±  信息审核控制

    信息审核控制那类指标需要进行人工审核发布。

    ±  信息审核发布

    指标配置为需要审核的,都进入该模块进行人工审核后发布。审核发布内容的准确性及发布格式的显示效果,审核通过直接发布,否则不允许发布。

    1.2.5.2.3.         交通信息发布统计分析

    按天统计不同发布通道的成功与失败数量;

    按月统计不同发布通道的成功与失败数量;

    按年统计不同发布通道的成功与失败数量;

    按时段统计不同发布通道的成功与失败数量;

    1.2.5.3    交通微信服务系统

    交通微信服务系统是交管部门借助微信公众平台提供信息服务的系统。交管部门借助微信庞大的用户数量、便捷的沟通方式、丰富的功能应用,通过微信公众平台把创新管理和服务方式的理念推出去,将公安交警业务查询、便民服务等功能汇聚于此,为广大市民、群众和驾驶员朋友提供更加快捷、便利的服务。本系统只发布简单的图文信息、文字、图片、消息管理、自定义菜单等功能,其他功能如素材管理、投票管理、广告主、流量主等功能,需要进入微信公众平台进行处理。

    1.2.5.3.1.         微网站

    微信订阅号、微信服务号作为交通微信服务系统的入口,社会公众关注订阅号或服务号后,会呈现交通出行、办事大厅、信息公开三大板块。交通出行板块挂接“进入交通网”、“实时路况”、“视频路况”、“信息查询”、“警民互动”;办事大厅板块包括“我要自助移车”、“机动车业务”、“驾驶证业务”、“信息上报”、“信息订阅”;信息公开板块包括“办事指南”、“政策法规”、“安全宣传”、“微博群”。同时,用户可以切换到键盘输入界面,进行警民互动环节。

    图 4‑9交通微信服务系统(微网站)功能示意图

    4.3.5.4.1.1       交通路况

    交通路况主要包括实时路况、视频路况。

    ±  实时路况

    系统提供城市道路的实时路况,同时叠加施工占道、交通管制,让社会公众清楚知道哪些道路拥堵及哪些道路有施工占道、交通管制。

    图 4‑10实时路况

    ±  视频路况

    社会公众输入想了解那条道路的名称,系统将该道路的路况及道路周边的视频截图返给社会公众。

    4.3.5.4.1.2       出行规划

    社会大众设定起点、终点(有时还有途径点),出行服务规划出一条最优的路线并在地图上展示,但它不承担指引到地的功能,包含了三种方式的出行规划:驾车、公交和步行。

    4.3.5.4.1.3       信息查询

    信息查询包括交通违法查询、交通管制查询、施工占道查询、停车场位查询。

    ±  交通违法查询

    用户通过交通违法查询菜单,进入交通违法查询模块,需要输入车辆号牌号码、车架号及用户基本信息,系统可以查询出最近违法信息列表。

    ±  停车场位查询

    通过“停车场位查询”菜单,进入停车场位查询模块,系统根据用户当前位置,会自动推送可以当前位置周边停车场信息列表,当选定停车场时,系统显示当前停车场的详细停车信息,并显示出当前停车场剩余停车位信息。

    4.3.5.4.1.4       信息上报

    社会公众通过信息上报通道,将交通事故、交通拥堵、设备故障上报给指挥中心,指挥中心根据信息内容进行警力调度及信息发布。

    ±  交通事故上报

    用户选择“交通事故上报”功能,进入到系统交通事故上报功能,通过系统上报路上发生的交通事故,系统需要采集的内容包括:事故发生时间、地点、详细内容、上报人信息等。

    ±  交通拥堵上报

    用户选择“交通拥堵上报”功能,进入到系统交通拥堵上报功能,通过系统上报路上发生的交通拥堵,系统需要采集的内容包括:拥堵发生时间、道路、上报人信息等。

    4.3.5.4.1.5       信息订阅

    社会公众可以订阅交通管制、施工占道、交通事件、交通事故、实时路况、路线规划、交通资讯等内容。

    4.3.5.4.1.6       警民互动

    社会公众提交想问的内容,民警看到提问后,进行回复。

    4.3.5.4.1.7       办事大厅

    社会公众通过办事大厅,可以办理自助移车、机动车业务、驾驶证业务、办事指南。

    ±  办事指南

    该栏目主要是用于发布各项交通管理业务的办理流程、相关规定、供下载的表格、办事机构的地址及其联系方式等,为群众提供相关业务办理的指南。该栏目发布的各类信息均为静态文本:

    1.    机动车业务办事指南;

    2.    驾驶员业务办事指南;

    3.    交通事故处理指南;

    4.    非机动车指南;

    5.    交通秩序指南;

    6.    交通违法处理指南;

    图 4‑11办事指南

    图 4‑12机动车类

     

    4.3.5.4.1.8       信息公开

    社会公众通过信息公开窗口,获取交通资讯、政策法规、交警风采。

    ±  交警资讯

    交警资讯包括交通管理相关通知通告及交通安全宣传教育片/视频和图片下载。

    图 4‑13交警资讯

     

    ±  政策法规

    政策法规的内容主要包括:

    1.   国家制定关于交通管理的相关法律法规;

    2.   公安部制定关于交通管理的相关法律法规;

    3.   国家标准、行业标准中与交通管理相关的标准。

    图 4‑14政策法规

    ±  交通微博群

    列举交警部门对外的微博信息,点击直接进入微博系统。

    4.3.5.4.1.9       交通宣传

    社会公众通过交通宣传窗口,获取安全常识、警钟长鸣、交通标识等内容。

    1.2.5.3.2.         后台管理端

    4.3.5.4.1.10  信息发布

    系统利用类似WORD丰富的文字编辑功能,直接对信息内容进行编辑加工,就如同使用WORD一样,不但使信息内容更加丰富多彩,而且大大简化了操作,提高了工作效率。

    可以通过配置,进行编辑排版之后立即发布。

    图 4‑15信息编辑

    4.3.5.4.1.11  信息审核发布

    在信息发布前,由发布审核岗警员对待发布的交通信息根据内部要求执行审核操作,对不符合要求的信息可以驳回或重新编辑,符合要求的可审核通过并发布。

    4.3.5.4.1.12  信息查询

    查询历史的发布内容,同时可以对社会大众发送的消息内容进行查询,也可以通过该界面进行回复。

    4.3.5.4.1.13  信息发布统计

    按天统计发布成功与失败数量;

    按月统计发布成功与失败数量;

    按年统计发布成功与失败数量;

    按时段统计发布成功与失败数量;

    1.2.5.4    交通短信服务系统

    短信服务系统集成短信猫、短信平台等第三方设备、短信平台,且自身实现一组与短信相关的功能,并为第三方系统提供收发短信、彩信、验证码的接口。

    图 4‑16交通短信服务系统功能示意图

    1.2.5.4.1.         短信内容发布

    系统利用类似WORD丰富的文字编辑功能,直接对短信内容进行编辑加工,就如同使用WORD一样,不但使短信内容更加丰富多彩,而且大大简化了操作,提高了工作效率。

    可以通过配置,进行编辑排版之后立即发布。

    图4‑17短信发送

    1.2.5.4.2.         短信内容审核发布

    在信息发布前,由审核岗警员对待发布的信息根据内部要求执行审核操作,对不符合要求的信息可以驳回或重新编辑,符合要求的可审核通过并发布。

    1.2.5.4.3.         短信内容查询

    短信查询包括短信发送查询、回复短信查询。

    图4‑18回复短信查询

    1.2.5.4.4.         信息发布统计

    按天统计发布成功与失败数量;

    按月统计发布成功与失败数量;

    按年统计发布成功与失败数量;

    按时段统计发布成功与失败数量;

    1.2.5.4.5.         系统管理

    系统管理包括分组管理、通讯录管理、短信模版管理、参数配置。通讯录管理中支持人员批量导入、批量导出等功能。

    图4‑19通讯录管理

    1.2.5.5    交通诱导发布系统

    交通诱导发布系统是交通管理者通过发布道路路况、机动车尾号限行、标语、停车场位、施工占道、交通管制、交通事件等信息,诱导道路使用者的出行行为,从而减少车辆在道路上的逗留时间,防止交通阻塞的发生,并且最终实现交通流在路网中各个路段上的合理分配,改善路面交通系统。

    图4‑20城市交通诱导复合显示屏发布诱导信息示例

    图 4‑21交通诱导发布系统功能示意图

    1.2.5.5.1.         诱导屏总览

    ±  诱导屏的空间位置

    在GIS地图上直观展示诱导屏设备的分布情况,通过不同的诱导屏图标颜色展示诱导屏不同的运行状态(正常、故障、停用、在建、虚拟)。

    图 4‑22诱导屏的空间位置

    ±  查看播放内容

    用户能够选择GIS地图上所展示的诱导屏图标,查看该诱导屏当前正在发布的内容信息,也能够查看该诱导屏的当前节目清单,详细了解诱导屏播放内容。

    图 4‑23诱导屏的播放内容

    ±  查看实时路况

    在GIS地图上以红黄绿展示当前的实时路况,为交通管理者核实诱导屏的内容提供科技依据。

    ±  视频查看

    在GIS地图叠加视频空间位置,交通管理者通过视频核实当前的交通状况,同时决定是否需要手工干预诱导屏的路况状态。

    1.2.5.5.2.         诱导内容发布

    可以通过配置,进行编辑排版之后立即发布。

    ±  日常信息发布

    日常情况下,通过编辑一些宣传标语、警示信息、天气信息、施工占道、交通管制等,发布到前端诱导设备。如北京机动车尾号限行信息:今天是星期三,车牌尾号为5和0的机动车禁止在五环路以内道路(不含五环路主路)行驶。

    ±  节假日信息发布

    节假日,通过编辑一些节假日相关信息或者人性化的友好提示信息,发布到前端诱导设备。如:司机一滴酒,亲人两行泪。

    ±  突发紧急事件发布

    提供道路交通事故、临时交通管制等突发紧急事件的诱导发布功能。突发紧急事件在诱导发布操作上与日常信息发布类似,但在业务划分及系统实现上,在发布时间段内权限最高,当发布突发紧急信息时,本系统立即向前端诱导屏设备发送独占信息。

    ±  路况自动发布

    采用人工或自动发布两种方式,将路况信息发布到交通诱导屏,诱导交通流均衡分布,引导驾驶员提前选择合理路径,提高交通系统整体运行效率,避免车辆涌向已经拥堵的路段,为市民顺利出行提供保障。

    ±  停车场位发布

    提供停车场位信息手工及自动诱导发布功能。手工编辑、人工发布于标语发布相同。同时提供停车场模板配置功能,供自动发布停车场信息时使用。

    ±  批量发布

    向多个诱导屏发送相同内容的标语或突发事件。

    1.2.5.5.3.         诱导内容审核发布

    在信息发布前,由审核岗警员对待发布的信息根据内部要求执行审核操作,对不符合要求的信息可以驳回或重新编辑,符合要求的可审核通过并发布。

    1.2.5.5.4.         预案管理

    预案是指根据评估分析或经验,对潜在的或可能发生的突发事件的类别和影响程度而事先制定的信息发布方案。当发生恶劣天气、重大交通事故时立即对多个诱导屏同时发布,保证信息的实时性和准确性。

    基本功能包括诱导预案的新增、修改、删除、查询和发布。

    ±  诱导预案新增

    系统可以创建新诱导预案,录入预案基本信息、选择发送屏体列表并编辑屏体发布内容。

    ±  诱导预案修改

    系统可以对已存在的诱导预案进行重新修改和编辑。

    ±  诱导预案删除

    系统可以删除不需要的诱导预案。

    ±  诱导预案查询

    系统可以通过列表方式展示所有已创建的诱导预案,并提供模糊查询功能。

    ±  诱导预案发布

    用户可以根据实际情况需要,选择合适的诱导预案,确认内容之后进行预案发布。

    1.2.5.5.5.         发布内容查询

    对下发且已经执行的内容进行查询。

    1.2.5.5.6.         发布内容统计

    按天统计发布成功与失败数量;

    按月统计发布成功与失败数量;

    按年统计发布成功与失败数量;

    按时段统计发布成功与失败数量;

    1.2.5.6    交通微博服务系统

    交通微博服务系统集成新浪微博、腾讯微博、网易微博等第三方微博服务,对外发布实时路况、交通管制、施工占道、突发事件、交通资讯等内容。本系统只发布简单的文章信息,其他功能如话题、点评、微公益、投票等功能,需要进入第三方微博系统进行处理。

    图 4‑24交通微博服务系统功能示意图

    1.2.5.6.1.         微博信息发布

    系统利用类似WORD丰富的文字编辑功能,直接对信息内容进行编辑加工,就如同使用WORD一样,不但使信息内容更加丰富多彩,而且大大简化了操作,提高了工作效率。

    可以通过配置,进行编辑排版之后立即发布。

    图 4‑25信息编辑

    1.2.5.6.2.         微博信息审核发布

    在信息发布前,由审核岗警员对待发布的交通信息根据内部要求执行审核操作,对不符合要求的信息可以驳回或重新编辑,符合要求的可审核通过并发布。

    1.2.5.6.3.         微博信息查询

    微博信息查询包括微博信息发布查询、微博内容评论查询。

    1.2.5.6.4.         信息发布统计

    按天统计发布成功与失败数量;

    按月统计发布成功与失败数量;

    按年统计发布成功与失败数量;

    按时段统计发布成功与失败数量;

    1.2.5.7    交通互联网发布系统

    交通互联网发布系统作为交通信息服务平台前端发布系统之一,也作为交通信息互联网发布的统一门户,主要提供实时路况、出行规划、信息查询、信息上报、信息订阅、警民互动、办事大厅、信息公开、安全宣传等功能。

     

    图 4‑26交通互联网发布系统功能示意图

    1.2.5.7.1.         交通路况

    交通路况主要包括实时路况、视频路况。

    ±  实时路况

    系统提供城市道路的实时路况,同时叠加施工占道、交通管制,让社会公众清楚知道哪些道路拥堵及哪些道路有施工占道、交通管制。

    图 4‑27实时路况

    ±  视频路况

    社会公众输入想了解那条道路的名称,系统将该道路的路况及道路周边的视频截图返给社会公众。

    1.2.5.7.2.         出行规划

    社会大众设定起点、终点(有时还有途径点),出行服务规划出一条最优的路线并在地图上展示,但它不承担指引到地的功能,包含了三种方式的出行规划:驾车、公交和步行。

    1.2.5.7.3.         信息查询

    信息查询包括交通违法查询、交通管制查询、施工占道查询、停车场位

    询。

    ±  交通违法查询

    用户通过交通违法查询菜单,进入交通违法查询模块,需要输入车辆号牌号码、车架号及用户基本信息,系统可以查询出最近违法信息列表。

    ±  停车场位查询

    通过“停车场位查询”菜单,进入停车场位查询模块,系统根据用户当前位置,会自动推送可以当前位置周边停车场信息列表,当选定停车场时,系统显示当前停车场的详细停车信息,并显示出当前停车场剩余停车位信息。

    1.2.5.7.4.         信息上报

    社会公众通过信息上报通道,将交通事故、交通拥堵、设备故障上报给指挥中心,指挥中心根据信息内容进行警力调度及信息发布。

    ±  交通事故上报

    用户选择“交通事故上报”功能,进入到系统交通事故上报功能,通过系统上报路上发生的交通事故,系统需要采集的内容包括:事故发生时间、地点、详细内容、上报人信息等。

    ±  交通拥堵上报

    用户选择“交通拥堵上报”功能,进入到系统交通拥堵上报功能,通过系统上报路上发生的交通拥堵,系统需要采集的内容包括:拥堵发生时间、道路、上报人信息等。

    1.2.5.7.5.         信息订阅

    社会公众可以订阅交通管制、施工占道、交通事件、交通事故、实时路况、路线规划、交通资讯等内容。

    1.2.5.7.6.         警民互动

    社会公众提交想问的内容,民警看到提问后,进行回复。

    1.2.5.7.7.         办事大厅

    社会公众通过办事大厅,可以办理自助移车、机动车业务、驾驶证业务、办事指南。

    ±  办事指南

    该栏目主要是用于发布各项交通管理业务的办理流程、相关规定、供下载的表格、办事机构的地址及其联系方式等,为群众提供相关业务办理的指南。该栏目发布的各类信息均为静态文本:

    机动车业务办事指南;

    驾驶员业务办事指南;

    交通事故处理指南;

    非机动车指南;

    交通秩序指南;

    交通违法处理指南;

    1.2.5.7.8.         信息公开

    社会公众通过信息公开窗口,获取交通资讯、政策法规、交警风采。

    ±  交警资讯

    交警资讯包括交通管理相关通知通告及交通安全宣传教育片/视频和图片下载。

    ±  政策法规

    政策法规的内容主要包括:

    国家制定关于交通管理的相关法律法规;

    公安部制定关于交通管理的相关法律法规;

    国家标准、行业标准中与交通管理相关的标准。

    ±  交通微博群

    列举交警部门对外的微博信息,点击直接进入微博系统。

    1.2.5.7.9.         交通宣传

    社会公众通过交通宣传窗口,获取安全常识、警钟长鸣、交通标识等内容。

    1.2.6.           平台接口

    1.2.6.1    数据接口

    通过交通信息资源平台获取,此部分不在重复阐述,详见《交通信息资源平台》。

    1.2.6.2    发布接口

    1.2.6.2.1.         短信发布接口

    交通信息服务平台通过集成已建短信发布系统接口,可以对外发布交通信息。

    接口提供方向:已建短信发布系统->交通信息服务平台。

    1.2.6.2.2.         诱导屏发布接口

    交通信息服务平台通过集成已建诱导发布系统,通过诱导屏通讯接口,可以对外发布宣传标语、道路施工提示、事故提示、路况等交通诱导信息。

    接口提供方向:已建诱导发布系统->交通信息服务平台。

    1.2.6.2.3.         微信服务接口

    交通信息服务平台通过微信公众平台提供信息服务接口,对外提供基于微信的交通信息服务。系统需要申请微信开发平台公共账号,并可以访问其消息接口、功能接口、账号管理、微信支付等接口。

    接口提供方向:微信公众平台->->交通信息服务平台。

    1.2.6.3    地图接口

    1.2.6.3.1.         地图显示接口

    由交通地理信息平台向交通信息服务平台提供SDK接口,实现在平台上可以显示地图,并叠加对应设备、设施图层等专题图功能。

    接口方向:交通地理信息平台-> 交通信息服务平台。


    关注我的技术公众号,每个工作日都有优质技术文章推送和电子版方案下载。

    微信扫一扫下方二维码即可关注:


     

    展开全文
  • Linux总结

    千次阅读 多人点赞 2020-01-14 20:36:45
    内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等; 发行版本: 一些组织或公司在内核版基础上进行二次开发而重新发行的版本。Linux发行版本有很多种(ubuntu和...

    请多多支持博主,点赞关注一起进步哦~

    文章目录

    一、认识操作系统

    1.1、操作系统简介

    1. 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;
    2. 操作系统本质上是运行在计算机上的软件程序 ;
    3. 为用户提供一个与系统交互的操作界面 ;
    4. 操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。
      在这里插入图片描述

    1.2、操作系统简单分类

    1. Windows: 目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。
    2. Unix: 最早的多用户、多任务操作系统 .按照操作系统的分类,属于分时操作系统。Unix 大多被用在服务器、工作站,现在也有用在个人计算机上。它在创建互联网、计算机网络或客户端/服务器模型方面发挥着非常重要的作用。
      在这里插入图片描述
    3. Linux: Linux是一套免费使用和自由传播的类Unix操作系统.Linux存在着许多不同的Linux版本,但它们都使用了 Linux内核 。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

    在这里插入图片描述
    在这里插入图片描述

    1.3、企业级与个人操作系统区别

    在这里插入图片描述
    常用的企业级操作系统有:

    • Windows Server
    • Unix
    • Linux

    二、Linux前世今生

    2.1、Linux简介

    • 类Unix系统: Linux是一种自由、开放源码的类似Unix的操作系统
    • Linux内核: 严格来说,Linux这个词本身只表示Linux内核
    • Linux之父: 一个编程领域的传奇式人物。他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者,是当今世界最著名的电脑程序员、黑客之一。他还发起了Git这个开源项目,并为主要的开发者。
      在这里插入图片描述

    2.2、Linux诞生

    • 1991年,芬兰的业余计算机爱好者Linus Torvalds林纳斯·托瓦茨)编写了一款类似Minix的系统(基于微内核架构的类Unix操作系统)被ftp管理员命名为Linux 加入到自由软件基金的GNU计划中;
    • Linux以一只可爱的企鹅作为标志,象征着敢作敢为、热爱生活。
    • Linux特点:免费、开源
    • 版本:1991年林纳斯·托瓦茨编写发布了Linux0.0.1版本,具有重大影响。1994年3月,正式发布了Linux1.0版本

    2.3、Linux分类

    Linux根据原生程度,分为两种:

    1. 内核版本: Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等;
    2. 发行版本: 一些组织或公司在内核版基础上进行二次开发而重新发行的版本。Linux发行版本有很多种(ubuntu和CentOS用的都很多,初学建议选择CentOS),如下图所示:
      在这里插入图片描述

    三、Linux文件系统概览

    3.1、Linux文件系统简介

    在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。

    也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

    3.2、文件类型与目录结构

    3.2.1、文件类型

    Linux支持5种文件类型 :
    在这里插入图片描述

    3.2.2、目录结构

    Linux的目录结构如下:

    Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
    在这里插入图片描述
    常见目录说明:

    • /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
    • /etc: 存放系统管理和配置文件(重要);
    • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
    • /usr : 用于存放系统应用程序(使用yum命令下载的软件包会在这里);
    • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
    • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
    • /root: 超级用户(系统管理员)的主目录(特权阶级o);
    • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
    • /dev: 用于存放设备文件;
    • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
    • /boot: 存放用于系统引导时使用的各种文件;
    • /lib : 存放着和系统运行相关的库文件 ;
    • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
    • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
    • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

    四、Linux基本命令

    4、目录命令

    4.1、目录切换命令

    • cd usr 切换到该目录下usr目录
    • cd ..(或cd../) 切换到上一层目录
    • cd / 切换到系统根目录
    • cd ~ 切换到用户主目录 (root用户就是/root,普通用户就是/home)
    • cd - 切换到上一个操作所在目录
    • cd /tmp/test 使用绝对路径切换
    • cd test 使用相对路径

    4.2、目录操作命令

    1. mkdir 目录名称 增加目录
      示例:

      • mkdir test
      • mkdir-p test/a/b/c:创建多级目录(使用相对路径)
      • mkdir-p/opt/test/aa/cc:创建多级目录(使用绝对路径)
    2. ls或者ll(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息

      参数:

      • -l 以列表形式查看
      • -h 以一种人性化的方式查看,也是文件的大小以合适的单位显示
      • -a 查看所有文件,包括隐藏文件
      • -i 显示出文件的i节点号
    3. find 目录 参数 寻找目录(查)

    4. pwd 查看所在目录位置

      示例:

      • 列出当前目录及子目录下所有文件和文件夹: find .
      • /home目录下查找以.txt结尾的文件名:find /home -name "*.txt"
      • 同上,但忽略大小写: find /home -iname "*.txt"
      • 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)find . -name "*.txt" -o -name "*.pdf"
    5. mv 目录名称 新目录名称 修改目录的名称(改)

      注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到mv命令的另一个用法。

    6. mv 目录名称 目录的新位置 移动目录的位置—剪切(改)

      注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

    7. cp -r 目录名称 目录拷贝的目标位置 拷贝目录(改),-r代表递归拷贝

      注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
      参数:

      • -a =-pdr
      • -p 同时复制文件属性,比如修改日期
      • -d 复制时保留文件链接
      • -r: 复制文件夹时,递归复制子文件夹
      • -l 不复制,而是创建指向源文件的链接文件,链接文件名由目标文件给出。
      • note:可以在拷贝的同时重命名
    8. rm [-rf] 目录: 删除目录(删)

      注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包
      参数:

      • -r:递归删除
      • -f:强制删除 即没有提醒

    5、文件命令

    5.1、文件操作命令

    1. touch 文件名称: 文件的创建(增)
      创建文件 可以一次创建多个文件,以空格隔开

    2. cat/more/less/tail 文件名称: 文件的查看(查)
      -n:带行号

      • cat 查看显示文件内容
      • more 分页查看文件内容: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
        操作参数:
        进入浏览模式后:
        • f或者空格:下一页
        • enter:一行一行往下翻
        • q:退出
      • less 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
        操作参数:
          - 空格翻页
          - 回车换行
          - pageup:上一页
          - pagedown:下一页
          - 上箭头:向上翻
          - 下箭头:向下翻
          - /搜索词 n向下找
      • head -n 查看文件前n行。缺省-n显示前10行
      • tail-10 查看文件的后10行,Ctrl+C结束

      注意:命令 tail -f 文件 可以动态显示文件末尾内容,对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控文件的变化

    3. in 链接命令
        -s创建软连接
        硬链接和cp -p的区别是硬链接会同步更新
        源文件如果丢失,硬链接依然存在。
        硬链接和源文件的i节点相同。
        硬链接不能夸分区,软连接可以跨分区。
        硬链接不可以链接目录,链接可以
        软连接文件具有的权限是ugo都是rwx

    4. rm -rf 文件 删除文件(删)

      同目录删除:熟记 rm -rf 文件 即可

    5.2、vim文件操作命令

    vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。

    在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:

    vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)

    1. i,a: 命令模式–>编辑模式
    2. ecs: 编辑模式–>命令模式(底行模式)
    3. 命令模式(底行模式下):
      • q!: 强制退出
      • q: 退出
      • wq: 保存并退出 (wq以及wq!,则不管有没有修改,都会强制更新修改时间,有时没修改的东西会让人误以为改了)
      • wq!: 保存并强制退出
      • x: 保存并退出(个人推荐使用,:x在由修改操作时会保存并退出,更新修改时间)
    4. set nu: 显示行号 set nonu: 取消行号
    5. 翻页查看:
      • 上一页:page up
      • 下一页: page down
    6. 跳转到指定的行:
      • gg: 跳转到第一行
      • G: 跳转到最后一行
      • 100G: 跳转到指定行,如100G就是第100行,nG:第n行
    7. /要查找的内容: 查找
    8. yy: 复制当前行
    9. p: 粘贴到当前所在行的下一行
      • 粘贴一次就输入一个p
      • 多次就多个p,如10p就粘贴10次
    10. 查找并替换:
      方式一:开始行号,结束行号s/查找的单词/替换的单词
      如:1,3s/f/XXX: 替换1到3行的f为XXX
      1,$s/f/YYY: 替换1到所有行的f为YYY
      方式二:gc方式
      %s/aaa/bbb/gc 意思就是检索所有行,挨个询问替换aaa为bbb,手动判断y是替换,n是不替换,a是替换所有,q是退出。
      • 参数:
        y - yes 替换
        n - no 不替换
        a - all 替换所有
        q - quit 退出替换
        l - last 最后一个,并把光标移动到行首
        ^E 向下滚屏
        ^Y 向上滚屏
    11. u: 撤销操作
    12. **dd:**删除当前行

    6、用户、组管理命令

    6.1、用户、组操作(权限)

    1. 查看功能命令
      • 查看个人信息
        • whoami: 查看当前登录的用户
        • who: 查看当前的账户 显示的格式为: 登录用户名 登录终端(tty:本地登录 pts:远程终端) 登录时间 ip地址
        • w: 查看更详细的用户登录信息。
        • groups: 查看当前用户所在的组
        • id: 查看当前登录的用户的uid和groupid
      • 查看系统信息
        • vim /etc/passwd: 查看所有的用户列表
        • vim/etc/group: 查看所有的组列表
    2. 用户的切换
      • su [用户名]
        比如:su zhangsan
      • su:默认切换到root
    3. 创建用户
      • useradd 用户名:新建一个用户,一个同名的组,/home/同名的文件夹(uid,gid自增)
      • useradd -u 用户id 用户名
      • useradd -b /路径 用户名
      • useradd -g 用户组 用户名: 新建用户,放到指定的用户组中
    4. 修改密码
      passwd 用户名
    5. 删除用户
      • userdel lisi: 仅删除用户
      • userdel -r Wangwu: 删除用户以及目录(-r将关联的文件一并删除)
      • userdel -rf wangwu: 删除登录用户以及目录:(-f强制)
    6. 新建用户组
      • groupadd 组名
      • groupadd -g 组id 组名
    7. 修改用户名、组
      • usermod -l 新的登录名 old 登录名: 修改登录名
      • usermod -g 新组名 登录名: 修改用户所在的组

    6.2、用户、组小结

    6.2.1、Linux 用户管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

    用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

    Linux用户管理相关命令:

    • useradd 选项 用户名:添加用户账号
    • userdel 选项 用户名:删除用户帐号
    • usermod 选项 用户名:修改帐号
    • passwd 用户名:更改或创建用户的密码
    • passwd -S 用户名 :显示用户账号密码信息
    • passwd -d 用户名: 清除用户密码

    useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

    passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

    6.2.2、Linux系统用户组的管理

    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

    用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

    Linux系统用户组的管理相关命令:

    • groupadd 选项 用户组 :增加一个新的用户组
    • groupdel 用户组:要删除一个已有的用户组
    • groupmod 选项 用户组 : 修改用户组的属性

    7、权限命令

    7.1、理解

    操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -lll 命令我们可以查看某个目录下的文件或目录的权限

    示例:在随意某个目录下 ls -l 或 *ll

    在这里插入图片描述
    第一列的内容的信息解释如下:
    在这里插入图片描述

    下面将详细讲解文件的类型、Linux中权限以及文件有所有者、所在组、其它组具体是什么?

    文件的类型:

    • d: 代表目录
    • -: 代表文件
    • l: 代表软链接(可以认为是window中的快捷方式)

    Linux中权限分为以下几种:

    • r:代表权限是可读,r也可以用数字4表示
    • w:代表权限是可写,w也可以用数字2表示
    • x:代表权限是可执行,x也可以用数字1表示

    文件和目录权限的区别:

    对文件和目录而言,读写执行表示不同的意义。

    对于文件:

    权限名称可执行操作
    r可以使用cat查看文件的内容
    w可以修改文件的内容
    x可以将其运行为二进制文件

    对于目录:

    权限名称可执行操作
    r可以查看目录下列表
    w可以创建和删除目录下文件
    x可以使用cd进入目录

    需要注意的是超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。
    在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。

    • 所有者(user(owner) u)

      一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。

    • 文件所在组(group g)

      当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组 用ls ‐ahl命令可以看到文件的所有组 也可以使用chgrp 组名 文件名来修改文件所在的组。

    • 其它组(other o)

      除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

    我们再来看看如何修改文件/目录的权限。

    7.2、chmod

    chmod: 修改文件/目录的权限的命令

    示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
    其他用户只有读的权限

    chmod u=rwx,g=rw,o=r aaa.txt

    上述示例还可以使用数字表示:

    chmod 764 aaa.txt

    综合实例:

    • chmod u+x a.txt
    • chmod g+w,o-r a.txt //同时做多个权限的修改
    • chmod g=rwx a.txt
    • chmod 640 a.txt
    • chmod -R 777 testdir //把目录和下面所有文件的权限
    • chmod u-x,g-r,o+x test 只修改当前文件夹的权限,子文件不变
    • chmod -R u-x,g-r,o+x test 递归修改文件夹的权限

    7.3、chown

    chwon: 更改文件所有者,只有root可以更改.
    修改拥有者:拥有组–》chown (change owner)
    语法:
    chown -R 拥有者:拥有组 文件夹
    chown root a.txt //把a.txt更改为root所有

    【问题】如果普通用户,出现了对文件没有访问权限,如何解决?

    • 修改文件的权限:chmod
    • 修改文件的拥有者:chown

    7.4、chgrp

    chgrp: 更改所属组

    chgrp admin biubiubiu //把biubiubiu的所属组更改为admin

    7.5、umask -S

    umask -S查看创建文件的缺省权限,即默认权限

    umask 023: 修改文件的缺省权限为777-023=754。即-rwxr-xr–

    7.6、如何将普通用户hadoopenv升级为超级管理员?

    /etc/sudoers

    1. 先修改该文件的权限
      chmod u+w /etc/sudoers
    2. 然后添加一行(不需要密码了)
      hadoopenv ALL=(ALL)NOPASSWD:ALL
    3. 然后hadoopenv就穿上了黄马褂,可以用sudo 来执行root的权限
      sudo mkdir xx
    4. 修改完后,再修改回来(记得再把门关上)
      chmod u-w /etc/sudoers

    补充一个比较常用的东西:

    假如我们装了一个zookeeper,我们每次开机到要求其自动启动该怎么办?

    1. 新建一个脚本zookeeper
    2. 为新建的脚本zookeeper添加可执行权限,命令是:chmod +x zookeeper
    3. 把zookeeper这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper
    4. 如果想看看是否添加成功,命令是:chkconfig --list

    8、压缩解压命令

    8.1、打包并压缩文件

    Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。

    而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
    命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
    其中:

    z:调用gzip压缩命令进行压缩
    c:打包文件
    v:显示运行过程
    f:指定文件名

    比如:假如test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

    8.2、解压压缩包

    命令:tar [-xvf] 压缩文件
    其中:x:代表解压

    示例:

    1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz

    2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr(- C代表指定解压的位置)

    8.3、按格式分类

    • .gz格式

      • 压缩:gzip 文件名 只能压缩文件不能压缩目录,压缩完源文件也不见了
      • 解压缩:gunzip/gzip -d 压缩包名称
    • tar:

      • tar -zcvf 压缩后文件名 打包的目录 :生成.tar.gz文件 注:这个命令先用tar归档,然后把归档的包压缩成.gz
      • tar -zxvf 要解压的文件名 :解压缩.tar.bz2的文件
      • tar -jcvf 压缩后的文件名 打包的目录:生成.tar.bz2 注:这个命令先用tar归档,然后把归档的包压缩成.bz2
      • tar -jxvf 要解压的文件名 :解压.tar.bz2的文件
    • zip:

      • zip -r 压缩生成的文件名 要压缩的目录
      • zip 压缩生成的文件名 要压缩的文件
    • unzip:

      • unzip 要解压缩的文件
    • bzip2:

      • bzip2 -k 要压缩的文件名 -k选项:保留源文件
      • bunzip2 -k 要解压的文件名 -k选项:保留压缩包

    9、文件搜索命令

    9.1、find

    find:搜索制定范围内的文件
    find [搜索范围] [匹配条件]
    [匹配条件] 参数:

    • -name 按文件名搜索

    • -iname 根据文件名查找,不区分大小写

    • -size +n大于 -n小于 n等于 这个n是数据块,在Linux中一个数据块是512字节大小

    • -user 根据所有者查找

    • -group 根据所属组查找

    • 根据文件属性查找:

      • -amin 访问时间 access
      • -cmin 根据文件属性被修改的时间 change
      • -mmin 根据文件内容被修改的时间 modify
          例: find /etc -cmin -5 :查找/etc目录下五分钟内被修改过属性的文件和目录
    • -a 两个条件同时满足
          find /etc -size +10 -a -size -50

    • -o 两个条件满足一个即可

    • -type
          f 文件 d 目录 l软连接文件

    • -inum 根据i节点查找

    • 对找到的结果进行操作
          -exec 或者 -ok 命令 {} ;
          例如:
            find /etc -name init* -exec ls -l {} ; 对找到的文件名按列表查看

    例子:

    • find /etc -name init :搜索目录/etc下面所有的init文件,精确匹配,包括子目录中的init文件
    • find / -size +204800 搜索大于100M的文件

    9.2、locate

    locate:
    1、查找速度非常快,因为它维护了一个文件库。
    2、缺点就是新建立的文件没有很快收录到文件库

    • locate 文件名
    • updatedb 更新locate的文件资料库 文件资料库不收录/tmp下的文件
    • -i 不区分大小写

    示例:

    # 更新数据,新建文件后,需要使用此命令
    updatedb
    # 在系统上查找所有包含vimrc的文件
    locate vimrc
    # 使用正则表达式
    locate --regexp vim*
    

    9.3、which

    which :查找命令的目录以及别名
    which 命令

    [root@biubiubiu /]# which vi
    alias vi='vim'
    	/usr/bin/vim
    

    9.4、whereis

    whereis :搜索命令所在目录及帮助文档路径
    whereis 命令

    [root@biubiubiu /]# whereis vi
    vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1p/vi.1p.gz
    
    

    9.5、grep

    grep:在文件中搜寻字符串匹配的行并输出,多个文件以空格隔开
    参数:

    • -i不区分大小写
    • -v排除指定字符串
    • -E 以正则表达式的方式搜索
    • -F 以普通文本的方式搜索
    • -n 显示搜索到的内容在文件中的行号。

    示例:

    #多文件查询
    grep leo logs.log logs_back.log
    
    #查找即包含leo又包含li的行
    grep leo logs.log | grep li
    
    #查找匹配leo或者匹配li的行
    grep leo | li logs.log
    
    #显示匹配行前2行
    grep leo logs.log -A2
    
    #显示匹配行后2行
    grep leo logs.log -B2
    
    #显示匹配行前后2行
    grep leo logs.log -C2
    
    #不区分大小写
    grep -i leo logs.log
    
    #使用正则表达式
    grep -e '[a-z]\{5\}' logs.log
    
    #查找不包含leo的行
    grep -v leo logs.log
    
    #统计包含leo的行数
    grep -c leo logs.log
    
    #遍历当前目录及所有子目录查找匹配leo的行
    grep -r leo .
    
    #在当前目录及所有子目录查找所有java文件中查找leo
    grep -r leo . --include "*.java"
    
    #查找并输出到指定文件
    grep leo logs.log > result.log
    
    #查找以leo开头的行
    grep ^leo logs.log
    
    #查找以leo结尾的行
    grep leo$ logs.log
    
    #查找空行
    grep ^$ logs.log
    

    10、帮助命令

    10.1、man

    man:查看命令或者配置文件的帮助信息
      man 命令/配置文件
      在手册里面,可以输入/要查找的str
      man ls
      在这里插入图片描述
      man services
      man fstab //直接输入配置文件的名字,而不需要使用绝对路径 重点查看name选项和配置文件的格式。
      如果一个命令即使命令又是配置文件,那么可以使用一个序号进行区分,比如:
      man 1 passwd 查看命令passwd的帮助
      man 5 passwd 查看配置文件passwd的帮助

    10.2、whatis

    whatis 命令:得到命令的简要信息

    [root@biubiubiu /]# whatis ls
    ls (1)               - list directory contents
    ls (1p)              - list directory contents
    [root@biubiubiu /]# whatis id
    id (1)               - print real and effective user and group IDs
    id (1p)              - return user identity
    [root@biubiubiu /]# 
    

    10.3、apropos

    apropos 配置文件名:查看配置文件的简短信息

    [root@biubiubiu etc]# apropos yum.conf
    yum-config-manager (1) - manage yum configuration options and yum repositories
    yum.conf (5)         - Configuration file for yum(8).
    [root@biubiubiu etc]#
    

    10.4、help

    help 命令:

    • 查看shell内置命令的帮助信息。
    • shell内置命令是没有命令路径。
    • 不能使用man查看帮助。

    help cd
    在这里插入图片描述
    ls --help
    在这里插入图片描述

    11、网络命令

    11.1、write

    write:给在线用户发送信息,用户不在线不行。以Ctrl+D保存

    write 用户名

    11.2、wall

    wall:给所有用户名发送信息

    wall 要发送的信息

    11.3、ping

    ping:测试网络连通性
    ping ip地址
    参数:
      -c 要ping的次数

    11.4、ifconfig

    • ifconfig: 直接回车查看当前网卡信息

    • ifconfig 网卡名 ip地址: 临时修改网络ip
      示例:
          ifconfig th0:0 192.168.1.100 netmask 255.255.255.0
            给th0这个网卡新添加一个ip
          ifconfig eth0:0 down
          ifconfig eth0:0 up

    • ifdown th0: 禁用th0这块网卡

    • ifup th0: 开启th0这块网卡

    11.5、mail

    mail:邮件命令
    mail 要发送的用户名
    mail 直接回车 查看命令
    参数:
        help :查看支持的命令格式
        输入序列号:查看邮件详细内容
        h: 回到邮件列表
        d 序列号:删除序列号对应的邮件

    11.6、nslookup

    nslookup:查看网站ip地址

    nslookup www.baidu.com 查看百度的ip地址

    11.7、netstat

    netstat:显示网络相关信息
    参数:

    • -t :tcp协议
    • -u :udp协议
    • -l:监听
    • -r:路由
    • -n:显示ip地址和端口号

    netstat -tlun:查看本机监听的端口
    netstat -an:查看所有的监听信息
    netstat -rn :查看路由表,即网管

    11.8、wget

    wget 文件地址 下载文件
    参数:

    • -h:显示帮助说明;
    • -b:后台下载;
    • -c:继续上次终端的下载任务;
    • -r:递归下载文件

    实例:

    1. wget http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz 下载单个文件
    2. wget -i fileList 下载多个文件(fileList里需要有多个url)
    3. wget -c http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz 断点下载
    4. wget -b http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz 后台下载
    5. wget --limit-rate=400k http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz 限速400k下载

    11.9、service network restart

    service network restart:重启网络服务。

    11.9.1、telnet

    telnet 域名或ip
      远程管理与端口探测
      如: telnet 192.168.2.3:80
        探测192.168.2.3是否开启了80端口

    11.9.2、mount

    mount:挂载命令
      mount -t iso9660 /dev/sr0 /mnt/cdrom :把sr0挂载到cdrom

    12、关机重启命令

    在这里插入图片描述

    12.1、shutdown

    shutdown:这个关机命令更安全一些,不推荐使用其他关机命令。
      -h:关机
    shutdown -h now 立刻关机
    shutdown -h 20:30 八点半关机
      -r:重启
    shutdown -r now 相当于reboot,立刻重启
      -c:取消上次的关机命令
    shutdown -c: 取消

    12.2、reboot

    reboot 等于 shutdown -r now 立刻重启

    12.3、logout

    logout:退出当前用户,返回到登录界面

    13、常用快捷键

    1. ctrl+c:强制终止当前命令
    2. ctrl+l:清屏
    3. ctrl+a:光标移动到命令行首
    4. ctrl+e:光标移动到命令行尾
    5. ctrl+u:从光标所在位置删除到行首
    6. ctrl+z:把命令放入后台
    7. ctrl+r:在历史命令中搜索

    14、yum命令

    1. yum list :获取服务器上所有可用的软件的列表
    2. yum search 关键字:搜索服务器上所有和关键字相关的包
    3. yum -y install 包名:安装软件包
      参数:
      • install:安装
      • -y:自动回答yes
    4. yum -y update 包名:升级软件包
      参数:
      • update:升级
      • -y:自动回答yes
      • 如果没有包名,就会升级所有的软件包,包括Linux内核。慎用
    5. yum -y remove 包名:卸载软件包
      参数:
      • remove:卸载
      • -y:自动回答yes
      • 注:yum会自动卸载依赖包,而很有可能这个依赖包也被别的包依赖,所以很危险,慎用。
    6. yum grouplist:列出所有可用的软件组列表
    7. yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来
      注:如果查询出来的软件组名中间有空格,要使用""引起来。
    8. yum groupremove 软件组名:卸载指定软件组

    五、其它杂项

    15、ps和kill

    ps 静态查看系统进程,系统默认安装
    ps -aux | grep 文件名 或 ps -ef | grep 文件名 根据文件名过滤进程(最常配合kill使用)
    ps -u 用户名 根据用户过滤进程

    lsof -Pti :端口号 通过端口号获得进程pid

    kill -9 pid: 杀死指定pid的进程,强行杀死。

    16、top

    top: 动态查看系统的状态

    17、history

    history 查看历史命令

    执行历史命令:
      !! 执行上一条命令
      !n 执行历史命令的中第n条
      !-n 执行导数第n条
      !string 执行以string开头的历史命令行
      !?string? 执行包含string的历史命令行

    18、alias和unlias

    18.1、alias:给命令起别名

    alias 命令='别名'
    示例: alias vi='vim'
    alias -p :查看已存在的别名

    但是仅仅是这样改的话,当系统重启之后就会失效。
    想要永久生效,需要修改根目录下.bashrc配置文件

    [root@biubiubiu ~]# vi .bashrc 
    

    在这里插入图片描述
    配置完成后需要使配置文件生效

    [root@biubiubiu ~]# source .bashrc 
    

    18.2、unlias :取消别名

    unlias name
    示例:unlias vi

    如果是之前修改了配置文件,需要再次去修改删掉。

    19、cal

    cal:查看某一年的日历,可以是1-9999中的任意一年
     示例:
      cal 2020 2020年日历

    20、网络配置

    20.1、三个网络配置文件

     /etc/sysconfig/network-scripts/ifcfg-网卡
     /etc/sysconfig/network
     /etc/resolv.conf # dns
    

    20.2、配置ip

    在这里插入图片描述

    20.3、远程执行命令

    ssh root@192.168.8.15

    21、CentOS环境变量配置

    CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系。下面以PATH变量为例。

    1. 修改/etc/profile文件,将影响全局,所有用户
      /etc/profile在系统启动后第一个用户登录时运行。
      在/etc/profile文件中添加
      java export PATH=/someapplication/bin:$PATH
      要使修改生效,可以重启系统,或者执行
      java source /etc/profile echo $PATH

    2. 修改/etc/environment,将影响全局
      /etc/environment文件与/etc/profile文件的区别是:/etc/environment设置的是系统的环境,而/etc/profile设置的是所有用户的环境,即/etc/environment与用户无关,在系统启动时运行。
      在/etc/environment文件中添加
      java PATH=/someapplication/bin:$PATH
      CentOS和大多Linux系统使用$访问环境变量,环境变量PATH中使用冒号:分隔。而Windows中使用两个%访问环境变量,PATH使用分号;分隔,例如:

      java set PATH=E:\someapplication\bin;%PATH%

    3. 修改~/.bash_profile(首选),将影响当前用户。在~/.bash_profile文件中添加

      java export PATH=/someapplication/bin:$PATH

    4. 修改/etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc),影响所有用户使用的bash shell。
      /etc/bashrc顾名思义是为初始化bash shell而生,在bash shell打开时运行。
      这里bash shell有不同的类别:登录shell和非登陆shell,登录shell需要输入用户密码,例如ssh登录或者su - 命令提权都会启动login shell模式。非登陆shell不会执行任何profiel文件;交互shell和非交互shell,提供命令提示符等待用户输入命令的是交互shell模式,直接运行脚本文件是非交互shell模式,一般情况下非交互shell模式不执行任何bashrc文件。根据以上情况,选择是否修改/etc/bashrc。

    5. 修改~/.bashrc,影响当前用户使用的bash shell。

    6. 在终端中执行以下命令,只影响当前终端。
      java export PATH=/someapplication/bin:$PATH

    22、防火墙firewall

    1、开放端口

    firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口

    firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口

    命令含义:
    
    –zone #作用域
    
    –add-port=80/tcp #添加端口,格式为:端口/通讯协议
    
    –permanent #永久生效,没有此参数重启后失效
    

    firewall-cmd --reload # 配置立即生效

    2、查看防火墙所有开放的端口

    firewall-cmd --list-ports

    firewall-cmd --zone=public --list-ports

    3.、关闭防火墙

    如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

    systemctl stop firewalld.service

    #重启firewall 
    firewall-cmd --reload 
    #停止firewall 
    systemctl stop firewalld.service 
    #禁止firewall开机启动 
    systemctl disable firewalld.service 
    
    	查看防火墙状态:firewall-cmd --state
    	关闭防火墙: systemctl stop firewalld.service
    	禁止防火墙开机启动:systemctl disable firewalld.service
    

    4、查看防火墙状态

    firewall-cmd --state

    5、查看监听的端口

    netstat -lnpt

    img

    PS:centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

    6、检查端口被哪个进程占用

    netstat -lnpt |grep 5672

    img

    7、查看进程的详细信息

    ps 6832

    img

    8、中止进程

    kill -9 6832

    23、IO Stream

    标准流:
    stdin:标准输入,编号为0,用于程序从键盘等设备接收数据。输入流被EOF(文件结尾)终止
    stdout:标准输出,编号1,用于程序向终端等设备写入数据
    stderr:标准错误,编号2,用于向终端等设备显示错误消息
    重定向I/O Stream到文件:
    
    选项说明模式
    <重定向stdin
    >重定向stdout覆盖
    >>重定向stdout追加
    2>重定向stderr覆盖
    2>>重定向stderr追加
    案例:
    [root@os1 test_data]# cat startxx.sh 1>>output.log 2>>output_err.log
    

    24、date

    date --help
    date +%Y-%m-%d #2017-12-23
    date +%H:%M:%S #13:29:03
    date +%I:%M:%S #12小时时间显示
    date +%c #locale的完整日期和时间
    date -u #UTC日期和时间
    date -R #RFC-2822格式
    date -Iseconds #ISO-8601格式
    date -s “2019-07-09 16:12:00“ #设置时间
    

    25、yum安装

    一、下载yum安装包并解压

    wget http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz
    tar xvf yum-3.4.3.tar.gz
    

    二、进入yum-3.4.3文件夹中进行安装,执行安装指令

    cd yum-3.4.3
    sudo apt install yum
    

    三、更新到新版本

    yum check-update
    yum -y update
    yum clean all
    

    请多多支持博主,点赞关注一起进步哦~

    展开全文
  • 【数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    ⑤4NF 关系模式R∈1NF,如果对于R的每个非平凡多值依赖X->->Y(Y∉X),X都含有码,则称R∈4NF 3,数据库平台 数据库管理系统(DBMS):是系统软件,是数据库系统的核心。 常见数据库管理系统有:Access、mysql、...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    前端面试题汇总 ... 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 21 ... 21 Quirks模式是什么?它和Standards模式有什么区别 21 div+css的布局较table布局有什么优点?...img的alt与title有何异同?...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 ...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    (4)GTS:阿里云的全局事务服务,对应的开源版本是Fescar,Fescar基于两段式提交进行改良,剥离了分布式事务方案对数据库在协议支持上的要求,使用Fescar的前提是分支事务中涉及的资源必须支持ACID事务的关系型...
  • 分布式服务框架

    千次阅读 2016-01-29 10:42:11
    函数的值域空间为0~232-1(Hash 值是一个32 位的无符号整型),整个空间按照顺时针方向 进行组织,然后对相应的服务器节点进行Hash,将它们映射到Hash 环上,假设有4 台服务器, 分别为node1、node2、node3、...
  • 爬虫-大学教务系统选修课抢课

    万次阅读 多人点赞 2019-04-20 22:18:44
    验证码再加上智能识别或者运用打码平台进行识别,那样我们就可以做一个完整的抢课 程序。还有最后附上完整代码,代码并没有优化。 import requests from bs4 import BeautifulSoup yzm_url = ...
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    Name代表的是张量的名字,也是张量的唯一标识符,我们可以在每个op上添加name属性来对节点进行命名,Name的值表示的是该张量来自于第几个输出结果(编号从0开始),上例中的“mul_3:0”说明是第一个结果的输出。...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
     完全面向对象:不象C++语言,支持面向过程程序设计,又支持面向对象程序设计,C#语言是完全面向对象的,在C#中不再存在全局函数、全局变量,所有的函数、变量和常量都必须定义在类中,避免了命名冲突。...
  • ERP

    千次阅读 2018-11-14 22:16:03
    当然,当时的Oracle尚名不见经传,由Oracle开发的商用关系型数据库技术年开始服务于中国用户。1991年7月,Oracle在北京建立独资公司。 Oracle数据库,使积聚了众多领先性的数据库系统,在集群技术、高可用性、...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...
  • 文章目录1.MQTT简介2.MQTT接入说明2.1 Step1 —— 创建产品,选择接入协议2.2 Step2 —— 创建设备,记录设备ID等信息2.3 Step3 —— 建立设备与平台间的协议连接2.4 Step4 —— 数据流创建,数据点上传2.5 Step5 ...
  • 史上最全面Java面试汇总(面试题+答案)

    万次阅读 多人点赞 2018-07-06 14:09:25
    采用这种策略,把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。所有进程对资源的请求必须严格按资源序号递增的顺序提出。进程占用了小号资源,才能申请大号资源,就不会产生环路,从而预防...
  • Saas系统架构的思考,多租户Saas架构设计分析

    万次阅读 多人点赞 2019-06-14 13:39:35
    SSO 9 统一注册 提供统一的用户注册页面 部分资料整理自: http://www.ruanally.com ​​​​​​​http://qk.gam7.com ​​​​​​​​​​​​​​http://www.ruanbe.com  
  • linux命令大全

    千次阅读 2015-12-24 08:44:14
    Linux命令大全完整版 目 录 目 录... I 1. linux系统管理命令... 1 adduser1 chfn(change finger information)1 chsh(change shell)1 date. ...gitps(gnu interactive tools proce
  • 什么是RESTful API?

    万次阅读 多人点赞 2018-12-25 16:01:42
    一般一个URL也是一个URI,比如上面的网址,URL可以看做是URI的子集,在图书领域中一本书都有唯一的一个isbn编号,这个编号其实也是URI。     RESTful API就是REST风格的API,rest是一种架构风格,跟编程...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    硬盘分区规划 (1)最简单的分区规划 swap分区:交换分区,实现虚拟内存,建议大小是物理内存的1~2倍; /boot分区:用来存放与Linux系统启动有关的程序,比如引导装载程序等,最少200MB; /分区:建议大小至少在...
  • 基于物品的协同过滤算法实现图书推荐系统

    万次阅读 多人点赞 2019-09-14 21:20:24
    相应地,为满足用户需求,电商平台需要推荐系统来帮助用户找到自己可能需要的书籍。本文旨在利用基于物品的协同过滤算法,来实现一个图书推荐系统。 本文首先介绍了推荐系统的发展历史,及目前常用的几种推荐算法的...
  • 准备环境 准备一台windows 2008 R2(或者win7)及以上的64位windows操作系统,最低配置要求: * CPU: 双核; * 内存:4GB;...解压 EasyGB28181Cloud 文件夹下的所有... 软件服务配置 Redis配置 Red...
  • 业内在用户统一身份认证及授权管理领域,主要关注 4 个方面:集中账号...后来发展了 IAM(Identity and Access Management,身份识别与访问管理)的相关技术,在云计算等领域应用广泛。整体来说,不管是 4A 还是...
  • 简介:Skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。框架核心:根据作者的...模块被称为服务(Service),服务间可以自由发送消息。 每个模块可以向 Skynet 框架注册一个 callback 函数,用
  • 数据即服务

    千次阅读 2011-07-12 23:44:09
    集成类项目的几个内容。通常我们在项目中可以达到第三步...编号工作内容描述1应用接口集成包括接口数据标准化,使用集成平台来互联应用系统2公共数据服务确定数据的主从关系,集中分散的数据,关联分散的数据3公共功能
  • EasyGBS - GB28181 国标方案安装使用文档 ...SIP 中心信令服务, 单节点, 自带一个 Redis Server, 随 EasySIPCMS 自启动, 不需要手动运行 EasySIPSMS SIP 流媒体服务, 根据需要可部署多套 端口使用 TCP 端口...
  • 大数据平台001-数据埋点

    千次阅读 2018-11-27 17:53:14
    一、可以通过第三方平台来完成,比如诸葛io、growing io、神策等 二、自埋点之全自动化埋点 三、自埋点之手动埋点 四、自埋点之半自动化埋点 不建议第三方平台,由于要做到通用,他们支持的功能是有限的并且不提供无...
  • 分布式微服务架构体系详解

    万次阅读 多人点赞 2018-07-10 23:30:02
    SOA 强调用统一的协议进行服务间的通信,服务间运行在彼此独立的硬件平台但是需通过统一的协议接口相互协作,也即将应用系统服务化。举个易懂的例子,单体服务如果相当于一个快餐店,所有的服务员职责都是一样的,又...
  • 海外直播服务器搭建

    千次阅读 2020-04-15 22:38:45
    背景: ... 目前开源的直播服务程序有:SRS,Nginx-rtmp;如果是做开发的同学应该有所了解,SRS是基于C++写的,Nginx-rtmp模块是Ngxin的第三方C模块。一开始我是直接部署SRS/Ngxin-rtmp 到我的韩国的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,855
精华内容 16,342
关键字:

平台即服务编号