楚熊汽车网

您现在的位置是: 首页 > 评测试驾

文章内容

ë-Dispatch_dispatcherServlet配置

zmhk 2024-08-30
ë-Dispatch_dispatcherServlet配置       大家好,今天我要和大家探讨一下关于ë-Dispatch的问题。为了让大家更容易理解,我将这个问题进行了归纳整理,现在就让我们一起
ë-Dispatch_dispatcherServlet配置

       大家好,今天我要和大家探讨一下关于ë-Dispatch的问题。为了让大家更容易理解,我将这个问题进行了归纳整理,现在就让我们一起来看看吧。

1.- Dispatch - Circles Around the Sun歌词

2.在struts中dispatch类的使用方法

3.关于pcap_dispatch()的使用。为什么每次捕包的时候还没等超时结束,pcap_dispatch就返回了急等

4.Portage附加工具: dispatch-conf和etc-update

5.ios dispatch 在哪个类

6.下面这句话怎么理解?dispatch是vt 但是后面跟了in their goods 和 diy

ë-Dispatch_dispatcherServlet配置

- Dispatch - Circles Around the Sun歌词

       When he was born, the doc said Whats this?

       Hes much too small, its like hes weightless

       When he turned six, they answered tests

       They searched science, hes patriotic

       Ah lets send him where no one else has gone

       And after all he can not speak or walk

       Lets send him out to moon, do circles round the Sun

       When he was twelve, the time had come then

       And with his eyes he said he loved them

       Then came the suits, then came the government

       She stayed and cried, she could not keep him

       Ah lets send him where no one else has gone

       And after all he can not speak or walk

       Lets send him out to moon, do circles round the Sun

       Hey, hey, hey, hey, hey

       Ho, ho, ho, ho, ho, ho

       Hey, hey, hey, hey, hey

       Oh, oh, oh

       Ho, ho, ho, ho, ho, ho

       Hey, hey, hey, hey, hey

       Oh, oh, oh

       Ho, ho, ho, ho, ho, ho

       Then he came back, yeah he came back

       The doctors were shocked by his vital signs

       She said would you like to go home now?

       Ah lets send him where no one else has gone

       And after all he can not seak or walk

       Lets send him out to moon, do circles around the Sun

在struts中dispatch类的使用方法

       主队列添加同步任务会导致死锁,示例如下:

       NSLog(@"任务1");

       dispatch_sync(dispatch_get_main_queue(),^{

       NSLog(@"任务2");

       });

       NSLog(@"任务3");

       运行结果:只打印出“任务1”

       执行步骤是:

       1.任务1肯定会执行;

       2.然后遇到了dispatch_sync,这是一个同步线程,同步线程会阻塞当前线程,必须等同步线程中的任务(任务2)执行完毕之后才会执行下一个任务(任务3),这时候会进入等待状态(等任务2执行完成并返回);

       3.dispatch_get_main_queue()是一个主队列,有任务来(任务3)就要加进去,而这时任务2处于等待中,所以就会先加入任务3,之后任务2就排在了任务3的后面。

       4.这样就造成了这么一种状态:

       dispatch_sync说:我是同步的,必须要等我的任务(任务2)执行完再执行其他任务(任务3);任务2--->任务3

       dispatch_get_main_queue()说:我是一个主队列,有人来我就要让他排队,谁先排队谁先执行(FIFO),任务2还没过来,所以任务3来了之后我就让他先排队,等任务2来了让它排在任务3后面再执行;任务3--->任务2

       这就导致任务3在等任务2执行、任务2在等任务3执行,结果谁都执行不了。

