【算法通关村 Day12】字符串
字符串青铜挑战
字符串转换
转换为小写字母
给你一个字符串 s
,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。leetcode791
public class ToLowerCase {/*** 将字符串中的大写字母转换为小写字母。** @param s 输入字符串* @return 转换后的字符串,其中所有大写字母都已转换为小写字母*/public String toLowerCase(String s) {StringBuilder result = new StringBuilder(); // 使用 StringBuilder 以提高效率for (char c : s.toCharArray()) {if (c >= 'A' && c <= 'Z') {// 大写字母的 ASCII 码在 'A' 到 'Z' 之间// 小写字母的 ASCII 码比对应的大写字母大 32result.append((char) (c + 32));} else {// 非大写字母,直接添加到结果中result.append(c);}}return result.toString();}//使用Java内置函数public String toLowerCaseBuiltIn(String s) {return s.toLowerCase(); // 直接使用 String 类的 toLowerCase() 方法}public static void main(String[] args) {ToLowerCase tlc = new ToLowerCase();// 示例用法String str1 = "Hello";String lowerStr1 = tlc.toLowerCase(str1);System.out.println(str1 + " 转换为小写: " + lowerStr1); // 输出: Hello 转换为小写: helloString str2 = "here";String lowerStr2 = tlc.toLowerCase(str2);System.out.println(str2 + " 转换为小写: " + lowerStr2); // 输出: here 转换为小写: hereString str3 = "LOVELY";String lowerStr3 = tlc.toLowerCase(str3);System.out.println(str3 + " 转换为小写: " + lowerStr3); // 输出: LOVELY 转换为小写: lovelyString str4 = "HeLlO wOrLd";String lowerStr4 = tlc.toLowerCase(str4);System.out.println(str4 + " 转换为小写: " + lowerStr4); // 输出: HeLlO wOrLd 转换为小写: hello worldString str5 = "Hello";String lowerStr5 = tlc.toLowerCaseBuiltIn(str5);System.out.println(str5 + " 转换为小写 (使用内置函数): " + lowerStr5); //输出: Hello 转换为小写 (使用内置函数): hello}
}
字符串转换整数
请你来实现一个 myAtoi(string s)
函数,使其能将字符串转换成一个 32 位有符号整数。
函数 myAtoi(string s)
的算法如下:
- 空格:读入字符串并丢弃无用的前导空格(
" "
) - 符号:检查下一个字符(假设还未到字符末尾)为
'-'
还是'+'
。如果两者都不存在,则假定结果为正。 - 转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。如果没有读取数字,则结果为0。
- 舍入:如果整数数超过 32 位有符号整数范围
[−231, 231 − 1]
,需要截断这个整数,使其保持在这个范围内。具体来说,小于−231
的整数应该被舍入为−231
,大于231 − 1
的整数应该被舍入为231 − 1
。
返回整数作为最终结果。
public class MyAtoi {/*** 实现一个 myAtoi(String s) 函数,将字符串转换为一个 32 位有符号整数。** @param s 输入字符串* @return 转换后的 32 位有符号整数*/public int myAtoi(String s) {int index = 0; // 指向当前字符的索引int sign = 1; // 符号 (1 表示正数, -1 表示负数)int result = 0; // 结果// 1. 跳过前导空格while (index < s.length() && s.charAt(index) == ' ') {index++;}// 2. 处理符号if (index < s.length() && (s.charAt(index) == '+' || s.charAt(index) == '-')) {sign = (s.charAt(index) == '-') ? -1 : 1;index++;}// 3. 读取数字while (index < s.length() && Character.isDigit(s.charAt(index))) {int digit = s.charAt(index) - '0'; // 获取数字值// 4. 检查溢出 (关键步骤)// 如果 result > Integer.MAX_VALUE / 10, 那么 result * 10 一定会溢出// 如果 result == Integer.MAX_VALUE / 10, 但是 digit > 7, 那么 result * 10 + digit 也会溢出 (因为 Integer.MAX_VALUE 最后一位是 7)if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && digit > 7)) {return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;}result = result * 10 + digit;index++;}// 5. 返回结果return sign * result;}public static void main(String[] args) {MyAtoi atoi = new MyAtoi();// 示例用法String str1 = "42";int num1 = atoi.myAtoi(str1);System.out.println("\"" + str1 + "\" 转换为整数: " + num1); // 输出: "42" 转换为整数: 42String str2 = " -42";int num2 = atoi.myAtoi(str2);System.out.println("\"" + str2 + "\" 转换为整数: " + num2); // 输出: " -42" 转换为整数: -42String str3 = "4193 with words";int num3 = atoi.myAtoi(str3);System.out.println("\"" + str3 + "\" 转换为整数: " + num3); // 输出: "4193 with words" 转换为整数: 4193String str4 = "words and 987";int num4 = atoi.myAtoi(str4);System.out.println("\"" + str4 + "\" 转换为整数: " + num4); // 输出: "words and 987" 转换为整数: 0String str5 = "-91283472332";int num5 = atoi.myAtoi(str5);System.out.println("\"" + str5 + "\" 转换为整数: " + num5); // 输出: "-91283472332" 转换为整数: -2147483648 (Integer.MIN_VALUE)}
}
字符串白银挑战
字符串反转
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。详见leetcode344
public class ReverseString {/*** 反转字符数组。** @param s 要反转的字符数组。*/public void reverseString(char[] s) {int left = 0; // 指向数组开头的指针int right = s.length - 1; // 指向数组末尾的指针// 使用双指针法进行反转while (left < right) {// 交换 left 和 right 指针指向的字符char temp = s[left];s[left] = s[right];s[right] = temp;// 移动指针left++;right--;}}public static void main(String[] args) {ReverseString rs = new ReverseString();// 示例用法char[] str1 = {'h', 'e', 'l', 'l', 'o'};rs.reverseString(str1);System.out.println("反转后的字符串: " + String.valueOf(str1)); // 输出: 反转后的字符串: ollehchar[] str2 = {'H', 'a', 'n', 'n', 'a', 'h'};rs.reverseString(str2);System.out.println("反转后的字符串: " + String.valueOf(str2)); // 输出: 反转后的字符串: hannaH}
}
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。详见leetcode541
public class ReverseKGroup {/*** 根据规则反转字符串 s 的特定部分。** @param s 要操作的字符串* @param k 一个整数,指定反转字符的组大小* @return 修改后的字符串*/public String reverseStr(String s, int k) {char[] arr = s.toCharArray(); // 将字符串转换为字符数组,以便进行原地修改int n = arr.length;for (int i = 0; i < n; i += 2 * k) { // 以 2k 的步长迭代字符串// 确定要反转的子字符串的起始位置和结束位置int start = i;int end = Math.min(i + k - 1, n - 1); //确保end不超过数组的边界。如果剩余的字符小于 k 个,则将反转剩余的所有字符// 反转从 start 到 end 的字符reverse(arr, start, end);}return new String(arr); // 将修改后的字符数组转换回字符串}/*** 反转字符数组指定部分。** @param arr 要修改的字符数组* @param start 反转的起始索引* @param end 反转的结束索引*/private void reverse(char[] arr, int start, int end) {while (start < end) {char temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}public static void main(String[] args) {ReverseKGroup rkg = new ReverseKGroup();// 示例用法String s1 = "abcdefg";int k1 = 2;String reversed1 = rkg.reverseStr(s1, k1);System.out.println("\"" + s1 + "\" 反转后的字符串 (k=" + k1 + "): " + reversed1); // 输出: "abcdefg" 反转后的字符串 (k=2): bacdfegString s2 = "abcd";int k2 = 2;String reversed2 = rkg.reverseStr(s2, k2);System.out.println("\"" + s2 + "\" 反转后的字符串 (k=" + k2 + "): " + reversed2); // 输出: "abcd" 反转后的字符串 (k=2): bacdString s3 = "abcdefghij";int k3 = 3;String reversed3 = rkg.reverseStr(s3, k3);System.out.println("\"" + s3 + "\" 反转后的字符串 (k=" + k3 + "): " + reversed3); //输出: "abcdefghij" 反转后的字符串 (k=3): cbadefihgj}
}
仅反转字母
给你一个字符串 s
,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s
。leetcode917
public class ReverseOnlyLetters {/*** 反转字符串中的英文字母,同时保留其他字符的位置。** @param s 输入字符串* @return 反转后的字符串*/public String reverseOnlyLetters(String s) {char[] arr = s.toCharArray(); // 将字符串转换为字符数组int left = 0; // 左指针int right = arr.length - 1; // 右指针while (left < right) {// 从左侧找到一个字母while (left < right && !Character.isLetter(arr[left])) {left++;}// 从右侧找到一个字母while (left < right && !Character.isLetter(arr[right])) {right--;}// 交换两个字母if (left < right) {char temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}return new String(arr); // 将修改后的字符数组转换回字符串}public static void main(String[] args) {ReverseOnlyLetters rol = new ReverseOnlyLetters();// 示例用法String s1 = "ab-cd";String reversed1 = rol.reverseOnlyLetters(s1);System.out.println("\"" + s1 + "\" 反转后的字符串: " + reversed1); // 输出: "ab-cd" 反转后的字符串: dc-baString s2 = "a-bC-dEf-ghIj";String reversed2 = rol.reverseOnlyLetters(s2);System.out.println("\"" + s2 + "\" 反转后的字符串: " + reversed2); // 输出: "a-bC-dEf-ghIj" 反转后的字符串: j-Ih-gfE-dCbaString s3 = "Test1ng-Leet=code-Q!";String reversed3 = rol.reverseOnlyLetters(s3);System.out.println("\"" + s3 + "\" 反转后的字符串: " + reversed3); // 输出: "Test1ng-Leet=code-Q!" 反转后的字符串: Qedo1ct-eeLg=ntse-T!}
}
反转字符串里的单词
给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class ReverseWords {/*** 反转字符串中单词的顺序,同时处理多余的空格。** @param s 输入字符串* @return 反转单词顺序后的字符串*/public String reverseWords(String s) {// 1. 去除首尾空格并按空格分割字符串成单词数组String[] words = s.trim().split("\\s+"); // \\s+ 表示一个或多个空格// 2. 反转单词数组List<String> wordList = Arrays.asList(words);Collections.reverse(wordList);// 3. 使用单个空格将单词连接成一个字符串return String.join(" ", wordList);}public static void main(String[] args) {ReverseWords rw = new ReverseWords();// 示例用法String s1 = "the sky is blue";String reversed1 = rw.reverseWords(s1);System.out.println("\"" + s1 + "\" 反转后的字符串: \"" + reversed1 + "\""); // 输出: "the sky is blue" 反转后的字符串: "blue is sky the"String s2 = " hello world ";String reversed2 = rw.reverseWords(s2);System.out.println("\"" + s2 + "\" 反转后的字符串: \"" + reversed2 + "\""); // 输出: " hello world " 反转后的字符串: "world hello"String s3 = "a good example";String reversed3 = rw.reverseWords(s3);System.out.println("\"" + s3 + "\" 反转后的字符串: \"" + reversed3 + "\""); // 输出: "a good example" 反转后的字符串: "example good a"}
}
字符串黄金挑战
字符串冲刺题
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。详见leetcode14
public class LongestCommonPrefix {/*** 查找字符串数组中的最长公共前缀。** @param strs 字符串数组* @return 最长公共前缀,如果不存在则返回 ""*/public String longestCommonPrefix(String[] strs) {if (strs == null || strs.length == 0) {return ""; // 空数组或 null 数组,没有公共前缀}String prefix = strs[0]; // 假设第一个字符串是初始公共前缀// 遍历数组中的其余字符串for (int i = 1; i < strs.length; i++) {// 不断缩短 prefix,直到它成为 strs[i] 的前缀while (strs[i].indexOf(prefix) != 0) {prefix = prefix.substring(0, prefix.length() - 1); // 移除 prefix 的最后一个字符if (prefix.isEmpty()) {return ""; // 如果 prefix 为空,表示没有公共前缀}}}return prefix; // 返回最长公共前缀}public static void main(String[] args) {LongestCommonPrefix lcp = new LongestCommonPrefix();// 示例用法String[] strs1 = {"flower", "flow", "flight"};String prefix1 = lcp.longestCommonPrefix(strs1);System.out.println("最长公共前缀: " + prefix1); // 输出: 最长公共前缀: flString[] strs2 = {"dog", "racecar", "car"};String prefix2 = lcp.longestCommonPrefix(strs2);System.out.println("最长公共前缀: " + prefix2); // 输出: 最长公共前缀: ""String[] strs3 = {"cir", "car"};String prefix3 = lcp.longestCommonPrefix(strs3);System.out.println("最长公共前缀: " + prefix3); // 输出: 最长公共前缀: c}
}
压缩字符串
给你一个字符数组 chars
,请使用下述算法压缩:
从一个空字符串 s
开始。对于 chars
中的每组 连续重复字符 :
- 如果这一组长度为
1
,则将字符追加到s
中。 - 否则,需要向
s
追加字符,后跟这一组的长度。
压缩后得到的字符串 s
不应该直接返回 ,需要转储到字符数组 chars
中。需要注意的是,如果组长度为 10
或 10
以上,则在 chars
数组中会被拆分为多个字符。
请在 修改完输入数组后 ,返回该数组的新长度。
你必须设计并实现一个只使用常量额外空间的算法来解决此问题。详见leetcode443
public class StringCompression {/*** 使用给定算法压缩字符数组。** @param chars 要压缩的字符数组。* @return 压缩后数组的新长度。*/public int compress(char[] chars) {int indexAns = 0; // 写入压缩字符的位置int index = 0; // 读取字符的位置while (index < chars.length) {char currentChar = chars[index]; // 当前字符int count = 0; // 当前字符的重复次数// 统计当前字符的重复次数while (index < chars.length && chars[index] == currentChar) {index++;count++;}// 将字符添加到数组中chars[indexAns++] = currentChar;// 如果重复次数大于 1,则将计数添加到数组中if (count > 1) {String countStr = String.valueOf(count); // 将计数转换为字符串for (int i = 0; i < countStr.length(); i++) {chars[indexAns++] = countStr.charAt(i); // 将计数的每个数字添加到数组中}}}return indexAns; // 返回数组的新长度}public static void main(String[] args) {StringCompression sc = new StringCompression();// 示例用法char[] chars1 = {'a', 'a', 'b', 'b', 'c', 'c', 'c'};int newLength1 = sc.compress(chars1);System.out.print("压缩后的数组: ");for (int i = 0; i < newLength1; i++) {System.out.print(chars1[i] + " ");}System.out.println("\n新长度: " + newLength1);// 输出: 压缩后的数组: a 2 b 2 c 3// 新长度: 6char[] chars2 = {'a'};int newLength2 = sc.compress(chars2);System.out.print("压缩后的数组: ");for (int i = 0; i < newLength2; i++) {System.out.print(chars2[i] + " ");}System.out.println("\n新长度: " + newLength2);// 输出: 压缩后的数组: a// 新长度: 1}
}
相关文章:
【算法通关村 Day12】字符串
字符串青铜挑战 字符串转换 转换为小写字母 给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。leetcode791 public class ToLowerCase {/*** 将字符串中的大写字母转换为小写字母。** param s 输入字符串* return 转换…...
grafana K6压测
文章目录 install and runscript.jsoptions最佳实践 report 解析 https://grafana.com/docs/k6/latest/get-started install and run install # mac brew install k6当前目录下生成压测脚本 # create file script.js k6 new [filename] # create file ‘script.js’ in …...
SQLite 安装教程以及可视化工具介绍
目录 简述 1. Windows 系统安装 1.1 下载预编译的二进制文件 1.2 解压文件 1.3 配置环境变量 1.4 验证安装 2. GUI 可视化工具 2.1 免费工具 2.1.1 DB Browser for SQLite 2.1.2 SQLiteStudio 2.1.3 SQLite Expert 2.1.4 SQLiteGUI 2.1.5 Antares SQL 2.1.6 DbGa…...
谷云科技iPaaS×DeepSeek:构建企业智能集成的核心底座
2025年,DeepSeek大模型的爆发式普及,正引领软件行业实现 “智能跃迁”。从代码生成到系统集成,从企业级应用到消费级产品,自然语言交互能力已成为新一代软件的核心竞争力。据行业分析,超60%的软件企业已启动大模型适配…...
mac 下 java 调用 gurobi 不能加载 jar
在 mac 电脑中的 java 始终不能加载 gurobi 的 jar 包,java 的开发软件 eclipse,idea 总是显示找不到 gurobi 的 jar 包,但是 jar 包明明就在那里。 摸索了三个小时,最后发现原因竟然是: jar 包太新,替换…...
京准电钟:NTP精密时钟服务器在自动化系统中的作用
京准电钟:NTP精密时钟服务器在自动化系统中的作用 京准电钟:NTP精密时钟服务器在自动化系统中的作用 NTP精密时钟服务器在自动化系统中的作用非常重要,特别是在需要高精度时间同步的场景中。NTP能够提供毫秒级的时间同步精度,这…...
京东-零售-数据研发面经【附答案】
近期,有参加春招的同学和我交流了他的面试历程,我针对这些内容进行了细致的总结与梳理,并在此分享出来,希望能助力大家学习与借鉴。 1.八股文 1)HashMap的底层原理是什么【见V6.0面试笔记 Java基础部分第19题】 2&am…...
面试之《react hooks在源码中是怎么实现的?》
要深入理解 React Hooks 在源码中的实现,可以从以下几个关键方面来剖析: 核心数据结构 在 React 内部,使用链表来管理每个函数组件的 Hooks。每个 Hook 对应一个节点,这些节点通过 next 指针相连。以下是简化后的 Hook 节点结构…...
泛型的约束有哪几种?(C#)
目录 1 值类型约束(where T : struct) 2 引用类型约束(where T : class) 3 无参构造函数约束(where T : new ()) 4 基类约束(where T : <基类名>) 5 接口约束(…...
Harmony开发笔记(未完成)
一、感想 作为一名拥有11年经验的Android开发者,我亲历了Android从高速发展到如今面临“僧多粥少”的过程。技术的世界瞬息万变,没有一种技术能够让人依赖一辈子。去年初,我自学了鸿蒙系统,并顺利通过了鸿蒙官方的初级和高级认。…...
DevSecOps普及:安全与开发运维的深度融合
一、引言 随着软件开发模式的演进,DevOps已成为现代软件工程的主流实践。然而,在传统的DevOps流程中,安全往往被视为开发和运维之外的额外环节,导致安全漏洞在产品交付后才被发现,增加了修复成本和风险。为了解决这一…...
JavaScript 系列之:Ajax、Promise、Axios
前言 同步:会阻塞。同步代码按照编写的顺序逐行依次执行,只有当前的任务完成后,才会执行下一个任务。 异步:异步代码不会阻塞后续代码的执行。当遇到异步操作时,JavaScript 会将该操作放入任务队列中,继续…...
為什麼使用不限量動態住宅IP採集數據?
在瞭解“不限量動態住宅IP數據採集”之前,我們需要先搞清楚什麼是“動態住宅IP”。簡單來說,動態IP是一種會定期變化的IP地址,通常由互聯網服務提供商(ISP)分配給家庭用戶。與固定IP(靜態IP)不同…...
vue3-06vue2(Object.defineProperty)与vue3(基于ES6的Proxy)的响应式原理对比
1.vue2响应原理 1.1对于对象与数组 对象类型: 通过 object.defineProperty() 对属性的读取、修改进行拦截 (数据劫持) 数组类型:通过重写更新数组的一系列方法来实现拦截。 (对数组的变更方法进行了包裹) Vue2的响应式是基于Object.defineProperty实现的 1.2 基本原理Objec…...
MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 4
第04章_逻辑架构 1. 逻辑架构剖析 首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本&…...
清华大学DeepSeek文档下载,清华大学deepseek下载(完成版下载)
文章目录 前言一、清华大学DeepSeek使用手册下载二、清华大学DeepSeek使用手册思维导图 前言 这是一篇关于清华大学deepseek使用手册pdf的介绍性文章,主要介绍了DeepSeek的定义、功能、使用方法以及如何通过提示语设计优化AI性能。以下是对这些核心内容的简要概述&…...
HDFS数据多目录、异构存储、回收站
1.NameNode元数据多目录 HDFS集群中可以在hdfs-site.xml中配置“dfs.namenode.name.dir”属性来指定NameNode存储数据的目录,默认NameNode数据存储在${hadoop.tmp.dir}/dfs/name目录,“hadoop.tmp.dir”配置项在core-site.xml中。 我们也可以将NameNod…...
windows设置暂停更新时长
windows设置暂停更新时长 win11与win10修改注册表操作一致 ,系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值,名称为FlightSettingsMaxPauseDays 根据需求填写数…...
04 路由表的IP分组传输过程
目录 1、路由表的核心结构 2、IP分组传输过程和数据包转发过程 2.1、IP分组传输过程 2.2、数据包转发过程 2.3、IP分组传输过程和数据包转发的区别 3、数据包的变化 3.1、拓扑结构 3.2、传输过程详解(主机A → 主机B) 3.2.1、主机A发送数据 3.2…...
实现Python+Django+Transformers库中的BertTokenizer和BertModel来进行BERT预训练,并将其应用于商品推荐功能
一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…...
数据结构---定长顺序表
1.线性表的定义 存在唯一的一个被称为“第一个”的数据元素;存在唯一的一个被称为“最后一个”的数据元素;除第一个之外,集合中的每一个数据元素都只有一个前驱;除最后一个之外,集合中的每一个数据元素都只有一个后继…...
Elasticsearch 相关面试题
1. Elasticsearch基础 Elasticsearch是什么? Elasticsearch是一个分布式搜索引擎,基于Lucene实现。 Mapping是什么?ES中有哪些数据类型? Mapping:定义字段的类型和属性。 数据类型:text、keyword、integer、…...
冒泡排序(Bubble Sort)详细教程:Java实现与优化
一、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过两两比较相邻元素,将较大的元素“冒泡”到数列的末尾。每一轮遍历会将一个较大的元素放到正确的位置,直到整个数组有序…...
【git】【reset全解】Git 回到上次提交并处理提交内容的不同方式
Git 回到上次提交并处理提交内容的不同方式 在 Git 中,若要回到上次提交并对提交内容进行不同处理,可使用 git reset 命令搭配不同选项来实现。以下为你详细介绍操作步骤及各选项的作用。 1. 查看提交历史 在操作之前,可通过以下命令查看提…...
矩阵的 正定(Positive Definite)与负定(Negative Definite):从Fisher信息矩阵看“曲率”的秘密
矩阵的正定与负定:从Fisher信息矩阵看“曲率”的秘密 在数学和统计学中,矩阵的“正定性”和“负定性”是一对重要概念,尤其在优化、统计推断和机器学习中频繁出现。比如,Fisher信息矩阵(Fisher Information Matrix, F…...
Uniapp 小程序:语音播放与暂停功能的实现及优化方案
界面部分 //开启语音 <button class"open" v-if"showPlayfalse" click"playText">这是开启播放的图片</button >//关闭语音 <button class"close" v-if"showPlaytrue" click"stopText">这是…...
Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统(全新升级)
大家好,今天为大家带来的是Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统,这个系统在原本的系统上进行优化升级。 算法从开源框架的 snlow ,到支持机器学习的 lstm 算法可以手动输入语句,进行…...
IP-------GRE和MGRE
4.GRE和MGRE 1.应用场景 现实场景 居家工作,公司工作,分公司工作----------需要传输交换数据--------NAT---在该场景中需要两次NAT(不安全) 为了安全有两种手段-----1.物理专线---成本高 2.VPN--虚拟专用网---隧道技术--封装技…...
内网综合渗透测试——WinterMute: 1靶场
靶场来源 <WinterMute: 1 ~ VulnHub> Wintermute 虚拟机网络配置指南 本实验涉及网络跳转技术,需正确配置VirtualBox网络。所有IP均为动态分配,配置快速简便。 通过"文件 >> 导入虚拟设备"导入各虚拟机。 STRAYLIGHT (网络#1 和 …...
项目进度管理工具:甘特图与关键路径法(2025实战指南)
在全球数字化转型加速的背景下,项目延期率高达42%的现状倒逼管理者掌握科学的进度管理工具。本文结合2025年最新实践,深度解析甘特图与关键路径法的原理及应用,助你构建精准可控的项目进度管理体系。 一、双剑合璧:工具组合的价值…...
deepseek-r1-centos-本地服务器配置方法
参考: 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek,一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…...
C# Unity 唐老狮 No.2 模拟面试题
本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…...
一周学会Flask3 Python Web开发-flask3上下文全局变量session,g和current_app
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili flask3提供了session,g和current_app上下文全局变量来方便我们操作访问数据。 以下是一个表格,用于比较Flask中的…...
SpringBoot整合Mybatis-Plus+Druid实现多数据源
概述 Spring Boot: Spring Boot是一个基于Spring框架的开源Java开发框架,旨在简化Spring应用程序的开发、配置和部署。它提供了一种快速、敏捷的方式来构建独立的、生产级别的Spring应用程序,同时还提供了许多开箱即用的功能和工具࿰…...
【Mysql】我在广州学Mysql 系列—— 性能优化相关例题
ℹ️大家好,我是练小杰,时间过得真快,还有2天,2025年2月份就结束了!!😆 本文是针对Mysql数据库中有关性能优化的相关示例,通过本文的学习可以深入了解性能优化的各类命令!…...
罗成华教授论腹膜后肿瘤核磁共振检查意义
腹膜后器官很少受生理运动的影响,而MRI又可进行除横断面以外的冠状面、矢状面或其它任意切面检查,其图像清晰,故其特别适用于腹膜后肿瘤的术前检查。早期经验显示MRI可提供比CT更多的信息,不用造影剂术前即…...
CSS3 圆角:实现与优化指南
CSS3 圆角:实现与优化指南 随着网页设计的发展,CSS3 圆角已经成为了现代网页设计中不可或缺的元素之一。本文将详细讲解 CSS3 圆角的基本用法、实现方式以及优化技巧,帮助您在网页设计中更好地运用这一功能。 一、CSS3 圆角基本用法 1.1 基…...
Windows下不建议使用C/C++运行库的本地化功能
Windows不建议setlocale或使用C的std::locale对象等C/C运行库的本地化功能,因为setlocale或C的std::locale对象实现bug多,不稳定,可能存在兼容性问题,如: 1、DOS/Win16下setlocale只支持"C"的locale 2、Wi…...
python-leetcode-乘积最大子数组
152. 乘积最大子数组 - 力扣(LeetCode) class Solution:def maxProduct(self, nums: List[int]) -> int:if not nums:return 0max_prod nums[0]min_prod nums[0]result nums[0]for i in range(1, len(nums)):if nums[i] < 0:max_prod, min_prod…...
基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
Python入门 — 类
面向对象编程中,编写表示现实世界中的事物和情景的类(class),并基于这些类来创建对象(object)。根据类来创建对象称为实例化,这样就可以使用类的实例(instance) 一、创建…...
本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)
使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 LLM 编写和执行 DSL(例如 SQL)中的查询。 我们将演练在使用基于 langchain 链 &#x…...
监听其他音频播放时暂停正在播放的音频
要实现当有其他音频播放时暂停当前音频,你可以使用全局事件总线或 Vuex 来管理音频播放状态。这里我将展示如何使用一个简单的事件总线来实现这个功能。 首先,你需要创建一个事件总线。你可以在项目的一个公共文件中创建它,例如 eventBus.js…...
Docker数据卷操作实战
什么是数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷 可以在容器之间共享和享用对 数据卷 的修改立马生效对 数据卷 的更新,不会影响镜像数据卷 默认会一直存在,即时容器被…...
Go中slice和map引用传递误区
背景 关于slice和map是指传递还是引用传递,很多文章都分析得模棱两可,其实在Go中只有值传递,但是很多情况下是因为分不清slice和map的底层实现,所以导致很多人在这一块产生疑惑,下面通过代码案例分析slice和map到底是…...
代码审计入门学习
简介 HadSky轻论坛程序为个人原创PHP系统,作者为蒲乐天,后端基于puyuetianPHP框架驱动,前端基于 puyuetianUI框架驱动,默认编辑器为puyuetianEditor富文本编辑器,其他非原创框架及驱动JQuery.js 及Font-Awesome字体库…...
排序算法(3):
这是我们的最后一篇排序算法了,也是我们的初阶数据结构的最后一篇了。 我们来看,我们之前已经讲完了插入排序,选择排序,交换排序,我们还剩下最后一个归并排序,我们今天就讲解归并排序,另外我们还…...
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
前言 人工智能技术的爆发式发展催生了多样化的AI模型生态,从通用对话到垂直领域应用,从数据挖掘到创意生成,各模型凭借其独特的技术优势与场景适配性,正在重塑全球产业格局。本文将以DeepSeek、ChatGPT、XAI(可解释人…...
服务端配置TCP探活,超出探活时间后的行为?
server端启动 (完整源码在最后) 配置探活 setsockopt(client_fd, IPPROTO_TCP, TCP_KEEPIDLE, &(int){5}, sizeof(int)); // 空闲60秒后探测setsockopt(client_fd, IPPROTO_TCP, TCP_KEEPINTVL, &(int){10}, sizeof(int)); // 探测间隔10秒…...
Eclipse安装和配置环境教程包含下载、安装、汉化(附安装包)
文章目录 前言一、JDK 安装二、Eclipse IDE 安装三、Eclipse软件汉化(可选)四、安装完成 前言 在编程的世界里,一款好的开发工具能让效率大幅提升,Eclipse 2024 便是这样的利器。不过,其安装过程涉及 JDK 配置、软件本…...