@OverWrite BlogJava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  128 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks

#

dojo.lang.string
dojo.string.substituteParams 类似C#中的String.Format函数
%{name}要保证与传入的对象的名称大小写一致,否则会出异常
Usage Example:
dojo.string.substituteParams("%{0} - %{1} - %{2}", "a", "b", "c"); //will return "a - b - c"
dojo.string.substituteParams("%{name}: %{value}", {name:"名称",value:"值"}); //will return "名称: 值"
dojo.string.capitalize 把每一个单词的首字母大写
Usage Example:
dojo.string.capitalize("show me love"); //will return "Show Me Love"
dojo.string.isBlank 判断输入字符串是否为空或全是空白字符,如果传入对象为非字符串则也会返回true
Usage Example:
dojo.string.isBlank(" 1 "); //will return false
dojo.string.escape 参数1为type,可传值为: xml/html/xhtml, sql, regexp/regex, javas cript/js cript/js, ascii
将按照所传type对字符串进行编码
Usage Example:
dojo.string.escape("html", "<input type='text' value='' />"); //will return "<input
type='text' value='' />"
dojo.string.encodeAscii
dojo.string.escapeXml
dojo.string.escapeSql
dojo.string.escapeRegExp
dojo.string.escapeJavas cript
dojo.string.escapeString
这些函数也就是 dojo.string.escape 所调用的,这里无需多说
dojo.string.summary 取得输入字符串的缩略版本
Usage Example:
dojo.string.summary("1234567890", 5); //will return "12345..."
dojo.string.endsWith 判断输入字符串是否以指定的字符串结尾
Usage Example:
dojo.string.endsWith("abcde", "E"); //will return false
dojo.string.endsWith("abcde", "E", true); //will return true
dojo.string.endsWithAny 判断输入字符串是否以指定的任意字符串结尾
Usage Example:
dojo.string.endsWithAny("abcde", "E", "e"); //will return true
dojo.string.startsWith 判断输入字符串是否以指定的字符串开头
Usage Example:
dojo.string.startsWith("abcde", "A"); //will return false
dojo.string.startsWith("abcde", "A", true); //will return true
dojo.string.startsWithAny 判断输入字符串是否以指定的任意字符串开头
Usage Example:
dojo.string.startsWithAny("abcde", "A", "a"); //will return true
dojo.string.has 判断输入字符串是否含有任意指定的字符串
Usage Example:
dojo.string.has("abcde", "1", "23", "abc"); //will return true
dojo.string.normalizeNewlines 按要求转换回车换行的格式
Usage Example:
dojo.string.normalizeNewlines("a\r\nb\r\n", "\r"); //will return "a\rb\r"
dojo.string.splitEscaped 将字符串按分隔符转换为数组
Usage Example:
dojo.string.splitEscaped("a\\_b_c", '_'); //will return ["a\\_b", "c"]

模块:dojo.lang.func
dojo.lang.hitch 将指定的方法挂在指定的对象下并返回该方法
Usage Example:
func = {test: function(s) {alert(s)}};
dojo.lang.mixin(func, {demo: dojo.lang.hitch(func, "test")});
func.demo("demo and test are same method");
dojo.lang.forward 返回自身对象的指定名称的方法引用
Usage Example:
func = {test: function(s) {alert(s)}, demo: dojo.lang.forward("test")};
func.demo("demo and test are same method");
dojo.lang.curry What is curry? 请参阅这篇文章:http://www.svendtofte.com/code/curried_javas cript/
Usage Example:
function add(a, b)
{
return a + b;
}
dojo.lang.curry(null, add, 2, 3); //will return 5
dojo.lang.curry(null, add, 2)(3); //will return 5

dojo.lang.curry(null, add)(2)(3); //will return 5
dojo.lang.curry(null, add)()(2)(3); //will return 5
dojo.lang.curryArguments 与dojo.lang.curry类似,但是可以选择忽略掉前n个参数
Usage Example:
function add(a, b)
{
return a + b;
}
dojo.lang.curryArguments(null, add, [1,2,3,4,5], 2); //will return 7 (= 3 + 4)

