<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SpbDev的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/SpbDev</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; SpbDev]]></copyright><item><title><![CDATA[ActiveMQ学习笔记（四）——自定义身份认证（登录认证集成）]]></title><link>https://blog.csdn.net/SpbDev/article/details/106520573</link><guid>https://blog.csdn.net/SpbDev/article/details/106520573</guid><author>SpbDev</author><pubDate>Wed, 03 Jun 2020 12:09:35 +0800</pubDate><description><![CDATA[经典版和Artemis都有自己的用户系统和默认的登录认证逻辑，但是当需要和业务系统集成，共享同一套用户/角色时，就需要自定义身份认证了。这里简单记录一下实现思路。

一、ActiveMQ经典版

1、自定义身份认证插件

新建maven工程，添加依赖

&lt;dependency&gt;
	&lt;groupId&gt;org.apache.activemq&lt;/groupId&gt;
	&lt;artifactId&gt;activemq-broker&lt;/artifactId&gt;
	&lt]]></description><category></category></item><item><title><![CDATA[ActiveMQ学习笔记（三）——客户端应用开发]]></title><link>https://blog.csdn.net/SpbDev/article/details/106519120</link><guid>https://blog.csdn.net/SpbDev/article/details/106519120</guid><author>SpbDev</author><pubDate>Wed, 03 Jun 2020 11:24:36 +0800</pubDate><description><![CDATA[一、客户端开发

可以根据实际情况选择合适的协议，默认协议是OpenWire，通用协议（如果未来可能用其它消息队列组件替换ActiveMQ）可以考虑MQTT、AMQP等协议。

Java开发
经典版安装包解压缩后，/examples目录下有各个协议的范例代码可以参考。

.Net开发
Apache官方提供了.Net的组件库，叫做NMS Clients，由API接口（Apache.NMS.dll）和Provider组成，每个协议一个Provider（dll文件），所以只要下载这两个组件使用即可，/exampl]]></description><category></category></item><item><title><![CDATA[ActiveMQ学习笔记（二）——简单压测及性能调优]]></title><link>https://blog.csdn.net/SpbDev/article/details/106518730</link><guid>https://blog.csdn.net/SpbDev/article/details/106518730</guid><author>SpbDev</author><pubDate>Wed, 03 Jun 2020 10:34:48 +0800</pubDate><description><![CDATA[压测工具：Apache JMeter

服务器配置：虚拟机，4核8线程，8G内存，CentOS8

主要简单模拟大量订阅消息（建立连接），但消息不多的场景，类似挂QQ或微信但少有消息的场景，采用默认设置。



经典版：只能压测到3000多个连接就再也上不去了，改为NIO后也只能到4000多个连接，而且CPU内存并未占满。

Artemis：情况差不多，也只能到4000多个连接。

一度怀疑是客户端PC连接数有瓶颈，但多台压测仍旧如此，搜了半天网上也没这方面的资料。



后来发现原因：

Linux默..]]></description><category></category></item><item><title><![CDATA[ActiveMQ学习笔记（一）——基本概念及安装部署]]></title><link>https://blog.csdn.net/SpbDev/article/details/106517903</link><guid>https://blog.csdn.net/SpbDev/article/details/106517903</guid><author>SpbDev</author><pubDate>Wed, 03 Jun 2020 10:23:23 +0800</pubDate><description><![CDATA[一、两个版本

ActiveMQ分为5.xClassic（经典版）、Artemis两个版本，后者是下一代的高性能、非阻塞、事件驱动的MQ，实际测试能支撑更多连接数、占用内存更低。

两个版本都支持多个消息队列协议，如OpenWire、MQTT、AMQP、STOMP等。

消息发布订阅时，可以跨协议通信，例如发布者用OpenWire，订阅者用MQTT等。

二、基本概念

Broker：指ActiveMQ的运行实例，通俗的说就是服务端。

