GVKun编程网logo

内部没有触发IE 8中的:active状态

11

本文的目的是介绍内部没有触发IE8中的:active状态的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ActiveMQInAction第一章消息传递和ActiveMQ简

本文的目的是介绍内部没有触发IE 8中的:active状态的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ActiveMQ In Action 第一章 消息传递和 ActiveMQ 简介 1.1 ActiveM、ActiveMQ安装及部署教程图解,ActiveMQ(apache-activemq)的启动、ActiveMQ高级特性:ActiveMQ之虚拟主题、ActiveX.exe、ActiveX.dll、ActiveX.控件,有啥区别?我要编写网页上的ActiveX该用哪一种?的知识。

本文目录一览:

内部没有触发IE 8中的:active状态

内部没有触发IE 8中的:active状态

我想设置标记:active所代表的按钮状态<a>。该<a>标签具有内<span>(怎么一回事,因为我要添加到该按钮的图标)。

我注意到:active除了Internet Explorer 8之外,其他所有状态均已正确触发。在IE8中,<span><a>的填充)周围的区域似乎触发了:active状态,但是直接单击内的文本时<span>:active不会触发状态。

有没有办法解决此问题而不求助于Javascript?

HTML

<ahref="#"> <span>Add a link</span></a>

CSS

a.button { some styles }a.button:active { some other styles }

答案1

小编典典

正确,非常复杂的解决方案(并且仍然不完善),但是:如果您不将链接文本包装在中<span>,而只是将<span>用作放置背景图片并将其绝对定位在中的位置<a>,则<span>(大多数情况下)停止阻止:active状态。

的HTML

<ahref="#"><span></span>Link</a>

CSS

