-
Java List集合 ArrayList和LinkedList类的用法及区别
所属栏目:[语言] 日期:2022-07-11 热度:199
List 是一个有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List 集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类[详细]
-
Java集合详解
所属栏目:[语言] 日期:2022-07-11 热度:106
在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文79,数学80,这种数[详细]
-
Java中Error和Exception的异同
所属栏目:[语言] 日期:2022-07-11 热度:93
Error(错误)和 Exception(异常)都是 java.lang.Throwable 类的子类,在 Java 代码中只有继承了 Throwable 类的实例才能被 throw 或者 catch。 Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类,Exception 是程序正常运行过程中可以预[详细]
-
Java异常处理机制及异常处理的基本结构
所属栏目:[语言] 日期:2022-07-11 热度:99
前面介绍了异常的产生是不可避免的,那么为了保证程序有效地执行,需要对发生的异常进行相应的处理。 Java 的异常处理通过 5 个关键字来实现:try、catch、throw、throws 和 finally。try catch 语句用于捕获并处理异常,finally 语句用于在任何情况下(除[详细]
-
Java try catch语句详解
所属栏目:[语言] 日期:2022-07-11 热度:58
在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这方面的问题。Java 的异常处理机制可以让程序具[详细]
-
Java try catch finally语句
所属栏目:[语言] 日期:2022-07-11 热度:131
在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等),这些物理资源都必须显式回收。 Java的垃[详细]
-
Java异常 Exception 处理及常见异常
所属栏目:[语言] 日期:2022-07-11 热度:123
很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。例如: 你计划周末郊游,计划从家里出发到达目的游泳烧烤回家。但天有不测风云,当你准备烧烤时候突然天降大雨,只能终止郊游提前回家。天降大雨是一种异常情况,你的计划应[详细]
-
socket是啥 套接字是什么
所属栏目:[语言] 日期:2022-07-11 热度:152
网络编程就是编写程序使两台联网的计算机相互交换数据。这就是全部内容了吗?是的!网络编程要比想象中的简单许多。 我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网[详细]
-
套接字有哪些类别 socket有哪些类型
所属栏目:[语言] 日期:2022-07-11 热度:82
这个世界上有很多种套接字(socket),比如 DARPA Internet 地址(Internet 套接字)、本地节点的路径名(Unix套接字)、CCITT X.25地址(X.25 套接字)等。但本教程只讲第一种套接字Internet 套接字,它是最具代表性的,也是最经典最常用的。以后我们提及[详细]
-
OSI网络七层模型简明教案
所属栏目:[语言] 日期:2022-07-11 热度:103
如果你读过计算机专业,或者学习过网络通信,那你一定听说过 OSI 模型,它曾无数次让你头大。OSI 是 Open System Interconnection 的缩写,译为开放式系统互联。 给数据加包装的过程,实际上就是在数据的头部增加一个标志(一个数据块),表示数据经过了这[详细]
-
IP、MAC和端口号 网络通信中确认身份信息的几元素
所属栏目:[语言] 日期:2022-07-11 热度:102
在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口号。 IP地址 IP地址是 Internet Protocol Address 的缩写,译为网际协议地址。 目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤[详细]
-
Linux下的socket演练程序
所属栏目:[语言] 日期:2022-07-11 热度:179
和C语言教程一样,我们从一个简单的Hello World!程序切入 socket 编程。 本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。 服务器端代码 server.cpp: #includ[详细]
-
Windows之socket演示程序
所属栏目:[语言] 日期:2022-07-11 热度:128
上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。同样,server.cpp 为服务器端代码,client 为客户端代码。 服务器端代码 server.cpp: #include stdio.h #include winsock2.h #pragma comment (lib, ws2_32.lib) //加载 ws2_[详细]
-
socket 函数用法详解 创造套接字
所属栏目:[语言] 日期:2022-07-11 热度:119
不管是 Windows 还是 Linux,都使用 socket() 函数来创建套接字。socket() 在两个平台下的参数是相同的,不同的是返回值。 在《socket是什么》一节中我们讲到了 Windows 和 Linux 在对待 socket 方面的区别。 Linux 中的一切都是文件,每个文件都有一个整[详细]
-
多路平衡归并排序 胜者树 败者树 算法细说
所属栏目:[语言] 日期:2022-07-11 热度:97
通过上一节对于外部排序的介绍得知:对于外部排序算法来说,其直接影响算法效率的因素为读写外存的次数,即次数越多,算法效率越低。若想提高算法的效率,即减少算法运行过程中读写外存的次数,可以增加 k 路平衡归并中的 k 值。 但是经过计算得知,如果毫[详细]
-
置换选择排序算法说明
所属栏目:[语言] 日期:2022-07-11 热度:196
上一节介绍了增加 k-路归并排序中的 k 值来提高外部排序效率的方法,而除此之外,还有另外一条路可走,即减少初始归并段的个数,也就是本章第一节中提到的减小 m 的值。 m 的求值方法为:m=n/l(n 表示为外部文件中的记录数,l 表示初始归并段中包含的记录[详细]
-
最佳归并树解析
所属栏目:[语言] 日期:2022-07-11 热度:99
通过上一节对置换-选择排序算法的学习了解到,通过对初始文件进行置换选择排序能够获得多个长度不等的初始归并段,相比于按照内存容量大小对初始文件进行等分,大大减少了初始归并段的数量,从而提高了外部排序的整体效率。 本节带领大家思考一个问题:无[详细]
-
图解TCP数据报结构以及三次握手 很详细
所属栏目:[语言] 日期:2022-07-11 热度:87
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。 客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口[详细]
-
详细分析TCP数据的传输步骤
所属栏目:[语言] 日期:2022-07-11 热度:176
此时 Ack 号为 1301 而不是 1201,原因在于 Ack 号的增量为传输的数据字节数。假设每次 Ack 号不加传输的字节数,这样虽然可以确认数据包的传输,但无法明确100字节全部正确传递还是丢失了一部分,比如只传递了80字节。因此按如下的公式确认 Ack 号: Ack[详细]
-
解析TCP四次握手断开连接
所属栏目:[语言] 日期:2022-07-11 热度:56
建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。 建立连接后,客户端和服务器都处于[详细]
-
再聊聊UDP和TCP
所属栏目:[语言] 日期:2022-07-11 热度:80
TCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。 UDP 是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单地把数据丢[详细]
-
介于UDP的服务器端和客户端
所属栏目:[语言] 日期:2022-07-11 热度:173
前面的文章中我们给出了几个 TCP 的例子,对于 UDP 而言,只要能理解前面的内容,实现并非难事。 UDP中的服务器端和客户端没有连接 UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 list[详细]
-
send recv 和write read 发送数据与接收数据
所属栏目:[语言] 日期:2022-07-11 热度:73
在 Linux 和 Windows 平台下,使用不同的函数发送和接收 socket 数据,下面我们分别讲解。 Linux下数据的接收和发送 Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。 前面我们说过,两台计[详细]
-
socket缓冲区以及阻塞模式说明
所属栏目:[语言] 日期:2022-07-11 热度:115
在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。 socket缓冲区 每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 write()/send()[详细]
-
TCP协议的粘包难题 数据的无边界性
所属栏目:[语言] 日期:2022-07-11 热度:85
上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据。也就是说,read()/recv() 和 write()/send() 的执行次数可能不同。 例如,write()/send() 重复执行三[详细]
