当前位置: 首页 > news >正文

数据结构程序设计——哈希表的应用(2)->哈希表解决冲突的方法

目录

实验须知

代码实现

实验报告

一:问题分析

二、数据结构

1.逻辑结构

2.物理结构

三、算法

(一)主要算法描述

1.用除留余数法构造哈希函数 

2.线性探测再散列法 

(一)主要算法实现代码

四、上机调试


实验须知

实验目的: 深入理解哈希表解决冲突的办法。
实验内容: 针对自己所在班级中学生姓名设计一个哈希表,使得平均查找长度不超过 R ,并完成相应的建表和查表程序。
实验要求:
1 )创建名为 kcsj19.cpp 的文件,在其中编写哈希查找学生姓名的程序;
2 )假设学生姓名为中国人姓名的汉语拼音形式。待填入哈希表的学生姓名共有 30 个,取平均查找 长度的上限为 2 。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突;
3 )测试数据:取读者周围较熟悉的 30 个学生姓名。

代码实现

import java.util.Arrays;
import java.util.Scanner;public class Kcsj19 {private static final int TABLE_SIZE = 61;  // 哈希表的大小,选择质数可以减少冲突private String[] table;public Kcsj19() {table = new String[TABLE_SIZE];Arrays.fill(table, "");}// 哈希函数:除留余数法private int hashFunction(String key) {int hashValue = 0;for (char ch : key.toCharArray()) {hashValue = (hashValue * 31 + ch) % TABLE_SIZE;}return hashValue;}// 线性探测再散列法private int linearProbe(int index, int attempt) {return (index + attempt) % TABLE_SIZE;}// 插入元素private void insert(String name) {int index = hashFunction(name);int attempt = 0;while (!table[index].isEmpty()) {attempt++;index = linearProbe(index, attempt);}table[index] = name;}// 查找元素private boolean search(String name) {int index = hashFunction(name);int attempt = 0;while (!table[index].isEmpty()) {if (table[index].equals(name)) {System.out.println("学生姓名 " + name + " 在哈希表中。");return true;}attempt++;index = linearProbe(index, attempt);}System.out.println("学生姓名 " + name + " 不在哈希表中。");return false;}// 打印哈希表private void displayTable() {for (int i = 0; i < TABLE_SIZE; i++) {if (!table[i].isEmpty()) {System.out.println("哈希表[" + i + "]: " + table[i]);}}}public static void main(String[] args) {Kcsj19 hashTable = new Kcsj19();// 待填入哈希表的学生姓名String[] students = {"蔡开俊", "陈恒", "陈慧强", "董彪", "冯迪", "冯伟宇", "谷婉如","韩欣言", "何继翔","李宝才", "李琳琳", "李现珍", "李向阳", "李毅琛", "路亚博","路政睿" ,"孙志坤","王龙杰","王蕊", "王艺涵", "薛获宇", "元亚捷", "岳婧婧", "詹思航", "张浩","张恒", "张佳熙", "张锦彩", "张梦娇", "张轩硕"};// 插入学生姓名到哈希表for (String student : students) {hashTable.insert(student);}// 打印哈希表hashTable.displayTable();// 测试查找学生姓名Scanner scanner = new Scanner(System.in);// 判断学生姓名是否存在于哈希表中while(true) {System.out.print("请输入学生姓名(输入exit退出):");String inputName = scanner.nextLine();if (inputName.equalsIgnoreCase("exit")) {System.out.println("程序已退出。");break;}hashTable.search(inputName);}}
}

实验报告

一:问题分析

描述问题该实验可归结为哈希表的建表和查表功能的实现。用除留余数法构建哈希表,把学生姓名以汉语拼音的形式储存在哈希表中,当发生冲突时,会使用线性探测再散列法在哈希表中的下一个位置继续搜索直到找到空槽。解决该问题的方法和思路:使用除留余数法构造哈希表,然后向表中添加学生姓名,如果在插入和查找的过程中发生冲突用线性探测散列法解决冲突。

二、数据结构

1.逻辑结构