<style type="text/css">a.button {    position: relative;    padding: 10px;    color: #c00;}a.button:active {    color: #009;    font-weight: bold;}a.button span {    position: absolute;    top: 50%;    left: 3px;    margin-top: -2px;    border: solid 2px #000;}</style>

当然,<span>覆盖的区域仍会捕获click事件,因此,当用户在此处单击时,他们将看不到:active状态。与以前的情况相比略有改善。

ActiveMQ In Action 第一章 消息传递和 ActiveMQ 简介 1.1 ActiveM

ActiveMQ In Action 第一章 消息传递和 ActiveMQ 简介 1.1 ActiveM

1.1 ActiveMQ 特性

通过数百人经年的努力,ActiveMQ 拥有十分丰富的特性。本书将 ActiveMQ 分解成数个特性集合进行着重描述。下面是将在本书中讨论的特性列表的俯瞰视野:

■JMS 规范 —— 是理解 ActiveMQ 特性很好的一个起点,因为 ActiveMQ 正是 JMS 1.1 规范的一个实现。正如本章后面的讨论内容,JMS 规范为用户提供了重要的益处和保障,包括同步或异步消息传递,一次且仅一次消息传递,消息持久性等 等。遵循 JMS 规范的好处是能够保证在任何情况下使用 JMS 时基本功能集都不会失效。

■连通性 ——ActiveMQ 提供了一个多样的连通性 选项,包括支持如 HTTP/S,IP 广播、SSL、STOMP、TCP、UDP,XMPP 等等的协议。支持如此多样的协议意味着更多的灵活性。既存的许多 系统使用一个无法配置的特定协议,因此一个支持多协议的消息传递平台,降低了这些系统的使用门槛。除连通性之外,与其他容器紧密集成的能力也很重要。第四 章介绍了 ActiveMQ 的传输连接器和网络连接器。

■可插拔的持久化和安全性 ——ActiveMQ 提供了多种风格的持久化,你可以在他们 中间做选择。ActiveMQ 的安全性体现在可以根据用户的需求,量身定制的身份验证和授权类型。例如,ActiveMQ 提供拥有自己风格的超高速消息持 久化(通过 KahaDB), 也支持可用标准 JDBC 访问的数据库。ActiveMQ 通过配置文件可以实现它本身的简单风格的身份验证和授权,除此之外还支 持标准 JAAS 登录模块。在章节 5 和 6 中我们将讨论这两个主题。

■用 Java 构建消息传递应用程序 ——ActiveMQ 最常见的用法是与 Java 应用程序合作来发送和接收消息。完成这个任务需要 ActiveMQ 和 JMS API 的齐心协力。第 7 章将讲述这个问题。

■与应用程序服务器集成 —— 一般 ActiveMQ 会与 Java 应用程序服务器集成。第八章将介绍相关的例子,包括 Apache Tomcat、Jetty、Apache Geronimo 和 JBoss。

■ 客户端 API—— 除了 Java 之外,ActiveMQ 还提供了许多其他语言的客户端 API, 包括 C/C++、.NET、Perl、PHP、Python、 Ruby 等等。这将提供 ActiveMQ 在 Java 领域之外的使用机会。许多其他语言也可以获得 ActiveMQ 的所有特性和好处,通过他们各自不同的客 户机 API。当然,ActiveMQ 代理仍运行在 Java 虚拟机上,但客户端可以使用任何受支持的语言编写。关于客户端连接到 ActiveMQ 将在第九章 中介绍。

■代理集群 —— 为了实现可扩展性,许多 ActiveMQ 代理可以共同协作形成一个代理的联合网络。这就是所谓的网络代理,可以支持很多不同的拓扑结构。这是第十章的话题。

■众多的高级代理功能和客户端选项 ——ActiveMQ 为代理和连接到代理的客户端提供了丰富的功能。通过设置代理的 XML 配置文件,ActiveMQ 还可以支持使用 Apache Camel。这些特性将在十一和十二章进行讨论。

■ 管理的简化 —— 由于 ActiveMQ 的使用对象是开发人员。所以它不需要专门的管理员。它亦提供了易于使用的强大的管理功能。有很多方法可以监视 ActiveMQ 的方方面面,包括通过 JMX 使用工具,如 JConsole 或 ActiveMQ 网络控制台,通过处理 ActiveMQ 报告信息,通过使用命令行脚本,甚至通过监测各种类型的日志记录。这都是第 14 章的内容。

我们浅尝了 一下 ActiveMQ 提供的功能特性。正如你所看到的,这本书的剩余章节将介绍这些话题。出于演示目的,将在第 3 章讲解几个简单的例子。但在我们看例子之 前,鉴于你已经了解了 ActiveMQ 很多不同的特性这一事实,我们需要确认一些问题关于你为什么需要使用 ActiveMQ。

ActiveMQ安装及部署教程图解,ActiveMQ(apache-activemq)的启动

ActiveMQ安装及部署教程图解,ActiveMQ(apache-activemq)的启动

 

 

ActiveMQ安装及部署教程图解

 更新时间:2020年07月02日 11:23:03   作者:楼兰的胡杨     这篇文章主要介绍了ActiveMQ安装及部署教程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下  

ActiveMQ是Apache的一个开源项目,它是一个功能强劲的开源消息总线,也是一个中间件产品,它是JMS的一个实现。

在介绍ActiveMQ之前,先来复习一下J2EE中的JMS规范。JMS 即Java消息服务应用程序接口,是Java Message Service的缩写,是一个Java平台中关于面向消息中间件(manager of managers,缩写为MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信;我们可以利用它在不同系统和不同的模块之间实现集成。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS有两个好处,第一个就是让模块之间或者系统之间的耦合度降低,第二个是异步通信。ActiveMQ是一个JMS消息代理的实现。

JMS的消息机制有两种模式,一种是点对点(Point to Point,一对一)消息模式,表现为队列的形式;发送的消息,只能被一个接收者接收。另一种是发布/订阅消息模式(一对多),可以被多个订阅者订阅,类似于群发。

1、到官网下载安装包

http://activemq.apache.org/download.html

官网里有Windows和Linux版本,请根据需要下载对应的版本。

注意:5系列的版本最好使用JDK8及以上, 低于JDK8可以使用4.x。

2、下载和启动 下载之后,解压apache-activema-5.15.13-bin.zip包,进入bin目录:

 

 

请确保系统已经安装Java8或者以上版本。在bin目录发现有 win 32 和 win 64 两个文件夹,这2个文件夹分别对应 windows 32 位和 windows 64 位操作系统的启动脚本。

选择系统对应的版本,例如电脑是64位的,则进入win64文件夹,找到启动脚步activemq.bat,双击即可启动。

Java技术迷

启动成功后,Shell窗口视图如下:

截图中容易找到日志信息 Connectorwsstarted。

3、启动成功访问

启动完毕后,在浏览器地址栏输入http://localhost:8161/admin,打开ActiveMQ的管理界面。默认用户名密码为admin、admin,这个用户名密码是在conf/users.properties中配置的。输入用户名密码后即可访问到如下管理界面,

ActiveMQ中,61616为消息代理的端口,采用TCP协议发送;8161为管理界面的端口,采用内嵌jetty服务器。

总结

以上是小编为你收集整理的ActiveMQ安装及部署教程图解,ActiveMQ(apache-activemq)的启动全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://www.cnblogs.com/webSnow/p/16434794.html

ActiveMQ高级特性:ActiveMQ之虚拟主题

ActiveMQ高级特性:ActiveMQ之虚拟主题

ActiveMQ支持的虚拟Destinations分为有两种,分别是
1.虚拟主题(Virtual Topics)
2.组合 Destinations(CompositeDestinations)

这两种虚拟Destinations可以看做对简单的topic和queue用法的补充,基于它们可以实现一些简单有用的EIP功能,虚拟主题类似于1对多的分支功能+消费端的cluster+failover,组合Destinations类似于简单的destinations直接的路由功能。

虚拟主题(Virtual Topics)
ActiveMQ中,topic只有在持久订阅(durablesubscription)下是持久化的。存在持久订阅时,每个持久订阅者,都相当于一个持久化的queue的客户端,它会收取所有消息。这种情况下存在两个问题:
1.同一应用内consumer端负载均衡的问题:同一个应用上的一个持久订阅不能使用多个consumer来共同承担消息处理功能。因为每个都会获取所有消息。queue模式可以解决这个问题,broker端又不能将消息发送到多个应用端。所以,既要发布订阅,又要让消费者分组,这个功能jms规范本身是没有的。
2.同一应用内consumer端failover的问题:由于只能使用单个的持久订阅者,如果这个订阅者出错,则应用就无法处理消息了,系统的健壮性不高。
为了解决这两个问题,ActiveMQ中实现了虚拟Topic的功能。使用起来非常简单。
对于消息发布者来说,就是一个正常的Topic,名称以VirtualTopic.开头。例如VirtualTopic.TEST。
对于消息接收端来说,是个队列,不同应用里使用不同的前缀作为队列的名称,即可表明自己的身份即可实现消费端应用分组。例如Consumer.A.VirtualTopic.TEST,说明它是名称为A的消费端,同理Consumer.B.VirtualTopic.TEST说明是一个名称为B的客户端。可以在同一个应用里使用多个consumer消费此queue,则可以实现上面两个功能。又因为不同应用使用的queue名称不同(前缀不同),所以不同的应用中都可以接收到全部的消息。每个客户端相当于一个持久订阅者,而且这个客户端可以使用多个消费者共同来承担消费任务。

生产者:
 

import javax.jms.Connection;  
import javax.jms.DeliveryMode;  
import javax.jms.JMSException;  
import javax.jms.MessageProducer;  
import javax.jms.Session;  
import javax.jms.TextMessage;  
import javax.jms.Topic;  
  
import org.apache.activemq.ActiveMQConnectionFactory;  
  
public class Producer {  
  
    public static void main(String[] args) throws JMSException {  
        // 连接到ActiveMQ服务器  
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.18.67:61616");  
        Connection connection = factory.createConnection();  
        connection.start();  
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);  
        // 创建主题  
        Topic topic = session.createTopic("VirtualTopic.TEST");  
        MessageProducer producer = session.createProducer(topic);  
        // NON_PERSISTENT 非持久化 PERSISTENT 持久化,发送消息时用使用持久模式  
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);  
        TextMessage message = session.createTextMessage();  
        message.setText("topic 消息。");  
        message.setStringProperty("property", "消息Property");  
        // 发布主题消息  
        producer.send(message);  
        System.out.println("Sent message: " + message.getText());  
        session.close();  
        connection.close();  
    }  
}  

