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

数组还可以这样用!常用但不为人知的应用场景

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在Java开发中,数组几乎是无处不在的数据结构。在处理大量数据时,数组可以优化算法和提高性能。但是,除了简单的数组操作之外,还有很多有趣且实用的应用场景,这些场景在实际工作中也很常见,但并不为人所知。

  本文将介绍一些常用但不为人知的数组应用场景,希望能为开发者提供一些帮助。

摘要

  本文将介绍数组的一些常用但不为人知的应用场景,包括二维数组的应用,数组的旋转、查找、去重等操作,以及在算法中使用数组等场景。还将对这些应用场景的优缺点进行分析,并提供相应的类代码和测试用例。

正文

简介

  数组在Java中是一种基本的数据结构,可以表示连续的内存空间。它可以用来存储一组相同数据类型的元素。Java中的数组可以是一维或多维的,而且数组的大小一旦确定就无法更改。

  本文将介绍数组的几种常用但不为人知的应用场景,包括二维数组的应用,数组的旋转、查找、去重等操作,以及在算法中使用数组等场景。并且将分析这些应用场景的优缺点,并提供相应的示例代码和测试用例。

源代码解析

二维数组的应用

  二维数组是由多个一维数组组成的,可以理解为一个表格,行和列分别对应数组的第一维和第二维。它在Java中的应用非常广泛,尤其在矩阵计算、图像处理、游戏等方面。

二维数组的定义和初始化

  在Java中,二维数组的定义和初始化方式如下:

int[][] array = new int[3][4];

  这表示创建一个3行4列的二维数组。我们也可以使用另一种方式初始化二维数组:

int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

  这种方式可以直接初始化二维数组的每个元素。

二维数组的遍历

  二维数组的遍历方式通常有两种:

  • 使用嵌套循环遍历每一个元素。
  • 使用Java8的流和Lambda表达式来遍历每一个元素。

  下面是使用嵌套循环遍历二维数组:

for (int i = 0; i < array.length; i++) {for (int j = 0; j < array[i].length; j++) {System.out.print(array[i][j] + " ");}System.out.println();
}

  这个例子中,我们首先使用一个外层循环来遍历每一行,然后在内层循环中遍历每一列。

  下面是使用Java8流和Lambda表达式来遍历二维数组:

Arrays.stream(array).forEach(row -> {Arrays.stream(row).forEach(num -> System.out.print(num + " "));System.out.println();
});

  这个例子中,我们首先使用Arrays.stream()方法将二维数组转换成一个流,然后使用forEach()方法和Lambda表达式来遍历每个元素,和前面的方法相比,这个方法更简洁。

数组的旋转、查找、去重等操作

数组的旋转

  数组的旋转是将数组中的元素按照某个规律进行旋转。在实际工作中,数组的旋转操作常用于图像处理、游戏等方面。

  下面是一个将二维数组旋转90度的例子:

public static int[][] rotate(int[][] matrix) {int n = matrix.length;int[][] result = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {result[j][n - i - 1] = matrix[i][j];}}return result;
}

  这个方法中,我们使用一个新的二维数组来存储旋转后的结果。我们使用两个循环遍历原始矩阵中的元素,并将其存储到旋转后的新矩阵中。

代码分析:

  该代码定义了一个名为rotate的静态方法,接受一个二维整型数组matrix作为参数,返回一个旋转后的二维整型数组。

  接下来,使用变量n记录矩阵的边长,即矩阵的行数和列数。创建一个新的二维整型数组result,其行数和列数都为n。结果数组用于存储旋转后的矩阵。

  接着,使用两个循环遍历原始矩阵matrix中的每个元素。通过将原始矩阵中第i行第j列的元素赋值到结果矩阵中第j行第n-i-1列的位置,来将原始矩阵顺时针旋转90度。这个旋转公式可以这样理解:结果矩阵中的每一行都等于原始矩阵中的每一列,但是顺序被反过来,且行列索引值有所变化。

  最后,返回旋转后的矩阵result。

数组的查找

  数组的查找是在一个数组中查找一个特定的元素。在实际工作中,数组的查找操作经常用于数据检索、搜索等方面。

  下面是一个使用二分查找来查找一个元素在一个已排序的数组中的位置的例子:

public static int binarySearch(int[] sortedArray, int key) {int low = 0;int high = sortedArray.length - 1;while (low <= high) {int mid = (low + high) / 2;if (sortedArray[mid] < key) {low = mid + 1;} else if (sortedArray[mid] > key) {high = mid - 1;} else {return mid;}}return -1;
}

  这个方法中,我们使用一个while循环进行二分查找。在每一次循环中,我们将要查找的元素和数组中间元素进行比较,然后根据比较结果将要查找的范围缩小一半。

代码分析:

  这段代码是一个二分查找算法,接收一个已排序的整数数组和一个关键字,返回关键字在数组中的索引值(如果存在)或者-1(如果不存在)。

  首先,定义两个变量low和high,分别代表数组的起始和终止索引。

  然后,使用一个while循环来不断缩小搜索范围,直到找到关键字或者确定关键字不存在。

  在每次循环中,算出数组中间元素的索引mid,并与关键字进行比较。如果中间元素小于关键字,则将搜索范围缩小到右半部分,即将low设为mid+1;如果中间元素大于关键字,则将搜索范围缩小到左半部分,即将high设为mid-1;如果中间元素等于关键字,则找到关键字,返回mid。

  如果循环结束后仍然没有找到关键字,则说明关键字不存在,返回-1。

  总体来说,这段代码的时间复杂度为O(log n),可以快速找到数组中的元素。

数组的去重

  数组的去重是将一个数组中重复的元素去掉,只保留不重复的元素。在实际工作中,数组的去重操作常用于数据清洗、统计等方面。

  下面是一个将数组中重复元素去掉的例子:

public static int[] removeDuplicates(int[] array) {if (array == null || array.length == 0) {return array;}int len = array.length;Arrays.sort(array);int j = 0;for (int i = 0; i < len - 1; i++) {if (array[i] != array[i + 1]) {array[j++] = array[i];}}array[j++] = array[len - 1];return Arrays.copyOf(array, j);
}

  这个方法中,我们首先对数组进行排序,然后使用一个循环遍历数组中的元素,如果当前元素和下一个元素不相同,则将当前元素存储到一个新数组中。最后,我们使用Arrays.copyOf()方法返回一个新的数组,长度为j。

代码分析:

  这段代码是一个静态方法,接收一个整数数组作为参数,并返回一个去重后的整数数组。

  首先,代码进行了一些边界判断,如果传入的数组为 null 或长度为 0,则直接返回原数组。

  然后对数组进行排序,这样相同的元素就会排列在一起。

  紧接着,定义了一个变量 j 来记录去重后的数组中有效元素的个数,初始值为 0。

  接下来使用 for 循环遍历数组,如果当前元素和后一个元素不相等,则将当前元素添加到去重后的数组中,并将变量 j 加 1。

  最后,将数组的最后一个元素添加到去重后的数组中,并返回数组的前 j 个元素,即为去重后的数组。

  可以看出,这段代码的时间复杂度为 O(nlogn),其中 n 为数组的长度。因为要进行排序操作,虽然去重操作只需要一次遍历,但排序的复杂度占据了主要部分。

在算法中使用数组

  在算法中,数组通常用于优化算法和提高性能。例如,我们可以使用一个数组来记录某个数出现的次数,然后快速找到出现次数最多的数。

  下面是一个找出数组中出现次数最多的元素的例子:

public static int findMostFrequentElement(int[] elements) {int n = elements.length;Map<Integer, Integer> count = new HashMap<>();for (int i = 0; i < n; i++) {if (!count.containsKey(elements[i])) {count.put(elements[i], 0);}count.put(elements[i], count.get(elements[i]) + 1);}int mostFrequentElement = -1, maxCount = -1;for (Map.Entry<Integer, Integer> entry : count.entrySet()) {if (entry.getValue() > maxCount) {mostFrequentElement = entry.getKey();maxCount = entry.getValue();}}return mostFrequentElement;
}

  这个方法中,我们首先使用一个Map来记录每个元素出现的次数,然后使用一个循环遍历数组中的元素,并将其存储到Map中。最后,我们使用另一个循环

代码分析:

  这个方法接收一个整型数组作为参数,然后返回该数组中出现次数最多的元素。

  方法首先创建一个 HashMap,并迭代元素数组中的每个元素,对每个元素进行计数。如果元素在 HashMap 中不存在,就将该元素加入到 HashMap 中并设置为出现次数为零。然后将该元素的出现次数加一。

  接下来,方法遍历 HashMap 中的每个元素,并跟踪出现次数最多的元素和它的出现次数。如果当前元素的出现次数比已知最大出现次数要大,则将最大出现次数更新为当前元素的出现次数,并将最频繁出现的元素设置为当前元素。

  最后,该方法返回最频繁出现的元素。如果该数组中所有元素都只出现了一次,则返回 -1。