哈希表的应用实习项目的逻辑结构是一个大小为TABLE_SIZE的数组,每个数组元素都可以存储一个学生姓名。哈希函数将学生姓名转化成一个数组索引,然后在该索引位置上插入或查找学生姓名。当插入学生姓名时,如果对应的数组索引位置已经被占用,则使用线性探测再散列法来寻找下一个可用的位置。当查找学生姓名时,根据哈希函数得到学生姓名对应的数组索引,然后根据线性探测再散列法依次检查该索引位置及其后续位置,直到找到匹配的学生姓名或者遇到空位置为止。

2.物理结构

物理结构采用的是顺序存储结构。

三、算法

(一)主要算法描述

1.用除留余数法构造哈希函数 

(1)哈希函数的输入是一个字符串key,它使用了一个for循环遍历 字符串key的每个字符,并结合当前的哈希值hashValue进行计算。具体的计算公式是:hashValue=(hashValue * 31+ch)%TABLE_SIZE。
(2)其中,ch表示当前字符的ASCII值。乘以31是为了增加哈希函数的散列性能,使得不同的字符组合能够得到不同的哈希值。最后取余数TABLE_SIZE 是将哈希值限定在哈希表的大小范围内,以确保插入和查询的正确性。
(3)然后,根据这个哈希值,确定存储学生姓名的位置(索引)在哈希表中的哪个位置。最终,将学生姓名保存在哈希表的相应位置上。

2.线性探测再散列法 

(1)代码中使用了线性探测再散列法来处理哈希冲突。在插入元素和查找元素的方法中,通过不断尝试下一个位置来解决冲突。如果当前位置已经被占用,就尝试下一个位置,直到找到一个空闲的位置或者遍历完整个哈希表。
(2)linearProbe方法接受两个参数:index表示原始的哈希值对应的索引,attempt表示当前的探测次数。通过将原始索引index和探测次数attempt相加,并对TABLE_SIZE取模,得到一个新的索引值。这个新的索引值即为通过线性探测法计算得到的下一个位置。
(3)在插入元素的方法中,先把通过学生姓名计算出的哈希值赋值给index,此时设置探测次数attempt为0,如果哈希表在index位置不为空那么attempt加一,再用linearProbe方法来计算下一个位置,即(index+attempt) % TABLE_SIZE。如果哈希表在index位置为空的话,就把学生姓名添加到哈希表中。
(4)在查找元素的方法中,首先通过调用hashFunction 哈希函数来计算给定学生姓名的哈希值,并将其赋值给index变量。然后,设置初始的探测次数attempt 为0。接下来,使用一个循环来判断哈希表在index位置是否为空。如果不为空,则进入循环体。在循环体中,首先判断哈希表在index位置的值与目标姓名是否相等。如果相等,说明找到了目标姓名,将相关信息打印出来,并返回true表示找到了目标。如果不相等,则增加attempt的值,并使用linearProbe方法计算下一个探测位置。linearProbe方法使用线性探测再散列法的思想,通过(index + attempt)%TABLE_SIZE的计算来获取下一个探测位置。当哈希表在index位置为空时,说明未找到目标姓名,将相关信息打印出来,并返回false表示未找到目标。

(一)主要算法实现代码

1.用除留余数法构建哈希表 
private int hashFunction(String key) {int hashValue = 0;for (char ch : key.toCharArray()) {hashValue = (hashValue * 31 + ch) % TABLE_SIZE;}return hashValue;}
2.线性探测再散列法解决冲突  
private int linearProbe(int index, int attempt) {return (index + attempt) % TABLE_SIZE;
}
3.向哈希表中插入元素
private void insert(String name) {int index = hashFunction(name);int attempt = 0;while (!table[index].isEmpty()) {attempt++;index = linearProbe(index, attempt);}table[index] = name;
}
4.在哈希表中查找元素
private boolean search(String name) {int index = hashFunction(name);int attempt = 0;while (!table[index].isEmpty()) {if (table[index].equals(name)) {System.out.println("学生姓名 " + name + " 在哈希表中。");return true;}attempt++;index = linearProbe(index, attempt);}System.out.println("学生姓名 " + name + " 不在哈希表中。");return false;}

