- 浏览: 32296 次
- 性别:
- 来自: 天津
文章列表
web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢?
加载顺序会影响对spring bean 的调用。
比如filter 需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null;
首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关。
web.xml 中 listener 和 serverlet 的加载顺序为 先 listener 后serverlet
最终得出结果:先 listener >> f ...
Servlet 访问spring容器
- 博客分类:
- Java
头晕, 没看懂,先存着
http://blog.csdn.net/indexchen/article/details/1301717
maven上传jar至依赖库
- 博客分类:
- Java
项目中遇到一个需求,是把自己这边的DO传到服务器的repository库中。首先需要
maven install 将相应的包上传到本地库,然后修改pom.xml的parent节点
例如
<parent>
<artifactId>parent</artifactId>
<groupId>com.taobao</groupId>
<version>1.0.1</version>
</parent>
需要注意的是要修改version 版本号,防止覆盖。
最后到相应 ...
Throwable是所有Java程序中错误处理的父类,有两种子类:Error和Exception。
Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操 ...
java.util.BitSet
- 博客分类:
- Java
今天发现这个类还是蛮有用的,特别是在做Bitmap算法的时候
另外BitSet是非线程安全的,需要外部同步。
Example:
//创建一个具有10000000位的bitset 初始所有位的值为false
java.util.BitSet bitSet = new java.util.BitSet(10000000);
//将指定位的值设为true
bitSet.set(9999, true);
//输出指定位的值
System.out.println(bitSet.get(9999)); ...
链表问题首先要注意的,必须要注意的是题意:是否为空链表,是否有环,是否是单链表
链表节点的定义如下:
typedef struct list {
int key;
struct list *next;
}list;
已知链表的头结点head,写一个函数把这个链表逆序
关键点:1、是否是空链表;2、是否是循环链表,如果是完全循环链表(整个链表就是一个环),则直接逆序就行,如果不是却还有环,则没法逆序……
以下代码为未处理环的链表逆序
list * reverse(list * head) {
list * h = head;
list * new_head = NULL, *temp;
if ...
线性时间运行的排序算法
- 博客分类:
- 数据结构
桶式排序
桶式排序不再是基于比较的了,它和基数排序同属于分配类的排序,这类排序的特点是事先要知道待排序列的一些特征。
桶式排序事先要知道待排序列在一个范围内,而且这个范围应该不是很大的。
比如知道待排序列在[0,M)内,那么可以分配M个桶,第I个桶记录I的出现情况,最后根据每个桶收到的位置信息把数据输出成有序的形式。
这里我们用两个临时性数组,一个用于记录位置信息,一个用于方便输出数据成有序方式,另外我们假设数据落在0到MAX,如果所给数据不是从0开始,你可以把每个数减去最小的数。
public class BucketSorter {
public void ...
把待排序序列分成相同大小的两个部分,依次对这两部分进行归并排序,完毕之后再按照顺序进行合并。
基本分治:将原问题分解为规模小的相对独立的子问题,在出口直接解决,然后递归,将子问题的解合并
int b[100]; // 辅助用的临时存储数组
void Merge(int a[], int left, int mid, int right)
{
int i = left, j = mid + 1, k = left;
while (i <= mid && j <= right) {
if (a[i] < a[j]) b[k ++] = a[i ++];
...
(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。
(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix. ...
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。
在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方 ...
先来看内部排序中最简单的2路归并排序算法。
算法核心操作是将一维数组中前后相邻的两个有序序列归并为一个有序序列,给定数组中序列界限i、m、n,用2个下标变量分别从i和j=m+1开始逐个往后处理,先比较,小的写到结果序列的当前遍历下标k中,相应下标自增继续比较直到某个序列的下标走到边界,再将另外一个序列的剩余元素拷贝到结果序列中。
算法可用递归或递推实现,从相邻的两两元素开始不断调用上面的核心操作组成较长有序序列直到完成整个序列。
算法进行一趟归并就得到一个局部有序的完整新序列,n个元素共需要log2n趟归并,每趟完成比较操作n次(1次得到序列的1个值),得到的新序列 ...
Linux系统之间copy文件
- 博客分类:
- Linux
不同的Linux之间copy文件常用有3种方法,第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。第二种方法就是采用samba服务,类似Windows文件copy的方式来操作,比较简洁方便,第三种就是利用scp命令来进行文件复制。
scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
然后会提示你输入另外 ...
使用TransactionTemplate 不需要显式地开始事务,甚至不需要显式地提交事务。这些步骤都由模板完成。但出现异常时,应通过TransactionStatus 的setRollbackOnly 显式回滚事务。
TransactionTemplate 的execute 方法接收一个TransactionCallback 实例。Callback 也是Spring 的经典设计,用于简化用户操作, TransactionCallback 包含如下方法。
• Object dolnTransaction(TransactionStatus status) 。
该方法的方法体就是事务的执行体。
如 ...
http://blog.csdn.net/sparkliang/article/details/5279393
一致性 hash 算法( consistent hashing )
张亮
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;
1 基本场景
比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值 ...