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

Datawhale组队学习笔记task1——leetcode面试题

文章目录

  • 写在前面
    • 刷题流程
    • 刷题技巧
  • Day1题目
    • 1、0003.无重复字符的最长子串
    • 解答:
    • 2.00004 寻找两个正序数组的中位数
    • 解答:
    • 3.0005.最长回文子串
    • 解答
    • 4.0008.字符串转换整数
    • 解答:
  • Day2题目
    • 1.0151.反转字符串中的单词
    • 解答
    • 2.0043.字符串相乘
    • 解答
    • 3.0014最长公共前缀
    • 解答
  • Day3题目
    • 1.0144.二叉树的前序遍历
    • 解答
    • 2.0094.二叉树的中序遍历
    • 解答
    • 3.0102.二叉树的层序遍历
    • 解答
    • Day4题目
    • 1.0103.二叉树的锯齿形层序遍历
    • 解答
    • 2.0236.二叉树的最近公共祖先
    • 解答
    • 3.0104.二叉树的最大深度
    • 解答

写在前面

教程内容来自Datawhale
开源教程:https://github.com/datawhalechina/leetcode-notes/blob/main/docs/ch07/index.md
在线学习网站:https://www.datawhale.cn/learn/summary/67

刷题流程

在这里插入图片描述

刷题技巧

  • 五分钟思考法
  • 重复刷题
  • 按专题分类刷题
  • 写解题报告
  • 坚持刷题
    在这里插入图片描述
    在这里插入图片描述

Day1题目

1、0003.无重复字符的最长子串

在这里插入图片描述

解答:

1.思考 emmm不太会
2.看题解
1、暴力解
长度为N的字符串有[(N+1)*N]/2种子串,然后判断长度为N的子串是否有重复字符,时间复杂度为O(n^3)。
2、滑动窗口+哈希表
思路:
指针j遍历字符s,哈希表统计字符s[j]最后一次出现的索引。
每轮更新左指针i,保证区间【i+1,j】内无重复字符且最大
更新结果res,取res和本轮双指针区间【i+1,j】的最大值

class Solution:
def length0fLongestSubstring(self,s:str)c-> int:dic,res,i = {},0,-1for j in range(len(s)):if s[j] in dic:i = max(dic[s[j]],i) #更新左指针idic[s[j]] = j #哈希表记录res = max(res,j - i) #更新结果return res

复杂度分析
时间复杂度:O(N),N为字符串长度,动态规划需遍历计算dp列表
空间复杂度:O(1)

3、动态规划+哈希表
在这里插入图片描述

class Solution:def lengthOfLongestSubstring(self, s: str) -> int:dic = {}res = tmp = 0for j in range(len(s)):i = dic.get(s[j],-1) #获取索引idic[s[j]] = j #更新哈希表tmp = tmp + 1 if tmp < j - i else j - i #dp[j-1] -> dp[j]res = max(res,tmp) #max(dp[j-1],dp[j])return res

Python 的 get(key, default) 方法和 Java 的 getOrDefault(key, default) ,代表当哈希表包含键 key 时返回对应 value ,不包含时返回默认值 default

2.00004 寻找两个正序数组的中位数

在这里插入图片描述

解答:

1.思考:使用归并排序将两个数组num1+num2排序成一个有序数组,如果数组长度为奇数,则为[(num1+num2)/2]+1,如果为偶数则为[(num1+num2)/2]的两个数的平均值。

def merge(nums1,nums2):m = len(nums1) - 1n = len(nums2) - 1i = 0j = 0merge_C = []while i <= m and j <= n:if nums1[i] < nums2[j]:merge_C.append(nums1[i])i += 1else:merge_C.append(nums2[j])j += 1while i <= m:merge_C.append(nums1[i])i += 1while j <= n:merge_C.append(nums2[j])j += 1return merge_Cclass Solution:def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:merge_C = merge(nums1,nums2)x = len(merge_C) // 2if len(merge_C) % 2 == 0:median = (merge_C[x] + merge_C[x-1]) / 2else:median = merge_C[x]return median

时间复杂度:O(nlogn)
空间复杂度:O(n)
在这里插入图片描述
2 题解:二分法
使用二分法,每次排除一半,使用迭代优化,使用一遍处理,不需要再算一遍偶数.