Transport：可以理解为就是ActiveMQ暴露出来的协议，通常]]></description><category></category></item><item><title><![CDATA[Hibernate的order by遇到null致数据丢失的问题]]></title><link>https://blog.csdn.net/SpbDev/article/details/52169146</link><guid>https://blog.csdn.net/SpbDev/article/details/52169146</guid><author>SpbDev</author><pubDate>Wed, 10 Aug 2016 10:38:42 +0800</pubDate><description><![CDATA[Hibernate中可能用到两张（或更多）表映射称为复杂一点的对象的情形，例如每个User(用户)对象关联一个LoginInfo(登录信息)对象，LoginInfo还包括各种属性，例如LastLoginTime。


现在查询所有用户，hql为：
from User u
如果按"User.LoginInfo.LastLoginTime"逆序排列，hql为：
from User u or]]></description><category></category></item><item><title><![CDATA[自定义SharpDevelop5.1/5.2的代码智能提示（代码完成）快捷键]]></title><link>https://blog.csdn.net/SpbDev/article/details/50547717</link><guid>https://blog.csdn.net/SpbDev/article/details/50547717</guid><author>SpbDev</author><pubDate>Wed, 20 Jan 2016 12:33:18 +0800</pubDate><description><![CDATA[SharpDevelop5.1的默认代码提示快捷键是Ctrl+空格，这恰好是输入法切换的快捷键，导致功能不可用。而且网上搜不到5.1版本的修改方法，于是下载源码下来一番搜索，找到办法了：


     快捷键定义由静态只读成员ICSharpCode.AvalonEdit.AddIn.CustomCommands.CtrlSpaceCompletion(位于ICSharpCode.Avalon]]></description><category></category></item><item><title><![CDATA[让SharpDevelop的代码智能提示显示为中文]]></title><link>https://blog.csdn.net/SpbDev/article/details/50372915</link><guid>https://blog.csdn.net/SpbDev/article/details/50372915</guid><author>SpbDev</author><pubDate>Mon, 21 Dec 2015 16:45:00 +0800</pubDate><description><![CDATA[SharpDevelop5.1.0版本，在选项中设置了用户界面语言为中文后，编写代码时的智能提示仍未英文，相当不便。


通过代码搜索，发现问题在于ICSharpCode.NRefactory中的
ICSharpCode.NRefactory.Documentation.XmlDocumentationProvider.LookupLocalizedXmlDoc(string fileNa]]></description><category></category></item><item><title><![CDATA[Castle Windsor之组件注册]]></title><link>https://blog.csdn.net/SpbDev/article/details/45447303</link><guid>https://blog.csdn.net/SpbDev/article/details/45447303</guid><author>SpbDev</author><pubDate>Sun, 03 May 2015 00:45:44 +0800</pubDate><description><![CDATA[注册方式较多，大体有这么几种，学习得比较粗浅，先记录：


1、逐个注册组件
即对每个接口通过代码指定其实现类，代码：
container.Register(
    Component.For() //接口
	.ImplementedBy() //实现类
);

典型应用场景：例如定义了一个日志记录接口，放到一个独立程序集中。具体实现可能有多种方式（日志以文本文件/XML文件/数据]]></description><category></category></item><item><title><![CDATA[Castle Windsor之入门]]></title><link>https://blog.csdn.net/SpbDev/article/details/45444809</link><guid>https://blog.csdn.net/SpbDev/article/details/45444809</guid><author>SpbDev</author><pubDate>Sat, 02 May 2015 23:36:58 +0800</pubDate><description><![CDATA[1、为什么需要IOC
没有IOC的时候，代码是这样写的：
IMyService service = new MyService();
其中MyService实现了接口IService。
弊端是，接口和实现没有分离（直接引用了MyService）

用IOC，是类似这样的：
IService service = container.Resolve();

其中container是I]]></description><category></category></item><item><title><![CDATA[Quartz的misfire]]></title><link>https://blog.csdn.net/SpbDev/article/details/41679477</link><guid>https://blog.csdn.net/SpbDev/article/details/41679477</guid><author>SpbDev</author><pubDate>Tue, 02 Dec 2014 15:36:17 +0800</pubDate><description><![CDATA[针对SimpleTrigger，有多种misfire策略，网上一搜一大堆，但是都含糊不清，没说清楚具体差别，如下是我的理解：


