摘要: 今天一个哥们学习struts2,尝试使用OGNL,由于关联性吧,就又跳到EL上面,结果神奇的事情发生,他用EL表达式从request域里面居然拿到了action钟的属性,这个天崩地裂的,大家都知道struts2中存值对象都放在actioncontext中,如下图:这幅截图来自于STURTS2 IN ACTIN一书中,由于action是放到valuestack中的,但是valuestack与request貌似没有交集吧。他居然拿到了,疑惑开始了,通过在页面中添加标签发现了一个问题,居然在request里面有struts2.valuestack这么个变量吧,疑团没有散去,却变得更加大了,怎么搞的? 阅读全文
posted @ 2013-02-11 10:45 可可ing 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 1、WebService简介 WebService又是一种高级应用,与之前学习的Struts、Spring、Hibernate等框架不同。WebService是面向服务的架构(SOA),看起来像是比SSH框架要大。那么它到底是做什么用的?什么才是面向服务的架构? 让我们来看一种需求,集团公司可能具有多种WEB应用。比如,前年开发了个进销存系统、去年开发了一个ERP、今年又开发了一个OA。现在这家集团公司需要将这三个系统整合,难道需要重新编码将它们整合吗?而这三个系统又是用不同语言编写的,这种成本对公司来说无疑是一种浪费。WebService可以很好的解决这种需求。 WebService是... 阅读全文
posted @ 2013-02-07 20:46 可可ing 阅读(810) 评论(0) 推荐(0) 编辑
摘要: package com.sw.documentary.common.utils;public class GB2Alpha { //字母Z使用了两个标签,这里有27个值 //i, u, v都不做声母, 跟随前面的字母 private char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', '击', '喀', '垃', '妈 阅读全文
posted @ 2013-01-23 22:20 可可ing 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 1.插入排序:每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。①.直接插入排序直接排序法在最好情况下(待排序列已按关键码有序),每趟排序只需作1次比较而不需要移动元素。所以n个元素比较次数为n-1,移动次数0。最差的情况下(逆序),其中第i个元素必须和前面的元素进行比较i次,移动个数i+1,所以总共的比较次数 比较多,就不写出来了总结:是一种稳定的排序方法,时间复杂度O(n^2),排序过程中只要一个辅助空间,所以空间复杂度O(1)②.希尔排序缩小增量排序,对直接插入排序的一种改进分组插入方法。总结:是一种不稳定的排序方法,时间复杂度O(n^1.25),空间复杂度O(1)2.交换排序 阅读全文
posted @ 2013-01-19 17:12 可可ing 阅读(147) 评论(0) 推荐(0) 编辑
摘要: public class BreakPointDownLoad { private int bufferSize = 32; public void URLLoad(String sourceUrl, String fileName) { InputStream input = null; RandomAccessFile access = null; try { // 获取资源 URL url = new URL(sourceUrl); input = url.openStream(); // 初始化存储文件 File file = new File(fileNam... 阅读全文
posted @ 2013-01-17 22:25 可可ing 阅读(102) 评论(0) 推荐(0) 编辑
摘要: public class DownLoad { private int threadSize = 3; public void URLLoad(String source, String fileName) { RandomAccessFile access = null; try { // 打开连接,获取内容长度,计算每个线程下载长度 URL url = new URL(source); int sourceSize = url.openConnection().getContentLength(); int threadLoadSize = sourceSize / t... 阅读全文
posted @ 2013-01-17 21:48 可可ing 阅读(157) 评论(0) 推荐(0) 编辑
摘要: java与C,c++有很大的不同就是java语言开发者不需要关注内存信息,不会显式的直接操作内存,而是通过jvm虚拟机来实现。java虚拟机运行的时候内存分配图如下图:jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈: 调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器 : 这个保存线程当前执行的字节码指令堆:主要保存创建的对象。方法区:保存class相关的信息。主要是class的一个内存结构信息常量池:方法区的一部分,主要保存class内存结 阅读全文
posted @ 2013-01-17 18:57 可可ing 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatile用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。vola 阅读全文
posted @ 2013-01-17 14:02 可可ing 阅读(106) 评论(0) 推荐(0) 编辑
摘要: EL表达式总EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。点 号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo的Map键名,或者是bean foo的一个性质。放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有 数字,但不能有其他字符)。点号右边只能放合法的Java标识符 阅读全文
posted @ 2013-01-12 21:24 可可ing 阅读(157) 评论(0) 推荐(0) 编辑
摘要: public class CiferUtil { private static final char[] HEX_0X = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static String cifer 阅读全文
posted @ 2013-01-07 19:50 可可ing 阅读(203) 评论(0) 推荐(0) 编辑