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

Java面试黄金宝典25

1. 对 100 万个玩家的积分中前 100 名积分进行实时更新

  • 定义

该问题旨在实时追踪并展示 100 万个玩家中积分排名前 100 的玩家信息。随着玩家通过完成任务或获取金钱改变积分,系统需要迅速更新排名并展示最新的前 100 名。

  • 要点
  1. 运用 Java 的 PriorityQueue 构建最小堆,以此维护前 100 名的积分。
  2. 借助 HashMap 存储玩家 ID 与积分的映射,便于快速定位玩家积分。
  3. 当玩家积分更新时,先从 HashMap 中获取原积分。若原积分不在前 100 名且新积分大于堆顶元素,或者原积分在前 100 名,均需更新堆。

  • 应用
  1. 游戏排行榜:实时展示玩家排名,激励玩家竞争。
  2. 电商平台销售排行榜:实时显示商品销售排名,引导用户购买。

示例代码

java

import java.util.*;class PlayerScore {int playerId;int score;public PlayerScore(int playerId, int score) {this.playerId = playerId;this.score = score;}
}public class Top100Players {private PriorityQueue<PlayerScore> minHeap;private Map<Integer, Integer> scoreMap;public Top100Players() {minHeap = new PriorityQueue<>(100, Comparator.comparingInt(p -> p.score));scoreMap = new HashMap<>();}public void updateScore(int playerId, int newScore) {int oldScore = scoreMap.getOrDefault(playerId, 0);scoreMap.put(playerId, newScore);if (minHeap.size() < 100) {minHeap.offer(new PlayerScore(playerId, newScore));} else if (newScore > minHeap.peek().score) {if (oldScore <= minHeap.peek().score) {minHeap.poll();minHeap.offer(new PlayerScore(playerId, newScore));} else {// 更新堆中已有的元素List<PlayerScore> temp = new ArrayList<>();while (!minHeap.isEmpty()) {PlayerScore ps = minHeap.poll();if (ps.playerId == playerId) {ps.score = newScore;}temp.add(ps);}minHeap.addAll(temp);}}}public List<PlayerScore> getTop100() {List<PlayerScore> top100 = new ArrayList<>(minHeap);top100.sort((p1, p2) -> p2.score - p1.score);return top100;}
}

2. 从 10 亿条短信中找出前一万条重复率高的

  • 定义

此问题要求从海量的 10 亿条短信数据里,找出重复出现次数最多的前一万条短信。

  • 要点
  1. 采用分块处理数据的方式,防止内存溢出。
  2. 利用 HashMap 统计每条短信的出现次数。
  3. 借助 PriorityQueue 维护前一万条短信。

  • 应用
  1. 垃圾短信检测:找出频繁出现的短信模式,识别垃圾短信。
  2. 热点话题分析:通过统计短信内容,找出热门话题。

示例代码

java

import java.util.*;public class Top10000Messages {public List<String> findTop10000(List<String> messages) {Map<String, Integer> countMap = new HashMap<>();for (String message : messages) {countMap.put(message, countMap.getOrDefault(message, 0) + 1);}PriorityQueue<Map.Entry<String, Integer>> minHeap = new PriorityQueue<>(10000, Map.Entry.comparingByValue());for (Map.Entry<String, Integer> entry : countMap.entrySet()) {if (minHeap.size() < 10000) {minHeap.offer(entry);} else if (entry.getValue() > minHeap.peek().getValue()) {minHeap.poll();minHeap.offer(entry);}}List<String> top10000 = new ArrayList<>();while (!minHeap.isEmpty()) {top10000.add(minHeap.poll().getKey());}Collections.reverse(top10000);return top10000;}
}

3. 对一万条数据排序,最好的方式是什么

  • 定义

针对一万条数据的排序问题,需要选择一种高效的排序算法,以实现数据的有序排列。

  • 要点
  1. 快速排序:平均时间复杂度为 O(nlogn),空间复杂度为 O(logn),实现简单,但最坏情况下时间复杂度为 O(n^2)。
  2. 归并排序:时间复杂度稳定为 O(nlogn),空间复杂度为 O(n),排序稳定,但需要额外空间。
  3. 堆排序:时间复杂度为 O(nlogn),空间复杂度为 O(1),无需额外空间,但实现相对复杂。

  • 应用
  1. 数据库查询结果排序:对查询到的数据进行排序展示。
  2. 数据分析:对数据进行排序以便后续分析。

示例代码(快速排序)

java

import java.util.Arrays;public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);}}private static int partition(int[] arr, int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;swap(arr, i, j);}}swap(arr, i + 1, high);return i + 1;}private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {5, 3, 8, 4, 2, 7, 1, 6};quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}
}