class Solution:def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:m = len(nums1)n = len(nums2)odd = True if (m + n) % 2 == 1 else Falsek = (m + n) // 2 - 1while True:if m < n:nums1,nums2,m,n = nums2,nums1,n,mif n == 0:if odd:return nums1[k+1]else:return (nums1[k] + nums1[k+1]) / 2if k==0:nums =sorted(nums1[:2] + nums2[:2])if odd:return nums[1]else:return (nums[0] + nums[1]) / 2remove_num = min(k // 2,n) if k > 1 else 1if nums1[remove_num - 1] < nums2[remove_num - 1]:nums1,k = nums1[remove_num:],k - remove_numelse:nums2,k = nums2[remove_num:],k - remove_numm = len(nums1)n = len(nums2)       

时间复杂度:O(log(m+n))
空间复杂度:O(1)

3.0005.最长回文子串

在这里插入图片描述

解答

思考:只会暴力解
题解:动态规划——状态转移方程
动态规划:填dp表、当前ij状态、过去ij状态、如何联合得到输出、边界条件

  • 定义状态:题目让我们求什么,就把什么设置为状态
    题目求s中最长的回文子串,那就判断所有子串是否为回文子串,选出最长的
    因此:dp[i][j]表示s[i:j+1]是否为回文子串(这里+1是为了构造闭区间)
  • 状态转移方程:对空间进行分类讨论(当前ij状态、过去ij状态 如何联合得到输出)
  • 当前ij状态:头尾必须相等(s[i]==s[j])
  • 过去ij状态:去掉头尾之后还是一个回文(dp[i+1][j-1] is True)
  • 边界条件:只要是找过去ij状态的时候,就会涉及边界条件(即超出边界情况处理)
    当i==j时一定是回文
    j-1-(i+1)<=0,即j-i<=2时,只要当s[i]==s[j]时就是回文,不用判断dp[i+1][j-1]
    dp[i][j] 为截取的子串
  • 初始状态:这里已经直接判断j-i<=2的情况了,因此用不到初始状态,可以不设
  • 输出内容:每次发现新回文都比较一下长度,记录i与长度
  • 优化空间提速
    在这里插入图片描述
    代码:
class Solution:def longestPalindrome(self, s: str) -> str:size = len(s)# 特殊处理if size == 1:return s# 创建动态规划dynamic programing表dp = [[False for _ in range(size)] for _ in range(size)]# 初始长度为1,这样万一不存在回文,就返回第一个值(初始条件设置的时候一定要考虑输出)max_len = 1start = 0for j in range(1,size):for i in range(j):# 边界条件:# 只要头尾相等(s[i]==s[j])就能返回Trueif j-i<=2:if s[i]==s[j]:dp[i][j] = Truecur_len = j-i+1# 状态转移方程 # 当前dp[i][j]状态:头尾相等(s[i]==s[j])# 过去dp[i][j]状态:去掉头尾之后还是一个回文(dp[i+1][j-1] is True)else:if s[i]==s[j] and dp[i+1][j-1]:dp[i][j] = Truecur_len = j-i+1# 出现回文更新输出if dp[i][j]:if cur_len > max_len:max_len = cur_lenstart = ireturn s[start:start+max_len]   

时间复杂度:O(n^2)
空间复杂度:O(n^2)

4.0008.字符串转换整数

在这里插入图片描述
在这里插入图片描述

解答:

思考:不会
题解思路1:
1.先去除前后空格
2.检测正负号
3.读入数字,并用字符串存储数字结果
4.将数字字符串转为整数,并根据正负号转换整数结果
5.判断整数范围,并返回最终结果

代码:

class Solution:def myAtoi(self, s: str) -> int:num_str = ""positive = Truestart = 0s = s.lstrip()if not s:return 0if s[0] == '-':positive = Falsestart = 1elif s[0] == '+':positive = Truestart = 1elif not s[0].isdigit():return 0for i in range(start,len(s)):if s[i].isdigit():num_str += s[i]else:breakif not num_str:return 0num = int(num_str)if not positive:num = -numreturn max(num,-2 ** 31)else:return min(num,2 ** 31 - 1)

时间复杂度:O(n),其中n是字符串s的长度
空间复杂度:O(1)
解法2:
处理符号(正负号)。
跳过前导空格。
逐步解析数字字符,拼接成一个整数。
处理溢出问题,确保返回的整数在 32 位范围内。
如果遇到非数字字符,停止转换。

