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

leetcode——哈希表1

242.有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 

字母异位词

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • s 和 t 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

原理

  1. 字母异位词定义

    • 字母异位词(Anagram)是指两个字符串中,字符的种类和每个字符的出现次数完全相同,但字符的顺序可以不同。
  2. 思路

    • 首先,字母异位词的核心在于判断两个字符串的字符集合是否完全相同。因此,我们可以通过统计两个字符串中每个字符的出现次数来比较它们。
  3. 步骤

    • 创建两个数组 mapSmapT:这两个数组的长度固定为 26(因为只有 26 个小写字母)。数组 mapS 用于记录字符串 s 中每个字符的出现次数,数组 mapT 用于记录字符串 t 中每个字符的出现次数。
    • 遍历字符串 st:通过字符的 ASCII 值来定位字符在数组中的位置,然后更新数组中的对应位置。
      • 例如,字符 'a' 对应的索引是 s.charAt(j) - 'a',即 0,字符 'b' 对应的索引是 1,依此类推。
    • 比较两个数组 mapSmapT:最终,我们遍历这两个数组,逐个位置进行比较。如果某个位置的字符频次不相同,则返回 false,表示这两个字符串不是字母异位词。如果所有位置的频次都相同,则返回 true
  4. 时间复杂度

    • 遍历两个字符串的时间复杂度为 O(n),其中 n 是字符串的长度。
    • 遍历两个数组 mapSmapT 的时间复杂度是 O(26),即常数时间。
    • 因此,总时间复杂度为 O(n),其中 n 是字符串的长度。
  5. 空间复杂度

    • 我们只使用了两个固定大小的数组 mapSmapT,它们的空间复杂度是 O(1)(因为它们的大小是常数 26)。
    • 总的空间复杂度是 O(1)。

进阶:处理 Unicode 字符

  • 如果输入字符串包含 Unicode 字符(不仅限于小写字母),你可以考虑使用一个哈希表(如 HashMap)来存储字符的频次,而不是使用固定大小的数组。
  • 你可以将字符作为键,字符的出现次数作为值。这样可以处理所有类型的字符,而不仅限于小写字母。

代码 

class Solution {public boolean isAnagram(String s, String t) {// 创建两个数组,用来存储字符串s和t中各个字符出现的次数int[] mapS = new int[26];  // mapS 用于存储字符串s的字符频次int[] mapT = new int[26];  // mapT 用于存储字符串t的字符频次// 遍历字符串s,更新mapS中各个字符的频次for (int j = 0; j < s.length(); j++) {mapS[s.charAt(j) - 'a']++;  // 根据字符的ASCII值减去'a'来确定数组的索引}// 遍历字符串t,更新mapT中各个字符的频次for (int j = 0; j < t.length(); j++) {mapT[t.charAt(j) - 'a']++;  // 同上,更新mapT数组}// 比较mapS和mapT数组的值,检查两个字符串的字符频次是否完全相同for (int j = 0; j < 26; j++) {if (mapS[j] != mapT[j]) {  // 如果在某个位置上的频次不同,返回falsereturn false;}}// 如果所有频次都相同,则返回true,表示t是s的字母异位词return true;}
}

 38.赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

提示:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNote 和 magazine 由小写英文字母组成

原理

该问题的目标是判断 ransomNote 中的每个字符是否都能从 magazine 中找出对应字符,且每个字符在 magazine 中只能使用一次。

步骤:

  1. 字符计数

    • 由于题目限制字符串只包含小写字母,我们可以用一个长度为 26 的数组 mapM 来记录 magazine 中每个字母的出现次数。
    • magazine 中的每个字符通过 magazine.charAt(i) - 'a' 转换为数组索引,从而更新该字符的计数。
  2. 判断是否可以构建 ransomNote

    • 遍历 ransomNote 中的每个字符,并从 mapM 中减去对应字符的计数,表示我们“使用”了 magazine 中的一个字符。
    • 如果在这个过程中,某个字符的计数变为负数,说明 magazine 中的字符数量不足,无法满足 ransomNote 中该字符的需求,因此返回 false
  3. 最终判断

    • 如果遍历完 ransomNote 后,没有出现负数的情况,说明 magazine 中有足够的字符来构建 ransomNote,返回 true

时间复杂度:

  • 统计 magazine 字符的频次需要遍历一次 magazine,时间复杂度为 O(m),其中 m 是 magazine 的长度。
  • 遍历 ransomNote 来检查字符计数需要遍历一次 ransomNote,时间复杂度为 O(n),其中 n 是 ransomNote 的长度。
  • 最后,我们遍历 26 个字母来检查是否有负数,时间复杂度为 O(26),这是一个常数操作。
  • 因此,总的时间复杂度为 O(m + n),其中 m 和 n 分别是 magazineransomNote 的长度。

空间复杂度:

  • 使用了一个长度为 26 的数组 mapM 来存储字符的频次,空间复杂度是 O(1),因为数组的大小是常数。
  • 总的空间复杂度是 O(1)。

代码

class Solution {public boolean canConstruct(String ransomNote, String magazine) {// 创建一个长度为26的数组mapM,用于存储magazine中每个字母的出现次数int[] mapM = new int[26];// 遍历magazine,统计每个字符的出现次数for (int i = 0; i < magazine.length(); i++) {mapM[magazine.charAt(i) - 'a']++;  // 通过字符减去'a'得到字符的索引,更新字符的计数}// 遍历ransomNote,尝试从mapM中减去字符的计数for (int i = 0; i < ransomNote.length(); i++) {mapM[ransomNote.charAt(i) - 'a']--;  // 将ransomNote中的每个字符从magazine中对应字符的计数中减去}// 遍历mapM数组,检查是否有任何位置的值为负for (int i = 0; i < 26; i++) {if (mapM[i] < 0) {  // 如果某个字符的计数小于0,说明magazine中的字符不足以构成ransomNotereturn false;  // 返回false,表示无法构造ransomNote}}// 如果所有字符的计数都大于或等于0,表示magazine可以构造ransomNotereturn true;  // 返回true}
}

49.字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

原理

该问题的目标是找到字符串 s 中所有与 p 是字母异位词的子串的位置。字母异位词是由相同字母组成但顺序不同的字符串,因此我们可以通过字符的频次来判断两个字符串是否为字母异位词。

解决思路:

  1. 字符频次编码

    • 字母异位词的核心在于它们的字符频次相同。因此,我们为每个字符串(包括 ps 的子串)计算其字符频次并生成一个编码。
    • 这里使用一个大小为 26 的数组(code)来存储字符串中每个字符的频次。字符的频次数组最终转化为一个字符串,作为该字符串的“编码”。
  2. 滑动窗口

    • 对于字符串 s,我们使用滑动窗口技术来获取长度为 p.length() 的子串。每次滑动一个字符位置,将窗口内的子串进行编码,并与 p 的编码进行比较。
    • 如果某个子串的编码与 p 的编码相同,说明这个子串与 p 是字母异位词,将该子串的起始位置记录下来。
  3. HashMap 用于存储编码和位置

    • 使用一个 HashMapanagrams)来存储每个编码对应的子串起始位置的列表。encode() 方法将字符串转化为字符频次编码,并将编码作为键存入 anagrams
    • 对于每个长度为 p.length() 的子串,如果它的编码与 p 的编码相同,就将该子串的起始位置加入 anagrams 中。
  4. 返回结果

    • 在遍历 s 后,返回 p 的编码对应的所有子串的起始位置列表。

时间复杂度:

  • 计算字符串 p 的编码需要 O(m),其中 mp 的长度。
  • 遍历字符串 s 时,我们每次从 s 中提取长度为 m 的子串,并计算它的编码。每次计算编码的时间复杂度是 O(m)。
  • 因此,总的时间复杂度为 O(n * m),其中 ns 的长度,mp 的长度。

空间复杂度:

