计算机网络基础知识

简介: 本文介绍了计算机网络中的路由协议、HTTP协议、OSI七层模型、VLAN、TCP/UDP协议等内容。路由协议部分涵盖了NAT、OSPF、RIP、IGRP和BGP的基本概念和区别。HTTP协议部分详细解释了请求和响应的结构、常用方法、状态码、重定向和转发的区别、GET和POST的区别、Cookies和Session的区别、HTTP请求访问流程以及HTTP和HTTPS的区别。OSI七层模型部分简述了各层的功能。VLAN部分介绍了VLAN的工作原理和优势。TCP/UDP部分对比了两种协议的特点,重点讲解了TCP的三次握手和四次挥手过程及其作用。

计算机网络

路由协议

NAT

静态NAT 每个私有IP对应一个公有

动态NAT 地址池 多个私有IP地址共享少量的公有IP

NAPT(PAT) 多个私有IP地址共享少量的公有IP的不同端口号

easy IP 没有地址池 使用接口地址 不固定公网IP

NAT server 静态的PAT 端口一一对应

OSPF和RIP的区别

RIP(适合小型网络)
距离向量路由协议 16为不可达
基于跳数选择最优路径
每隔30s向邻居广播自己的整个RIP路由表
OSPF(IP层)
链路状态路由协议
基于链路开销选择最优路径
触发更新或每隔30分钟向邻接路由器发送链路状态信息的摘要,增量更新机制

IGRP-内部网关路由协议

IGRP(Interior Gateway Routing Protocol,内部网关路由协议)是一种动态距离向量路由协议,它是Cisco公司在20世纪80年代中期设计的,是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提供支持,完全支持EIGEP路由协议。
它的特征如下:
(1)它是距离向量路由协议。
(2)IGRP的度量值可以基于五个要素:带宽、延迟、负载、可靠性、MTU,默认只使用带宽和延时
(3)采用广播方式(255.255.255.255)进行路由更新。
(4)默认情况下,IGRP每90秒发送一次路由更新广播,在3个更新周期内(即270秒),没有接收到路由条目的更新,则宣布路由不可访问。在7个更新周期后(即630秒),路由器从路由表中清除路由。
(5)IGRP路由协议的管理距离为100。
(6) 它是有类别的路由协议。
(7)为了避免路由环路,IGRP也受跳数的限制,支持最大跳数为255,默认为100跳。
(8)IGRP支持等价和非等价负载均衡。

BGP外部网关路由协议

动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种。

BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。多运行于AS与AS之间。

HTTP协议

请求包:请求行 请求头 请求体

响应包:状态行 响应头 响应体

方法

  • get 用于请求已被URL识别的资源 从服务器获取文档
  • post 用于向服务器传输数据,例如提交表单、文件上传
  • OPTIONS 查询相应URL支持的HTTP方法

  • HEAD 获得报文首部,与get方法类似,只是不返回报文主体,一般用于验证URI是否有效 只从服务器获取文档的首部

  • PUT 上传文件,报文主体中包含文件内容,保存到对应URL位置 将请求的主体部分存储在服务器上

  • DELETE 删除文件,与PUT方法相反,删除对应URL位置的文件 从服务器上删除一份文档
  • TRACE 用于诊断,响应中返回收到请求消息的具体内容 对可能经过代理服务器传送到服务器上去的报文进行追踪
  • CONNECT 要求用隧道协议连接代理

状态码

  • 100:表示收到请求消息头,客户端应继续发送主体
  • 200:请求被正常处理
  • 201:PUT请求返回这个状态码,表示请求已成功提交
  • 204:请求被受理但没有资源可以返回
  • 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行get方法,相应报文中通过Content-Range指定范围的资源。
  • 301:永久性重定向
  • 302:临时重定向
  • 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过get方法重定向到另一个URI上
  • 304:发送附带条件的请求时,条件不满足时返回,指示浏览器使用缓存中所请求资源的副本
  • 307:临时重定向,与302类似,只是强制要求使用post方法
  • 400:请求报文语法有误,服务器无法识别
  • 401:请求需要认证
  • 403:请求的对应资源禁止被访问
  • 404:服务器无法找到对应资源
  • 405:不支持请求中使用的请求方法
  • 413:请求主体过长,服务器无法处理 (探查缓冲区溢出时会有)
  • 414:请求URL过长,服务器无法处理
  • 500:服务器内部错误
  • 503:服务器正忙,用来说明服务器现在无法为请求提供服务,但将来可以 (服务器负载过大)