4. 用最优的方式计算出一个大文件中一个字符串是否存在

  • 定义

在一个包含大量字符串的大文件中,需要高效地判断指定字符串是否存在。

  • 要点
  1. 利用布隆过滤器进行初步筛选,减少不必要的文件读取操作。布隆过滤器是一种空间效率高的概率型数据结构,若判断元素不存在,则元素一定不存在;若判断元素存在,则元素可能存在。
  2. 初始化布隆过滤器时,根据文件大小和预期的误判率设置合适的参数。
  3. 遍历文件,将每个字符串添加到布隆过滤器中。
  4. 检查目标字符串是否存在于布隆过滤器中,若存在,则进一步在文件中查找。

  • 应用
  1. 搜索引擎缓存:快速判断网页是否已被收录。
  2. 数据库查询优化:减少不必要的磁盘 I/O 操作。

示例代码

java

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class StringSearchInFile {public static boolean searchStringInFile(String filePath, String target) {try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {BloomFilter<CharSequence> bloomFilter = BloomFilter.create(Funnels.stringFunnel(), 1000000, 0.01);String line;while ((line = reader.readLine()) != null) {bloomFilter.put(line);}if (!bloomFilter.mightContain(target)) {return false;}reader.close();try (BufferedReader newReader = new BufferedReader(new FileReader(filePath))) {while ((line = newReader.readLine()) != null) {if (line.equals(target)) {return true;}}}} catch (IOException e) {e.printStackTrace();}return false;}
}

5. 设计一个算法快速找出十亿条 QQ 在线日志记录中今天的在线人数

  • 定义

从十亿条 QQ 在线日志记录里,快速统计出当天的在线用户数量。

  • 要点
  1. 采用分块处理数据的方式,避免内存溢出。
  2. 利用 HashSet 存储用户 ID 以去重。

  • 应用
  1. 社交平台活跃度统计:了解用户在线情况。
  2. 网络流量分析:评估网络使用情况。

示例代码

java

