IPV6协议之DHCPV6

目录

背景:

一、DHCPV6概述

DHCPv6 Client:

DHCPv6 Relay:

DHCPv6 Server:

二、DHCPV6工作原理

DHCPV6无状态自动分配

三、DHCP基础配置

服务端

四、DHCPV6地址更新时间(DHCPV4租期)

五、DHCPV6一些常用参数基本概念

DHCPV6组播

UDP端口号

DHCP唯一标识符(DUID)

身份联盟(IA)

六、DHCPV6拓展报文


背景:

IPv6动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)是针对IPv6编址方案设计, 为主机分配IPv6地址/前缀和其他网络配置参数。

IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略。IPv6无状态地址配置方式是目前广泛采用的IPv6地址自动配置方式。配置了该协议的主机只需相邻设备开启IPv6路由通告功能,即可以根据通告报文包含的前缀信息自动配置本机地址。

无状态地址配置方案中设备并不记录所连接的IPv6主机的具体地址信息,可管理性差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置信息,在可用性上有一定缺陷。对于互联网服务提供商来说,也没有相关的规范指明如何向设备自动分配IPv6前缀,所以在部署IPv6网络时,只能采用手动配置的方法为设备配置IPv6地址。

DHCPv6技术解决了这一问题。DHCPv6属于一种有状态地址自动配置协议。

与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比, DHCPv6具有以下优点:

  1. 更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6 主机分配特定的地址,以便于网络管理。
  2. DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。
  3. 除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数。

一、DHCPV6概述

DHCPv6是一种运行在客户端和服务器之间的协议,与IPv4中的DHCP一样,所有的协议报文都是基于UDP 的。但是由于在IPv6中没有广播报文,因此DHCPv6使用组播报文,客户端也无需配置服务器的IPv6地址。

  • 客户端侦听的UDP目的端口号是546。
  • 服务器、中继代理侦听的UDP端口号是547。

IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略。

目前IPv6地址的分配方法有以下几种:

  • 手动配置。手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
  • 无状态自动地址分配。由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址。
  • 有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下两种:

1、DHCPv6有状态自动分配。DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数 (DNS、NIS、SNTP服务器地址等参数)。

2、DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配 除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数—无状态前面已经介绍过,不 在此赘述。

DHCPv6基本协议架构中,主要包括以下三种角色:

DHCPv6 Client:

DHCPv6客户端,通过与DHCPv6服务器进行交互,获取IPv6地址/前缀和网络配置信息,完成自身的地址配置功能。

DHCPv6 Relay:

DHCPv6中继代理,负责转发来自客户端方向或服务器方向的DHCPv6报文,协助DHCPv6客户端和 DHCPv6服务器完成地址配置功能。一般情况下,DHCPv6客户端通过本地链路范围的组播地址与 DHCPv6服务器通信,以获取IPv6地址/前缀和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继代理来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理。

DHCPv6基本协议架构中,DHCPv6中继代理不是必须的角色。如果DHCPv6客户端和DHCPv6服务器位 于同一链路范围内,或DHCPv6客户端和DHCPv6服务器直接通过单播交互完成地址分配或信息配置的 情况下,是不需要DHCPv6中继代理参与的。只有当DHCPv6客户端和DHCPv6服务器不在同一链路范围内,或DHCPv6客户端和DHCPv6服务器无法单播交互的情况下,才需DHCPv6中继代理的参与。

DHCPv6 Server:

DHCPv6服务器,负责处理来自客户端或中继代理的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置信息。

二、DHCPV6工作原理

和DHCPV4协议类似,DHCPV6也需要协商一些报文参数用来地址的下发。

DHCPV6四步交互(当网络环境中存在多个DHCPV6服务端):

步骤报文发送方目标功能

DHCPV6

solicit

DHCPV6

客户端

DHCPV6

服务端

或者

DHCPV6

服务器

代理

类似DHCPV4的discover报文,用来定位DHCPV6服务器,因为DHCPV6没有广播,所以采用组播FF02::1:2 (All DHCP Relay Agents and Servers):所有DHCPv6服务器和中继代理的组播地址,这个地址是链路范围的,用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。

DHCPV6

advertise

DHCPV6

服务端

DHCPV6

客户端

类似DHCPV4的Offer报文,DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。因为四步交互常用于网络环境存在多个服务端的情况,所以实际上客户端往往会收到多个advertise报文,此时客户端需要根据advertise报文中携带的服务器优先级等参数,选择其中一个。

DHCPV6

request

DHCPV6

客户端

DHCPV6

