精华内容
参与话题
问答
  • 命令模式(Command

    千次阅读 2018-08-02 09:16:49
    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 对象的连接断开。
    展开全文
  • Python--command模块

    万次阅读 2017-11-13 11:23:44
    command模块

    command模块只使用与linux的shell模式下

    在我们平时码字时,经常需要调用系统脚本或者系统命令来解决很多问题,接下来我们就介绍给大家一个很好用的模块command,可以通过python调用系统命令,调用系统命令command模块提供了三种方法:cmd代表系统命令

    1.commands.getoutput(cmd)

    只返回执行shell命令的结果:

    举个例子:

    [root@localhost ~]# cat a.py

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    import commands

     

    cmd = 'ls /home/admin'

    a = commands.getoutput(cmd)

    print(type(a))

    print(a)

     

    结果:

    [root@localhost ~]# python a.py

    <type 'str'>

    nginx.conf

    nginx_upstream_check_module-master.zip

    test.py

    commands是提供linux系统环境下支持使用shell命令的一个模块,在企业中,我们很多的脚本和环境都是在linux系统中跑起来的,

    2.commands.getstatusoutput(cmd)

    在上面我们在执行shell命令的时候,我们的shell命令可能执行报错,或者异常退出,我们就要有一个条件来判断shell最终执行的结果是什么,commands.getstatusoutput(cmd)的返回结果有两个值,

    [root@localhost ~]# cat c.py

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-

    import commands

    cmd = 'ls /home/admin'

    c = commands.getstatusoutput(cmd)

    print(type(c))

    status, output =commands.getstatusoutput(cmd)

    print(status)

    print(output)

    print(type(output))

    结果:

    [root@localhost ~]# python c.py

    <type 'tuple'>

    0

    nginx.conf

    nginx_upstream_check_module-master.zip

    test.py

    <type 'str'>

    解释:

    Commands.getstatusoutput(cmd)的返回结果是一个tuple,第一个值是shell执行的结果,如果shell执行成功,返回0,否则,为非0,第二个是一个字符串,就是我们shell命令的执行结果,python通过一一对应的方式复制给status和output,这个就是python语言的额巧妙之处。





    展开全文
  • 代理 代理帮助系统之间进行网络通信,作为网络通信之间的媒介。现有许多代理都能够支持重定向,包括HTRAN,ZXProxy和ZXProtMap。 代理的定义还可以拓展为P2P网络之间的信任关系,定期通信主机群或系统中的可信连接。...

    代理

    代理帮助系统之间进行网络通信,作为网络通信之间的媒介。现有许多代理都能够支持重定向,包括HTRAN,ZXProxy和ZXProtMap。

    代理的定义还可以拓展为P2P网络之间的信任关系,定期通信主机群或系统中的可信连接。

    网络内可能有一个或多个互相信任的组织。攻击者可以利用这些关系来管理远程控制通信,减少同时出站的连接数,在连接失败时能够弹性处理,避免在受控主机之间直接通信而被怀疑。

    自定义远控通信协议

    使用自定义的通信协议而不是现有的标准应用层协议中封装的命令/协议。自定义协议在著名的TCP/IP或其他网络堆栈标准协议的基础上进行模仿构建。

    自定义加密协议

    攻击者可以使用自定义的加密协议或算法来隐藏远控通信流量。例如简单地使用固定密钥对铭文进行异或运算,这将产生一个非常弱的密文。

    自定义加密方案的复杂度各有不同。对恶意样本进行逆向分析可能能够发现加密密钥和算法。一些攻击者就尝试自己实现一个众所周知加密算法的自有版本,而不是基于现有的库函数实现加密算法。

    数据加密

    远控数据使用基础数据加密系统进行加密。数据加密算法遵循现有的规范,包括使用ASCII, Unicode, Base64, MIME, UTF-8或其他二进制转文本,字符加密算法。一些数据加密的算法也可能导致数据压缩,例如gzip。

    数据混淆

    远控流量不一定被加密但一定是被隐藏的,攻击者试图使通信内容难以被发现并且通信行为与命令看起来不那么可疑、显眼。这包括许多方法,包括向协议流量中加入垃圾数据,使用隐写术,将C2通信流量与合法流量混合,使用非标准数据编码系统(例如,针对HTTP请求的消息体修改的Base64编码)。

    域前端

    域前端利用内容交付网络(Content Delivery Networks, CDNs)的路由方案和管理多个域的其他服务来混淆HTTP流量或通过HTTPS传输的隧道流量的通信目的。

    使用的技术包括在TLS头部的SNI以及HTTP头部的Host使用不同域名。如果两个域由同一CDN提供服务,在解开TLS包头部信息之后,CDN可能会路由到HTTP包头中指定的地址。该技术的一种变体,叫做“结构域”前端,该技术将SNI设为空白,即使CDN尝试验证SNI和HTTP的HOST字段是否匹配,在忽略空白SNI的前提下,前端仍旧可以工作。

    例如,域x和域y是同一CDN中的客户端,可能在TLS头部信息中设置域x,在HTTP头部信息中设置域y,原本发往域x的流量可能会被CDN路由至域y。

    域名生成算法

    攻击者利用域名生成算法(Domain Generation Algorithms, DGAs)来动态定义远控通信的地址,而不是固定地从一个IP池或域名池中取用。这使得检测方难以拦截、追踪和接管远控通信,因为域名生成算法会为攻击者提供数千个地址。

    域名生成算法生成的域名为明显随机或乱码的字符串,或者,有的域名生成算法随机选择完整的单词作为随机单位,而不是随机字母。大多数的域名生成算法是基于时间的,不同的时间生成不同的域名;有的算法会选取一个种子用于随机算法,以防止检测方预测出未来可能会使用的域名。

    攻击者也可能使用域名生成算法构建备用通道,当与最初的远控服务器连接丢失时,可以使用DGA方法重建远控连接。

    备用通道

    当主要通信通道被控制或无法连接时,为了维持远控可用性,避免数据传输达到阈值,攻击者可能会准备一个备用的通信通道。

    展开全文
  • Command 模式

    2008-06-03 12:39:00
    Command 模式大多数类都是一组方法和相应的一组变量的结合。而Command 仅仅由一个具有唯一方法的接口组成。简单的几乎可笑。所以有人说该模式具有功能分解的意味,根本是对面向对象的亵渎。 Public interface ...
  • command

    2019-09-17 14:04:24
    >cd E:\Android\sdk\build-tools\28.0.3 >aapt dump badging e:/svn/CheckMeINT/trunk_checkme_int/app/build/outputs/apk/GooglePlay/debug/app-GooglePlayDebug-2.0.0.apk
  • 0x00 前言 文章中的文字可能存在语法错误以及...1.前几次还好用的命令,这次再输入就出现-bash: ***: command not found的情况; 2.第一次使用就出现 -bash: ** : command not found的情况。 导致这种问题的原...
  • 解决mac安装homebrew后报错-bash: brew: command not found

    万次阅读 多人点赞 2016-09-18 10:32:36
    参照官网上很简单的一句安装命令, /usr/bin/ruby -e "...安装完毕后,发现使用brew命令,却总是提示:-bash: brew: command not found 于是怀疑安装过程出现问题,打算重装,重装却报: ...
  • Linux下的 command not found错误(解决方法)

    万次阅读 热门讨论 2017-12-22 11:05:53
    Linux下的 command not found错误(解决方法)
  • --------------------------------------------------------------------------------------------------------------------------------------------------------------------- 查看有无yum安装包 ,有的话卸载...
  • 解决mvn command not found

    万次阅读 2017-01-05 10:47:20
    环境变量是这样写: export JAVA_HOME=/usr/java/jdk1.8.0_111 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export M3_HOME=/usr/local/maven3 export PATH=$JAVA_HOME/bin:$M3_...
  • 解决:bash: make: command not found

    万次阅读 2017-06-19 15:44:17
    一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装下即可。 yum -y install gcc automake autoconf libtool make
  • mac 终端下,执行以下命令,即可安装brew: /usr/bin/ruby -e "$(curl -fsSL ... 在终端环境下,brew --version 查看brew的版本,也可以验证brew是否安装成功 ...
  • centos中执行apt-get命令提示apt-get command not found

    万次阅读 多人点赞 2018-04-04 09:26:27
    在centos下应该用yuminstallxxxyum和apt-get的区别 一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat、Centos、Fedora等 2.Debian系列:Debian、Ubuntu等 RedHat系列 1常见的安装包格式rpm包,安装rpm...
  • Mac OS zsh: command not found: mysql解决方案

    万次阅读 多人点赞 2018-12-28 15:45:31
    打开终端,命令行输入:mysql,总是返回:zsh:command not found: mysql 网上的各种方法都试过了,比如ln -s 系列的改路径,command+R的改权限,统统都不行。 后来找到方法,轻松解决问题,在这里记录一下: ...
  • systemctl command not found

    万次阅读 2020-04-08 22:29:40
    最小化安装的ubuntu,没有systemctl ,可以使用service代替,通过下面的方式可以安装systemctl。 安装 systemctl sudo apt-get install --reinstall systemd 设置服务开机启动 sudo systemctl enable ssh ...
  • 解决: Linux – git: command not found

    万次阅读 2018-06-29 10:44:45
    出错原因:服务器没有安装GIT,所以导致出错。解决方法:Centos下使用:yum install git -y 或者 yum install -y gitUbuntu/Debian下使用 : apt-get install git -y转自:...
  • -bash: cnpm: command not found -bash: yarn: command not found -bash: xxxx: command not found 如上yarn/cnpm皆通用,前提是安装成功后报这个错误哈! Error: EACCES: permission denied...
  • zsh: command not found:

    万次阅读 2018-05-22 13:17:26
    zsh: command not found:"这个错误相信大家都不陌生,以前每次遇到这个问题都是Google一下,然后告诉你在xxx文件添加xxx文字,或者在Terminal运行xxx命令即可,有些work,有些不行。万事皆有因,今天我们就来说...
  • CentOS解决-bash: vim: command not found

    万次阅读 2019-04-16 13:52:31
    那么如何安裝 vim 呢? 输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: root@server1 [~]# rpm -qa|grep vim vim-enhanced-7.0.109-7.el5 vim-minimal-7.0.109-7.el5 ...

空空如也

1 2 3 4 5 ... 20
收藏数 1,315,917
精华内容 526,366
关键字:

command