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

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录

  • 1456. 定长子串中元音的最大数目
  • 2269. 找到一个数字的 K 美丽值
  • 1984. 学生分数的最小差值(排序)
  • 643. 子数组最大平均数 I
  • 1343. 大小为 K 且平均值大于等于阈值的子数组数目
  • 2090. 半径为 k 的子数组平均值
  • 2379. 得到 K 个黑块的最少涂色次数
  • 1052. 爱生气的书店老板
  • 2841. 几乎唯一子数组的最大和
  • 2461. 长度为 K 子数组中的最大和
  • 1423. 可获得的最大点数(转换成找中间窗口最小)
  • 2134. 最少交换次数来组合所有的 1 II
  • 2653. 滑动子数组的美丽值⭐
    • 解法1——利用二分维护窗口中的排序(超时了)
    • 解法2——滑动窗口+暴力枚举 ⭐(牛逼的暴力枚举!🐂)
  • 567. 字符串的排列
  • 438. 找到字符串中所有字母异位词
  • 2156. 查找给定哈希值的子串⭐⭐⭐
  • 346. 数据流中的移动平均值(用队列维护窗口)
  • 1100. 长度为 K 的无重复字符子串

题单来源:https://leetcode.cn/problems/minimum-size-subarray-in-infinite-array/solutions/2464878/hua-dong-chuang-kou-on-shi-jian-o1-kong-cqawc/

1456. 定长子串中元音的最大数目

https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description/

在这里插入图片描述

提示:

1 <= s.length <= 10^5
s 由小写英文字母组成
1 <= k <= s.length

定长滑动窗口,进来一个加一个,出去一个减一个。

class Solution {public int maxVowels(String s, int k) {int n = s.length(), cnt = 0, ans = 0;Set<Character> vowel = Set.of('a', 'e', 'i', 'o', 'u');for (int l = 0, r = 0; r < n; ++r) {if (vowel.contains(s.charAt(r))) cnt++;if (r >= l + k) {if (vowel.contains(s.charAt(l))) cnt--;l++;}ans = Math.max(ans, cnt);}return ans;}
}

2269. 找到一个数字的 K 美丽值

https://leetcode.cn/problems/find-the-k-beauty-of-a-number/

在这里插入图片描述
提示:
1 <= num <= 10^9
1 <= k <= num.length (将 num 视为字符串)

以240为例,
起初 x=100,y=1. 取出 240 % 100 / 1 = 40;
之后 x=1000,y=10 取出 240 % 1000 / 10 = 24;

class Solution {public int divisorSubstrings(int num, int k) {int ans = 0;long x = 1, y = 1;for (int i = 0; i < k; ++i) x *= 10;for (; x / 10 <= num; x *= 10, y *= 10) {long z = (long)num % x / y;if (z != 0 && num % z == 0) ++ans;}return ans;}
}

1984. 学生分数的最小差值(排序)

https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/description/

在这里插入图片描述

排序之后的区间两边一定是一个最大值和一个最小值。
逐个枚举即可。

class Solution {public int minimumDifference(int[] nums, int k) {Arrays.sort(nums);int n = nums.length, ans = nums[n - 1] - nums[0];for (int l = 0, r = k - 1; r < n; ++l, ++r) {ans = Math.min(ans, nums[r] - nums[l]);}return ans;}
}

643. 子数组最大平均数 I

https://leetcode.cn/problems/maximum-average-subarray-i/description/
在这里插入图片描述

注意可能会溢出的问题。

class Solution {public double findMaxAverage(int[] nums, int k) {double ans = -10001, s = 0;for (int l = 0, r = 0; r < nums.length; ++r) {s += nums[r];if (r - l + 1 == k) {ans = Math.max(ans, s / k);s -= nums[l++];}}return ans;}
}

1343. 大小为 K 且平均值大于等于阈值的子数组数目

https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/description/

在这里插入图片描述
提示:
1 <= arr.length <= 10^5
1 <= arr[i] <= 10^4
1 <= k <= arr.length
0 <= threshold <= 10^4

class Solution {public int numOfSubarrays(int[] arr, int k, int threshold) {int ans = 0;long t = threshold * k, s = 0;for (int i = 0; i < k - 1; ++i) s += arr[i];for (int i = k - 1; i < arr.length; ++i) {s += arr[i];if (s >= t) ans++;s -= arr[i - k + 1];}return ans;}
}

2090. 半径为 k 的子数组平均值

