- 博客(19)
- 资源 (18)
- 收藏
- 关注
原创 用java源代码学数据结构<七>: BST
/* * 以int类为例 * 其它的类必须能够比较 * *///二叉搜索树的节点点 class BSTNode{ int item; BSTNode lc; BSTNode rc; BSTNode p; public BSTNode(int item){ this.item = item; } } public class BS
2013-10-29 15:01:00 1114
原创 用java源代码学数据结构<六>: HashSet HashMap 详解
散列表是数据结构中的重要技术,散列表的最大优点在于便于查找,缺点在于插入删除较为麻烦。java中很多数据类型如hashMap,hashTable,hashSet基本实现就是采用散列表技术。
2013-10-29 12:56:52 2178
原创 用java源代码学数据结构<五>: Stack 详解
Stack类较为简单,它的主要基础是先进后出,注意Stack继承自Vector类,所以它的内部实现基本上都是直接调用Vector的方法,难度较小。package java.util;publicclass Stack extends Vector { //无参构造函数 public Stack() { } /** * Pushes a
2013-10-28 19:20:49 1366 2
原创 用java源代码学数据结构<四>: LinkedList 详解
在数据结构中有基本数据类型:线性表。线性表又可以分为顺序表(数组表)和链表。java中典型顺序表有Vector和ArrayList,链表类就是LinkedList。 个人体会: 1.要想gc(垃圾回收器)回收对象,普通的对象只需要设置为null即可,而复合型对象(如Node),它包含两个指针对象和一个元素,必须全部设置为Null才能回收2.在链表节点进行prev、n
2013-10-28 10:37:45 2815 2
原创 用java源代码学数据结构<三>:ArrayList 详解
查看java文档可以知道,抽象类AbstractList有两个实现子类:Vector和ArrayList。二者的内部结构、基本方法大致相同.只不过Vector是线程安全的,ArrayList是不安全的。ArrayList相比于一般的Array,就是多了一个变长的功能,但相应的时间效率有所下降。 由于ArrayLIst和Vector很想,大部分代码基本一致,就不在提供详细的注释,可
2013-10-27 10:57:25 2235
原创 用java源代码学数据结构<二>: Vector 详解
/* 1.Vector可以随着用户插入或删除元素来改变自己的大小。 2.Vector类通过维护capacity(函数)和capacityIncrement(变量)来优化存储。 3.capacity总是至少和vector的size一般大(capacity>=size)。 4.通过在向vector插入元素之前增大capacity,可以减少很大的内存分配时间。*/package java.u
2013-10-27 00:15:39 2652 1
原创 用java源代码学数据结构<一>: Collection , Iterator
曾经某位大神说过:学习编程的最好方法就是看源代码。集合类无疑是学习数据结构好的原材料。开始准备用c++的STL,由于本人能力有限,看了下vc的STL源代码,什么一重指针,二重指针,n重指针漫天都是,所以只好放弃。java没有指针,学习难度无疑大大降低,STL就只有等以后能力提高点再说了。 集合类的源代码都可以在jdk安装目录下的src.zip文件中找到,由于篇幅有限,删除了大量非必要
2013-10-26 21:55:30 1490
原创 递归思想的使用之汉罗塔问题
递归,一句话概括就是:把大问题分解成结构类似的小问题,分解,计算小问题,再合并(即子函数的返回)。汉罗塔问题描述:有三个杆子,依次标记为A,B,C。还有n个大小不同的盘子,较大的盘子放在较小的盘子的下面,依次放置在A杆上,现在要通过若干次操作将所有盘子移到C杆上,且不能违反下列规则:1.每次只能移动一个盘子2.不允许大的盘子出现在小的盘子的上面下面我们来用递归的方法分析一下:
2013-10-26 16:58:06 1947
原创 递归和迭代的区别之我见
递归:当一个函数包含着对它自身调用时就称这个函数式递归的如典型的阶乘函数int func(int n){ //error detect if (n==1) { return 1; } return func(n-1)*n;}迭代就是不断的使用计算出来的结果来代替旧值int func(int n){ //error detect int resul
2013-10-26 16:07:22 1084
原创 c++和java中关于如何调用父类方法和子类方法的辨析
首先观察下面两个程序(分别使用vc6.0和myecllipse10测试)#include using namespace std;class A{public: void f() { cout<<"class A "<<endl; }};class B : public A{public: void f() { cout<<"class B "
2013-10-25 21:38:08 1572
原创 c/c++中const的常用方法
1.const修饰变量,变量的值不能改变如下面程序(vc6.0下测试)void main(){ const int a = 0; a = 1;}/*编译错误C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(4) : error C2166: l-value specifies const objec
2013-10-25 20:56:47 1450
原创 操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)
FCFS: 先来先服务,也可以称为先进先出轮转: 以一个周期性间隔产生时钟中断,此时当前正在运行的进程被置于就绪队列,基于FCFS选择下一个就绪进程 运行。SPN:最短进程优先,下一次选择所需处理时间最短的进程SRT:最短剩余时间优先,总是选择预期剩余时间最短的进程HRRN:最高响应比优先,R=(w+s)/s,其中R表示响应比,w表示已经等待的时间,s表示期
2013-10-24 20:39:41 23751 3
原创 操作系统虚拟内存中的四种典型页替换算法(OPT,LRU,FIFO,Clock)
页面置换:在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断(page fault)。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。 典型的置换算法有四种,如下所示: OPT:最佳替换算法(optional replacement)。替换下次访问距当前时间最长的页。opt算法需要知道操作系统将来的事件,显然不可
2013-10-24 20:10:52 39048 16
原创 java中普通变量、静态变量、静态代码块初始化的顺序辨析
1.普通变量的初始化看如下程序class Window{ public Window(int maker) { System.out.println("Window("+maker+")"); }}class House{ Window w1 = new Window(1); public House() { System.out.println("House(
2013-10-24 12:51:30 5942 3
原创 java中“0x”表示的含义
public class Test { public static void main(String[] args) { int a = 0x2f;//小写十六进制(等价于0x002f) System.out.println(Integer.toBinaryString(a)); int b = 0x2F;//大写十六进制 System.out.println(I
2013-10-23 22:37:19 28252
原创 java中"<<",">>",">>>"等左移右移符号辨析
java中有以下移位运算规则:"public class Test { public static void main(String[] args) { int a = -1; System.out.println(Integer.toBinaryString(a)); a <<= 2;//a左移两位 System.out.println(Integer.t
2013-10-23 22:21:53 1176
原创 java中"=="与"equals"辨析
首先看下面两个例子public class Test { public static void main(String[] args) { Integer n1 = new Integer(10); Integer n2 = new Integer(10); System.out.println(n1==n2); System.out.println(n1.equal
2013-10-23 21:24:22 887
原创 学会vi必须知道的命令
h j k l 左下上右w b 向前向后一个单词0 $ 行头 行尾1G 跳到第一行 只按G跳到文件末尾行c 更改cc 更改一整行cw 从光标到这个单词的结尾c2b 从光标到前两个单词c$ 从光标到本行结尾(删除当前光标到结尾之间的内容)c0 从光标到此行的开头r 更改一个字符ra 将当前光标字符改为ad 删除命令dd 删除一行dw 删除一个
2013-10-19 16:31:37 852
编译后的hadoop-2.7.3-src.tar.gz
2016-11-28
呕心沥血的java复杂聊天室(包括自定义应用层协议、CS多线程、多客户端登录、上下线提醒等等)
2014-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人