处理数组相关api

dojo.lang.has 判断对象是否具有指定属性,不过这个方法有用吗,不如直接使用 if(name in obj)
Usage Example:
dojo.lang.has(dojo.lang, "has"); //will return true
dojo.lang.isEmpty 判断对象或数组是否为空
Usage Example:
dojo.lang.isEmpty({a: 1}); //will return false
dojo.lang.isEmpty([]); //will return true
dojo.lang.map 调用指定的方法处理指定的数组或字符串
Usage Example:
dojo.lang.map([1,2,3,4,5], function(x) { return x * x;}); //will return [1,4,9,16,25]
dojo.lang.forEach 遍历指定的数组或字符串,并对其中的元素调用指定的方法
Usage Example:
dojo.lang.forEach("abc", function(x) { alert(x); });
dojo.lang.every 检查指定的数组是否全部满足指定方法的条件
Usage Example:
dojo.lang.every([1,-2,3], function(x) { return x > 0; }); //指定的数组不是全大于0的,因此返回false
dojo.lang.some 检查指定的数组是否部分满足指定方法的条件
Usage Example:
dojo.lang.some([1,-2,3], function(x) { return x > 0; }); //指定的数组有大于0的元素,因此返回true
dojo.lang.filter 根据指定的方法来过滤指定的数组
Usage Example:
dojo.lang.filter([1,-2,3], function(x) { return x > 0; }); //will return [1, 3]
dojo.lang.unnest 把指定的参数或数组转换为一维数组
Usage Example:
dojo.lang.unnest(1, 2, 3); //will return [1, 2, 3]
dojo.lang.unnest(1, [2, [3], [[[4]]]]); //will return [1, 2, 3, 4]
dojo.lang.toArray 将输入转换为数组
Usage Example:
function test()
{
return dojo.lang.toArray(arguments, 1);
}
test(1,2,3,4,5); //will return [2,3,4,5]
posted @ 2008-02-13 17:00 vesung 阅读(1802) | 评论 (0)编辑 收藏

以下内容转自新浪网 
 
春节期间科技要闻回顾(2.6-2.12):     
      产业政策:
     
      信产部称07年我国电信价格同比下降13.6%  

  我国固话用户40年来首度负增长

  调查显示中国用户更愿意通过手机听音乐

  广州300元共享器可让多台电视共用机顶盒

  欧洲取代美国成垃圾邮件最大发源地

  今年我国95%以上乡镇将开通宽带

  信息产业部称仍有千万通信用户受雪灾影响

  北京除夕短信发出6亿条 广东突破7亿条

  2008年我国电话用户总数将达9.76亿户

  文化部推荐第三批适合未成年人网络游戏产品

  2007年我国共过滤网上有害信息2亿多条

  春节假期全国手机短信发送量有望超过170亿条

  企业消费:

  华为07年无线收入达70亿美元

  花旗分析师预计3G版iPhone年中上市

  传iPhone和iPod Touch将降价100美元

  传摩托罗拉和北电将组建无线设备合资公司

  2300多企业列入首批完成软件正版化名单

  消息称谷歌有意收购CNET股份

  以色列推出7.8毫米厚世界最小最轻手机

  戴尔停止通过网站销售AMD PC

  Google Android手机原型将亮相3GSM大会

  微软市值过去一周缩水400亿美元

  传谷歌或MySpace将斥资15亿美元收购Bebo

  报告称苹果成为全球第三大智能手机厂商

  消息称微软两名重要高管即将离职

  大众科技:

  俄科学家称原子撞击实验可创造时空裂缝

  美宇航局因宇航员健康问题推迟太空行走

  法国设计豪华飞艇十天可环绕地球一周(组图)

  鼠年说鼠:不怕猫的老鼠(组图)

  研究称美丽蓝眼睛源自一万年前基因突变(图)

  52国气候专家联合为全球气候变化敲警钟