重定向和转发的区别

重定向

两次请求 不共享数据

重定向显示新的地址,可以跳转到任意的URL

转发

一次请求 共享数据

转发请求次数只有一次,也就是与服务器的交互只有一次

转发的数据不会丢失

get和post的区别

  1. get 是获取数据,post 是修改数据
  2. get 把请求的数据放在url上,以?分割 URL 和传输数据,参数之间以&相连,所以不太安全。而 post 把数据放在 HTTP 的包体内(requrest body)
  3. get 提交的数据最大是 2k( 限制实际上取决于浏览器), post 理论上没有限制。
  4. get 产生一个 TCP 数据包,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据); post 产生两个 TCP 数据包,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。
  5. get 请求会被浏览器主动缓存,而 post 不会,除非手动设置。
  6. get 是幂等的,而 post 不是幂等的

Cookies 和 session 区别

Cookie 和 Session 都是客户端与服务器之间保持状态的解决方案

  1. 存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session 存储的数据比较安全

  2. 存储的数据类型不同

    两者都是 key-value 的结构,但针对 value 的类型是有差异的

    cookie:value 只能是字符串类型,session:value 是 Object 类型

  3. 存储的数据大小限制不同

    cookie:大小受浏览器的限制,很多是是 4K 的大小, session:理论上受当前内存的限制

  4. 生命周期的控制

    cookie 的生命周期当浏览器关闭的时候,就消亡了

    生命周期(以20分钟为例)

    (1) cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,

    (2) session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁

    但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期

    (3) 关机会造成session生命周期的结束,但是对cookie没有影响

  5. 访问范围

    cookie为多个用户浏览器共享

    session为一个用户浏览器独享

HTTP请求访问流程

  1. 域名解析
  2. 发起TCP的3次握手
  3. 建立TCP连接后发起http请求
  4. 服务器响应http请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
  6. 浏览器对页面进行渲染呈现给用户

HTTP和HTTPS

  1. HTTP 协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非不安全, HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议, 要比 http 协议安全。

  2. https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。

  3. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS连接建立过程

  1. 客户端发送支持的加密协议及版本,SSLTLS(传输层安全性协议:SSLTLS的前身)
  2. 服务器从中筛选合适的加密协议

  3. 服务器端返回证书,证书中有公钥

  4. 客户端使用根证书验证证书合法性
  5. 客户端生成对称密钥,通过证书中的公钥加密,发送到服务端

  6. 服务端使用私钥解密,获取对称密钥,使用对称密钥加密数据

  7. 客户端解密数据,SSL加密通信建立,开始通信

https是如何保证数据传输的安全

  1. 客户端向服务器端发起SSL连接请求;

  2. 服务器把携带公钥的证书发送给客户端,且服务器端保存着唯一的私钥

  3. 客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
  4. 服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
  5. 进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即使第三方获得数据包,也无法对其进行加密,解密和篡改。

Referer

Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。

服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

token

token是什么?

为了安全性,一般需要再用户登录成功之后才能发送其他请求。

token携带在请求头中,只有登录请求不需要携带token,登录成功后把token返回给前端,以后的请求前端需要携带这个token来才能请求成功!否则请求被拦截

为什么要用它?

token的目的是减轻服务器压力,减少数据库请求

如果没有token做一层拦截的,每次请求都会去请求数据库,如果恶意请求,很可能击垮数据库

