存档

作者存档

cas整合Atomikos分布式事务示例

2012年8月13日 没有评论

最近专注sso的研究,其中涉及到多个应用之间的数据同步问题,现阶段采用数据库方式进行融合(也就是分布式事务),也许是心理阴影(两年前使用过但是不是特别文档)使然,放弃了JOTM 这种方案,在google一下并且对比了一下,最后采用Atomikos ,理由如下:

  1. 兼容标准的SUN公司JTA API
  2. 嵌套事务
  3. 为XA和非XA提供内置的JDBC适配器
  4. 内置的JMS适配器XA-capable JMS队列连接器
  5. 通过XA API兼容第三方适配器
  6. 更好的整合您的项目(spring集成方式相当简洁)
  7. 集成Hibernate

阅读全文…

Nginx负载均衡简单理解

2012年8月8日 3 条评论

今天看到一章关于Nginx负载均衡如何进行配置的文章,仔细想来概念不难理解:如果后面的服务器X其中一台坏了,它能自动识别(潜台词:你若真的生病我岂能冷漠),服务器X恢复之后Nginx(BOSS)可以马上识别,让服务器X重启进入战场;如果后面多台服务器,我们假定为服务器A和服务器B,如果A的响应时间为3,B的响应时间为1,那么Nginx(BOSS)会自动调整访问B的概率是A的3倍(能者多劳),真正做到Nginx(BOSS)高效负载均衡。

简单的说了一下自己的理解,拿出来和大家分享一下

CAS3单点登录系列-基础篇(Java keytool 安全证书)

2012年7月19日 没有评论

背景知识:非对称加密算法点点我、公钥(public key)点点我和私钥(private key)

本文主要介绍的是JDK自带的keytool证书生成工具

核心元素分别介绍:

keystore

keystore容器的性质,储存两种数据:密钥和证书;肉眼看到的是.keystore文件(默认情况下window xp下被存贮在C:\Documents and Settings\当前用户\.keystore,win7及其之后被存储在C:\Users\当前用户\.keystore)

keystore的生成-keytool -genkey

C:\Users\zrz>keytool -genkey -keyalg RSA -alias cassso -storepass changeit
您的名字与姓氏是什么?
  [Unknown]:  sso.itblood.com
您的组织单位名称是什么?
  [Unknown]:  热血青年博客itblood
您的组织名称是什么?
  [Unknown]:  itblood-sso
您所在的城市或区域名称是什么?
  [Unknown]:  北京
您所在的州或省份名称是什么?
  [Unknown]:  北京
该单位的两字母国家代码是什么
  [Unknown]:  cn
CN=sso.itblood.com, OU=热血青年博客itblood, O=itblood-sso, L=北京, ST=北京, C=cn
 正确吗?
  [否]:  y

输入<cassso>的主密码
        (如果和 keystore 密码相同,按回车):

crt文件的生成-keytool -export

keytool -export -alias cassso -file %java_home%/jre/lib/security/cassso.crt
        -storepass changeit

crt证书导入jre的可信任证书仓库-keytool -import

keytool -import -alias cassso -file %java_home%/jre/lib/security/cassso.crt
        -keystore %java_home%/jre/lib/security/cacerts -storepass changeit

列出可信任证书列表-keytool -import

keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

特别关注:

上述过程中CN=sso.itblood.com需要关注,不能为ip,只能为域名,为了方便期间需要做本地模拟,方式很简单C:\Windows\System32\drivers\etc\hosts中增加如下代码:

127.0.0.1       sso.itblood.com
分类: tomcat 标签: , ,

Java图像变灰

2012年7月16日 2 条评论

        项目中出现使用java完成图像灰度的场景,之前没有了解过这方面的知识,后续经历几番周折,终于告破,先把实现代码贴一下,后续讲解一下核心类,代码如下:

String  srcFileName="x:\\dd\\test.jpg";//源图像路径
String  destFileName="x:\\dd\\test.jpg";//源图像路径
BufferedImage originalPic = ImageIO.read(new FileInputStream(srcFileName));

int imageWidth = originalPic.getWidth();
int imageHeight = originalPic.getHeight();
//产生新的图像缓冲对象
BufferedImage newBufferedImage = new BufferedImage(imageWidth, imageHeight,
  BufferedImage.TYPE_3BYTE_BGR);
