精华内容
参与话题
问答
  • 命令模式(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方法重建远控连接。

    备用通道

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

    展开全文
  • nohup command >/dev/null 2>&1 & 到底什么意思?1.nohupnohup 的用途就是让提交的命令忽略 hangup 信号,那什么叫做hangup信号?这里给出了答案 ...
  • /dev/null的作用

    2012-09-10 18:37:27
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。... 今天一个朋友突然在自己的维护的Linux中, /var/spool/cron/root 中看到了以下的内容: ...
  • Linux /dev/null

    千次阅读 2018-08-08 10:30:55
    一、/dev/null null是一个名叫null小桶的东西,如果命令的输出不想要即想丢弃输出的内容,既不想在标准输出与...二、command &gt;/dev/null 与 command &gt;/dev/null 2&gt;&amp;1 command &g...
  • 命令模式(command pattern) 撤销(undo) 详解 本文地址:http://blog.csdn.net/caroline_wendy 参考命令模式:http://blog.csdn.net/caroline_wendy/article/details/31379977 命令模式可以用于执行撤销(undo)...
  • 设计模式之命令模式---Command Pattern

    千次阅读 2016-08-06 10:37:34
    模式的定义命令模式是一个高内聚的模式,定义如下:Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable ...
  • C++设计模式--命令模式(Command)

    千次阅读 2019-03-05 07:44:56
    命令模式的结构很简单,但是对于消除代码间的耦合却有着重要的影响。命令模式就是一个函数对象:一个作为对象的函数。通过将函数封装为对象,就能够以参数的额形式将其传递给其他函数或者对象,告诉它们在旅行请求的...
  • 本文是对面向对象设计模式--命令模式Command)的解析,主要分为定义解析、通过餐厅点餐案例、遥控器案例讲解命令模式、多案例练习加深对命令模式的理解、最后总结知识要点。 第一篇:定义解析 命令模式是GoF...
  • 命令模式是从界面设计中提取出来的一种分离耦合,提高重用性的方法,可以分离显示逻辑和业务逻辑的耦合。 将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化;对请求队列或记录请求日志,以及...
  • 命令模式Command Pattern)是一个高内聚的行为型模式,将请求封装为对象,使用不同请求参数化客户端,排队或记录请求,并支持可撤销操作,其本质是对命令的抽象和封装
  • 命令模式(command pattern) 宏命令(macro command) 详解本文地址:http://blog.csdn.net/caroline_wendy参考: 命名模式(撤销):http://blog.csdn.net/caroline_wendy/article/details/31419101命令模式可以执行宏命令...
  • 【1】命令模式 命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式是对命令的封装...
  • 一、意图  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 ...(1)系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接...
  • 命令模式Command) Java实现

    千次阅读 2019-06-08 16:43:43
    命令模式Command)的定义 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数...
  • 命令模式Command Pattern)概念: 概述:在软件设计中,我们经常会遇到某些对象发送请求,然后某些对象接受请求后执行,但发送请求的对象可能并不知道接受请求的对象是谁,执行的是什么动作。此时可通过 命令模式...
  • [设计模式]Command命令模式

    千次阅读 2013-01-04 21:38:50
    command命令模式 Command模式通过将请求封装到一个对象(Command)中,并将请求的接收者存放到具体的ConcreteCommand类中的(reciver)中,从而实现调用操作的对象和操作的具体实现之间的解耦。 解析:Command模式...
  • 我想大部分的新人跟我一样刚开始学习Unity的时候,控制人物行的写法是这样的。 using UnityEngine; using System.Collections; public class Test : MonoBehaviour { ... void Update () {  if (Input.GetKeyDown...
  • 概述:  我们去餐厅吃饭,我们是通过服务员来点菜,具体是谁来做这些菜和他们什么时候完成的这些菜,...其实这就是本文要说的Command模式。  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对
  • 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作 模式动机: 命令模式可以将发送者和接收者完全解耦,发送者与接收者之间...
  • 设计模式 ( 十三 ) 命令模式Command(对象行为型) 1.概述  在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的...
  • 什么是命令模式 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 命令模式可用来消除程序中的耦合问题。每个“常规”的操作必须...
  • 有些时候我们想某个对象发送一个请求,但是我们并不知道该请求的具体接收者是谁,具体的处理过程是如何的,们只知道在程序运行中指定具体的请求接收者即可,对于这样将请求封装成对象的我们称之为命令模式。所以命令...
  • 定义与结构命令模式Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象...
  • 走进命令模式 在餐厅的情境中,我们看看餐厅是怎样工作的: 1、顾客走进餐厅,点好菜后,生成订单交给女服务员。 2、女服务员把订单拿到厨房工作室,大喊一声:“订单来了!” 3、厨师订单准备餐点。 上面情境各...
  • 命令模式 定义 将一个请求封装为一个对象,根据不同的请求对客户进行参数化。 结构 Command(命令抽象类):定义一组可以执行的操作接口。 ConcreteCommand(具体命令类):它持有Receiver的引用,针对不同的...
  • Command 命令模式

    2016-11-20 15:56:57
    在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定...对于这种情况,我们可以采用命令模式来进行设计。  一、基本定义
  • Matlab命令模式(Command)

    2019-06-08 00:43:21
    命令模式(Command)将命令封装为对象,实现命令发送者和命令接收者的解耦。线程池、MVC框架用到了命令模式,本文根据以下类图,用matlab实现命令模式。 Invoker.m (传递命令对象Invoker:持有命令对象,要求命令...

空空如也

1 2 3 4 5 ... 20
收藏数 2,290,801
精华内容 916,320
关键字:

command