数组的常用但不为人知的应用场景

1. 二维数组的转置

  在实际工作中,我们经常需要对矩阵进行转置。对于一个二维数组,转置指的是将其行和列对调。

  下面是一个二维数组转置的例子:

public static int[][] transpose(int[][] matrix) {int n = matrix.length;int m = matrix[0].length;int[][] result = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {result[i][j] = matrix[j][i];}}return result;
}

代码分析:

  这段代码实现了矩阵的转置操作,即将矩阵的行列互换。具体分析如下:

  1. 首先,该方法接收一个二维数组matrix作为参数,其中n表示matrix数组的行数,m表示matrix数组的列数。

  2. 接着,定义一个新的二维数组result,其行数是原矩阵的列数,列数是原矩阵的行数,这里的目的是为了存储转置后的矩阵。

  3. 然后,通过嵌套的for循环遍历原矩阵,将原矩阵的第i行第j列的元素赋值给新矩阵的第j行第i列的元素,从而完成矩阵的转置操作,即将矩阵的行列互换。

  4. 最后,返回转置后的矩阵result。

总体来说,这段代码实现了简单的矩阵转置算法,具有较高的可读性和易于理解的特点。

2. 数组的旋转

  数组的旋转是指将一个数组中的元素按照某个规律进行旋转。在实际工作中,数组的旋转操作常用于图像处理、游戏等方面。

下面是一个将数组旋转k次的例子:

public static void rotate(int[] nums, int k) {int n = nums.length;k = k % n;reverse(nums, 0, n - 1);reverse(nums, 0, k - 1);reverse(nums, k, n - 1);
}private static void reverse(int[] nums, int start, int end) {while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}
}

  这个例子中,我们首先计算出旋转的次数k。然后,我们首先将整个数组反转,然后再将前k个元素反转,最后再将剩余的元素反转。

代码分析:

  这段代码实现了将长度为n的整数数组nums中的元素向右旋转k个位置。具体做法是:先将整个数组反转,再将前k个元素反转,最后将剩下的n-k个元素反转。这样做的时间复杂度为O(n),空间复杂度为O(1)。

  例如,给定数组nums=[1,2,3,4,5,6,7],旋转3个位置,则按照上述算法进行操作:

将整个数组反转,得到[7,6,5,4,3,2,1];
将前3个元素反转,得到[5,6,7,4,3,2,1];
将剩下的4个元素反转,得到[5,6,7,1,2,3,4];
最终得到的数组就是旋转后的结果。

  这段代码中用到了一个双指针的技巧,即用两个指针start和end分别指向数组的开头和结尾,然后不停地交换它们所指向的元素,直到它们相遇为止,这样就可以实现数组反转的功能。

3. 数组的查找

  数组的查找是指在一个数组中查找一个特定的元素。在实际工作中,数组的查找操作经常用于数据检索、搜索等方面。

下面是一个使用二分查找来查找一个元素在一个已排序的数组中的位置的例子:

public static int binarySearch(int[] sortedArray, int key) {int low = 0;int high = sortedArray.length - 1;while (low <= high) {int mid = (low + high) / 2;if (sortedArray[mid] < key) {low = mid + 1;} else if (sortedArray[mid] > key) {high = mid - 1;} else {return mid;}}return -1;
}

代码分析:

  这是一个二分查找算法的实现,接受一个已排序的整数数组和一个要查找的元素,返回该元素在数组中的索引。

  算法的核心思想是将数组取中间位置的元素与要查找的元素进行比较,如果中间元素小于要查找的元素,则在中间元素的右半部分继续查找,反之则在左半部分继续查找,直到找到要查找的元素或者数组被遍历完毕。

  在每次查找过程中,都会将数组的范围缩小一半,因此最差情况下的时间复杂度为O(log n)。

  如果要查找的元素不存在于数组中,则返回-1。

4. 数组的去重

  数组的去重是将一个数组中重复的元素去掉,只保留不重复的元素。在实际工作中,数组的去重操作常用于数据清洗、统计等方面。

下面是一个将数组中重复元素去掉的例子:

public static int[] removeDuplicates(int[] array) {if (array == null || array.length == 0) {return array;}int len = array.length;Arrays.sort(array);int j = 0;for (int i = 0; i < len - 1; i++) {if (array[i] != array[i + 1]) {array[j++] = array[i];}}array[j++] = array[len - 1];return Arrays.copyOf(array, j);
}

代码分析:

  这段代码实现了一个移除数组中重复元素的方法,算法的时间复杂度是O(nlogn),其中n为数组的长度。

具体操作步骤如下:

  1. 首先对数组进行排序,使相同的元素排在一起。

  2. 然后使用双指针法,定义指针i和指针j,指针i从0开始,依次遍历数组中的元素,指针j记录不重复的元素个数。

  3. 当发现array[i]与array[i+1]不相同时,说明发现了新元素,将它加入到结果数组,并将指针j向后移动一位。

  4. 最后将数组截取长度为j,返回不重复的元素数组。

  总的来说,这个算法在空间复杂度上比较低,只需要O(1)的额外空间用于记录指针,但时间复杂度偏高,相对于使用哈希表或者Set等数据结构,其速度较慢。

5. 在算法中使用数组

  在算法中,数组通常用于优化算法和提高性能。例如,我们可以使用一个数组来记录某个数出现的次数,然后快速找到出现次数最多的数。

下面是一个找出数组中出现次数最多的元素的例子:

package com.example.javase.se.array;import java.util.HashMap;
import java.util.Map;/*** @Author ms* @Date 2023-11-14 21:11*/
public class ArrayTest7 {public static int findMostFrequentElement(int[] elements) {int n = elements.length;Map<Integer, Integer> count = new HashMap<>();for (int i = 0; i < n; i++) {if (!count.containsKey(elements[i])) {count.put(elements[i], 0);}count.put(elements[i], count.get(elements[i]) + 1);}int mostFrequentElement = -1, maxCount = -1;for (Map.Entry<Integer, Integer> entry : count.entrySet()) {if (entry.getValue() > maxCount) {mostFrequentElement = entry.getKey();maxCount = entry.getValue();}}return mostFrequentElement;}public static void main(String[] args) {}
}

代码分析:

  这是一个 Java 类,名为 ArrayTest7。它包含了一个静态方法 findMostFrequentElement,用于查找给定数组中出现次数最多的元素。在该方法中,首先创建了一个名为 count 的 HashMap,用于存储每个元素出现的次数。然后,遍历了整个数组元素,并在 count 中更新了相应元素的出现次数。接下来,使用循环遍历 count 中的所有元素,并找出出现次数最多的元素,并将其值赋给了 mostFrequentElement 变量。最后,该方法返回了出现次数最多的元素。在 main 方法中,没有任何代码。

执行结果:

在这里插入图片描述

小结

  数组是Java中常用的数据结构之一,能够优化算法并提高性能。除了常规的数组操作之外,还有很多有趣且实用的应用场景,如二维数组的转置、数组的旋转、查找、去重等操作,以及在算法中使用数组等。这些应用场景在实际工作中也很常见,但并不为人所知。希望本文能为开发者提供一些帮助。

总结

  本文介绍了数组常用但不为人知的几种应用场景,包括二维数组的转置、数组的旋转、查找、去重等操作,以及在算法中使用数组等。这些应用场景在实际工作中也很常见,但并不为人所知。通过学习这些应用场景,可以更好地优化算法并提高性能,同时也能够帮助开发者更好地应对实际工作中的问题。

  总的来说,本文对数组的应用场景进行了详细的讲解,并提供了相应的示例代码和测试用例。对于想要提高编程技术的开发者来说,本文是一篇不错的学习资料,值得一读。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

相关文章:

数组还可以这样用!常用但不为人知的应用场景

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…...

C++模板元编程:编译时的魔法

1. 引言 在C的世界中&#xff0c;模板元编程是一种在编译时执行计算的强大技术。它允许开发者编写高度灵活和高效的代码&#xff0c;这些代码可以在不牺牲性能的前提下&#xff0c;根据类型和值的不同而变化。本文将深入探讨模板元编程的奥秘&#xff0c;并展示如何在现代C开发…...

SQL进阶day10————多表查询

