Java面试黄金宝典22
1. 树的中序遍历,除了递归和栈还有什么实现方式
- 定义
Morris 遍历是一种用于二叉树遍历的算法,它利用树中大量空闲的空指针,在不使用额外栈空间和递归的情况下,完成树的遍历。通过建立临时的线索连接,使得可以按照中序遍历的顺序访问节点,访问完后再将这些线索连接恢复。
- 要点
- 线索连接构建:寻找当前节点左子树的最右节点,将其右指针指向当前节点,以便在遍历完左子树后能回到当前节点。
- 节点访问时机:若当前节点的左子树为空,或者左子树的最右节点的右指针已经指向当前节点,说明左子树已经遍历完,此时访问当前节点,并继续遍历右子树。
- 复杂度分析:时间复杂度为 O(n),空间复杂度为 O(1),非常适合处理大规模数据的二叉树遍历。
- 应用
- 数据库索引遍历:在数据库的 B - 树索引中,使用 Morris 遍历可以高效地访问数据,减少额外空间开销,提高数据检索效率。
- 嵌入式系统开发:嵌入式系统内存资源有限,Morris 遍历能在不占用过多内存的情况下完成二叉树操作,如文件系统的目录树遍历。
java
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class MorrisInorderTraversal {public void inorderTraversal(TreeNode root) {TreeNode current = root;while (current != null) {if (current.left == null) {System.out.print(current.val + " ");current = current.right;} else {TreeNode pre = current.left;while (pre.right != null && pre.right != current) {pre = pre.right;}if (pre.right == null) {pre.right = current;current = current.left;} else {pre.right = null;System.out.print(current.val + " ");current = current.right;}}}}
}
2. BFS 和 DFS 的区别
- 定义
- BFS(广度优先搜索):从起始节点开始,逐层地访问节点,先访问距离起始节点最近的所有节点,然后再依次访问距离更远的节点。通常使用队列来实现,将起始节点入队,然后不断从队列中取出节点,将其未访问的邻接节点入队。
- DFS(深度优先搜索):从起始节点开始,沿着一条路径尽可能深地访问节点,直到无法继续,然后回溯到上一个节点,继续探索其他路径。可以使用递归或栈来实现,递归时函数调用栈起到栈的作用。
- 要点
- 访问顺序:BFS 是逐层访问,能保证找到的路径是最短路径;DFS 是沿着一条路径深入访问,更适合探索连通性。
- 数据结构:BFS 使用队列,先进先出;DFS 可以使用递归或栈,后进先出。
- 空间复杂度:BFS 的空间复杂度取决于树的最大宽度,DFS 的空间复杂度取决于树的最大深度。
- 应用
- BFS 应用
- 地图导航:在地图中寻找两点之间的最短路径,BFS 可以快速找到最优解。
- 社交网络分析:查找某个用户的一度、二度好友等。
- DFS 应用
- 迷宫求解:可以快速找到一条可行路径。
- 编译器的语法分析:分析代码的语法结构,检查代码的正确性。
3. 给定 n 个数,寻找第 k 小的数
- 定义
快速选择算法是基于快速排序思想的一种选择算法,用于在未排序的数组中找到第 k 小(或第 k 大)的元素。通过选择一个基准元素,将数组分为两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素,然后根据基准元素的位置与 k 的关系,决定在左边或右边部分继续查找。
- 要点
- 基准元素选择:可以选择数组的第一个元素、最后一个元素或随机选择一个元素作为基准元素。
- 分区操作:将数组分为两部分,左边部分小于等于基准元素,右边部分大于等于基准元素。
- 复杂度分析:时间复杂度平均为 O(n),最坏情况下为 O(n2)。
- 应用
- 数据分析:在大量数据中找出中位数或其他分位数。
- 游戏开发:在游戏排行榜中找出排名第 k 的玩家。
java
public class KthSmallestElement {public int findKthSmallest(int[] nums, int k) {return quickSelect(nums, 0, nums.length - 1, k - 1);}private int quickSelect(int[] nums, int left, int right, int k) {if (left == right) {return nums[left];}int pivotIndex = partition(nums, left, right);if (k == pivotIndex) {return nums[k];} else if (k < pivotIndex) {return quickSelect(nums, left, pivotIndex - 1, k);} else {return quickSelect(nums, pivotIndex + 1, right, k);}}private int partition(int[] nums, int left, int right) {int pivot = nums[right];int i = left - 1;for (int j = left; j < right; j++) {if (nums[j] <= pivot) {i++;swap(nums, i, j);}}swap(nums, i + 1, right);return i + 1;}private void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}
4. 求 1000 以内的素数
- 定义
埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种用于找出一定范围内所有素数的算法。其基本思想是从 2 开始,将每个素数的倍数标记为合数,直到遍历完所有小于等于根号n的数,剩下未被标记的数即为素数。
- 要点
- 初始化标记数组:创建一个布尔数组,用于标记每个数是否为素数。
- 标记合数:从 2 开始,将每个素数的倍数标记为合数。
- 复杂度分析:时间复杂度为 O(nloglogn)。
- 应用
- 密码学:在生成大素数时,可以使用该算法的思想进行初步筛选。
- 数论研究:研究素数分布规律时,可使用该算法生成一定范围内的素数进行分析。
java
import java.util.ArrayList;
import java.util.List;public class PrimeNumbers {public List<Integer> findPrimes(int n) {boolean[] isPrime = new boolean[n + 1];for (int i = 2; i <= n; i++) {isPrime[i] = true;}for (int p = 2; p * p <= n; p++) {if (isPrime[p]) {for (int i = p * p; i <= n; i += p) {isPrime[i] = false;}}}List<Integer> primes = new ArrayList<>();for (int i = 2; i <= n; i++) {if (isPrime[i]) {primes.add(i);}}return primes;}
}
5. 手写希尔排序
- 定义
希尔排序是一种改进的插入排序算法,也称为缩小增量排序。它通过将原始数据分成多个子序列来改善插入排序的性能,先比较距离较远的元素,而不是像插入排序那样比较相邻元素,这样可以使元素更快地移动到它们应该在的位置附近。然后逐渐缩小间隔,直到间隔为 1,此时就是普通的插入排序。
- 要点
- 间隔序列选择:通常初始间隔为数组长度的一半,然后每次缩小一半,直到间隔为 1。不同的间隔序列会影响算法的性能。
- 子序列插入排序:对每个间隔进行插入排序。
- 复杂度分析:时间复杂度取决于间隔序列的选择,平均情况下为 O(n^1.3)。
- 应用
- 数据库排序:在数据库中对大规模数据进行排序时,希尔排序可以在一定程度上提高排序效率。
- 游戏开发中的资源排序:对游戏中的各种资源进行排序,如角色属性、关卡难度等。
java
public class ShellSort {public 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;}}}
}
6. 利用数组,实现一个循环队列类
- 定义
循环队列是一种线性数据结构,它使用数组来存储元素,并通过两个指针(front 和 rear)来表示队列的头部和尾部。当队列的尾部指针到达数组的末尾时,可以通过取模运算将其重新指向数组的开头,从而实现循环利用数组空间。
- 要点
- 初始化操作:初始化数组、队列容量、头部指针和尾部指针。
- 入队和出队操作:入队操作时,将元素插入到尾部指针的位置,并更新尾部指针;出队操作时,取出头部指针位置的元素,并更新头部指针。
- 队列状态判断:队列满的条件是
(rear + 1) % capacity == front
,队列为空的条件是front == rear
。
- 应用
- 操作系统中的任务调度:使用循环队列来管理待执行的任务,提高系统资源利用率。
- 网络数据包处理:在网络设备中,使用循环队列来缓存数据包,确保数据的有序处理。
java
class CircularQueue {private int[] queue;private int front;private int rear;private int capacity;public CircularQueue(int capacity) {this.capacity = capacity;this.queue = new int[capacity];this.front = 0;this.rear = 0;}public boolean isFull() {return (rear + 1) % capacity == front;}public boolean isEmpty() {return front == rear;}public void enqueue(int item) {if (isFull()) {System.out.println("Queue is full");return;}queue[rear] = item;rear = (rear + 1) % capacity;}public int dequeue() {if (isEmpty()) {System.out.println("Queue is empty");return -1;}int item = queue[front];front = (front + 1) % capacity;return item;}
}
7. 写一个汉诺塔问题,打印出转移路径
- 定义
汉诺塔问题是一个经典的递归问题。假设有三根柱子 A、B、C,要将 n 个盘子从柱子 A 移动到柱子 C,可以将问题分解为以下三个步骤:先将 n - 1 个盘子从柱子 A 移动到柱子 B,再将第 n 个盘子从柱子 A 移动到柱子 C,最后将 n - 1 个盘子从柱子 B 移动到柱子 C。
- 要点
- 递归函数设计:使用递归函数来解决问题,递归函数的参数包括盘子的数量、起始柱子、辅助柱子和目标柱子。
- 递归终止条件:递归的终止条件是盘子数量为 1,此时直接将盘子从起始柱子移动到目标柱子。
- 应用
- 算法教学:作为递归算法的经典案例,帮助学生理解递归的思想和实现方法。
- 人工智能中的搜索算法:汉诺塔问题的求解过程可以类比为搜索算法中的状态转移,用于研究搜索策略。
java
public class HanoiTower {public void hanoi(int n, char source, char auxiliary, char target) {if (n == 1) {System.out.println("Move disk 1 from " + source + " to " + target);return;}hanoi(n - 1, source, target, auxiliary);System.out.println("Move disk " + n + " from " + source + " to " + target);hanoi(n - 1, auxiliary, source, target);}
}
8. 写一个二叉树前序遍历的代码
- 定义
前序遍历是一种二叉树的遍历方式,按照根节点 -> 左子树 -> 右子树的顺序访问节点。可以使用递归或栈来实现。递归实现是先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树;栈实现是将根节点入栈,然后不断从栈中取出节点,访问该节点,将其右子节点和左子节点依次入栈(注意顺序,先右后左)。
- 要点
- 递归实现要点:递归函数的设计和递归终止条件的判断。
- 栈实现要点:栈的操作,包括入栈和出栈,以及节点入栈的顺序。
- 应用
- 文件系统遍历:在文件系统中,使用前序遍历可以快速访问根目录下的所有文件和子目录。
- XML 文档解析:解析 XML 文档时,前序遍历可以按照文档的层次结构依次访问节点。
java
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}import java.util.Stack;public class PreorderTraversal {// 递归实现public void preorderRecursive(TreeNode root) {if (root != null) {System.out.print(root.val + " ");preorderRecursive(root.left);preorderRecursive(root.right);}}// 栈实现public void preorderIterative(TreeNode root) {if (root == null) {return;}Stack<TreeNode> stack = new Stack<>();stack.push(root);while (!stack.isEmpty()) {TreeNode node = stack.pop();System.out.print(node.val + " ");if (node.right != null) {stack.push(node.right);}if (node.left != null) {stack.push(node.left);}}}
}
9. 写一个多叉树实现,并层次遍历的代码
- 定义
多叉树是一种每个节点可以有多个子节点的树结构。层次遍历是按照树的层次依次访问节点,通常使用队列来实现。将根节点入队,然后不断从队列中取出节点,访问该节点,并将其所有子节点入队。
- 要点
- 多叉树节点定义:定义多叉树节点类,包含节点值和子节点列表。
- 层次遍历实现:使用队列进行层次遍历,确保按层次顺序访问节点。
- 应用
- 文件系统目录结构表示:文件系统的目录结构可以用多叉树表示,层次遍历可以用于查看目录下的所有文件和子目录。
- 组织架构图表示:企业的组织架构可以用多叉树表示,层次遍历可以用于查看各个部门和员工的信息。
java
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;class TreeNode {int val;List<TreeNode> children;TreeNode(int val) {this.val = val;this.children = new ArrayList<>();}
}public class NaryTreeLevelOrderTraversal {public void levelOrderTraversal(TreeNode root) {if (root == null) {return;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {TreeNode node = queue.poll();System.out.print(node.val + " ");for (TreeNode child : node.children) {queue.offer(child);}}}
}
10. 从一堆字符串中,去除重复的字符,并输出
- 定义
可以使用哈希集合(HashSet)来去除字符串中重复的字符。遍历字符串中的每个字符,将其添加到哈希集合中,由于哈希集合不允许重复元素,重复的字符会自动被过滤掉。最后将哈希集合中的字符拼接成字符串输出。
- 要点
- 哈希集合的使用:利用哈希集合不允许重复元素的特性来过滤重复字符。
- 字符串拼接:将哈希集合中的字符按顺序拼接成字符串。
- 复杂度分析:时间复杂度为 O(n),其中 n 是字符串的长度。
- 应用
- 数据清洗:在处理文本数据时,去除重复字符可以减少数据冗余,提高数据质量。
- 信息检索:在构建索引时,去除重复字符可以减少索引的大小,提高检索效率。
java
import java.util.HashSet;
import java.util.Set;public class RemoveDuplicateCharacters {public String removeDuplicates(String str) {Set<Character> set = new HashSet<>();StringBuilder result = new StringBuilder();for (char c : str.toCharArray()) {if (set.add(c)) {result.append(c);}}return result.toString();}
}
友情提示:本文已经整理成文档,可以到如下链接免积分下载阅读
https://download.csdn.net/download/ylfhpy/90546476
相关文章:
Java面试黄金宝典22
1. 树的中序遍历,除了递归和栈还有什么实现方式 定义 Morris 遍历是一种用于二叉树遍历的算法,它利用树中大量空闲的空指针,在不使用额外栈空间和递归的情况下,完成树的遍历。通过建立临时的线索连接,使得可以按照中…...
英伟达GB300新宠:新型LPDDR5X SOCAMM内存
随着人工智能(AI)、机器学习(ML)和高性能计算(HPC)应用的快速发展,对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计,以满足这些严格…...
验证Linux多进程时间片切换的程序
一、软件需求 在同时运行多个CPU密集型进程时,需采集以下统计信息: 当前运行在逻辑CPU上的进程ID每个进程的运行进度百分比 实验程序设计要求: 1. 命令行参数 参数说明示例值n并发进程数量3total总运行时长(毫秒&…...
Linux学习笔记(应用篇四)
基于I.MX6ULL-MINI开发板 输入设备tslib库 输入设备 触摸屏 触摸屏设备是绝对位移设备可以上报绝对位移事件 触摸可分为单触摸和双触摸 BTN_TOUCH :按压触摸屏和松开会触发上报,滑动时不会 单触摸上报事件 ABS_X: X 轴绝对位移坐标值 ABS_Y…...
linux基本命令(1)--linux下的打包命令 -- tar 和gzip
tar 解压 ,打包 语法:tar [主选项辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 主选项: c 创建新的档案文件。如果用户想备…...
【Linux内核系列】:文件ELF格式详解
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: “人生没有白走的路,你踩过的荆棘、蹚过的泥泞,都会在某一刻,变成你脚下的风。” ★★★ 本文前置…...
CubeMx ——新建工程
新建工程 选择芯片 设置主频 选择调试口 选择晶振口 设置 GPIO 输出 工程设置 LED 闪烁 /* USER CODE BEGIN WHILE */while (1){HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_10);HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */...
使用postcss-px-to-viewport-8-plugin将页面转响应式
使用postcss-px-to-viewport-8-plugin将页面转响应式 背景 公司最近接了个项目,其中要求部分页面在移动端正常显示,第一方案是使用响应式,但是设计稿最后出的和Web端差别较大同时两端的功能不是完全对齐的,所以决定使用两个模块…...
Java---类与对象
类与对象 前言:一、面向对象二、类的定义1.类的定义格式2.访问修饰限定符 三、类的实例化四、this引用1.this引用2.this引用的原因 五、对象的构造和初始化1.初始化对象2.构造方法(1).构造方法的概念:(2).特性:(3).this调用:3.就地初始化4.默…...
告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验
告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验 哈喽小伙伴们好,我是Stark-C~ 先如今,家里的电子产品越来越多,手机、平板、电脑三件套已经是基础配置,还有相机、Switch、智能手表等,这些产品用…...
基于springboot+vue的农产品电商平台
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0
问题描述: 从日志看出,dom0运行android_kernel,刚开始运行就会crash,引发panic 解决及其原因分析: 最终问题得到解决,发现是前期在调试汇编阶段代码时,增加了汇编打印的指令,注释掉这些指令,问题得到解决。…...
MySQL 语句
MySQL 语句教程博客 MySQL 是目前广泛应用的关系型数据库管理系统,本文将详细介绍 MySQL 中常用的 SQL 语句及其应用,内容主要涵盖以下部分: DDL(数据定义语言) DML(数据操作语言) DQL&#…...
MySQL General Log
MySQL General Log MySQL General Log General Log 的开启General Log 的用法log_output 参数 MySQL主从复制:https://blog.csdn.net/a18792721831/article/details/146117935 MySQL Binlog:https://blog.csdn.net/a18792721831/article/details/146606…...
自动关机监控器软件 - 您的电脑节能助手
## 自动关机监控器 - 您的电脑节能助手 自动关机监控器是一款基于Python开发的实用工具,旨在帮助用户节省电力资源并延长电脑使用寿命。该程序通过监控用户的鼠标和键盘活动,在设定的无活动时间后自动关闭计算机,特别适合需要长时间离开电脑但…...
基于改进粒子群算法的多目标分布式电源选址定容规划(附带Matlab代码)
通过分析分布式电源对配电网的影响,以有功功率损耗、电压质量及分布式电源总容量为优化目标,基于模糊理论建立了分布式电源在配电网中选址定容的多目标优化模型,并提出了一种改进粒子群算法进行求解。在算例仿真中,基于IEEE-14标准…...
解锁健康密码:拥抱多元养生新方式
在追求高质量生活的当下,健康养生不再是一句空洞的口号,而是融入到日常生活的方方面面。它不仅关乎我们的身体健康,更与心理状态和生活品质息息相关。下面,就为大家介绍一些实用的养生知识,帮助大家开启健康生活之旅。…...
@Slf4j注解
Slf4j注解是Lombok库提供的一个注解,用于简化日志记录器的创建。使用该注解后,无需手动创建Logger实例,编译器会自动帮你完成这一步。以下是使用Slf4j注解打印日志的步骤和示例: 使用步骤 1. 引入依赖:在项目中引入SL…...
firewall-cmd添加访问规则
若要使用 **firewall-cmd** 允许 192.168.3.0/24 网段访问本地的 8088 端口,你可以按照以下步骤操作。 临时允许访问 如果你仅需临时允许该网段访问 8088 端口,可使用如下命令: firewall-cmd --add-rich-rulerule family"ipv4" …...
【Linux网络与网络编程】02.初识Socket编程
1. 数据传输的目的 前一篇文章中我们讲解了网络传输的流程,那么网络传输的目的是什么呢?难道我们只是将数据从一台主机传输到另一台主机吗? 当然不是的!因为数据是给人用的。比如:聊天是人在聊天,下载是人…...
Python库()
1.概念 Matplotlib 库:是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂 Matplotlib 图形组成: Figure:指整个图形…...
CVPR-2025 | 南洋理工基于图表示的具身导航统一框架!UniGoal:通用零样本目标导航方法
作者:Hang Yin 1 ^{1} 1, Xiuwei Xu 1 ^{1} 1, Linqing Zhao 1 ^{1} 1, Ziwei Wang 2 ^{2} 2, Jie Zhou 1 ^{1} 1, Jiwen Lu 1 ^{1} 1单位: 1 ^{1} 1南洋理工大学, 2 ^{2} 2清华大学论文标题:UniGoal: Towards Universal Zero-sho…...
Banner区域
div下 justify-content:space-between 左侧测导航left 在这里插入图片描述 在这里插入图片描述...
【C++】C++11介绍列表初始化右值引用和移动语义
个人主页 : zxctscl 如有转载请先通知 文章目录 1. C11简介2. 统一的列表初始化2.1{}初始化2.2 std::initializer_list 3. 声明3.1 auto3.2 decltype3.3 nullptr 4. 范围for循环4.1 范围for的语法4.2 范围for的使用条件 5. STL中一些变化6. 右…...
基于Spring Boot的高校普法系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
算法为舟 思想为楫:AI时代,创作何为?
在科技浪潮汹涌澎湃的当下,AI技术以前所未有的态势席卷各个领域,创作领域亦未能幸免。当生成式AI展现出在剧本撰写、诗歌创作、图像设计等方面的惊人能力时,人类创作者仿佛置身于文明演化的十字路口,迷茫与困惑交织,兴奋与担忧并存。在AI时代,创作究竟该何去何从?这不仅…...
GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现
最近不少 AI 爱好者、设计师、Vlogger 在社交平台晒出了 GPT-4o 生成的梦幻图像,尤其是吉卜力风格的作品——柔和光影、日系构图、治愈色彩、富有情感的角色表达,一下子击中了无数人的“童年回忆 审美舒适区”。 🎨 下面是一些 GPT-4o 实际生…...
无线通信技术(二):ITU、3GPP及传统波段对无线频谱的划分
本文介绍国际标准组织ITU、3GPP和传统波段对无线频谱的划分 。 一.ITU波段划分 国际电信联盟(ITU)将无线电频谱划分为多个频段,并根据频率范围和业务需求分配用途。 ITU对无线频谱的划分 带号频带名称频率范围波长范围波段名称典型应用…...
[Python学习日记-88] 并发编程之多进程 —— 队列与生产者消费者模型
[Python学习日记-88] 并发编程之多进程 —— 队列与生产者消费者模型 简介 队列 一、队列的介绍 二、队列的使用 生产者消费者模型 一、为什么要使用生产者消费者模型 二、什么是生产者消费者模型 三、生产者消费者模型的优势 四、生产者消费者模型的实现 JoinableQ…...
Vue学习笔记集--computed
computed 在 Vue 3 的 Composition API 中,computed 用于定义响应式计算属性 它的核心特性是自动追踪依赖、缓存计算结果(依赖未变化时不会重新计算) 基本用法 1. 定义只读计算属性 import { ref, computed } from vue;const count ref(…...
python之多线程,多进程理解
目录 一,什么是多线程多进程 1,1 多线程 1.2 多进程 二,多线程 2.1 使用threading模块 三,多进程 3.1 使用multiprocessing模块 3.2 多进程的优势 3.3 进程间的通信 四,如何选择多进程还是多线程 五,异步编程的替代方案(协程) 在开发过程中,提升程序的并…...
3月29日星期六今日早报简报微语报早读
3月29日星期六,农历三月初一,早报#微语早读。 1、全国公立医疗机构自3月31日起全面停止收取门诊预交金; 2、永辉超市“胖东来调改店”已达47家店 一线员工薪酬涨幅50%以上; 3、两孩家庭补10万,三孩家庭补20万&#…...
栈:隐匿于计算机科学长卷的璀璨明珠
目录 🚀前言🌟栈的概念🤔栈的两种实现形式💯数组栈实现💯链表栈实现 ⚙️数组栈与链表栈对比🐧递归与栈💻总结 🚀前言 大家好!我是 EnigmaCoder。 在计算机科学的宏大版图…...
【万字总结】前端全方位性能优化指南(七)——按需加载、虚拟列表、状态管理
现代框架高阶优化——突破复杂场景的性能临界点 当Web应用进入「十万级组件、百万级数据」的复杂场景时,传统优化手段开始触及框架底层瓶颈:Redux的单一Store引发级联渲染风暴、全量加载的首屏资源阻塞关键交互、长列表滚动导致内存飙升直至页面崩溃……这些痛点正在倒逼框架…...
合并石子 | 第十四届蓝桥杯省赛JavaB组
在桌面从左至右横向摆放着 N 堆石子。 每一堆石子都有着相同的颜色,颜色可能是颜色 0,颜色 1 或者颜色 2 中的其中一种。 现在要对石子进行合并,规定每次只能选择位置相邻并且颜色相同的两堆石子进行合并。 合并后新堆的相对位置保持不变&…...
【商城实战(94)】构建高并发的负载均衡与集群架构
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
鸿蒙开发:了解Canvas绘制
前言 本文基于Api13 系统的组件无法满足我们的需求,这种情况下就不得不自己自定义组件,除了自定义组合组件,拓展组件,还有一种方式,那就是完全的自绘制组件,这种情况,常见的场景有,比…...
Ubuntu和Windows实现文件互传
1.开启Ubuntu下的FTP服务: (1)终端输入: sudo apt-get install vsftpd(2)安装完成后: 终端输入: /etc 是 Linux 系统的全局配置文件目录,存储系统和应用程序的配置信息…...
dav_pg8_vacuum
一、VACUUM基础概念 1.1 VACUUM的作用 在PostgreSQL中,当数据被更新或删除时,系统并不会立即释放物理空间,而是将其标记为 “可重用”。 随着时间推移,表中的死元组(已删除或已被新版本覆盖的数据)会越来越…...
革新汽车安全通信技术,美格智能全系车载通信模组支持NG-eCall
根据QYR(恒州博智)的统计及预测,2024年全球汽车无线紧急呼叫(eCall)设备市场销售额达到了25.17亿美元,预计2031年将达到44.97亿美元,年复合增长率(CAGR 2025-2031)为8.8%…...
Ubuntu桌面环境下网络设置选项缺失问题解决
一、问题现象 在Ubuntu桌面环境中,网络设置界面中仅显示VPN设置,未显示常规网络配置选项,导致无法通过图形界面修改网络配置。但通过命令行工具可正常设置网络。 二、解决方案 (一)检查网络设备状态 nmcli d 发现…...
GitHub绑定本地计算机以及仓库创建跟推送指南
GitHub绑定到本地计算机 要在本地计算机上连接到你的GitHub账户,可以通过以下步骤实现: 1. 检查和安装Git 确保你的计算机上已经安装了Git。如果还没有安装,可以从Git官网下载并安装。 2. 配置Git 打开终端(macOS或Linux&…...
【数据结构】导航
【数据结构】-CSDN博客 【数据结构】next数组、nextval数组-CSDN博客...
Java内存中的Heap(堆)的作用
Java内存中的Heap(堆)的作用 在 Java 的内存模型中,Heap(堆) 是 JVM(Java Virtual Machine)管理的运行时数据区域之一,主要用于存储程序运行过程中动态分配的对象和数据。它是 Java…...
Python控制结构详解
前言 一、控制结构概述 二、顺序结构 三、选择结构(分支结构) 1. 单分支 if 2. 双分支 if-else 3. 多分支 if-elif-else 4.实际应用: 四、循环结构 1. for循环 2. while循环 3. 循环控制语句 五、异常处理(try-except)…...
2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
本来想刷省赛题呢,结果一不小心刷成国赛了 真是个小迷糊〒▽〒 但,又如何( •̀ ω •́ )✧ 记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 一、子2023-ÿ…...
JVM介绍
JVM类加载器 栈指令重排序 类的JVM内存分配 堆内存GC模型...
HTML输出流
HTML 输出流 JavaScript 中**「直接写入 HTML 输出流」**的核心是通过 document.write() 方法向浏览器渲染过程中的数据流动态插入内容。以下是详细解释: 一、HTML 输出流的概念 1. 动态渲染过程 HTML 文档的加载是自上而下逐行解析的。当浏览器遇到 <script&…...
Kafka 的高可用性
Kafka 的高可用性主要通过副本机制、ISR(In-Sync Replicas)列表和控制器 Broker 来实现。这些机制共同确保了 Kafka 集群在部分节点故障时仍然可以正常运行,数据不会丢失,并且服务不会中断。 1. 副本机制 Kafka 的副本机制是其高…...
Centos7,tar包方式部署rabbitmq-3.7.6
1. 环境准备 安装编译工具和依赖包 yum -y install make gcc gcc-c glibc-devel m4 perl openssl openssl-devel ncurses-devel ncurses-devel xz xmlto perl 2. Erlang环境搭建 版本对应:https://www.rabbitmq.com/docs/which-erlang 解压到指定目录 tar -xv…...