`
eriol
  • 浏览: 407962 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表

new class[0]

    博客分类:
  • Java
new Class[0]表示有零个元素的Class数组,即空数组,与传入null结果是一样的,都表示取得无参构造方法。 但是使用该方式可以避免抛出空异常。
1. 拓扑排序   算法:首先对每个顶点计算它的入度。然后,将所有入度为0的顶点放到一个初始为空的队列(或栈)中。当队列不空时,删除一个顶点v,并将与v邻接的所有顶点的入度均减1。只要一个顶点的入度降为0,就把该顶点放入队列中。此时,拓扑排序就是顶点出队的顺序。使用邻接表的情况下,该算法时间复杂度为O(|E|+|V|)。 public void topsort() throws CycleFoundException { Queue<Vertex> q = new Queue<Vertex>(); int counter = 0; for eac ...
Spring是一个强有力的java程序框架,其被广泛应用于java的程序中。它用POJO提供了企业级服务。 Spring利用依赖注入可以获得简单而有效的测试能力。Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文 ...
  <bean id="beanId" name="beanName" class="beanClass" parent="parentBean" abstract="true | false" singleton="true | false" lazy-init="true | false" autowire="no | byName | byType | constructor | aut ...
在python中,每一个以 .py结尾的Python文件都是一个模块。其他的文件可以通过导入一个模块来读取该模块的内容。导入从本质上来讲,就是载入另一个文件,并能够读取那个文件的内容。一个模块的内容通过这样的属性能够被外部世界使用。   这种基于模块的方式使模块变成了Python程序架构的一个核心概念。更大的程序往往以多个模块文件的形式出现,并且导入了其他模块文件的工具。其中的一个模块文件被设计成主文件,或叫做顶层文件(就是那个启动后能够运行整个程序的文件)。   默认情况下,模块在第一次被导入之后,其他的导入都不再有效。如果此时在另一个窗口中改变并保存了模块的源代码文件,也无 ...
一般来说,我们会将自己写的python模块与python自带的模块分开存放以达到便于维护的目的。   Python 运行环境在查找库文件时是对 sys.path 列表进行遍历,如果我们想在运行环境中注册新的类库,主要有以下三种方法: 在sys.path列表中添加新的路径。 设置PYTHONPATH环境变量。 将库文件复制到sys.path列表中的目录里(如site-packages目录)。 其实,最简单的办法是用 .pth 文件来实现。Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,这样 .pth ...
Chapter 11 --代理模式                                    控制对象的访问   1. 远程代理就好比“远程对象的本地代表”。所谓远程对象,是指在不同的Java虚拟机堆中的对象(或者说在不同的地址空间运行的远程对象)。所谓本地代表,是指一种可以由本地方法调用的对象,其行为会转发到远程对象中。
RMI概述         远程方法调用就是本地对象能够调用远程对象的方法。它使得某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。       其优点在于这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了(如TCP和Socket等)。任意两台计算机之间的通讯完全由RMI负责。调用远程计算机上的对象就像本地对象一样方便。现在流行的j2ee中的EJB的底层实现技术就是RMI,EJB的调用就是经过封装的,更高级的RMI调用。     创建RMI程序的步骤 ...
Chapter 10 --状态模式                                    事务的状态     1. 把一个状态的所有行为放在一个类中。这样将行为局部化,并使得事情更容易改变和理解。   2. 在状态类中要做的事情是实现适合所在的状态的行为。在某些情况下,这个行为会转变到其他状态。    
动态规划(Dynamic Programming)   一、动态规划的基本思想:       动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可 ...
Chapter 9 --迭代器模式和组合模式                                    管理良好的集合   1. 迭代器模式依赖于一个名为迭代器的接口。 Structure hasNext()方法告诉我们,是否在这个聚合中还有更多的元素。 next()方法返回这个聚合中的下一个对象。 remove()方法允许从聚合中删除由next()方法返回的最后一个项。   2. 当我们说“集合”(collection)的时候,我们指的是一群对象。其存储方式可以是各式各样的数据结构,例如:列表、数组、散列表,无论用什么方式存储,一律可以视为是集合,有时候也 ...
chapter 8 --模板方法模式                                   封装算法   1. 模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。 模板方法模式: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
List         ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差;LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快。     Map         HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类 ...
      线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。    Collection  ├List  │├LinkedList  │├ArrayList  │└Vector  │ └Stack  └Set    Map  ├Hashtable  ├HashMap  └WeakHashMap      1. Collection接口      Collection是最基本的集合接口,一个 ...
  和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变量常常带来问题,函数的返回值也会有问题。因为如果返回的是函数内部静态声明的空间的地址,则在一个线程调用该函数得到地址后使用该地址指向的数据时,别的线程可能调用此函数并修改了这一段数据。在进程中共享的变量必须用关键字volatile来定义,这是为了防止编译器在优化时(如gcc中使用-OX参数)改变它们的使用方式。 ...
Global site tag (gtag.js) - Google Analytics