目录 1嵌套子查询 1.1月均完成试卷数不小于3的用户爱作答的类别 1.2月均完成试卷数不小于3的用户爱作答的类别 ​编辑1.3 作答试卷得分大于过80的人的用户等级分布 2合并查询 2.1每个题目和每份试卷被作答的人数和次数 2.2分别满足两个活动的人 3连接查询 3.1满足条件…...

debug调试_以Pycharm为例

文章目录 作用步骤打断点调试调试窗口 作用 主要是检查逻辑错误&#xff0c;而非语法错误。 步骤 打断点 在需要调试的代码行前打断点&#xff0c;执行后会停顿在断点位置&#xff08;不运行&#xff09; 调试 右键“debug”&#xff0c;或者直接点击右上角的小虫子 调试…...

wms第三方海外仓系统:如何为中小型海外仓注入新活力

对于中小型海外仓来说&#xff0c;想在大型集团海外仓同台竞争中获得优胜&#xff0c;提升其管理效率是非常关键的一环。 我们所熟知的wms系统&#xff0c;也就是第三方成熟海外仓系统&#xff0c;正是这些海外仓企业提升管理水平、降低成本的重要工具。 1、wms第三方海外仓系…...

html是什么?http是什么?

html Html是什么&#xff1f;http是什么&#xff1f; Html 超文本标记语言&#xff1b;负责网页的架构&#xff1b; http(&#xff08;HyperText Transfer Protocol&#xff09;超文本传输协议&#xff1b; https&#xff08;全称&#xff1a;Hypertext Transfer Protocol …...

L1-007 念数字js实现

异步解法 const readline require("readline"); const rl readline.createInterface({input: process.stdin,output: process.stdout, }); const input_arr [];//储存数据 rl.on(line, function (line) {input_arr.push(line); } ); rl.on(close, function () {/…...

Perl 运算符

Perl 运算符 Perl 是一种功能强大的编程语言&#xff0c;广泛应用于系统管理、网络编程、GUI 创建、数据库访问等众多领域。Perl 的语法灵活&#xff0c;支持多种编程范式&#xff0c;包括过程式、面向对象和函数式编程。在 Perl 中&#xff0c;运算符扮演着重要的角色&#x…...

语法04 C++ 标准输入语句

标准输入 使用格式&#xff1a;cin >> 输入的意思就是把一个值放到变量里面去&#xff0c;也就是变量的赋值&#xff0c;这个值是由我们自己输入的。 (注意:输入变量前要先定义&#xff0c;输入完之后要按Enter键。) 输入多个变量&#xff0c;与输出类似&#xff0c;…...

python数据分析--- ch6-7 python容器类型的数据及字符串

python数据分析---ch6-7 python容器类型的数据及字符串 1. Ch6--容器类型的数据1.1 序列1.1.1 序列的索引操作1.1.2 加和乘操作1.1.3 切片操作1.1.4 成员测试 1.2 列表1.2.1 创建列表1.2.2 追加元素1.2.3 插入元素1.2.4 替换元素1.2.5 删除元素1.2.6 列表排序&#xff08;1&…...

【Linux取经路】守护进程

文章目录 一、前台进程和后台进程二、Linux 的进程间关系三、setsid——将当前进程设置为守护进程四、daemon——设置为守护进程五、结语 一、前台进程和后台进程 Linux 中每一次用户登录都是一个 session&#xff0c;一个 session 中只能有一个前台进程在运行&#xff0c;键盘…...

Nginx之文件下载服务器

1.概述 在对外分享文件时&#xff0c;利用Nginx搭建一个简单的下 载文件管理服务器&#xff0c;文件分享就会变得非常方便。利 用Nginx的诸多内置指令可实现自动生成下载文件列表 页、限制下载带宽等功能。配置样例如下&#xff1a; server {listen 8080;server_name localhos…...

OpenCV学习(4.11) OpenCV中的图像转换

1. 目标 在本节中&#xff0c;我们将学习 使用OpenCV查找图像的傅立叶变换利用Numpy中可用的FFT功能傅立叶变换的一些应用我们将看到以下函数&#xff1a;**cv.dft()** &#xff0c;**cv.idft()** 等 理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像&#xff0c;使用…...

2024.6.13每日一题

LeetCode 子序列最大优雅度 题目链接&#xff1a;2813. 子序列最大优雅度 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个长度为 n 的二维整数数组 items 和一个整数 k 。 items[i] [profiti, categoryi]&#xff0c;其中 profiti 和 categoryi 分别表示第 i…...