class Solution:MAX: int = 2**31 - 1 //32 位带符号整数的最大值MIN: int = -(2**31)  // 32 位带符号整数的最小值def myAtoi(self, s: str) -> int:output:int | None = None //用来存储最终转换后的整数值,初值为nonenegative:bool | None = None //用来标记数字是否是负数,初值为nonefor char in s:if output is None: //意味着还没有开始解析数字部分if char == '+' and negative is None:negative = False//如果当前字符是 '+',且 negative 尚未确定,则标记 negative = False 表示正数。elif char == '-' and negative is None:negative = True//如果当前字符是 '-',且 negative 尚未确定,则标记 negative = True 表示负数elif char.isdigit():output = int(char) if not negative else -int(char)//如果当前字符是数字 (isdigit()),并且 output 尚未赋值,则将其转为整数。如果是负数,则乘以 -1elif char != ' ' or negative is not None:break//如果当前字符是空格 ' ',而 negative 尚未确定,继续跳过空格。elif char.isdigit():output *= 10//当 output 已经开始赋值时,字符为数字,则继续拼接数字。每次遇到一个数字,就将当前的 output 乘以 10(即将新数字移到十位、百位、千位等)并加上当前数字。if not negative:output += int(char)if output >= self.MAX:return self.MAXelse:output -= int(char)//如果是负数,则从 output 中减去当前数字if output <= self.MIN:return self.MIN//如果结果超出范围(即大于 MAX 或小于 MIN),直接返回 MAX 或 MIN。else:breakreturn output if output is not None else 0//如果 output 不为 None,则返回结果;如果没有有效的数字被解析(例如输入是空字符串或只有空格),则返回 0

时间复杂度:O(n),其中n是字符串s的长度
空间复杂度:O(1)

Day2题目

1.0151.反转字符串中的单词

在这里插入图片描述
在这里插入图片描述

解答

