网络编程 02:IP 地址,IP 地址的作用、分类,通过 Java 实现 IP 地址的信息获取
一、概述
记录时间 [2024-12-18]
前置文章:网络编程 01:计算机网络概述,网络的作用,网络通信的要素,以及网络通信协议与分层模型
本文讲述网络编程相关知识——IP 地址,包括 IP 地址的作用、分类,以及特殊的 IP 等。
IP 地址的作用在于唯一定位一台网络上的计算机。文章中通过 Java 编程,实现了 IP 地址的信息获取。
通过获取 IP 和端口,同时基于相关的网络协议,我们能实现不同计算机之前的通信。
二、IP 地址的分类
1. IPv4 / IPv6
IPv4 和 IPv6 是互联网协议(IP)的两个版本,用于定义数据在网络中的传输格式和寻址方式。
IPv6 作为 IPv4 的继任者被开发出来,以解决地址空间不足的问题,并引入了其他改进。
IPv4
IPv4(Internet Protocol version 4)
- 地址格式:
- IPv4 使用 32 位二进制数表示地址,例如
192.168.1.1
。 - 以点分十进制记法书写,每 8 位用
.
隔开,共 4 组,每组二进制都转换成十进制。 - 这种格式大约提供 43 亿个唯一的 IP 地址。其中30 亿都在北美,亚洲 4 亿,基本用尽了。
- IPv4 使用 32 位二进制数表示地址,例如
- 子网掩码:
- 使用子网掩码来区分网络部分和主机部分。
- 子网掩码同样由 32 位组成,例如,
255.255.255.0
表示前 24 位是网络部分。 - 在
192.168.1.0/24
子网中,前 24 位是网络部分。
- 广播地址:
- 每个子网都有一个广播地址,用于向该子网内的所有设备发送消息。
- 例如,在
192.168.1.0/24
子网中,广播地址是192.168.1.255
。
- 私有地址:
- 为了缓解公有 IP 地址的短缺,定义了私有地址范围,这些地址可以在内部网络中重复使用。
- NAT(网络地址转换):
- 由于 IPv4 地址资源有限,很多网络使用 NAT 技术,允许多个内部设备通过一个或少数几个公有 IP 地址访问互联网。
IPv6
IPv6(Internet Protocol version 6)
- 地址格式:
- IPv6 使用 128 位二进制数表示地址。
- 以冒号十六进制记法书写,每 16 位用
:
隔开,共 8 组,每组二进制都转换成十六进制。 - 例如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
,简化后的表示可以省略前导零和连续的零段,如2001:db8:85a3::8a2e:370:7334
。
- 地址空间:
- IPv6 设计时就考虑到了足够的地址空间,因此原则上不再需要 NAT。
- IPv6 提供了几乎无限的地址空间,每个设备都可以拥有一个全球唯一的 IP 地址。
- 相比于 IPv4 的优点:
- 多播支持:IPv6 对多播的支持更加高效,取消了广播概念,所有通信都基于单播或多播。
- 自动配置:IPv6 支持无状态地址自动配置(SLAAC),允许设备在没有 DHCP 服务器的情况下自动获取 IP 地址和其他网络设置。
- 移动性:IPv6 内置了对移动节点的支持,使得移动设备能够在不同网络之间无缝切换。
- 更好的头部格式:IPv6 头部比 IPv4 更简洁,去除了不必要的字段,并将选项移动到扩展头部,这有助于提高路由器处理效率。
- 安全性增强:IPv6 强制要求支持 IPsec(IP 安全协议),提高了通信的安全性。
2. 公网 / 私网
公网(互联网)
- 公网是指连接到全球互联网的网络;
- 其 IP 地址在全球范围内唯一;
- 可以直接通过互联网进行通信。
私网(局域网)
- 私网是指不直接连接到互联网的内部网络;
- 私网使用的是特定保留的 IP 地址段,可以在多个不同的私有网络中重复使用。
- 私网内的设备可以相互通信,如
192.168.x.x
,给组织内部使用,要考虑安全性。 - 通过 NAT 技术,私网中的多台设备可以通过同一个公网 IP 地址访问外部资源。
三、域名
-
域名是为了方便人类记忆而设计的,是人类可读的、层次化的名称,用于标识互联网上的资源或服务。例如,
www.example.com
。 -
IP 地址是计算机网络用来标识和定位设备的实际地址。
-
域名系统(Domain Name System, DNS)是一个分布式数据库,负责将域名转换为对应的 IP 地址。
-
域名解析:使用域名系统将域名转换为对应的 IP 地址的过程。
四、ABCDE 类地址
IPv4 地址被划分为 A、B、C、D、E 五个类别,其中 A、B、C 类主要用于单播传输,D 类用于组播传输,E 类保留为将来使用。
下面是这五个类别的详细划分。
1. A ~ C 类
A ~ C 类主要用于单播传输。
观察这个 IP 地址:192.168.1.1/24
,一共 4 个字节,包含网络部分和主机部分。
- 网络部分:
24
表示前 3 个字节表示网络; - 主机部分:剩下的 1 个字节表示主机。
根据网络部分和主机部分的不同表示,划分了 A、B、C 三类地址。
A 类
A 类:网络 1 + 主机 3(从左往右,下同)
- 例如
192.168.1.1/8
,适用于大型网络,能够支持大量的主机。 - 默认子网掩码:
255.0.0.0
B 类
B 类:网络 2 + 主机 2
- 例如
192.168.1.1/16
,适用于中型网络。 - 默认子网掩码:
255.255.0.0
C 类
C 类:网络 3 + 主机 1
- 例如
192.168.1.1/24
,适用于小型网络。 - 默认子网掩码:
255.255.255.0
2. D ~ E 类
D 类用于组播传输,E 类保留为将来使用。
- D 类:
- 主要用于组播(多播),即从一个源发送数据到多个接收者。
- 不使用传统的子网掩码,不遵循传统的网络部分和主机部分的划分方式。
- E 类:
- 目前主要保留用于实验和研究目的。
- 不使用传统的子网掩码,不遵循传统的网络部分和主机部分的划分方式。
3. A ~ E 类地址的范围
xxx
表示主机范围。
地址 | 二进制表示 | 十进制表示 |
---|---|---|
A 类 | 00000001.xxxxxxxx.xxxxxxxx.xxxxxxxx ~ 01111111.xxxxxxxx.xxxxxxxx.xxxxxxxx | 1.0.0.0 ~ 127.255.255.255 |
B 类 | 10000000.00000000.xxxxxxxx.xxxxxxxx ~ 10111111.11111111.xxxxxxxx.xxxxxxxx | 128.0.0.0 ~ 191.255.255.255 |
C 类 | 11000000.00000000.00000000.xxxxxxxx ~ 11011111.11111111.11111111.xxxxxxxx | 192.0.0.0 ~ 223.255.255.255 |
D 类 | 11100000.00000000.00000000.00000000 ~11101111.11111111.11111111.11111111 | 224.0.0.0 ~ 239.255.255.255 |
E 类 | 11110000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111 | 240.0.0.0 ~ 255.255.255.255 |
4. 第 1 个字节上的区别
十进制划分
从左数,第 1 个字节上,范围 0 ~ 255(十进制),A ~ E 类地址的划分如下。
二进制划分
从左数,第 1 个字节上,范围 00000001 ~ 11111111(二进制),A ~ E 类地址的划分如下。
- A 类:
0xxxxxxx
- B 类:
10xxxxxx
- C 类:
110xxxxx
- D 类:
1110xxxx
- E 类:
1111xxxx
xxx
才是它们的范围。例如,A 类 7 个 x
,范围 00000001 ~ 01111111。
五、特殊 IP 地址
特殊 IP 地址,是指在互联网协议(Internet Protocol, IP)中,具有特定用途或保留用于特殊目的的地址。
这些地址通常不能直接用于公共互联网上的常规通信。
以下是几种常见的特殊 IP 地址及其用途:
127.0.0.1
:回环地址,又名localhost
,用于标识本地主机,允许计算机上的程序与同一台计算机上的其他程序进行通信,不必通过网络接口卡。0.0.0.0
:表示 “本网络”,常用于默认网关配置。255.255.255.255
:有限广播地址,用于向本地网络中的所有设备发送数据。
六、代码实现
1. 检测网络
一些检测网络的方法
# 联网检查:ping 网络ip地址
ping baidu.com# 查看网络配置
ipconfig# 本机回环地址
ping 127.0.0.1
2. InetAddress 类
Java 提供的 InetAddress
类,用于实现网络应用程序。例如,可以获取 IP 地址。
InetAddress 类没有构造器,因此不能使用 new 关键字构造实例对象。
3. 测试 IP 地址
查询本机 IP 地址
查询本机 IP 地址的 3 种方式:
getByName("127.0.0.1")
:回环地址。getByName("localhost")
:回环地址。getLocalHost()
:主机名和主机的 IP 地址。
// InetAddress 是一个没有构造方法的类,所以直接用类名获取方法
// inetAddress1 就是获取到的一个 InetAddress 对象// 查询本机地址
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);InetAddress inetAddress3 = InetAddress.getByName("localhost");
System.out.println(inetAddress3);InetAddress inetAddress4 = InetAddress.getLocalHost();
System.out.println(inetAddress4);
查询网站 IP 地址
查询网站 IP 地址的方式:
- IP
- 域名
// 查询网站 IP 地址
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress2);
分析 IP 地址中的信息
注意:实际输出将依赖于 DNS 配置和当前的网络环境。
getAddress()
:返回一个字节数组,表示该InetAddress
对象的原始 IP 地址。getCanonicalHostName()
:返回该地址的规范主机名,即,完全限定域名,它包含了主机名和域名,可以唯一地标识网络上的一个设备或服务。getHostAddress()
:返回该InetAddress
对应的文本表示形式的 IP 地址,例如,192.0.2.1
(点分十进制)。getHostName()
:返回该InetAddress
对应的主机名。如果该对象是由 IP 地址创建的,可能会进行反向 DNS 查找以确定主机名(域名)。
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");// 一组地址
System.out.println(inetAddress2.getAddress());
// 规范的名字 IP
System.out.println(inetAddress2.getCanonicalHostName());
// IP
System.out.println(inetAddress2.getHostAddress());
// 域名、主机名
System.out.println(inetAddress2.getHostName());
4. 完整代码
// 测试 IP
public class TestInetAddress {public static void main(String[] args) {// InetAddress 是一个没有构造方法的类,所以直接用类名获取方法try {// 查询本机地址// inetAddress1 就是获取到的一个 ip 对象InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");System.out.println(inetAddress1);InetAddress inetAddress3 = InetAddress.getByName("localhost");System.out.println(inetAddress3);InetAddress inetAddress4 = InetAddress.getLocalHost();System.out.println(inetAddress4);// 查询网站 IP 地址InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");System.out.println(inetAddress2);// 一组地址System.out.println(inetAddress2.getAddress());// 规范的名字 IPSystem.out.println(inetAddress2.getCanonicalHostName());// IPSystem.out.println(inetAddress2.getHostAddress());// 域名、主机名System.out.println(inetAddress2.getHostName());} catch (UnknownHostException e) {e.printStackTrace();}}
}
参考资料
狂神说 - 网络编程:https://www.bilibili.com/video/BV1LJ411z7vY
Java 8 帮助文档:https://docs.oracle.com/javase/8/docs/api/
相关文章:
网络编程 02:IP 地址,IP 地址的作用、分类,通过 Java 实现 IP 地址的信息获取
一、概述 记录时间 [2024-12-18] 前置文章:网络编程 01:计算机网络概述,网络的作用,网络通信的要素,以及网络通信协议与分层模型 本文讲述网络编程相关知识——IP 地址,包括 IP 地址的作用、分类ÿ…...
小红书笔记详情API接口:解锁社交媒体商业价值的钥匙
在当今数字化时代,社交媒体平台已成为企业营销和品牌推广的重要渠道。小红书,作为一个以内容分享为核心的社交媒体平台,汇聚了大量用户和创作者,他们在这里分享生活心得、购物体验、美妆技巧等多元化内容。小红书笔记详情API接口&…...
达梦查询表字段详细信息脚本(字段名称、描述、类型、长度及是否为空)
达梦查询表字段详细信息脚本(字段名称、描述、类型、长度及是否为空) 该SQL 脚本,用于查询表中字段的基本信息,包括字段名称、描述、数据类型、数据长度、是否为空及是否为主键等属性。 SQL 脚本 -- 输入变量 DECLAREp_owner VA…...
群落生态学研究进展】Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用
联合物种分布模型(Joint Species Distribution Modelling,JSDM)在生态学领域,特别是群落生态学中发展最为迅速,它在分析和解读群落生态数据的革命性和独特视角使其受到广大国内外学者的关注。在学界不同研究团队研发出…...
CSS 语法
CSS 语法 CSS(层叠样式表)是一种用于描述HTML或XML文档样式的样式表语言。它允许您将样式信息与文档内容分离,从而更有效地控制网页的布局和外观。本文将详细介绍CSS的基本语法和结构,帮助您更好地理解和应用CSS。 CSS的基本结构 CSS由一系列的规则组成,每个规则包含一…...
【区块链】区块链密码学基础
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 区块链密码学基础引言一、哈希函数1.1 基本概念1.2 数学表达 二、非对称加密2.1…...
ik分词器了解 和 通过zip安装包的方式 将ik分词器安装到elasticsearch中
目录 1. ik分词器的作用(效果) (1)标准分析器效果 (2)ik_smart分词 (3)ik_max_word分词 2. 首先根据自己的elasticsearch的版本下载对应的ik分词器版本 3. 将下载好的ik分词器…...
【数字化】华为数字化转型架构蓝图
导读:华为的数字化转型规划团队在2016年年底基于对愿景的系统诠释,整合出了数字化转型架构蓝图。该蓝图共分为5层,旨在通过数字化转型实现客户交互方式的转变、作战方式的转变、公司各平台业务能力的数字化、服务化以及运营模式的转变。 目录…...
K8s中 statefulset 和deployment的区别
在 Kubernetes 中,StatefulSet 和 Deployment 是两种管理 Pod 的控制器,它们的主要区别在于 状态管理 和 Pod 的标识。以下是详细对比: 1. 功能定位 Deployment 用途:用于 无状态应用 的部署,例如 Web 服务、API 服务…...
C#多线程系列章节五
线程创建的几种写法 thread类 threadpool 线程池 task类 Thread t = new Thread(func); t.Start();//线程开始执行threadPool.QueueUserWorkItem(test)创建var t1 = new Task(() => test(“Task 1”));t.start();Task.Run(() => test(“Task 2”));Task.Factory.StartNew…...
了解 JVM 运行原理,掌握常见的内存模型以及性能调优的基本方法
JVM运行原理概述 Java Virtual Machine (JVM) 是 Java 程序运行的核心组件,它的运行机制包括加载字节码、字节码解释或编译成本地机器代码执行。下面是 JVM 的运行流程和核心部分: JVM 的运行机制 类加载(Class Loading)…...
游戏AI实现-寻路算法(DFS)
深度优先搜索算法(英语:Depth-First-Search,缩写为DFS)是一种用于遍历或搜索树或图的算法。 寻路地图搭建: 游戏AI实现-寻路地图搭建-CSDN博客 算法过程:遍历方向为从竖直向上沿顺时针方向 1.首先将开…...
Qlib专为AI而生的量化投资平台
1、三层 Infrastructure层 该层为量化研究提供了基础支持。Data Server模块为用户管理和检索原始数据提供了高性能的基础架构。Trainer模块提供了灵活的接口来定义模型的训练过程,同时也为分布式训练提供了接口。Model Manager模块可以让用户更好地管理繁多的AI模型…...
圣乔ERP系统downloadFile.action存在任意文件读取漏洞
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
YOLOv11改进,YOLOv11添加DLKA-Attention可变形大核注意力,WACV2024 ,二次创新C3k2结构
摘要 作者引入了一种称为可变形大核注意力 (D-LKA Attention) 的新方法来增强医学图像分割。这种方法使用大型卷积内核有效地捕获体积上下文,避免了过多的计算需求。D-LKA Attention 还受益于可变形卷积,以适应不同的数据模式。 理论介绍 大核卷积(Large Kernel Convolu…...
深入解析 `DataFrame.groupby` 和 `agg` 的用法及使用场景
深入解析 DataFrame.groupby 和 agg 的用法及使用场景 1. groupby 的基本用法语法:示例: 2. agg 的基本用法语法:示例: 3. first、sum、lambda 的用法3.1 first示例: 3.2 sum示例: 3.3 lambda示例ÿ…...
用.Net Core框架创建一个Web API接口服务器
我们选择一个Web Api类型的项目创建一个解决方案为解决方案取一个名称我们这里选择的是。Net 8.0框架 注意,需要勾选的项。 我们找到appsetting.json配置文件 appsettings.json配置文件内容如下 {"Logging": {"LogLevel": {"Default&quo…...
[论文阅读]Universal and transferable adversarial attacks on aligned language models
Universal and transferable adversarial attacks on aligned language models http://arxiv.org/abs/2307.15043 图 1:Aligned LLMs 不是对抗性 Aligned。我们的攻击构建了一个单一的对抗性提示,该提示始终绕过最先进的商业模式(包括 ChatG…...
【自动化】Python SeleniumUtil 油猴 工具 自动安装用户脚本
【自动化】Python SeleniumUtil 油猴 工具 【自动化】Python SeleniumUtil 工具-CSDN博客【自动化】Python SeleniumUtil 工具。https://blog.csdn.net/G971005287W/article/details/144565691 油猴工具 import timefrom selenium.webdriver.support.wait import WebDriverW…...
[LeetCode-Python版]21. 合并两个有序链表(迭代+递归两种解法)
题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输出&#x…...
WPF 相比 winform 的优势
wpf 相比 winform 的一些优点,网上也是众说纷纭,总的来说包括下面几点: 丰富的视觉效果:能够创建更具吸引力和现代化的用户界面,支持更复杂的图形和动画效果。不需要像 winform 一样,稍微做一点效果&#x…...
机器学习预处理-表格数据的分析与可视化
机器学习预处理-表格数据的分析与可视化 最近在做一些模型部署的工作,但是发现对于数据的处理、分析、训练方面还是缺少一些系统的学习,因此抽空余时间分析总结一些使用python进行数据处理的实用案例,希望能够方便自己已经其他人的Ctrl CV。…...
Linux——Shell
if 语句 格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi 单分支 if 条件表达式; then 命令 fi 示例: #!/bin/bash N10 if [ $N -gt 5 ]; then echo yes fi # bash test.sh yes 双分支 if 条件表达式; then 命令 else 命令…...
《深入探究:C++ 在多方面对 C 语言实现的优化》
目录 一、C 在 C 上进行的优化二、C 关键字(C 98)三、C 的输入输出1. cin 和 cout 的使用2. cin、cout 和 scanf()、printf() 的区别 三、命名空间1. 命名空间的使用2. 嵌套命名空间3. 在多个头文件中使用相同的命名空间 四、函数缺省值1. 缺省值的使用2…...
KeepAlive与RouterView缓存
参考 vue动态组件<Component>与<KeepAlive> KeepAlive官网介绍 缓存之keep-alive的理解和应用 Vue3Vite KeepAlive页面缓存问题 vue多级菜单(路由)导致缓存(keep-alive)失效 vue3 router-view keeperalive对于同一路径但路径…...
pyparsing restOfLine
在 pyparsing 中,restOfLine 是一个解析器(parser),用于匹配当前位置到行尾的所有内容,通常在解析文件或处理逐行数据时非常有用。 restOfLine 的特性 匹配内容:从当前位置一直匹配到换行符 \n 或字符串结…...
回型矩阵:JAVA
解题思路: 通过定义四条边界;top,left,right,bottom,来循环,当top>bottom&&left>right的时候循环终止 循环结束的条件: 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述…...
React自学:如何使用localStorage,以及如何实现删除笔记操作
1. 初始化notes 以下这段代码完成了这些操作: 调用 localStorage.getItem("notes") 从浏览器的本地存储中获取名为 “notes” 的数据。使用 JSON.parse 将获取到的字符串解析成数组。如果本地存储中没有 “notes” 数据(返回值为 null&#…...
【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(上)——使用多个颜色节点
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点(上) ✔️13.1.2 颜色插值方法(中)13.1…...
汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生
智能汽车产业链“剧变”已经开启,智能感知软硬件能力的权重正在不断被放大。 比如满足高阶泊车的第二代AK2超声波传感器、满足人机共驾场景需求的电子外后视镜(CMS)、iTOF 3D成像视觉感知(用于舱内监控)等新产品&…...
3大Excel免费功能
推荐几个免费excel图表绘制工具 Power Map Power Map是Excel的内置功能 Power Map可在Windows用户的Excel 2013或者Excel 2016或者Office 365中使用,如下图, 看案例 动态地图1 动态地图2...
linux centos 7 安装 mongodb7
MongoDB 是一个基于文档的 NoSQL 数据库。 MongoDB 是一个文档型数据库,数据以类似 JSON 的文档形式存储。 MongoDB 的设计理念是为了应对大数据量、高性能和灵活性需求。 MongoDB使用集合(Collections)来组织文档(Documents&a…...
docker 安装 mongo 命令
## 拉取 MongoDB 镜像docker pull mongo:latest## 挂载文件目录:mkdir -p /usr/local/mongo/configmkdir -p /usr/local/mongo/datamkdir -p /usr/local/mongo/logstouch /usr/local/mongo/config/mongod.confchmod 777 /usr/local/mongo## 配置文件##vim …...
问题记录:CH592 PB6/PB10中断输入,无法从掉电模式唤醒
问题描述: PB6上拉输入,连接按键 PB10上拉输入,连接外部充电芯片状态管脚。不充电时开漏输出,充电时低电平 配置PB6和PB10为上拉输入,下降沿触发中断,然后进入掉电模式 理论上: PB6按键触发…...
搭建分布式Spark集群
title: 搭建分布式Spark集群 date: 2024-11-29 12:00:00 categories: - 服务器 tags: - Spark - 大数据搭建分布式Spark集群 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、scala-2.11.5、Spark-3.2.1 功能规划 MasterSlave1Slave2主节点…...
BTP Integration Suite CPI Apache Camel
官网文档: https://help.sap.com/docs/integration-suite/sap-integration-suite/what-is-sap-integration-suite CPI 云集成(CPI)有以下几个特性: SAP Cloud Integration通过消息交换支持端到端流程集成。 它基于Apache软件基金会的开源框架Camel。 …...
Vue-Form-Making:Star5.5k,一款强大的Vue表单设计器,适用于低代码平台、自定义表单
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Vue-Form-Making是一个开源的Vue表单设计器,它允许用户通过拖拽方式快速生成表单,支持多种表单组件和布局。 核心功能 1. 拖拽…...
使用 Vite 和 Redux Toolkit 创建 React 项目
文章目录 1. 创建 React 项目2. 安装依赖3. 创建状态仓库user.js创建 shopSlice 4. 在状态仓库中合并切片5. 在入口文件中导入并使用 store6. 获取切片中的数据7. 修改数据结尾 在本教程中,我们将通过使用 Vite 创建一个 React 项目,并结合 Redux Toolki…...
jmeter连接mysql
查询mysql数据库版本 SELECT VERSION(); 下载jmeter mysql 驱动jar包,版本低于mysql版本,放在jmeter的lib 路径下 MySQL :: Download MySQL Connector/J (Archived Versions) 添加JDBC Connection Configuration 填写 variable name 及数据库信息 注意…...
sql中case when若条件重复 执行的顺序
sql case when若条件重复 执行的顺序 在 SQL 中,如果你在 CASE 表达式中定义了多个 WHEN 子句,并且这些条件有重叠,那么 CASE 表达式的执行顺序遵循以下规则: (1)从上到下:SQL 引擎会按照 CASE …...
代码随想录算法训练营第五十天 | 图 | 并查集
Day 50 总结 自己实现中遇到哪些困难今日收获,记录一下自己的学习时间 15:00 - 16:0018:00 - 19:45 图论 深度收缩 & 广度搜索 BFS, DFS, visited数组, 四个方向并查集 数组代表链表, 用集合中的一个元素代表集合的根最小生成树拓扑排序最短路径算法 图论基…...
tryhackme——Pre Security(安检前)-Offensive Security(进攻性安全)
这里我用的edge的插件闪击翻译。这里我英语不好,所以用这个可以顺便学习下英语。 任务一:What is Offensive Security?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…...
vue iframe进行父子页面通信并切换URL
使用通义千问提问后得到一个很好的示例。 需求是2个项目需要使用同一个面包屑进行跳转,其中一个是iframe所在的项目,另一个需要通过地址访问。通过 window.parent.postMessage ,帮助 <iframe> 内嵌入的子页面和其父页面之间进行跨域通…...
Cesium 无人机航线规划(区域航线)
区域航线,即划定一片区域一键巡查 这里选择点几个点,形成的区域内计算规划航线...
[NOIP2016 普及组] 海港 -STL-队列queue
[NOIP2016 普及组] 海港 题目背景 NOIP2016 普及组 T3 题目描述 小 K 是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。 小 K 对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一…...
前端页面导出word
html-docx-js bug: vite使用html-docx.js会报错,点击下载上方文件替换即可 正文 npm install html-docx-js -S npm install file-saver -S<template><div id"managerReport">word内容......</div> </template><script>&l…...
C++中的深拷贝和浅拷贝
浅拷贝 浅拷贝:就是简单的赋值操作。 浅拷贝问题:如果有指针指向堆区内存时,不同对象的指针成员指向同一块堆区内存,当对象释放时,该堆区内存会被释放两次。当一个对象修改堆区内存是,另一个对象也随之变…...
MobileLLM开发安卓AI的体验(一)
MobileLLM是一个在安卓端跑的大语言模型,关键它还有调动api的能力 https://github.com/facebookresearch/MobileLLM 项目地址是这个。 看了下,似乎还是中国人团队 article{liu2024mobilellm, title{MobileLLM: Optimizing Sub-billion Parameter Langua…...
MySQL的并发控制与MVCC机制深度解析
目录 1. MySQL中的并发问题2. 数据库的隔离级别3. MVCC(多版本并发控制)机制3.1 MVCC的实现原理3.2 Read View详解3.3 当前读与快照读 4. MVCC在不同隔离级别下的工作方式5. MVCC解决幻读问题6. MVCC的优缺点优点:缺点: 7. MVCC在…...
搭建Tomcat(六)---Response的实现
目录 引入 一、前端项目容器的搭建 重建项目: 1.创建一个新的项目: 2.创建HTML文件 3.将先前编写的所有tomcatJava文件挪过来 二、配置java文件 1.重启一下MyTomcat 2.配置两个工具包 ①FileUtil ②ResponseUtil(响应头) 三、处理…...