网络协议之DNS
一、DNS概述
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53,通过递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。
DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。例如,当用户在浏览器中输入网址“www.example.com”时,DNS会将这个域名转换为对应的IP地址,这样计算机才能访问到该网站。
DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。由于DNS的引入,互联网用户无需记住复杂的IP地址,只需记住易于记忆的域名即可。
二、DNS的历史与发展
1. ARPANET时代(1960s-1980s)
早期的互联网并没有一个全球的域名系统,而是使用主机名(hostname)来识别网络上的计算机。这些主机名存储在一个称为“hosts.txt”的文本文件中,该文件由网络管理员手动维护。随着互联网的增长,需要一种更有效的方法来管理和查找主机名与IP地址之间的映射关系。
2. DNS的创建(1983)
1983年,Paul Mockapetris和Jon Postel开始开发DNS。他们发布了RFC882和RFC883,其中详细说明了DNS的设计。DNS被设计成一个层次结构系统,由多个域名服务器组成,每个服务器负责管理特定区域内的域名和IP地址映射。
3. DNS的层次结构(1980s-1990s)
DNS系统采用分层、分布式的结构来管理域名与IP地址的映射关系。根域名服务器位于顶层,下面是顶级域名服务器(TLD),然后是权威域名服务器和缓存域名服务器。
4. 商业化和增长(1990s-2000s)
随着互联网的商业化,域名的注册数量急剧增加,导致DNS系统面临压力。为了满足需求,域名注册机构和托管服务商开始提供域名注册和管理服务。
5. DNSSEC的引入(2000s)
为了提高DNS安全性,DNSSEC(Domain Name System Security Extensions)被引入。它通过数字签名机制确保域名解析的完整性和真实性,防止DNS劫持和缓存投毒等攻击。
6. 新顶级域名的推出(2010s)
ICANN(互联网名称与数字地址分配机构)开始批准新的顶级域名,如“.app”、“.blog”等,丰富了互联网域名的多样性。
7. IPv6和DNS64/NAT64(2010s)
随着IPv6的推出,DNS也需要适应新的IP地址格式。DNS64/NAT64技术允许IPv6和IPv4之间的通信,使得IPv6网络可以访问IPv4网络上的资源。
8. 持续的发展(至今)
DNS仍在不断演进,以适应新的互联网需求和安全挑战。随着云计算、物联网等新兴技术的发展,DNS在网络生态中的作用变得越来越重要。
三、DNS的工作原理
1. 域名服务器的分类
域名服务器可以根据其角色和层级划分为以下四种不同类型:
-
根域名服务器(Root Name Servers)
根域名服务器位于DNS层次结构的最高层,共有13个不同IP地址的根域名服务器分布在全球各地。它们保存了顶级域名服务器的信息,负责管理顶级域名(如.com、.org、.net等)的域名服务器的IP地址。
-
顶级域名服务器(Top-Level Domain Servers)
顶级域名服务器负责管理特定顶级域(如.com、.org、.net等)下的域名和其子域的映射。例如,.com顶级域名服务器会存储所有使用.com域名结尾的域名映射信息。
-
权限域名服务器(Authoritative Name Servers)
权威域名服务器是每个特定域名的“官方”域名服务器,它们存储着该域名与IP地址的映射信息。当本地域名服务器需要解析特定域名时,它会向该域名的权威域名服务器发送查询请求。
-
本地域名服务器(Local Name Servers)
本地域名服务器位于用户的本地网络中,通常由互联网服务提供商(ISP)提供。当用户发起域名查询请求时,本地域名服务器首先被联系。如果本地域名服务器已经缓存了相应的映射信息,它会直接返回结果;否则,它会根据查询的域名层级结构,通过递归查询或迭代查询的方式,向根域名服务器、顶级域名服务器和权限域名服务器发起查询,以获取所需的映射信息。
2. DNS域名解析过程
DNS域名解析过程包含递归查询和迭代查询两种方式:
-
递归查询
客户端将查询请求发送给递归DNS服务器,服务器必须返回结果,不能简单把请求转发给其他服务器。如果递归服务器不能解析,它会向其他DNS服务器迭代查询,直到获取结果,然后再返回给客户端。整个过程对客户端透明,本地服务器负载重,但查询快。
-
迭代查询
本地域名服务器逐级向上查询,然后逐级向下查询,直到获得所需的IP地址。这种查询模式确保了每一步查询都是逐级完成的,保持了数据的一致性和正确性。同时,每个查询环节都可以被缓存,以提高查询效率,并减轻DNS服务器的负担。
具体步骤如下:
-
本地域名服务器启动查询
当用户在浏览器中输入一个域名,本地域名服务器(通常由互联网服务提供商提供)被触发进行域名解析。
-
本地域名服务器向根域名服务器发起查询
本地域名服务器向一个根域名服务器发起查询请求,该请求包含了所需解析的域名。
-
根域名服务器的响应
根域名服务器不会直接提供所需的IP地址,而是回复给本地域名服务器一个指向顶级域名服务器的IP地址。这个顶级域名服务器与所查询域名的顶级域相关联,例如“.com”、“.org”等。
-
本地域名服务器向顶级域名服务器发起查询
本地域名服务器向得到的顶级域名服务器发起新的查询请求,继续请求所需的域名映射。
-
顶级域名服务器的响应
顶级域名服务器回复给本地域名服务器一个指向权限域名服务器的IP地址。
-
本地域名服务器向权限域名服务器发起查询
本地域名服务器向权限域名服务器发送查询请求,获取最终的IP地址。
-
权限域名服务器的响应
权限域名服务器返回最终的IP地址给本地域名服务器。
-
本地域名服务器返回结果给客户端
本地域名服务器将最终的IP地址返回给客户端,客户端通过该IP地址访问目标网站。
3. DNS查询与响应的格式
DNS请求与响应的格式是一致的,其整体分为Header、Question、Answer、Authority、Additional 5部分:
-
Header部分
Header部分是一定有的,长度固定为12个字节。包含以下字段:
- ID:占16位。该值由发出DNS请求的程序生成,DNS服务器在响应时会使用该ID,这样便于请求程序区分不同的DNS响应。
- QR:占1位。指示该消息是请求还是响应。0表示请求;1表示响应。
- OPCODE:占4位。指示请求的类型,有请求发起者设定,响应消息中复用该值。0表示标准查询;1表示反转查询;2表示服务器状态查询。3~15目前保留,以备将来使用。
- AA(Authoritative Answer,权威应答):占1位。表示响应的服务器是否是权威DNS服务器。只在响应消息中有效。
- TC(TrunCation,截断):占1位。指示消息是否因为传输大小限制而被截断。
- RD(Recursion Desired,期望递归):占1位。该值在请求消息中被设置,响应消息复用该值。如果被设置,表示希望服务器递归查询。但服务器不一定支持递归查询。
- RA(Recursion Available,递归可用性):占1位。该值在响应消息中被设置或被清除,以表明服务器是否支持递归查询。
- Z:占3位。保留备用。
- RCODE(Response code):占4位。该值在响应消息中被设置。0表示没有错误条件;1表示请求格式有误,服务器无法解析请求;2表示服务器出错;3表示请求中的域名不存在(只在权威DNS服务器的响应中有意义);4表示服务器不支持该请求类型;5表示服务器拒绝执行请求操作;6~15保留备用。
- QDCOUNT:占16位(无符号)。指明Question部分的包含的实体数量。
- ANCOUNT:占16位(无符号)。指明Answer部分的包含的RR(Resource Record)数量。
- NSCOUNT:占16位(无符号)。指明Authority部分的包含的RR(Resource Record)数量。
- ARCOUNT:占16位(无符号)。指明Additional部分的包含的RR(Resource Record)数量。
-
Question部分
Question部分的每一个实体的格式:
- QNAME:字节数不定,以0x00作为结束符。表示查询的主机名。注意:主机名被".“号分割成了多段标签。在QNAME中,每段标签前面加一个数字,表示接下来标签的长度。例如,“www.example.com"会被表示成”\x03www\x07example\x03com\x00”。
- QTYPE:占16位。表示查询的资源记录类型。例如,A类型表示IPv4地址,AAAA类型表示IPv6地址,NS类型表示域名服务器,MX类型表示邮件交换服务器等。
- QCLASS:占16位。通常被设置为1,表示互联网类。
-
Answer、Authority、Additional部分
Answer、Authority、Additional部分都包含若干个RR(Resource Record),每个RR的格式如下:
- NAME:字节数不定,以0x00作为结束符。表示资源记录所属的主机名或域名。
- TYPE:占16位。表示资源记录的类型。
- CLASS:占16位。通常被设置为1,表示互联网类。
- TTL:占32位(无符号)。表示资源记录的生存时间,单位为秒。从资源记录被创建或更新开始计时,在这个时间内,资源记录可以被缓存。超过这个时间,资源记录必须被丢弃或重新查询。
- RDLENGTH:占16位(无符号)。表示资源记录数据部分的长度(字节数)。
- RDATA:字节数不定,长度由RDLENGTH指定。表示资源记录的具体数据。例如,对于A类型的资源记录,RDATA部分表示IPv4地址;对于MX类型的资源记录,RDATA部分包含邮件交换服务器的优先级和主机名。
4. DNS缓存机制
DNS缓存是一种用于存储DNS查询结果的技术,旨在提高DNS查询的效率和速度。通过缓存DNS查询结果,可以减少对DNS服务器的请求次数,从而降低网络负载和提高用户体验。
DNS缓存通常分为两类:客户端缓存和服务器缓存。
-
客户端缓存
客户端缓存位于用户设备(如计算机、智能手机等)上,由操作系统或浏览器管理。当用户发起DNS查询请求时,客户端会首先检查本地缓存中是否存在该域名的解析结果。如果找到匹配的结果,则直接使用该结果,无需向DNS服务器发起请求。这可以显著提高DNS查询速度,并减轻DNS服务器的负载。
客户端缓存的缺点是缓存结果可能不够准确。由于DNS记录的生存时间(TTL)有限,缓存结果可能会过期。如果用户在缓存结果过期后仍然使用它,则可能导致访问错误的IP地址。此外,如果DNS记录被更新(例如,域名对应的IP地址发生变化),客户端缓存中的旧结果也会导致访问问题。
-
服务器缓存
服务器缓存位于DNS服务器上,通常由DNS服务器软件管理。当DNS服务器收到查询请求时,它会首先检查本地缓存中是否存在该域名的解析结果。如果找到匹配的结果,则直接返回该结果给客户端,无需向其他DNS服务器发起请求。这可以加快DNS查询速度,并减少对其他DNS服务器的依赖。
服务器缓存的优点是缓存结果更加准确和可靠。由于DNS服务器通常与权威DNS服务器保持同步,因此服务器缓存中的结果通常是最新的。此外,服务器缓存还可以减少网络延迟和带宽消耗,提高DNS查询的效率和性能。
然而,服务器缓存也存在一些挑战。由于DNS记录的生存时间(TTL)有限,服务器缓存需要定期更新以确保结果的准确性。此外,如果DNS服务器受到攻击或出现故障,服务器缓存中的结果可能会受到影响,导致访问问题。因此,需要采取适当的安全措施来保护服务器缓存免受攻击和干扰。
四、DNS的应用与重要性
DNS作为互联网的基础服务之一,其应用广泛且重要。以下是DNS的一些主要应用:
1. 网站访问:
当用户输入网址时,DNS将域名解析为IP地址,使用户能够访问到目标网站。
2. 邮件发送:
DNS中的MX记录用于指定邮件交换服务器,确保邮件能够准确送达目标邮箱。
3. 负载均衡:
通过DNS的轮询或加权轮询等方式,可以将用户请求分发到不同的服务器上,实现负载均衡。
4. 故障转移:
当主服务器出现故障时,DNS可以将用户请求重定向到备用服务器上,确保服务的连续性。
5. 内容分发网络(CDN):
CDN提供商利用DNS将用户请求导向最近的缓存节点,提高内容的访问速度和可靠性。
6. 网络安全:
DNS可以用于过滤恶意网站、防止DNS劫持和钓鱼攻击等网络安全威胁。
DNS的重要性体现在以下几个方面:
- 提高网络访问效率:DNS通过解析域名和IP地址之间的映射关系,使用户能够更方便地访问互联网资源。
- 保障网络安全:DNS可以用于识别和过滤恶意网站,防止用户访问到受攻击或欺诈的网站。
- 支持互联网发展:DNS作为互联网的基础服务之一,其稳定性和可靠性对互联网的发展至关重要。随着物联网、云计算等新兴技术的兴起,DNS在网络生态中的作用将越来越重要。
五、DNS的未来发展趋势
随着互联网的不断发展,DNS也在不断演进和升级。以下是DNS的一些未来发展趋势:
1. DNS over HTTPS(DoH):
DoH是一种通过HTTPS协议传输DNS查询请求和响应的技术。它可以提高DNS查询的隐私性和安全性,防止DNS查询被窃听或篡改。
2. DNS over TLS(DoT):
DoT是一种通过TLS协议加密DNS查询请求和响应的技术。与DoH类似,DoT也可以提高DNS查询的隐私性和安全性。
3. IPv6和DNS64/NAT64:
随着IPv6的普及,DNS需要适应新的IP地址格式。DNS64/NAT64技术允许IPv6和IPv4之间的通信,使得IPv6网络可以访问IPv4网络上的资源。
4. 智能DNS:
智能DNS可以根据用户的地理位置、网络状况等因素,动态选择最优的DNS服务器和解析结果,提高网络访问速度和可靠性。
5. 区块链技术在DNS中的应用:
区块链技术可以用于构建去中心化的DNS系统,提高DNS的安全性和可扩展性。然而,区块链技术在DNS中的应用还处于研究和探索阶段,需要进一步的实验和验证。
总结
DNS是互联网的核心服务,它将域名与IP地址相互映射,简化网络访问。自ARPANET时代起,DNS经历了从hosts.txt到分层分布式系统的演变,现已支持全球域名解析。DNS通过递归和迭代查询,快速定位域名对应的IP地址。随着IPv6、DNSSEC、新顶级域名的引入,DNS不断升级以满足互联网需求。DNS不仅关乎网站访问和邮件发送,还涉及负载均衡、故障转移、CDN及网络安全。未来,DNS将向HTTPS/TLS加密、智能解析及区块链技术方向发展,进一步提升安全性、效率和可扩展性。
相关文章:
网络协议之DNS
一、DNS概述 域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53,通过递归查询请求的方式来…...
第02章_MySQL环境搭建(基础)
1. MySQL 的卸载 1.1 步骤1:停止 MySQL 服务 在卸载之前,先停止 MySQL8.0 的服务。按键盘上的 “Ctrl Alt Delete” 组合键,打开“任务管理器”对话 框,可以在“服务”列表找到“MySQL8.0” 的服务,如果现在“正在…...
反向代理模块
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...
【强化学习的数学原理】第05课-蒙特卡洛方法-笔记
学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、通过例子介绍蒙特卡洛二、 MC Basic 算法介绍三、MC Basic 算法例子例1:MC Baxic算法例2:episode le…...
Spring源码(十三):Spring全系列总结
Spring总结篇,不同于之前抽丝剥茧式地纵向深入源码,本次从横向的角度出发,希望可以带个读者一个完全不同的Spring视角。 2024年重置版,搞点不一样的东西。希望通过本篇的内容,将之前的文章全部给串起来。 相关前文: Spring Boot启动加载Spring Web请求处理流程Spring上…...
算法日记 33 day 动态规划(打家劫舍,股票买卖)
今天来看看动态规划的打家劫舍和买卖股票的问题。 上题目!!!! 题目:打家劫舍 198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金…...
从零开始打造个人博客:我的网页设计之旅
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏:…...
用python将一个扫描pdf文件改成二值图片组成的pdf文件
使用墨水屏读书现在似乎越来越流行,这确实有一定的好处,例如基本不发热,电池续航时间超长,基本不能游戏所以有利于沉浸式阅读,还有不知道是不是真的有用的所谓防蓝光伤害。但是,如果阅读的书籍是扫描图片组…...
Electron开发构建工具electron-vite(alex8088)添加VueDevTools(VitePlugin)
零、介绍 本文章的electron-vite指的是这个项目👉electron-vite仓库,electron-vite网站 本文章的VueDevTools指的是VueDevTools的Vite插件版👉https://devtools.vuejs.org/guide/vite-plugin 一、有一个用electron-vite创建的项目 略 二、…...
服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例
服务器数据恢复环境: 两组分别由4块SAS硬盘组建的raid5阵列,两组阵列划分的LUN组成LVM架构,格式化为EXT3文件系统。 服务器故障: 一组raid5阵列中的一块硬盘离线。热备盘自动上线替换离线硬盘,但在热备盘上线同步数据…...
网络安全基础——网络安全法
填空题 1.根据**《中华人民共和国网络安全法》**第二十条(第二款),任何组织和个人试用网路应当遵守宪法法律,遵守公共秩序,遵守社会公德,不危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠…...
go-rod vs Selenium:自动化测试工具的比较与选择
自动化测试是软件开发过程中的关键环节,它能够帮助我们发现缺陷、验证功能并提高软件质量。随着Web技术的快速发展,市场上出现了多种自动化测试工具,其中Selenium和go-rod是两个备受关注的选择。本文将从多个维度对这两个工具进行比较&#x…...
Ubuntu20.04+ROS 进行机械臂抓取仿真:环境搭建(一)
目录 一、从官网上下载UR机械臂 二、给UR机械臂添加夹爪 三、报错解决 本文详细介绍如何在Ubuntu20.04ROS环境中为Universal Robots的UR机械臂添加夹爪。首先从官方和第三方源下载必要的软件包,包括UR机械臂驱动、夹爪插件和相关依赖。然后,针对gazeb…...
Pytorch微调深度学习模型
在公开数据训练了模型,有时候需要拿到自己的数据上微调。今天正好做了一下微调,在此记录一下微调的方法。用Pytorch还是比较容易实现的。 网上找了很多方法,以及Chatgpt也给了很多方法,但是不够简洁和容易理解。 大体步骤是&…...
PPT分享 | IBM集团业务流程架构顶层规划-订单到交付-销售到回款方案
PPT下载链接见文末~ IBM业务流程规划方法是一套结构化、体系化的流程设计理论,其企业流程框架(EPF)是一种用于企业业务流程架构设计梳理的方法论。 一、IBM业务流程规划方法的核心 IBM的BPM(业务流程管理)流程管理体…...
后端并发编程操作简述 Java高并发程序设计 六类并发容器 七种线程池 四种阻塞队列
目录 并发集合 1. ConcurrentHashMap: 2. CopyOnWriteArrayList: 3. CopyOnWriteArraySet: 4. BlockingQueue系列: 5. ConcurrentSkipListMap 和 ConcurrentSkipListSet: 6. ConcurrentLinkedDeque:…...
基于LLama_factory的Qwen2.5大模型的微调笔记
Qwen2.5大模型微调记录 LLama-facrotyQwen2.5 模型下载。huggingface 下载方式Modelscope 下载方式 数据集准备模型微调模型训练模型验证及推理模型导出 部署推理vllm 推理Sglang 推理 LLama-facroty 根据git上步骤安装即可,要求的软硬件都装上。 llama-factory运行…...
resnet50,clip,Faiss+Flask简易图文搜索服务
一、实现 文件夹目录结构: templates -----upload.html faiss_app.py 前端代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…...
亚信安全与飞书达成深度合作
近日,亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题,吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动,本场活动更加深入挖掘了数字化转型的基础…...
Spring框架特性及包下载(Java EE 学习笔记04)
1 Spring 5的新特性 Spring 5是Spring当前最新的版本,与历史版本对比,Spring 5对Spring核心框架进行了修订和更新,增加了很多新特性,如支持响应式编程等。 更新JDK基线 因为Spring 5代码库运行于JDK 8之上,所以Spri…...
.net 8使用hangfire实现库存同步任务
C# 使用HangFire 第一章:.net Framework 4.6 WebAPI 使用Hangfire 第二章:net 8使用hangfire实现库存同步任务 文章目录 C# 使用HangFire前言项目源码一、项目架构二、项目服务介绍HangFire服务结构解析HangfireCollectionExtensions 类ModelHangfireSettingsHttpAuthInfoUs…...
python VS c++
一、语法特点 Python: 语法简洁、优雅,代码可读性极强,采用缩进来表示代码块,摒弃了像 C 那样使用大括号的传统方式,使得代码看上去十分清晰简洁。例如: if 5 > 3:print("5大于3") elif 5 …...
windows C#-属性
属性提供了一种将元数据或声明性信息与代码(程序集、类型、方法、属性等)关联的强大方法。将属性与程序实体关联后,可以使用称为反射的技术在运行时查询该属性。 属性具有以下属性: 属性将元数据添加到您的程序中。元数据是有关程序中定义的类型的信息…...
Redis常见面试题总结(上)
Redis 基础 什么是 Redis? Redis (REmote DIctionary Server)是一个基于 C 语言开发的开源 NoSQL 数据库(BSD 许可)。与传统数据库不同的是,Redis 的数据是保存在内存中的(内存数据库…...
小鹏汽车智慧材料数据库系统项目总成数据同步
1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构: 这几个表总数为100多万,经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图: 界面: SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…...
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计 简介 在前端开发的世界里,HTML5和CSS3是构建现代网页的基石。本文将通过一个简单的HTML5页面模板,展示如何使用HTML5的结构化元素和CSS3的样式特性,来创建一个…...
论文阅读:A fast, scalable and versatile tool for analysis of single-cell omics data
Zhang, K., Zemke, N.R., Armand, E.J. et al. A fast, scalable and versatile tool for analysis of single-cell omics data. Nat Methods 21, 217–227 (2024). 论文地址:https://doi.org/10.1038/s41592-023-02139-9 代码地址:https://github.com…...
【从零开始的LeetCode-算法】43. 网络延迟时间
有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,…...
一文理解 Python 编程语言中的 .strip() 方法
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ Python 中的 strip() 方法:初学者友好指南 在 Python 中,strip() 是一个极为实用的字符串方法,主要用于移除字符串首尾的特定字符。默认情况下,它会清除…...
solr 远程命令执行 (CVE-2019-17558)
漏洞描述 Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。Velocity是Apache基金会旗下的一个开源软件项目,旨在确保Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。 Apa…...
【cocos creator】下拉框
https://download.csdn.net/download/K86338236/90038176 const { ccclass, property } cc._decorator;type DropDownOptionData {optionString?: string,optionSf?: cc.SpriteFrame } type DropDownItemData {label: cc.Label,sprite: cc.Sprite,toggle: cc.Toggle }cccl…...
从 Llama 1 到 3.1:Llama 模型架构演进详解
编者按: 面对 Llama 模型家族的持续更新,您是否想要了解它们之间的关键区别和实际性能表现?本文将探讨 Llama 系列模型的架构演变,梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程,深入剖析了每个版本的技术创新&#…...
电话机器人的最佳应用
电话机器人的最佳应用 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 电话机器人在多个领域中都展现出了其独特的优势和广泛的应用前景。以下是对电话机器人最佳应用的详细归纳: 一、销售与营…...
[面试]-golang基础面试题总结
文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**:Go中new和make的区别 Channel什么是 Channel 的方向性?如何对 Channel 进行方向限制?Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…...
Fakelocation Server服务器/专业版 ubuntu
前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu(安装下载不再赘述) sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…...
Node.js的http模块:创建HTTP服务器、客户端示例
新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战(第2版)(Web前端技术丛书)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 要使用http模块,只需要在文件中通过require(http)引入即可。…...
Jackson 对象与json数据互转工具类JacksonUtil
下面是一个基于 Jackson 的工具类 JacksonUtil,用于在 Java 项目中实现对象与 JSON 数据之间的互相转换。该工具类具有简洁、易用、通用的特点。 package com.fy.common.util;import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core…...
【ArcGISPro】根据yaml构建原始Pro的conda环境
使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…...
对撞双指针(七)三数之和
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...
反向代理服务器的用途
代理服务器在网络中扮演着重要的角色,它们可以优化流量、保护服务器以及提高安全性。在代理服务器中,反向代理服务器是一种特殊类型,常用于Web服务器前,它具备多种功能,能够确保网络流量的顺畅传输。那么,让…...
一些好的AI技术学习平台和资料(动态更新)
1. 大模型 1.1 提示词(Prompt) 目前,大模型技术已经深入到工作生活的方方面面,各技术大厂的大模型也层出不穷,从开始的OpenAI一家独大,到当今世界的“百模大战”。从一些日常使用的角度来说,模…...
wireshark抓包分析HTTP协议,HTTP协议执行流程,
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包&#…...
路由缓存后跳转到新路由时,上一路由中的tip信息框不销毁问题解决
上一路由tip信息框不销毁问题解决 路由缓存篇问题描述及截图解决思路关键代码 路由缓存篇 传送门 问题描述及截图 路由缓存后跳转新路由时,上一个路由的tip信息框没销毁。 解决思路 在全局路由守卫中获取DOM元素,通过css去控制 关键代码 修改文…...
【Angular】async详解
在 Angular 中,async 关键字用于定义异步函数,通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码,从而更容易理解和维护。 基本用法 定义异步函数:使用 async 关键字。等待 Promise 解析:使用…...
springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码
springboot/ssm综合小区管理系统Java社区物业停车缴费系统web物业源码 基于springboot(可改ssm)htmlvue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…...
【51单片机】程序实验56.独立按键-矩阵按键
主要参考学习资料:B站【普中官方】51单片机手把手教学视频 前置知识:C语言 单片机套装:普中STC51单片机开发板A4标准版套餐7 码字不易,求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 独立按键按键介绍实验5 独立按键 矩…...
SAP 零售方案 CAR 系统的介绍与研究
前言 当今时代,零售业务是充满活力和活力的业务领域之一。每天,由于销售运营和客户行为,它都会生成大量数据。因此,公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…...
2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(2)
5.2 问题一模型的建立与求解 5.2.1 分析发展情况 为了更好地理解数据的变化趋势,利用matlab通过六个子图对宠物行业中的关键变量进行了可视化展示。 图 1. 宠物数量变化展示了 猫数量、狗数量 和 总宠物数量 在 2019-2023 年间的变化趋势。结果显示:猫的数量呈逐年上升的趋…...
嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点
目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…...
【数据库设计】软件系统需要同时设计注册日志表和登录日志表吗
是的,通常情况下,注册日志表和登录日志表是分别设计的,分别记录不同类型的事件信息。 注册日志表 记录用户的注册信息、注册方式以及是否成功等内容。登录日志表 记录用户每次登录的时间、IP 地址、设备信息、登录状态等内容。 尽管这两者看…...