//颜色转换(黑白)
ColorConvertOp cco = new ColorConvertOp(ColorSpace
  .getInstance(ColorSpace.CS_GRAY), null);
cco.filter(originalPic, newBufferedImage);

FileOutputStream fos = new FileOutputStream(destFileName);
if (destFileName.toLowerCase().endsWith(".gif")) {
 ImageIO.write(newBufferedImage, "gif", fos);
}
if (destFileName.toLowerCase().endsWith(".png")) {
 ImageIO.write(newBufferedImage, "png", fos);
}
//针对jpeg、jpg设置输出编码
if ((destFileName.toLowerCase().endsWith(".jpg"))
  || (destFileName.toLowerCase().endsWith(".jpeg"))) {
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(newBufferedImage);
 param.setQuality(1.0F, false);
 encoder.encode(newBufferedImage);
}
fos.flush();
fos.close();

核心类分析如下:
ColorSpace:
1.用做一个颜色空间标记,标识 Color 对象的特定颜色空间。
2.将指定颜色空间中的颜色与 sRGB 和定义良好的 CIEXYZ 颜色空间中的颜色进行相互转换的方法。

ColorConvertOp
颜色转换操作类。它的作用就是将一个颜色模式的图片转换为另一个颜色模式的图片

实现原理分析:
ColorConvertOp依赖ColorSpace,ColorConvertOp通过设置颜色空间将一副彩色(RGB)转化为一副新的黑白的灰度图

jQuery Plugin Poshy Tip 使用

2012年7月12日 没有评论

项目到了后期,发现前端的提示信息不统一,解决思路如下:

1.回顾系统中tip出现的场景:表单验证提示信息、数据列表中随填随显

2.确定问题域:多条提示信息层叠、信息显示风格不统一

3.结论:找出一款合适的tip插件进行整合快速的响应项目的需要

google关键词:jquery tooltip,检索了好多tip插件,最终选择了Poshy Tip,理由如下:

1.多种不同的外观。

2.同时可以作为 Form Tooltips使用

3.可以自定义气泡出现的位置

先来一个直观的认识:

Poshy Tip

Poshy Tip tooltip jquery

详细的参数说明如下:


$.fn.poshytip.defaults = {

// 提示内容默认为元素的标题,可以使指定的字符串、元素、回调函数、jquery对象

content:'[title]',

// 指定的tips class样式

className:'tip-yellow',

//按照像素计算背景图片和显示内容的内边距

bgImageFrameSize:10,

showTimeout:500,// 延时多久开始显示

hideTimeout:100,// 延时多久开始隐藏

timeOnScreen:0,// 自动隐藏之前延时多久

//显示方式 支持'hover'鼠标划入、'focus' 获取焦点、'none'手动显式调用

showOn:'hover',

liveEvents:false,// 支持live  事件  同样可以对未来元素进行影响

alignTo:'cursor',// 和谁进行对齐 ('cursor' 鼠标, 'target' 目标元素)

// 水平方向对齐方式 可选参数:

//('right', 'center', 'left', 'inner-left', 'inner-right')

alignX:'right',

// 垂直方向对齐方式 可选参数:

//('bottom', 'center', 'top', 'inner-bottom', 'inner-top')

alignY:'top',

offsetX:-22,// 水平偏移量

offsetY:18,// 垂直方向偏移量

//hover显示方式下,允许鼠标离开元素仍然显示提示信息

allowTipHover:true,

// 提示信息随着鼠标移动  只在满足hover显示方式下,对齐方式为alignTo:'cursor' 才有效

followCursor:false,

fade:true,// 使用动画

slide:true,// 使用slie效果

slideOffset:8,// slide 动画的偏移量

// 动画显示的时间间隔 如果不想动画效果,设置为0即可

showAniDuration:300,

// 动画隐藏的时间间隔 如果不想动画效果,设置为0即可

hideAniDuration:300

};

核心方法


.poshytip('show')    手动显示tip

.poshytip('hide')    手动隐藏tip

.poshytip('update', content, [ dontOverwriteOption ] )  手动更新tip