  • 用于存储字符频次的数组 code 的大小为常数 26,因此空间复杂度是 O(1)。
  • 使用 HashMap 存储编码和位置列表,最坏情况下,s 中的每个子串都可能有一个不同的编码,所以 HashMap 的大小为 O(n),其中 ns 的长度。

代码 

class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个 HashMap 来存储每个编码对应的位置列表HashMap<String, List<Integer>> anagrams = new HashMap<>();// 如果 s 的长度小于 p 的长度,则不可能有字母异位词,直接返回空列表if (s.length() < p.length()) {return new ArrayList<>();}// 对字符串 p 进行编码,并将其存储到 anagrams 中,确保编码存在String p1 = encode(p, p.length());anagrams.putIfAbsent(p1, new ArrayList<>());// 遍历字符串 s,检查每个长度为 p.length() 的子串for (int i = 0; i < s.length() - p.length() + 1; i++) {// 获取当前子串的编码String s1 = encode(s.substring(i, i + p.length()), p.length());// 将当前子串的编码放入 anagrams 中,如果编码不存在就初始化一个空列表anagrams.putIfAbsent(s1, new ArrayList<>());// 将当前子串的起始位置加入对应的编码列表中anagrams.get(s1).add(i);}// 返回 p 的编码对应的位置列表return anagrams.get(p1);}// 编码函数:将字符串的字符频次转化为固定大小的字符串(长度为26)public String encode(String str, int len) {// 创建一个长度为 26 的字符频次数组char[] code = new char[26];// 遍历字符串的每个字符,更新对应字符的频次for (int i = 0; i < len; i++) {code[str.charAt(i) - 'a']++;}// 将字符频次数组转换为字符串作为编码return String.valueOf(code);}
}

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

给定两个字符串 s 和 p,找到 s 中所有 p 的 

异位词

 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。

提示:

  • 1 <= s.length, p.length <= 3 * 104
  • s 和 p 仅包含小写字母

原理

该问题要求我们找到字符串 s 中所有与字符串 p 字母异位词相同的子串的起始索引。字母异位词是指两个字符串含有相同的字符,但字符的顺序不同。可以通过字符频次的方式来判断两个字符串是否是字母异位词。

解决思路:

  1. 编码转换

    • 字母异位词的核心在于它们的字符频次相同,因此我们可以对字符串 ps 中的每个长度为 p.length() 的子串计算字符频次,并将其转化为一个“编码”。
    • 这里使用一个大小为 26 的数组(code)来记录字符的频次。字符的频次数组最终转化为一个字符串,作为该字符串的“编码”。
  2. 滑动窗口

    • 我们使用滑动窗口技术来获取字符串 s 中所有长度为 p.length() 的子串。
    • 每当滑动窗口向右移动时,我们检查当前窗口中的子串是否与 p 是字母异位词。通过对该子串进行编码并与 p 的编码进行比较,判断它们是否相等。
    • 如果它们的编码相等,说明当前子串是字母异位词,我们将该子串的起始索引记录下来。
  3. 使用 HashMap 存储编码和位置

    • 我们使用一个 HashMapanagrams)来存储每个编码对应的子串起始位置列表。encode() 方法将字符串转化为字符频次编码,并将编码作为键存入 anagrams
    • 对于每个长度为 p.length() 的子串,计算其编码并与 p 的编码进行比较。如果它们相等,说明该子串是 p 的字母异位词,将该子串的起始位置加入 anagrams 中。
  4. 返回结果

    • 最后,我们返回 p 的编码对应的所有子串的起始位置列表,即返回所有字母异位词的位置。

时间复杂度:

  • 对于字符串 s 中的每个长度为 p.length() 的子串,计算其字符频次编码的时间复杂度是 O(m),其中 mp 的长度。
  • 遍历字符串 s 时,我们每次滑动窗口并计算子串的编码,这样的操作共进行 n - m + 1 次,其中 ns 的长度。
  • 因此,总的时间复杂度是 O(n * m),其中 ns 的长度,mp 的长度。

空间复杂度:

  • 用于存储字符频次的数组 code 的大小为常数 26,因此空间复杂度是 O(1)。
  • 使用 HashMap 存储编码和位置列表,最坏情况下,s 中的每个子串都可能有一个不同的编码,所以 HashMap 的大小为 O(n),其中 ns 的长度。

代码 

class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个 HashMap 用于存储编码与对应的子串起始索引HashMap<String, List<Integer>> anagrams = new HashMap<>();// 如果 s 的长度小于 p 的长度,无法找到字母异位词,直接返回空列表if (s.length() < p.length()) {return new ArrayList<>();}// 对字符串 p 进行编码,生成一个固定的字符频次表示String p1 = encode(p, p.length());// 确保 p 的编码在 anagrams 中存在anagrams.putIfAbsent(p1, new ArrayList<>());// 遍历字符串 s,获取每个长度为 p.length() 的子串for (int i = 0; i < s.length() - p.length() + 1; i++) {// 获取当前子串的编码String s1 = encode(s.substring(i, i + p.length()), p.length());// 确保当前子串编码在 anagrams 中存在anagrams.putIfAbsent(s1, new ArrayList<>());// 将当前子串的起始位置添加到对应编码的列表中anagrams.get(s1).add(i);}// 返回 p 的编码对应的子串起始位置列表return anagrams.get(p1);}// 编码函数:将字符串转换为一个字符频率数组的字符串表示public String encode(String str, int len) {// 创建一个长度为 26 的数组,用于记录字符的频次char[] code = new char[26];// 遍历字符串中的每个字符,更新字符的频次for (int i = 0; i < len; i++) {code[str.charAt(i) - 'a']++;}// 将字符频次数组转换为字符串并返回return String.valueOf(code);}
}

