-
Makefile ifeq ifneq ifdef和ifndef 条件判别
所属栏目:[语言] 日期:2022-07-13 热度:93
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的。手动编译去操作文件显然是不可行的(每个文件编译时需要注意的事项很多),所[详细]
-
Makefile伪标准
所属栏目:[语言] 日期:2022-07-13 热度:147
这一个章节我们主要讲的是 Makefile 中的伪目标。所谓的伪目标可以这样来理解,它并不会创建目标文件,只是想去执行这个目标下面的命令。伪目标的存在可以帮助我们找到命令并执行。 使用伪目标有两点原因: 避免我们的 Makefile 中定义的只执行的命令的目标[详细]
-
Java集合详解
所属栏目:[语言] 日期:2022-07-12 热度:177
在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文79,数学80,这种数据[详细]
-
Java List集合 ArrayList和LinkedList类的用法及区别
所属栏目:[语言] 日期:2022-07-12 热度:83
List 是一个有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List 集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类推[详细]
-
Java Map集合详解
所属栏目:[语言] 日期:2022-07-12 热度:166
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象。用于保存具有映射关系的数据。 Map 集合里保存着两组值,一组值用于保存 Map 里的 key,另外一组值用于保存 Map 里的 value,key 和 value 都可[详细]
-
Java遍历Map集合的四种方式
所属栏目:[语言] 日期:2022-07-12 热度:163
Map 集合的遍历与 List 和 Set 集合不同。Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。Map 以及实现 Map 的接口类(如 HashMap、TreeMap、LinkedHashMap、Hashtable 等)都可以用以下几种方式遍历。 1)在 for 循环[详细]
-
Java Collections类操作集合详解
所属栏目:[语言] 日期:2022-07-12 热度:91
Collections 类是 Java 提供的一个操作 Set、List 和 Map 等集合的工具类。Collections 类提供了许多操作集合的静态方法,借助这些静态方法可以实现集合元素的排序、查找替换和复制等操作。下面介绍 Collections 类中操作集合的常用方法。 排序(正向和逆向[详细]
-
Java使用Lambda表达式遍历Collection集合
所属栏目:[语言] 日期:2022-07-12 热度:127
Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函数式接口,而 Iterable 接口是 Collection 接口的父接口,因此 Collection 集合也可直接调用该方法。 当程序调用 Iterable 的 forEach(Consumer action)[详细]
-
Java Iterator 迭代器 遍历Collection集合元素
所属栏目:[语言] 日期:2022-07-12 热度:194
Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列集合主要用于盛装其他对象,而 Iterator 则主要用于遍历(即迭代访问)Collection 集合中的[详细]
-
Java Set集合 HashSet和TreeSet类
所属栏目:[语言] 日期:2022-07-12 热度:172
Set 集合类似于一个罐子,程序可以依次把多个对象丢进Set 集合,而 Set 集合通常不能记住元素的添加顺序。也就是说 Set 集合中的对象不按特定的方式排序,只是简单地把对象加入集合。Set 集合中不能包含重复的对象,并且最多只允许包含一个 null 元素。 Set[详细]
-
Java的异常跟踪栈
所属栏目:[语言] 日期:2022-07-12 热度:155
异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息,根据 printStackTrace() 方法的输出结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。 看下面用于测试 printStackTrace 的例子程序。 class SelfException extends RuntimeExcepti[详细]
-
Java Collection接口详解
所属栏目:[语言] 日期:2022-07-12 热度:80
Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。 本节将介绍 Collection[详细]
-
套接字有哪些类别 socket有哪些类型
所属栏目:[语言] 日期:2022-07-11 热度:61
这个世界上有很多种套接字(socket),比如 DARPA Internet 地址(Internet 套接字)、本地节点的路径名(Unix套接字)、CCITT X.25地址(X.25 套接字)等。但本教程只讲第一种套接字Internet 套接字,它是最具代表性的,也是最经典最常用的。以后我们提及套[详细]
-
OSI网络七层模型简明教案
所属栏目:[语言] 日期:2022-07-11 热度:195
如果你读过计算机专业,或者学习过网络通信,那你一定听说过 OSI 模型,它曾无数次让你头大。OSI 是 Open System Interconnection 的缩写,译为开放式系统互联。 给数据加包装的过程,实际上就是在数据的头部增加一个标志(一个数据块),表示数据经过了这一[详细]
-
IP、MAC和端口号 网络通信中确认身份信息的几元素
所属栏目:[语言] 日期:2022-07-11 热度:149
在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口号。 IP地址 IP地址是 Internet Protocol Address 的缩写,译为网际协议地址。 目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其[详细]
-
Linux下的socket演练程序
所属栏目:[语言] 日期:2022-07-11 热度:91
和C语言教程一样,我们从一个简单的Hello World!程序切入 socket 编程。 本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。 服务器端代码 server.cpp: #include[详细]
-
Windows之socket演示程序
所属栏目:[语言] 日期:2022-07-11 热度:92
上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。同样,server.cpp 为服务器端代码,client 为客户端代码。 服务器端代码 server.cpp: #include stdio.h #include winsock2.h #pragma comment (lib, ws2_32.lib) //加载 ws2_32[详细]
-
socket 函数用法详解 创造套接字
所属栏目:[语言] 日期:2022-07-11 热度:123
不管是 Windows 还是 Linux,都使用 socket() 函数来创建套接字。socket() 在两个平台下的参数是相同的,不同的是返回值。 在《socket是什么》一节中我们讲到了 Windows 和 Linux 在对待 socket 方面的区别。 Linux 中的一切都是文件,每个文件都有一个整数[详细]
-
多路平衡归并排序 胜者树 败者树 算法细说
所属栏目:[语言] 日期:2022-07-11 热度:153
通过上一节对于外部排序的介绍得知:对于外部排序算法来说,其直接影响算法效率的因素为读写外存的次数,即次数越多,算法效率越低。若想提高算法的效率,即减少算法运行过程中读写外存的次数,可以增加 k 路平衡归并中的 k 值。 但是经过计算得知,如果毫无[详细]
-
置换选择排序算法说明
所属栏目:[语言] 日期:2022-07-11 热度:93
上一节介绍了增加 k-路归并排序中的 k 值来提高外部排序效率的方法,而除此之外,还有另外一条路可走,即减少初始归并段的个数,也就是本章第一节中提到的减小 m 的值。 m 的求值方法为:m=n/l(n 表示为外部文件中的记录数,l 表示初始归并段中包含的记录数[详细]
-
最佳归并树解析
所属栏目:[语言] 日期:2022-07-11 热度:103
通过上一节对置换-选择排序算法的学习了解到,通过对初始文件进行置换选择排序能够获得多个长度不等的初始归并段,相比于按照内存容量大小对初始文件进行等分,大大减少了初始归并段的数量,从而提高了外部排序的整体效率。 本节带领大家思考一个问题:无论[详细]
-
bind 和connect 函数 绑定套接字并创立连接
所属栏目:[语言] 日期:2022-07-11 热度:190
socket() 函数用来创建套接字,确定套接字的各种属性,然后服务器端要用 bind() 函数将套接字与特定的 IP 地址和端口绑定起来,只有这样,流经该 IP 地址和端口的数据才能交给套接字处理。类似地,客户端也要用 connect() 函数建立连接。 下面的代码,将创建[详细]
-
平衡二叉树 AVL树 与C语言实现
所属栏目:[语言] 日期:2022-07-10 热度:69
上一节介绍如何使用二叉排序树实现动态查找表,本节介绍另外一种实现方式平衡二叉树。 平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在[详细]
-
哈希表 散列表 详解 包含哈希表处理冲突的方式
所属栏目:[语言] 日期:2022-07-10 热度:62
前面介绍了静态查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。 而本节所介绍的哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的[详细]
-
插入排序算法及C语言做成
所属栏目:[语言] 日期:2022-07-10 热度:90
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。 直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到[详细]
