精华内容
下载资源
问答
  • Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。 shell本身是一个用C程序编写的程序。 用户可以通过shell来向Kernel...

    shell解释器的定义

    Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。

    shell本身是一个用C程序编写的程序。

    用户可以通过shell来向Kernel输入命令,然后shell解释器会将我们输入的命令与内核通信,让内核理解我们需要做些什么。

    shell的分类

    Linux系统中存在多种shell,我们可以在/etc/shells文件中查看到系统中可用的shell。

    用户在登录的时候,系统会给我们安排一个shell.根据/etc/passwd中已经设置好的每个用户的默认shell.

    sh

    sh的全称是Bourne shell,由AT&T公司的Steve Bourne开发,为了纪念他,就用他的名字命名了。

    sh是UNIX上的标准shell,很多UNIX版本都配有sh。sh是第一个流行的Shell。

    sh 是Unix 标准默认的shell

    csh

    sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的,这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。

    tcsh

    tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。

    ash

    一个简单的轻量级的Shell,占用资源少适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

    bash

    bash shell是Linux的默认shell。

    bash由GNU组织开发,保持了对sh shell的兼容性,是各种Linux发行版默认配置的 shell

    bash兼容sh意味着,针对sh编写的Shell代码可以不加修改地在bash中运行

    bash 的优点

    >  可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。
    > 
    >     自动通过查找匹配的方式给出以某字符串开头的命令。
    > 
    >     包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
    

    具体细说:

    1、命令记忆能力(history)

    经命令行界面或者terminal中输入命令的时候,经常会需要重复输入前面已经输入的命令会选择使用向上或者向下快捷键来寻找我们之前执行过的命令,特别是在刚开机的时候我们还是能够找到我们以前开机时输入的命令。这是因为bash具有命令记忆能力。
    当前用户的主文件下会有一个.bash_history文件,这个文件中就存储着我们之前输入的命令,注意一下,当前登录这一次所输入的命令其实是暂存在内存中的,只有在退出登录的时候才会将内存中的命令记录存储到.bash_history文件中

    2、命令和文件补全功能([Tab]键的功能)
    3、命令别名设置功能(alias)
    4、程序脚本(bash script)

    在bash中,我们可以将平时管理系统常需要执行的连续命令写成一个文件,然后通过交互的方式进行主机的检测工作,也可以通过shell提供的环境变量及相关命令来进行设计,这个文件几乎就成了一段小程序了.
    5、通配符

    如果我们需要显示以a开头的文件名的文件,我们就可以输入命令 ls -al a*。一起其它的通配符都能够在bash中使用。
    6、作业控制、前台、后台控制

    在命令行界面中,输入好一个命令之后,我们是通过Enter键来执行该命令,但是有时候我们命令比较长,想使用两行来输入比较方便,或者想Enter暂时不要执行命令该怎么办呢?这个时候我们可以通过一个转义字符’'来键Enter键转义,使其暂时不具备执行的性质。注意转义字符‘\’与Enter之间没有任何空格。

    最后,我们需要明白一下什么是bash的内置命令和外部命令。内置命令是bash的基本命令,而外部命令是是扩展Linux功能的一些命令,像是vim等,是另外一些软件所提供的命令。我们可以通过type命令来查看一个命令的是否属于 bash的内置命令。

    展开全文
  • 解释器模式

    千次阅读 2018-06-06 16:04:56
    常见解释器模式比如:正则表达式,我们给定一个正则的语法表示,当我们输入一串字符串,其中的解释器就会告诉我们这段字符串是否匹配该正则表达式。 二,示例 实现一个音乐解释器。 我们的规则: O表示音阶...

    一,定义

    解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
    这里写图片描述
    常见的解释器模式比如:正则表达式,我们给定一个正则的语法表示,当我们输入一串字符串,其中的解释器就会告诉我们这段字符串是否匹配该正则表达式。

    二,示例

    实现一个音乐解释器。
    我们的规则:
    O表示音阶 “O 1”表示低音阶 ,“O 2”表示中音阶 “O 3”表示高音阶
    P表示休止符
    C D E F G A B表示“Do-Re-Mi-Fa-So-La-Ti”即 阿拉伯数字 1 2 3 4 5 6 7
    音符长度 1 表示一拍,2表示二拍,0.5表示半拍,0.25表示四分之一拍
    这里写图片描述

    /**
     * @类描述:演奏内容
     */
    public class PlayContext {
        private String text;
    
        public String getText() {
            return text;
        }
    
        public void setText(String text) {
            this.text = text;
        }
    }
    
    /**
     * @类描述:表达式类
     */
    public abstract class Expression {
        public void interpret(PlayContext context){
            if (context.getText().length() == 0){
                return;
            } else {
                String playKey = context.getText().substring(0,1);
                context.setText(context.getText().substring(2));
                double playValue = Double.parseDouble(context.getText().substring(0,context.getText().indexOf(" ")));
                context.setText(context.getText().substring(context.getText().indexOf(" ") + 1));
                excute(playKey,playValue);
            }
        }
    
        public abstract void excute(String key,double value);
    }
    
    /**
     * @类描述:音符类
     */
    public class Note extends Expression {
        @Override
        public void excute(String key, double value) {
            String note = "";
            switch (key){
                case "C":
                    note = "1";
                    break;
                case "D":
                    note = "2";
                    break;
                case "E":
                    note = "3";
                    break;
                case "F":
                    note = "4";
                    break;
                case "G":
                    note = "5";
                    break;
                case "A":
                    note = "6";
                    break;
                case "B":
                    note = "7";
                    break;
                default:
                    break;
            }
            System.out.print(note + " ");
        }
    }
    
    /**
     * @类描述:音调类
     */
    public class Scale extends Expression {
        @Override
        public void excute(String key, double value) {
            String scale = "";
            switch ((int)value){
                case 1:
                    scale = "低音";
                    break;
                case 2:
                    scale = "中音";
                    break;
                case 3:
                    scale = "高音";
                    break;
                default:
                    break;
            }
            System.out.print(scale + " ");
        }
    }
    
    /**
     * @类描述:音速类
     */
    public class Speed extends Expression {
        @Override
        public void excute(String key, double value) {
            String speed = "";
            if (value < 500){
                speed = "低速";
            } else if(value >= 1000){
                speed = "慢速";
            } else {
                speed = "中速";
            }
            System.out.print(speed + " ");
        }
    }
    
    //test main
        //解释器模式
        public static void interpreterModel(){
            PlayContext context = new PlayContext();
            System.out.println("上海滩:");
            context.setText("T 500 O 2 E 0.5 G 0.5 A 3 E 0.5 G0.5 D 3 E 0.5 G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 ");
            Expression expression = null;
            try {
                while (context.getText().length() > 0){
                    String str = context.getText().substring(0,1);
                    switch (str){
                        case "O":
                            expression = new Scale();
                            break;
                        case "T":
                            expression = new Speed();
                            break;
                        case "C":
                        case "D":
                        case "E":
                        case "F":
                        case "G":
                        case "A":
                        case "B":
                        case "P":
                            expression = new Note();
                            break;
                    }
                    expression.interpret(context);
                }
            } catch (Exception e){
                e.printStackTrace();
            }
        }

    输出结果:
    上海滩:
    中速 中音 3 5 6 3 5 2 3 5 6 高音 1 中音 6 5 1 3 2

    三,总结

    优点:

    • 容易地改变和扩展文法,因为该模式使用类来表示文法规则,你可使用继承来改变或扩展该文法,也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类易于直接编写。

    缺点:

    • 解释器模式为文法中的每一条规则至少定义了一个类,因此包含许多规则的文法可能难以管理和维护,建议当文法非常复杂时,使用其他的技术如语法分析程序或编译器生成器来处理。

    使用场景:

    • 当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。
    • 有一个简单的语法规则,比如一个sql语句,如果我们需要根据sql语句进行rm转换,就可以使用解释器模式来对语句进行解释。
    • 一些重复发生的问题,比如加减乘除四则运算,但是公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。

    解释器模式真的是一个比较少用的模式,因为对它的维护实在是太麻烦了,想象一下,一坨一坨的非终结符解释器,假如不是事先对文法的规则了如指掌,或者是文法特别简单,则很难读懂它的逻辑。解释器模式在实际的系统开发中使用的很少,因为他会引起效率、性能以及维护等问题。

    参考:《大话设计模式》

    示例代码:https://github.com/wangxp423/ExerciseDesignmodel

    展开全文
  • 下载python解释器的包 wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz 解压,安装 tar -xf Python-3.6.5.tgz cd /Python-3.6.5/ ./configure make make install python3 -V Python 3.5.6 ...

    1. 安装python3.6.4
    python很多模块的安装需要依赖包,因为线上服务器都是最小化安装,所以很多依赖包都没有安装,在编译的时候会报错,缺少依赖包导致很多模块没办法安装

    首先安装依赖包:
     yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel
    
    下载python解释器的包
    wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
    
    解压,安装
    tar -xf Python-3.6.5.tgz
    cd /Python-3.6.5/
    ./configure 
    make
    make install
    python3 -V 
    Python 3.5.6
    #查看python的版本
    

    需要注意的时没有依赖包的话,有时候pip也装不上,所以后续用pip 装包的时候也不能用。一定要安装依赖包

    展开全文
  • 在初步学习编译原理时,遇到了一些不能很直观理解的概念,以下是我结合书本和网上学习的一些见解。 编译器:在一个程序...执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多...

    在初步学习编译原理时,遇到了一些不能很直观理解的概念,以下是我结合书本和网上学习的一些见解。

    编译器:在一个程序可以运行之前,它首先需要被翻译成一种能够被计算机执行的形式,简单地说,一个编译器就是一个程序,他可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。重要任务之一是报告它在翻译过程中发现的源程序中的错误。

     

    解释器:解释器是一条一条的解释执行源语言,直接利用用户提供的输入执行源程序中指定的操作。比如php,javascript就是典型的解释性语言。

     

    混合编译器:Java语言处理器结合了编译和解释过程,一个Java源程序首先被编译成一个成为字节码的中间表示方式。然后由一个虚拟机对得到的字节码加以解释运行。这样的好处具有可迁移性,即在一台机器上编译得到的字节码可以在另一台机器上解释执行。

     

    即时编译器:为了更快地完成输入到输出的处理,这种被称为即时编译器的Java编译器在运行中间程序处理输入的前一刻首先把字节码翻译成为机器语言,然后再执行程序。

     

    动态编译器:按需编译,程序在运行的过程中,用到哪一个模块就编译哪一个模块。

     

    交叉编译器:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码。

     

    预处理器:把源程序聚合在一起的任务有时会由预处理器的程序独立完成,它还负责把那些成为宏的缩写形式转换为源语言的语句。

     

    链接器:因为一个文件中的代码可能指向另一个文件的位置,而链接器就能够解决外部内存地址的问题。

     

    加载器:能把所有的可执行目标文件放到内存中执行。

     

    1.编译器和解释器之间的区别是什么?他们两者之间的优缺点。
    解释器是解释执行的源代码,编译器是将源代码编译成目标代码,它们最大的区别是程序运行时需要解释器边解释边执行,而编译器则在运行时是完全不需要的。
    优缺点:解释器比较容易让用户实现自己跨平台的代码,且解释器的错误诊断效果通常比编译器更好,因为它逐个语句地执行源程序;  而在把用户输入映射成输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多。

     

    2.在一个语言处理系统中,编译器产生汇编语言而不是机器语言的好处是什么?
    因为汇编语言比较容易调试和输出,这样就减轻了编译器设计的工作量,将部分工作转到汇编器上。

     

    3.把一种高级语言翻译成为另一种高级语言的编译器称为源到源的翻译器。编译器使用C语言作为目标语言有什么好处?
    就好比为什么编译器要产生汇编语言而是不是机器语言一样,C语言更简单更常用更加容易理解,同样方便调试和输出。

     

    4.描述一下汇编器所要完成的一些任务。
    汇编器就类似与编译器,只是它的源语言不是高级语言而是汇编语言。同样,它需要一个预处理器进行预处理,如聚合文件,展开宏等。写成的机器语言也要类似与连接器和加载器的程序,完成类似的工作。
     

    展开全文
  • 16.解释器模式

    千次阅读 2015-09-04 10:32:49
    解释器模式: 是一种不常用的设计模式 用于描述如何构成一个简单的语音解释器,主要用于使用面向对象语音开发的 编译器和解释器设计。 当我们需要开发一种新的语音时,可以考虑使用解释器模式。 尽量不使用解释...
  • Python解释器和IPython

    千次阅读 2021-01-12 10:00:24
    今天给大家介绍一下Python的一个功能非常强大的解释器IPython。虽然Python本身自带解释器,但是相对而言IPython的功能更加的强大。
  • 性能测试常见名词解释

    千次阅读 2016-11-07 10:22:21
    性能测试涉及到的常见名词解释
  • 事件查看器常见ID代码解释

    千次阅读 2016-03-23 11:14:00
    系统还原监视在所有驱动上启用。 116 信息 SRService 系统还原监视在所有驱动上禁用。 1001 信息 Save Dump 计算机已经从检测错误后重新启动。检测错误: 0x4a4b4d53 (0xc000000e, 0x01d04bf0, ...
  • 摄像头常见参数解释

    万次阅读 多人点赞 2017-01-01 13:09:26
    一般的编码输入为YV12(JM,x264)或者NV12(x264内部帧存储格式,将NV12输入x264更有优势),如果摄像头输出的是YUYV格式,就需要进行色彩空间转换,转换为软件能够接受的格式,这势必增加了计算量。因此最好选用...
  • PHP设计模式系列 - 解释器模式

    千次阅读 2012-06-25 13:57:29
    解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模。 代码: //解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作 //解释器模式非常常用,比如PHP的...
  • Python学习:使用Python解释器

    千次阅读 2018-07-16 10:14:58
    使用python解释器 使用python解释器 2.1. 调用 Python 解释器 Python 解释器通常被安装在目标机器的 /usr/local/bin/python3.5 目录下。将 /usr/local/bin 目录包含进 Unix shell 的搜索路径里,以确保可以...
  • 物联网常见名词解释

    千次阅读 2017-08-29 21:28:50
    边缘计算:边缘计算和云计算有些类似,都是处理大数据的计算运行方式。但不同的是,这一次,数据不用再传到遥远的云端,在边缘侧就能解决,更适合实时的数据分析和...接受数据输入,解释业务规则,并根据业务规则做...
  • AD域中常见属性名词解释

    万次阅读 2015-05-20 09:00:32
    AD域中常见属性名词解释 Active Directory(AD)活动目录 schema对象模型 Organizational Unit(OU)组织单位 Distinguished name(DN)识别名 Canonical Name(CN)正式名称 Domain Controllers(DC)域控制...
  • 1. 前文汇总 ...常见解释器有 JVM 为我们提供的 Java 语言的解释器,还有我们经常使用的 MySQL ,也有内置的 SQL 解释器。 不过没用是没用,对应的模式我们还是可以学习一下。 2.1 定义 解释器模式(Interp.
  • 常见端口号和解释

    万次阅读 2016-12-25 20:05:16
    用于基于 TCP/IP 验证和访问的终端访问控制访问控制系统 50 re-mail-ck 远程邮件检查协议 53 domain 域名服务(如 BIND) 63 whois++ WHOIS++,...
  • Python简介以及解释器介绍

    千次阅读 2020-12-03 00:13:36
    同时也是一种交互式语言,可以在命令行中的python解释器中直接执行代码。 C:\Windows\System32>pythonPython 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32Type ...
  • Golang解释器设计模式(十五)

    千次阅读 2019-06-05 23:14:00
    github:https://github.com/zhumengyifang/GolangDesignPatterns ... 解释器模式 解释器模式提供了评估语言的愈发或表达式的方式,它属于行为型模式,这种模式实现了一个表达式接口,该接口解释一个特定的上下...
  • Java技术常见术语及其解释(常见缩写)

    万次阅读 多人点赞 2018-12-20 17:39:37
    Java技术常见术语及其解释(Terminology) Terminology是“术语,专门用语”的意思。Java中有太多的缩写词、技术术语,初学者经常被各个术语搞得晕头转向。下边来汇总一下,希望对大家有所帮助。 JRE 与 JDK JRE: ...
  • 常见STM32术语解释

    万次阅读 2017-06-27 20:51:12
    MPU-6000(6050)整合了3轴陀螺仪、3轴加速,并含可藉由第二个I2C端口连接其他厂牌之加速、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的...
  • 1、解析器与解释器  解析器是parser,而解释器是interpreter。两者不是同一样东西,不应该混用。  前者是编译器/解释器的重要组成部分,也可以用在IDE之类的地方;其主要作用是进行语法分析,提取出句子的...
  • Python IDLE 以及编译器解释器的概念梳理 Python中IDLE是其自带的集成开发工具(IDE:同时拥有编辑、编译、调试、运行等多种功能的集成工具),并且它也是python自带的编译器和解释器。 *python的IDLE命名之所以不...
  • 汇编语言常见术语解释

    千次阅读 2018-01-05 17:43:36
    EAX 是”累加”(accumulator), 它是很多加法乘法指令的缺省寄存器。 EBX 是”基地址”(base)寄存器, 在内存寻址时存放基地址。 ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。 EDX 则...
  • 信息安全常见名词解释

    万次阅读 多人点赞 2016-10-06 10:17:36
    字典上对“基线”的解释是:一种在测量、计算或定位中的基本参照。如海岸基线,是水位到达的水位线。类比于“木桶理论”,可以认为安全基线是安全木桶的最短板,或者说,是最低的安全要求。 16. 堡垒机:其从...
  • Apache Zeppelin 中 JDBC通用 解释器

    千次阅读 2017-06-16 09:58:54
    JDBC解释器允许您无缝地创建到任何数据源的JDBC连接。 在运行每个语句后,将立即应用插入,更新和升级。 到目前为止,已经通过以下测试: Postgresql - JDBC驱动Mysql - JDBC驱动MariaDB - JDBC驱动...
  • 自制脚本语言(6) 解释器

    千次阅读 2015-12-22 14:58:59
    摘要:在前文提到的编译器的基础上,设计解释器来解释运行脚本语言。
  • Java解释器模式

    千次阅读 2012-05-23 12:09:12
    其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。  虽然你几乎用不到这个...
  • 无人机航测常见名词术语解释

    千次阅读 2019-09-02 22:23:45
    无人机航测常见名词术语解释 数据获取部分 航片: 顾名思义,利用航空摄影拍摄的地面照片; 地面分辨率: 是衡量遥感图像(或影像)能有差别地区分开两个相邻地物的最小距离的能力。超过分辨率的限度...
  • [设计模式]Interpreter解释器模式

    千次阅读 2013-01-11 18:41:37
    Interpreter解释器模式 通常当一个语言需要解释执行,并且你可以将该语言的句子表示成为一个抽象的语法树时,可以使用解释器模式 解析 1)context:包含解释器之外的一些全局信息 2)AbstractExpression:抽象...
  • 常见蓝屏代码解释及解决方法

    千次阅读 2020-07-22 20:12:59
    蓝屏代码解释及解决方法     小云因为常遇到电脑蓝屏情况,今天就来整理一下部分常见的蓝屏代码分析及解决方法。 1、蓝屏代码 文字说明:IRQL-NOT-LESS-OR-EQVAL 通常的原因:驱动程序使用了...
  • 1553B总线常见问题解释

    千次阅读 2017-08-25 09:44:36
    1、1553B总线的耦合方式有哪些?  有直接耦合和变压器耦合两种方式。   ...2、1553B各种耦合方式的总线有效距离是多少?... 通过耦合设备扩展总线,有效距离可达100米。   3、1553B总线的传输速度是

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 303,793
精华内容 121,517
关键字:

常见解释器