MISFIRE_INSTRUCTION_SMART_POLICY
——智能根据trigger属性选择策略：
repeatCount为0，则策略同MISFIRE_INSTRUCTION_FIRE_NOW
repeatCount为REPEAT_INDEFINIT]]></description><category></category></item><item><title><![CDATA[HttpServletResponse的encodeRedirectURL()与encodeURL()的差别]]></title><link>https://blog.csdn.net/SpbDev/article/details/37879549</link><guid>https://blog.csdn.net/SpbDev/article/details/37879549</guid><author>SpbDev</author><pubDate>Wed, 16 Jul 2014 15:57:52 +0800</pubDate><description><![CDATA[从Servlet3.0规范看，这两个方法的功能类似，但略有差别，规范是这么描述的：
encodeRedirectURL(java.lang.String url) 
          Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the U]]></description><category></category></item><item><title><![CDATA[解决BlazeDS基于Streaming通道推送消息时，IE11+Flex无法收到推送消息问题]]></title><link>https://blog.csdn.net/SpbDev/article/details/19553775</link><guid>https://blog.csdn.net/SpbDev/article/details/19553775</guid><author>SpbDev</author><pubDate>Thu, 20 Feb 2014 14:36:32 +0800</pubDate><description><![CDATA[服务端BlazeDS走StreamingAMF通道时，在别的浏览器下flex都运行正常，唯独IE11不能收到推送消息，但普通的remoting正常。原因是IE11改了UserAgent，导致UserAgent无法识别所致，解决办法：
打开service-config.xml，找到streamingAMF通道的配置节下的user-agent-settings节点，添加一行针对IE11的UserAg]]></description><category></category></item><item><title><![CDATA[Spring中classpath*:使用通配符加载jar当中的资源无效的原因]]></title><link>https://blog.csdn.net/SpbDev/article/details/11158797</link><guid>https://blog.csdn.net/SpbDev/article/details/11158797</guid><author>SpbDev</author><pubDate>Thu, 05 Sep 2013 16:56:20 +0800</pubDate><description><![CDATA[Spring采用classpath*:前缀开头时，是可以使用**以及*来作为通配符，从jar当中加载资源（例如xml配置文件）的，但是一次偶然的机会发现只要使用了通配符，就无法正确从jar当中加载配置文件。web.xml当中的配置如下：

	contextConfigLocation
	classpath*:spring/applicationContext*.xml


多次尝试发现，如果]]></description><category></category></item><item><title><![CDATA[让Flex在全屏模式下支持键盘输入]]></title><link>https://blog.csdn.net/SpbDev/article/details/10463365</link><guid>https://blog.csdn.net/SpbDev/article/details/10463365</guid><author>SpbDev</author><pubDate>Wed, 28 Aug 2013 17:36:58 +0800</pubDate><description><![CDATA[自FlashPlayer11.3开始，已经支持带键盘交互的全屏模式，实现方法：


1、全屏时用StageDisplayState.FULL_SCREEN_INTERACTIVE而不是StageDisplayState.FULL_SCREEN 
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
2、嵌入swf的]]></description><category></category></item><item><title><![CDATA[User-agent 字串史]]></title><link>https://blog.csdn.net/SpbDev/article/details/10069387</link><guid>https://blog.csdn.net/SpbDev/article/details/10069387</guid><author>SpbDev</author><pubDate>Mon, 19 Aug 2013 14:16:38 +0800</pubDate><description><![CDATA[出处：http://www.cnblogs.com/georgewing/archive/2010/01/18/1650960.html




较古的浏览器

1993年，NCSA 发布了首款 web 浏览器 Mosaic。它的 user-agent 字串非常简洁：
Mosaic/0.9