这题其实不用hash,能更好的解决,其实是滑动窗口的思想,滑动窗口能把时间复杂度降低到o(n)

原理

该问题要求我们在字符串 s 中找到所有的字母异位词子串的起始索引。字母异位词是由相同字母组成,但字母的顺序可以不同。可以通过字符的频次来判断两个字符串是否是字母异位词。

解决思路:

  1. 字符频次差异

    • 我们使用一个长度为 26 的数组 code 来记录 sp 中各个字母的频次差异。通过在遍历过程中对字符频次的增减,来判断当前窗口内的子串是否与 p 是字母异位词。
  2. 滑动窗口

    • 我们使用滑动窗口技术来遍历字符串 s 中的每个长度为 p.length() 的子串。
    • 对于每一个字符,更新对应频次数组中的计数,并检查当前窗口中的字符频次是否与 p 完全匹配。
    • 如果字符频次数组中的所有值均为0,说明当前子串与 p 是字母异位词,并将其起始位置记录下来。
  3. 更新字符频次

    • 每次滑动窗口时,当前窗口右端字符的频次会被减1,表示该字符被当前窗口包含。
    • 然后,检查当前窗口是否是字母异位词,如果是,就记录下当前窗口的起始位置。
    • 滑动窗口后,移出窗口左端字符时,我们需要恢复该字符的频次。
  4. 判断字母异位词

    • 通过 IsAnagrams 方法检查字符频次数组是否全为0,如果是,说明该子串是字母异位词。

时间复杂度:

  • 遍历字符串 s 的时间复杂度是 O(n),其中 n 是字符串 s 的长度。
  • 每次遍历时,我们需要检查一个长度为 26 的字符频次数组,IsAnagrams 方法的时间复杂度是 O(26) ≈ O(1),因此可以认为是常数时间操作。
  • 总的时间复杂度是 O(n),其中 n 是字符串 s 的长度。

空间复杂度:

  • 使用一个大小为 26 的数组 code 来存储字符频次,因此空间复杂度是 O(1),因为数组大小固定。
  • 使用一个列表 anagrams 存储所有字母异位词的起始位置,空间复杂度为 O(k),其中 k 是找到的字母异位词的数量。
  • 因此,总的空间复杂度是 O(k)。

代码

class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个长度为26的数组用于存储字符频次差异int[] code = new int[26];// 创建一个列表用于存储结果:所有字母异位词的起始索引List<Integer> anagrams = new ArrayList<>();// 遍历字符串 p,更新字符频次(将 p 中的每个字符计数加1)for (int i = 0; i < p.length(); i++) {code[p.charAt(i) - 'a']++;  // 更新 p 中字符的频次}// 遍历字符串 s,检查每个长度为 p.length() 的子串是否是字母异位词for (int i = 0; i < s.length(); i++) {// 更新当前字符的频次(s 中的字符频次减1)code[s.charAt(i) - 'a']--;// 如果当前字符频次数组符合字母异位词条件(即所有字符的频次均为0),// 说明当前子串是 p 的字母异位词,将其起始位置加入结果列表if (IsAnagrams(code) == true) {anagrams.add(i + 1 - p.length());  // 记录当前子串的起始索引}// 如果 i+1-p.length() >= 0,则恢复上一个字符的频次(滑动窗口移动)if (i + 1 - p.length() >= 0) {code[s.charAt(i + 1 - p.length()) - 'a']++;}}return anagrams;  // 返回所有字母异位词的起始索引列表}// 判断当前字符频次数组是否为字母异位词的条件:如果所有元素为0,则是字母异位词public boolean IsAnagrams(int[] array) {// 遍历频次数组,检查是否每个字符的频次均为0for (int i = 0; i < 26; i++) {if (array[i] != 0) {return false;  // 如果有任何一个字符的频次不为0,说明不是字母异位词}}return true;  // 所有字符的频次为0,说明是字母异位词}
}