服务端

客户端收到advertise报文后,会发送requset报文请求 一个IPV6地址,这里同样采用组播发送给所有的服务端。值得注意的是该报文中携带已选择的DHCPv6服务 器的DUID。 含义1:告知其中一个服务器,我选择了你 ,并向其请求IPV6地址 含义2:告知网络中其他服务器,我选择了其他服务器。

DHCPV6

reply

DHCPV6

服务端

DHCPV6

客户端

类似DHCPV4的ACK,DHCPv6服务器回复Reply报文,确认将地址和网络配置参数分配给客户端使用。

同时,DHCPV6设计了一个两步交互的过程,用来当网络中仅存在一个DHCPV6服务器的情况,加快下发地址的速度。

DHCPv6两步交互地址分配过程如下:

1. DHCPv6客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址和网络配置参数。

2. DHCPv6服务器接收到Solicit报文后,将进行如下处理:

  • 如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分配IPv6地址和其他网络配置参数,Reply报文中也携带Rapid Commit选项。
  • 如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配IPv6地址/前缀和其他网络配置参数。

DHCPV6无状态自动分配

IPv6节点可以通过DHCPv6无状态方式获取配置参数(包括DNS、SIP、SNTP等服务器配置信息,不包括IPv6地址)。IPV6地址通过链路无状态规则自动生成。

DHCPV6无状态工作过程如下:

  1. DHCPV6客户端以组播方式向DHCPV6服务器发送information request报文,该报文中携带option request选项,指定DHCPV6客户端需要从DHCPV6服务器获取的配置参数。
  2. DHCPV6服务器收到information request报文后,为DHCPV6客户端分配网络配置参数,并单播发送relay报文,将网络配置参数返回给DHCPV6客户端。客户端根据收到的参数完成配置。

三、DHCP基础配置

服务端

配置DHCPV6 DUID—DUID即DHCPv6设备唯一标识符,每个服务器或客户端有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则使用DUID来识别服务器。

操作步骤:

sys
[DHCP]dhcpv6 duid ?
ll DUID-LL
llt DUID-LLT—配置设备的DUID,默认情况下采用ll标准,生成DUID

参数参数说明取值
ll指定设备采用链路层地址(即MAC 地址)方式生成DUID。-
llt指定设备采用链路层地址(即MAC 地址)加时间的方式生成DUID。-
duid指定设备的DUID。偶数位长度的十六进制字符串,长度范围是8~28, 仅可以配置为包含0~9、A~F和a~f的组合。

配置IPV6地址池—DHCPv6服务器需要从地址池中选择合适的IPv6地址分配给DHCPv6客户端,用户需要创建地址池并配置IPv6地址池的相关属性,包括地址范围、配置信息刷新时间、不参与自动分配的IPv6地址以及静态绑定的IPv6地址。根据客户端的实际需要,IPv6地址分配方式可以选择动态分配或静态绑定方式。

执行步骤:DHCPV6有状态自动分配IP

[DHCP]ipv6 —全局激活IPV6
[DHCP]int GigabitEthernet 0/0/0—进入接口
[DHCP-GigabitEthernet0/0/0]ipv6 enable —接口激活IPV6
[DHCP-GigabitEthernet0/0/0]ipv6 address 2000::1 64—配置接口IPv6地址
[DHCP]dhcp enable —启动DHCP服务
[DHCP]dhcpv6 pool aaa —配置DHCPV6地址池名称,同时进入DHCPV6视图
[DHCP-dhcpv6-pool-aaa]address prefix 2000::/64 ?
life-time Lifetime—可选,更改默认生命周期,默认有效生命周期默认值为172800s,即2天,值得注
意的是DHCPV6存在两个时间,一个是默认生命周期,一个是优先生命周期,优先生命周期默认为
86400,即一天

Please press ENTER to execute command —配置下发地址的网络前缀,类似IPV4地址的网络
位。
[DHCP-dhcpv6-pool-aaa]excluded-address 2000::1 —从地址池中排错某些地址,这里需要排除
2000::1,因为这是网关的接口地址。
[DHCP-dhcpv6-pool-aaa]dns-server 2400:3200::1—分配IPV6的dns服务器—此为阿里免费dnsV6地
址
[DHCP-GigabitEthernet0/0/0]dhcpv6 server aaa—接口绑定DHCPV6地址池
—对于PC而言,获取IPV6地址是通告IPV6协议,所以需要开启RA路由器通告功能,并且IPV6报文中需
要携带两种标志

四、DHCPV6地址更新时间(DHCPV4租期)

