精华内容
下载资源
问答
  • shell学习2:交互模式和非交互模式

    千次阅读 2019-03-12 16:56:46
    shell的模式可分为交互模式和非交互模式交互模式,就是需要和用户交互才可以将程序执行完毕。如下: 1 #!/bin/bash 2 # 3 CAT() 4 { 5 cat /etc/passwd | head -$line 6 } 7 echo -n "Input ...

     shell的模式可分为交互模式和非交互模式。

    交互模式,就是需要和用户交互才可以将程序执行完毕。如下:

      1 #!/bin/bash
      2 #
      3 CAT()
      4 {
      5     cat /etc/passwd | head -$line
      6 }
      7 echo -n "Input number of lines:"
      8 read line
      9 limit=6
     10 #
     11 if [ $limit -gt $line ]
     12 then
     13     while [ -n $line ]
     14     do
     15         CAT
     16         break 2
     17     done
     18 #
     19     echo -n "Contine?(answer yes/no):"
     20     read answer
     21     if [ $answer = 'yes' ]
     22     then
     23         let line=line+1
     24         CAT
     25     fi
     26 fi
     27 exit 0
    

    解释:

    3-6行是定义个CAT的函数,该函数的作用是读取/etc/passwd文件中的内容并通过管道输送给head命令,head命令根据变量$line的值将指定的行显示出来。

    7行,提示输入一个数字,即要显示的行数。

    8行,使用read命令读取在第7行输入的行数值,并将读取到的信息值存在变量$line中。

    11行,比较两个变量值的大小。

    13-17行,此while循环语句结构调用CAT函数读取指定文件的内容,并在读取完成后退出,其中第13行中的-n选项,用于判断行数是否为空,不为空时为真,第15行是调用CAT函数。

    21-25行,在满足条件时(用户输入yes),执行调用函数读取/ect/passwd文件中的行,其中23行表示将变量line中的值加1,也就是多读取一行的信息。

    非交互模式,就是不需要和用户交互,就可以将程序执行完毕,如下:

      1 #!/bin/bash
      2 #
      3 CAT()
      4 {
      5     cat /etc/passwd | head -$line
      6 }
      7 
      8 limit=6
      9 line=2
     10 #
     11 if [ $limit -gt $line ]
     12 then
     13     while [ -n $line ]
     14     do
     15         CAT
     16         break 2
     17     done
     18 #
     19 echo 
     20     let line=line+1
     21     CAT
     22 fi
     23 exit 0
    

    参考:陈祥琳 编《linux shell脚本从入门到精通》 机械工业出版社

    展开全文
  • VTK交互系统 1 交互模式入门

    千次阅读 2019-11-21 16:59:28
    在VTK中,交互一般使用 命令/观察者模式来进行交互,即观察者等待命令,一旦有命令触发,就去执行该交互函数。 有两种实现模式: 1. 设置回调函数 2. 继承command类,然后实现内部函数 我们先看第一种方式。 ...

    在VTK中,交互一般使用 命令/观察者模式来进行交互,即观察者等待命令,一旦有命令触发,就去执行该交互函数。

    有两种实现模式:

    1. 设置回调函数   2. 继承command类,然后实现内部函数

    我们先看第一种方式。

    我们看代码,首先定义一个回调函数,注意回调函数的函数签名,除了函数名以外其他部分例如返回值,参数列表都必须一样。

    void MyCallbackFunc(vtkObject*, unsigned long eid, void* clientdata, void *calldata)
    {
    	std::cout << "aaaaaaaa " << std::endl;
    }

    然后在主函数里我们定义回调函数

    	vtkSmartPointer<vtkCallbackCommand> mouseCallback =
    		vtkSmartPointer<vtkCallbackCommand>::New();
    	mouseCallback->SetCallback(MyCallbackFunc);

    最后再将回调函数命令对象添加到观察者列表中。

    	interactor->SetRenderWindow(viewer->GetRenderWindow());
    	interactor->AddObserver(vtkCommand::LeftButtonPressEvent, mouseCallback);
    // 这里的interactor的定义为 vtkSmartPointer<vtkRenderWindowInteractor> interactor

    这样设置以后,我们点击vtk界面时就会在终端输出 "aaaaaaaa" 了

    我们再看第二种方式:从vtkCommand类中派生出子类。

    首先进行派生:

    //第一步
    class vtkMyCallback : public vtkCommand
    {
    public:
    	static vtkMyCallback *New() 
    	{ return new vtkMyCallback; }
    
    	void someFunction(int a)
    	{
    		value = a;
    	}
    //就是打印一下这个value罢了,没别的用处
    	virtual void Execute(vtkObject *caller, unsigned long eventId, void* callData)
    	{
    		std::cout << "value = " << value << std::endl;
    	}
    
    private:
    	int value;
    };

    为了看效果,在这里我们给里面进行了一个赋值:value,主要就是因为这里的参数是固定的,所以我们没有其他可以用来输出的东西了,就勉强输出一个value算了。

    剩下的步骤和之前类似:

            //第二步
    	vtkSmartPointer<vtkMyCallback> callback = vtkSmartPointer<vtkMyCallback>::New();
    	callback->someFunction(222);
    	//第三步
    	interactor->AddObserver(vtkCommand::LeftButtonPressEvent, callback);

    点击屏幕区域,就会输出 "value = 222" 了。

    展开全文
  • 微服务中服务之间的交互模式

    千次阅读 2019-08-08 11:28:12
    微服务各服务之间的交互定义契约、服务的生产者和调用者都需要遵守一些通用的设计模式,这样才能保证微服务不出问题。 1. 读者容错模式 读者容错模式(Tolerant Reader)指微服务化中服务提供者和消费者之间如何对...

    微服务各服务之间的交互定义契约、服务的生产者和调用者都需要遵守一些通用的设计模式,这样才能保证微服务不出问题。

    1. 读者容错模式

    读者容错模式(Tolerant Reader)指微服务化中服务提供者和消费者之间如何对接口的改变进行容错。从字面上来讲,消费者需要对提供者提供的功能进行兼容性设计,尤其对服务提供者返回的内容进行兼容,或者解决在服务提供者改变接口或者数据的格式的情况下,如何让服务消费者正常运行。

    任何一个产品在设计时都无法预见将来可能增加的所有需求,服务的开发者通常通过迭代及时地增加新功能,或者让服务提供的API自然地演进。不过,服务提供者对外提供的接口的数据格式的改变、增加和删除,都会导致服务的消费者不能正常工作。

    因此,在服务消费者处理服务提供者返回的消息的过程中,需要对服务返回的消息进行过滤,只提取自己需要的内容,对多余或者未知的内容采取抛弃的策略,而不是硬生生地抛错处理。

    在实现过程中不推荐使用严格的校验策略,而是推荐使用宽松的校验策略,即使服务消费者拿到的消息报文发生了改变,程序也只需尽最大努力提取需要的数据,同时忽略不可识别的数据。只有在服务消费者完全不能识别接收到的消息,或者无法通过识别的信息继续处理流程时,才能抛出异常。

    服务的消费者的容错模式忽略了新的消息项、可选的消息项、未知的数据值及服务消费者不需要的数据项。

    笔者当前在某个支付公司工作,公司里几乎每个业务都需要使用枚举类型,在微服务平台下,笔者在研发流程规范中定义了一条枚举值使用规范:

    在服务接口的定义中,参数可以使用枚举值,在返回值的DTO中禁止使用枚举值。

    这条规范就是读者容错模式在实践中的一个实例,之所以在参数中允许使用枚举值,是因为如果服务的提供者升级了接口,增加了枚举值,若服务的消费者并没有感知,则服务的消费者得知新的枚举值就可以传递新的枚举值了;但是如果接口的返回DTO中使用了枚举值,并且因为某种原因增加了枚举值,则服务消费者在反序列化枚举时就会报错,因此在返回值中我们应该使用字符串等互相认可的类型,来做到双方的互相兼容,并实现读者容错模式。

    2. 消费者驱动契约模式

    消费者驱动契约模式用来定义服务化中服务之间交互接口改变的最佳规则。

    服务契约分为:提供者契约、消费者契约及消费者驱动的契约,它从期望与约束的角度描述了服务提供者与服务消费者之间的联动关系。

    • 提供者契约:是我们最常用的一种服务契约,顾名思义,提供者契约是以提供者为中心的,提供者提供了什么功能和消息格式,各消费者都会无条件地遵守这些约定,不论消费者实际需要多少功能,消费者接受了提供者契约时,都会根据服务提供者的规则来使用服务。

    • 消费者契约:是对某个消费者的需求进行更为精确的描述,在一次具体的服务交互场景下,代表消费者需要提供者提供功能中的哪部分数据。消费者契约可以被用来标识现有的提供者契约,也可以用来发现一个尚未明确的提供者契约。

    • 消费者驱动的契约:代表服务提供者向其所有当前消费者承诺遵守的约束。一旦各消费者把自己的具体期望告知提供者,则提供者无论在什么时间和场景下,都不应该打破契约。

    在现实的服务交互设计中,上面这三种契约是同时存在的,笔者所在的支付平台里,交易系统在完成一笔支付后,需要到账务系统为商户入账,在这个过程中,服务契约表现如下。

    • 生产者契约:账务系统提供Dubbo服务化接口,参数为商户账户ID、入账订单号和入账金额。

    • 消费者契约:账务系统返回DTO,包含商户账户ID、入账订单号、入账金额、入账时间、账务流水号、入账状态等,而交易系统只需使用其中的入账订单号和入账状态。

    • 消费者驱动的契约:为了保证资金安全,交易系统作为入账的发起者向账务提出要求,需要账务做幂等和滤重处理,对重复的入账请求进行拦截;账务系统在接受这个契约后,即使将来有任何改变,也不能打破这个限制,否则就会造成资金的损失,这在金融系统中是最严重的问题。

    服务之间的交互需要使用的三种服务契约如下图所示:

    从上图可以看到,服务提供者契约是服务提供者单方面定下的规则,而一个消费者契约会成为提供者契约的一部分,多个服务消费者可以对服务提供者提出约束,服务提供者需要在将来遵守服务消费者提出的契约,这就是消费者驱动的契约。

    3. 去数据共享模式

    与SOA服务化对比,微服务是去ESB总线、去中心化及分布式的;而SOA还是以ESB为核心实现遗留系统的集成,以及基于Web Service为标准实现的通用的面向服务的架构。在微服务领域,微服务之间的交互通过定义良好的接口来实现,不允许使用共享数据来实现。

    在实践的过程中,有些方案的设计使用缓存或者数据库作为两个微服务之间的纽带,在业务流程的处理过程中,为了处理简单,前一个服务将中间结果存入数据库或者缓存,下一个服务从缓存或者数据库中拿出数据继续处理。处理流程如下图所示。

    这种交互流程的缺点如下。

    • 使得微服务之间的交互除了接口契约,还存在数据存储契约。
    • 上游的数据格式发生变化时,可能导致下游的处理逻辑出现问题。
    • 多个服务共享一个资源服务,对资源服务的运维难以划清职责和界限。
    • 在做双机房独立部署时,需要考虑服务和资源的路由情况,跨机房的服务调用不能使用独立的资源部署模式,因此难以实现服务自治。

    因此,在设计微服务架构时,一定不要共享缓存和数据库等资源,也不要使用总线模式,服务之间的通信和交互只能依赖定义良好的接口,通常使用RESTful样式的API或者透明的RPC调用框架。

     

    https://www.cnblogs.com/lidabo/p/9288277.html 原文

    展开全文
  • Python运行脚本后进入交互模式

    千次阅读 2020-01-16 16:38:12
    终端中输入命令python -i test.py运行脚本,脚本执行打印出“Hello”后直接进入了与解释器的交互模式中,在这个上下文环境中,可以直接使用脚本中定义的变量函数。示例如下: $ python -i test.py Hello >>&...

    在运行脚本的时候,想要在运行后进入交互模式,在运行脚本的命令中的文件参数前,加选项 -i 就可以了

    测试

    test.py文件内容如下:
    test.py
    终端中输入命令python -i test.py运行脚本,脚本执行打印出“Hello”后直接进入了与解释器的交互模式中,在这个上下文环境中,可以直接使用脚本中定义的变量函数。示例如下:

    $ python -i test.py 
    Hello
    >>> a
    [1, 2, 3]
    >>> 
    
    展开全文
  • 注意事项: 1.判断条件语句结尾要跟":" 2.注意缩进 代码是一行正确后才开始敲下一行,一定要把格式敲正确了,然后再敲回车(敲回车进入...函数定义完成后,连敲两次回车(表示函数定义完成,可以使用了)。 ...
  • ftp脚本 实现非交互模式上传文件

    千次阅读 2014-12-16 14:58:04
    1、Linux ftp脚本 实现非交互模式上传文件 ftpput.sh ----------------------------------------------------------------------------- #!/bin/sh  if [ $# -ne 2 ]  then ...
  • 换行方法 \ 如: >>> print 'aaa'; \ ... print 'bbb'; \ ... print 'ccc' 注意;号的使用。 python本身语句结束和间隔都是不需要;号的,但是在换行时要使用;号,最后一行不要求必须有;......
  • 本文是zynq 7000 AMP模式 双裸核CPU同时运行的继续。本文主要是上文的基础上增加通过共享内存的方式,演示2个裸核的交互。 共享内存前先看看内存地址分布,这个图取自 ug585 4.1 节 address map 的表4-1 本文...
  • 应用设计模式开发命令行交互程序

    千次阅读 2015-07-08 11:48:49
    传统的命令行交互模式,不具备回退、跳转等功能,缺少用户交互的灵活性。本文通过几种设计模式的组合,实现了一个通用的轻量级的命令行交互程序的解决方案,同时为系统重构、功能扩展以及代码的维护提供了方便。 ...
  • 1.先初略看了开发环境的选择,首先通过idle交互模式的使用编写代码,与C不同的是用print输出,并非printf。 问题:为什么 >>> a=30 再 >>>a (输入a后) 输出的是a 的值 30; 接下来我测试了一...
  • 在基于SOA的应用集成项目中,用户会定义很多服务接口用于系统之间的交互。作为SOA应用集成中的基本元素,服务总线中的服务接口的定义规范对应用集成项目的实施具有重要的指导意义。 根据我的经验,在应用集成项目中...
  • 先来说一下Android控件的交互事件监听。 有过Android开发经验的人都知道Android控件的事件监听流程一般有如下几步: 1、首先在布局文件***.xml中定义某一控件,我们拿登录界面来举例吧,一般登录界面中会有两个...
  • 一个强大的可视化系统不仅需要强大的数据处理能力,也需要方便易用的交互功能。图形处理软件ParaView(hhttp://www.paraview.org)、德国癌症研究中心研发的MITK(http://www.mitk.org)等开源软件系统都提供了强大...
  • 云计算:简述云计算的定义模式

    万次阅读 2019-01-24 10:05:21
    云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交互模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也...
  • 如果有需要视频资源的可以关注"AI产品经理人",回复关键字“网易交互设计微专业”获取下载链接~ Chapter1 揭开交互神秘面纱 ...用户体验:国际标准化组织ISO 9241-210定义:用户对于使用或期望是用的产品、...
  • SPICE协议------主通道交互定义

    千次阅读 2014-12-04 20:12:50
    1 主通道协议定义1.1服务器—》客户端enum { SPICE_MSG_MAIN_MIGRATE_BEGIN = 101, SPICE_MSG_MAIN_MIGRATE_CANCEL, SPICE_MSG_MAIN_INIT, SPICE_MSG_MAIN_CHANNELS_LIST, SPICE_MSG_MAIN_MOUSE_MODE, SPI
  • 协调多个对象之间的交互——中介者模式(三)

    千次阅读 多人点赞 2013-01-08 21:38:28
    20.3 完整解决方案 为了协调界面组件对象之间的复杂交互关系,Sunny公司开发人员使用中介者模式来设计客户信息管理窗口,其结构示意图如图20-7所示:图20-7 引入了中介者类的“客户信息管理窗口”结构示意图 图20-...
  • android WebView的缓存模式、JS交互

    万次阅读 2015-09-23 23:29:26
    在开发中,有些情况下会用到hybrid app的模式,就是用WebView加载原生html页面,这时候我们就 需要对WebView做一些处理。首先说一下WebView的缓存模式,在加载html页面的时候, 会在data/data/…目录下生成一些...
  • 大话设计模式这本书写的非常有创意,非常适合我这种新手。用了大约两个星期的时间看完了这本书,代码全部都敲了一遍,虽然没有一点基础,但是还是领略到了面向对象的威力。看完之后再也不想使用面向过程的语言了,...
  • 23种设计模式汇总整理

    万次阅读 多人点赞 2015-04-09 10:57:11
    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 ...
  • 20.4 中介者模式总结 中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。中介者模式在事件驱动类...
  • 20.2 中介者模式概述 如果在一个系统中对象之间的联系呈现为网状结构,如图20-4所示。对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对象...
  • JAVA设计模式--外观模式

    万次阅读 2017-02-12 23:37:41
    为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式的本质:封装交互,简化调用 设计意图:隐藏系统的复杂性,并向客户端...
  • ,只需要继承抽象中介者类(或已有的具体中介者类)并覆盖其中定义的方法即可,在新的具体中介者中可以通过不同的方式来处理对象之间的交互,也可以增加对新增同事的引用和调用 。在客户端中只需要修改少许代码...
  • 1.鼠标滑动提取三维图像切片 学习三维图像切面的提取后,我们可以实现一个稍微复杂的程序——通过滑动鼠标来切换三维图像切片,这也...VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型
  • 谈谈关于MVP模式中V-P交互问题

    千次阅读 2015-08-23 11:17:33
    View向Presenter发送用户交互请求应该采用这样的口吻:“我现在将用户交互请求发送给你,你看着办,需要我的时候我会协助你”,不应该是这样:“我现在处理用户交互请求了,我知道该怎么办,但是我需要你的支持,...
  • 本文介绍交互交互的使用。
  • UML交互

    千次阅读 2015-06-09 10:56:48
    交互图描述的是一组对象之间的交互过程,或者说,这里我们实际上要回答这样一个问题:“方法调用过程在UML中怎样表示?” UML交互图 本文将通过一个非常简单的交易系统来说明UML交互图。这个系统包含六个Java类...
  • VTK交互之vtkCommand

    千次阅读 2017-05-05 22:16:09
    观察者/命令模式 VTK的交互除了可以监听来自鼠标、键盘等外部...可以通过两种方法来实现该模式:一种是通过定义回调函数;另外一种是通过从vtkCommand类派生子类。二者的实现过程基本类似,都是通过AddObserver监听
  • MITK交互概念

    千次阅读 2015-03-30 10:15:59
    MITK交互的核心基于DataInteractors,它们监听事先定义的事件,并在事件被触发时做出响应(执行actions)。下面介绍交互的几个组成部分。Event Handling & GUI Toolkit Abstraction下图介绍了mitk::DataInteract

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 421,437
精华内容 168,574
关键字:

交互模式阅读定义