相关文章:

leetcode——哈希表1

242.有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词 。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false 提示: 1 < s.le…...

STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?

主要问题&#xff1a; 1&#xff0c;使用STM32F103C8T6&#xff0c;模拟IIC&#xff0c;SCL和SDA口配置为推挽输出上拉&#xff0c;主要是SDA脚&#xff0c;每次都要输出输入模式重新配置&#xff0c;虽然也能通信&#xff0c;但不稳定&#xff0c;出错率大&#xff1b; 2&…...

Android四大组件——Activity(二)

一、Activity之间传递消息 在&#xff08;一&#xff09;中&#xff0c;我们把数据作为独立的键值对进行传递&#xff0c;那么现在把多条数据打包成一个对象进行传递&#xff1a; 1.假设有一个User类的对象&#xff0c;我们先使用putExtra进行传递 activity_demo06.xml <…...

PHP实现华为OBS存储

一&#xff1a;华为OBS存储文档地址 官方文档&#xff1a;https://support.huaweicloud.com/obs/index.html github地址&#xff1a;https://github.com/huaweicloud/huaweicloud-sdk-php-obs 二&#xff1a;安装华为OBS拓展 composer require obs/esdk-obs-php 三&#x…...

SQL连续登录问题(详细案例分析)

如果要统计用户活跃度&#xff0c;那就涉及连续登录问题&#xff0c;接下来将举一个简单的例子来详细说明这个问题&#xff1a; 一、创建一些模拟数据 一些测试数据如下&#xff1a; deviceid1,2022-10-26,2022-10-26,2022-11-01 deviceid1,2022-10-26,2022-11-03,2022-11-0…...

OpenCV相机标定与3D重建(9)相机标定函数calibrateCameraRO()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::calibrateCameraRO 是 OpenCV 中用于相机标定的函数&#xff0c;它允许固定某些点来进行更精确的标定。 函数原型 double cv::calibrateCa…...

【一本通】农场派对

【一本通】农场派对 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; N头牛要去参加一场在编号为x(1≤x≤n)的牛的农场举行的派对(1≤N≤1000)&#xff0c;有M(1≤m≤100000)条有向道路&#xff0c;每条路长ti(1≤ti≤100)&#xff1b;每头牛…...

uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录

上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...

基础暴力算法

线性枚举 线性枚举&#xff08;Linear Enumeration&#xff09;是一种暴力枚举的方法&#xff0c;它逐一检查每个可能的解&#xff0c;适用于搜索和枚举问题。 其核心思路是&#xff1a;对问题的所有可能情况逐一进行遍历&#xff0c;并针对每种情况判断是否满足条件&#xf…...

【复变函数】三、复变函数的积分

目录 1. 复变函数积分1.1. 复积分1.2. 存在性与计算1.2.1 第二类曲线积分与格林公式1.2.2 第一类曲线积分与参数式 1.3. 性质1.4. 圆径积分 2. 柯西积分定理2.1. 柯西&#xff08;Cauchy&#xff09;基本定理与莫雷拉&#xff08;Morrera&#xff09;定理2.2. 复合闭路定理2.3.…...

ChatGPT Pro是什么

ChatGPT Pro 和 ChatGPT Plus 的区别主要体现在功能范围、适用场景和目标用户上。 ChatGPT Plus 功能 • 价格&#xff1a;20美元/月。 • 目标用户&#xff1a;针对个人用户设计。 • 主要特点&#xff1a; • 在高峰期响应速度更快。 • 使用高级模型&#xff08;如 GPT-4…...

React - echarts 世界地图,中国地图绘制

中国地图 首先需要一个包含中国所有省份名称的 json&#xff0c;这个好多网站都能找到。 我传到资源里了&#xff0c;放百度网盘怕太长时间不登录给我删掉了。 中国地图中文版json 我把地图抽出来单独做成了组件&#xff0c;这样用的时候比较方便. 使用的时候&#xff1a; …...

knife4j-openapi3 4.5 最基本的使用 openAPI

最基本的使用&#xff0c;配置太多懒得研究 SpringBoot 整合 knfe4j &#xff0c;使用 OpenAPI3 规范&#xff0c;这个兄弟写的挺好 环境&#xff1a; spring-boot-starter-parent&#xff1a;3.4.0 1. 依赖 <dependency><groupId>com.github.xiaoymin</gr…...

