精华内容
下载资源
问答
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk on i686 / tty1 localhost login:root ...
  • 命令模式&中介者模式

    千次阅读 多人点赞 2021-07-20 08:28:13
    公公 相当于命令模式的接受者(Receiver),执行皇帝的命令,收取早朝奏折(ConcreteCommand) 还是颁布圣旨(ConcreteCommand) 皇帝 相当于命令模式的调用者(Invoker) 老规矩,例子说完,看看代码吧 // 定义 命令类 ...

    有情怀,有干货,微信搜索【三太子敖丙】关注这个有一点点东西的程序员。

    本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

    最近在跟大家分享设计模式系列的文章有学妹问我,命令模式、策略模式、工厂模式 它们分别有啥区别?看代码的实现上感觉没啥区别呀?

    之前已经跟大家分享了策略模式以及工厂模式感兴趣的同学可以再去复习一下,今天我们就先重点分析一下命令模式然后再来看看它们的区别是啥?

    往期回顾:

    命令模式

    定义
    • 提供一个统一的方法来封装命令,通过参数条件来判断选择执行什么命令动作。
    • 允许将每一个命令存储在一个队列中。

    整体结构图如下:

    结构图中重要角色解释:

    • Command(命令类):定义命令的抽象封装类。
    • ConcreteCommand(具体命令类):对Command类进行实现,说白了就是具体的命令的实际实现类。
    • Receiver(接收者):执行命令关联的操作类。
    • Invoker(调用者):触发命令类,即外部操作事件触发执行。
    • Client(客户端):实例化具体命令对象,及接收者的实际类。

    整个结构其实看上去还是比较难理解的,但是既然开始在学设计模式了,那肯定每种设计模式都要有了解,来提升自己的知识面

    为了加深理解,我还是举一个好理解的例子:

    大家对中国古代君主制度肯定很熟悉。皇帝可以针对手底下服侍的公公让她们可以收取或者发放奏折。那其实这里面我个人感觉就可以体现命令模式。

    公公 相当于命令模式的接受者(Receiver),执行皇帝的命令,收取早朝奏折(ConcreteCommand) 还是颁布圣旨(ConcreteCommand)

    皇帝 相当于命令模式的调用者(Invoker)

    老规矩,例子说完,看看代码吧

    // 定义 命令类
    public interface Command {
        // 执行的方法
        void execute();
    }
    
    // 定义接收者-公公的角色
    public class Receiver {
    
        public void Charge(){
            System.out.println("收取奏折");
        }
    
        public void Issue(){
            System.out.println("颁布圣旨");
        }
    }
    
    
    //具体命令类one,收取奏折命令
    public class ConcreteCommandOne implements Command {
    
        // 接受者,这里可以理解为公公
        private Receiver receiver;
    
        public ConcreteCommandOne(Receiver receiver) {
            this.receiver = receiver;
        }
    
        @Override
        public void execute() {
            // 收取奏折
            receiver.Charge();
        }
    }
    
    // 具体命令类two,颁布圣旨
    public class ConcreteCommandTwo implements Command {
    
        // 接受者,这里可以理解为公公
        private Receiver receiver;
    
        public ConcreteCommandTwo(Receiver receiver) {
            this.receiver = receiver;
        }
    
        @Override
        public void execute() {
            // 颁布圣旨
            receiver.Issue();
        }
    }
    
    // 调用者,皇帝
    public class Invoker {
      
        private Command command;
    
        public Invoker(Command command) {
            this.command = command;
        }
        // 本次需要执行的命令
        public void action() {
            command.execute();
        }
    }
    
    	// 测试demo
        public static void main(String[] args) {
            // 实例化一个公公 接收者
            Receiver receiver =new Receiver();
            // 公公 当前能有接收到的几种命令
            Command commandOne = new ConcreteCommandOne(receiver);
            Command commandTwo = new ConcreteCommandTwo(receiver);
    
            // 皇帝 发号命令 触发执行方法
            Invoker invoker =new Invoker(commandOne);
            invoker.action();
            // result: 收取奏折
    
            Invoker invokerTwo =new Invoker(commandTwo);
            invokerTwo.action();
            // result:颁布圣旨
        }
    
    

    以上就是简单的代码实现了,通过Invoker(皇帝)的选择可以让Receiver(公公)确定去执行什么命令。这其实就是命令模式的一种简单体现。

    细心的同学不知道有没有发现一个问题,在定义里面

    • 允许将每一个命令存储在一个队列中。

    我们这里是没有体现队列的,其实这个实现也很简单。在main方法中添加一个队列就可以了

        public static void main(String[] args) {
            // 实例化一个公公 接收者
            Receiver receiver = new Receiver();
            // 公公 当前能有接收到的几种命令
            Command commandOne = new ConcreteCommandOne(receiver);
            Command commandTwo = new ConcreteCommandTwo(receiver);
    				// 存储命令
            Queue<Command> queue = new LinkedList<>();
            queue.add(commandOne);
            queue.add(commandTwo);
    				// 批量执行
            for (Command command : queue) {
                Invoker invoker = new Invoker(command);
                invoker.action();
            }
        }
    

    这里我想给大家做一个扩展点,这也是我之前看到过一种校验写法。

    大家在真实的工作中肯定会遇到很多一些接口的校验,怎么去写这个校验逻辑,怎么做到代码的复用、抽象等这其实是一个比较难的问题!

    还是大致的来看下结构图吧!!!

    demo代码,我也给大家写出来,需要注意的是我们需要实现 ApplicationContextAware 里面的afterPropertiesSet 方法。

    // 定义抽象校验方法
    public abstract class ValidatePlugin {
        public abstract void validate();
    }
    // 抽象规则执行器
    public abstract class ValidatePluginExecute {
        protected abstract List<ValidatePlugin> getValidatePlugins();
        public void execute() {
            final List<ValidatePlugin> validatePlugins = getValidatePlugins();
            if (CollectionUtils.isEmpty(validatePlugins)) {
                return;
            }
            for (ValidatePlugin validatePlugin : validatePlugins) {
              // 执行校验逻辑,这里大家可以根据自己的实际业务场景改造
                validatePlugin.validate();
            }
        }
    }
    
    // 具体测试规则
    @Component("validatePluginOne")
    public class ValidatePluginOne extends  ValidatePlugin {
        @Override
        public void validate() {
            System.out.println("validatePluginOne 规则校验");
        }
    }
    
    // 具体执行器,把需要执行的规则添加到 validatePlugins 中
    @Component("testValidatePlugin")
    public class TestValidatePlugin extends ValidatePluginExecute implements ApplicationContextAware, InitializingBean {
    
        protected ApplicationContext applicationContext;
    
        private List<ValidatePlugin> validatePlugins;
    
        @Override
        public void afterPropertiesSet() {
          // 添加规则
            validatePlugins = Lists.newArrayList();
            validatePlugins.add((ValidatePlugin) this.applicationContext.getBean("validatePluginOne"));
    
        }
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    
        @Override
        protected List<ValidatePlugin> getValidatePlugins() {
            return this.validatePlugins;
        }
    }
    
    // 测试demo
      public static void main(String[] args) {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
            TestValidatePlugin testValidatePlugin = (TestValidatePlugin) applicationContext.getBean("testValidatePlugin");
            testValidatePlugin.execute();
        }
    
    

    这个只是一个简单的测试demo,为了让大家有一个思考,设计模式不一定是照搬代码。更多是开拓自己的视野,提升自己解决问题的能力。

    针对不同的一些接口,我们只需要在TestValidatePlugin 中添加具体校验规则就可以了,整体的扩展性就变高了,看上去也比较高大上。

    所以上面提到的命令模式、策略模式、工厂模式区别是什么呢?

    • 命令模式:属于行为型设计模式,在命令模式中,不同的命令执行过程中会产生不同的目的结果,而且不同的命令是不能替换的。

    • 策略模式 :属于行为型设计模式,在策略模式中,重点在于针对每一种策略执行,解决根据运行时状态从一组策略中选择不同策略的问题

    • 工厂模式:属于创建型设计模式,在工厂模式中,重点在于封装对象的创建过程,这里的对象没有任何业务场景的限定,可以是策略,但也可以是其他东西

    所以针对设计模式,其实我理解的还是只说明了一个问题,不同的设计模式都是为了针对处理不同的场景,不同业务场景有不同的写法。

    中介者模式

    中介者模式,看这个名字也能理解出来,定一个中间结构来方便管理下游组织。

    那么什么是中介模式呢?

    在GoF 中的《设计模式》中解释为:中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。

    再来看看这个结构图吧:

    • Mediator(抽象中介者):用来定义参与者与中介者之间的交互方式

    • ConcreteMediator(具体中介者):实现中介者定义的操作,即就是实现交互方式。

    • Colleague(抽象同事角色):抽象类或者接口,主要用来定义参与者如何进行交互。

    • ConcreteColleague(具有同事角色):很简单,就是具体的实现Colleague中的方法。

      以上结构定义来自设计模式之美

    看这个结构图理解出来,其实是跟之前为大家写的一篇观察者模式有点相同的,感兴趣的同学可以再去复习一下。

    老规矩,还是具体举例代码实现一下

    高铁系统大家应该清楚有一个调度中心,用来控制每一辆高铁的进站顺序,如果没有这个调度中心,当同时有三量高铁都即将进站时,那他们就需要两两相护沟通。假设有其中的一辆动车没有沟通到,那就将发生不可估量的错误,所以就需要通过这个调度中心来处理这个通信逻辑,同时来管理当前有多少车辆等待进站等。

    // 抽象参与者, 也可以使用abstract 写法
    public interface Colleague {
      	// 沟通消息
        void message();
    }
    // 抽象中介者
    public interface Mediator {
        // 定义处理逻辑
        void doEvent(Colleague colleague);
    }
    
    // 具体参与者
    @Component
    public class MotorCarOneColleague implements Colleague {
    
        @Override
        public void message() {
            // 模拟处理业务逻辑
            System.out.println("高铁一号收到消息!!!");
        }
    }
    @Component
    public class MotorCarTwoColleague implements Colleague {
        @Override
        public void message() {
            System.out.println("高铁二号收到消息!!!");
        }
    }
    @Component
    public class MotorCarThreeColleague implements Colleague {
        @Override
        public void message() {
            System.out.println("高铁三号收到消息!!!");
        }
    }
    
    // 具体中介者
    @Component
    public class DispatchCenter implements Mediator {
      // 管理有哪些参与者
        @Autowired
        private List<Colleague> colleagues;
      
        @Override
        public void doEvent(Colleague colleague) {
            for(Colleague colleague1 :colleagues){
                if(colleague1==colleague){
                    // 如果是本身高铁信息,可以处理其他的业务逻辑
                    // doSomeThing();
                    continue;
                }
              // 通知其他参与
                colleague1.message();
            }
        }
    }
    
    // 测试demo
    public static void main(String[] args) {
      			// 初始化spring容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
      			// 获取中介者,调度中心
            DispatchCenter dispatchCenter = (DispatchCenter) applicationContext.getBean("dispatchCenter");
    
    
            // 一号高铁 发送消息出去
            MotorCarOneColleague motorCarOneColleague =  (MotorCarOneColleague) applicationContext.getBean("motorCarOneColleague");
      			// 通过调度中心沟通信息
            dispatchCenter.doEvent(motorCarOneColleague);
            // result:高铁三号收到消息!!!
            //         高铁二号收到消息!!!
    
    
            // 二号高铁 发送消息出去
            MotorCarTwoColleague  motorCarTwoColleague = (MotorCarTwoColleague)applicationContext.getBean("motorCarTwoColleague");
            dispatchCenter.doEvent(motorCarTwoColleague);
            // result:高铁一号收到消息!!!
            //         高铁三号收到消息!!!
    
        }
    
    

    中介者模式demo代码就算完成了,通过这个demo大家应该能发现,中介者还是很好理解的。

    但是中介者的应用场景还是比较少见的,针对一些类依赖严重,形成的类似网状结构,改成一个类似与蒲公英一样结构,由中间向外扩散,来达到解耦合的效果。

    更多在一个UI界面控件里面比较常见,当然在Java里面java.util.Timer 也可以理解为中介者模式,因为它能控制内部线程如何去运行比如多久运行一次等。

    上面提到中介者和观察者模式很像,通过demo代码大家也能发现这一点

    观察者模式中观察者和被观察者我们基本时固定的,而中介者模式中,观察者和被观察者时不固定的,而且中介者可能会最后变成一个庞大的原始类。

    总结

    命令模式:虽然不怎么常见,但是我们还是要区分它与工厂模式以及策略模式的区别是啥,应用场景是啥,能给我们带来什么思考。

    比如我最后的那个例子,命令模式可以实现命令的存储,本质是将命令维护在一个队列中,那么在我们的业务代码中 我们为什么不能也通过一个数组来维护一些接口校验依赖,里面存放需要校验的bean实例。来提高代码的复用性以及扩展性。

    中介模式:整体来说这个更加不怎么应用,虽然能起到对象的解耦合,但是也有副作用,而且在我们的真实业务场景中也很少会遇到这样的场景,了解一下实现原理即可,至于与观察者的区别,上面也有讲到,更多我们可能是已经在使用一些中间件消息队列去处理了。

    我是敖丙,你知道的越多,你不知道的越多,我们下期见!!!


    敖丙把自己的面试文章整理成了一本电子书,共 1630页!

    干货满满,字字精髓。目录如下,还有我复习时总结的面试题以及简历模板,现在免费送给大家。

    链接:https://pan.baidu.com/s/1ZQEKJBgtYle3v-1LimcSwg 密码:wjk6

    我是敖丙,你知道的越多,你不知道的越多,感谢各位人才的:点赞收藏评论,我们下期见!


    文章持续更新,可以微信搜一搜「 三太子敖丙 」第一时间阅读,回复【资料】有我准备的一线大厂面试资料和简历模板,本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。

    展开全文
  • 通过前面的学习我们知道,Linux 系统中所有的内容...使用 Vim 编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和编辑模式,这 3 种工作模式可随意切换,如图 1 所示。 图 1 Vim 的三种工作模式 Vim的命...

    通过前面的学习我们知道,Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器。

     

    我们首选的文本编辑器是 Vim(至于为什么,可查看《Vi和Vim的区别和联系》一节)。使用 Vim 编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和编辑模式,这 3 种工作模式可随意切换,如图 1 所示。

    Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解
    图 1 Vim 的三种工作模式

    Vim的命令模式

    使用 Vim 编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

    图 2 所示是在 CentOS 6.x 系统中 Vim 处于命令模式的状态示意图。

    Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解
    图 2 Vim 处于命令状态

    Vim的输入模式

    在输入模式下,Vim 可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容。

    使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。

    表 3 各插入命令的具体功能
    快捷键功能描述
    i在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
    o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
    a在当前光标所在位置之后插入随后输入的文本
    A在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
     

    图 4 所示即为 Vim 处于输入模式状态下的示意图。

    Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解
    图 4 Vim 处于输入模式

    Vim 的编辑模式

    编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

    使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

    指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

    图 4 所示为 Vim 进入编辑模式后的状态。

    Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解
    图 4 Vim 进行编辑模式

    对于新手来说,经常不知道自己处于什么模式。不论是自己忘了,还是不小心切换了模式,都可以按一次 Esc 键返回命令模式。如果你多按几次 Esc 键后听到"嘀————"的声音,则代表你已经处于命令模式了。

    Vim文本编辑器
    5.1 Vim及其安装
    5.2 Vi和Vim的区别和联系
    5.3 Linux Vim三种工作模式
    5.4 Linux Vim基本操作
    5.5 Vim移动光标命令汇总
    5.6 Linux Vim多窗口编辑
    5.7 Linux Vim批量注释和自定义注释
    5.8 Linux Vim显示行号
    5.9 Vim配置(.vimrc)

    展开全文
  • 交换机基本命令模式

    千次阅读 2019-05-16 13:04:53
    交换机基本命令模式 对于思科交换机来说,主要有2种配置途径:其一,使用交换机自带的Console线缆连接到计算机的COM口,然后利用计算机的超级终端软件直接配置,首次配置通常使用这种方式;其二,通过telnet方式...

    交换机基本命令模式

    对于思科交换机来说,主要有2种配置途径:
    其一,使用交换机自带的Console线缆连接到计算机的COM口,然后利用计算机的超级终端软件直接配置,首次配置通常使用这种方式;
    其二,通过telnet方式远程访问、配置交换机,这种方式要求此交换机已配置有IP地址且已接入计算机网络。
    1)通过超级终端访问交换机
    2)交换机工作模式的进入与退出
    真实设备环境,如图所示。
    在这里插入图片描述

    本例中的配置练习可采用思科模拟器 —— Cisco Packet Tracer 6.2来实现。

    安装Packet Tracer 6.2

    双击安装包执行默认安装,然后将中文语言文件Chinese.ptl解压到安装目录下的多语言文件夹,比如C:\Program Files (x86)\Cisco Packet Tracer 6.0\languages。
    双击桌面的Cisco Packet Tracer快捷方式以启动程序,打开菜单“Options”–>“Preferences”–>切换到“Interface”选项卡–>选择下方的Chinese.ptl–>单击右下角“Change Language”按钮,弹出提示时单击“OK”,如图所示。
    在这里插入图片描述
    关闭当前Packet Tracer程序,然后再重新启动此程序,可发现已经变成中文语言界面了(当前汉化的还不完整),如图所示。
    在这里插入图片描述

    (2)建立实验网络拓扑

    在Packet Tracer程序主窗口中,添加一台Cisco 2960交换机、一台普通PC机,并添加Console连接、直通网线连接,如图-4所示,确认完毕后将当前拓扑结构保存为c2960-pc.pkt文件。
    在这里插入图片描述
    其中,连接细节如下:
    交换机的Console口 <–> PC机的RS 232串口。
    交换机的FastEthernet0/24接口 <–> PC机的FastEthernet0网卡。

    一:通过超级终端访问交换机。

    (1)配置并打开超级终端

    在此前建立的Packet Tracer实验拓扑环境中,单击PC机以打开此设备,确认电源已启动(机箱示意图上的指示灯为黄绿色),切换到“桌面选项卡”,如图所示,找到其中的“终端”并单击打开。

    在这里插入图片描述
    在弹出的终端配置窗口中,如图所示,单击“确定”以接受默认值。

    在这里插入图片描述
    接下来就可以看到“终端”窗口了,其中显示了通过Console线连接的交换机初始化信息,回车后可进入交换机的“Switch>”配置系统,如图所示。
    在这里插入图片描述

    提示:在Packet Tracer环境中,可直接单击交换机图标,然后切换到“命令行”选项卡,也可以进入IOS配置环境。

    步骤二:交换机工作模式的进入与退出

    (1) 交换机工作模式的进入如下:

    Switch>enable   //切换为特权模式
    Switch# configure terminal      //进入全局配置模式
    Enter configuration commands, one per line.  End with CNTL/Z.
    Switch(config)#interface fastEthernet 0/1      //进入接口模式
    Switch(config-if)#
    

    (2)交换机工作模式的退出下:

    Switch(config-if)#exit                           //接口模式退到全局配置模式
    Switch(config)#exit                              //全局配置模式退到特权模式
    Switch#exit                                       //特权模式退到用户模式
    Switch>
    

    注:exit 返回上一模式
    end 从接口或者全局配置模式回到特权模式,快捷键Ctrl+z同等效果
    思科设备命令行不区分大小写,与Linux命令行不同
    命令输入错误卡住时同时按键盘ctrl+shift+6这三个键即可

    交换机基本命令

    在Packet Tracer程序主窗口中,添加一台Cisco 2960交换机,进入交换机,输入相关命令进行配置和查看交换机

    实现此案例需要按照如下步骤进行。

    步骤一:修改交换机主机名

    进入全局配置模式后,使用hostname指令可以为交换机设置主机名。例如,以下操作可以将主机名设置为s1:

    Switch(config)# hostname s1                     //配置主机名
    s1(config)#    
    

    二:查看交换机配置信息

    查看交换机当前的运行配置:
    查看交换机当前的运行配置:

    s1# show running-config                  //查看当前的运行配置
    Building configuration...
    Current configuration : 1052 bytes
    !
    version 12.2
    no service timestamps log datetime msec
    no service timestamps debug datetime msec
    no service password-encryption
    !
    hostname sw1                          //已配置主机名
    !
    !
    !
    !
    spanning-tree mode pvst
    !
    interface FastEthernet0/1
    !
    interface FastEthernet0/2
    !
    interface FastEthernet0/3
    !
    interface FastEthernet0/4
    !
    interface FastEthernet0/5
    !
    interface FastEthernet0/6
    !
    interface FastEthernet0/7
    !
    interface FastEthernet0/8
    !
    interface FastEthernet0/9
    !
    interface FastEthernet0/10
    !
    interface FastEthernet0/11
    !
    interface FastEthernet0/12
    !
    interface FastEthernet0/13
    !
    interface FastEthernet0/14
    !
    interface FastEthernet0/15
    !
    interface FastEthernet0/16
    !
    interface FastEthernet0/17
    !
    interface FastEthernet0/18
    !
    interface FastEthernet0/19
    !
    interface FastEthernet0/20
    !
    interface FastEthernet0/21
    !
    interface FastEthernet0/22
    !
    interface FastEthernet0/23
    !
    interface FastEthernet0/24
    !
    interface GigabitEthernet1/1
    !
    interface GigabitEthernet1/2
    !
    interface Vlan1
     no ip address
     shutdown
    !
    !
    line con 0
    !
    line vty 0 4
     login
    line vty 5 15
     login
    !
    !
    end
    sw1#
    

    三:查看IOS名称以及版本信息

    查看ios名称及版本信息

    s1#show version 
    Cisco Internetwork Operating System Software
    IOS (tm) C2950 Software (C2950-I6Q4L2-M), Version 12.1(22)EA4, RELEASE   SOFTWARE(fc1)
    Copyright (c) 1986-2005 by cisco Systems, Inc.
    Compiled Wed 18-May-05 22:31 by jharirba
    Image text-base: 0x80010000, data-base: 0x80562000
    ROM: Bootstrap program is is C2950 boot loader
    Switch uptime is 1 minutes, 39 seconds
    System returned to ROM by power-on
    Cisco WS-C2950-24 (RC32300) processor (revision C0) with 21039K bytes of memory.
    Processor board ID FHK0610Z0WC
    Last reset from system-reset
    Running Standard Image
    24 FastEthernet/IEEE 802.3 interface(s)
    63488K bytes of flash-simulated non-volatile configuration memory.
    Base ethernet MAC Address: 00E0.B026.B88C
    Motherboard assembly number: 73-5781-09 
    Power supply part number: 34-0965-01
    Motherboard serial number: FOC061004SZ
    Power supply serial number: DAB0609127D
    Model revision number: C0
    Motherboard revision number: A0
    Model number: WS-C2950-24
    System serial number: FHK0610Z0WC
    Configuration register is 0xF
    

    交换机基本配置

    步骤一:交换机密码配置

    (1)为交换机配置特权密码Taren1
    打开交换机命令行配置界面

    Switch>en
    Switch#conf t
    Switch(config)#enable password Taren1
    

    步骤二:保存配置并重启设备检测密码可用情况

    Switch(config)#exit
    Switch#write
    Switch#reload
    ……….
    ………
    Switch>enable
    Password:                            //此时需要输入密码才能进入特权模式
    

    步骤三:清空设备配置

    Switch#erase startup-config
    Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]         //此时系统询问是否确定删除,按回车即可
    [OK]
    Erase of nvram: complete
    

    步骤四:重启设备检测配置状况

    Switch#reload
    Proceed with reload? [confirm]      //此时系统询问是否确定重启,按回车即可
    
    展开全文
  • vi/vim命令模式和编辑模式各种操作

    万次阅读 2017-05-09 11:20:11
    我们返回到命令模式,然后移动光标到某个位置,然后按shift+p键,就把刚才删除的内容贴上了。我们先在这里提一句,在后文,我们还得详细说说。 退出可视模式,还是用ESC键; 3.9 复制和粘帖的操作; ...

    文件编辑器 vi

    来自:LinuxSir.Org
    摘要:vi 编辑器是最常用的文档创建和编辑工具,初学者应该学会简单应用vi ,学会在vi 中做简单的修改、删除、插入、搜索及替换作业;如果您是新手,不妨看看本文,或许这篇文档能让您在最短的时间内学会vi的简单操作;

     +++++++++++++++++++++++++++++++++++++

    正文
    +++++++++++++++++++++++++++++++++++++


    1、关于文本编辑器;

    文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的编辑器有vi、vim(vi的增强版本)和nano ... ... vi和vim是我们在Linux中最常用的编辑器。我们有必要介绍一下vi(vim)最简单的用法,以让Linux入门级用户在最短的时间内学会使用它。

    nano 工具和DOS操作系统下的edit操作相似,使用简单,我们不作介绍了,如果您有兴趣,不妨尝试一下;


    2、vi 编辑器;

    为什么要学会简单应用vi

    vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远不是图形界面的编辑器能比的。当您没有安装X-windows桌面环境或桌面环境崩溃时,我们仍需要字符模式下的编辑器vi;

    vi或vim 编辑器在创建和编辑简单文档最高效的工具;


    3、vi 编辑器的使用方法;


    3.1 如何调用vi ;

     

    [root@localhost ~]# vi  filename

     

     

    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~

     


    3.2 vi 的三种命令模式;

     

    Command(命令)模式,用于输入命令;
    Insert(插入)模式,用于插入文本;
    Visual(可视)模式,用于视化的的高亮并选定正文;

     


    3.3 文件的保存和退出;

    Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。

    当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;

     

    :w  保存;
    :w  filename 另存为filename;
    :wq! 保存退出;
    :wq! filename 注:以filename为文件名保存后退出;
    :q! 不保存退出;
    :x 应该是保存并退出 ,功能和:wq!相同

     


    3.4 光标移动;

    当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标;

     

    j 向下移动一行;
    k 向上移动一行;

    h 向左移动一个字符;
    l 向右移动一个字符;

    ctrl+b  向上移动一屏;
    ctrl+f  向下移动一屏;

    向上箭头    向上移动;
    向下箭头    向下移动;
    向左箭头    向左移动;
    向右箭头    向右移动;

     

    我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。


    3.5 插入模式(文本的插入);

     

     在光标之前插入;
     在光标之后插入;

    I 在光标所在行的行首插入;
     在光标所在行的行末插入;

     在光标所在的行的上面插入一行;
     在光标所在的行的下面插入一行;

     删除光标后的一个字符,然后进入插入模式;
     删除光标所在的行,然后进入插入模式;

     


    3.6 文本内容的删除操作;

     

    x 一个字符;
    #x 删除几个字符,#表示数字,比如3x;
    dw 删除一个单词;
    #dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;
    dd 删除一行;
    #dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;
    d$ 删除光标到行尾的内容;

    J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;

     


    3.7 恢复修改及恢复删除操作;

     

     撤消修改或删除操作;

     

    按ESC键返回Command(命令)模式,然后按u键来撤消删除以前的删除或修改;如果您想撤消多个以前的修改或删除操作,请按多按几次u。这和Word的撤消操作没有太大的区别;


    3.8 可视模式;

    在最新的Linux发行版本中,vi提供了可视模式,因为这个功能是vim才有的。如果您用的vi没有这个功能,就换成vim就有了。打开可视模式,按ESC键,然后按v就进入可视模式;

    可视模式为我们提供了极为友好的选取文本范围,以高亮显示;在屏幕的最下方显示有;

     

    -- 可视 --   



    --VISUAL--

     

    如图:

    vi/vim命令模式和编辑模式各种操作

    进入可视模式,我们就可以用前面所说的命令行模式中的光标移动指令,可以进行文本范围的选取。

    选取文本范围有何用?

    我们可以对某部份删除作业,按d键就删除了我们选中的内容。
    选中内容后,我们按y就表示复制;按d表示删除;

    值得一提是的删除的同时,也表示复制。我们返回到命令模式,然后移动光标到某个位置,然后按shift+p键,就把刚才删除的内容贴上了。我们先在这里提一句,在后文,我们还得详细说说。

    退出可视模式,还是用ESC键;


    3.9 复制和粘帖的操作;

    其实删除也带有剪切的意思,当我们删除文字时,可以把光标移动到某处,然后按shift+p键就把内容贴在原处,然后再移动光标到某处,然后再按p或shift+p又能贴上;

     

    p 在光标之后粘帖;
    shift+p 在光标之前粘帖

     

    来举一例:

    比如我们想把一个文档的第三行复制下来,然后帖到第五行的后面,我们应该怎么做呢?

    有两种方法;

    第一种方法:

    先把第三行删除,把光标移动到第三行处,然后用dd动作,接着再按一下shift+p键。这样就把刚才删除的第三行帖在原处了。

    接着我们再用k键移动光标到第五行,然后再按一下p键,这样就把第三行的内容又帖到第五行的后面了;

    第二种方法;

    进入可视模式,按ESC键,然后按v键。移动鼠标指针,选中第三行的内容,然后按y键复制;再移动指针到第五行,最后按p键;

    所以复制和粘贴操作,是命令模式、插入模式及可视模式的综合运用;我们要学会各种模式之间的切换,要常用ESC键;更为重要的学会在命令模式下移动光标;


    3.10 关于行号;

    有时我们配置一个程序运行时,会出现配置文件X行出现错误 。这时我们要用到行号相关的操作;


    为所有内容添加行号;

    按ESC键,然后输入:

     

    :set number

     

    光标所处位置

    在屏幕的右下角,有类似如下的;

     

             57,8          27%

     

    在这之中,57表示第57行,8表示第8个字符;


    3.11 查找和替换功能;


    3.11.1 查找;

    首先,我们要进入ESC键,进入命令模式;我们输入/或?就进入查找模式了;

     

    /SEARCH  注:正向查找,按n键把光标移动到下一个符合条件的地方;
    ?SEARCH  注:反向查找,按shift+n 键,把光标移动到下一个符合条件的

     

    举一例:比如我想在一个文件中找到swap单词,我应该如下做;

    首先按ESC键,进入命令模式,然后输入;

     

    /swap 

    ?swap

     


    3.11.2 替换;

    按ESC键进入命令模式;

     

    :s /SEARCH/REPLACE/g  注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
    :%s /SEARCH/REPLACE  注:把文档中所有SEARCH替换成REPLACE;
    :#,# s /SEARCH/REPLACE/g  注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;

     

    注:在这之中,g表示全局查找;我们注意到,就是没有替换的地方,也会把SEARCH高亮显示;

    举例说明:

    比如我们有一篇文档要修改;

    我们把光标所在的行,把所有单词the,替换成THE,应该是:

     

    :s /the/THE/g

     

    我们把整篇文档的所有的the都替换成THE,应该是:

     

    :%s /the/THE

     

    我们仅仅是把第1行到第10行中的the,替换成THE,应该是;

     

    :1,10  s /the/THE/g

     


    4、关于本文;

    我写本文的目的是让新手在最短的时间内用vi或vim创建、编辑和修改文件,所以说这篇文档并不是大而全的vi手册。如果把vi所有的功能都说全了,至少得写一本千页的手册;本也没有涉及更为高级的vi用法。如果想了解的更多,请查找man和help;


    5、后记;

    到目前为止,关于目录和文件的操作,我写过有几篇了,从文件和目录的创建、删除、复制到属性操作,最后到文件修改等系列文档。这些文档都是有相关性的,如果把这些相关性的文档连起来,就是一个整体知识块。我们只有掌握了这些知识,才能实现文件系统的管理。

    在以后我会写什么内容呢????可能会补充一下文件的查找,其实以前有类似文档,到时我总结一下,贴出来给大家看看就行了。

    下一步是准备网络基础文档建设中,网络基础比较重要,这是我计划的下一个重点。。。。。。。。


    6、参考文档;

    man vi 和vi --help


    转自:http://blog.sina.com.cn/s/blog_6d09b5750100vx3u.html

    展开全文
  • 这篇文章将与大家聊一聊游戏开发中命令模式的用法。命令模式的成名应用是实现诸如撤消,重做,回放,时间倒流之类的功能。如果你想知道《Dota2》中的观战系统、《魔兽争霸3》中的录像系统、《守望先锋》的全场最佳...
  • 本人Win10系统 装了影子系统 在保护模式下重启后 无限开机蓝屏 安全模式蓝屏 进PE蓝屏 1. 首先进入命令行模式 ( Win7开机F8, Win10在开机途中强制关机几次进入诊断模式...2. 输入命令 dir C:\Windows\System32\...
  • top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。...
  • 命令模式在游戏开发中的应用

    万次阅读 2019-01-17 18:39:41
    命令模式的描述: 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的...
  • 博主才学尚浅,难免会有错误,尤其是设计模式这种极富禅意且需要大量经验的东西,如果哪里书写错误或有遗漏,还请各位前辈指正。 打算写设计模式的目的就是,首先自己可以理清思路,还有就是国内的设计模式资料很...
  • 常用Linux命令小结

    千次阅读 2013-06-01 15:47:32
    常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记。当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临时抱佛脚的感觉...
  • 设计模式之命令模式

    千次阅读 2013-05-12 01:06:55
    在日常生活中,我们常常会遇到这样一些问题:需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行...
  • Win10 CMD命令大全与超好用的快捷键

    万次阅读 多人点赞 2019-06-21 11:27:07
    一、Windows CMD 命令大全 按组合键 Win(Windows图标键)+R 键打开运行窗口,输入“cmd”按回车即可打开cmd命令提示符 在窗口右击选择属性可进行个性化设置~  1.calc:启动计算器  2.appwiz.cpl:程序和...
  • 按ctrl+c,或者ctrl+],或者ctrl+d,对于不同的情况不同命令来结束指令
  • linux创建文件

    万次阅读 多人点赞 2019-07-14 21:11:06
    它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。 但是它不允许你在创建文件时向其中输入任何文本。然而它对于不是很勤劳的管理员是非常简单有用的。只需要...
  • Redhat rescue模式的使用
  • 命令模式/常规模式 插入模式/编辑模式。 防爆模式/更换模式。  27.什么是inode和进程ID? 回答:  inode是赋予每个文件的唯一名称,进程id是赋予每个进程的唯一名称。  28. Linux中的进程状态是...
  • 唯一操作:使用过netsh命令提示符修复网络,然后按提示重启。 现象: win10启动后提示“正在诊断电脑……”,“正在修复……”,然后修复失败,死循环。截至启动成功,共重启15次。 解决方案(失败): 1)根据...
  • 用户都是通过程序在跟系统做沟通的,命令行模式登陆后所运行的程序被称为壳(shell),这个程序负责跟用户沟通。 Linux的壳程序就是BASH。 命令 整个命令的执行方式非常简单,需要熟悉几个重要的概念。 [dave@...
  • 完美可用-DirectX修复工具增强版DirectX Repair

    万次阅读 热门讨论 2018-12-06 11:19:34
    常见的命令有5类,分别是设置语言的命令、设置窗口模式命令,设置安全级别的命令、开启强力修复的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。  程序有高级筛选功能,开启该...
  • –检查数据库错误 DBCC CHECKDB('JXGL206') ...–把数据设为单用户模式 USE MASTER GO SP_DBOPTION JXGL206, SINGLE,TURE –报错:找不到存储过程 ‘SP_DBOPTION’ –注释:sql server 2008及以下版本是包...
  • Java常见设计模式总结

    万次阅读 多人点赞 2021-09-18 17:18:54
    设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于人于系统都是多赢的,它使得代码编写真正工程化,它是软件工程的基石,如同大厦的一块块...
  • Win10自动修复无法开机【完美解决】

    万次阅读 多人点赞 2017-09-25 10:33:31
    我们先使用传统模式开机,关闭Windows10的自动修复,然后使用UEFI模式开机,查看导致无法开机的错误文件,再使用传统模式进入WinPE启动U盘,将错误文件转移到其他分区作备份,然后就可以使用UEFI模式完成开机。...
  • 主动模式:要开入站端口:39000/40000 (服务器主动发出数据传输请求) 被动模式:要开出站端口:20 (客户端主动发出数据传输请求) 客户端要放行的端口: 主动模式:防火墙需要主动放行相应...
  • 其中最为让人烦恼之一的就是,由于CAD各版本和系统兼容问题,可能会出现的【向程序发送命令时出现错误】的提示。这一问题该如何解决呢? 步骤一:使用XUN JIECAD编辑器打开CAD图纸,弹出【向程序发送命令时出现错误...
  • 转载自:http://blog.itpub.net/29734436/viewspace-1338985/在telnet或SQLplus下命令输入错误,比如下面的情况,如何删掉重新输入?telnet> ^[[A^[[B^[[D^[[C 可以用Ctrl+Backspace组合键,直接用Backspace键或者...
  • 在命令行(就是开始——运行——输入cmd)模式下输入adb shell命令一般会报两种错误:  一是“adb不是内部命令或外部命令,也不是可运行的程序或批处理文件”;  二是“error:device not found”。  ...
  • 1、MongoDB Shell中退格键使用的问题。...为这个错误,废了好长时间的力气,终于找到了错误的原因。其实,主要是SecureCRT工具默认的字符输入模式的问题,可以通过以下方式修改: 第一步:选择Option菜单中的Sessi
  • ftp切换被动模式,走内网IpLinux的FTP服务器搭建 先描述下场景,用ftp搭建服务器,作为公司内部的一个下载站使用 看下下方报错截图linux上搭建的FTP服务器,用windows访问出现报错 先分析200,227的的意思 200访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 571,783
精华内容 228,713
关键字:

关于命令模式错误的是