摘要: 1 简单插入排序 假设前面的n个元素已经排好序了,然后要排下一个元素,就依次遍历比较这n个元素和该元素的大小,将该元素放在比它小和比它大的两个元素之间。n^2 2 冒泡排序 依次比较两个相邻的元素,将大的放在后面,一轮之后,最大的元素就冒泡到最后了。n^2 3 快速排序 拿出一个元素,将它和所有的元 阅读全文
posted @ 2017-02-23 22:46 PhoenixTree(梧桐树) 阅读(205) 评论(0) 推荐(0)
摘要: 1 图的表示 1.1 邻接矩阵 一个矩阵表示各个顶点的连接关系,如果1到2是连接的,那么A[0][1]=1。 1.2 邻接链表 将某个定点的所有邻接点放在以其开头的一个链表中。 2 深度优先搜索 2.1 什么是深度优先搜索 先处理根,然后处理它的一个邻接点,然后再处理邻接点的一个邻接点,直到没有邻接 阅读全文
posted @ 2017-02-23 21:52 PhoenixTree(梧桐树) 阅读(284) 评论(0) 推荐(0)
摘要: 1 什么是适配器模式 当我要使用一个类时,但是我发现它的接口不是我想要的模样,这个时候,我可以使用适配器模式,新设计一个类,然后这个类提供我想要的接口,在它里面引用原来的类。 2 什么是装饰模式 当我想要给一个类的增加功能时,但是我又不想继承,那么我就可以用装饰模式。 3 适配器模式和装饰模式的区别 阅读全文
posted @ 2017-02-23 21:33 PhoenixTree(梧桐树) 阅读(251) 评论(0) 推荐(0)
摘要: 1 什么是代理模式 代理模式就是说,不要你直接访问一个对象,而是通过代理去访问这个对象。 2 什么时候需要用到代理模式 不想把对象全部暴露给客户的时候。 3 代理模式的结构 让代理和被代理者实现同一个接口,然后,代理中含有被代理对象的引用。用户调用代理的方法,间接完成对被代理对象的调用。 阅读全文
posted @ 2017-02-23 21:25 PhoenixTree(梧桐树) 阅读(121) 评论(0) 推荐(0)
摘要: 1 单观察者模式 只有一个观察者。 只有一个观察者的时候,会对类的继承关系进行简化。 在主题中定义一个接口,这即时主题约定的和观察者的回调。 主题中只需要保存一个观察者即可,主题需要提供接口让观察者注册自己。 一般情况下观察者实现主题定义的接口,然后把自己注册给主题。 2 多观察者模式 多个观察者, 阅读全文
posted @ 2017-02-23 21:11 PhoenixTree(梧桐树) 阅读(149) 评论(0) 推荐(0)
摘要: 1 什么是策略模式 实现同一个功能可以有很多不同的策略,我为这些策略提取统一的接口。不同的算法再用不同的类去实现,这就是策略模式。 比如sort,有很多算法。 2 使用策略模式的时机 策略模式可以让算法独立于使用它的客户而变化,可以任意扩展算法,改进算法,而不需要修改原有的代码。非常符合开闭原则和单 阅读全文
posted @ 2017-02-23 20:57 PhoenixTree(梧桐树) 阅读(178) 评论(0) 推荐(0)
摘要: 1 factory pattern本质上就是对对象创建进行抽象 抽象的好处是显然的,可以方便用户去获取对象。 2 使用factory pattern的时机 第一,当一个对象的创建依赖于其它很多对象的时候,即一个对象的创建背后存在很多的依赖关系,如果用户要自己去创建这个对象的话,需要首先花很多时间去理 阅读全文
posted @ 2017-02-23 20:46 PhoenixTree(梧桐树) 阅读(246) 评论(0) 推荐(0)
摘要: 1 jvm中是有专门的字符串池的内存空间的,这块空间和栈和堆不同。 2 String s = "string constant"; 这个时候,如果string pool中没有"string constant"这个字符串的话,这个字符串会被放在这个字符串池中。 如果再定义一个变量String t = 阅读全文
posted @ 2017-02-23 16:33 PhoenixTree(梧桐树) 阅读(206) 评论(0) 推荐(0)
摘要: 1 assembler instruction depends,有的汇编指令会被assemble成多条机器指令。 2 机器指令 depends,有的机器指令也不是atomic的。 所以,不要希望在单条语句上面实现atomic。 阅读全文
posted @ 2017-02-23 15:49 PhoenixTree(梧桐树) 阅读(167) 评论(0) 推荐(0)
摘要: 1 多线程环境下的构造函数调用 构造函数本身并没有隐式的同步,因为各个线程构建的是自己的对象,它们之间是不存在竞争关系的。 2 class loader在load class时被了sychronized java.lang.ClassLoader->loadClass(String name)->s 阅读全文
posted @ 2017-02-23 15:25 PhoenixTree(梧桐树) 阅读(252) 评论(0) 推荐(0)
摘要: 1 final关键字修饰不同的java概念,其作用不同。 2 当final修饰变量时 那么这个变量一旦被赋值,就不能再改变了,也就是说,这个变量永远指向同一个地址处。比如一个指向对象的final引用,这个引用永远得指向这个对象,如在代码中修改了,那么编译器会报错,编译不过。但是对这个对象本身的修改是 阅读全文
posted @ 2017-02-23 14:24 PhoenixTree(梧桐树) 阅读(118) 评论(0) 推荐(0)
摘要: 1 jvm默认有3类class loader bootstrap class loader,启动类加载器,负责加载${java_home}/jre/lib目录下的库,比如java基础类库包rt.jar extension class loader,扩展类加载器,负责加载${java_home}/jr 阅读全文
posted @ 2017-02-23 01:00 PhoenixTree(梧桐树) 阅读(313) 评论(0) 推荐(0)
摘要: 1 path很明显是unix shell的环境变量,比如bash shell,输入一个命令,它会先去path指定的目录下查找是不是有该命令的可执行文件。 2 -classpath 只是用在下面这种不发布jar包的场合。用于告诉虚拟机去该目录下查找用户用到的class文件以及第三方库的位置,虚拟机默认 阅读全文
posted @ 2017-02-23 00:28 PhoenixTree(梧桐树) 阅读(670) 评论(0) 推荐(0)