如何在 Ubuntu 22.04 上安装和使用 Apache Kafka

简介 Apache Kafka是一个高性能、低延迟的分布式流处理平台&#xff0c;广泛用于构建实时数据管道和流式应用。本文将指导你如何在Ubuntu 22.04系统上快速部署Apache Kafka&#xff0c;让你体验到Kafka在处理大规模实时数据流方面的强大能力。通过本教程&#xff0c;你将学会如…...

Linux:network:添加ip的时候自动添加一个本地路由

文章目录 问题问题 最近在看一个路由的问题,顺便看内核代码,发现在添加IP的时候,内核会自动添加一个local route。 net/ipv4/devinet.c inet_rtm_newaddr->__inet_insert_ifa /* Send message first, then call notifier.Notifier will trigger FIB update, so thatlis…...

Android 10、11、12存储适配相关

AndroidQ(10)分区存储完美适配 - 简书前言 最近时间在做AndroidQ的适配&#xff0c;截止到今天AndroidQ分区存储适配完成&#xff0c;期间出现很多坑&#xff0c;目前网上的帖子大部分都是概述变更内容&#xff0c;接下来的几篇帖子都是对分区存储实际...https://www.jianshu.c…...

如何将视频转化为音频?五个方法策略

在日常生活中&#xff0c;我们经常需要将视频中的音频提取出来&#xff0c;以便在特定的场合使用。无论是为了制作铃声、背景音乐&#xff0c;还是为了进行语音转文字处理&#xff0c;视频转音频的需求都非常普遍。如何将视频转化为音频&#xff1f;本文将详细介绍多种将视频转…...

ecovadis评估最新标准

EcoVadis评估的最新标准主要包括奖牌评估规则和新增的徽章规则&#xff0c;以下是对这两方面的详细阐述&#xff1a; 一、奖牌评估规则 评估范围&#xff1a;EcoVadis的评估总分为100分&#xff0c;评估内容涵盖环境、劳工与人权、商业道德、可持续采购等四大主题。 奖牌等级…...

Java版-图论-最小生成树-Kruskal算法

实现描述 为了造出一棵最小生成树&#xff0c;我们从最小边权的边开始&#xff0c;按边权从小到大依次加入&#xff0c;如果某次加边产生了环&#xff0c;就扔掉这条边&#xff0c;直到加入了 n-1 条边&#xff0c;即形成了一棵树。 实现代码 首选我们对所有的边&#xff0c…...

【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]

目录 参考资料&#xff1a; 利用 Boot 选择不同的启动方式&#xff1a; 单片机的存储结构(主 FLASH/系统存储器/嵌入式 SRAM)&#xff1a; 1. Cortex-M 内核芯片——启动原理&#xff1a; 1.1. 启动流程&#xff1a; 1.2. 根据单片机的存储器映射和架构图&#xff1a;启动…...

实验15 验证LSTM模型的长程依赖

本次实验依托上个实验 一 模型构建 创建LSTM模型&#xff0c;里面包括初始化init函数、初始化权重函数_init_weights、初始化状态函数init_state、前向传播函数forward。 init函数&#xff1a;虽然每个时间的输入和隐层都是一样的&#xff0c;但是他们会有四组不同的权重&am…...

Charles功能说明

1.扫把(clear the current Session) (前头方向) 作用:清除所有抓取的包(正方形框) 2.中心圈-未启用显示(Star Recording)点击启动 -启动之后显示(Stop Recording)点击停止 作用:启动之后开始抓取包(刷新一次页面或跳转抓取内容) 3.锁-未启动显示(Star SSL Proxying)点击启动 -启…...

自动秒收录程序与自动秒收录网站源码论坛版本下载

自动秒收录程序与自动秒收录网站源码论坛版本下载 随着互联网的快速发展&#xff0c;网站优化已成为众多企业和个人博主提升在线影响力的关键手段。其中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;作为提升网站排名的核心策略&#xff0c;备受关注。而SEO优化的一个…...

HTML颜色-HTML脚本

HTML脚本 js使得HTML页面具有更强的动态和交互性 HTML<script>标签 标签用于定义客户端脚本&#xff0c;比如javascript 可包含脚本语句&#xff0c;也可以通过src属性指向外部的脚本文件 JavaScript最常用于图片操作&#xff0c;表单验证以及动态的内容更新 HTML<n…...

【WRF理论第十三期】详细介绍 Registry 的作用、结构和内容

目录 1. Introduction&#xff1a;介绍 Registry 的作用和功能。2. Registry Contents&#xff1a;详细描述 Registry 的结构和内容&#xff0c;包括各个部分的条目类型。2.1. DIMSPEC ENTRIES&#xff08;维度规格条目&#xff09;2.2. STATE ENTRIES&#xff08;状态变量条目…...

使用Kimi开发自己的问答应用

概述 Kimi是大家常用的一个人工智能助手&#xff0c;本文使用Kimi开发文档&#xff0c;以node作为后端&#xff0c;开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手&#xff0c;擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…...

Vue前端开发-路由其他配置

在路由文件中&#xff0c;除了跳转配置外&#xff0c;还可以进行路径重定向配置&#xff0c;如果没有找到对应的地址&#xff0c;还可以实现404的配置&#xff0c;同时&#xff0c;如果某个页面需要权限登录&#xff0c;还可以进行路由守卫配置&#xff0c;接下来&#xff0c;分…...

AI与遥感的融合:构建新一代智能监测作业平台

在测绘地理信息与遥感领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的融合正推动着一场监测作业模式的革命。AI不仅提升了数据处理的效率&#xff0c;还极大地扩展了遥感技术的应用范围和深度。 遥感监测的智能化趋势 随着遥感数据量的激增&#xff0c;传统的人工…...

3D 视觉定位技术:汽车零部件制造的智能变革引擎

在汽车零部件制造领域&#xff0c;传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求&#xff0c;促使企业寻求突破之道。而 3D 视觉定位技术&#xff0c;为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...

git提交时出现merge branch main of xxx

git提交时出现merge branch main of xxx 原因&#xff1a; 1、同事commit了一个修改A&#xff0c;push到remote 2、我把这个修改直接pull了下来&#xff08;pull是fetchmerge的操作&#xff0c;自动合并到本地workspace&#xff09; 3、同事因为后续的commit有冲突&#xff0c…...

重生之我在异世界学编程之C语言:深入结构体篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文《1》 结构体的两种声明一、结构…...

到达率和服务率在python中实现

到达率和服务率在python中实现 概念理解 到达率(Arrival Rate):是指顾客(或任务、事件等)到达服务系统的平均速率,通常用单位时间内到达的数量来表示。例如,在一个客服中心,每小时平均有10个客户来电咨询,这里的每小时10个客户就是到达率。服务率(Service Rate):是…...

重视猫艾滋:宠物健康的隐秘挑战

猫艾滋&#xff0c;全称为猫获得性免疫缺陷综合征&#xff08;Feline Acquired Immunodeficiency Syndrome&#xff09;&#xff0c;是由猫免疫缺陷病毒&#xff08;FIV&#xff09;感染引起的一种严重危害猫类健康的疾病。虽然其名称与人类艾滋病相似&#xff0c;但猫艾滋仅在…...

使用长轮询解决某些场景的实时消息推送需求

需求来源 最近做一个需求实现在移动端通过按钮&#xff0c;远程控制大屏幕上展示的资源进行实时切换&#xff0c;可以展示一个大屏页面&#xff0c;可以展示一段视频&#xff0c;也可以展示一张图片。 解决思路 大屏幕上打开一个游览器&#xff0c;访问指定动态资源展示页面…...

uniapp-内部项目使用文档

uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容&#xff1a;阶段1问题记录&#xff1a; 阶段2自行实现内容&#xff1a; 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...

linux搭建NFS服务和autofs自动挂载NFS

文章目录 1、nfs服务1、nfs原理2、RPC和NFS通讯原理3、RPC和NFS流程4、NFS工作流程5、服务端搭建6、客户端搭建7、autofs自动挂载 1、nfs服务 1、nfs原理 是一个NAS的存储&#xff0c;通过网络来进行文件的共享&#xff0c;表现出来的形式就是一个文件夹 可以支持多个linux挂…...

springboot415社区网格化管理平台的构建-(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…...

ubuntu下open-webui + ollama本地大模型部署

文章目录 nvidia gpu驱动安装 安装卸载 ollama 部署 添加docker秘钥docker配置添加国内镜像源ollama安装 从源拉取ollama镜像。启动一个ollama容器 通过ollama下载模型到本地检验本地模型 open-webui 部署 安装容器和镜像下载webui使用查看模型运行时内存、cpu、gpu占用 业余…...

自动化运维-配置Mysql、emqx、redis、nginx等通用性Linux日志分割工具 - logrotate

前言&#xff1a;logrotate 是一个在 Linux 系统中用于管理和轮转日志文件的工具。它的主要目的是帮助系统管理员自动执行日志文件的轮转、压缩、删除和邮件通知等任务&#xff0c;以防止日志文件占用过多的磁盘空间&#xff0c;同时保持日志文件的可管理性。 参考命令&#x…...

71、docker镜像制作上传/下载到阿里云

基本思想:简单学习一下如何制作镜像和上传下载到私有阿里云,然后构建一个gpu的训练/推理环境,以备后续使用 一、配置环境 ubuntu@ubuntu:~$ sudo apt-get install docker.ioubuntu@ubuntu:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS P…...

力扣--LCR 178.训练计划VI

题目 教学过程中&#xff0c;教练示范一次&#xff0c;学员跟做三次。该过程被混乱剪辑后&#xff0c;记录于数组 actions&#xff0c;其中 actions[i] 表示做出该动作的人员编号。请返回教练的编号。 示例 1&#xff1a; 输入&#xff1a;actions [5, 7, 5, 5] 输出&#…...

独孤思维:又有一个副业项目降价了

不要过早量出底牌&#xff0c;不然会变得低贱且廉价。 昨天在一个群里&#xff0c;看到有个博主&#xff0c;没有成交订单。 她把和用户的聊天对话发出来&#xff0c;我们大致看了下。 发现人家是有意向付费的。 但是这个博主过于心急&#xff0c;说今天加入可以优惠&#…...

【笔记】分布式任务调度平台XXL-JOB

这篇笔记主要记录以下内容&#xff1a; &#xff08;1&#xff09;第一次启动xxl-job的过程 &#xff08;2&#xff09;模块、文件、数据库&#xff08;表和字段&#xff09;的作用 &#xff08;3&#xff09;极少的源码解读&#xff08;XxlJobConfig&#xff09; 有点像实…...

Java基础总结上(Ref:JavaGuide)

基础概念与常识 Java语言有哪些特点&#xff0c;优点&#xff1f; 简单易学&#xff0c;是一门面向对象的语言&#xff0c;有封装继承多态三大特性&#xff0c;而且有多重防护机制保证安全性&#xff0c;例如权限修饰符&#xff0c;限制程序直接访问操作系统资源。通过JIT编译…...

嘉誉府5区共有产权看房记

特地工作日来看下嘉誉府5区的网红共有产权的房子&#xff0c;主要是冲着均价2.1万/平才来看。说实话从塘尾地铁步行到嘉誉府5区还挺需要时间的哈。可能以后需要电驴代步到地铁&#xff1f;确实楼盘现在是现楼&#xff0c;今年买明年住。鸿荣源确实很666哈。 今天来不需要排队&a…...

PostgreSQL函数中使用now()或current_timestamp的异同

在PostgreSQL函数中使用now()或current_timestamp可以获取当前的日期和时间。 now()函数返回当前的日期和时间&#xff0c;包括时区信息。它可以用于记录操作的时间戳或在查询中进行时间比较。 current_timestamp函数也返回当前的日期和时间&#xff0c;但不包括时区信息。它…...

跟李笑来学美式俚语(Most Common American Idioms): Part 56

Most Common American Idioms: Part 56 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记&#xff0c;自用。 Github仓库链接&#xff1a;https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来&#xff08;或者clone到本地…...

类和对象一

目录 1.类的引入 2.类的定义 3.访问限定符 4.类的作用域 5.类对象模型 6.类的大小 1.类的引入 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体不仅可以定义变量&#xff0c;也可以定义函数。 C兼容C语言&#xff0c;结构用法可以继续使用 同时sruct也升…...

两个数的和最小

两个数的和最小 C 代码C 代码Java 代码Python 代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给你n个整数&#xff0c;你可以从中任意取两个数a和b&#xff0c;问a加上b的和的绝对值最小可能是多少&#xff1f; 输入 有多组测试数据…...

Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)

安装chat大模型&#xff08;不推荐&#xff0c;本地运行的大模型只能聊废话&#xff0c;不如网页版使用openAI等高效&#xff09; 首先下载ollama的安装包 https://ollama.com/ 点击启动访问&#xff1a;http://localhost:11434 Ollama is running 代表已经运行起来了&#x…...