Java网络编程学习(一)
网络相关概念
网络体系结构
OSI体系结构(七层)
OSI(Open Systems Interconnection,开放系统互联)体系结构将整个计算机网络分为七层,从上到下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
| 分层 | 功能 | 经典设备 | 协议与标准 |
|---|---|---|---|
| 物理层(Physical Layer) | 负责在物理媒体上传输原始比特流。这包括定义物理设备的硬件规格、传输介质的类型(如电缆、光纤、无线电波)、信号的编码方式和传输速率等 | 集线器(Hub)、中继器(Repeater)、网络适配器(NIC)等 | 以太网标准(如10BASE-T、100BASE-TX)、光纤通信标准(如SONET、SDH)以及无线通信标准(如IEEE 802.11、蓝牙)等 |
| 数据链路层(Data Link Layer) | 负责将物理层传输的比特流组装成帧,并提供节点之间的可靠数据传输。这包括成帧、物理地址(MAC地址)管理、错误检测和校正、流量控制和访问控制等功能 | 交换机(Switch)、网桥(Bridge)等 | VLAN(虚拟局域网)、STP(生成树协议)、IEEE 802.3(以太网标准)、ATM(异步传输模式)、HDLC(高级数据链路控制)、PPP(点对点协议)等 |
| 网络层(Network Layer) | 负责数据包的路由选择和逻辑地址(IP地址)的处理。这包括路径选择、逻辑地址管理、分组转发和拥塞控制等功能 | 路由器(Router)等 | IP(网络互联协议)、ICMP(Internet控制报文协议)、ICMPv6(互联网控制信息协议版本六)、ARP(地址解析协议)、RARP(反向地址转换协议)等 |
| 传输层(Transport Layer) | 提供端到端的通信服务,确保数据从发送方到接收方的可靠传输。这包括端口管理、可靠传输、流量控制和错误检测与校正等功能 | 网关等 | TCP(传输控制协议)、UDP(用户数据报协议)、TLS(传输层安全协议)等 |
| 会话层(Session Layer) | 责管理应用程序之间的会话。这包括会话建立、管理和终止、会话检查点和恢复、对话控制等功能 | 网关等 | LDAP(轻型目录访问协议)等 |
| 表示层(Presentation Layer) | 负责数据的格式化、加密解密和数据压缩。这确保发送方和接收方使用一致的数据格式,提供数据的语法和语义转换 | 该层主要关注数据的表示形式,如数据的编码、压缩和解压、加密和解密等,以确保数据的完整性和保密性。虽然OSI模型中没有明确列出表示层的具体协议,但实际应用中可能涉及各种数据编码、压缩和加密标准 | |
| 应用层(Application Layer) | 直接面向用户,提供各种网络服务。这包括文件传输、电子邮件、远程登录、网页浏览等功能 | 网关等 | TELNET、DNS(域名解析协议)、HTTP(超文本传输协议)、HTTPS(超文本传输安全协议)、FTP(文件传输协议)、NFS(网络文件系统)等 |
TCP/IP体系结构(四层)
TCP/IP(Transmission Control Protocol/Internet Protocol)体系结构。
| 分层 | 功能 | 协议 |
|---|---|---|
| 网络接口层(Network Interface Layer) | 网络接口层(有时也称为链路层或数据链路层)负责处理与物理网络介质的直接通信。它实现了数据帧在物理媒介上的传输 | 网络接口层包含了各种硬件协议,如以太网(Ethernet)、无线局域网(WLAN,如Wi-Fi)等。这些协议定义了如何在物理连接上传输数据 |
| 网络层(Network Layer) | 网络层负责数据的路径选择和逻辑地址寻址。它实现了数据包从源主机到目的主机的路由和转发 | 网络层主要包括IP(互联网协议)和ICMP(互联网控制消息协议)等协议 |
| 传输层(Transport Layer) | 传输层负责在源端和目的端之间建立、管理和终止会话。它提供了端到端的通信和数据传输服务,并确保数据的可靠传输和流量控制 | 传输层主要包括TCP(传输控制协议)和UDP(用户数据报协议)两种协议 |
| 应用层(Application Layer) | 应用层是TCP/IP协议的最高层,负责处理特定的应用程序细节。它提供了网络应用程序之间的通信接口,并实现了特定的应用协议和服务 | 应用层包含了各种不同的协议,如HTTP(用于万维网的超文本传输)、FTP(用于文件传输)、SMTP(用于电子邮件的发送)、POP3和IMAP(用于电子邮件的接收)、DNS(域名解析服务)等 |
五层协议体系结构
| 分层 |
|---|
| 物理层(Physical Layer) |
| 数据链路层(Link Layer) |
| 网络层(Network Layer) |
| 传输层(Transport Layer) |
| 应用层(Application Layer) |
网络通信数据封装
数据封装是指将协议数据单元(PDU)封装在一组协议头和尾中的过程。在数据通过网络进行传输时,每一层协议都会对其下层传来的数据进行封装,添加自己的协议头和必要的信息,以便在下一层进行处理和传输。封装的过程确保了数据在传输过程中的完整性和可靠性。
具体来说,数据封装的过程如下:
- 应用层生成应用数据,如HTTP请求。
- 传输层将应用数据封装成段(segment),并添加传输层头部(如TCP/UDP头部)。
- 网络层将传输层段封装成数据包(packet),并添加网络层头部(如IP头部)。
- 数据链路层将数据包封装成帧(frame),并添加数据链路层头部(如以太网头部)和尾部。
- 物理层将帧转换成比特流(bit stream)进行物理传输。
网络通信数据分用
分用是复用的逆过程,它指的是在接收端,将从网络接收到的合并数据流拆分成单独的应用程序数据流的过程。在数据通过网络传输到达目的主机后,每一层协议都会根据其协议头中的信息,将数据包拆分成其下层可以处理的数据单元,并传递给下一层进行处理。这样,最终应用层就能够接收到属于自己的数据,并进行相应的处理。
具体来说,数据分用的过程如下:
- 物理层接收到比特流,并将其转换成帧。
- 数据链路层根据帧头中的信息,将帧拆分成数据包,并传递给网络层。
- 网络层根据数据包头中的信息,将数据包拆分成传输层段,并传递给传输层。
- 传输层根据段头中的信息,将段拆分成应用数据,并传递给应用层。
- 应用层接收到属于自己的数据,并进行相应的处理。
端口
端口号的定义与作用
端口号是一个16位的无符号整数,其取值范围是0到65535。在网络通信中,端口号与IP地址配合使用,共同确定了一个网络连接的唯一性。具体来说,端口号的作用主要体现在以下几个方面:
- 标识服务或应用程序:每个端口号都与一个特定的服务或应用程序相关联,这样网络上的计算机就能够根据端口号来识别并路由数据到正确的目标。
- 实现多路复用:通过使用端口号,一台计算机可以同时提供多种服务,而无需为每种服务分配一个单独的IP地址。这使得网络通信更加灵活和高效。
- 提供安全性:某些端口可以用于加密通信,如HTTPS使用的443端口,从而确保数据在传输过程中的安全性。
- 区分传入和传出连接:在TCP连接中,每个连接都有两个端口号,一个用于源地址,一个用于目标地址。这样,系统就能够区分传入和传出的连接,并对其进行相应的处理。
端口号的分类
根据端口号的用途和范围,可以将其分为以下几类:
- 系统或保留端口(Well-Known Ports):范围从0到1023。这些端口号通常分配给系统级或熟知的服务和应用,如HTTP(80端口)、HTTPS(443端口)、FTP(21端口)等。普通用户通常没有权限来绑定这些端口。
- 注册端口(Registered Ports):范围从1024到49151。这些端口号没有固定的用途,但对于一些无法使用系统端口的服务来说,这些端口号是预留的。有些软件企业会为自己的服务预留一些端口号。
- 动态/私有端口(Dynamic/Private Ports):范围从49152到65535。这些端口号不被ICANN或IANA管理,可供任意使用。它们常用于客户端软件临时通讯,如临时的端点。
常用端口号及其对应的服务
| 端口号 | 服务/协议 | 描述 |
|---|---|---|
| 80 | HTTP | 超文本传输协议,用于非安全的网页传输 |
| 443 | HTTPS | 安全的超文本传输协议,通过SSL/TLS加密传输数据 |
| 21 | FTP | 文件传输协议,用于文件传输服务 |
| 22 | SSH | 安全外壳协议,用于远程登录和管理 |
| 25 | SMTP | 简单邮件传输协议,用于电子邮件传输服务 |
| 110 | POP3 | 邮局协议版本3,用于接收邮件服务 |
| 143 | IMAP | Internet消息访问协议,用于接收邮件服务并支持邮件管理 |
| 53 | DNS | 域名系统,用于域名解析服务 |
| 23 | Telnet | 远程登录到主机的终端仿真服务,但通常不安全 |
| 3389 | RDP | 远程桌面协议,用于Windows远程桌面服务 |
数据链路层
封装成帧、透明传输和差错控制是三个核心问题,它们对于保证数据的可靠传输起着至关重要的作用。
封装成帧
- 封装成帧是指在数据链路层将上层交付的协议数据单元(PDU)添加帧头和帧尾,使之成为帧。
- 帧头和帧尾中包含有重要的控制信息,用于帧定界、帧同步、差错控制等。封装成帧的作用在于将原始数据封装成能够在物理层传输的比特流,并确保在传输过程中数据能够完整、准确地被接收端接收。
- 帧头通常包含源地址、目的地址、协议类型等控制信息,而帧尾则用于标识帧的结束。
透明传输
- 指数据链路层对上层交付的传输数据没有任何限制,就好像不存在一样。
- 数据链路层应该能够传输任意比特组合的比特流数据,而不会因数据中的某些特定比特组合而导致传输错误。
- 数据链路层需要采取一些措施来避免数据中的特定比特组合被错误地解释为控制字符。例如,在面向字节的物理链路中,可以使用字节填充(或称字符填充)的方法。当数据中出现与帧定界符相同的字节时,在其前面插入一个转义字符,接收端在接收到转义字符后,就知道其后面的字节是数据而不是定界符。这样,就可以确保数据中的任意比特组合都能够被正确传输。
差错控制
- 指在数据链路层中采取各种措施来检测和纠正数据传输过程中可能出现的差错。由于物理线路、设备故障、干扰等多种原因,数据传输过程中可能会出现比特差错,即0/1翻转。为了保证数据传输的可靠性,必须采用差错控制技术来检测和纠正这些差错。
- 差错控制技术包括循环冗余检验(CRC)和检错重发等。CRC是一种基于多项式运算的差错检测方法,通过在数据后面附加一定数量的冗余码来生成帧校验序列(FCS)。接收端在接收到帧后,使用相同的生成多项式对接收到的数据进行CRC运算,如果得出的余数不为0,则说明数据在传输过程中出现了差错。
- 检错重发则是一种差错纠正方法。当接收端检测到数据差错时,可以请求发送端重新发送数据,直到接收端接收到正确数据为止。这种方法虽然会增加一些传输延迟,但能够大大提高数据传输的可靠性。
网络层
IP地址(Internet Protocol Address)
- IP地址(Internet Protocol Address)是互联网协议地址,用于标识互联网上的每一台设备,无论是计算机、手机、服务器还是其他网络设备。
- IP地址使得数据包能够在互联网中正确地路由和传递。
分类
版本分类
IP地址主要分为两类:IPv4(Internet Protocol Version 4)和IPv6(Internet Protocol Version 6)。
- IPv4地址
- IPv4地址由32位二进制数表示,通常被划分为4个8位(一个字节)的十进制数,用点号(.)分隔,例如:192.168.1.1。
- IPv4地址范围从0.0.0.0到255.255.255.255,但并非所有地址都是可用的。
- IPv4地址被分为几个类别,包括A类、B类、C类、D类和E类,以及特殊地址(如私有地址、广播地址、环回地址等)。
- IPv6
- IPv6地址由128位二进制数表示,通常被划分为8个16位(两个字节)的十六进制数,用冒号(:)分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
- IPv6地址提供了更大的地址空间,解决了IPv4地址耗尽的问题。
- IPv6地址的表示方式更灵活,例如可以使用缩写(省略连续的零),例如:2001:db8:85a3::8a2e:370:7334。
用途和分配方式
- 公网IP:这是在全球互联网上唯一且可路由的地址。它允许设备在互联网上被直接访问和通信。
- 私网IP(也称为局域网IP):这些地址是在私有网络内部使用的,通常用于家庭、办公室或企业等局域网环境。私网IP地址在外部互联网上是不可见的,也无法直接访问。
- 动态IP:这种地址是由网络中的动态主机配置协议(DHCP)服务器在设备连接到网络时自动分配的。动态IP地址可能会随着设备的每次连接而改变。
- 静态IP:与动态IP不同,静态IP地址是手动分配给设备的,并且不会改变(除非手动更改)。静态IP地址通常用于需要稳定网络连接的设备,如服务器。
IPv4地址根据其网络号和主机号的位数
IP地址由网络号和主机号两部分组成,这种分类方式主要适用于IPv4地址。
一、网络号和主机号
- 网络号(Network ID)
- 用于标识一个特定的网络或子网。
- 在IP地址中,网络号占据前若干位(具体位数取决于IP地址的类别和子网划分)。
- 主机号(Host ID)
- 用于标识网络中的某一台特定设备。
- 在IP地址中,主机号占据剩余的位数。
二、基于网络号和主机号分类的IP地址类型分类
- A类地址:
- 网络号:最高位为0,后面跟着7位网络地址和24位主机地址。
- 范围:1.0.0.0到126.255.255.255。
- 子网掩码:默认为/8(即255.0.0.0)。
- 特点:支持的最大主机数为16,777,214,适用于大型网络。
- B类地址:
- 网络号:最高两位为10,后面跟着14位网络地址和16位主机地址。
- 范围:128.0.0.0到191.255.255.255。
- 子网掩码:默认为/16(即255.255.0.0)。
- 特点:支持的最大主机数为65,534,适用于中等规模的网络。
- C类地址:
- 网络号:最高三位为110,后面跟着21位网络地址和8位主机地址。
- 范围:192.0.0.0到223.255.255.255。
- 子网掩码:默认为/24(即255.255.255.0)。
- 特点:支持的最大主机数为254,适用于小型网络或局域网。
- D类地址:
- 用途:作为组播地址,用于将数据发送给特定的一组设备。
- 范围:224.0.0.0到239.255.255.255。
- 特点:不区分网络号和主机号。
- E类地址:
- 用途:保留用于实验和开发,不用于公共网络。
- 范围:240.0.0.0到255.255.255.255(但通常不包括255.255.255.255,因为它用作有限广播地址)。
- 特点:同样不区分网络号和主机号。
三、特殊IP地址
除了上述分类外,还有一些特殊用途的IP地址,如:
- 环回地址:127.0.0.1,用于测试TCP/IP协议和本地主机进程之间的通信。
- 广播地址:255.255.255.255,用于将数据发送给网络中的所有设备(有限广播地址)。
- 私有地址:用于局域网内部,不会在互联网上公开。包括A类私有地址10.0.0.0/8、B类私有地址172.16.0.0/12和C类私有地址192.168.0.0/16。
协议报文
IPV4
| 字段名称 | 占用位数(bit) | 描述 |
|---|---|---|
| 版本(Version) | 4 | 指定IP协议的版本,IPv4为4 |
| 首部长度(Header Length) | 4 | 表示IP首部的长度,单位是4字节。最小值为5(20字节),最大值为15(60字节) |
| 区分服务(Differentiated Services/Type of Service, TOS) | 8 | 用于指定QoS(Quality of Service)和流量控制等参数 |
| 总长度(Total Length) | 16 | 表示整个IP数据报的长度,包括IP首部和数据部分,单位是字节。最大值为65535字节 |
| 标识(Identification) | 16 | 用于唯一地标识一个报文的所有分片,以便在重组时识别 |
| 标志(Flags) | 3 | 用于标识IP分片的状态,包括保留位、禁止分片(Don’t Fragment, DF)和更多分片(More Fragment, MF) |
| 片偏移(Fragment Offset) | 13 | 表示分片相对于原始数据报的偏移量,单位是8字节 |
| 生存时间(Time to Live, TTL) | 8 | 表示数据报在网络中最多可以被经过的路由器数量,用于防止数据报在网络中无限循环 |
| 协议(Protocol) | 8 | 表示数据报中的数据部分使用的协议类型,如TCP、UDP、ICMP等 |
| 首部检验和(Header Checksum) | 16 | 用于检测IP头部在传输过程中是否出现了错误 |
| 源地址(Source Address) | 32 | 表示数据报的发送者IP地址 |
| 目的地址(Destination Address) | 32 | 表示数据报的接收者IP地址 |
| 可选字段(Options) | 可变长度 | 附加的首部字段,可选地跟在目的地址之后,用于特殊需求,长度可变 |
| 填充(Padding) | 可变长度 | 用于保证首部是4字节的整数倍,当首部长度不是4字节的整数倍时,需要填充0 |
| 数据部分(Data) | 可变长度 | 来自上一层的数据,长度可变 |
子网掩码
子网掩码(Subnet Mask),又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码是一个32位地址(IPV4),不能单独存在,必须结合IP地址一起使用。
功能
- 区分网络地址和主机地址:子网掩码用于屏蔽IP地址的一部分,以区分网络标识(Net.ID)和主机标识(Host.ID),并说明该IP地址是在局域网上还是在广域网上。
- 划分子网:子网掩码可以将一个大的IP网络划分为若干小的子网络,从而提高网络的管理效率和安全性。通过子网掩码划分子网后,每个子网可以独立管理和控制,限制不同子网之间的直接通信,从而提高网络的安全性。
与IP地址的关系
- 确定唯一地址:子网掩码是用来判断两台计算机的IP地址是否属于同一子网络的根据。通过子网掩码和IP地址的二进制AND运算,可以确定一个IP地址所属的子网络。
- IP地址规划:在分配IP地址时,子网掩码可以帮助网络管理员合理规划和分配IP地址,避免地址浪费。例如,在一个拥有多个部门的企业中,可以为每个部门分配一个独立的子网,从而实现更精细的IP管理。
配置
- 确定网络需求:根据网络的规模和需求确定子网掩码。例如,如果需要将一个类C网络(默认子网掩码为255.255.255.0)分割成4个子网,可以使用子网掩码255.255.255.192。
- 计算子网地址和广播地址:根据选定的子网掩码,计算每个子网的子网地址和广播地址。例如,对于子网掩码255.255.255.192,每个子网有64个地址,其中第一个地址是子网地址,最后一个地址是广播地址。
- 配置网络设备:将计算出的子网地址和子网掩码配置到网络设备(如路由器、交换机等)中,确保网络设备能够正确识别和处理子网。
常用的网络命令
ifconfig
功能
ifconfig命令用于显示和配置网络接口的信息,包括IP地址、子网掩码、广播地址等。它还可以启用或禁用网络接口。
基本语法
ifconfig [interface] [options]
- [interface]:指定要配置或显示信息的网络接口名,如eth0。
- [options]:指定要执行的操作,如up(启用接口)、down(禁用接口)、netmask(设置网络掩码)等。
示例
- 查看所有网络接口的信息:ifconfig
- 启用名为eth0的网络接口:ifconfig eth0 up
- 为eth0接口设置IP地址为192.168.1.10:ifconfig eth0 192.168.1.10 netmask 255.255.255.0
netstat
功能
netstat命令用于显示网络连接、路由表、网络接口统计信息、伪装连接以及广播域成员等。它可以帮助用户了解网络的状态和连接情况。
基本语法
netstat [options]
- [options]:指定要显示的信息类型,如-a(列出所有连接)、-t(列出TCP连接)、-u(列出UDP连接)、-n(禁用反向域名解析,加快查询速度)等。
示例
- 显示所有当前连接:netstat -a
- 显示所有TCP连接:netstat -at
- 显示所有监听中的TCP和UDP端口:netstat -tuln
ping
功能
ping命令是最常用的网络连通性测试命令之一。它向目标主机发送ICMP Echo Request消息,并等待目标主机的ICMP Echo Reply消息。通过ping命令,用户可以检查是否能够到达目标主机以及网络延迟的情况。
基本语法
ping [options] <目标主机名或IP地址>
- [options]:指定ping命令的选项,如-t(不间断地ping指定计算机,直到管理员中断)、-n(发送指定个数的数据包)、-l size(发送指定大小的数据包)等。
- <目标主机名或IP地址>:指定要ping的目标主机名或IP地址。
示例
- ping百度:ping baidu.com
- 不间断地ping指定IP地址,直到管理员中断:ping -t ip地址(注意:此命令可能会导致目标主机资源占用过高,应谨慎使用)
相关文章:
Java网络编程学习(一)
网络相关概念 网络体系结构 OSI体系结构(七层) OSI(Open Systems Interconnection,开放系统互联)体系结构将整个计算机网络分为七层,从上到下依次为:应用层、表示层、会话层、传输层、网络层…...
SMTP和POP3协议
SMTP和POP3协议 SMTP(简单邮件传输协议)和POP3(邮局协议版本3)是电子邮件系统中用于发送和接收邮件的核心协议。以下是它们的详细说明: 1. SMTP(Simple Mail Transfer Protocol) SMTP和POP3分…...
DeepSeek-R1的量化版、蒸馏版和满血版区别
DeepSeek-R1的量化版、蒸馏版和满血版是三种不同的模型变体,主要区别在于参数规模、性能表现以及适用场景。以下是它们的具体对比: 1. 满血版 DeepSeek-R1 特点: 参数规模:6710亿参数,是DeepSeek-R1系列中最大的版本…...
活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁
课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…...
网络工程师 (26)TCP/IP体系结构
一、层次 四层: 网络接口层:TCP/IP协议的最底层,负责网络层与硬件设备间的联系。该层协议非常多,包括逻辑链路和媒体访问控制,负责与物理传输的连接媒介打交道,主要功能是接收数据报,并把接收到…...
GIS笔记之Shapefile与KML相互转换
在GIS应用中,各种不同类型数据的转换与使用是一个重要的环节。在这其中,Shapefile和KML是两种常见的数据形式,两者间的相互转换也是日常工作和学习绕不开的话题。在这里,我们将常用的几种数据转换方法整理如下。 1.Shapefile和KM…...
【UVM】寄存器模型
寄存器模型的优势 sequence复用性高,方便对 DUT 中寄存器进行读写;提供了后门访问方式,可以不耗时的获取寄存器的值;可以很方便的对寄存器的 coverage 验证点的收集 寄存器模型基本概念 寄存器模型概念作用uvm_reg_field寄存器模…...
WordPress博客在fnOS环境下的极简搭建与公网地址配置指南
文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 你是否曾经为搭建自己的网站而头疼不已?是不是觉得…...
计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
2025年前端面试题~ 【前端面试】更新
前言 金三银四的招聘季即将来临,对于怀揣前端梦想的求职者而言,这是机遇与挑战并存的黄金时段。前端面试可不只是简单的问答,它是一场对综合能力的深度检验。面试官会从多个维度考量,比如扎实的 HTML、CSS 和 JavaScript 基础&…...
深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正! 前言 在 Java 开发中,字符串常量池(String Constant…...
从基础到人脸识别与目标检测
前言 从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。 颜…...
Java内存模型,内存屏障是干嘛的?
目录 Java 内存模型(Java Memory Model,JMM) 1. 定义和目的 2. 内存结构 3. 三大特性 4. happens-before 原则 内存屏障(Memory Barrier) 1. 定义和作用 2. 分类 3. 在 Java 中的应用 Java 内存模型(Java Memory Model, JMM) 1. 核心概念 2. 内存交互规则 …...
rdian是一个结构体,pdian=^Rdian,list泛型做什么用?
不明白不让编译的原因,记录下之遇到注意原油。 var mylist:TList<string>; mylist1:TList<Pdian>; mydian:Pdian; i:Integer; mylist2:TList<Rdian>; mydian2:rdian; arr:array of Rdian; begin mylist:TList…...
Photoshop自定义键盘快捷键
编辑 - 键盘快捷键 CtrlShiftAltK 把画笔工具改成Q , 橡皮擦改成W , 涂抹工具改成E , 增加和减小画笔大小A和S 偏好设置 - 透明度和色域 设置一样颜色 套索工具 可以自定义套选一片区域 Shiftf5 填充 CtrlU 可以改颜色/色相/饱和度 CtrlE 合并图层 CtrlShiftS 另存…...
C++智能指针的使用
文章目录 智能指针的使用和原理智能指针的使用场景RAII和智能指针C标准库智能指针的使用 智能指针的使用和原理 智能指针的使用场景 1. 下面的程序中,new了以后,我们也delete了,但是因为抛异常导致后面的delete没有得到执行,所以…...
LSTM的介绍
网上一些描述LSTM文章看的云里雾里,只是介绍LSTM 的结构,并没有说明原理。我这里用通俗易懂的话来描述一下。 我们先来复习一些RNN的核心公式: h t t a n h ( W h h t − 1 W x x t b h ) h_t tanh(W_h h_{t-1} W_x x_t b_h) httan…...
C++ ——从C到C++
1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…...
AI技术填坑记2:标注系统
在问答中,通用大模型往往拥有不可控性,而在正常的业务系统里面,往往有自己的各种专门的术语和内容,标注系统可以对大量数据进行标记,确认大模型解答的结果符合设想。 一、总体思路 一个标注,一般分为模块、应用、提问词汇、标注值,其中,模块可以认为是一种应用分类;应…...
【机器学习】超参数的选择,以kNN算法为例
分类准确度 一、摘要二、超参数的概念三、调参的方法四、实验搜索超参数五、扩展搜索范围六、考虑距离权重的kNN算法七、距离的计算方法及代码实现八、明可夫斯基距离的应用九、网格搜索超参数 一、摘要 本博文讲解了机器学习中的超参数问题,以K近邻算法为例&#…...
哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…...
Django开发入门 – 3.用Django创建一个Web项目
Django开发入门 – 3.用Django创建一个Web项目 Build A Web Based Project With Django By JacksonML 本文简要介绍如何利用最新版Python 3.13.2来搭建Django环境,以及创建第一个Django Web应用项目,并能够运行Django Web服务器。 创建该Django项目需…...
2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板
题目来源:攻防世界 Confusion1 目录 一、打开靶机,整理信息 二、解题思路 step 1:查看网页源码信息 step 2:模板注入 step 3:构造payload,验证漏洞 step 4:已确认为SSTI漏洞中的Jinjia2…...
【C语言标准库函数】标准输入输出函数详解[5]:格式化文件输入输出
目录 一、fprintf() 函数 1.1. 函数简介 1.2. fprintf使用场景 1.3. 注意事项 1.4. 示例 二、fscanf() 函数 2.1. 函数简介 2.2. fscanf使用场景 2.3. 注意事项 2.3. 示例 三、总结 在 C 语言中,格式化文件输入输出函数能够让我们以特定的格式对文件进行…...
【故障处理】 - 12C ADG备库密码文件的MD5值不断变化
【故障处理】 - 12C ADG备库密码文件的MD5值不断变化 一、概述二、报错原因:三、处理过程 一、概述 12C版本以后,密码文件的MD5值会持续变化。 二、报错原因: Oracle 数据库软件版本12.2 开始,当以具有管理权限的用户身份执行与数…...
【LeetCode Hot100 多维动态规划】最小路径和、最长回文子串、最长公共子序列、编辑距离
多维动态规划 机器人路径问题思路代码实现 最小路径和问题动态规划思路状态转移方程边界条件 代码实现 最长回文子串思路代码实现 最长公共子序列(LCS)题目描述解决方案 —— 动态规划1. 状态定义2. 状态转移方程3. 初始化4. 代码实现 编辑距离ÿ…...
【PG】DROP TABLE ... CASCADE
问题 ERROR: cannot drop table wx_user_tag because other objects depend on it DETAIL: default value for column id of table wx_user_tag depends on sequence wx_user_tag_id_seq HINT: Use DROP … CASCADE to drop the dependent objects too. 解决 这个错误消息表…...
青少年编程与数学 02-009 Django 5 Web 编程 04课题、应用创建
青少年编程与数学 02-009 Django 5 Web 编程 04课题、应用创建 一、项目及应用创建 Django 项目创建 Django 应用配置和测试 二、数据库的设置步骤 1: 创建 Django 项目步骤 2: 配置数据库PostgreSQLMySQL 步骤 3: 安装必要的数据库驱动步骤 4: 进行数据库迁移步骤 5: 创建应用…...
速度超越DeepSeek!Le Chat 1100tok/s闪电回答,ChatGPT 4o和DeepSeek R1被秒杀?
2023年,当全球科技界还在ChatGPT引发的AI狂潮中沉浮时,一场来自欧洲的"静默革命"正悄然改变游戏规则。法国人工智能公司Mistral AI推出的聊天机器人Le Chat以"比ChatGPT快10倍"的惊人宣言震动业界,其背后承载的不仅是技术…...
【详细版】DETR系列之Deformable DETR(2021 ICLR)
论文标题Deformable DETR: Deformable Transformers for End-to-End Object Detection论文作者Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai发表日期2021年03月01日GB引用> Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable DETR: Deformable T…...