import java.util.HashSet;
import java.util.Set;public class OnlineUserCount {public int countOnlineUsers(String[] logs) {Set<String> userSet = new HashSet<>();for (String log : logs) {// 假设日志格式为 "用户ID 时间"String userId = log.split(" ")[0];userSet.add(userId);}return userSet.size();}
}

6. 统计 4 个 10G 文件中 Top10 的单词

  • 定义

对 4 个各为 10G 的文件进行处理,统计其中出现次数最多的前 10 个单词。

  • 要点
  1. 运用分治策略,将每个文件分成多个小块,分别统计每个小块中单词的出现次数。
  2. 利用 HashMap 统计单词出现次数。
  3. 借助 PriorityQueue 维护前 10 个单词。

  • 应用
  1. 文本挖掘:找出高频词汇,分析文本主题。
  2. 搜索引擎优化:了解热门关键词。

示例代码

java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;public class Top10Words {public List<String> findTop10Words(String[] filePaths) {Map<String, Integer> countMap = new HashMap<>();for (String filePath : filePaths) {try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;while ((line = reader.readLine()) != null) {String[] words = line.split("\\s+");for (String word : words) {countMap.put(word, countMap.getOrDefault(word, 0) + 1);}}} catch (IOException e) {e.printStackTrace();}}PriorityQueue<Map.Entry<String, Integer>> minHeap = new PriorityQueue<>(10, Map.Entry.comparingByValue());for (Map.Entry<String, Integer> entry : countMap.entrySet()) {if (minHeap.size() < 10) {minHeap.offer(entry);} else if (entry.getValue() > minHeap.peek().getValue()) {minHeap.poll();minHeap.offer(entry);}}List<String> top10 = new ArrayList<>();while (!minHeap.isEmpty()) {top10.add(minHeap.poll().getKey());}Collections.reverse(top10);return top10;}
}

7. 在三个大于 10G 的文件(每行一个数字)和 100M 内存的主机上,找到在三个文件都出现且次数最多的 10 个字符串

  • 定义

在内存有限(100M)的情况下,处理三个大于 10G 且每行包含一个数字的文件,找出在三个文件中都出现且出现次数最多的前 10 个数字。

  • 要点
  1. 采用分治策略,将每个文件分成多个小块,分别统计每个小块中数字的出现次数。
  2. 利用 HashMap 统计数字出现次数。
  3. 借助 PriorityQueue 维护前 10 个数字。

  • 应用
  1. 数据挖掘:找出多个数据源中共同出现的高频数据。
  2. 日志分析:分析多个日志文件中的共同特征。

示例代码

java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;public class Top10NumbersInThreeFiles {public List<String> findTop10Numbers(String[] filePaths) {Map<String, int[]> countMap = new HashMap<>();for (int i = 0; i < filePaths.length; i++) {try (BufferedReader reader = new BufferedReader(new FileReader(filePaths[i]))) {String line;while ((line = reader.readLine()) != null) {int[] counts = countMap.computeIfAbsent(line, k -> new int[3]);counts[i]++;}} catch (IOException e) {e.printStackTrace();}}PriorityQueue<Map.Entry<String, int[]>> minHeap = new PriorityQueue<>(10, Comparator.comparingInt(e -> Arrays.stream(e.getValue()).sum()));for (Map.Entry<String, int[]> entry : countMap.entrySet()) {int[] counts = entry.getValue();if (counts[0] > 0 && counts[1] > 0 && counts[2] > 0) {if (minHeap.size() < 10) {minHeap.offer(entry);} else if (Arrays.stream(counts).sum() > Arrays.stream(minHeap.peek().getValue()).sum()) {minHeap.poll();minHeap.offer(entry);}}}List<String> top10 = new ArrayList<>();while (!minHeap.isEmpty()) {top10.add(minHeap.poll().getKey());}Collections.reverse(top10);return top10;}
}

8. 什么是直接插入排序

  • 定义

直接插入排序是一种简单的排序算法,其基本思想是将未排序数据依次插入到已排序序列的合适位置。从第二个元素开始,将其与前面已排序的元素逐一比较,找到合适位置后插入。

  • 要点
  1. 时间复杂度:O(n^2),空间复杂度:O(1)。
  2. 适用于小规模数据或接近有序的数据。

  • 应用
  1. 数据量较小且对稳定性有要求的排序场景。
  2. 对基本有序的数据进行排序。

示例代码

java

public class InsertionSort {public static void insertionSort(int[] arr) {int n = arr.length;for (int i = 1; i < n; i++) {int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}
}

9. 什么是希尔排序

  • 定义

希尔排序是对插入排序的改进算法。它先将原始数据分成多个子序列,对每个子序列进行插入排序,然后逐渐缩小子序列的间隔,直至间隔为 1,此时进行一次普通的插入排序。

  • 要点
  1. 时间复杂度:平均情况下为 O(n^1.3),最坏情况下为 O(n^2),空间复杂度:O(1)。
  2. 性能优于直接插入排序。

  • 应用
  1. 对中等规模数据进行排序。
  2. 对部分有序的数据进行排序。

示例代码

java

public class ShellSort {public static void shellSort(int[] arr) {int n = arr.length;for (int gap = n / 2; gap > 0; gap /= 2) {for (int i = gap; i < n; i++) {int temp = arr[i];int j;for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {arr[j] = arr[j - gap];}arr[j] = temp;}}}
}

10. 什么是冒泡排序

  • 定义

冒泡排序是一种简单的排序算法,其基本思想是重复遍历待排序数列,依次比较相邻的两个元素,若顺序错误则交换它们的位置,直到整个数列有序。

  • 要点
  1. 时间复杂度:O(n^2),空间复杂度:O(1)。
  2. 适用于小规模数据。

  • 应用
  1. 教学场景:用于讲解排序算法的基本原理。
  2. 数据量极小的排序场景。

示例代码

java

public class BubbleSort {public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
}

友情提示:本文已经整理成文档,可以到如下链接免积分下载阅读

https://download.csdn.net/download/ylfhpy/90553414

相关文章:

Java面试黄金宝典25

1. 对 100 万个玩家的积分中前 100 名积分进行实时更新 定义 该问题旨在实时追踪并展示 100 万个玩家中积分排名前 100 的玩家信息。随着玩家通过完成任务或获取金钱改变积分&#xff0c;系统需要迅速更新排名并展示最新的前 100 名。 要点 运用 Java 的 PriorityQueue 构建…...

洛谷题单1-P5708 【深基2.习2】三角形面积-python-流程图重构

题目描述 一个三角形的三边长分别是 a a a、 b b b、 c c c&#xff0c;那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(p−a)(p−b)(p−c) ​&#xff0c;其中 p 1 2 ( a b c ) p\frac{1}{2}(abc) p21​(abc)。输入这三个数字&#xff…...

深入理解指针5

sizeof和strlen的对比 sizeof的功能 **sizeof是**** 操作符****&#xff0c;用来**** 计算****变量或类型或数组所占**** 内存空间大小****&#xff0c;**** 单位是字节&#xff0c;****他不管内存里是什么数据** int main() {printf("%zd\n", sizeof(char));p…...

常见集合篇(一):算法复杂度分析,从理论到业务场景的深度解析

常见集合篇&#xff1a;算法复杂度分析&#xff0c;从理论到业务场景的深度解析 常见集合篇&#xff08;一)&#xff1a;算法复杂度分析&#xff0c;从理论到业务场景的深度解析一、为什么要进行复杂度分析&#xff08;一&#xff09;事后统计法的局限性&#xff08;二&#xf…...

SpringCould微服务架构之Docker(9)

Docker的基本操作之数据卷 容器跟数据耦合的问题&#xff1a; 1、不便于修改&#xff1a;当我们要修改Nginx的html内容时&#xff0c;需要进入容器内部修改&#xff0c;很不方便。 2、数据不可复用&#xff1a;在容器内部 的修改对外是不可见的&#xff0c;所有的修改对新创…...

探索 Gaggol:理解 10^^^100 的宇宙级常数

一、常数概述&#xff1a; Gaggol 是一个极其巨大的数学常数&#xff0c;其数值表示为 10^^^100。这个常数是通过对数字 10 进行超递归幂运算得到的结果。 二、Gaggol 的定义&#xff1a; Gaggol 被定义为 10 的超多层超递归幂&#xff0c;即 10 被连续地提升到自身幂的层次达…...

【C++】STL库_stack_queue 的模拟实现

栈&#xff08;Stack&#xff09;、队列&#xff08;Queue&#xff09;是C STL中的经典容器适配器 容器适配器特性 不是独立容器&#xff0c;依赖底层容器&#xff08;deque/vector/list&#xff09;通过限制基础容器接口实现特定访问模式不支持迭代器操作&#xff08;无法遍历…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例13,TableView16_13 键盘辅助拖拽示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例13,TableView16_13 键…...

Python的概论

免责声明 如有异议请在评论区友好交流&#xff0c;或者私信 内容纯属个人见解&#xff0c;仅供学习参考 如若从事非法行业请勿食用 如有雷同纯属巧合 版权问题请直接联系本人进行删改 前言 提示&#xff1a;&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c…...

AI 数字人短视频数字人口播源码:短视频内容生产的新引擎​

在当下信息爆炸的时代&#xff0c;短视频已成为主流的信息传播与娱乐方式之一。在如此庞大的市场需求下&#xff0c;如何高效、创新地生产短视频内容成为了行业关注的焦点。AI 数字人短视频数字人口播源码应运而生&#xff0c;为短视频内容生产带来了全新的变革。​ 一、行业背…...

数字人训练数据修正解释

数字人训练数据修正和查看 不需要GPU也能运行的DH_live-案例 : I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To t…...

VRRP虚拟路由器冗余协议

一、VRRP介绍 VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由器冗余协议&#xff09;是一种用于提高网络可靠性的协议&#xff0c;旨在通过冗余机制解决默认网关单点故障问题。 核心思想&#xff1a;将多个物理路由器虚拟成一个逻辑路由器&#xf…...

微前端 - 以无界为例

一、微前端核心概念 微前端是一种将单体前端应用拆分为多个独立子应用的架构模式&#xff0c;每个子应用可独立开发、部署和运行&#xff0c;具备以下特点&#xff1a; 技术栈无关性&#xff1a;允许主应用和子应用使用不同框架&#xff08;如 React Vue&#xff09;。独立部…...

Python与图像处理

目录 一、认识图像 1、图像的构成 2、图像模式 二、处理图像 1、图像缩放 2、图像的旋转和翻转 3、滤镜效果 4、图片剪裁 5、图片素描 6、图片加水印 在众多的Python的第三方的库中&#xff0c;Pillow库是一个强大且方便的库&#xff0c;它能够处理图像&#xff0c;比…...

Lua语言脚本环境配置

参考地址&#xff1a;Lua 教程 | 菜鸟教程 Windows等直接下载安装地址&#xff1a;Lua Binaries 上面也是会跳转下载&#xff1a;https://sourceforge.net/projects/luabinaries/ 下载解压后在“环境变量”中添加路径&#xff0c;添加后如果cmd中还是无法使用lua命令&#x…...

JavaScript的异步编程

目录 目标 实战 回调函数 (Callback) Promise 目标 了解异步编程实现方式。 实战 回调函数 (Callback) 当某个任务完成后&#xff0c;调用回调函数来处理结果。它通常会导致回调地狱&#xff0c;即嵌套多个回调函数&#xff0c;官方不推荐使用。 function fetchData(call…...

Ubuntu里安装Jenkins

【方式1】&#xff1a;下载war包&#xff0c;直接运行&#xff0c;需提前搭建Java环境&#xff0c;要求11或17&#xff0c;不推荐&#xff0c;war包下载地址&#xff0c;将war包上传到服务器&#xff0c;直接使用命令启动 java -jar /data/jenkins/jenkins.war【方式2】&#…...

qt介绍tcp通信

服务器端代码 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("服务器");ui->port->setText("…...

elementui的默认样式修改

今天用element ui &#xff0c;做了个消息提示&#xff0c;发现提示的位置总是在上面&#xff0c;如图&#xff1a; 可是我想让提示的位置到下面来&#xff0c;该怎么办&#xff1f; 最后还是看了官方的api 原来有个自定义样式属性 customClass 设置下就好了 js代码 css代码 效…...

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…...

leetcode 53.Maximum Subarray

分治法 //lSum表示[left,right]内以left为左端点的最大子段和 //rSum表示[left,right]内以right为右端点的最大字段和 //iSum表示[left,right]的区间和 int divide_conquer(int* nums,int left,int right,int *lSum,int *rSum,int *iSum){int maxSum;//表示[left,right]内的最…...

手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说

OceanBase《DB 大咖说》第 20 期&#xff0c;我们邀请了九机与九讯云的技术总负责人&#xff0c;李远军&#xff0c;为我们分享手机零售企业如何借力分布式数据库OceanBase&#xff0c;赋能 AI 场景&#xff0c;并通过简化架构实现成本管控上的突破与创新。 李远军于2016年加入…...

基于MCU实现的电机转速精确控制方案:软件设计与实现

本文将详细介绍一篇基于微控制器&#xff08;MCU&#xff09;的电机转速精确控制的软件方案。通过采样PWM信号控制和ADC采样技术&#xff0c;结合PID闭环控制算法&#xff0c;实现了电机转速的高效、稳定调节。以下是软件方案流程图&#xff0c;下文将对其进行展开讲解。 原图太…...

【力扣hot100题】(026)合并两个有序链表

可以创建一个新链表记录答案&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *…...

从代码学习深度学习 - 使用块的网络(VGG)PyTorch版

文章目录 前言一、VGG网络简介1.1 VGG的核心特点1.2 VGG的典型结构1.3 优点与局限性1.4 本文的实现目标二、搭建VGG网络2.1 数据准备2.2 定义VGG块2.3 构建VGG网络2.4 辅助工具2.4.1 计时器和累加器2.4.2 准确率计算2.4.3 可视化工具2.5 训练模型2.6 运行实验总结前言 深度学习…...

程序化广告行业(46/89):竞价结算规则、底价策略与内部排名解析

程序化广告行业&#xff08;46/89&#xff09;&#xff1a;竞价结算规则、底价策略与内部排名解析 大家好&#xff01;在之前的几篇博客中&#xff0c;我们已经深入探讨了程序化广告的多个重要方面&#xff0c;从基础概念到实际操作流程。我写这些博客的目的&#xff0c;就是希…...

C/C++ 基础 - 回调函数

目录 前言 回调函数预备知识 函数指针 什么是函数指针 函数指针的语法 如何用函数指针调用函数 函数指针作为函数的参数 函数指针作为函数返回类型 函数指针数组 回调函数 什么是回调函数 为什么要用回调函数 怎么使用回调函数 总结 前言 在写项目的时候&#x…...

【Node.js入门笔记12---npm包】

Node.js入门笔记12 Node.js---npm包一、什么是npm包&#xff1f;二、npm 基础使用三、包管理配置文件&#xff08;package.json&#xff09;四、提升下载速度 五、包的分类 Node.js—npm包 一、什么是npm包&#xff1f; 定义 npm&#xff08;全称 Node Package Manager&#x…...

黑盒测试的正交实验法

背景: 利用因果图法、判定表法可以帮助我们对于输入数据的组合情况进行用例设计&#xff0c;但当输入数据的组合数量巨大时&#xff0c;由于不太可能覆盖到每个输入组合的测试情况&#xff0c;因果图法或判定表法可能就不太适用了&#xff0c;可以采用正交实验法、来合理地减少…...

链表算法的技巧和方法

常用技巧&#xff1a; 1、画图 2、引入虚拟的头节点 3、不要害怕浪费空间&#xff0c;要勇于定义变量&#xff0c;eg:当链表的插入和删除的时候&#xff0c;为了便于结构体指针的连续性&#xff0c;就需要定义一个新的结构体指针&#xff0c;能更加方便&#xff1b; 4、使用快慢…...

Upload-labs 靶场搭建 及一句话木马的原理与运用

1、phpstudy及upload-labs下载 &#xff08;1&#xff09;下载phpstudy小皮面板 首先需要软件phpstudy 下载地址 phpStudy下载-phpStudy最新版下载V8.1.1.3 -阔思亮 &#xff08;2&#xff09;然后到github网址下载源码压缩包 网址 https://github.com/c0ny1/upload-labs 再…...

基于PX4和Ardupilot固件下自定义MAVLink消息测试(QGroundControl和Mission Planner)

在无人机行业&#xff0c;MAVLink&#xff08;Micro Air Vehicle Link&#xff09;协议已经成为了通信的标准协议。MAVLink协议定义了一种轻量级的消息传输格式&#xff0c;广泛应用于PX4和ArduPilot等开源无人机飞控固件中。通过自定义MAVLink消息&#xff0c;我们可以为无人机…...

Maven快速上手

在前面我们学习了许多关于JAVA的知识&#xff0c;从今天这个博客开始我们就要进入到JAVAEE进阶的学习中了&#xff0c;在这里你们可以学到项目是怎么被我们一步步写出来。让我们为之加油吧&#xff01;&#xff01;&#xff01;&#xff01; 本期讲解&#xff1a; 1.了解Maven…...

【Django】教程-5-ModelForm增删改查+规则校验【正则+钩子函数】

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 11. ModelForm 11.1 models.py from django.utils import timezone from django.db import models# 数据库&#xff…...

JavaScript中 == 和 === 区别

== 运算符 它是相等运算符,用于比较两个 值 是否相等 ( 如果两个值的类型不同,它会尝试将它们转换为相同的类型,然后再比较。) 示例: console.log(1 == 1); // true,因为1被转换为数字1,所以相等 console.log(1 == true); // true,因为true被转换为数字1,所以相等…...

使用LangChain Agents构建Gradio及Gradio Tools(3)——使用Langchain agents构建Gradio UI

使用LangChain Agents构建Gradio及Gradio Tools(3)——使用Langchain agents构建Gradio UI 本篇摘要16. 使用LangChain Agents构建Gradio及Gradio Tool16.3 使用Langchain agents构建Gradio UI16.3.1 创建代理16.3.2 创建Gradio UI16.3.3 运行demo参考文献本章目录如下: 《使…...

scikit-surprise 智能推荐模块使用说明

目录 1、前言 2、算法 3、数据集 3.1 three built-in datasets are available: 3.2 Load a dataset from a pandas dataframe. 3.3 Load a dataset from a (custom) file. 3.4 Load a dataset where folds (for cross-validation) are predefined by some files. 4、pre…...

基于python开发的邮箱合并群发工具

智能邮件群发系统 一个基于Python和PyQt5开发的智能邮件群发工具&#xff0c;支持Word模板和Excel数据源的自动匹配&#xff0c;具有现代化UI界面和友好的用户体验。 Github项目地址&#xff1a;https://github.com/liugang926/Auto-mail-sent.git dist目录有编译好的exe程序&…...

分治算法之凸包问题

1. 算法思路 基本思想 利用分治策略解决凸包问题主要分为两大步骤&#xff1a; 分解&#xff08;Divide&#xff09;&#xff1a; 将所有点按照 x 坐标排序&#xff0c;并将点集分为左右两部分。 递归地对左右两部分分别求解凸包。 合并&#xff08;Conquer/Merge&#xf…...

OpenBMC:BmcWeb 处理http请求3 字典树查找节点

OpenBMC:BmcWeb 处理http请求2 查找路由对象-CSDN博客 findRouteByPerMethod实际上是调用了perMethod.trie.find(url);来查找路由对象的 class Trie {struct FindResult{unsigned ruleIndex;std::vector<std::string> params;};FindResult findHelper(const std::string…...

音频进阶学习二十五——脉冲响应不变法实现低通滤波器

文章目录 前言一、脉冲响应不变法1.定义2.模拟系统冲激响应的周期采样3.模拟系统和数字系统的频域响应关系1&#xff09;S域和Z域的关系2&#xff09;幅频响应的关系 4.通过有理函数设计滤波器5.总结 二、低通滤波器的设计实例1.给定数字滤波器指标2.转换模拟滤波器指标3.模拟滤…...

Linux中输入输出管理技巧

一、输入输出使用到的系统资源 1、字符设备&#xff08;Character Devices&#xff09; 什么是字符设备 字符设备是 Linux 中的一类设备&#xff0c;支持以字符为单位进行数据传输。与块设备不同&#xff0c;字符设备不需要缓 冲区&#xff0c;即数据是逐字节直接传递的。典…...

wireshark抓包工具的使用

下载地址&#xff1a;https://www.wireshark.org/#downloadLink 安装方式&#xff0c;一路next。 使用方式 第一步启动后选择你要抓包的网卡&#xff0c;ipconfig 可以查看你的默认网卡&#xff0c;我的是 以太网 双击进入。 筛选操作&#xff08;快速筛选方式&#xff09…...

javaweb自用笔记:文件上传案例、登录(统一拦截)案例

文件上传 或者说新建一个类配置好信息&#xff0c;然后到aliOssUtils里面用getter、setter方法获取到配置项 登录&#xff08;统一拦截&#xff09; 前端要json格式的数据&#xff0c;捕获到异常后前端可以显示错误&#xff08;对不起&#xff0c;操作失败&#xff0c;请联系管…...

【区块链安全 | 第十七篇】类型之引用类型(一)

文章目录 引用类型数据存储位置分配行为 数组特殊数组&#xff1a;bytes 和 string 类型bytes.concat 和 string.concat 的功能分配 memory 数组数组字面量&#xff08;Array Literals&#xff09;二维数组字面量数组成员&#xff08;Array Members&#xff09;悬空引用&#x…...

2025国内DevOps新手突围指南:从Gitee零门槛入门到工具链深度对比

对于刚接触DevOps的新手&#xff0c;推荐优先选择Gitee DevOps平台&#xff0c;其次是Jenkins和GitLab。Gitee DevOps作为国内领先的一站式研发效能平台&#xff0c;深度融合代码托管、持续集成/持续交付&#xff08;CI/CD&#xff09;、项目协作等功能&#xff0c;不仅界面简洁…...

【C语言】文件操作(2)

一、文件的随机读写 在前面我们学习了文件的顺序读写的函数&#xff0c;那么当我们要读取某个指定位置的内容的时候&#xff0c;是否只能顺序的读取到这个内容&#xff1f;还有在对文件进行输入的时候&#xff0c;需要对指定的位置进行写入&#xff0c;那么此时应该怎么办呢&a…...

将内网的IP地址映射到外网的几种方案

文章目录 1. 背景与目标2. 核心方案选型3. 方案A&#xff1a;路由器端口映射&#xff08;详细步骤&#xff09;3.1 前置条件3.2 配置流程3.3 验证访问 4. 方案B&#xff1a;云平台NAT网关配置&#xff08;以阿里云为例&#xff09;4.1 前置条件4.2 配置流程4.3 验证访问 5. 方案…...

基于深度学习的图像超分辨率技术研究与实现

一、引言 在数字图像处理领域,图像超分辨率技术一直是一个备受关注的热点话题。随着人们对图像质量要求的不断提高,如何将低分辨率图像提升到高分辨率,同时保持图像的细节和清晰度,成为了一个极具挑战性的问题。传统的图像超分辨率技术主要依赖于插值方法,如双线性插值、双…...

A股复权计算_权息数据整理

目录 前置&#xff1a; 步骤&#xff1a; 1 以通达信为参照 2 从优矿获取所需数据 2.1 股票配股信息 2.2 股票分红信息 2.3 股票拆股信息 3 合并数据&#xff0c;制成权息数据表 权息数据截止20250329.7z 视频 前置&#xff1a; 1 本系列将以 “A股复权计算_” 开头…...