`
文章列表
线程池使用背景:当有大批量的任务在一个时间段需要执行的时候,为了控制开辟的线程数量,节约资源,就应该考虑到线程池的使用。 由此想到的一个关于程序级别的性能调优问题,说到多线程这里,当有复杂而且耗时的任务需要处理的时候,首先应考虑到使用多线程进行并发处理,但当需要处理的任务数量特别多的情况下,又应该开始考虑到线程池的使用以控制开启的线程数量。 下面是一个线程池的具体实现: import java.util.LinkedList; import org.apache.log4j.Logger; public class ThreadPoolMage { /** * 线程池 ...
一个最典型的多线程的应用,主线程EventReceiver起了一个针对某个端口的Server Socket,然后轮训接受客户端socket的连接请求并接收和处理数据,由于接收和处理数据是相对复杂和耗时的一个事情,所以最好的办法就是主线程在socket连接建立完成之后就启动一个专门负责接收和处理的数据的线程,这样就可以做到在连接数量比较大的情况下,以多线程的方式并行快速处理数据。下面是主线程EventReceiver和处理数据的线程ClientEventReceiver。 import java.io.IOException; import java.net.ServerSocket; imp ...
YUI(Yahoo User Interface)介绍在Web 2.0中,SaaS前端不再是一个简单网页。它可以拥有非常Cool的界面,它也可以拥有非常复杂的逻辑。现在,构建一个复杂的SaaS前段界面主要有下面三种技术路线: DHTML(HTML,CSS,Javascript) Flash Platform S ...
public class QuickSort { public static void swap(int [] arr,int a,int b) { int t; t =arr[a] ; arr[a] =arr[b] ; arr[b] =t ; } public static int Partition(int [] arr,int low,int high)     {         int pivot=arr[low];//采用子序列的第一个元素作为枢纽元素         while (low < high)         {          ...
首先, 我先抛出一个定论:”在Javascript中,This关键字永远都指向函数(方法)的所有者”. 具体参考下面的博客: http://www.laruence.com/2009/09/08/1076.html http://www.cnblogs.com/birdshome/archive/2005/03/07/95931.html http://www.cnblogs.com/birdshome/archive/2005/01/26/97885.html
    前面项目中有个change history的功能,多个模块的多个对象都需要记录change history,也就是需要记录对象属性值的变化历史,以便追踪查询。     为此,我设计了ChangeHistory和ChangeDetail两个类,用于记录历史。     但由于此需求是多个模块共同需要的,我们希望将此功能抽出来,设计出一个公共的util功能供系统各模块调用。     由于各个模块的对象都不一样,为了统一接口,我们就应该用到泛型。由于各个对象的哪些属性需要比较,属性的类型也不同,对象对应的表名不同,为了标记这些对象的不同,就使用了注释。有了注释,在获取和记录change信息的时候 ...
参考: http://www.cnblogs.com/zhiliang/archive/2013/02/08/2909159.html

Liferay 学习

参考别人的博客: http://blog.csdn.net/caolaosanahnu/article/details/7172542 http://blog.csdn.net/smilingleo/article/details/2637511
<style>  #uploadImg{ font-size:12px; overflow:hidden; position:absolute}  #file{ position:absolute; z-index:100; margin-left:-180px; font-size:60px;opacity:0;filter:alpha(opacity=0); margin-top:-5px;}  </style>    <span id="uploadImg">  <input type="file" ...
问题描述: liferay上传文件的时候,用<liferay-ui:upload-progress id="<%= uploadProgressId %>">来引用上传进度条组件(参考document library的上传文件实现/portal/portal-web/docroot/html/portlet/document_library/edit_file_entry.jsp),该组件会创建UploadProgress对象(参考/portal/portal-web/docroot/html/js/liferay/upload_progress.js ...
A 概念 最常用的 3 个概念 sequence 序列,对应java 里的list 、数组等非键值对的集合 hash      键值对的集合 namespace 对一个ftl 文件的引用, 利用这个名字可以访问到该ftl 文件的资源 B 指令 if, else, elseif 语法 Java代码  <#if condition>    ...  <#elseif condition2>    ...  <#elseif condition3>    ...  ...  <#else>    ...  </#if>  ...
web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢? 加 载顺序会影响对spring bean 的调用。     比如filter 需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null; 首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关。 web.xml 中 listener 和 serverlet 的加载顺序为 先 listener 后serverlet 最终得出结果:先 listener >> ...
首先简单总结一下: 1. service name 服务名(其实揍是:数据库名),装 ORACLE 时肯定要指定的一个名字 2. tablespace 表空间,数据库对象的磁盘存储位置 3. schema 方案,数据库对象的逻辑分类 4. user 用户,等同于 schema 5. service name > tablespace > schema(user) 详细说明: schema 为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的 schema 下看到的许多类似用户名的节点,这些类似用户名的节点其 ...
 架构演变第一步:物理分离webserver和数据库;架构演变第二步:增加页面缓存;架构演变第三步:增加页面片段缓存;架构演变第四步:数据缓存;架构演变第五步: 增加webserver;架构演变第六步:分库;架构演变第七步:分 ...
————– 函数检索 ————– trim函数: trim() lTrim() rTrim() 校验字符串是否为空: checkIsNotEmpty(str) 校验字符串是否为整型: checkIsInteger(str) 校验整型最小值: checkIntegerMinValue(str,val) 校验整型最大值: checkIntegerMaxValue(str,val) 校验整型是否为非负数: isNotNegativeInteger(str) 校验字符串是否为浮点型: checkIsDouble(str) 校验浮点型最小值: checkDoubleMinValue(str,val) 校验 ...
Global site tag (gtag.js) - Google Analytics