虽然当时由于它对操作系统和平台的依赖性，但是基本格式还是很简单明了。在文本中，斜杠前面]]></description><category></category></item><item><title><![CDATA[FlashBuilder生成ASDOC文档]]></title><link>https://blog.csdn.net/SpbDev/article/details/9714749</link><guid>https://blog.csdn.net/SpbDev/article/details/9714749</guid><author>SpbDev</author><pubDate>Fri, 02 Aug 2013 11:37:31 +0800</pubDate><description><![CDATA[FlashBuilder-运行-外部工具-外部工具配置，新建ASDOC配置如下




完成后点击运行即可生成。


生成过程中控制台可能出现乱码，解决办法：
找到所用sdk的bin/jvm.config，用记事本打开，搜索java.args=，找到后在末尾增加 -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8保存，重新运行ASDOC即]]></description><category></category></item><item><title><![CDATA[手动配置使用Apache Flex SDK 4.9.1以及解决部分mx包中的类找不到的问题]]></title><link>https://blog.csdn.net/SpbDev/article/details/9361617</link><guid>https://blog.csdn.net/SpbDev/article/details/9361617</guid><author>SpbDev</author><pubDate>Wed, 17 Jul 2013 23:24:53 +0800</pubDate><description><![CDATA[Apache官方提供了一个工具可以协助安装Apache Flex SDK，不过个人还是倾向于自己配置，下面简述配置步骤：


1、从Apache官方下载Apache Flex SDK。
官方网址：http://flex.apache.org/，进去后从顶部菜单选择“Download the SDK Binaries”即可进入下载页面。
下载完成后解压缩到合适的位置，比如可以解压缩到 {f]]></description><category></category></item><item><title><![CDATA[动态解析EL表达式，调用JSF托管bean，输出返回结果]]></title><link>https://blog.csdn.net/SpbDev/article/details/9315203</link><guid>https://blog.csdn.net/SpbDev/article/details/9315203</guid><author>SpbDev</author><pubDate>Fri, 12 Jul 2013 21:16:33 +0800</pubDate><description><![CDATA[时不时看到有人在问如何在非jsf页面（通过ajax）动态调用jsf的托管bean的属性或方法，其实我在刚接触jsf的时候也有同样的疑惑，虽然jsf提供了非常优雅的局部刷新功能（通过reRendor属性指定刷新区域），但是这种方式必须预先定义好要刷新的区域的内容，而且必须通过服务端控件触发，不能绕开服务端控件而单纯的通过js实现数据更新。


研究了下，要达到上述目的其实不难，思路是：
1、]]></description><category></category></item><item><title><![CDATA[禁用JSF2.x(mojarra)的xhtml缓存，让文件改动立即生效]]></title><link>https://blog.csdn.net/SpbDev/article/details/9159959</link><guid>https://blog.csdn.net/SpbDev/article/details/9159959</guid><author>SpbDev</author><pubDate>Mon, 24 Jun 2013 11:34:13 +0800</pubDate><description><![CDATA[WEB开发过程中是需要不断的修改代码，刷新页面查看效果的，但是到了JSF2.x版本，经常遇到xhtml文件被修改了（甚至删掉了）后，拼命刷新浏览器，看到的都是旧页面，清空浏览器缓存无效，按网上的说法，web.xml中配置javax.faces.PROJECT_STAGE为Development仍旧无效。


几经周折，从官方网站查到了JSF2的新增配置项，其中一项com.sun.faces.]]></description><category></category></item><item><title><![CDATA[java常用的Listener介绍]]></title><link>https://blog.csdn.net/SpbDev/article/details/9069675</link><guid>https://blog.csdn.net/SpbDev/article/details/9069675</guid><author>SpbDev</author><pubDate>Mon, 10 Jun 2013 09:47:07 +0800</pubDate><description><![CDATA[Listener是Servlet的监听器，它可以监听客户端的请求、服务端的操作等;监听器对象在事情发生前、发生后可以做一些必要的处理。


目前 Servlet2.5 中常用的有8个监听器接口，分为3类： 


1. Servlet上下文进行监听（Application级）： 
用于监听 ServletContext 对象的创建和删除以及属性的添加、删除和修改等操作,该监听器需要用到]]></description><category></category></item></channel></rss>