算法 - 计算一个四则运算字符数组(Java) 实现一个一位数字的四则运算计算函数,输入是一个char数组,输出是计算结果。比如,输入是 char[] inputs = {'1','+','2','*','3'},输出是7。输入的字符里面,如果是数字,则只有1位;如果是符号,则只有加减乘除四个运算符,没有括号...
算法-根据输入数组,用后一个值减去前一值得到差值,找出最大的差值(Java) 贪心算法: 根据输入数组,返回后一个值减去前一值的差值,找出最大的值(注意先后顺序)package algorithm;import java.util.Arrays;public class Greedy { public static void main(String[] args) { int[] prices = {7, 9, 1, 5, 3, 6, 4}; int max = getMaxProfit(prices); .
Java编码规范-创建和销毁对象 使用static factory 方法取代构造方法(Consider static factory methods instead of constructors) 当构造方法参数很多时考虑使用builder (Consider a builder when faced with many constructor parameters) 单例模式的属性用私有的构造方法或者是一个enum 类型初始化(Enforce the singleton property with a privagte constr
Pattern - Factory Method (Creational Pattern) Factory Method 顾名思义就是负责创建对象的方法。Factory Method适用情景:当一个类无法预测创建什么类型的对象时 当一个类想要它的子类去指定要创建的对象时 当类将责任委托给子类,并且想在子类中本地化信息时例子:Pattern - Template Method pattern (Behavioral Pattern)中的createProcessor就是工厂方法。...
Pattern - Adapter pattern (Structural Patterns) Adapter pattern适用情景:如果想使用已有的类(Adaptee),并且自身(Target)的接口并不满足需求 想要创建一个可以重复使用的类(Adapter),这个类要与另一个无关的类(Adaptee)交互,也就是说两个类之间不一定有兼容的接口 (只用于对象适配器-Object adapter)需要使用多个已有的子类(Adaptee1, Adaptee2),但是为这些子类(Adaptee1, Adaptee2)分别创建子类是不切实际的,这时可以创建一个对象适配器(Adapter)用来适配其
Pattern - Template Method pattern (Behavioral Pattern) Template Method pattern适用情况:为了一次性实现一个算法的不变部分,子类实现变化的部分时。 为了避免代码重复,当子类中的共同行为应该被分解出来并写在通用类中时。首先确定现有代码中的差异,然后将这些差异拆分成新的操作,最后将不同的代码替换成一个template method,这个template method调用这些新的操作。 为了控制子类扩张。可以定义一个template method, 这个template method在特定的地方调用hook操作,从而允许扩展只发生在这些特
sql - delete和truncate区别 delete 和 truncate 都可以删除表数据。区别:delete是DML命令,truncate是DDL命令。truncate可以删除整张表的数据而不维护表的完整性,delete可以删除指定的数据, delete不能绕过完整性强制机制。| Key | delete | trucate || Basic|删除指定的数据|删除整张表的数据|| where 语句 | 可以带where语句 |不能跟where|| Locking| 删数据前锁定要删除的数据| 锁整张表|| 回滚| 可以回滚变更
算法 - 找出数组中第二大的元素(java) public class SecondMax { public static void main(String[] args) { SecondMax count = new SecondMax(); Integer[] arr = {10, -2, 33, 140, 25, 33, -2, 0, 140}; //1. Use sorting, output is : //The second max element is 33
算法 - 计算数组中每个数字出现的次数(java) public class Count { public static void main(String[] args) { Count count = new Count(); int[] arr = {10, -2, 33, 140, 25, 26, 10, -2, 0, 25, 10, 33, -2, 50}; count.printElementsCount(arr); // output is (0出现1次,-2出现2次,以此类
算法 - 从数组中找出和为给定值的所有组合(java) public class Pairs { public static void main(String[] args) { Pairs pairs = new Pairs(); // 输出结果为: //[1, 2] //[1, 2, 0] //[1, 3, 0, -1] //[1, 3, -1] //[3] //[3, 0] //[0, -1, 4] .
算法 - 从数组中找出两个数和为给定值的组合(java) public class Pairs { public static void main(String[] args) { Pairs pairs = new Pairs(); //1. no duplicated elements, result is : //arr[0] + arr[11]= 40 //arr[3] + arr[5]= 40 //arr[6] + arr[8]= 40 //arr[1
Pattern - Telescoping Constructor pattern Telescoping Constructor pattern当一个类属性较多,需要创建接受许多参数列表的构造方法时,需要这种设计方法。次等的写法(重复代码较多):public class Person { private final String name; private final String lastName; private final int age; private final String profession; private fi
汉诺塔(Hanoi towers)- java 汉诺塔递归算法如下:输入的n表示的是环的数量 假如有三个柱子A,B,C,将A上的n个环移动到C上,始终保持由小到大的次序: 首先把前面n-1个环从A移动到B上,使用C作为辅助 然后将最后一个环从A移动到C上 最后将B上的n-1个环从B移动到C上,使用A作为辅助 public class Hanoi { public static void main(String[] args) { Scanner scanner = new Scanner(System.in)
java学习总结 - 线程 程序-进程-线程程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。动态过程:有它自身的产生、存在和消亡的过程。如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径。若...
java学习总结 - 反射 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。Java反射机制提供的功能在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的成员变量和方法 生成动态代理反射相关的主要API...
java学习总结 - 泛型 Java中的泛型只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息查出,并且在对象进去和离开方法的边界处提娜佳类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。泛型类独享实例化时不指定泛型,默认为Object泛型不同的引用不能相互赋值泛型接口泛型方法方法,也可以被泛型化,不管此时定义在其中的类是不是泛型化的。在泛型方法中...
java学习总结 - 集合 Table of ContentsHashSetTreeSet:自然排序定制排序List与ArrayListArrayList和VectorMapHashMap 与 HashtableTreeMapCollections操作集合的工具类集合类存放在java.util包中,是一个用来存放对象的容器。集合只能存放对象,比如存一个int型整数5...
java学习总结 java都是值传递基本数据类型的变量传递的是值,即栈中的值引用数据类型的变量传递的是栈中的值,即对应的堆中对象的地址java支持单继承,不允许多重继承。override:子类重写父类方法,只是重写方法体;重写方法不能使用比被重写方法更严格的访问权限(如果父类的方法是public,子类重写的时候不能缺省);两者必须同时为static或同时为非static;子类抛出的异常不能大于父...
选择排序 public void selectionSort(int[] a) { for(int j=0; j<a.length-1; j++) { int minPos = j; for(int i=j+1; i<a.length; i++) { if(a[minPos] > a[i]) { minPos = i; } } //s...