四、上机调试

问题1: 输入exit并不会退出程序,而是输出“学生姓名exit不在哈希表中”。

图2 无法退出程序

解决办法:出现这种情况的原因是使用“==”来判断两个字符串是否相等,要比较两个字符串的内容是否相等,可以使用equals方法,或者equalsIgnoreCase方法(可以忽略大小写)。

图3 使用equalsIgnoreCase方法比较字符串是否相同

问题2:哈希表的存储与哈希值有关, 如何获取字符串的哈希值, 进行存储。
解决办法:对于输入的字符串key,遍历其中的每个字符ch,将hashValue乘以31后加上ch的ASCII码值,并取模TABLE_SIZE,得到新的哈希值。

问题3: 出现空指针异常。

 图4出现空指针异常

解决办法:出现异常的原因是没有对数组进行初始化。使用Arrays.fill()方法将数组中所有元素赋值为空字符串,避免在插入或查找元素时出现值null, 因为如果数组元素为null,那么在调用字符串方法时,就会抛出空指针异常。

图5对数组进行初始化

相关文章:

数据结构程序设计——哈希表的应用(2)->哈希表解决冲突的方法

目录 实验须知 代码实现 实验报告 一&#xff1a;问题分析 二、数据结构 1.逻辑结构 2.物理结构 三、算法 &#xff08;一&#xff09;主要算法描述 1.用除留余数法构造哈希函数 2.线性探测再散列法 &#xff08;一&#xff09;主要算法实现代码 四、上机调试 实…...

微信小程序开发系列-07组件

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…...

JavaScript 中 Set 和 Map 的区别

JavaScript 中的 Set 和 Map 都是用来存储数据的数据结构&#xff0c;它们之间的区别如下&#xff1a; Set 是一组唯一值的集合&#xff0c;而 Map 是一组键值对的集合。Set 中的值是唯一的&#xff0c;不允许重复&#xff1b;Map 中的键是唯一的&#xff0c;值可以重复。Set …...

web前端之JavaScript

MENU JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略JavaScript之数组静态方法的实现、reduce、forEach、map、push、every JavaScript之设计模式、单例、代理、装饰者、中介者、观察者、发布订阅、策略 单例模式 概念 保证一个类仅有一个实例&am…...

C# 图标标注小工具-查看重复文件

