整理下最近的手抄纸

那些优雅的数据结构:

bloomfilter 线段树 树状数组 trie树 后缀树后缀数组 并查集 hash表 b树 红黑树 堆与优先队列

hash算法提供了一种快速存取数据的方法,他用一种算法建立键值与真实值之间的联系(每个真实值只能有一个键值,但一个键值可以有多个真实值),这样可以快速在数组等数据结构中存取数据。我们只要知道key值,就可以快速存取T类型的数据,而不同于像在链表等数据结构中查找一样找来找去。key值,一般是hash算法算出来的,就是把任意长度的输入通过hash算法变成固定长度的输出,输出即为散列值,这是一种压缩,不同的散列输入可能会出现同一输出,不能从散列值的输出唯一确定输入值。

 

bloomfilter中hash函数的个数K,位数组大小M,加入字符串数量N的关系为,给定M N,k=ln(2)*M/n时出错概率最小

 

UDDI:技术模型/tModel:在UDDI中注册的规范

UDDI注册中心数据分4类:技术模型、企业、企业服务、服务绑定

一系列webservice标准: WS-* WS-Policy WS-Security 

tModel:指向WSDL的URL;Provider:服务部署部门的名字、描述和分类;Service:服务的名字描述和分类 Biding访问地址和分类

 

网络爬虫是一个自动提取网页的程序,他为Search Enginee从WEB上下载网页,是搜索引擎的重要组成

 

UDDI商业注册所提供的信息包含3部分:白页:地址,联系方式,企业标识;黄页:基于分类法的行业类别;绿叶:企业所提供的WS的技术信息,指向文件或URL

 

UDDI XML Schema定义了四种主要信息类型:商业实体、服务、绑定、服务调用规范说明

 

ClassLoader原理:

当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构分别为:bootstrap classloader ;extension classloader; system classloader

其中第一个为了加载java核心类(所以不需要再环境变量中指定这些class类库),它不是classloader的子类,而是JVM自身的实现;第二个为了引入出java核心类意外的新功能,加载新功能的标准机制;第三个是JVM 被调用,加载来自命令java的classpath或java.class.path系统属性或classpath*作系统属性所指定的JAR类包和类路径。

第二类是第三类的parent,而第一类是第二类的parent,但是第一类并不是一个classloader。

Classloader加载类步骤:

1、检测此class是否再如果(即是否存在于cache中)

2、若parent classloader不存在(那他肯定是第一类),则请求JVM从bootstrap classloader载入,不成功则寻找class文件(于此classloader相关的类路径中寻找,找不到就抛出classnotfound异常)

3、请求parent classloader载入,不成功则寻找class文件(于此classloader相关的类路径中寻找,找不到就抛出classnotfound异常)

最终返回一个class或异常

 

 

其中寻找class文件过程可通过覆盖classloader的findclass方法实现自己的载入策略或覆盖loadclass方法实现自己的载入过程。

posted @ 2012-07-02 20:36  avenxia  阅读(258)  评论(0编辑  收藏  举报