【JavaEE】浅识进程
一、什么是进程
1.1 操作系统
学习进程之前首先要了解我们的操作系统(OS),我们的操作系统实际上也是一款软件,属于系统软件的范畴,操作系统早期采用命令提示框与用户交互,我们启动某个软件,打开某个文件夹等等,都是需要输入命令来进行操作的 典型的就是 Linux 操作系统,也是职场中常用的一款操作系统,我们现在常用的 Windows 系列的操作系统,是一款图形化操作界面的操作系统,用户使用鼠标点一点,划一划就执行对应的操作,所以对于大众来讲是一款好用的操作系统,但是对应的存储空间(内存)的占用是远远大于命令提示的操作系统。
Windows 启动应用是双击应用的快捷方式图标,以qq 为例:
我们桌面的快捷方式可以理解为是 .exe 文件的“超链接”,鼠标选中快捷方式,右击,选择属性,打开文件所在位置,我们就来到了当初我们安装qq 应用时目录,链接对应了一个 .exe 文件的,我们直接双击 .exe 文件也是可以直接启动qq 的。 那么 . exe 是什么文件呢。
EXE可执行文件,就是在 WINDOWS环境下,你双击直接就能打开的文件,EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE) 文件格式的文件,它可以加载到内存中,并由操作系统加载程序执行,是可在操作系统存储空间中浮动定位的可执行程序。
操作系统有什么用呢?我觉得是:控制计算机各部件协调一致的运行,
在硬件层面需要管理好各种硬件设备,比如说,键盘,鼠标,硬盘,当时适配这方面主要是靠主板支持,操作系统能够适配支持并管理硬件。
在软件层次,操作系统需要给软件提供稳定的运行环境,当然软件在这个方面是需要去适配操作系统的,如果操作系统不支持你这软件运行,那也是白给。
可以理解为:操作系统是软件和硬件之间的桥梁,是计算机的灵魂。
有了操作系统之后呢,软件就可以通过操作系统来间接的操作某个硬件设备。
1.2 进程的概念 (process)
上面提到我们 windows 中支持的一种 .exe 的运行文件,当我们双击启动这个文件时,这个程序就跑起来了,那么在系统中就会形成一个进程。
不知道有没有学习过C语言的朋友,一个 ".c" 文件到 ".exe "文件需要经过:预编译、编译、汇编、链接,中间会涉及到3个文件。
在C语言中,源程序(.c文件)经过编译程序编译之后,会生成一个后缀为“.obj”的二进制文件(称为目标文件);最后还要由称为“连接程序”(Link)的软件,把此“.obj”文件与c语言提供的各种库函数连接在一起,生成一个后缀“.exe”的可执行文件。”
.exe 文件也可以理解为里面包含了许多二进制的指令,可以在 Windows 系统上运行,. exe 文件的启动加载在内存中运行后,其中指令的处理是交给 CUP (中央处理器)来处理的。
对于 Java 代码来说,我们会创建 “.java”文件,java 文件经过我们的JDK (javac命令)编译后,会生成 “.class”文件,也叫字节码文件,里面也是二进制指令,只是 .class 文件需要在 JVM(java虚拟机) 中才可以运行,这也是 java 只要生成了.class 文件, 就可以到处运行,只要用户安装了 JDK 即可
无论是哪一种语言,计算机之所以可以运行的最主要的原因是,它最终会生成 二进制文件,然后被 CPU 处理。
上面说到当我们运行某个应用程序的时候,就相当于生成了一个进程,当然每生成一个进程,操作系统就会为其分配内存空间,由CPU 处理其中的数据,我们可以通过任务管理器来查看 我们电脑目前进程运行的状态。
我们通过任务管理器就可以发现,原来电脑有许多进程在运行呢。
操作系统对进程的管理有两步:
1. 使用一个构架来描述这个进程,(C 语言的结构体,Java 的类),把进程基本信息表示出来。
2. 底层使用一种数据结构来将这些进程组织起来,放在一起,想象链表 每个value 值是一个进程
CPU 就可以遍历这种数据结构,从而达到处理数据的目的。
此时我们对进程是什么东西应该是有了一个大概的理解:
总结:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,可以把进程看做程序的一次运行过程。
进程在运行的是会消耗资源的,比如:运行消耗内存,会涉及到数据的访问——硬盘,数据的处理——CPU等一系列操作
进程是操作系统分配资源的基本单位
1.3 进程的基本属性
上文我们初步认识到了进程个什么东西:进程看做程序的一次运行过程。
现在我们认识进程的几个重要的基本属性:
进程的ID(PID)
每一个进程都有一个非负整型表示的唯一进程ID(PID),好比方我们的身份证一样,每一个人的身份证号是唯一的。
内存指针
看名字大致也能理解是啥意思,就是起一个标识的作用,当前进程在内存的那一部分运行。
文件的描述表
“文件”是硬盘存储数据、整理数据的基本单位,可以看到我们的下载某个软件的安装包在安装的时候会生成一个文件夹进行管理,那么进程在运行的过程当中难免会打开一些文件来访问数据,此时,进程每打开一个文件就会产生一个“文件描述符”(标识被打开的文件,文件相关信息),然后创建对应的一个顺序结构,用于存放这些文件标识符,那么这个顺序结构就被我们称之为“文件描述符表”,我们在对文件的读写操作的时候就会使用到“文件描述符“的信息。
进程的调度
接下来这组属性是进程学习中非常重要的一个知识点。
1.4进程的调度
在软件层次,操作系统给软件提供的稳定的运行环境,进程是操作系统分配资源的基本单位,当一个进程运行时,操作系统会为其开辟内存空间,提供硬盘上的访问权限,以及CPU ……
CPU (中央处理器) 主要是负责 处理指令、执行操作、控制时间、处理数据四大作用, 咱们的程序能运行,靠的就是CPU , 每个程序就相当于一组“二进制指令”的集合,.exe 文件, . class 文件都是二进制文件。
我们先来简单的了解一下CPU :
CPU 的字长:
字长是指CPU在同一单位时间内—次能够处理的二进制位数。CPU的字长主要根据运算器和寄存器的位数确定。比如,一个CPU有32位的寄存器,并且一次处理32个二进制位,字长值越大,一次可处理的数据二进制位数越多,运算能力就越强。目前CPU大多是32位或64位。
CPU 的主频:
CPU的主频是指CPU的时钟频率,它是决定执行指令速度的计时器,通常用MHz(兆赫兹)和GHz(千兆赫兹)来度量。1MHz相当于1秒内有1百万个时钟周期,1GHz相当于1秒内有10亿个时钟周期(10亿条指令)。
CPU 的核心数:
常见的CPU核数有双核、四核、六核、八核、十二核等。在内核频率、缓存大小等条件相同的情况下,CPU内核数量越多,CPU的整体性能越强。比如3.8GHz的6核CPU就比3.8GHz的双核CPU性能要强。有些CPU的单核就非常强大(inter 系列的CPU 的每个单核心是比较强大的,即使核心线程数量不是很多,也不比普通的多核心的CPU 差),对于 AMD 系列的 CPU 来讲,多核心多进程在这方面是可以的(在同等价格上)。
我们也经常听说 CPU 是几核 多少线程, 例如 :8核 16 线程,每个核心就相当于有一个人干活,八个核心就是八个人干活, 16 线程啥意思嘞,一个CPU 核心,可以同时、并行的运行两个线程。就是说一个CPU核心一个人顶俩人干活(一个 CPU 的物理核心内部有两个逻辑的处理单元), 8 核 16线程, 8个人可以同时干16 个人的活,我启动qq,启动微信,启动 qq 音乐,腾讯视频,我一口气启动18 款应用, 8核16 线程的CPU 可以运行吧。
博主电脑的CPU是 4 核 8 线程的,基准速度就是CPU的主频率 3.11 GHz (一秒钟 31亿条指令),但是我们可以看到,现在博主电脑有220 个进程同时在运行,我的 CPU 只有区区的四核,那岂不是妥妥的狼多肉少。
1.4.1 CPU 处理进程的方式
并行:
例如:在同一时刻,两个核心,同时执行两个进程,此时我们可以认为这两个进程是并行执行的。
博主的CUP 4 核 8 线程,能同时执行 8 个进程,这些进程每个都有一个独立的核心处理数据,这就是并行处理的方式。
并发:
一个核心,先执行 进程1,执行一定的时间后,再执行进程2,执行一定的时间后,再执行进程3……最后又执行进程1,如此以往,只要核心切换的速度足够快,那么这些进程之间就相当于“同时”执行的,我们讲这种操作成称之为“并发"。
所以即使博主 CPU 只有8 个逻辑处理核心,采用并发的方式也是可以“同时”执行 200+ 的进程的,CPU 处理数据的速度是非常快的,所以进程之间来回切换人眼是无法感受到的,宏观上是同时执行的。
对于多进程之间的处理,具体那个 核心并发处理那些进程,是由操作系统分配的,也就是说如果操作系统不支持并发的处理数据,你的CPU 核心数再多也白搭。也不是说系统中不存在 并行操作,我们很多的时候把 “并行” 和 "并发" 统称为并发。
当一个核心并发的处理特别多的任务(比如说:一万个任务)的时候,我们就可以称之为”高并发“。
1.4.2 并发执行的基本属性
上文,讲述了处理 多进程多任务的两种方式,接下来给大家讲讲进程在并发的过程中,涉及到的基本的知识点。
进程的状态
运行态:进程占有处理器正在运行。
就绪态:一个进程已经准备好随时被CPU 执行。
阻塞态:指进程不具备运行条件,暂时无法执行。
通常,一个进程在创建后将处于就绪状态。每个进程在执行过程中,只能是上述三种状态之一。
同时,在一个进程执行过程中,它的状态将会发生改变。引起进程状态转换的具体原因如下:
(1)运行态一一等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预。
(2)等待态一一就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成。
(3)运行态一一就绪态:运行时间片到,或出现有更高优先权进程。
(4)就绪态一一运行态:CPU空闲时被调度选中一个就绪进程执行。
进程的优先级
进程之间的调度时间上的分配不一定是公平的,有的需要优先调度,比如操作系统的进程……
进程的上下文
进程在并发处理的状态下,处理器会循环在各进程之间进行切换处理,上下文就是描述当前进程执行到哪里的(执行到了那条指令)“存档记录”,进程在“暂时" 离开CPU 的时候就会将运行时的中间结果存档,等 CPU 下次再执行该进程的时候,根据“存档记录”恢复到上次执行的状态,然后继续对该进程往后执行。
其中的处理过程会涉及到 CPU 其中的寄存器,CPU 的寄存器会动态的维护操作系统为进程分配的空间包括“存档记录”,当进程离开CPU 的时候,就需要把这些寄存器的值保存在PCB 的上下的字段中,当CPU 下次继续执行该进程的时候,CPU 的寄存器会重新维护我们的进程(把PCB 中的值给恢复到上下文的字段中),所谓的上下文具体指的就是进程运行过程中,CPU 内部的一系列存储器维护的值。
秒懂百科对 PCB 的解释:
为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。
进程的记账信息
为了统计每个进程在 CPU 上执行的时间,可以作为进程调度的参考依据,当某个进程执行的时间相对较长,或者是相对较短,操作系统就可以根据进程的记账信息,对进程做出相应的处理。
进程的组织
操作系统会使用双向链表这样的结构来组织进程
创建一个进程,就是创建一个链表的节点
销毁一个进程就是把链表的节点删除了
遍历进程列表,就是在遍历链表
1.5 内存的分配
每个进制在执行的时候,操作系统会给进程分配内存,用于执行,不同的进程使用的是不同的区域,进程之前互相之间不会干扰。
那么操作系统是怎么保证各进程之间不会相互干扰呢?
操作系统给进程分配的内存空间,是以“虚拟地址空间”的形式进行分配的。
站在这两个进程的角度来讲,他们操作的是页表生成的虚拟地址,进程对内存的访问会受到页表的检查,如果该进程访问的虚拟内存的地址(越界等)不在页表的记录中,页表就无法映射出真实的内存地址,不会去执行操作,也就无法真正的修改真实的内存的值。
这样就避免了进程之间的相互影响,最大的目的就是为了方便校验当前地址是否有效,也提升了操作系统的稳定性。
一个进程无法直接干涉另一个进程的内存数据。
进程具有独立性,每个进程有自己独立的地址空间
1.6 进程的通信
进程具有独立性,但是有些时候进程之间需要进行交互,进程通信是指在进程间传输数据(交换信息)。例如:启动腾讯视频,如果你qq在线,就可以直接点击qq登录,也就不需要再输入账号密码验证了,验证操作已经在 qq 执行过了,就会很方便,检索的信息也是来自qq 提供的账号密码信息。
进程之间的通信就是在进程相互独立的情况下,找一个公共区域,然后进程之间通过这个公共区域进行数据交换。
并发进程之间的相互通信是实现多进程间协作和同步的常用工具.具有很强的实用性,进程通信是操作系统中极为重要的部分。
至此,进程的基本认识博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。
本期收录于博主的专栏——JavaEE,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“JavaEE基础知识”。
下期预告:线程的概念
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
相关文章:
【JavaEE】浅识进程
一、什么是进程1.1 操作系统学习进程之前首先要了解我们的操作系统(OS),我们的操作系统实际上也是一款软件,属于系统软件的范畴,操作系统早期采用命令提示框与用户交互,我们启动某个软件,打开某…...
Java_Spring:1. Spring 概述
目录 1 spring 是什么 2 Spring 的发展历程 3 spring 的优势 4 spring 的体系结构 1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspec…...
使用Maven实现第一个Servlet程序
目录 前言: Maven 什么是Maven 创建Maven项目 Mevan目录介绍 Servlet程序 引入Servlet依赖 创建目录结构 编写代码 打包程序 部署程序 验证程序 idea集成Tomcat 下载Tomcat插件 配置Tomcat的路径 Smart Tomcat工作原理 小结: 前言&#…...
【MySQL】MySQL的优化(一)
目录 查看SQL执行频率 定位低效率执行SQL 定位低效率执行SQL-慢查询日志 定位低效率执行SQL-show processlist 查看SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以查看服务器状态信息。通 过查看状态信息可以查看对当…...
win kubernetes dashbord部署springboot服务
文章目录前言一、新建springboot工程二、制作镜像1.编写dockerfile2.使用阿里云镜像仓库3.使用dashbord部署服务总结前言 使用win版docker desktop安装的k8s,kubenetes dashbord。 一、新建springboot工程 就是简单一个接口。没什么说的 二、制作镜像 1.编写dock…...
Linux之进程终止
本节目录1.进程终止2.exit与_exit函数1.进程终止 进程终止时,操作系统做了什么? 释放进程中申请的相关内核数据结构和对应的数据和代码。本质就是释放系统资源。 进程终止的常见方式 a.代码跑完,结果正确 b.代码跑完,结果不正确…...
全网独家首发|极致版YOLOv7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进YOLOv7网络模型
有不少小伙伴和我交流YOLO改进的时候,都说YOLOv7的网络配置文件长达104层,改起来很费力,数层数都要数很久,还很容易出错,而且基于YOLOv5代码架构,Debug起来也确实比较费时,所以博主对YOLOv7网络…...
C++入门 谁都能看懂的类和对象
类 C语言结构体中只能定义变量. 在C中,结构体内不仅可以定义变量,也可以定义函数。 //c语言 typedef struct ListNode {int val;struct ListNode* next; }LTN; //c struct ListNode {int val;//c中可以直接用这个,不用加structListNode* next…...
C++ STL:string类的模拟实现
目录 前置说明 一. 构造函数和析构函数的模拟实现 1.1 构造函数 1.2 析构函数 二. string类对象容量及成员相关的函数 2.1 获取字符串有效字符数、容量及_str成员变量获取相关函数 2.2 扩容及变长相关函数 2.3 字符串清空和判空函数 三. 运算符重载函数 3.1 赋值运算…...
并发编程---线程池(六)
阻塞队列的应⽤——线程池一 线程池基本概念二 线程池三种常⽤创建⽅式2.1.newFixedThreadPool线程池:2.2.newSingleThreadExecutor线程池:2.3.newCachedThreadPool线程池:2.4. 线程池代码演示三 线程池创建的七个参数四 线程池底层原理理解&…...
【Java实战】不会还有人用if else进行参数校验吧
当请求参数很多,几乎每一个参数都需要后端去兜底校验时,你还在写if else去判断参数是否为空吗??要校验为空的参数三四个还好,要是十几个,业务逻辑还没开始就写二三十行代码开始堆山了嘛,教给大家…...
深度学习部署(十六): CUDA RunTime API _vector-add 使用cuda核函数实现向量加法
1. 知识点 nthreads的取值,不能大于block能取值的最大值。一般可以直接给512、256,性能就是比较不错的 (input_size block_size - 1) / block_size;是向上取整 对于一维数组时,采用只定义layout的x维度,若处理的是二维ÿ…...
堆结构的两个应用
堆排序 堆结构很大的一个用处,就是用于堆排序了,堆排序的时间复杂度是O(n∗log2n)O(n*log_2n)O(n∗log2n)量级的,在众多排序算法中所处的地位也是高手级别的了。 但很多人在使用堆排序的时候,首先认为我必须得有一个堆数据结构…...
Java中的 static
1 static 静态变量 1.1 静态变量的使用 static变量也称作静态变量,也叫做类变量 静态变量被所有的对象所共享,在内存中只有一个副本 当且仅当在类初次加载时会被初始化 静态变量属于类 通过类名就可以直接调用静态变量 也可以通过对象名.静态变量…...
基于Vision Transformer的图像去雾算法研究与实现(附源码)
基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及内存使用率,配合nvidia-smi监控GPU使用率 可以了解服务器性能是否足够;运行时在哪一步使用率突然…...
服务器相关常用的命令
cshell语法 https://www.doc88.com/p-4985161471426.html domainname命令 1)查看当前系统域名 domainname2)设置并查看当前系统域名 domainname example.com3)显示主机ip地址 domainname -Iwhich命令 which 系统命令在 PATH 变量指定的…...
今天是国际数学日,既是爱因斯坦的生日又是霍金的忌日
目录 一、库函数计算 π 二、近似值计算 π 三、无穷级数计算 π 四、割圆术计算 π 五、蒙特卡罗法计算 π 六、计算800位精确值 从2020年开始,每年的3月14日又被定为国际数学日,是2019年11月26日联合国教科文组织第四十届大会上正式宣布…...
Qt Quick - StackLayout 堆布局
StackLayout 堆布局一、概述二、attached 属性三、例子1. 按钮切换 StackLayout 页面一、概述 StackLayout 其实就是说,在同一个时刻里面,只有一个页面是展示出来的,类似QStackWidget 的功能,主要就是切换界面的功能。这个类型我…...
C/C++网络编程笔记Socket
https://www.bilibili.com/video/BV11Z4y157RY/?vd_sourced0030c72c95e04a14c5614c1c0e6159b上面链接是B站的博主教程,源代码来自上面视频,侵删,这里只是做笔记,以供复习和分享。上一篇博客我记录了配置环境并且跑通了࿰…...
RK3568平台开发系列讲解(网络篇)什么是Socket套接字
🚀返回专栏总目录 文章目录 一、什么是socket ?二、socket 理解为电话机三、socket 的发展历史四、套接字地址格式4.1、通用套接字地址格式4.2、IPv4 套接字格式地址4.3、IPv6 套接字地址格式4.4、几种套接字地址格式比较沉淀、分享、成长,让自己和他人都能有所收获!😄 …...
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——渗透测试解析(详细)
渗透测试 任务环境说明: 服务器场景:Server9服务器场景操作系统:未知(关闭连接)系统用户名:administrator密码:123456通过本地PC中渗透测试平台Kali对靶机场景进行系统服务及版本扫描渗透测试,以xml格式向指定文件输出信息(使用工具Nmap),将以xml格式向指定文件输出…...
尚融宝03-mybatis-plus基本CRUD和常用注解
目录 一、通用Mapper 1、Create 2、Retrieve 3、Update 4、Delete 二、通用Service 1、创建Service接口 2、创建Service实现类 3、创建测试类 4、测试记录数 5、测试批量插入 三、自定义Mapper 1、接口方法定义 2、创建xml文件 3、测试条件查询 四、自定义Serv…...
vue多行显示文字展开
这几天项目里面有一个需求,多行需要进行展开文字,类似实现这种效果 难点就在于页面布局 一开始就跟无头苍蝇似的,到处百度 ,后面发现网上的都不适合自己,最终想到了解决方案 下面是思路: 需求是超过3行&a…...
SpringBoot:SpringBoot 的底层运行原理解析
声明原文出处:狂神说 文章目录1. pom.xml1 . 父依赖2 . 启动器 spring-boot-starter2. 主启动类的注解1. 默认的主启动类2. SpringBootApplication3. ComponentScan4. SpringBootConfiguration5. SpringBootApplication 注解6. spring.factories7. 结论8. 简单图解3…...
哪些场景会产生OOM?怎么解决?
文章目录 堆内存溢出方法区(运行时常量池)和元空间溢出直接内存溢出栈内存溢出什么时候会抛出OutOfMemery异常呢?初看好像挺简单的,其实深究起来考察的是对整个JVM的了解,而这个问题从网上可以翻到一些乱七八糟的答案,其实在总结下来基本上4个场景可以概括下来。 堆内存溢出…...
金三银四、金九银十 面试宝典 Spring、MyBatis、SpringMVC面试题 超级无敌全的面试题汇总(超万字的面试题,让你的SSM框架无可挑剔)
Spring、MyBatis、SpringMVC 框架 - 面试宝典 又到了 金三银四、金九银十 的时候了,是时候收藏一波面试题了,面试题可以不学,但不能没有!🥁🥁🥁 一个合格的 计算机打工人 ,收藏夹里…...
JAVA开发(Spring框架详解)
javaweb项目几乎已经离不开spring框架了,spring 是一个典型的分层架构框架,它包含一系列的功能并被分为多个功能模块,springboot对spring框架又做了一层封装,以至于很多人对原来的spring框架越来越不了解。 要谈Spring的历史&…...
自学大数据第八天~HDFS命令(二)
嗨喽,好久不见,最近抽空复习了一下hadoop,书读百遍,其意自现这句话还真是; 继续学习HDFS常用命令 改变文件 拥有者~chown hdfs dfs -chown -R hadoop /user/hadoop使用 -R 将使改变在目录结构下递归进行。命令的使用者必须是超级用户。 改变文件所属组-chgrp hdfs dfs -chgr…...
贪心算法(几种常规样例)
贪心算法(几种常规样例) 贪心算法,指在对问题进行求解的时候,总是做出当前看来是最好的选择。也就是说不从整体上最优上考虑,算法得到的结果是某种意义上的局部最优解 文章目录贪心算法(几种常规样例&…...
【数据结构】基础知识总结
系列综述: 💞目的:本系列是个人整理为了数据结构复习用的,由于牛客刷题发现数据结构方面和王道数据结构的题目非常像,甚至很多都是王道中的,所以将基础知识进行了整理,后续会将牛客刷题的错题一…...
上海网站建设培训学校/跨境电商平台排行榜前十名
一、阿里巴巴 (一)UI有关 1. 多页面切换场景统一解决方案 UltraViewPager UltraViewPager 是阿里开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。 主要功能: 1. 支持横向滑动/纵向滑动2. 支持一屏…...
郑州市做网站的/优化公司排行榜
R1、R5路由器用动态路由协议OSPF来宣告路由;R2、R4建立BGP邻居,连接R1、R5、R6、R7的接口启动vrf空间,配置MPLS-,生成V4下的BGP表;R2、R3、R4用MPLS防止路由黑洞,R2、R4通过双向重发布是全网获得所有路由&a…...
迪虎科技网站建设/怎么做好seo推广
这里需要注意include的两种不同写法,#include<***.h> 和 #include"***.h" 采用"< >"方式进行包含的头bai文件表示让编译器在编译器的预设标准路径下去搜索相应的头文件,如果找不到则报错。 例如:VS2008的安…...
做网站一定要学java吗/网站推广计划书
为了方便读者朋友们自学桌面端编程,本文介绍了一些在线课程。桌面端编程方面的在线课程非常多,更新速度快,读者朋友们也可以在网上自行搜索,选择适合自己的在线课程进行学习。如需要打开课程的网站,请复制课程的网址到…...
做网站销售怎么找客户/网站服务器ip地址查询
公司同事辞职,灵感突发,诗一首赠之。每句的首字连起来就是“前程似锦,如鱼得水”。非专业人士,也不知道写得好不好,但觉得有点意思,因此还是留在博客里吧。 前人栽树后人凉 程门立雪永流芳 似水年华终不悔 …...
网站建设 最新软件/公司搜索seo
缘起:近期老男孩linux培训,某学生学习时的困惑案例:广州-小鹏 2013/9/2 22:07:53老男孩老师,我发现我的求知欲太强了。一遇到什么问题,就想把它弄的透透的。然后经常在解决一个问题的时候话费很长的时间。然后计划就不…...