https://leetcode.cn/problems/k-radius-subarray-averages/description/

在这里插入图片描述
提示:

n == nums.length
1 <= n <= 10^5
0 <= nums[i], k <= 10^5

用 s 维护长度为 2*k+1 窗口内所有值的总和。

class Solution {public int[] getAverages(int[] nums, int k) {int n = nums.length;int[] ans = new int[n];Arrays.fill(ans, -1);long s = 0, l = 2 * k + 1;for (int i = 0; i < 2 * k && i < n; ++i) s += nums[i];for (int i = 2 * k; i < n; ++i) {s += nums[i];ans[i - k] = (int)(s / l);s -= nums[i - 2 * k];}return ans;}
}

2379. 得到 K 个黑块的最少涂色次数

https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/description/

在这里插入图片描述

提示:
n == blocks.length
1 <= n <= 100
blocks[i] 要么是 'W' ,要么是 'B' 。
1 <= k <= n

固定长度滑动窗口。

class Solution {public int minimumRecolors(String blocks, int k) {int ans = k, n = blocks.length(), s = 0;for (int i = 0; i < k - 1; ++i) {if (blocks.charAt(i) == 'W') s++;}for (int i = k - 1; i < n; ++i) {if (blocks.charAt(i) == 'W') s++;ans = Math.min(ans, s);if (blocks.charAt(i - k + 1) == 'W') s--;}return ans;}
}

1052. 爱生气的书店老板

https://leetcode.cn/problems/grumpy-bookstore-owner/description/

在这里插入图片描述

提示:

n == customers.length == grumpy.length
1 <= minutes <= n <= 2 * 10^4
0 <= customers[i] <= 1000
grumpy[i] == 0 or 1

变量 s 维护长度为minutes的窗口中 生气时的顾客数量,这些顾客可以通过秘密技巧变得满意。
变量 total 计算本来就满意的顾客数量。

最后的答案是本来就满意的顾客数量+使用技巧变得满意的最多顾客数量。

class Solution {public int maxSatisfied(int[] customers, int[] grumpy, int minutes) {int n = customers.length, s = 0, mx = 0, total = 0;for (int i = 0; i < minutes - 1; ++i) {if (grumpy[i] == 1) s += customers[i];else total += customers[i];}for (int i = minutes - 1; i < n; ++i) {if (grumpy[i] == 1) s += customers[i];else total += customers[i];mx = Math.max(mx, s);if (grumpy[i - minutes + 1] == 1) s -= customers[i - minutes + 1];}return total + mx;}
}

2841. 几乎唯一子数组的最大和

https://leetcode.cn/problems/maximum-sum-of-almost-unique-subarray/submissions/

在这里插入图片描述

提示:
1 <= nums.length <= 2 * 10^4
1 <= m <= k <= nums.length
1 <= nums[i] <= 10^9

用 s 维护和。
用 cnt 维护不同数字的种类数量。

class Solution {public long maxSum(List<Integer> nums, int m, int k) {long ans = 0, s = 0;Map<Integer, Integer> cnt = new HashMap<>();for (int i = 0; i < k - 1; ++i) {s += nums.get(i);cnt.merge(nums.get(i), 1, Integer::sum);}for (int i = k - 1; i < nums.size(); ++i) {s += nums.get(i);cnt.merge(nums.get(i), 1, Integer::sum);if (cnt.size() >= m) ans = Math.max(ans, s);s -= nums.get(i - k + 1);cnt.merge(nums.get(i - k + 1), -1, Integer::sum);if (cnt.get(nums.get(i - k + 1)) == 0) cnt.remove(nums.get(i - k + 1));}return ans;}
}

2461. 长度为 K 子数组中的最大和

https://leetcode.cn/problems/maximum-sum-of-distinct-subarrays-with-length-k/description/
在这里插入图片描述
提示:
1 <= k <= nums.length <= 10^5
1 <= nums[i] <= 10^5

class Solution {public long maximumSubarraySum(int[] nums, int k) {long ans = 0, s = 0;Map<Integer, Integer> cnt = new HashMap<>();for (int i = 0; i < nums.length; ++i) {s += nums[i];cnt.merge(nums[i], 1, Integer::sum);if (cnt.size() == k) ans = Math.max(ans, s);if (i >= k - 1) {int x = nums[i - k + 1];s -= x;cnt.merge(x, -1, Integer::sum);if (cnt.get(x) == 0) cnt.remove(x);}}return ans;}
}

