设计模式总结
摘要:1 设计原则 1 单一责任原则,一个类应该只有一个责任,如果有多个责任,责任就会耦合,如实现逻辑和界面的责任分开。 2 开闭原则:对扩展开发,对修改关闭。我们可以扩展模块的功能,但是不必改动原模块的代码 如使用接口和抽象类,关键是抽象化 3 里氏代换原则:任何基类出现的地方,子类一定可以出现,是对开
阅读全文
posted @
2017-09-29 22:17
wheleetcode
阅读(264)
推荐(0)
内存模型
摘要:1 Java程序最初通过解释器进行解释执行,当虚拟机发现某个方法或代码块的执行特别频繁时,就把这些代码认定为热点代码,为了提高执行效率,在执行时虚拟机把这些代码编译成本地平台相关机器码,热点代码。 2 Java内存模型主要定义程序中各个变量的访问规则,即将虚拟机中将变量存储到内存和从内存取出变量这样
阅读全文
posted @
2017-09-28 15:45
wheleetcode
阅读(191)
推荐(0)
运行时内存
摘要:1 程序计数器 线程私有,记录线程所执行的字节码行号指示器。 2 虚拟机栈 描述Java方法执行内存模型 , 进入一个方法创建栈帧。 3 Java堆 存放对象实例 4 方法区:编译后的代码数据,包括加载 的类信息,常量,静态变量。 5 常量池 :class文件常量池方法区一部分存放编译器生成的字面量
阅读全文
posted @
2017-09-24 23:48
wheleetcode
阅读(313)
推荐(0)
网络
摘要:1 通信协议由3部分组成 1 语义部分:用于决定对方对话的类型, 2 语法 对方对话的格式 3 变换规则 通信双方的应答关系 2 国家标准化组织ISO 提出了开发系统互连参考模型 osi (open system interconnection)把计算机网络分为7层 3 ip地址用于唯一标识网络中的
阅读全文
posted @
2017-09-24 15:19
wheleetcode
阅读(146)
推荐(0)
类加载机制与反射
摘要:1 系统可能在使用某个类时加载该类,也可能采用预加载机制加载某个类。 2 当调用Java命令运行Java程序时,命令会启动一个Java虚拟机进程 3 当系统主动使用某个类时,如果类还没有被加载到内存,系统会通过加载,连接,初始化来对类进行初始化,类加载是指将类的class文件读入内存,并创建一个cl
阅读全文
posted @
2017-09-23 23:44
wheleetcode
阅读(154)
推荐(0)
IO
摘要:Runtime对象的exec()方法可以运行其他程序,并产生一个Process对象。Process类提供3个方法 getErrorStream() 获取子进程错误流 getInputStream() 获取子进程输入流 getOutputStream() 获取子进程输出流 public static
阅读全文
posted @
2017-09-23 15:43
wheleetcode
阅读(179)
推荐(0)
Annotation
摘要:1 Annotation提供了一种为程序元素设置元数据方法,就像修饰符一样修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息存储在Annotation的“name=value”对中 2 4个基本annotation 1 限定重写父类方法 @Override class A { voi
阅读全文
posted @
2017-09-20 23:55
wheleetcode
阅读(212)
推荐(0)
jdbc
摘要:1 sun提供的jdbc完成以下功能 1 与数据库建立连接 2 执行sql语句 3 获取执行sql语句执行结果 2 数据库驱程序是jdbc程序和数据库之间的转换层,负责将jdbc映射成特定数据库调用。 3 数据库操作语句 默认以分号作为每条命令结束符 数据库一个实例可以同时包含多个数据库 , 当前实
阅读全文
posted @
2017-09-19 23:47
wheleetcode
阅读(137)
推荐(0)
集合
摘要:1 重写hashCode规则 1 一个对象调用多次方法,方法返回值相同 2 两个对象调用equals方法true,hashCode相同 3 equals方法比较的field,都应该即使hashcode 2 hashset 用对象equals比较对象是否相等 TreeSet使用compateTo()比
阅读全文
posted @
2017-09-18 23:47
wheleetcode
阅读(167)
推荐(0)
与运行环境交互
摘要:1 java 类名 数组参数 java My qq "dw dsfd" 多个参数中间空格隔开,如字符串中间有空格,加引号 2 使用Scanner获取键盘输入,基于正则表达式的文本扫描器,不同构造器可以接收文件,输入流,字符串为数据源 ,默认使用空白(空格,tab,回车)做分隔符, public st
阅读全文
posted @
2017-09-18 20:30
wheleetcode
阅读(217)
推荐(0)
计数排序and基数排序
摘要:1 计数排序,稳定 复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; int k = 0; for (int i = 0; i < n; i++) { k = Math.max(k, num
阅读全文
posted @
2017-09-17 10:24
wheleetcode
阅读(196)
推荐(0)
面向对象下
摘要:1 final 关键字修饰变量,方法,类,系统不允许为final变量重新赋值,子类不允许覆盖父类final方法,final类不能派生子类。通过final实现不可变类,不可变类让系统更安全。 2 抽象类主要作为多个类的模版,接口定义了多个类应该遵守的规范, 3 enum用于创建枚举类,枚举类是一种不能
阅读全文
posted @
2017-09-16 19:54
wheleetcode
阅读(167)
推荐(0)
面向对象
摘要:1 使用继承来实现复用时,子类对象可以直接赋给父类变量,这个变量具有多态性。 2 构造器用于对类实例经行初始化操作,构造器支持重载,如果多个重载构造器里包含相同初始化代码,可以把他们放在普通初始化块中完成,初始化块总在构造器执行前被调用。还提供静态初始化块,用于对初始化类,在类初始化阶段被执行。 3
阅读全文
posted @
2017-09-15 20:06
wheleetcode
阅读(188)
推荐(0)
流程控制与数组
摘要:1 两种基本流程控制结构。 分支结构:用于实现根据条件选择性的执行某段代码 if switch 循环结构:根据循环条件重复执行某段代码 while , do while , for, 2 顺序结构 从上到下逐行执行,中间没有判断,跳转。 3 分支结构 if 使用布尔表达式或值作为条件经行分支控制,s
阅读全文
posted @
2017-09-15 00:00
wheleetcode
阅读(183)
推荐(0)
数据类型和运算符
摘要:1 强类型语言特征 1 所有变量先声明,后使用,2 指定类型变量只能接收类型与之匹配的值。 可以在编译过程中发现源码的错误,程序健壮。 2 基本类型 1 数值类型 整型,字符型,浮点型 可以经行类型转换(自动,强制) 2 布尔类型 3 注释 1 单行注释 // 2 多行注释 /* */ 3 文档注释
阅读全文
posted @
2017-09-14 23:11
wheleetcode
阅读(222)
推荐(0)
理解面向对象
摘要:1 面向对象3个基本特征 继承 封装 多态 2 结构化程序设计 按功能分析系统需求,自顶向下,逐步求精,模块化。主张按功能把软件系统逐步细分。 3 程序设计三种基本结构 顺序结构,选择结构,循环结构。 当型循环:先判断后执行 直到型循环,先执行,后判段 4 面向对象程序设计 使用类,对象,继承,封装
阅读全文
posted @
2017-09-13 23:51
wheleetcode
阅读(167)
推荐(0)
java名词
摘要:1 applet Java语言编写的小程序,可以包含在html页面中,有支持Java语言的浏览器执行,作用是在页面产生动态效果。 2 jdk java development kit java 开发环境 编译Java程序的编译器javac命令 javac 编译器 将源程序转为字节码 jar 打包 将
阅读全文
posted @
2017-09-13 22:24
wheleetcode
阅读(218)
推荐(0)
UML同一建模语言
摘要:结构型图:描述系统静态结构,显示系统类之间的静态关系。 行为型图:描述系统的动态属性,显示系统元素如何协作产生满足要求的系统行为。 类图分类名,属性清单,方法清单,性质清单几层 类之间的关系:1 一般化关系:类与类,接口与接口之间继承,类对接口实现。从子类指向父类、extends implement
阅读全文
posted @
2017-09-13 14:59
wheleetcode
阅读(172)
推荐(0)
调停者模式
摘要:概述: 调停者模式包装了一系列对象相互作用的方式,使得对象不必相互明显引用,从而使他们可以较松散的耦合,当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用,从而保证这些相互作用可以彼此独立变化。 大家都知道,电脑里面各个配件之间的交互,主要是通过主板来完成的。
阅读全文
posted @
2017-09-13 11:08
wheleetcode
阅读(331)
推荐(0)
线程池
摘要:线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池的5种状态是:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。 1. RUNNING (01) 状态说明:线程池处在RUNNING状态时,能够
阅读全文
posted @
2017-09-12 17:08
wheleetcode
阅读(173)
推荐(0)
解释器模式
摘要:概念: 解释器模式就是定义语言的文法,并定义一个解释器解释文中的句子。 在这里我们将语言理解成使用规定格式和语法的代码。 在前面我们知道可以构建解释器来解决那些频繁发生的某一特定类型的问题,在这我们将这些问题的实例表述为一个语言中句子。例如我经常利用正则表达式来检测某些字符串是否符合我们规定的格式。
阅读全文
posted @
2017-09-12 14:20
wheleetcode
阅读(165)
推荐(0)
同步类
摘要:(01) CountDownLatch的作用是允许1或N个线程等待其他线程完成执行;而CyclicBarrier则是允许N个线程相互等待。(02) CountDownLatch的计数器无法被重置;CyclicBarrier的计数器可以被重置后使用,因此它被称为是循环的barrier。关于Cyclic
阅读全文
posted @
2017-09-11 23:27
wheleetcode
阅读(235)
推荐(0)
访问者模式
摘要:概述; 在我们实际的软件开发过程中,有时候我们对同一个对象可能会有不同的处理,对相同元素对象也可能存在不同的操作方式,如处方单,划价人员要根据它来划价,药房工作者要根据它来给药。而且可能会随时增加新的操作,如医院增加新的药物。但是这里有两个元素是保持不变的,或者说很少变:划价人员和药房工作中,变的只
阅读全文
posted @
2017-09-11 17:22
wheleetcode
阅读(206)
推荐(0)
分派概念
摘要:1 静态类型(明显类型) :变量被声明的类型 2 实际类型:变量所引用的对象的真实类型 分派:根据对象的类型对方法经行的选择,根据分派发生的时期,分为静分派和动分派。 静分派发生在编译时期,分派根据静态类型信息发生,方法重载 动分派发生在运行时期,动态分派动态置换某个方法。每个对象都持有一个对分派表
阅读全文
posted @
2017-09-11 16:26
wheleetcode
阅读(313)
推荐(0)
原子变量
摘要:1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ;3. 引用类型: AtomicReference, Atomi
阅读全文
posted @
2017-09-08 19:03
wheleetcode
阅读(222)
推荐(0)
多线程 程序
摘要:wait()和notify()示例 public class Client{ public static void main(String[] args) { Threada t1 = new Threada("t1"); synchronized (t1) { try { System.out.p
阅读全文
posted @
2017-09-08 16:45
wheleetcode
阅读(266)
推荐(0)
状态模式
摘要:概述: 状态模式允许一个对象在其内部状态改变的时候改变其行为, 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从
阅读全文
posted @
2017-09-08 14:00
wheleetcode
阅读(158)
推荐(0)
SVN
摘要:1 安装 2 测试 3 创建仓库 4 启动 l 格式:cmd> svnserve -d -r 仓库的路径 -d后台执行 -r版本库的根目录 启动时,指定“仓库路径”不同,分类:多仓库和单仓库 l 多仓库【掌握】 启动:svnserve -d -r 仓库父目录 ,表示启动时多仓库 例如:svnserv
阅读全文
posted @
2017-09-07 23:47
wheleetcode
阅读(121)
推荐(0)
备忘录模式
摘要:概述: 备忘录对象是一个用来存储另一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,讲一个对象的状态捕获住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。 备忘录模式所涉及的角色有三个:备忘录(Memento)角色、发起人(Originator)角色
阅读全文
posted @
2017-09-07 15:17
wheleetcode
阅读(176)
推荐(0)
命令模式
摘要:概述: 命令模式把发出命令的责任和执行命令的责任分开,委派给不同的对象。 命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式又称为动作(Action)模式或事务(Transacti
阅读全文
posted @
2017-09-06 16:33
wheleetcode
阅读(1399)
推荐(0)
责任链模式
摘要:概述: 在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某个对象决定处理此请求,发出请求的客户端并不知道链上的哪个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 职责链模式(Chain of Respons
阅读全文
posted @
2017-09-05 14:45
wheleetcode
阅读(147)
推荐(0)
迭代子模式
摘要:概述: Java对迭代子模式的支持来自于Java聚集的需要,一个聚集需要向外界提供遍历聚集元素的方法。提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构 迭代器模式:使用迭代器模式来提供对聚合对象的统一存取,即提供一个外部的迭代器来对聚合对象进行访问和遍历 , 而又不需暴露该对象的内部
阅读全文
posted @
2017-09-05 14:17
wheleetcode
阅读(156)
推荐(0)
观察者模式
摘要:概述: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,主题对象在状态上发生变化时,会通知所有观察者对象像,使他们能够自动更新自己。 .适用性 在以下任一情况下可以使用观察者模式: • 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使
阅读全文
posted @
2017-09-04 14:54
wheleetcode
阅读(158)
推荐(0)
模版方法
摘要:概述: 准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余逻辑有不同的实现。 适用性 模板方法应用于下列情况: • 1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 •
阅读全文
posted @
2017-09-04 14:30
wheleetcode
阅读(158)
推荐(0)
Maven使用
摘要:安装 1 安装jdk 2 下载解压maven 3 配置环境变量path 4 输入mvn –v 检测是否安装成功 配置 1 全局文件配置: %MAVEN_HOME%/conf/settings.xml 是maven全局的配置文件。 该配置文件中配置了本地仓库的路径,默认就是:~/.m2/reposit
阅读全文
posted @
2017-09-03 23:44
wheleetcode
阅读(191)
推荐(0)
策略模式
摘要:概述: 在软件开发中经常遇到类似的情况,实现某一功能有多种算法或者策略,我们可以根据环境或条件的不同选择不同的算法或策略来完成功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个
阅读全文
posted @
2017-09-03 22:00
wheleetcode
阅读(183)
推荐(0)
不变模式
摘要:概述: 一个对象的状态在对象被创建之后就不再变化,这就是不变模式 弱不变模式:一个类的实例状态是不可变的,但这个类的子类的实例具有可能会变化的状态,实现弱不变性满足的条件: 1 对象没有任何方法修改对象的状态 2 对象的属性私有,客户端会对公开属性修改 3 对象所引用对象变化的话,必须限制外界对可变
阅读全文
posted @
2017-09-03 21:35
wheleetcode
阅读(131)
推荐(0)
桥梁模式
摘要:概述: 将抽象性化与实现化脱耦,使二者可以独立的变化。 耦合就是两个实体行为的某种强关联,将强关联去掉,或将强关联变为弱关联就是脱耦。 强关联就是在编译时期已经确定,无法在运行时期动态改变的关联。弱关联就是可以动态确定并且可以在运行时期动态改变的关联,继承关系是强关联,聚合关系是弱关联。 将两个角色
阅读全文
posted @
2017-09-03 16:41
wheleetcode
阅读(158)
推荐(0)
九章强化最后一章
摘要:1 Find Peak Element public int findPeak(int[] a) { // write your code here if (a == null || a.length <= 2) return -1; int start = 0; int end = a.lengt
阅读全文
posted @
2017-09-02 11:59
wheleetcode
阅读(118)
推荐(0)
强化第一章
摘要:1 Two Sum public int[] twoSum(int[] numbers, int target) { int[] res = {-1, -1}; if (numbers == null || numbers.length < 2) { return res; } Map<Intege
阅读全文
posted @
2017-09-02 10:54
wheleetcode
阅读(102)
推荐(0)
双指针
摘要:两根指 针1. 一个数组,从两边往中间移动(对撞型)2. 一个数组,同时向前移动(前向型)3. 两个数组(并行型) 对 撞型或者相会型 Two sum 类 和 Partition 类 1 Two Sum public int[] twoSum(int[] numbers, int target) {
阅读全文
posted @
2017-09-01 14:28
wheleetcode
阅读(178)
推荐(0)