DHCPv6服务器为DHCPv6客户端分配的地址是有租约的,租约由生命期(包括地址的首选生命期和有效生命期构成)和续租时间点(IA的T1、T2)构成。地址有效生命期结束后,DHCPv6客户端不能再使用该地址。在有效生命期到达之前,如果DHCPv6客户端希望继续使用该地址,则需要更新地址租约。

DHCPv6客户端为了延长其与IA关联的地址的有效生命期和首选生命期,在T1时刻,发送包含IA选项的Renew报文给服务器,其中IA选项中携带需要续租的IA地址选项。如果DHCPv6客户端一直没有收到T1时刻续租报文的回应报文,那么在T2时刻,DHCPv6客户端通过Rebind报文向DHCPv6服务器继续续租地址。

T1时刻地址租约更新过程如下:

1. DHCPv6客户端在T1时刻(推荐值为优先生命期的0.5倍)发送Renew报文进行地址租约更新请求,默认情况下,也就是当时间来到12h时将来到T1时刻。

2. DHCPv6服务器回应Reply报文。

  • 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址租约。
  • 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。

T2时刻地址租约更新过程如下:

1. DHCPv6客户端在T1时刻发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文。

2. DHCPv6客户端在T2时刻(推荐值为优先生命期的0.8倍),向所有DHCPv6服务器组播发送Rebind报文请求更新租约。

3. DHCPv6服务器回应Reply报文。

  • 如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知 DHCPv6客户端已经成功更新地址/前缀租约。
  • 如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。

如果DHCPv6客户端没有收到DHCPv6服务器的应答报文,则到达有效生命期后,DHCPv6客户端停止使用该地址。

五、DHCPV6一些常用参数基本概念

DHCPV6组播

在DHCPv6协议中,客户端不用配置DHCPv6 Server的IPv6地址,而是发送目的地址为组播地址的 Solicit报文来定位DHCPv6服务器。

在DHCPv4协议中,客户端发送广播报文来定位服务器。为避免广播风暴,在IPv6中,已经没有了广播类型的报文,而是采用组播报文。DHCPv6用到的组播地址有两个:

  1. FF02::1:2(All DHCP Relay Agents and Servers):所有DHCPv6服务器和中继代理的组播地 址,这个地址是链路范围的,用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。
  2. FF05::1:3(All DHCP Servers):所有DHCPv6服务器组播地址,这个地址是站点范围的,用于中继代理和服务器之间的通信,站点内的所有DHCPv6服务器都是此组的成员。

UDP端口号

  • DHCPv6报文承载在UDPv6上。
  • 客户端侦听的UDP目的端口号是546。
  • 服务器、中继代理侦听的UDP端口号是547。

DHCP唯一标识符(DUID)

  • DHCP设备唯一标识符DUID(DHCPv6 Unique Identifier),每个服务器或客户端有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则使用DUID来识别服务器。
  • 客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier和Server Identifier选项来 携带。两种选项的格式一样,通过option-code字段的取值来区分是Client Identifier还是Server Identifier选项。

身份联盟(IA)

  • 身份联盟IA(Identity Association)是使得服务器和客户端能够识别、分组和管理一系列相关 IPv6地址的结构。每个IA包括一个IAID和相关联的配置信息。
  • 客户端必须为它的每一个要通过服务器获取IPv6地址的接口关联至少一个IA。客户端用给接口关联的IA来从服务器获取配置信息。每个IA必须明确关联到一个接口。
  • IA的身份由IAID唯一确定,同一个客户端的IAID不能出现重复。IAID不应因为设备的重启等因素发生丢失或改变。
  • IA中的配置信息由一个或多个IPv6地址以及T1和T2生存期组成。IA中的每个地址都有首选生存期和有效生存期。
  • 一个接口至少关联一个IA,一个IA可以包含一个或多个地址信息。

六、DHCPV6拓展报文

字段含义:

字段

含义
msg-type

1

表示报文的类型,取值为1~13,具体请参见DHCPv6报文类型
transaction-ID

3

DHCPv6交互ID,也叫事务ID,用来标识一个来回的DHCPv6报文交互。例如 Solicit/Advertise报文为一个交互。Request/Reply报文为另外一个交互,两者有不同的事务ID。 交互ID特点如下:交互ID是DHCPv6客户端生成的一个随机 值,DHCPv6客户端应当保证交互ID具有一定的随机性。对于DHCPv6服务器响应报文和相应的请求报文,两者交互ID保持一致。如果是DHCPv6服务器主动发起的会话报文,则交互ID为0。
options