OSI七层

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的bit流形式的数据,并封装成帧,传送到上一层。
网络层:将网络地址解析成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
传输层:在源端与目的端之间提供可靠的数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务

IPsec 网络层

防火墙在应用层

SMTP

SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

SMTP使用TCP端口25

DNS

客户端进行解析时,解析顺序是:先缓存,再查host文件,再查主域名服务器(如果主域名服务器故障就查辅助域名服务器),主域名服务器查不到但是配置了转发器就查转发器,最后找根域名服务器再向下一级查询。

本地缓存——Hosts 文件——DNS服务器

DNS不用做账号爆破

ICMP状态码

3 - Destination Unreachable(目的不可达)

5 - Redirect(重定向)

11 - Time Exceeded(时间超过)

DHCP

DHCP服务器必需具备这些条件:

  • 具有静态配置的IP地址
  • 具有作用范围的有效IP地址范围
  • 配置子网掩码

MAC地址

MAC地址由48位二进制数(6个字节)组成,通常表示为12个十六进制数,格式为XX-XX-XX-XX-XX-XX 。

如:00-16-EA-AE-3C-40就是一个MAC地址,

供应商代码:前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE分配。

序列号:后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。

只要不更改自己的MAC地址,MAC地址在世界是唯一的。

ARP协议

地址解析协议,即 ARP(Address Resolution Protocol),是根据 IP 地址获取物理MAC地址的一个TCP/IP 协议。

ARP 高速缓存(即 ARP 表)是 ARP 地址解析协议能够高效运行的关键 。