Linux命令详解(2)

文本处理是Linux命令行的重要应用之一。通过一系列强大的命令&#xff0c;用户可以轻松地对文本文件进行编辑、查询和转换。 cat&#xff1a; 这个命令用于查看文件内容。它可以一次性显示整个文件&#xff0c;或者分页显示。此外&#xff0c;cat 还可以用于合并多个文件的内容…...

iOS ReactiveCocoa MVVM

学习了在MVVM中如何使用RactiveCocoa&#xff0c;简单的写上一个demo。重点在于如何在MVVM各层之间使用RAC的信号来更方便的在各个层之间进行响应式数据交互。 demo需求&#xff1a;一个登录界面(登录界面只有账号和密码都有输入&#xff0c;登录按钮才可以点击操作)&#xff0…...

图文解析ASN.1中BER编码:结构类型、编码方法、编码实例

本文将详细介绍ASN.1中的BER编码规则&#xff0c;包括其编码机制、数据类型表示、以及如何将复杂的数据结构转换为二进制数据。通过本文的阅读&#xff0c;读者将对ASN.1中的BER编码有一个全面的理解。 目录 一.引言 二.BER编码基本结构 ▐ 1. 类型域&#xff08;Type&#…...

jQuery如何停止动画队列

在jQuery中&#xff0c;你可以使用.stop()方法来停止动画队列。.stop()方法有几个可选的参数&#xff0c;可以用来控制停止动画的方式。 以下是.stop()方法的基本用法和一些参数选项&#xff1a; 无参数&#xff1a;立即停止当前动画&#xff0c;并跳到最后的状态。后续的动画…...

vue3+electron搭建桌面软件

vue3electron开发桌面软件 最近有个小项目, 客户希望像打开 网易云音乐 那么简单的运行起来系统. 前端用 Vue 会比较快一些, 因此决定使用 electron 结合 Vue3 的方式来完成该项目. 然而, 在实施过程中发现没有完整的博客能够记录从创建到打包的流程, 摸索一番之后, 随即梳理…...

oracle常用经典SQL查询

oracle常用经典SQL查询(转贴) oracle常用经典SQL查询 常用SQL查询&#xff1a; 1、查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name d.tablespace_name grou…...

Android shell 常用 debug 命令

目录 1、查看版本2、am 命令3、pm 命令4、dumpsys 命令5、sed命令6、log定位查看APK进程号7、log定位使用场景 1、查看版本 1.1、Android串口终端执行 getprop ro.build.version.release #获取Android版本 uname -a #查看linux内核版本信息 uname -r #单独查看内核版本 1.2、…...

Unity3D Shader数据传递语法详解

在Unity3D中&#xff0c;Shader是用于渲染图形的一种程序&#xff0c;它定义了物体在屏幕上的外观。Shader通过接收输入数据&#xff08;如顶点位置、纹理坐标、光照信息等&#xff09;并计算像素颜色来工作。为了使得Shader能够正确运行并产生期望的视觉效果&#xff0c;我们需…...

计算机组成原理(五)

一、链式查询方式 接口的优先级固定不变 在链式查询的情况下&#xff0c;设备的优先级通常与其在链中的位置有关。具体来说&#xff0c;越靠近查询链的起始位置的设备通常具有较高的优先级&#xff0c;而越靠近链的末尾位置的设备优先级较低。 优点&#xff1a; 简单实现&am…...

后端项目实战--瑞吉外卖项目软件说明书

瑞吉外卖项目软件说明书 一、项目概述 瑞吉外卖项目是一个外卖服务平台&#xff0c;用户可以通过该平台浏览餐厅菜单、下单、支付以及追踪订单状态。产品原型就是一款产品成型之前的一个简单的框架&#xff0c;就是将页面的排版布局展现出来&#xff0c;使产品得初步构思有一…...

LeetCode | 27.移除元素

这道题的思路和26题一模一样&#xff0c;由于要在元素组中修改&#xff0c;我们可以设置一个index表示目前要修改原数组的第几位&#xff0c;由于遍历&#xff0c;访问原数组永远会在我们修改数组之前&#xff0c;所以不用担心数据丢失的问题&#xff0c;一次遍历数组&#xff…...

为什么要选择AWS?AWS的优势有哪些?

