- 博客(35)
- 资源 (37)
- 收藏
- 关注
原创 递归实现二分查找
package com.talong;/** * 递归实现二分查找 * 时间复杂度:O(lgN) * 空间复杂度:O(lnN)(函数递归栈的空间) */public class BinarySearchRecursion { /** * @param array 查找数组 * @param num 查找值 * @return 找到的数组索引,没...
2019-01-12 22:46:58
385
原创 迭代法实现二分查找
package com.talong;/** * 迭代法实现二分查找 * 时间复杂度:O(lgN) * 空间复杂度:O(1) */public class BinarySearchIterate { /** * @param array 查找数组 * @param num 查找值 * @return 找到的数组索引,没有找到返回-1 ...
2019-01-12 22:19:29
1109
原创 生产者消费者测试
package test.thread;import java.util.LinkedList;public class ProducerConsumerTest { public static void main(String[] args) { ClsQueue queue=new ClsQueue(); Producer p=new Producer(queu
2015-04-05 19:45:03
661
原创 线程死锁测试_加锁次序导致死锁
package test.thread;public class DeadLockTest extends Thread{ private Object o; public void setO(Object o){ this.o=o; } public void run(){ synchronized(this){ Sy
2015-04-02 21:31:14
636
原创 两个线程每隔一秒钟交替打印5个数
package test.thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExecutorTest { private static int i=0; private static final int PRINT_COUNT
2015-03-31 21:12:12
2422
原创 Comparable与Comparator的差异
1.从功能上看,Comparable接口需要对象本身具备比较的特性;而Comparator则不需要,希望两个对象进行什么样的排序,就实现什么样的Comparator,这在不希望修改已有类的情况下非常有用2.从设计上看,Comparable接口属于强耦合接口,Comparator数据低耦合接口。使用Comparable接口来进行排序属于继承方式,也就是面向对象中的is-a关系,最好在设计
2015-03-09 21:33:05
588
原创 面向对象方法开发的特点
面向对象方法开发的特点:1.以对象为中心,而不是以过程为中心。这并不是说面向对象中就没用过程,而是以类或者对象来作为观察整个系统的出发点。在编码时当然也需要三大程序设计结构。2.面向对象方法的第一大特性是封装,类将自己的数据和方法封装起来,可以给他们提供不同的权限来供外部访问,这样和面向过程相比而言,进行了很大程度上的隔离。不像面向过程中的一个数据结构,想保证不被别人修改很难。 待
2014-02-23 21:33:14
6878
1
原创 面向过程方法学开发软件的特点
面向过程方法学开发软件的特点:1.程序=数据结构(模型)+算法(解决问题所需的一系列逻辑步骤)2.数据结构作为模型,是对数据的封装3.将程序分解为一系列相互之间独立(独立性强弱由开发者决定)的子程序(函数或过程),主程序按逻辑步骤调用各个子程序4.以过程为中心,而非以事物为中心(面向对象方法学的关注点),严重依赖条件分支结构(if...else...或者switch...case)
2014-02-22 22:53:55
3405
原创 unix常用脚本
1.查询进程编号:ps -exf | grep 进程名 | awk '{print $2}' | xargs echo2.杀死进程:kill -9 进程pid,或者ps -exf | grep 进程名 | awk '{print $2}' | xargs kill -93.查询服务器滚动日志:tail -f 日志名.log4.查询服务器最新日志:tail -n 200 日志名.lo
2013-04-10 21:13:22
1487
原创 子集树与排列树
1.当所给问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解空间称为子集树。例如:n个物品的0-1背包问题所相应的解空间是一棵子集树,这类子集树通常有2^n个叶结点,其结点总数为(2^(n+1))-1。遍历子集树的算法通常需奥秘加(2^n)计算时间。回溯法搜索子集树的算法一般可以描述如下:void backtrack(int t) {if (t > n) output(x
2013-04-09 21:52:44
8273
原创 约瑟夫环问题
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 解法1:利用数组存放n个人,数组下标等于他的编号,然后模拟报数过程,报到m时输出该位置的人的编号, 然后将该位置的值清
2013-04-09 20:43:40
922
原创 经典数值交换算法
1.借助中间量交换 int x = 10;int y = 20;int temp = x;x = y;y = temp;2.数值相加减交换 int x = 10;int y = 20;x = x + y;y = x - y;x = x - y;3.异或运算交换 int x = 10;int y = 20;x =
2013-01-09 16:25:55
821
原创 经典安全数组实现
final class DataSources { private int size; private DataSource[] data = new DataSource[4]; final int size(){ return size; } final DataSource get(int idx
2013-01-09 09:28:48
1154
原创 经典Hash实现(采用拉链法处理冲突)
class StorePageMap { /** * The table, resized as necessary. Length MUST Always be a power of two. */ private Entry[] table; /** * The number of key-value mappi
2013-01-06 16:06:08
2262
原创 软件项目管理经验
1.文档包括图例是个好东西,因为领导喜欢它,不干实事的人喜欢他,但很少有开发人员会喜欢它,尤其是在经历了长时间的项目维护之后,很少有人会去进行全局的文档更新,也很少有人敢去相信的文档的可靠性,所以把代码写的清晰、简练是最好的文档。即使你非常想写文档,那就不要啰里啰嗦,只是将关键的东西写在里面。对于图例一定要简化,很多开发人员花几天写的大文档,画的非常复杂的图例,不知道写完之后是否会有人看。当然有些
2012-12-04 14:16:57
893
原创 程序员需要艰难忍受的事
1.在你接受其他同事的软件后,发现其代码写的异常混乱,但是你不得不接手,而且还总需要去阅读他的代码,去维护,有时候为了简单,为了不进行较大的改动,你不敢对软件去进行大的重构,所以你也就干脆采用和原来作者一样垃圾的编码风格,很可能最终软件就这样结束生命周期 2.软件开发是异常复杂的事情,需要业务人员,测试人员和开发人员的通力合作才能把软件做好,尤其是当前快速迭代开发的大环境下更是这样,所以开
2012-12-04 14:13:36
918
1
原创 软件测试注意事项
1.如果一个数据库表是有联合字段做主键,那么在测试的时候务必保证包含联合主键中字段的记录都存在,以保证测试完整。2.单元测试务必针对每个方法构建自动化测试案例,以保证每次修改方法后,方法基本可行3.尽量不要过分依赖测试人员,因为绝大多数测试人员都是黑盒测试人员,只能对项目进行功能测试,他们不太可能深入到你程序的每个分支,每个逻辑组合中去分析代码4.代码中有if else语句,一定要保证
2012-12-03 16:33:42
992
原创 java编码规范
1.一个包中类的数量不要过多,否则应该建立新的包,类的名字应该与包的名字保持某种意义上的一致2.一个类不应该太长,否则不利于其他人阅读,我的经验是保持两编辑器屏幕的代码行数,六个方法以内3.一个方法不应该太长,30行以内为妙,不要超过50行,最多不要超过一编辑器屏幕,否则别人在读你的代码时会感觉到畏惧,让别人一看就懂的代码,有利于后期的维护成本与同事之间的交流4.如果可以的话,一个方法
2012-11-26 11:17:25
877
原创 java源码中的不变模式
public static class SimpleImmutableEntry implements Map.Entry, Serializable { public Object getKey() { return key; } public Object ge
2012-11-23 15:52:41
564
原创 奇偶判断
package agrisom;/** * 奇偶判断 */public class EvenOddValidate { /** * 位运算 */ public static boolean isEvenNum1(int num){ if((num & 1) == 1){ return false
2012-10-26 11:34:15
587
原创 枚举_01背包
package agrisom;/** * 枚举法解01背包问题 */public class BackPack01Enumeration { public int [] weights; //背包重量数组 public int [] values; //背包价值数组 public BackPack01Enumeration(int []
2012-10-26 11:00:45
912
原创 十进制数到二进制数据的转换
package agrisom;/** * 十进制数到二进制数据的转换 */public class BinaryTransform { public static int [] transform(int n){ int length=(int) (Math.log10(n)/Math.log10(2)+1); int [] bi
2012-10-26 10:04:12
607
原创 贪心_01背包
package agrisom;import java.text.DecimalFormat;import java.text.NumberFormat;/** * 贪心算法求背包问题 *//** * 物品类 */class Good{ public int weight; //重量 public int value;
2012-10-25 15:07:57
994
原创 递归_迷宫
package agrisom;import java.util.EmptyStackException;import java.util.Stack;/** * 递归_迷宫 *//** * 位置类 */class Position{ public int row; public int col; public Posi
2012-10-24 17:37:48
1426
原创 同时求数列的最大值与最小值
package agrisom;/** * 同时求最大值与最小值 */public class FindMaxAndMin { public void findMaxAndMin(int [] array){ int length=array.length; int max,min; if(length==0){
2012-10-24 16:38:36
2505
原创 分治_数列最大值
package agrisom;/** * 分治法求数列最大值 */public class FindMax { public int devideAndConquer(int array[]) { int length = array.length; int first; int second; i
2012-10-23 15:12:18
610
原创 行为模式_过滤器
package designpatten;/** * action组 */interface Action{ public void execute(Context context);}class ActionImpl1 implements Action{ @Override public void execute(Context con
2012-10-22 16:27:37
472
原创 深度优先与广度优先遍历文件
package agrisom;import java.io.File;import java.io.IOException;import java.util.Stack;import java.util.Queue;import java.util.LinkedList;public class ListFile { public static vo
2012-10-22 15:05:41
1154
原创 创建型模式_创建者
package designpatten;/** * 创建者模式 */abstract class IComputerBuider{ /** * 模拟复杂对象 */ public String mainBoard; public String audioCard; public String showCard;
2012-10-22 09:05:28
490
原创 创建型模式_工厂方法
package designpatten;/** * 产品层次 */interface IProduct{ public void use();}class MobilePhone implements IProduct{ @Override public void use() { System.out.println("移动
2012-10-19 14:32:11
775
原创 O(1)时间复杂度删除链表元素
package lineartable;/** * 链表节点类 */class Node{ public String value; public Node next; public Node(String value){ this.value=value; this.next=null; }}/*
2012-10-19 14:15:03
2776
原创 创建型模式_简单工厂
package designpatten;/** * 产品接口必须稳定,否则整个产品结构都会发生修改 */interface IProduct{ public void use();}class Telephone implements IProduct{ @Override public void use() { Sys
2012-10-18 16:18:41
528
原创 动态规划_k阶裴波那契序列
package agrisom;/* 问题:已知k阶裴波那契序列的定义为f0=0, f1=0, ..., fk-2=0, fk-1=1;fn=fn-1+fn-2+...+fn-k, n=k,k+1,...举例说明:(1)k=2时,即2阶裴波那契序列定义为:f0=0, f1=1;f2=f1+f0,f3=f2+f1,f4=f3+f2,.....(
2012-10-18 15:44:29
1500
原创 创建型模式_单例
/** * 单例模式 */public class SingleInstance { private String name; private static SingleInstance si=null; private static Object syncObj=new Object(); /** * 私有化构造函数,外界不能用ne
2012-10-18 13:38:18
471
原创 动态规划_最长递增子序列
package test;import java.util.Random;/* 给定数列A1,A2,...An,求最长递增子序列: 在求以Ai为末元素的最长递增子序列时,找到所有在Ai前面且小于Ai的元素Aj,即j 那么对所有Aj,都有一个以Aj为末元素的最长递增子序列的长度S(j),把其中最大的S(j)选出来,那么S(i)就等于最大的S(j)加上1, 即以Ai为末元素的最
2012-10-12 16:29:07
1577
window文件系统索引引擎
2012-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人