ARP 协议工作原理:

  1. 每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示 IP 地址和 MAC地址之间的对应关系。

  2. 新主机(网络接口)加入网络时(也可能只是 mac 地址发生变化,接口重启等),会发送 免费 ARP 报文把自己 IP 地址与 Mac 地址的映射关系广播给其他主机。

  3. 网络上的主机接收到免费 ARP 报文时,会更新自己的 ARP 缓冲区。将新的映射关系更新到自己的 ARP 表中。

  4. 某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP 数据包,该数据包包括的内容有:源主机 IP地址,源主机 MAC 地址,目的主机的IP 地址等。

  5. 当本网络的所有主机收到该 ARP数据包时:

    (A)首先检查数据包中的 IP 地址是否是自己的IP 地址,如果不是,则忽略该数据包。

    (B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。

    (C) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

  6. 源主机收到 ARP 响应包后。将目的主机的IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP响应数据包,表示 ARP 查询失败。

VLAN

VLAN:全名为virurl local area network 虚拟局域网。

一般工作在二层和三层,在逻辑上划分了设备和用户。这些设备可以根据VLAN,不受物理位置的限制,功能,部门,应用的情况下组织起来。

VLAN的主要作用就是分割广播域

  • 物理分割
  • 逻辑分割

VLAN的优势有:

  • 限制广播域
  • 增强局域网的安全性
  • 提高网络的健壮性
  • 灵活构建虚拟工作组

交换机接口

Access接口:交换机上用来连接用户主机的接口,它只能连接接入链路(Access Link)。

Trunk接口:交换机上用来和其他交换机连接的接口,它只能连接干道链路(Trunk Link)。

除此之外,还有一种接口叫Hybrid接口,是交换机上既可以连接用户主机,又可以连接其他交换机的接口

Hybrid接口既可以连接接入链路又可以连接干道链路。

注:Hybrid接口和Trunk接口在接收数据时,处理方法是一样的。唯一不同之处在于:发送数据时,Hybrid接口可以允许多个VLAN的报文发送时不打标签,而Trunk接口只允许缺省VLAN的报文发送时不打标签。

TCP和UDP的区别

  1. TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务;UDP 是无连接的,即发送数据之前不需要建立连接;UDP 尽最大努力交付,即不保证可靠交付。(由于 UDP 无需建立连接,因此 UDP 不会引入建立连接的时延,TCP 需要在端系统中维护连接状态,比如接受和发送缓存,拥塞控制,序号与确认号的参数等,故 TCP 会比 UDP 慢)

  2. UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。

  3. 每一条 TCP 连接只能是一对一的;UDP 支持一对一,一对多,多对一和多对多的交互通信

  4. UDP 分组首部开销小,只有 8 个字节,TCP 首部开销 20 字节。

  5. TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;

    UDP 是面向报文的(一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位)。

  6. UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP

TCP 如何保证可靠传输?

  1. 三次握手。
  2. 将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
  3. 超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重发
  4. 确认应答。对于收到的请求,给出确认响应
  5. 校验和。校验出包有错,丢弃报文段,不给出响应
  6. 序列号。对失序数据进行重新排序,然后才交给应用层
  7. 丢弃重复数据。
  8. 流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止传输较快主机致使较慢主机的缓冲区溢出。
  9. 拥塞控制。当网络拥塞时,减少数据的发送。

三次握手

刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。

第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。 服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方已建立起了连接

三次握手的作用

确认双方的接受能力、发送能力是否正常。

指定自己的初始化序列号,为后面的可靠传送做准备。

如果是 HTTPS 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成。

①(ISN)是固定的吗 三次握手的一个重要功能是客户端和服务端交换 ISN(Initial Sequence Number),以便让对方知道接下来接收数据的时候如何按序列号组装数据。 如果 ISN 是固定的,攻击者很容易猜出后续的确认号,因此 ISN 是动态生成的。

②什么是半连接队列 服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列

全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。

关于SYN-ACK 重传次数的问题: 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传。如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。 注意,每次重传等待的时间不一定相同,一般会是指数增长,例如间隔时间为 1s,2s,4s,8s......

③第三次握手的时候,是可以携带数据的。第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。 为什么这样呢?假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。 因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。 一个简单的原因就是会让服务器更加容易受到攻击了。 而对于第三次的话,此时客户端已经处于 established 状态,客户端已经建立连接,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据。

四次挥手

刚开始双方都处于 establised 状态,假如是客户端先发起关闭请求,则:

第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。

第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。

第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。 需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态

这里特别需要注意的是 TIME_WAIT 这个状态,为什么客户端发送 ACK 之后不直接关闭,而是要等一阵子才关闭?

因为要确保服务器是否已经收到了ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端

客户端再次收到 ACK 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。

TIME_WAIT 持续的时间至少是一个报文的来回时间。

一般会设置一个计时,如果过了这个计时没有再次收到 FIN 报文,则代表对方成功,就是 ACK 报文,此时处于 CLOSED 状态。

每个状态所包含的含义

LISTEN:侦听来自远方 TCP 端口的连接请求。

SYN-SENT:在发送连接请求后等待匹配的连接请求。

SYN-RECEIVED:在收到和发送一个连接请求后等待对连接请求的确认。

ESTABLISHED:代表一个打开的连接,数据可以传送给用户。

FIN-WAIT-1:等待远程 TCP 的连接中断请求,或先前的连接中断请求的确认。

FIN-WAIT-2:从远程 TCP 等待连接中断请求。

CLOSE-WAIT:等待从本地用户发来的连接中断请求。

CLOSING:等待远程 TCP 对连接中断的确认。

LAST-ACK:等待原来发向远程 TCP 的连接中断请求的确认。

TIME-WAIT:等待足够的时间以确保远程 TCP 接收到连接中断请求的确认。

CLOSED:没有任何连接状态。

相关文章
|
6天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
8天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1562 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
11天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
738 27
|
8天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
225 3
|
14天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
780 5
|
2天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
108 60
|
1天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
115 1
|
3天前
|
Java 开发者
【编程进阶知识】《Java 文件复制魔法:FileReader/FileWriter 的奇妙之旅》
本文深入探讨了如何使用 Java 中的 FileReader 和 FileWriter 进行文件复制操作,包括按字符和字符数组复制。通过详细讲解、代码示例和流程图,帮助读者掌握这一重要技能,提升 Java 编程能力。适合初学者和进阶开发者阅读。
104 61
|
14天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】