posted @ 2008-02-13 09:56 vesung 阅读(331) | 评论 (0)编辑 收藏

     摘要: dojo.io.bind :处理请求取回需要的数据并处理。         这个函数是AJAX中最为重要和有用的函数,dojo.io.bind这个类是用来处理客户端与服务器间通讯的,需要通讯的参数由对象dojo.io.Request所定义,具体通讯的方法则由另外一个对象Transport所提供。Dojo里提供了一个同...  阅读全文
posted @ 2008-01-31 16:52 vesung 阅读(2871) | 评论 (0)编辑 收藏

     摘要: 今天看到一篇php分页的文章,虽然简单但非常实用,稍作编辑贴出来(原文地址http://www.chinaunix.net/jh/27/181584.html)

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10
第11至20条记录:select * from tabl  阅读全文
posted @ 2008-01-31 15:59 vesung 阅读(819) | 评论 (0)编辑 收藏

     摘要: 2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用。一来是由于文档的缺少,而来是dojo的相关介绍总是让人望而生畏。到现在都如此,第一个hello world就搞了一大堆东西,比如widget组件,自定义的script标签等,加上要引入什么css文件,djConfig、dojo.require等等,让人很迷惑,这么复杂,到底dojo该怎么使用呢?我只是想把dojo当作一个普通的js类库,就像prototype那样?OK,闲话少说,来看看如何使用dojo。

第一步,引入dojo.js
dojo的发行包里有4个子目录,要引入的文件是名叫"dojo"的子目录里的dojo.js。
假设你是这样的目录结构:
  阅读全文
posted @ 2008-01-28 15:43 vesung 阅读(12666) | 评论 (4)编辑 收藏

dojo.collections 很有用的集合数据结构(List、Query、Set、Stack、Dictionary...)
dojo.crypto 实现加密功能的API(Blowfish、MD5、Rijndael、SHA...)
dojo.date 无须编写丑陋的代码来解析日期格式。
dojo.dnd 拖放功能的辅助API。
dojo.event 事件驱动的API,支持AOP开发,以及主题/队列的功能。
dojo.lfx HTML和SVG效果库。
dojo.animation 基于Dan Pupius在动画方面的工作(http://pupius.co.uk/js/Toolkit.Drawing.js)的动画package(不再支持,应首选dojo.lfx)
dojo.fx 不再支持,应首选dojo.lfx
dojo.io 不同的IO管道。cookie、IFrame、发布/订阅功能等等。所有神奇的Ajax工作都在这里完成。
dojo.lang 对于整个JavaScript环境进行增强的功能。包括你所希望拥有的很多特征,例如mixin、基于闭包(closure)的函数,以及大量的其他功能。
dojo.logging 提供日志功能的框架
dojo.math 数学函数(曲线、点、矩阵)
dojo.reflect 提供反射功能的函数库
dojo.rpc 与后端服务(例如理解JSON语法的Web服务)进行通信
dojo.storage 将数据保存在本地存储中(例如,在浏览器中利用Flash的本地存储来实现)
dojo.string 现在你可以对字符串进行如下的处理,修整、转换为大写、编码、esacpe、填充(pad)等等。
dojo.undo 用来撤销用户操作的栈管理器
dojo.uri 处理URI的函数库
dojo.widget 一个widget框架,允许你建造可重用的HTML/JavaScript widget,可以与简单的HTML标记共同使用(例如,<div class=”dojo-MyWidgetType”>)。支持基于标记的应用开发(例如:XAML、XUL)
dojo.xml、dojo.dom 帮助你处理DOM的辅助函数,以及其他的XML辅助函数。
dojo.style CSS功能,例如访问style的大小、与浏览器的盒模型配合工作,以及更多的功能。

posted @ 2008-01-28 10:29 vesung 阅读(1266) | 评论 (0)编辑 收藏

原文地址:http://datum.studyget.com/sh/200703/20070328_46338.shtml
SSL 是Secure socket Layer英文缩写,它的中文意思是安全套接层协议,指使用公钥和私钥技术组合的安全网络通讯协议。SSL协议是网景公司(Netscape)推出的基于 WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,即确保数据的完整性。

    SSL 以对称密码技术和公开密码技术相结合,可以实现如下三个通信目标:

(1)秘密性: SSL客户机和服务器之间传送的数据都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。

(2)完整性: SSL利用密码算法和散列(HASH)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。

(3)认证性:利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。为了验证证书持有者是其合法用户(而不是冒名用户), SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。

3.SSL协议的体系结构

    SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。SSL实际上是共同工作的两层协议组成,如图1所示。从体系结构图可以看出SSL安全协议实际是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。

握手
协议
修改密  
文协议
报警
协议
        SSL记录协议
           TCP
           IP


          
         图1  SSL体系结构

    SSL记录协议为SSL连接提供了两种服务:一是机密性,二是消息完整性。为了实现这两种服务, SSL记录协议对接收的数据和被接收的数据工作过程是如何实现的呢? SSL记录协议接收传输的应用报文,将数据分片成可管理的块,进行数据压缩(可选),应用MAC,接着利用IDEA、DES、3DES或其他加密算法进行数据加密,最后增加由内容类型、主要版本、次要版本和压缩长度组成的首部。被接收的数据刚好与接收数据工作过程相反,依次被解密、验证、解压缩和重新装配,然后交给更高级用户。

    SSL修改密文协议是使用SSL记录协议服务的SSL高层协议的3个特定协议之一,也是其中最简单的一个。协议由单个消息组成,该消息只包含一个值为1的单个字节。该消息的唯一作用就是使未决状态拷贝为当前状态,更新用于当前连接的密码组。为了保障SSL传输过程的安全性,双方应该每隔一段时间改变加密规范。

    SSL告警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:一种是 Fatal错误,如传递数据过程中,发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录;第二种是Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

    SSL握手协议允许通信实体在交换应用数据之前协商密钥的算法、加密密钥和对客户端进行认证(可选)的协议,为下一步记录协议要使用的密钥信息进行协商,使客户端和服务器建立并保持安全通信的状态信息。SSL握手协议是在任何应用程序数据传输之前使用的。SSL握手协议包含四个阶段:第一个阶段建立安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别和密钥交换;第四个阶段完成握手协议。

posted @ 2008-01-25 17:10 vesung 阅读(944) | 评论 (0)编辑 收藏

一个简单的需求的实现:
在程序中调用某类的某方法,并将返回结果println() 出来。
实现方法:

MethodTest.java
import java.util.ArrayList;
import java.util.List;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

/**
 * 功能描述:
 *
 * 
@author <a href='mailto:vesung@gmail.com'>wangjing</a>
 * Copyright: Copyright (c) 2006-2008 by vesung.cn.
 * Date: 2008-1-23 14:13:26
 
*/

public class MethodTest{
    TestVO vo 
= new TestVO();

    
/**
     * 初始化vo
     
*/

    
protected void setUp(){
        vo.setInvoiceSortCode(
"InvoiceSortCode");
        vo.setInvoiceSortName(
"InvoiceSortName");
        vo.setOperaddress(
"Operaddress");
        vo.setStockStatus(
"StockStatus");
        vo.setStockStatusCode(
"StockStatusCode");
        List list 
= new ArrayList();
        list.add(
"StockStatusList");
        vo.setStockStatusList(list);
        vo.setTaxpayerName(
"TaxpayerName");
        vo.setTaxRegCode(
"TaxRegCode");
    }


    
public static void main(String[] args) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        MethodTest m 
= new MethodTest();
        m.setUp();
        
//待执行的方法名称注意没有()
        String methodName = "getInvoiceSortCode";

        
//先获取相应的method对象
        
//getMethod第一个参数是方法名,第二个参数是该方法的参数类型,
        
//因为存在同方法名不同参数这种情况,所以只有同时指定方法名和参数类型才能唯一确定一个方法
        Method method = m.vo.getClass().getMethod(methodName,new Class[0]);
        
//接下来就该执行该方法了,解释一下参数
        
//第一个参数是具体调用该方法的对象
        
//第二个参数是执行该方法的具体参数
        System.out.println(methodName+"():"+method.invoke(m.vo,new Object[0]));
    }

}

TestVO.java
import java.util.List;

/**
 * 功能描述:
 *
 * 
@author <a href='mailto:vesung@gmail.com'>wangjing</a>
 * Copyright: Copyright (c) 2006-2008 by vesung.cn.
 * Date: 2008-1-23 14:17:14
 
*/

public class TestVO {
    
private String taxRegCode;
    
private String stockStatusCode;
    
private String stockStatus;
    
private List stockStatusList;
    
private String taxpayerName;
    
private String operaddress;
    
private String invoiceSortCode;
    
private String invoiceSortName;
    
public String pub;

        public String getInvoiceSortCode(){
                return InvoiceSortCode;
        }
//省略getter(),setter()
//  
}
posted @ 2008-01-24 11:28 vesung 阅读(22306) | 评论 (0)编辑 收藏

# Set root logger level to WARN and append to stdout
log4j.rootLogger=WARN, stdout, error
#WARN为log输出级别,stdout,error为该log的别名,下面将用到
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j
.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L- %m%n

# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL

# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j
.logger.com.opensymphony.webwork=DEBUG

# Spring Stuff
log4j.logger.org.springframework=INFO

#################################
#                       错误信息 #
#################################

log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j
.appender.error.File=E:/MyDoc/WorkSpace/webworkroot/logs/errors.log
log4j
.appender.error.layout=org.apache.log4j.PatternLayout
log4j
.appender.error.layout.ConversionPattern=[%d]-%-5p (%F:%L)|%m%n
log4j
.appender.error.DatePattern='.'yyyy-MM-dd
log4j
.appender.error.Threshold=ERROR

###################################
#                       CONSOLE #
#################################


log4j
.appender.console=org.apache.log4j.ConsoleAppender
log4j
.appender.console.layout=org.apache.log4j.PatternLayout
log4j
.appender.console.layout.ConversionPattern=(%F:%L)|%m%n

log4j
.appender.errorcsle=org.apache.log4j.ConsoleAppender
log4j
.appender.errorcsle.layout=org.apache.log4j.PatternLayout
log4j
.appender.errorcsle.layout.ConversionPattern=%-5p (%F:%L)|%m%n
log4j
.appender.errorcsle.Threshold=ERROR

##################################
#                       业务系统 #
#################################

log4j.logger.cn.vesung=DEBUG, logic

log4j
.appender.logic=org.apache.log4j.DailyRollingFileAppender
log4j
.appender.logic.File=E:/MyDoc/WorkSpace/webworkroot/logs/logic.log
log4j
.appender.logic.layout=org.apache.log4j.PatternLayout
log4j
.appender.logic.layout.ConversionPattern=[%d]-%-5p (%F:%L)|%m%n
log4j
.appender.logic.DatePattern='.'yyyy-MM-dd

其实业务系统和错误信息的输出定义对开发人员来说是最重要的。
posted @ 2008-01-22 15:28 vesung 阅读(28658) | 评论 (0)编辑 收藏

     摘要: 刚刚有消息报道MySQL要IPO,结果就来一颗炸弹,被SUN给收购了,那么,我们是否可以这样推测,哪些同样处在IPO上市名单前列的OpenSource公司是否也同样的处在大鳄们的收购名单中?
虽然,我们不否认,被大鳄们收购的OpenSource公司因为在资金上获得了充足的支持,可以为我们提供更好的服务,但是也不得不看到--前一阶段外电报道IBM重新审视Gluecode的定位问题,Webshpere社区版的活力和技术特性已经冲击到Webshpere收费版本,和IBM的战略构成冲突--大鳄们收购OpenSource公司会为相关产品的服务的可持续性带来巨大的问号,开源本来就与商务存在着天然的不和谐,而商务公司的直接插手,更是让OpenSource的未来陷入迷雾。

--------------------------------------------------------------------------------
太震撼了!真的还是假的??

----------------------------------------------  阅读全文
posted @ 2008-01-21 18:42 vesung 阅读(382) | 评论 (0)编辑 收藏

仅列出标题
共6页: 上一页 1 2 3 4 5 6 下一页