表示DHCPv6的选项字段。此字段包含了DHCPv6服务器分配给IPv6主机的配置 信息,如DNS服务器的IPv6地址等信息。

DHCP报文类型:

目前DHCPv6定义了如下十三种类型报文,DHCPv6服务器和DHCPv6客户端之间通过这十三种类型的报文进行通信,下表记录部分报文和DHCPV4的比较。

DHCPV6报文DHCPV4报文说明
1SOLICIT

DHCP

DISCOVER

DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置。
2ADVERTISE

DHCP

OFFER

DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。
3REQUEST

DHCP

REQUEST

DHCPv6客户端发送Request报文来向DHCPv6服务器请求 IPv6地址和其它配置信息。
4CONFIRM-DHCPv6客户端向任意可达的DHCPv6服务器发送Confirm 报文检查自己目前获得的IPv6地址是否适用与它所连接的链路。
5RENEW

DHCP

REQUEST

DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务 器发送Renew报文来延长地址的生存期并更新配置信息。
6REBIND

DHCP

REQUEST

如果Renew报文没有得到应答,DHCPv6客户端向任意可达的DHCPv6服务器发送Rebind报文来延长地址的生存期并更新配置信息。
7REPLY

DHCP

ACK/NAK

DHCPv6服务器在以下场合发送Reply报文:DHCPv6服务器发送携带了地址和配置信息的Reply消息来回应从 DHCPv6客户端收到的Solicit、Request、Renew、Rebind 报文。DHCPv6服务器发送携带配置信息的Reply消息来回 应收到的Information-Request报文。用来回应DHCPv6客户端发来的Confirm、Release、Decline报文。
8RELEASE

DHCP

RELEASE

DHCPv6客户端向为其分配地址的DHCPv6服务器发送 Release报文,表明自己不再使用一个或多个获取的地址。
9DECLINE

DHCP

DECLINE

DHCPv6客户端向DHCPv6服务器发送Decline报文,声明 DHCPv6服务器分配的一个或多个地址在DHCPv6客户端所 在链路上已经被使用了。
10RECONFIGURE-在链路上已经被使用了。 10 RECONFIGURE - DHCPv6服务器向DHCPv6客户端发送Reconfigure报文, 用于提示DHCPv6客户端,在DHCPv6服务器上存在新的网络配置信息。
11

INFORMATION-

REQUEST

DHCP

INFORM

DHCPv6客户端向DHCPv6服务器发送InformationRequest报文来请求除IPv6地址以外的网络配置信息。
12

RELAY-FROM

-中继代理通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端请求报文。
13RELAY-REPL-DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 开发serlvet篮球秩序册管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 篮球秩序册管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 篮…

☆【前后缀】【双指针】Leetcode 42. 接雨水