亚马逊云服务器&#xff08;Amazon Web Services&#xff0c;AWS&#xff09;是全球领先的云计算服务提供商之一&#xff0c;其提供的云服务器是在全球范围内可用的弹性计算服务。对于很多用户来说&#xff0c;他们可能会担心亚马逊云服务器是否会对服务器的使用进行限制。以下…...

【Intel CVPR 2024】通过图像扩散模型生成高质量360度场景,只需要一个语言模型

在当前人工智能取得突破性进展的时代&#xff0c;从单一输入图像生成全景场景仍是一项关键挑战。大多数现有方法都使用基于扩散的迭代或同步多视角内绘。然而&#xff0c;由于缺乏全局场景布局先验&#xff0c;导致输出结果存在重复对象&#xff08;如卧室中的多张床&#xff0…...

postman教程-21-Newman运行集合生成测试报告

上一小节我们Postman Newman的安装方法&#xff0c;本小节我们讲解一下Postman Newman的具体使用方法。 使用Newman运行集合 1、导出Postman集合&#xff1a; 在Postman中&#xff0c;选择你想要运行的集合&#xff0c;然后点击“导出”按钮&#xff0c;选择导出为“Collect…...

基于条件谱矩的时间序列分析(以轴承故障诊断为例,MATLAB)

谱矩方法可以对数据的表面形貌做较为细致的描述&#xff0e;它以随机过程为理论基础&#xff0c;用各阶谱矩及统计不变量等具体的参数表征表面的几何形态&#xff0c;算术平均顶点曲率是一种基于四阶谱矩的统计不变量。 鉴于此&#xff0c;采用条件谱矩方法对滚动轴承进行故障诊…...

ArcGIS Pro 3.0加载在线高德地图

1、打开ArcGIS Online官网&#xff0c;登录自己的账号&#xff0c;登录后效果如下图所示 官网地址&#xff1a;https://www.arcgis.com/home/webmap/viewer.html 2、点击Add&#xff0c;选择Add Layer from Web&#xff0c;如下图所示 3、在显示的Add Layer from Web页面内&am…...

论述网站建设整个流程/长沙本地推广联系电话

网络&#xff1a;简述路由算法之动态路由算法在计算机网络中&#xff0c;路由器的一个很重要责任就是要在端对端的节点中找出一条最佳路径出来&#xff0c;通过自己与相邻节点之间的信息&#xff0c;来计算出从自己位置到目的节点之间的最佳线路&#xff0c;这种算法我们可以理…...

wordpress伪静态路径写法/大数据精准营销获客

本文首先简单介绍了垃圾收集的常见方式&#xff0c;然后再分析了G1收集器的收集原理&#xff0c;相比其他垃圾收集器的优势&#xff0c;最后给出了一些调优实践。 一&#xff0c;什么是垃圾回收 首先&#xff0c;在了解G1之前&#xff0c;我们需要清楚的知道&#xff0c;垃圾回…...

中国建造师人才网官网/如何结合搜索检索与seo推广

以后在这个分类里面写的所有都是参考《Java 解惑》里的内容来写的。可以这么说&#xff0c;只有程序部分内容是自己添加的&#xff0c;只是为了更好地理解。 谜题1&#xff1a;奇数性 源程序&#xff1a; Oddity public class Oddity {/* *当取余操作返回一个非零的结果时&…...

建设网站查询/售卖链接

1.逍遥模拟器安装 地址: 点我下载 2.连接注意事项 a. 复制adb等文件 HBuilder安装目录中tools文件夹下的三个文件adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll到逍遥模拟器安装目录的MEmu的中(  注:    ①.我的HBuilder目录 E:\pheonix\installpath\HBuilder.7.5.1.windows\H…...

网页显示站点不安全/优化推广方案

或许大家会感到好奇&#xff0c;为什么现在越来越多的高校学子会主动去外面参加培训班呢&#xff0c;而且人数也越来越多呢&#xff1f;其实一般来说有供给就有需求。现在教育机构的出现绝非偶然&#xff0c;他们的产生和发展都是符合社会发展潮流的。 现在的大学大部分教授的…...

我本沉默传奇新开网站/免费外链网盘

记录搭建redis集群以及使用过程中踩过的坑 redis分片集群不支持跨分区操作&#xff0c;意思是说3个master集群&#xff0c;key1存在m1上&#xff0c;key2存在m2上&#xff0c;key3存在m3上&#xff0c; redis命令行执行 mget key1,key2,key3 执行失败&#xff0c;会报keys hav…...