.poshytip('disable')  tip不可用

.poshytip('enable')   tip可用

.poshytip('destroy')  销毁tip

官方网址:

http://vadikom.com/tools/poshy-tip-jquery-plugin-for-stylish-tooltips/

jquery 如何监听div内容的变化

2012年7月10日 3 条评论

我们做电子商务,javascript框架采用的是jQuery,在开发过程中遇到了上面标题列出的问题:如何监听div内容的变化。

先给出最终代码(后续进行相关分析):

var title = $("b.facility");
var title = $('#title');//the element I want to monitor
title.bind('DOMNodeInserted', function(e) {
    alert('element now contains: ' + $(e.target).html());
});

解决问题的思路如下:

我们先回顾一下jQuery事件中的change()方法定义和用法:

当元素的值发生改变时,会发生 change 事件。

该事件仅适用于文本域(text field),以及 textarea 和 select 元素。

change() 函数触发 change 事件,或规定当发生 change 事件时运行的函数。

注释:当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。

但是问题出现了关于div内容的改变change方法中只字不提,我们如何处理那?

后续百度关键词: jquery div 内容发生变化:无果;

继续,bing关键词:jquery how to listen div change 找到一篇相关文档http://stackoverflow.com/questions/2712124/jquery-listen-to-changes-within-a-div-and-act-accordingly
粗略的明白是采用自定义事件的方式去处理问题,采纳代码如下:

$('#laneconfigdisplay').bind('contentchanged', function() { 
  // do something after the div content has changed 
  alert('woo'); 
});
// 这样会调用上面的函数
$('#laneconfigdisplay').trigger('contentchanged'); 

但是contentchanged是什么内容没有说明,继续追溯
bing关键词:jquery how to listen div change 找到一篇相关文档
继续,bing关键词:jquery contentchanged 找到一篇相关文档http://stackoverflow.com/questions/1449666/create-a-jquery-special-event-for-content-changed
这篇文章详细说明了contentchanged内容定义,采纳代码如下:

jQuery.fn.watch = function( id, fn ) { 

    return this.each(function(){ 

        var self = this; 

        var oldVal = self[id]; 
        $(self).data( 
            'watch_timer', 
            setInterval(function(){ 
                if (self[id] !== oldVal) { 
                    fn.call(self, id, oldVal, self[id]); 
                    oldVal = self[id]; 
                } 
            }, 100) 
        ); 

    }); 

    return self; 
}; 
jQuery.fn.unwatch = function( id ) { 

    return this.each(function(){ 
        clearInterval( $(this).data('watch_timer') ); 
    }); 

};

创建自定义事件

jQuery.fn.valuechange = function(fn) {     
    return this.bind('valuechange', fn);  
};
jQuery.event.special.valuechange = {        
    setup: function() {         
       jQuery(this).watch('value', function(){  
            jQuery.event.handle.call(this, {type:'valuechange'});  
        });        
     },
     teardown: function() {   
       jQuery(this).unwatch('value'); 
     } 
}; 

貌似这样的解决是完美的但是后续再继续查看到时候,发现有更简洁的方式,代码如下:

var title = $("b.facility");
var title = $('#title');//the element I want to monitor
title.bind('DOMNodeInserted', function(e) {
    alert('element now contains: ' + $(e.target).html());
});

感觉这应该是我需要代码,do it !fine

Tomcat 64位Windows 运行

2012年7月8日 没有评论

参照如下网址
1.解决方法简介

http://kathy198908.blog.hexun.com/29769439_d.html

2.具体方式阐述

http://netfork.iteye.com/blog/315898

3.快捷键(tomcat 6.0.18 插件的svn地址)

http://svn.apache.org/viewvc/tomcat/tc6.0.x/tags/TOMCAT_6_0_18/res/procrun/amd64/

附带:
tomcat绑定jdk方式
catalina.bat文件中加入:

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0
set CLASSPATH=C:\Program Files\Java\jdk1.5.0\lib\dt.jar

tomcat启动内存设置大小

JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:
NewSize=192m -XX:MaxNewSize=384m"
CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m
-XX:NewSize=192m -XX:MaxNewSize=384m"
分类: SEO优化 标签: ,