1423. 可获得的最大点数(转换成找中间窗口最小)

https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/description/
在这里插入图片描述

提示:
1 <= cardPoints.length <= 10^5
1 <= cardPoints[i] <= 10^4
1 <= k <= cardPoints.length

从两边拿要取最大,也就是找中间连续的最小
可以使用固定长度滑动窗口。

class Solution {public int maxScore(int[] cardPoints, int k) {int n = cardPoints.length, l = n - k, total = 0, s = 0, mn = Integer.MAX_VALUE;if (l == 0) return Arrays.stream(cardPoints).sum();for (int i = 0; i < n; ++i) {s += cardPoints[i];total += cardPoints[i];if (i >= l - 1) {mn = Math.min(mn, s);s -= cardPoints[i - l + 1];}}return total - mn;}
}

2134. 最少交换次数来组合所有的 1 II

https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together-ii/description/

在这里插入图片描述

提示:
1 <= nums.length <= 10^5
nums[i] 为 0 或者 1

最后所以的 1 一定会相邻。
所以转换成求固定长度窗口中 1 出现的最大值,其它不在窗口中的 1 都需要交换过来。

class Solution {public int minSwaps(int[] nums) {int k = Arrays.stream(nums).sum(), mx = 0, s = 0, n = nums.length;for (int x = 0; x < 2 * n; ++x) {int i = x % n;s += nums[i];if (x >= k - 1) {mx = Math.max(mx, s);s -= nums[(x - k + 1) % n];}}return k - mx;}
}

2653. 滑动子数组的美丽值⭐

https://leetcode.cn/problems/sliding-subarray-beauty/description/

在这里插入图片描述

提示:

n == nums.length
1 <= n <= 10^5
1 <= k <= n
1 <= x <= k
-50 <= nums[i] <= 50

解法1——利用二分维护窗口中的排序(超时了)

class Solution {public int[] getSubarrayBeauty(int[] nums, int k, int x) {int n = nums.length;List<Integer> ls = new ArrayList<>();int[] ans = new int[n - k + 1];for (int i = 0; i < n; ++i) {int t = nums[i];int id = bs(ls, t);ls.add(id, t);if (ls.size() > k) {id = bs(ls, nums[i - k]);ls.remove(id);}if (ls.size() == k) {if (ls.get(x - 1) < 0) ans[i - k + 1] = ls.get(x - 1);else ans[i - k + 1] = 0;}}return ans;}public int bs(List<Integer> ls, int t) {int l = 0, r = ls.size();while (l < r) {int mid = l + r >> 1;if (ls.get(mid) < t) l = mid + 1;else r = mid;}return l;}
}

在这里插入图片描述

把 ArrayList 换成 LinkedList 超时会更多。

解法2——滑动窗口+暴力枚举 ⭐(牛逼的暴力枚举!🐂)

https://leetcode.cn/problems/sliding-subarray-beauty/solutions/2241294/hua-dong-chuang-kou-bao-li-mei-ju-by-end-9mvl/
在这里插入图片描述
虽然是暴力枚举,但是充分利用了数值的值域很小的特性。

class Solution {public int[] getSubarrayBeauty(int[] nums, int k, int x) {final int BIAS = 50;int[] cnt = new int[BIAS * 2 + 1];  // 计数数组int n = nums.length;int[] ans = new int[n - k + 1];for (int i = 0; i < n; ++i) {cnt[nums[i] + BIAS]++;          // 进入窗口if (i >= k - 1) {               // 计算该位置的答案int left = x;               // 计算剩余的xfor (int j = 0; j < BIAS; ++j) {left -= cnt[j];if (left <= 0) {        // 找到了答案ans[i - k + 1] = j - BIAS;break;}}--cnt[nums[i - k + 1] + BIAS];  // 移出窗口}}return ans;}
}

567. 字符串的排列

https://leetcode.cn/problems/permutation-in-string/description/

在这里插入图片描述

提示:

1 <= s1.length, s2.length <= 10^4
s1 和 s2 仅包含小写字母

如果 s1 的排列之一是 s2 的 子串。那么应该满足 s2 的一个字串中,各个字符的数量和 s1 相同。

用计数数组维护窗口中各个字符的数量即可。

class Solution {public boolean checkInclusion(String s1, String s2) {int[] cnt = new int[128];for (char ch: s1.toCharArray()) cnt[ch]++;for (int l = 0, r = 0; r < s2.length(); ++r) {cnt[s2.charAt(r)]--;if (r - l >= s1.length()) cnt[s2.charAt(l++)]++; boolean f = true;for (char ch = 'a'; ch <= 'z'; ++ch) {if (cnt[ch] != 0) {f = false;break;}}if (f) return true;}return false;}
}

438. 找到字符串中所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/

在这里插入图片描述

提示:

1 <= s.length, p.length <= 3 * 10^4
s 和 p 仅包含小写字母

维护 s 中长度等于 p 的滑动窗口,检查 窗口中的各个字符数量和 p 中的字符数量是否相等即可。

class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ans = new ArrayList<>();int[] cnt = new int[128];for (char ch: p.toCharArray()) cnt[ch]++;for (int l = 0, r = 0; r < s.length(); ++r) {cnt[s.charAt(r)]--;if (r - l >= p.length()) cnt[s.charAt(l++)]++;boolean f = true;for (char ch = 'a'; ch <= 'z'; ++ch) {if (cnt[ch] != 0) {f = false;break;}}if (f) ans.add(l);} return ans;}
}