思考:
分割+倒序
利用 “字符串分割”、“列表倒序” 的内置函数 (面试时不建议使用) ,可简便地实现本题的字符串翻转要求。

  • 由于split()方法将单词间的 “多个空格看作一个空格” (参考自 split()和split(’ ')的区别 ),因此不会出现多余的 “空单词” 。因此,直接利用 reverse() 方法翻转单词列表 strs ,拼接为字符串并返回即可。

在这里插入图片描述

class Solution:def reverseWords(self, s: str) -> str:s = s.strip() #删除首尾空格strs = s.split() #分割字符串strs.reverse() #翻转单词列表return ' '.join(strs) #拼接为字符串并返回
return ' '.join(s.strip().split()[::-1])

时间复杂度:O(N)
空间复杂度:O(N)

2.0043.字符串相乘

在这里插入图片描述

解答

思考:能不能直接将num1+num2转为整形,即int(num1)和int(num2)将两数相乘,再转为字符串。(好吧不能题目有规定)
题解:
在这里插入图片描述

class Solution:def multiply(self, num1: str, num2: str) -> str:n,m=len(num1),len(num2)res=0# 两个数相乘,数位数多的放上面,数位数少的放下面if n<m:return self.multiply(num2,num1)else: # 先固定下面的数的个位,然后遍历上面的数for j in range(m-1,-1,-1):y=int(num2[j])sum_="" # 当前层的和carry=0 # 当前层的进位for i in range(n-1,-1,-1):x=int(num1[i])temp=x*y+carrycur=temp%10carry=temp//10sum_=str(cur)+sum_# 考虑最后进位多出的carry(carry可以大于等于1)             if carry>=1:             sum_=str(carry)+sum_ # 计算最终结果(整数形式)res=int(sum_)*pow(10,m-j-1)+res  # 每层和进行错位相加,pow(10,m-j-1)=10**(m-j-1),自己可用找一下规律return str(res)          

时间复杂度:O(mxn),其中m和n分别为nums1和nums2的长度。
空间复杂度:O(m+n)

3.0014最长公共前缀

在这里插入图片描述

解答

题解:
使用zip函数取出每个单词相同位置的字母,转化成集合如果字母相同集合长度为1,如果不同就可以直接返回结果啦

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:ans = ''for i in list(zip(*strs)):if len(set(i)) == 1:ans += i[0]else:breakreturn ans

时间复杂度:O(n)
空间复杂度:O(1)

Day3题目

1.0144.二叉树的前序遍历

在这里插入图片描述
在这里插入图片描述

解答

思考:树的先序递归遍历:先访问根节点,然后递归左子树和右子树。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:def pre(root):if root is None:returnans.append(root.val)pre(root.left)pre(root.right)ans = []pre(root)return ans

时间复杂度 O(n),空间复杂度 O(n)。其中 n 是二叉树的节点数,空间复杂度主要取决于递归调用的栈空间。

2.0094.二叉树的中序遍历

在这里插入图片描述

解答

思考:树的中序递归遍历:先访问左子树,然后递归根节点和右子树。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:def dfs(root):if root is None:return      dfs(root.left)ans.append(root.val)dfs(root.right)ans = []dfs(root)return ans

时间复杂度:O(n)
空间复杂度:O(n)

3.0102.二叉树的层序遍历

在这里插入图片描述

解答

思考:可以利用广度优先搜索进行遍历
代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return []#跟结点入queuequeue = [root]res = []while queue:res.append([node.val for node in queue])#存储当前层的孩子节点列表ll = []#对当前层的每个节点遍历for node in queue:#如果左子结点存在,入队列if node.left:ll.append(node.left)#如果右子节点存在,入队列if node.right:ll.append(node.right)#把queue更新成下一层的节点,继续遍历下一层queue = llreturn res

时间复杂度:O(n^2)
空间复杂度:O(n)

Day4题目

1.0103.二叉树的锯齿形层序遍历

在这里插入图片描述

解答

要求:
在这里插入图片描述
算法流程:
1、特例处理:当树的根节点为空,则直接返回空列表【】
2、初始化:打印结果空列表res,包含根节点的双端队列deque
3、BFS循坏:当deque为空时跳出
a.新建列表tmp,用于临时存储当前层打印结果
b.当前层打印循坏:循坏次数为当前层节点数(即deque长度)
a.出队:队首元素出队,记为node
b.打印:若为奇数层,将node.val添加至tmp尾部;否则,添加至tmp头部
c.添加子节点:若node的左右子节点不为空,则加入deque
c.将当前层结果tmp转化为list并添加入res
4、返回值:返回打印结果列表res即可
代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root:return []res,deque = [],collections.deque([root])while deque:tmp = collections.deque()for _ in range(len(deque)):node = deque.popleft()if len(res) % 2 == 0:tmp.append(node.val) #奇数层 -> 插入队列尾部else:tmp.appendleft(node.val)#偶数层->插入队列头部if node.left:deque.append(node.left)if node.right:deque.append(node.right)res.append(list(tmp))return res

2.0236.二叉树的最近公共祖先

在这里插入图片描述

解答

思考:若 root 是 p,q 的 最近公共祖先 ,则只可能为以下情况之一:
p 和 q 在 root 的子树中,且分列 root 的 异侧(即分别在左、右子树中);
p=root ,且 q 在 root 的左或右子树中;
q=root ,且 p 在 root 的左或右子树中;

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':if not root or root == p or root == q: return rootleft = self.lowestCommonAncestor(root.left, p, q)right = self.lowestCommonAncestor(root.right, p, q)if not left and not right: return # 1.if not left: return right # 3.if not right: return left # 4.return root # 2. if left and right:

时间复杂度 O(N) : 其中 N 为二叉树节点数;最差情况下,需要递归遍历树的所有节点。
空间复杂度 O(N) : 最差情况下,递归深度达到 N ,系统使用 O(N) 大小的额外空间。

3.0104.二叉树的最大深度

在这里插入图片描述

解答

思考:树的层序遍历 / 广度优先搜索往往利用 队列 实现。
关键点: 每遍历一层,则计数器 +1 ,直到遍历完成,则可得到树的深度。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def maxDepth(self, root: Optional[TreeNode]) -> int:if not root: return 0queue, res = [root], 0while queue:tmp = []for node in queue:if node.left: tmp.append(node.left)if node.right: tmp.append(node.right)queue = tmpres += 1return res

时间复杂度 O(N) : N 为树的节点数量,计算树的深度需要遍历所有节点。
空间复杂度 O(N) : 最差情况下(当树平衡时),队列 queue 同时存储 N/2 个节点。

相关文章:

Datawhale组队学习笔记task1——leetcode面试题

文章目录 写在前面刷题流程刷题技巧 Day1题目1、0003.无重复字符的最长子串解答&#xff1a;2.00004 寻找两个正序数组的中位数解答&#xff1a;3.0005.最长回文子串解答4.0008.字符串转换整数解答&#xff1a; Day2题目1.0151.反转字符串中的单词解答2.0043.字符串相乘解答3.0…...

【快速入门 LVGL】-- 1、STM32 工程移植 LVGL

目录 一、LVGL 简述 二、复制一个STM32工程 三、下载 LVGL 四、裁剪 源文件 五、工程添加 LVGL 文件 六、注册 显示 七、注册 触摸屏 八、LVGL 心跳、任务刷新 九、开跑 LVGL 十、控件的事件添加、响应处理 十 一、几个好玩小事情 十 二、显示中文 ~~ 约定 ~~ 在…...

Mac使用-快速开始总结(持续更新)

目录 Mac使用-快速开始总结常用快捷键 Mac使用-快速开始总结 第一次使用mac&#xff0c;发现很多细节上和windows不一样&#xff0c;以下是自己遇到的常用总结&#xff0c;帮助自己快速熟悉mac的使用&#xff5e; 常用快捷键 复制、粘贴 快捷键&#xff1f; 复制&#xff1a;…...

Kubernetes (K8s) 入门指南

Kubernetes (K8s) 入门指南 什么是Kubernetes&#xff1f; Kubernetes&#xff0c;通常简称为 K8s&#xff08;因为从 “K” 到 “s” 之间有八个字符&#xff09;&#xff0c;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌设…...

归纳webpack

常用配置项 const HtmlWebpackPlugin require(html-webpack-plugin); // 通常用于生成HTML const MiniCssExtractPlugin require(mini-css-extract-plugin);// 用于分离CSS const cssMinimizerWebpackPlugin require("css-minimizer-webpack-plugin"); // 用于压…...

Web APP 阶段性综述

Web APP 阶段性综述 当前&#xff0c;Web APP 主要应用于电脑端&#xff0c;常被用于部署数据分析、机器学习及深度学习等高算力需求的任务。在医学与生物信息学领域&#xff0c;Web APP 扮演着重要角色。在生物信息学领域&#xff0c;诸多工具以 Web APP 的形式呈现&#xff…...

SpringBoot之OriginTrackedPropertiesLoader类源码学习

源码解析 /*** 作用是从给定的资源&#xff08;如文件或输入流&#xff09;中加载 .properties 文件&#xff0c;* 并将属性键值对转换为带有来源信息&#xff08;origin&#xff09;的 OriginTrackedValue 对象。*/ public class OriginTrackedPropertiesLoader {private fin…...

Flask学习入门笔记

Flask学习入门笔记 前言1. 安装Flask2. 创建一个简单的Flask应用3. 路由与视图函数3.1 基本路由3.2 动态路由3.3 HTTP方法 4. 请求与响应4.1 获取请求数据4.2 返回响应 5. 模板渲染5.1 基本模板渲染5.2 模板继承 6. 静态文件6.1 静态文件的目录结构6.2 在模板中引用静态文件6.2…...

List 接口的实现类

在 Java 中&#xff0c;List 是一个非常常用的接口&#xff0c;提供了有序、可重复的元素集合。List 接口有多个实现类&#xff0c;每个实现类都有其特定的特性和适用场景。以下是 Java 中主要实现了 List 接口的类及其详细介绍。 1. 常见的 List 实现类 1.1 ArrayList 简介&…...

SpringCloud-基于Docker和Docker-Compose的项目部署

一、初始化环境 1. 卸载旧版本 首先&#xff0c;卸载可能已存在的旧版本 Docker。如果您不确定是否安装过&#xff0c;可以直接执行以下命令&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logro…...

【人工智能】Python中的自动化机器学习(AutoML):如何使用TPOT优化模型选择

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 随着机器学习在各行业的广泛应用&#xff0c;模型选择和优化成为了数据科学家面临的主要挑战之一。自动化机器学习&am…...

Kafka 超级简述

Kafka 就是一个 分布式的消息系统&#xff0c;它帮助不同的系统和应用之间传递信息。可以把它想象成一个超级高效的 “邮局”&#xff1a; 生产者&#xff08;Producer&#xff09; 就是把信息&#xff08;消息&#xff09;送到这个 “邮局” 的人。消费者&#xff08;Consume…...

tomcat项目运行后报500

HTTP状态 500 - 内部服务器错误 类型 异常报告消息 实例化Servlet类[com.mdy.servlet_02.LifeDemoServlet]异常描述 服务器遇到一个意外的情况&#xff0c;阻止它完成请求。例外情况jakarta.servlet.ServletException: 实例化Servlet类[com.mdy.servlet_02.LifeDemoServlet]异常…...

Chapter1:初见C#

参考书籍&#xff1a;《C#边做边学》&#xff1b; 1.初见C# 1.1 C#简介 C # {\rm C\#} C#编写了许多完成常用功能的程序放在系统中&#xff0c;把系统中包含的内容按功能分成多个部分&#xff0c;每部分放在一个命名空间中&#xff0c;导入命名空间语法格式如下&#xff1a; /…...

SQL-leetcode—620. 有趣的电影

620. 有趣的电影 表&#xff1a;cinema ------------------------ | Column Name | Type | ------------------------ | id | int | | movie | varchar | | description | varchar | | rating | float | ------------------------ id 是该表的主键(具有唯一值的列)。 每行包含…...

《鸿蒙Next平台:决策树面对噪声数据的鲁棒性逆袭》

在机器学习领域&#xff0c;决策树是一种强大的模型&#xff0c;但训练数据中的噪声往往会影响其性能和鲁棒性。在鸿蒙Next平台上&#xff0c;我们可以采用多种策略来增强决策树模型在面对噪声数据时的鲁棒性。 数据预处理层面 数据清洗&#xff1a;利用鸿蒙Next平台的数据处理…...

minio https配置

如果使用了官网的教程 使用minio-user作为启动用户 准备好&#xff1a;文件名要定死&#xff0c;因为minio只认识key和crt文件 将xxxxx.key重命名为private.key 将xxxxx.pem重命名为public.crt 将这两个文件放到/home/minio-user/.minio/certs/ 目录下 chown -r minio…...

Windows重装后NI板卡LabVIEW恢复正常

在重新安装Windows系统后&#xff0c;NI&#xff08;National Instruments&#xff09;板卡能够恢复正常工作&#xff0c;通常是由于操作系统的重新配置解决了之前存在的硬件驱动、兼容性或配置问题。操作系统重装后&#xff0c;系统重新加载驱动程序、清理了潜在的冲突或损坏的…...

Spring Initializr创建springboot项目 “java: 错误: 无效的源发行版:19”

我用的1.8的jdk&#xff0c;排查发现这是jdk和springboot版本冲突导致的。 1、File->Project Structure->Module->source和dependancies改成相应的版本 2、File->Setting->Build,Execution,Deployment->Compiler->Java Compiler->target bytecode ver…...

Vue computed属性原理及其惰性求值特点

1&#xff0c;computed属性 在 Vue.js 中&#xff0c; computed 属性是 Vue 响应式系统的一个核心特性&#xff0c;它允许开发者声明式地描述一个依赖其他响应式属性的计算值。 computed 属性是基于它们的依赖进行缓存的&#xff0c;只有当依赖发生变化时&#xff0c;它们才会…...

关于在 Kotlin DSL 中,ndk 的配置方式

在 Kotlin DSL 中&#xff0c;ndk 的配置方式有所不同&#xff0c;取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分&#xff0c;需要通过正确的上下文调用。 错误代码&#xff1a; ndk {abiFilters("ar…...

机器学习(一)

一, Supervised Machine Learning (监督机器学习) 1,定义:学习X到Y或输入到输出的映射的算法&#xff0c;学习算法从正确答案中学习。即教机器 如何做事情(数据集学习算法模型)&#xff0c;根据已有的数据集&#xff0c;知道输入和输出结果 之间的关系&#xff0c;并根据这…...

得物App再迎开放日,全流程体验正品查验鉴别

近日&#xff0c;得物App超级品质保障中心再度迎来了开放日活动。近60位得物App的用户与粉丝齐聚超级品质保障中心&#xff0c;全流程体验正品查验鉴别。开放日当天&#xff0c;参与者有机会近距离观察得物App的商品质检区、鉴别区、收发流转区、实验室和正品库等关键功能区&am…...

《leetcode-runner》【图解】【源码】如何手搓一个debug调试器——表达式计算

前文&#xff1a; 《leetcode-runner》如何手搓一个debug调试器——引言 《leetcode-runner》如何手搓一个debug调试器——架构 《leetcode-runner》如何手搓一个debug调试器——指令系统 《leetcode-runner》【图解】如何手搓一个debug调试器——调试程序【JDI开发】【万字详解…...

Flink概述

一、Flink是什么 二、Flink特点 三、Flink vs SparkStreaming 表 Flink 和 Streaming对比 Flink Streaming 计算模型 流计算 微批处理 时间语义 事件时间、处理时间 处理时间 窗口 多、灵活 少、不灵活&#xff08;窗口必须是批次的整数倍&#xff09; 状态 有 …...

【Linux】信号

目录 一、信号的概念二、信号的产生2.1 通过键盘进行信号的产生2.2 通过系统调用进行信号的产生2.2.1 kill函数2.2.2 raise函数2.2.3 abort函数 2.3 通过异常的方式进行信号的产生2.4 通过软件条件的方式进行信号的产生2.4.1 关闭管道读端2.4.2 alarm函数 2.5 Core Dump&#x…...

【漏洞分析】DDOS攻防分析

0x00 UDP攻击实例 2013年12月30日&#xff0c;网游界发生了一起“追杀”事件。事件的主角是PhantmL0rd&#xff08;这名字一看就是个玩家&#xff09;和黑客组织DERP Trolling。 PhantomL0rd&#xff0c;人称“鬼王”&#xff0c;本名James Varga&#xff0c;某专业游戏小组的…...

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…...

【VUE】计算属性+动态样式方法封装

【VUE】父子组件联动实现动态样式控制 【VUE】页面跳转实现动态样式控制 在utils下创建文件夹styleController 编写通用的方法 /*** 样式控制* 本文件主要提供一些动态控制样式的方法*//*** 控制表格表头中的 某些列 是否显示星号** param showStarActions boolean 当值为True时…...

Mac玩Steam游戏秘籍!

Mac玩Steam游戏秘籍&#xff01; 大家好&#xff01;最近有不少朋友在用MacBook玩Steam游戏时遇到不支持mac的问题。别担心&#xff0c;我来教你如何用第三方工具Crossover来畅玩这些不支持的游戏&#xff0c;简单又实用&#xff01; 第一步&#xff1a;下载Crossover 首先&…...

【后端面试总结】tls中.crt和.key的关系

tls中.crt和.key的关系 引言 在现代网络通信中&#xff0c;特别是基于SSL/TLS协议的加密通信中&#xff0c;.crt和.key文件扮演着至关重要的角色。这两个文件分别代表了数字证书和私钥&#xff0c;是确保通信双方身份认证和数据传输安全性的基石。本文旨在深入探讨TLS中.crt和…...

【Axure】配色库

配色库是一个专为设计师和创意工作者打造的在线资源平台&#xff0c;旨在提供丰富的色彩解决方案&#xff0c;帮助用户轻松找到或创造美观和谐的色彩搭配。其中&#xff0c;一个典型的配色库包含了以下几个核心元素&#xff1a; 渐变色&#xff1a;提供多样化的渐变色方案&…...

PL/SQL语言的语法糖

PL/SQL语言的语法糖 引言 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;是Oracle公司为其数据库管理系统&#xff08;DBMS&#xff09;设计的一种过程化语言。作为一种扩展SQL的语言&#xff0c;PL/SQL不仅支持数据的查询和操作&#xff0c;…...

Pytorch|YOLO

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…...

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…...

ZooKeeper 常见问题与核心机制解析

Zookeeper集群本身不直接支持动态添加机器。在Zookeeper中&#xff0c;集群的配置是在启动时静态定义的&#xff0c;并且集群中的每个成员都需要知道其他所有成员。当你想要增加一个新的Zookeeper服务器到现有的集群中时&#xff0c;你需要更新所有现有服务器的配置文件&#x…...

期权懂|场内期权合约行权价格是如何设定制度的?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 场内期权合约行权价格是如何设定制度的&#xff1f; 场内期权合约的行权价格是期权合约中的一个关键要素&#xff0c;它决定了期权买方在期权到期日或之前买入&#xff08;对于…...

处理 SQL Server 中的表锁问题

在 SQL Server 中&#xff0c;表锁是一个常见的问题&#xff0c;尤其是在并发访问和数据更新频繁的环境中。表锁会导致查询性能下降&#xff0c;甚至导致死锁和系统停滞。本文将详细介绍如何识别、分析和解决 SQL Server 中的表锁问题。 什么是表锁&#xff1f; 表锁是 SQL S…...

【Mysql进阶知识】Mysql 程序的介绍、选项在命令行配置文件的使用、选项在配置文件中的语法

目录 一、程序介绍 二、mysqld--mysql服务器介绍 三、mysql - MySQL 命令行客户端 3.1 客户端介绍 3.2 mysql 客户端选项 指定选项的方式 mysql 客户端命令常用选项 在命令行中使用选项 选项(配置)文件 使用方法 选项文件位置及加载顺序 选项文件语法 使用举例&am…...

代码随想录算法训练营总结

本人是一名普普通通的计算机专业的毕业生&#xff0c;在大学学数据结构和算法就感觉非常难&#xff0c;到毕业也没刷过几道题&#xff0c;所幸后来入职的公司也没有考察算法相关的内容。到现在已经工作两年多了&#xff0c;看到过许多聊面试聊算法的文章&#xff0c;也接触到一…...

二进制/源码编译安装mysql 8.0

二进制方式&#xff1a; 1.下载或上传安装包至设备&#xff1a; 2.创建组与用户&#xff1a; [rootopenEuler-1 ~]# groupadd mysql [rootopenEuler-1 ~]# useradd -r -g mysql -s /bin/false mysql 3.解压安装包&#xff1a; tar xf mysql-8.0.36-linux-glibc2.12-x86_64.ta…...

AI 编程工具—Cursor进阶使用 阅读开源项目

AI 编程工具—Cursor进阶使用 阅读开源项目 首先我们打开一个最近很火的项目browser-use ,直接从github 上克隆即可 索引整个代码库 这里我们使用@Codebase 这个选项会索引这个代码库,然后我们再选上这个项目的README.md 文件开始提问 @Codebase @README.md 这个项目是用…...

掌握C语言内存布局:数据存储的智慧之旅

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 引言正文一、数据类型介绍1.内置类型2.自定义…...

一键化配置java环境

一键化配置java环境 下载javaPathConfig 打开&#xff0c;将java的jdk路径写进去 例如我的路径就是 C:\Program Files\Java\jdk-1.8点击确认设置即可...

【I/O编程】UNIX文件基础

IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用&#xff08;运行中的程序&#xff09;的角度。外部特指文件。 这里的文件是泛指&#xff0c;并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...

leetcode 面试经典 150 题:汇总区间

链接汇总区间题序号228题型数组解法一次遍历法难度简单熟练度✅✅✅ 题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属…...

联想Android面试题及参考答案

请介绍一下 Android 的架构,并谈谈对 Linux 的了解。 Android 架构主要分为四层,从下往上依次是 Linux 内核层、系统运行库层、应用框架层和应用层。 Linux 内核层是 Android 系统的基础。它提供了底层的硬件驱动程序,包括显示驱动、摄像头驱动、音频驱动等多种硬件设备的驱…...

redux 结合 @reduxjs/toolkit 的使用

1&#xff0c;使用步骤 使用React Toolkit 创建 counterStore&#xff08;store目录下&#xff09; --> 为React注入store&#xff08;src下面的index&#xff09; --> React组件使用store中的数据&#xff08;组件&#xff09; 2&#xff0c;例如下面有一个简单加减的…...

【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结

问题背景 项目架构为前后端分离的微服务架构&#xff1a; 前端部署在 8000 端口API 网关部署在 9000 端口后端服务包括&#xff1a; api-backend (9001端口)api-interface (9002端口) 初始状态&#xff1a; 前端已配置 HTTPS&#xff08;端口 8000&#xff09;后端服务未配…...

PHP反序列化

一、PHP面向对象的基础知识 基本概念 1、面向过程VS面向对象 以做饭为例&#xff0c;面向过程是自己从原材料到成品全部自己做&#xff0c;面向对象相当于去饭店&#xff0c;点菜&#xff0c;等待结果&#xff08;上菜&#xff09;。 2、类的定义 类是定义了一件事物的抽象…...