关于pcap_dispatch()的使用。为什么每次捕包的时候还没等超时结束,pcap_dispatch就返回了急等

       回复:1

       Action继承DispatchAction,实现一个Action控制多个请求跳转。在自定义的Form中,均继承自ActionForm,不同的方法对应不同的form,只需将ActionForm的form对象造型成所需的对象即可。如:

       public ActionForward addAdmin(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {

        // 获得添加管理员信息的表单数据

        AdminForm af = (AdminForm) form;

       }

       public ActionForward addStudent(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {

        // 获得添加学生信息的表单数据

        StuForm sf = (StuForm) form;

       }

       此时,即可实现“每个method使用不同的ActionForm”,只要所提交的表单对应着它自己所对应的Form就OK了!

       回复:2

       注意在struts-config.xml内的写法:

       <form-beans>

        <form-bean name="adminForm" type="com.exam.form.AdminForm"/>

        <form-bean name="stuForm" type="com.exam.form.StuForm"/>

       </form-beans>

       <action-mappings>

       <!--管理员登陆-->

       <action path="/adminLogin" type="com.exam.action.LoginAction"

        name="adminForm" scope="request" parameter="method"

        input="/error.jsp" validate="true">

        <forward name="successed" path="/index.jsp" />

        <forward name="failed" path="/adminLogin.jsp" />

       </action>

       <!--管理员登陆-->

       ********请求adminLogin.do,对应的表单为AdminForm,method属性有两个值:successed和failed,跳转到两个不同的页面

       <!--考生登陆-->

       <action path="/stuLogin" type="com.exam.action.LoginAction"

        name="stuForm" scope="request" parameter="method"

        input="/error.jsp" validate="true">

        <forward name="successed" path="/student/showStu.jsp" />

        <forward name="failed" path="/stuLogin.jsp" />

       </action>

       <!--考生登陆-->

       ********请求stuLogin.do,对应的表单为StuForm,method属性有两个值:successed和failed,跳转到两个不同的页面

       <!--退出登陆-->

       <action path="/logout" type="com.exam.action.LoginAction"

        scope="request" parameter="method">

        <forward name="stuLogout" path="/stuLogin.jsp" />

        <forward name="adminLogout" path="/adminLogin.jsp" />

       </action>

       <!--退出登陆-->

       ********请求logout.do,无对应的Form表单,method属性有两个值:stuLogout和adminLogout,返回到不同的登陆页面

       </action-mappings>

       不同的**.do请求同一个Action内的不同方法,对应不同的Form表单,通过method控制跳转到不同的页面。

Portage附加工具: dispatch-conf和etc-update

       你好,我最近也在做这方面的工作,这个确实和平台有关,我也碰到了类似问题,在redhat下,不到超时就返回了,检查了一下返回值是0,也就是说读到了EOF,但是相同程序在ubuntu下运行就可以在指定时间后返回,建议你查一下返回值,换一个平台或者重新安装包。

ios dispatch 在哪个类

        dispatch-conf是一个帮助合并 ._cfg0000_<名称> 文件的工具。 ._cfg0000_<名称> 文件是由Portage在它要覆盖被 CONFIG_PROTECT 变量所保护的某个目录里的文件时建立的。

        使用dispatch-conf能够在合并配置文件并升级更新的同时保持所有更新记录。dispatch-conf以RCS版本管理系统或是补丁的方式来保存配置文件间的差别。这意味着如果你在升级配置文件犯下错误时,你可以随时退回到你的配置文件的之前版本。

        使用dispatch-conf,你可以保持配置文件原来的样子,或者使用新的配置文件,你还可以编辑当前文件或交互式地合并更新。除此之外,dispatch-conf还有一些很棒的特性:

        确定你先编辑了/etc/dispatch-conf.conf并创建了archive-dir变量设定的目录。

        当运行dispatch-conf的时候,程序会带你把每个改变了的配置文件挨个过一边。按 u 来用新配置文件更新(替换)现在的配置文件,然后继续处理下一个。按 z 来删除新配置文件,然后继续处理下一个。当处理完所有的配置文件之后,dispatch-conf就会退出。你也可以随时按q来退出。

        更多信息,请查阅dispatch-conf手册页。它会告诉你交互式的合并新旧配置文件,编辑新配置文件,检查两个文件间的差异等等。

        你也可以使用etc-update来合并配置文件。它不像dispatch-conf那样简单易用,功能也少,但是它也能提供交互式合并功能并且能自动合并一些简单的改变。

        不过,和dispatch-conf不同的是,etc-update不保留你的配置文件的旧版本。一旦你更新了文件,旧版本就永远丢失了。所以要非常小心,因为使用etc-update与使用dispatch-conf相比明显的不安全。

        在整合简单直观的更动后,系统会提示你一个需要更新的受保护的文件列表。在最底下会提示你可选的操作选项:

        如果你输入-1,etc-update将直接退出且不执行任何变更。如果你输入-3或-5,所有列出的配置文件将被更新的版本覆盖。因此先选出无需自动升级的配置文件非常重要,而具体步骤也很简单,只需要输入在该配置文件左边显示的数字就可以了。

下面这句话怎么理解?dispatch是vt 但是后面跟了in their goods 和 diy

       dispatch对象类型的部分定义,主要使用C语言的宏定义:

       <os/object.h>文件:

       #define OS_OBJECT_CLASS(name) OS_##name

       #define OS_OBJECT_DECL(name, ...) \

       @protocol OS_OBJECT_CLASS(name) __VA_ARGS__ \

       @end \

       typedef NSObject<OS_OBJECT_CLASS(name)> *name##_t

       #define OS_OBJECT_DECL_SUBCLASS(name, super) \

       OS_OBJECT_DECL(name, <OS_OBJECT_CLASS(super)>)

       <dispatch/object.h>文件:

       #define DISPATCH_DECL(name) OS_OBJECT_DECL_SUBCLASS(name, dispatch_object)

       #define DISPATCH_GLOBAL_OBJECT(type, object) ((OS_OBJECT_BRIDGE type)&(object))

       OS_OBJECT_DECL(dispatch_object); //定义dispatch_object_t

       <dispatch/queue.h>文件(dispatch队列类定义,其它dispatch对象类似):

       DISPATCH_DECL(dispatch_queue); //定义dispatch_queue_t

       可以通过Xcode预编译后可以看到最终结果,最终定义的都是NSObject类,虽然它们之间没用直接继承关系,但都实现OS_dispatch_object接口,这样dispatch_queue_t对象也同样是dispatch_object_t的对象了。下面就是预编译dispatch_object_t和dispatch_queue_t的结果:

       @protocol OS_dispatch_object

       @end

       typedef NSObject<OS_dispatch_object> *dispatch_object_t;

       @protocol OS_dispatch_queue <OS_dispatch_object>

       @end

       typedef NSObject<OS_dispatch_queue> *dispatch_queue_t;

       由于dispatch api接口定义成C函数的形式,dispatch的对象都是由C函数形式的厂方法得到(不能继承dispatch类,不用alloc),这样做隐藏dispatch对象的具体形态,把注意力放在如何调用dispatch api上。

       从上面dispatch对象宏定义可以看到dispatch对象类的名称一般为dispatch_xyz_t(严格来讲是对象指针),它们都可以看成dispatch_object_t的子类(对象指针),所以使用dispatch对象时套用这个概念就行。

       有关dispatch对象的基本接口如下:

       void dispatch_retain(dispatch_object_t object); //替代dispatch对象常规的retain来持有对象,但ARC编程中不再允许

       void dispatch_release(dispatch_object_t object); //替代dispatch对象常规的release来释放对象,同样ARC编程中不再允许

       void dispatch_set_context(dispatch_object_t object, void *context); //给dispatch对象绑定特定数据对象(类似线程的TLS数据),会被传给dispatch对象的finalizer函数

       void *dispatch_get_context(dispatch_object_t object); //返回dispatch对象绑定的数据对象指针

       void dispatch_set_finalizer_f(dispatch_object_t object, dispatch_function_t finalizer); //设置dispatch对象的finalizer函数,当该对象释放时会调用finalizer,部分代码解释如何使用这个函数(ARC模式):

       dispatch_object_t dispatchObject = ...;

       void *context = ...;

       dispatch_set_context(dispatchObject, context);

       dispatch_set_finalizer_f(dispatchObject, finalizer);

       ......

       dispatchObject = nil; //dispatchObject被释放,这时调用finalizer函数

       ......

       void finalizer(void *context)

       {

       //处理或释放context相关资源

       }

       dispatch对象的另外两个接口是:

       void dispatch_resume(dispatch_object_t object); //激活(启动)在dispatch对象上的block调用,可以运行多个block

       void dispatch_suspend(dispatch_object_t object); //挂起(暂停)在dispatch对象上的block调用,已经运行的block不会停止

       一般这两个函数的调用必须成对,否则运行会出现异常。

       至此你是否发现这两个函数有些与众不同呢?好像从来没有这么使用对象的,启动对象--暂停对象,呵呵。这正是理解dispatch对象的关键所在。dispatch对象其实是抽象的任务,把动态的任务变成对象来管理。任务是动态的,不存在继承关系,这就是为什么GCD没有提供静态继承dispatch对象类的方式。如果能这样理解,那么在使用dispatch函数时就能够更灵活地去编写代码,实现各种并发的多任务代码。

IDispatch*是干什么用的 C++

       the furniture store dispatched (in their goods) the do-it-yourself kit.

       可以把句子简化为 furniture store dispatch kit (家具商配送用具包),in their goods 修饰 dispatch 表示放置的地方(就是作状语),DIY修饰kit。

       句意可以理解为:家居商在他们的商品里面配有可以DIY的工具包。

       IDispatch的存在是因为有些语言不支持虚函数表vtable,比如vb,asp等

       它的主要作用是“接收一个函数的名称并执行它”

       然后IDispatch有几个函数:

       GetIDsOfNames,取一个函数的名称并返回其调度ID,或称DISPID

       Invoke,可以将DISPID作为函数数组指针的索引

       IDispatch叫做调度接口。它的作用何在呢?这个世上除了C++还有很多别的语言,比如VB、 VJ、VBScript、JavaScript等等。可以这么说,如果这世上没有这么多乱七八糟的语言,那就不会有IDispatch。:-) 我们知道COM组件是C++类,是靠虚函数表来调用函数的,对于VC来说毫无问题,这本来就是针对C++而设计的,以前VB不行,现在VB也可以用指针了,也可以通过VTable来调用函数了,VJ也可以,但还是有些语言不行,那就是脚本语言,典型的如 VBScript、JavaScript。不行的原因在于它们并不支持指针,连指针都不能用还怎么用多态性啊,还怎么调这些虚函数啊。唉,没办法,也不能置这些脚本语言于不顾吧,现在网页上用的都是这些脚本语言,而分布式应用也是COM组件的一个主要市场,它不得不被这些脚本语言所调用,既然虚函数表的方式行不通,我们只能另寻他法了。时势造英雄,IDispatch应运而生。:-) 调度接口把每一个函数每一个属性都编上号,客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数,仅此而已。当然实际的过程远比这复杂,仅给一个编号就能让别人知道怎么调用一个函数那不是天方夜潭吗,你总得让别人知道你要调用的函数要带什么参数,参数类型什么以及返回什么东西吧,而要以一种统一的方式来处理这些问题是件很头疼的事。IDispatch接口的主要函数是Invoke,客户程序都调用它,然后Invoke再调用相应的函数,如果看一看MS的类库里实现 Invoke的代码就会惊叹它实现的复杂了,因为你必须考虑各种参数类型的情况,所幸我们不需要自己来做这件事,而且可能永远也没这样的机会.

       说白了,IDispatch就是Java/.Net里面的Reflection(反射)

       好了,关于“ë-Dispatch”的话题就讲到这里了。希望大家能够通过我的讲解对“ë-Dispatch”有更全面、深入的了解,并且能够在今后的工作中更好地运用所学知识。