数据结构重读 - 线性表的链式存储

1、链式存储,可以简称链表。

2、链表的一个结点(node)由两部分组成:数据域和指针域。

3、整个链表的存取必须从头指针开始,链表最后一个结点的指针为空,因此它是非随机存取的数据结构。

4、链表中插入结点:假设原结点为p,新结点为s,则:

s->next = p->next;

p->next = s;

不是很难理解吧……

5、基本操作还是比较简单的,下面假定采用无“空头”模式的如下链表:
#define INVALID 0xffff[......]

继续阅读

数据结构重读 - 冒泡排序

发现自己学的最水的一门就是本科的数据结构了,我现在连冒泡排序都写不出来,sign。。。从今天开始重读数据结构。

冒泡排序:

对于有N个数的数组:

(1) 第1趟从第1个开始,如果arr[j] >= arr[j+1],swap(arr[j], arr[j+1])。本趟的结果是将最“大”的放在最后的位置上。
(2)第2趟仍然从第1个开始,执行大则swap但只执行到n-1的位置上,即次大的放到n-1上。
以此类推……
注:可优化,如果某一轮没有任何swap,说明已经有序了[......]

继续阅读

Java核心技术卷II(第8版) – 读书笔记 – 第12章

本章的内容是JNI(Java Native Interface),即从Java中访问本地方法(其他语言)。

1、当需要在Java中嵌入其他语言编写的代码,如C时,后者称为本地代码。

2、一般来说,Java虽然在单纯运算方面效率慢于C等,但这往往不是性能瓶颈。例如密码运算在某C/S中占用的时间为10%,网络、I/O速度占90%,用C比Java快两倍,则speedup只有1+0.1*2=1.2,只提升了20%(阿姆达尔定律)。

3、当然,如果项目是遗留的,之前已经有了大量,无法被迁[......]

继续阅读

Java核心技术卷II(第8版) – 读书笔记 – 第11章

1、Java已经逐渐支持在源代码中内嵌调用其他脚本语言,如Javascript / Groovy等。此外,也支持源代码注解,以上这些都是通过编译器API完成的。

2、要内嵌脚本,首先要获取脚本引擎:
// Make manager first
ScriptEngineManager manager = new ScriptEngineManager();
// name could be js/groovy/schema ...
ScriptEngine engine = mana[......]

继续阅读

Java核心技术卷II(第8版) – 读书笔记 – 第10章

1、本章关注Java分布式技术,特别是用于两个Java虚拟机之间的远程方法调用RMI。

2、我们想要这样一种机制:客户端的程序员以常规方式进行方法调用,而无需关心在数据在网络上传输或者解析响应的问题(解决方法是在客户端上安装一个代理类,由他处理技术细节)。

3、类似的,服务器端也需要有这样的功能,让传输和业务逻辑分离,于是有了如下的结构:

客户端 <-调用本地方法、返回-> 代理 <-->代理 <-调用本地方法,返回-> 服务器

4、代[......]

继续阅读