2156. 查找给定哈希值的子串⭐⭐⭐

https://leetcode.cn/problems/find-substring-with-given-hash-value/description/

在这里插入图片描述

提示:
1 <= k <= s.length <= 2 * 10^4
1 <= power, modulo <= 10^9
0 <= hashValue < modulo
s 只包含小写英文字母。
测试数据保证一定 存在 满足条件的子串。

解法1——倒序滚动哈希

https://leetcode.cn/problems/find-substring-with-given-hash-value/solutions/1249153/cha-zhao-gei-ding-ha-xi-zhi-de-zi-chuan-fi8jd/
倒序处理,
先处理出 p o w e r ( k − 1 ) m o d m o d u l o power^(k-1) \mod modulo power(k1)modmodulo

class Solution {public String subStrHash(String s, int power, int modulo, int k, int hashValue) {int n = s.length(), pos = -1;// h:子串哈希值   mult:power^(k-1) mod modulolong h = 0, mult = 1;// 预处理最后一个子串的哈希值和 power^k mod modulofor (int i = n - 1; i >= n - k; --i) {h = (h * power + (s.charAt(i) - 'a' + 1)) % modulo;if (i != n - k) {mult = mult * power % modulo;}}if (h == hashValue) pos = n - k;// 向前计算哈希值并尝试更新下标for (int i = n - k - 1; i >= 0; --i) {h = ((h - (s.charAt(i + k) - 'a' + 1) * mult % modulo + modulo) * power + (s.charAt(i) - 'a' + 1)) % modulo;if (h == hashValue) {pos = i;}}return s.substring(pos, pos + k);}
}

解法2——倒序滑动窗口 + O ( 1 ) O(1) O(1) 额外空间

class Solution {public String subStrHash(String s, int power, int modulo, int k, int hashValue) {int n = s.length(), pos = -1;// h:子串哈希值   mult:power^(k-1) mod modulolong h = 0, mult = 1;// 预处理最后一个子串的哈希值和 power^k mod modulofor (int i = n - 1; i >= n - k; --i) {h = (h * power + (s.charAt(i) & 31)) % modulo;if (i != n - k) {mult = mult * power % modulo;}}if (h == hashValue) pos = n - k;// 向前计算哈希值并尝试更新下标for (int i = n - k - 1; i >= 0; --i) {h = ((h - (s.charAt(i + k) & 31) * mult % modulo + modulo) * power + (s.charAt(i) & 31)) % modulo;if (h == hashValue) {pos = i;}}return s.substring(pos, pos + k);}
}

小技巧,将’a’——'z’转成1——26 🐂

只需要 & 31 即可。
在这里插入图片描述

346. 数据流中的移动平均值(用队列维护窗口)

https://leetcode.cn/problems/moving-average-from-data-stream/description/

在这里插入图片描述
提示:
1 <= size <= 1000
-10^5 <= val <= 10^5
最多调用 next 方法 10^4 次

class MovingAverage {Queue<Integer> q = new LinkedList<>();int sz;double sum;public MovingAverage(int size) {sz = size;sum = 0;}public double next(int val) {q.offer(val);sum += val;if (q.size() > sz) sum -= q.poll();return sum / q.size();}
}/*** Your MovingAverage object will be instantiated and called as such:* MovingAverage obj = new MovingAverage(size);* double param_1 = obj.next(val);*/

1100. 长度为 K 的无重复字符子串

https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/description/

在这里插入图片描述
提示:
1 <= S.length <= 10^4
S 中的所有字符均为小写英文字母
1 <= K <= 10^4

维护长度为 k 的滑动窗口中各个字符出现的数量。

class Solution {public int numKLenSubstrNoRepeats(String s, int k) {int[] cnt = new int[128];int ans = 0;for (int l = 0, r = 0; r < s.length(); ++r) {cnt[s.charAt(r)]++;if (r - l >= k) cnt[s.charAt(l++)]--;if (r >= k - 1 && check(cnt)) ans++;}return ans;}public boolean check(int[] cnt) {for (char ch = 'a'; ch <= 'z'; ++ch) {if (cnt[ch] > 1) {return false;}}return true;}
}

相关文章:

【算法】滑动窗口题单——1.定长滑动窗口⭐

文章目录 1456. 定长子串中元音的最大数目2269. 找到一个数字的 K 美丽值1984. 学生分数的最小差值&#xff08;排序&#xff09;643. 子数组最大平均数 I1343. 大小为 K 且平均值大于等于阈值的子数组数目2090. 半径为 k 的子数组平均值2379. 得到 K 个黑块的最少涂色次数1052…...

可观测性项目开发与学习ing

http1,2,3的区别 HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3 是不同版本的协议&#xff0c;它们在以下方面有所不同&#xff1a; HTTP/1.0: 是最早的版本&#xff0c;主要特点如下&#xff1a; 每个请求和响应都需要建立一个新的 TCP 连接。不支持持久连接&#xff08;Keep-Alive&…...

apache-poi

excel类型 excel分为03版本和07版本 03版本 new HSSFWorkbook(); 优点&#xff1a;速度快 缺点&#xff1a;只能写入65536行数据 文件类型&#xff1a;.xls07版本 new XSSFWorkbook(); 优点&#xff1a;不限制写入数量 缺点&#xff1a;容易造成内存溢出(OOM)&#xff0c;速度…...

TOD和PPS精确时间同步技术

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术&#xff0c;它们在许多领域都有广泛的应用&#xff0c;总的来说&#xff0c;PPS和TOD被广泛应用于各种需要高度精确时间同步的领域&#xff0c;包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…...

通过一个例子理解pytest的fixture的使用

需求 希望编写登陆web后做一些操作的测试用例&#xff0c;使用pytest框架具体测试用例执行前&#xff0c;需要先拿到web的token&#xff0c;这个获取token的动作只执行一次 例一 先上测试用例代码 adminpc-1:~$ cat my_test.py import pytestclass TestWebLogin:pytest.fi…...

单片机BootLoader是咋回事?

BootLoader的定义&#xff1a; CPU进入APP之前运行的一小段程序代码就叫做BootLoader。它是由程序员编写的&#xff0c;作用是更新应用程序。这也就说明了只有BootLoader的单片机才可以升级。有的产品有升级的需要就需要BootLoader了。 单片机的启动过程可以这么叙述&#xff…...

python与机器学习1,机器学习的一些基础知识(完善ing)

目录 1 关于阈值θ和偏移量b和公式变形的由来 2 激活函数 3 关于回归&#xff0c;分类等 4 关于模型 5 关于回归 6 关于分类 7 关于误差和梯度下降 7-2 最小二乘法修改θ 8 深度学习 10 分类 11 参考书籍 1 关于阈值θ和偏移量b和公式变形的由来 比如很多信息传入可…...

移动应用开发介绍及iOS方向学习路线(HUT移动组版)

移动应用开发介绍及iOS方向学习路线&#xff08;HUT移动组版&#xff09; 前言 ​ 作为一个HUT移动组待了一坤年&#xff08;两年半&#xff09;多的老人&#xff0c;在这里为还在考虑进哪个组的萌新们以及将来进组的新朋友提供一份关于移动应用开发介绍以及学习路线的白话文…...

vue+uniapp校园寻物失物招领平台 微信小程序1f6z5

系统中的核心用户是管理员&#xff0c;管理员登录后&#xff0c;通过管理员菜单来管理后台系统。主要功能有&#xff1a;首页、个人中心、用户管理、物品分类管理、物品信息管理、物品归还管理、留言板管理、系统管理等功能。管理员用例如图3-7所示。 对于本网上失物招领小程序…...

Linux内核--内存管理(三)物理内存分页机制--kmalloc及slub机制

一、引言 二、slub机制 ------>2.1、slub分配原理slub原理 ------>2.2、slub分配原理 ------>2.3、slub释放原理 ------>2.4、SLUB分配器 三、slub数据结构 ------>3.1、kmem_cache ------>3.2、kmem_cache_cpu ------>3.3、kmem_cache_node --…...

Shell - cron_protect.sh 监控 Python、Streaming 程序

目录 一.引言 二.Flink 程序监控 1.shell 脚本 2.crontab 配置 三.Python 程序监控 1.shell 脚本 2.crontab 配置 四.总结 一.引言 业务有流式处理数据的需求&#xff0c;需要 7x24 通过 Flink Python 程序进行处理。为了监控 Flink 与 Python 的程序运行状态并在程…...

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。

MSB3541 Files 的值“<<<<<<< HEAD”无效。路径中具有非法字符。 一般来说出现这个问题是因为使用git版本控制工具合并代码出现了问题&#xff0c;想要解决也很简单。 如图点击错误后定位到文件&#xff0c;发现也没有什么问题。 根据错误后边的提示&a…...

【赠书第9期】巧用ChatGPT高效搞定Excel数据分析

文章目录 前言 1 操作步骤 1.1 数据清理和整理 1.2 公式和函数的优化 1.3 图表和可视化 1.4 数据透视表的使用 1.5 条件格式化和筛选 1.6 数据分析技巧 1.7 自动化和宏的创建 2 推荐图书 3 粉丝福利 前言 ChatGPT 是一个强大的工具&#xff0c;可以为你提供在 Exce…...

会声会影2024旗舰版系统配置要求及格式支持

会声会影2024旗舰版是一款广受欢迎的视频编辑软件&#xff0c;它的最新版本&#xff0c;会声会影2023&#xff0c;已经发布。在这篇文章中&#xff0c;我们将探讨会声会影2024旗舰版系统配置要求及格式支持 会声会影2024是一款专业的视频剪辑软件&#xff0c;能够帮助用户制作高…...

【部署运维】docker:入门到进阶

0 前言 部署运维博客系列一共有三篇&#xff1a; 拥抱开源&#xff0c;将工作中的经验分享出来&#xff0c;尽量避免新手踩坑。 【部署运维】docker&#xff1a;入门到进阶 【部署运维】kubernetes&#xff1a;容器集群管理掌握这些就够了 【部署运维】pythonredisceleryd…...

鸿蒙开发学习——应用程序框架

文章目录 UIAbility的生命周期Create状态WindowStageCreateForeground和Background前后台展示控制onWindowStageDestroyDestory 总结 UIAbility的生命周期 感觉这里他讲的不清晰&#xff0c;UIAbility的4个声明周期是Create、Foreground&#xff08;桌面展示&#xff09;、Back…...

Linux dd命令详解:如何从标准输入或文件中读取、转换并输出数据(附实例教程和注意事项)

Linux dd命令介绍 Linux dd命令用于读取、转换并输出数据。dd可以从标准输入或文件中读取数据&#xff0c;根据指定的格式来转换数据&#xff0c;再输出到文件、设备或标准输出。这个命令在备份硬盘、创建启动盘、数据恢复等场景中非常有用。 Linux dd命令适用的Linux版本 d…...

Python——常见内置模块

Python 模块&#xff08;Modules&#xff09;1、概念模块函数类变量2、分类3、模块导入的方法&#xff1a;五种4、使用import 导入模块5、使用from……import部分导入6、使用as关键字为导入模块或功能命名别名7、模块的搜索目录8、自定义模块 常见内置模块一、math模块二、rand…...

JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)

基于JavaSpringbootVue的宠物领养社区小程序(源码数据库)112 一、系统介绍 本系统前后端分离带小程序 小程序&#xff08;用户端&#xff09;&#xff0c;后台管理系统&#xff08;管理员&#xff09; 小程序&#xff1a; 登录、注册、宠物领养、发布寻宠、发布领养、宠物社…...

golang log模块使用

在Go中&#xff0c;log 包是用于输出日志信息的标准库。以下是一些基本的 log 包的使用示例&#xff1a; 基本用法&#xff1a; package mainimport ("log" )func main() {log.Println("This is a log message.") } 运行程序&#xff0c;你会在控制台看到日…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...