消费者:

import javax.jms.Connection;  
import javax.jms.JMSException;  
import javax.jms.Message;  
import javax.jms.MessageConsumer;  
import javax.jms.MessageListener;  
import javax.jms.Queue;  
import javax.jms.Session;  
import javax.jms.TextMessage;  
  
import org.apache.activemq.ActiveMQConnectionFactory;  
  
public class Consumer {  
  
    public static void main(String[] args) throws JMSException, InterruptedException {  
        // 连接到ActiveMQ服务器  
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.18.67:61616");  
        Connection connection = factory.createConnection();  
        connection.start();  
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);  
        // 创建主题   
        Queue topicA = session.createQueue("Consumer.A.VirtualTopic.TEST");  
        Queue topicB = session.createQueue("Consumer.B.VirtualTopic.TEST");  
        // 消费者A组创建订阅  
        MessageConsumer consumerA1 = session.createConsumer(topicA);  
        consumerA1.setMessageListener(new MessageListener() {  
            // 订阅接收方法  
            public void onMessage(Message message) {  
                TextMessage tm = (TextMessage) message;  
                try {  
                    System.out.println("Received message A1: " + tm.getText()+":"+tm.getStringProperty("property"));  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
          
        MessageConsumer consumerA2 = session.createConsumer(topicA);  
        consumerA2.setMessageListener(new MessageListener() {  
            // 订阅接收方法  
            public void onMessage(Message message) {  
                TextMessage tm = (TextMessage) message;  
                try {  
                    System.out.println("Received message A2: " + tm.getText()+":"+tm.getStringProperty("property"));  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
          
        //消费者B组创建订阅  
        MessageConsumer consumerB1 = session.createConsumer(topicB);  
        consumerB1.setMessageListener(new MessageListener() {  
            // 订阅接收方法  
            public void onMessage(Message message) {  
                TextMessage tm = (TextMessage) message;  
                try {  
                    System.out.println("Received message B1: " + tm.getText()+":"+tm.getStringProperty("property"));  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
        MessageConsumer consumerB2 = session.createConsumer(topicB);  
        consumerB2.setMessageListener(new MessageListener() {  
            // 订阅接收方法  
            public void onMessage(Message message) {  
                TextMessage tm = (TextMessage) message;  
                try {  
                    System.out.println("Received message B2: " + tm.getText()+":"+tm.getStringProperty("property"));  
                } catch (JMSException e) {  
                    e.printStackTrace();  
                }  
            }  
        });  
        session.close();  
        connection.close();  
    }  
}  

组合列队Composite Destinations

组合队列允许用一个虚拟的destination代表多个destinations。这样就可以通过composite destinations在一个操作中同时向多个queue发送消息。

 

客户端实现的方式

在composite destinations中,多个destination之间采用“,”分割。例如:

    Queue queue = new ActiveMQQueue("FOO.A,FOO.B,FOO.C");
  或
  Destination destination = session.createQueue("my-queue,my-queue2");

如果你希望使用不同类型的destination,那么需要加上前缀如queue:// 或topic://,例如:

    Queue queue = new ActiveMQQueue("FOO.A,topic://NOTIFY.FOO.A");

在conf/activemq.xml中的broker下配置实现

<destinationInterceptors>
    <virtualDestinationInterceptor>
      <virtualDestinations>
        <compositeQueue name="MY.QUEUE">
          <forwardTo>
            <queue physicalName="my-queue" />
          <queue physicalName="my-queue2" />
          </forwardTo>
            </compositeQueue>
        </virtualDestinations>
    </virtualDestinationInterceptor>
</destinationInterceptors>

再java代码发送的时候,队列的的名字就用MY.QUEUQ

Configure Startup Destinations

如果需要在ActiveMQ启动的时候,创建Destination的话,可以如下配置conf/activemq.xml的broker下:

<destinations>
    <queue physicalName="FOO.BAR" />
  <topic physicalName="SOME.TOPIC" />
</destinations>

Delete Inactive Destinations

一般情况下,ActiveMQ的queue在不使用之后,可以通过web控制台或是JMX方式来删除掉。当然,也可以通过配置,使得broker可以自动探测到无用

的队列(一定时间内为空的队列)并删除掉,回收响应资源。可以如下配置conf/activemq.xml:

<broker schedulePeriodForDestinationPurge="10000">
    <destinationPolicy>
      <policyMap>
        <policyEntries>
          <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000"/>
      </policyEntries>
    </policyMap>
    </destinationPolicy>
</broker>

说明:

  schedulePeriodForDestinationPurge:设置多长时间检查一次,这里是10秒,默认为0

  inactiveTimoutBeforeGC:设置当Destination为空后,多长时间被删除,这里是30秒,默认为60

  gcInactiveDestinations: 设置删除掉不活动队列,默认为false

Destination Options

队列选项是给consumer在JMS规范之外添加的功能特性,通过在队列名称后面使用类似URL的语法添加多个选项。包括:

 1:consumer.prefetchSize,consumer持有的未确认最大消息数量,默认值 variable

 2:consumer.maximumPendingMessageLimit:用来控制非持久化的topic在存在慢消费者的情况下,丢弃的数量,默认0

 3:consumer.noLocal :默认false

 4:consumer.dispatchAsync :是否异步分发 ,默认true

 5:consumer.retroactive:是否为回溯消费者 ,默认false

 6:consumer.selector:Jms的Selector,默认null

 7:consumer.exclusive:是否为独占消费者 ,默认false

 8:consumer.priority:设置消费者的优先级,默认0

 

使用示例:

queue = new ActiveMQQueue("TEST.QUEUE?consumer.dispatchAsync=false&consumer.prefetchSize=10");
consumer = session.createConsumer(queue);

ActiveX.exe、ActiveX.dll、ActiveX.控件,有啥区别?我要编写网页上的ActiveX该用哪一种?

ActiveX.exe、ActiveX.dll、ActiveX.控件,有啥区别?我要编写网页上的ActiveX该用哪一种?

需要编写ActiveX在网页上使用,通过它调用驱动操作硬件设备,使用VB6.0创建工程时有这三种类型,不清楚应该使用哪一种?

另外,能再说下它们的区别吗?

谢谢!

今天关于内部没有触发IE 8中的:active状态的分享就到这里,希望大家有所收获,若想了解更多关于ActiveMQ In Action 第一章 消息传递和 ActiveMQ 简介 1.1 ActiveM、ActiveMQ安装及部署教程图解,ActiveMQ(apache-activemq)的启动、ActiveMQ高级特性:ActiveMQ之虚拟主题、ActiveX.exe、ActiveX.dll、ActiveX.控件,有啥区别?我要编写网页上的ActiveX该用哪一种?等相关知识,可以在本站进行查询。

本文标签: