command_commands - CSDN
精华内容
参与话题
  • 命令模式(Command

    千次阅读 2020-06-12 14:08:35
    18、命令模式(Command) 命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互...

    18、命令模式(Command)
    命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。我们看看关系图:
    这里写图片描述

    Invoker是调用者(司令员),Receiver是被调用者(士兵),MyCommand是命令,实现了Command接口,持有接收对象,看实现代码:
    [java] view plaincopy

    public interface Command {  
        public void exe();  
    }  
    

    [java] view plaincopy

    public class MyCommand implements Command {  
      
        private Receiver receiver;  
          
        public MyCommand(Receiver receiver) {  
            this.receiver = receiver;  
        }  
      
        @Override  
        public void exe() {  
            receiver.action();  
        }  
    }  
    

    [java] view plaincopy

    public class Receiver {  
        public void action(){  
            System.out.println("command received!");  
        }  
    }  
    

    [java] view plaincopy

    public class Invoker {  
          
        private Command command;  
          
        public Invoker(Command command) {  
            this.command = command;  
        }  
      
        public void action(){  
            command.exe();  
        }  
    }  
    

    [java] view plaincopy

    public class Test {  
      
        public static void main(String[] args) {  
            Receiver receiver = new Receiver();  
            Command cmd = new MyCommand(receiver);  
            Invoker invoker = new Invoker(cmd);  
            invoker.action();  
        }  
    }  
    

    输出:command received!
    这个很哈理解,命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开,熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!
    其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。因为我们篇幅有限,很难讲每一个设计模式都讲的很详细,不过我会尽我所能,尽量在有限的空间和篇幅内,把意思写清楚了,更好让大家明白。本章不出意外的话,应该是设计模式最后一讲了,首先还是上一下上篇开头的那个图:
    这里写图片描述

    本章讲讲第三类和第四类。

    展开全文
  • Command 的基本用法

    2011-09-29 19:40:35
    使用 Command 对象查询数据库并返回 Recordset 对象中的记录,以便执行大量操作或处理数据库结构。取决于提供者的功能,某些 Command 集合、方法或属性被引用时可能会产生错误。 可以使用 Command 对象的集合、...
    使用 Command 对象查询数据库并返回 Recordset 对象中的记录,以便执行大量操作或处理数据库结构。取决于提供者的功能,某些 Command 集合、方法或属性被引用时可能会产生错误。

    可以使用 Command 对象的集合、方法、属性进行下列操作:
    使用 CommandText 属性定义命令(例如,SQL 语句)的可执行文本。

    通过 Parameter 对象和 Parameters 集合定义参数化查询或存储过程参数。

    可使用 Execute 方法执行命令并在适当的时候返回 Recordset 对象。

    执行前应使用 CommandType 属性指定命令类型以优化性能。

    使用 Prepared 属性决定提供者是否在执行前保存准备好(或编译好)的命令版本。

    使用 CommandTimeout 属性设置提供者等待命令执行的秒数。

    通过设置 ActiveConnection 属性使打开的连接与 Command 对象关联。

    设置 Name 属性将 Command 标识为与 Connection 对象关联的方法。

    将 Command 对象传送给 Recordset 的 Source 属性以便获取数据。

    注意 如果不想使用 Command 对象执行查询,请将查询字符串传送给 Connection 对象的 Execute 方法或 Recordset 对象的 Open 方法。但是,当需要使命令文本具有持久性并重新执行它,或使用查询参数时,则必须使用 Command 对象。

    要独立于先前已定义的 Connection 对象创建 Command 对象,请将它的 ActiveConnection 属性设置为有效的连接字符串。ADO 仍将创建 Connection 对象,但它不会将该对象赋给对象变量。但是,如果正在将多个 Command 对象与同一个连接关联,则必须显式创建并打开 Connection 对象,这样即可将 Connection 对象赋给对象变量。如果没有将 Command 对象的 ActiveConnection 属性设置为该对象变量,则即使使用相同的连接字符串,ADO 也将为每个 Command 对象创建新的 Connection 对象。

    要执行 Command,只需通过它所关联的 Connection 对象的 Name 属性,将其简单调用即可。必须将 Command 的 ActiveConnection 属性设置为 Connection 对象。如果 Command 带有参数,则将这些参数的值作为参数传送给方法。

    如果在相同连接上执行两个或多个 Command 对象,并且某个 Command 对象是带输出参数的存储过程,这时会发生错误。要执行各个 Command 对象,请使用独立的连接或将所有其他 Command 对象的连接断开。
    展开全文
  • Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好。 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite...

    Python3的安装

    1.安装依赖环境

    Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好。

    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    复制代码

    2. 下载Python3源代码

    下载Python3的源代码有两种方式,一种是在它的官网下载,网址如下:

    https://www.python.org/downloads/source/
    复制代码

    [图片]

    另外一种方式是通过wget直接下载,如以下命令:

    wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
    复制代码

    3. 创建安装目录

    安装目录可依个人喜好创建,比如在此创建在 /usr/local/python3

    mkdir -p /usr/local/python3
    复制代码

    4. 解压源码包

    将第2步下载到的源码包进行解压,命令为:

    tar -zxvf Python-3.6.1.tgz
    复制代码

    5. 编译源码

    先进入解压后源码包的目录,再进行配置:

    cd Python-3.6.1
    ./configure --prefix=/usr/local/python3
    复制代码

    之后再编译,然后再安装:

    make
    make install
    复制代码

    6. 建立Python3的软链接

    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    复制代码

    7. 将/usr/local/python3/bin加入PATH

    编辑bash_profile进行修改环境变量:

    vim ~/.bash_profile
    复制代码

    在PATH变量下将Python3的启动目录添加进去:

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin:/usr/local/python3/bin
    
    export PATH
    复制代码

    改动完毕之后,按Esc,再输入:wq进行保存退出。

    8. 检查Python3及Pip3是否正常可用

    执行如下命令(注意:V是大写的V),如果看到的结果一致的话,说明Python3已经成功安装。

    [alvin@VM_0_16_centos ~]$ python3 -V
    Python 3.6.1
    [alvin@VM_0_16_centos ~]$ pip3 -V
    pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
    复制代码

    避坑指南

    其实,对于Python3的安装,网络上有太多的帖子了,步骤其实都大同小异。但是,在真正动手安装之后,或多或少都会遇到一些麻烦,特别是对新手而言。下面良许就列举一些常见的坑:

    坑1:configure: error: no acceptable C compiler found in $PATH

    这个问题就比较简单,就是缺少gcc编译环境。将gcc安装上即可:

    yum install -y gcc
    复制代码

    当然除此之外,采用源码安装的方式也可以。

    坑2:zipimport.ZipImportError: can’t decompress data

    这种问题就是因为缺少zlib 的相关工具包导致的,将相关依赖包装上即可:

    yum -y install zlib*
    复制代码

    安装之后再重新编译源码,即可解决。

    坑3:pip3: Can't connect to HTTPS URL because the SSL module is not available

    这个问题是因为在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip3过程需要ssl模块,而由于没有指定,所以该功能不可用。解决办法如下:

    cd Python-3.6.2
    ./configure --with-ssl
    make
    sudo make install
    复制代码

    坑4:Multilib version problems

    这个很明显了,就是同一个库有多个版本。把多余的版本删除了就好。

    首先查询已有的版本(以openssl为例,冲突哪个查哪个)

    # rpm -qa | grep openssl
    openssl-devel-1.0.0-27.el6_4.2.x86_64
    openssl-1.0.0-27.el6_4.2.x86_64
    openssl-1.0.0-27.el6_4.2.i686
    复制代码

    可以看到系统里安装了openssl-1.0.0-27.el6_4.2.x86_64和openssl-1.0.0-27.el6_4.2.i686两个版本的openssl,我们留下x86的版本即可:

    rpm --erase --nodeps openssl-1.0.0-27.el6_4.2.i686
    复制代码

    再更新一下openssl:

    # yum update "openssl*"
    复制代码

    再查询一下openssl,问题解决!

    # rpm -qa | grep openssl
    openssl-devel-1.0.1e-16.el6_5.7.x86_64
    openssl-1.0.1e-16.el6_5.7.x86_64
    复制代码


    我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注我的公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。



    展开全文
  • 在ubuntu系统下,系统默认python2.7和python3.5,但需要使用更高的python版本的pip3时可能遇到的错误 问题一: Traceback (most recent call last):  File "/usr/bin/pip3", line 9, in &...

    在ubuntu系统下,系统默认python2.7和python3.5,但需要使用更高的python版本的pip3时可能遇到的错误

    问题一:

    Traceback (most recent call last):
      File "/usr/bin/pip3", line 9, in <module>
        from pip import main
    ImportError: cannot import name 'main'

    解决办法:

    sudo vim /usr/bin/pip3

    修改:

    from pip import main
    if __name__ == '__main__':
        sys.exit(main())

    为:

    from pip import __main__
    if __name__ == '__main__':
        sys.exit(__main__._main())

    注意:单下划线和双下划线

    问题二:

    使用pip3安装任何模块时的类似报错:

    Traceback (most recent call last):
      File "/usr/bin/pip3", line 11, in <module>
        sys.exit(__main__._main())
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/__init__.py", line 246, in main
        return command.main(cmd_args)
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/basecommand.py", line 264, in main
        timeout=min(5, options.timeout)) as session:
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/basecommand.py", line 81, in _build_session
        insecure_hosts=options.trusted_hosts,
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/download.py", line 338, in __init__
        self.headers["User-Agent"] = user_agent()
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/download.py", line 101, in user_agent
        zip(["name", "version", "id"], distro.linux_distribution()),
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 120, in linux_distribution
        return _distro.linux_distribution(full_distribution_name)
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 634, in linux_distribution
        self.version(),
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 688, in version
        self.lsb_release_attr('release'),
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 836, in lsb_release_attr
        return self._lsb_release_info.get(attribute, '')
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 522, in __get__
        ret = obj.__dict__[self._fname] = self._f(obj)
      File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 933, in _lsb_release_info
        stdout = subprocess.check_output(cmd, stderr=devnull)
      File "/usr/bin/python3.6/lib/python3.6/subprocess.py", line 336, in check_output
        **kwargs).stdout
      File "/usr/bin/python3.6/lib/python3.6/subprocess.py", line 418, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

    解决办法:

    sudo vim /usr/bin/lsb_release

    修改第一行,指明python的版本号,若安装的是python3.6则修改:

    #!/usr/bin/python3

    为:

    #!/usr/bin/python3.6

    展开全文
  • 本文以Centos7系统为例,演示如何安装python3.6和相应环境。安装Python3的机器必须要能访问外网才能进行如下操作! 1. 安装方式 在Centos下安装python有两种方式: ...通过yum安装 (推荐) ...这里推荐第一种方式...
  • 那就是 Command ⌘ 键 . 但是你可能根本不知道这个键上面的图标的来历与前世今生. 那到底这个字符代表着什么, 而且又这么重要呢? ⌘ * 老款的Mac上还有苹果图标来标示Command Key 这个符号其实有很多的...
  • Linux下的 command not found错误(解决方法)

    万次阅读 热门讨论 2017-12-22 14:12:20
    Linux下的 command not found错误(解决方法)
  • linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,然后一编译就出现这样错误(并不是...
  • Command Buffer是Unity5新增的一个灰常灰常强大的功能。先祭出官方介绍和文档。我们在渲染的时候,给OpenGL或者DX的就是一系列的指令,比如glDrawElement,glClear等等,这些东西目前是引擎去调用的,而Unity也为...
  • 11种行为型模式之:命令模式(Command)

    万次阅读 2017-04-11 16:25:22
    定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销...Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute
  • python安装第三方库遇到 ERROR: Command errored out with exit status 1:…的问题 先来看看错误提示: 本来想用python弄个词云玩玩,没想到在安装wordcloud库的时候居然给我这一大串红叉叉,很是奔溃,出师不利啊!...
  • 0x00 前言 文章中的文字可能存在语法错误以及...1.前几次还好用的命令,这次再输入就出现-bash: ***: command not found的情况; 2.第一次使用就出现 -bash: ** : command not found的情况。 导致这种问题的原...
  • [设计模式]Command命令模式

    千次阅读 2019-12-22 21:14:13
    command命令模式 Command模式通过将请求封装到一个对象(Command)中,并将请求的接收者存放到具体的ConcreteCommand类中的(reciver)中,从而实现调用操作的对象和操作的具体实现之间的解耦。 解析:Command模式...
  • -bash: wget: command not found的两种解决方法 今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包。一般linux最小化安装时,wget不会默认被安装。 可以...
  • Python报错ERROR: Command errored out with exit status 1:

    万次阅读 多人点赞 2020-08-24 10:48:01
    因为Pycharm最近老是弹出RELP COMMUNICATIONS,非常影响代码运行的效率。 REPL(Read-Eval-Print Loop),翻译过来就是“读取-求值-输出”循环,是一个简单的...ERROR: Command errored out with exit status 1: ...
  • Linux命令行报bash:.....:command not found的解决办法

    万次阅读 热门讨论 2008-07-30 14:21:00
    Linux命令行输入命令执行后报“bash:....:command not found”这是由于系统PATH设置问题,PATH没有设置对,系统就无法找到精确命令了。 1、在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/...
  • Command line is too long问题解决

    万次阅读 多人点赞 2018-07-09 20:38:59
    Idea启动项目报错:Command line is too long. Shorten command line for className or also for JUnit defaultconfiguration.如下图所示:解决方法:在该项目文件夹.idea/workspace.xml中找到&lt;component name...
  • Centos出现-bash: unzip: command not found的解决办法

    万次阅读 多人点赞 2016-05-17 14:11:19
    unzip: command not found的错误。   unzip——命令没有找到,其原因肯定是没有安装unzip。   利用一句命令就可以解决了。   命令是:   yum install -y unzip zip   安装成功后就可以使用unzip命令...
  • Intellij IDEA运行报Command line is too long解法

    万次阅读 多人点赞 2018-06-07 16:22:42
    报错内容:Error running 'ServiceStarter': Command line is too long. Shorten command line for ServiceStarter or also for Application default configuration.解法:修改项目下 .idea\workspace.xml,找到标签 ...
  • zsh: command not found:

    万次阅读 2018-05-22 13:18:54
    zsh: command not found:"这个错误相信大家都不陌生,以前每次遇到这个问题都是Google一下,然后告诉你在xxx文件添加xxx文字,或者在Terminal运行xxx命令即可,有些work,有些不行。万事皆有因,今天我们就来说...
1 2 3 4 5 ... 20
收藏数 1,191,882
精华内容 476,752
关键字:

command