目录 效果 项目 代码 下载 效果 项目 代码 using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Windows.Forms;namespace ImageDuplicate {public partial clas…...

浅谈冯诺依曼体系和操作系统

&#x1f30e;冯诺依曼体系结构 文章目录 冯诺依曼体系结构 认识冯诺依曼体系结构       硬件分类       各个硬件的简单认识         输入输出设备         中央处理器         存储器 关于内存 对冯诺依曼体系的理解 操作系统 操作系统…...

Good Bye 2023

Good Bye 2023 Good Bye 2023 A. 2023 题意&#xff1a;序列a中所有数的乘积应为2023&#xff0c;现在给出序列中的n个数&#xff0c;找到剩下的k个数并输出&#xff0c;报告不可能。 思路&#xff1a;把所有已知的数字乘起来&#xff0c;判断是否整除2023&#xff0c;不够…...

多开工具对手机应用响应速度的优化与改进

多开工具对手机应用响应速度的优化与改进 摘要&#xff1a; 如今&#xff0c;手机应用的多样化和个性化需求不断增长&#xff0c;用户对应用的响应速度要求也越来越高。为了满足用户的需求&#xff0c;开发者们使用了多种技术手段进行应用的优化和改进。其中&#xff0c;多开工…...

文件批量整理,文件归类整理,文件批量归类

我们每天都要面对无数的文件&#xff0c;从工作报告、个人照片到电影和音乐。如何有效地管理和归类这些文件&#xff0c;成为了我们日常生活和工作中所要处理的。今天&#xff0c;小编就给大家介绍一款简单易用的工具——文件批量改名高手&#xff0c;助你轻松实现文件批量归类…...

Python+Django+Mysql+SimpleUI搭建后端用户管理系统(非常详细,每一步都清晰,列举了里面所有使用的方法属性)

一、在Anaconda环境下创建虚拟环境 &#xff08;1&#xff09;打开Anaconda Prompt(install)&#xff0c;创建虚拟环境&#xff0c;如下图所示&#xff1a; 方法一&#xff1a;默认情况下虚拟环境创建在Anaconda安装目录下的envs文件夹中 conda create --name usermanage …...

【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】

Qt编程指南 ■ Label■ QLabel■ QMovie 显示动画■ Widget■ QWidget■ QTabWidget■ QTableWidget■ QListWidget■ QStackedWidget■ QCalendarWidget■ QFrame■ QFrame■ View■ QT...

11|代理(上):ReAct框架,推理与行动的协同

11&#xff5c;代理&#xff08;上&#xff09;&#xff1a;ReAct框架&#xff0c;推理与行动的协同 在之前介绍的思维链&#xff08;CoT&#xff09;中&#xff0c;我向你展示了 LLMs 执行推理轨迹的能力。在给出答案之前&#xff0c;大模型通过中间推理步骤&#xff08;尤其…...

毫秒格式化

## 计算当前毫秒数&#xff1a; const [start,setStart] useState(new Date().getTime())useEffect(()>{setInterval(()>{setCurrMill(new Date().getTime()-start)},1)},[]) ## 格式化毫秒 function formatMilliseconds(milliseconds) {const totalSeconds Math.flo…...

pytorch与cuda版本对应关系汇总

pytorch与cuda版本关系 cuda版本支持pytorch版本cuda10.21.5 ~ 1.12cuda11.01.7 ~ 1.7.1cuda11.11.8 ~ 1.10.1cuda11.31.8.1 ~ 1.12.1cuda11.61.12.0 ~ 1.13.1cuda11.71.13.0 ~ 2.0.1cuda11.82.0.0 ~ 2.1.1cuda12.12.1.0 ~ 2.1.1 cuda 与 cudnn关系 cuda版本支持cudnn版本cu…...

Linux系统下隧道代理HTTP

在Linux系统下配置隧道代理HTTP是一个涉及网络技术的话题&#xff0c;主要目的是在客户端和服务器之间建立一个安全的通信通道。下面将详细解释如何进行配置。 一、了解基本概念 在开始之前&#xff0c;需要了解几个关键概念&#xff1a;代理服务器、隧道代理和HTTP协议。代理…...

unity学习笔记----游戏练习03

一、修复植物种植的问题 1.当手上存在植物时&#xff0c;再次点击卡片上的植物就会在手上添加新的植物&#xff0c;需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…...

VistualStudio查看类图UML

点击菜单栏中的工具–》获取工具和功能。 然后在资源管理器中对应的代码中鼠标右键选择查看类图 生成一个ClassDiagram.cd文件就是类图的文件了。 根据需要拖拽就可以生成类图了。...

elasticsearch系列九:异地容灾-CCR跨集群复制

概述 起初只在部分业务中采用es存储数据&#xff0c;在主中心搭建了个集群&#xff0c;随着es在我们系统中的地位越来越重要&#xff0c;数据也越来越多&#xff0c;针对它的安全性问题也越发重要&#xff0c;那如何对es做异地容灾呢&#xff1f; 今天咱们就一起看下官方提供的…...

基于Java网上点餐系统设计与实现

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…...

公司电脑文件加密系统——防止内部核心文件数据 | 资料外泄,自动智能透明加密保护

一套从源头上保障企业电脑数据安全和电脑使用安全的加密软件。天锐绿盾加密软件包含了表格数据加密、图纸加密、文档文件加密、内网文件加密流转、密级管控、电脑离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。天锐绿盾加密系统全面覆盖Mac、Win…...

计算机毕业设计------ssm茶叶溯源系统

项目介绍 茶叶溯源系统&#xff0c;分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色&#xff0c;管理员与经销商&#xff1b; 管理员主要功能包括&#xff1a; 主界面&#xff1b; 管理员管理&#xff1a;管理员列表、添加管理员&am…...

【网络安全 | Misc】miss_01 太湖杯

解压时提示输入密码&#xff1a; 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0&#xff0c;另存为123.zip&#xff1a; 即可绕过加密&#xff1a; 得到一个zip一个docx&#xff0c;但zip需要密码&#xff1a; 因此看docx有无敏感信息&#x…...

【深度学习目标检测】十一、基于深度学习的电网绝缘子缺陷识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…...

《深入理解C++11:C++11新特性解析与应用》笔记六

第六章 提高性能及操作硬件的能力 6.1 常量表达式 6.1.1 运行时常量性与编译时常量性 大多数情况下&#xff0c;const描述的是运行时常量性&#xff0c;也即是运行时数据的不可更改性。但有时候我们需要的却是编译时的常量性&#xff0c;这是const关键字无法保证的。例如&am…...

C# 基于事件的观察者模式

观察者模式是一种软件设计模式&#xff0c;用于定义对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖者&#xff08;观察者&#xff09;都将得到通知并自动更新。这种模式通过解耦合主题和观察者来提高对象的灵活性。 定义 观察者模式…...

ARM CCA机密计算软件架构之软件堆栈概述

Arm CCA平台通过硬件添加和固件组件的混合方式实现,例如在处理元素(PEs)中的RME以及特定的固件组件,特别是监视器和领域管理监视器。本节介绍Arm CCA平台的软件堆栈。 软件堆栈概述 领域VM的执行旨在与Normal world(正常世界)隔离,领域VM由Normal world Host(正常世界…...

《Python机器学习原理与算法实现》学习笔记

以下为《Python机器学习原理与算法实现》&#xff08;杨维忠 张甜 著 2023年2月新书 清华大学出版社&#xff09;的学习笔记。 根据输入数据是否具有“响应变量”信息&#xff0c;机器学习被分为“监督式学习”和“非监督式学习”。 “监督式学习”即输入数据中即有X变量&…...

k8s集群通过helm部署skywalking

1、安装helm 下载脚本安装 ~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 ~# chmod 700 get_helm.sh ~# ./get_helm.sh或者下载包进行安装 ~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz ~# mv helm …...

介绍一款PDF在线工具

PDF是我们日常工作中的一种常见格式&#xff0c;其处理也是我们工作的重要基础性环节&#xff0c;一款可靠的处理工具显得十分重要。 完全免费、易于使用、丰富的PDF处理工具&#xff0c;包括&#xff1a;合并、拆分、压缩、转换、旋转和解锁PDF文件&#xff0c;以及给PDF文件…...

docker学习——汇总版

历时一个月将docker系统的学习了一下&#xff0c;并且记录了详细的笔记和实践过程。 希望能对工作需要的小伙伴们有所帮助~ docker基础篇 docker学习&#xff08;一、docker与VM对比&#xff09; docker学习&#xff08;二、安装docker&#xff09; docker学习&#xff08;…...

百度沧海文件存储CFS推出新一代Namespace架构

随着移动互联网、物联网、AI 计算等技术和市场的迅速发展&#xff0c;数据规模指数级膨胀&#xff0c;对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板&#xff0c;只能适应有限的场景&#xff1a; >> 新型分布式…...

16-网络安全框架及模型-BiBa完整性模型

目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型&#xff0c;它的主要目标是确保数据的准确性和一致性&#xff0c;防止未授权的修改和破坏。在这个模型中&#…...

ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用&#xff…...

基于 Element UI 适用于 Vue 2 版本的虚拟列表选择器组件el-select

背景&#xff1a;在某些使用情况下&#xff0c;单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担&#xff0c;从而造成性能问题。 ——vue3element-plus有现成的轮子。而vue2element-ui没有。 以下 文章大部分 摘自 源组件中的README.md…...

java常见面试题:请解释一下Java中的常用分布式框架,如Spring Boot、Dubbo等。

下面我将详细介绍Java中的两个常用分布式框架&#xff1a;Spring Boot和Dubbo。 1. Spring Boot Spring Boot是一个用于创建独立、可运行的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和部署&#xff0c;使得开发人员能够专注于编写业务逻辑&#xff0c…...

FreeRTOS列表与列表项相关知识总结以及列表项的插入与删除实战

1.列表与列表项概念及结构体介绍 1.1列表项简介 列表相当于链表&#xff0c;列表项相当于节点&#xff0c;FreeRTOS 中的列表是一个双向环形链表 1.2 列表、列表项、迷你列表项结构体 1&#xff09;列表结构体 typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VAL…...

07|输出解析:用OutputParser生成鲜花推荐列表

07&#xff5c;输出解析&#xff1a;用OutputParser生成鲜花推荐列表 模型 I/O Pipeline 下面先来看看 LangChain 中的输出解析器究竟是什么&#xff0c;有哪些种类。 LangChain 中的输出解析器 语言模型输出的是文本&#xff0c;这是给人类阅读的。但很多时候&#xff0c;你…...

cfa一级考生复习经验分享系列(十二)

背景&#xff1a;就职于央企金融机构&#xff0c;本科金融背景&#xff0c;一直在传统金融行业工作。工作比较忙&#xff0c;用了45天准备考试&#xff0c;几乎每天在6小时以上。 写在前面的话 先讲一下&#xff0c;整体一级考下来&#xff0c;我觉得知识点多&#xff0c;偏基础…...

【损失函数】SmoothL1Loss 平滑L1损失函数

1、介绍 torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数&#xff0c;通常用于回归问题。它是 L1 损失和 L2 损失的结合&#xff0c;旨在减少对异常值的敏感性。 loss_function nn.SmoothL1Loss(reductionmean, beta1.0) 2、参数 size_average (已弃用): 以前用于确定是…...

Go语言中的HTTP重定向

大家好&#xff0c;我是你们可爱的编程小助手&#xff0c;今天我们要一起探讨如何使用Go语言实现HTTP重定向&#xff0c;让我们开始吧&#xff01; 大家都知道&#xff0c;网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说&#xff0c;你可能想将旧的URL结构…...

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划&#xff0c;我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境&#xff0c;里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primavera销售代…...

鸿蒙开发ArkTS基础学习-开发准备工具配置

文章目录 前言1. 准备工作2.开发文档3.鸿蒙开发路径一.详情介绍二.DevEco Studio安装详解-开发环境搭建2.1配置开发环境欢迎各位读者阅读本文,今天我们将介绍鸿蒙(HarmonyOS)应用开发的入门步骤,特别是在准备工作和开发环境搭建方面的重要信息。本文将对鸿蒙官方网站的关键…...

WEB 3D技术 three.js 雾 基础使用讲解

本文 我们说一下 雾 在three.js中有一个 Fog类 它可以创建线性雾的一个效果 她就是模仿现实世界中 雾的一个效果 你看到远处物体会组件模糊 直到完全被雾掩盖 在 three.js 中 有两种雾的形式 一种是线性的 一种是指数的 个人觉得 线性的会看着自然一些 他是 从相机位置开始 雾…...

Python中的网络编程

IP地址 IPv4IPv6查看本机的IP地址 win ipconfiglinux ifconfig ping命令 ping www.baidu.com 查看是否能连通指定的网站ping 192.168.1.222 查看是否能连通指定的IP Port端口 0-65535 TCP/IP协议 传输数据之前要建立连接&#xff0c;通过三次握手建立&#xff1a; 客户端 --&g…...

uni-app js语法

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…...

【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain

1.论文介绍 Detecting Camouflaged Object in Frequency Domain 基于频域的视频目标检测 2022年发表于CVPR [Paper] [Code] 2.摘要 隐藏目标检测&#xff08;COD&#xff09;旨在识别完美嵌入其环境中的目标&#xff0c;在医学&#xff0c;艺术和农业等领域有各种下游应用。…...

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无&#xff1a; 修改配置文件添加&#xff1a;错误日志&#xff0c;用来记录当MySQL启动、停止或运行时发生的错误信息&#xff0c;默认已开启 修改配置文件添加&#xff1a;通用查…...

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…...

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…...

【教3妹学编程-算法题】一年中的第几天

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开森。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;经过了一周多的寒潮&#xff0c;天气总算暖和些了。 2哥&#xff…...