【前后缀】【双指针】Leetcode 42. 接雨水 解法1 前后缀分解解法2 双指针 ---------------🎈🎈42. 接雨水 题目链接🎈🎈------------------- 解法1 前后缀分解 维护一个前缀(左侧最高)后缀(右侧…

【工具】mac 环境配置

【待补充 】 一、maven配置 vim ~/.bash_profile export M3_HOME/Users/chenyang/java_utils/apache-maven-3.6.1 export PATH$PATH:$M3_HOME/bin ​ //mvn -v提示Permission denied 没有权限访问 chmod ax /Users/chenyang/java_utils/apache-maven-3.6.1/bin/mvn 二、java…

【Linux系统编程(进程编程)】进程的退出:父进程等待子进程的退出之僵尸进程与孤儿进程

文章目录 一、进程退出1.1、进程正常退出方式1.2、异常退出 二、父进程等待子进程退出(一)2.1、为什么要等待子进程退出2.2、(1)父进程等待子进程退出并收集子进程的退出状态如何等待wstatus空wstatus非空 2.3、(2&…

LeetCode---389周赛

题目列表 3083. 字符串及其反转中是否存在同一子字符串 3084. 统计以给定字符开头和结尾的子字符串总数 3085. 成为 K 特殊字符串需要删除的最少字符数 3086. 拾起 K 个 1 需要的最少行动次数 一、字符串及其反转中是否存在同一子字符串 直接暴力枚举即可,代码…

【PHP + 代码审计】数组函数

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

Redis 教程系列之Redis 数据备份与恢复(五)

Redis SAVE 命令用于创建当前数据库的备份。 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 redis 127.0.0.1:6379> SAVE OK 该命令将在 redis 安装目录中创建dump.rdb文件。 恢复数据 如果需要恢复数据,只需将备份…

力扣面试150 x 的平方根 二分 换底法 牛顿迭代法 一题多解

Problem: 69. x 的平方根 思路 👨‍🏫 参考题解 💖 袖珍计算器算法 class Solution {public int mySqrt(int x){if (x 0)return 0; // Math.exp(3):e的三次方int ans (int) Math.exp(0.5 * Math.log(x));return (long) (an…

【数据库】MySQL库与表的基本操作

目录 一、数据库概述 1. SQL分类 2. 存储引擎 二、库的操作 1. 创建数据库 2. 字符集与校验规则 3. 查看数据库 4. 修改数据库 5. 删除数据库 6. 查看连接情况 三、表的操作 1. 创建数据表 2. 查看数据表 3. 修改数据表 4. 删除数据表 一、数据库概述 1. SQL分…

PhpSpreadsheet 读取 excel 里面的图片

使用 phpSpreadSheet 插件去读取 excel 里面的图片时发现坑点很多,这里做一个总结 我使用的是 tp 框架 一、安装 phpSpreadSheet 插件 在composer.json配置 "require": {..."phpoffice/phpspreadsheet": "*" } composer安装 co…

配置环境安装包遇到的问题

1. error: could not install packages due to an oserror: [errno 28] no space left on device 说是磁盘占用过多,查看磁盘占用情况。 df -h 果然占比100% 清理了众多缓存.cache都不行,而且其他利用率很低,可能是pip install的过程中使…

代码随想录刷题随记4-链表

代码随想录刷题随记4 文章目录 代码随想录刷题随记424. 两两交换链表中的节点19.删除链表的倒数第N个节点面试题 02.07. 链表相交142.环形链表II 24. 两两交换链表中的节点 leetcode 链接 没什么技巧,主要考察链表操作的熟练程度 class Solution { public:ListNod…

qt 实现 轮播图效果,且还有 手动 上一页和下一页 已解决

QT中有 轮播图的需求,按照正常html版本 。只需要配置数组就能搞定,但是c qt版本 应该用什么了。 第一想到的是采用定时器。 // 定时器初始化{m_pTime new QTimer(this);m_pTime->start(4 * 1000);//启动定时器并设置播放时间间隔m_pAutoFlag true;/…

TikCloud天玑云微服务技术选型

单体多机负载均衡详见:PUSDN 技术选型 平台采用Java开发语言,具有可移植性、跨平台等特性。同时,平台提供跨平台技术解决方案、Windows、MacOS、Linux多端互通,pgz-serial串口、建行POS收银等,都是基于本平台衍生的跨平台案例。 功能介绍使用技术优势/特性开发语言Java主…

数据库查询所有表和字段

查询所有表和字段 介绍 有时候可能要展示所有的表以及所有的字段,下面介绍oracle和mysql的方法以及代码 oracle sql 查询所有表 select Table_NAME from all_tables where owner 表空间 查询字段 SELECT * FROM user_tab_columns where table_name upper(表名…

【python】python turtle绘制坤坤打球

一、效果图: 二、准备工作 (1)、导入必要的模块: 代码首先导入了需要使用的模块:requests、lxml和csv。 import requests from lxml import etree import csv 如果出现模块报错 进入控制台输入:建议使用国内镜像源 p…

智慧公厕:跨界融合,打造智慧城市新名片

随着城市化进程的不断加快,公共厕所建设成为一个亟待解决的问题。传统的公厕存在着管理繁琐、卫生差、服务不到位等一系列问题,与城市发展的节奏不协调。为此,推进新型智慧公厕建设成为了一个重要的解决方案。智慧公厕的建设需要推进技术融合…

Day32 贪心算法 part02

Day32 贪心算法 part02 122.买卖股票的最佳时机 II 我的思路: 只有当后一天比前一天价格高时,才出售,profit才累加 解答: class Solution {public int maxProfit(int[] prices) {if(prices.length 0) {return 0;}int profit …

【论文精读】VIT:vision transformer论文

相关文章 【论文精读】Transformer:Attention Is All You Need 文章目录 相关文章一、文章概览(一)研究背景(二)核心思路(三)相关工作(三)文章结论 二、模型细节&#x…

数据库中什么时候使用自增id,什么时候不能使用

在数据库中,自增ID的使用场景主要有以下几个: 插入记录时不需要指定ID:使用自增ID可以避免手动指定ID,从而避免了因重复ID导致的错误数据库自动编号,速度快:数据库会按照预设的步长(默认为1&am…