自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 收藏
  • 关注

原创 Kubernetes集群部署实践

Ingress 使用的是 HTTP 路由规则,用 IP 地址访问是无效的,所以在集群外的主机上必须能够识别我们的“wp.test”域名,也就是说要把域名“wp.test”解析到 Ingress Controller 所在的节点上。WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80;因为 WordPress 的 Service 对象是 NodePort 类型的,我们可以在集群的每个节点上访问 WordPress 服务。比如一个节点的 IP 地址是。

2024-05-17 18:39:05 832

原创 【子串】Leetcode 6. Z 字形变换【中等】

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。3、再把COD按顺序放入res[0],res[1],res[2],如果还有字符,输入:s = “PAYPALISHIRING”, numRows = 3。输入:s = “PAYPALISHIRING”, numRows = 4。1、先把LEE按顺序放入res[0],res[1],res[2]输出:“PAHNAPLSIIGYIR”输出:“PINALSIGYAHRPI”2、再把T按顺序放入res[1]

2024-05-17 11:48:06 494

原创 【哈希】Leetcode 290. 单词规律【简单】

指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。(ps:就是字符和空格分隔出来的字符串映射)输入:pattern = “abba”, s = “dog cat cat fish”

2024-05-17 10:40:22 219

原创 Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller

同样的,Ingress 也只是一些 HTTP 路由规则的集合,相当于一份静态的描述文件,真正要把这些规则在集群里实施运行,还需要有另外一个东西,这就是 Ingress Controller,它的作用就相当于 Service 的 kube-proxy,能够读取、应用 Ingress 规则,处理、调度流量。Service 比较适合代理集群内部的服务。和Service 对比,虽然都是把请求转发到了集群内部的 Pod,但 Ingress 的路由规则不再是 IP 地址,而是 HTTP 协议里的域名、URI 等要素。

2024-05-16 15:15:21 333

原创 【字符串】Leetcode 12. 整数转罗马数字【中等】

如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。

2024-05-16 11:36:22 353

原创 【字符串】Leetcode 13. 罗马数字转整数【简单】

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。解释: M = 1000, CM = 900, XC = 90, IV = 4.空间复杂度:O(n),使用了一个HashMap来存储罗马数字字符和对应的数值,时间复杂度: O(n),其中 n 是罗马数字字符串的长度。解释: L = 50, V= 5, III = 3.

2024-05-16 10:57:47 302

原创 Kubernetes进阶对象Deployment、DaemonSet、Service

kubectl scale 是命令式操作,扩容和缩容只是临时的措施,如果应用需要长时间保持一个确定的 Pod 数量,最好还是编辑 Deployment 的 YAML 文件,改动“replicas”,再以声明式的 kubectl apply 修改对象的状态。这些业务如果用 Deployment 来部署就不太合适了,因为 Deployment 所管理的 Pod 数量是固定的,而且可能会在集群里“漂移”,但,实际的需求却是要在集群里的每个节点上都运行 Pod,也就是说 Pod 的数量与节点数量保持同步。

2024-05-15 16:06:57 912

原创 【哈希】Leetcode 242. 有效的字母异位词【简单】

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。输入: s = “anagram”, t = “nagaram”输入: s = “rat”, t = “car”

2024-05-15 11:48:02 162 1

原创 【哈希】Leetcode 205. 同构字符串【简单】

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。空间复杂度: 使用了两个哈希表来存储映射关系,空间复杂度为O(n),其中 n 是字符串的长度。时间复杂度: 遍历字符串 s 和 t,时间复杂度为 O(n),其中 n 是字符串的长度。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。给定两个字符串 s 和 t ,判断它们是否是同构的。

2024-05-15 11:39:53 354

原创 【哈希】Leetcode 383. 赎金信【简单】

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true;否则返回 false。可以使用哈希表来解决这个问题。

2024-05-14 11:52:25 163

原创 【滑动窗口】Leetcode 209. 长度最小的子数组【中等】

子数组 [4,3] 是该条件下的长度最小的子数组。使用滑动窗口技巧解决这个问题。

2024-05-14 11:37:54 815

原创 CentOs搭建Kubernetes集群

指定了 Pod 的地址段是“10.244.0.0/16”,service的地址是 10.96.0.0/12 ,apiserver 的服务地址是“自己机器的ip”,Kubernetes 的版本号是“1.23.3”minikube 还是太“迷你”了,方便的同时也隐藏了很多细节,离真正生产环境里的计算集群有一些差距,毕竟许多需求、任务只有在多节点的大集群里才能够遇到,相比起来,minikube 真的只能算是一个“玩具”。完成之后,最好记得重启一下系统,然后给虚拟机拍个快照做备份,避免后续的操作失误导致重复劳动。

2024-05-13 18:38:42 759

原创 【双指针】167. 两数之和 II - 输入有序数组【中等】

如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。

2024-05-13 11:41:32 246

原创 【子串】151. 反转字符串中的单词【中等】

输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的。顺序颠倒且 单词 之间用单个空格连接的结果字符串。

2024-05-13 10:52:51 245

原创 【双指针】392. 判断子序列【简单】

这种预处理的方法可以大大减少每次检查的时间复杂度,因为在预处理过程中可以一次性获取到每个字符在字符串 T中的所有位置,而在检查过程中只需要根据当前字符在哈希表或数组中查找下一个位置即可,无需重新遍历字符串 T。1、一种可行的方法是对字符串 T 进行预处理,构建一个哈希表或者数组,其中键或者索引表示字符, 值表示在字符串 T 中出现该字符的所有位置。2、对于每个输入的字符串 S,可以遍历其字符,并在预处理的哈希表或数组中查找下一个字符的位置。3、如果找到了,则更新当前位置,继续查找下一个字符。

2024-05-11 14:36:21 407

原创 【双指针】28. 找出字符串中第一个匹配项的下标【简单】

第一个匹配项的下标是 0 ,所以返回 0。“sad” 在下标 0 和 6 处匹配。

2024-05-11 11:11:46 278

原创 【双指针】125. 验证回文串【简单】

给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。:“amanaplanacanalpanama” 是回文串。都属于字母数字字符。

2024-05-11 10:20:45 421

原创 【子串】58. 最后一个单词的长度【简单】

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入输出:5解释:最后一个单词是“World”,长度为 5。

2024-05-11 10:12:37 195

原创 【子串】14. 最长公共前缀【简单】

输入:strs = [“flower”,“flow”,“flight”]如果不存在公共前缀,返回空字符串 “”。

2024-05-10 11:20:16 282

原创 【贪心算法】Leetcode 134. 加油站【中等】

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。

2024-05-10 11:05:44 853

原创 【数组】Leetcode 380. O(1) 时间插入、删除和获取随机元素【中等】

/ 由于 2 是集合中唯一的数字,getRandom 总是返回 2。// 向集合中插入 2。// 从集合中移除 1 ,返回 true。// 向集合中插入 1。// getRandom 应随机返回 1 或 2。// 返回 false ,表示集合中不存在 2。// 2 已在集合中,所以返回 false。

2024-05-08 15:09:05 360

原创 【数组】Leetcode 274. H 指数【中等】

h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。如果 h 有多种可能的值,h 指数 是其中最大的那个。

2024-05-08 13:33:15 381

原创 【贪心算法】Leetcode 122. 买卖股票的最佳时机 II【中等】

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天。:在第 2 天(股票价格 = 1)的时候买入,在第 3 天。总利润为 4 + 3 = 7。这是一个典型的贪心算法问题。

2024-05-06 18:19:37 289

原创 YAML如何操作Kubernetes核心对象

对于明文配置数据, COUNT、GREETING 引用的是 ConfigMap 对象,所以使用字段“configMapKeyRef”,里面的“name”是 ConfigMap 对象的名字,也就是之前我们创建的“info”,而“key”字段分别是“info”对象里的 count 和 greeting。Volume 的定义之后,就可以在容器里挂载了,这要用到“volumeMounts”字段,正如它的字面含义,可以把定义好的 Volume 挂载到容器里的某个路径下,所以需要在里面用“

2024-05-06 18:03:25 1238

原创 【数组】Leetcode 80. 删除有序数组中的重复项 II【中等】

函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

2024-04-30 14:59:22 212

原创 【数组】Leetcode 26. 删除有序数组中的重复项【简单】

函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。

2024-04-30 14:18:05 218

原创 【数组】Leetcode 27. 移除元素【简单】

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

2024-04-30 11:14:17 177

原创 【数组】Leetcode 88. 合并两个有序数组【简单】

*注意:**最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。时间复杂度:合并过程只需一次遍历,时间复杂度为O(m + n),其中m和n分别为nums1和nums2的长度。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。空间复杂度:仅使用了常数额外空间,空间复杂度为O(1)。:需要合并 [1,2,3] 和 [2,5,6]。

2024-04-30 10:52:34 385

原创 Kubernetes 声明式语言 YAML

YAML(YAML Ain’t Markup Language)是一种可读的数据序列化语言,通常用于配置文件、数据序列化和交换格式。YAML 的设计目标是易读易写,并且能够映射到动态语言中的数据结构YA加粗样式ML 是JSON的超集,支持整数、浮点数、布尔、字符串、数组和对象等数据类型。也就是说,任何合法的 JSON 文档也都是 YAML 文档使用空白与缩进表示层次(有点类似 Python),可以不使用花括号和方括号。可以使用书写注释,比起 JSON 是很大的改进。

2024-04-29 18:14:30 680 1

原创 贪心算法、回溯算法和动态规划 解决问题思路分析

贪心算法(Greedy Algorithm)、回溯算法(Backtracking Algorithm)和动态规划(Dynamic Programming)是三种常见的解决问题的算法,它们之间有着明显的区别:

2024-04-29 13:23:33 677

原创 【多维动态规划】Leetcode 72. 编辑距离【中等】

将 A[i] 替换为 B[j],使 A 的前 i-1 个字符与 B 的前 j-1 个字符相匹配,然后再将 A[i] 替换为 B[j]。如果 A[i] 和 B[j] 相同,则不需要进行替换操作,操作次数为 dp[i-1][j-1];: 将字符 B[j] 插入到 A 的末尾,使 A 的前 i 个字符与 B 的前 j-1 个字符相匹配,然后再插入 B[j]。3、如果 word1[i - 1] 等于 word2[j - 1],则 dp[i][j] = dp[i - 1][j - 1],表示当前字符不需要操作。

2024-04-29 11:50:01 434

原创 【多维动态规划】Leetcode 1143. 最长公共子序列【中等】

4、如果 text1[i - 1] 不等于 text2[j - 1],则 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]),表示当前字符不匹配,取两个字符串前一个字符的最长公共子序列长度的较大值。3、如果 text1[i - 1] 等于 text2[j - 1],则 dp[i][j] = dp[i - 1][j - 1] + 1,表示当前字符匹配,最长公共子序列长度加一。(int[][] 默认值就是0)空间复杂度:使用了一个二维数组dp,空间复杂度为O(m * n)。

2024-04-29 11:13:49 879

原创 Kubernetes 的基本架构

当集群的规模较小,工作负载较少的时候,Master 也可以承担 Node 的工作,就像我们搭建的 minikube 环境,它就只有一个节点,这个节点既是 Master 又是 Node。是 Master 节点——同时也是整个 Kubernetes 系统的唯一入口,它对外公开了一系列的 RESTful API,并且加上了验证、授权等功能,所有其他组件都只能和它直接通信,可以说是 Kubernetes 里的联络员。的数量非常多,构成了一个资源池,Kubernetes 就在这个池里分配资源,调度应用。

2024-04-29 10:07:26 1126

原创 minikube 环境搭建

它就会把与当前 Kubernetes 版本匹配的 kubectl 下载下来,存放在内部目录(例如 .minikube/cache/linux/arm64/v1.23.3),然后我们就可以使用它来对 Kubernetes“发号施令”了。kubectl 的作用有点类似“docker”,它也是一个命令行工具,是与 Kubernetes 后台服务通信,把我们的命令转发给 Kubernetes,实现容器和集群的管理功能。起码要2核4g的机器。

2024-04-28 17:04:41 354

原创 【多维动态规划】Leetcode 5. 最长回文子串【中等】

动态规划的思路是利用一个二维数组 dp 来记录字符串的子串是否为回文串。dp[i][j] 表示字符串从索引 i 到索引 j 的子串是否为回文串,时间复杂度:遍历了一次二维数组dp,时间复杂度为O(n^2),其中n为字符串s的长度。空间复杂度:使用了一个二维数组dp,空间复杂度为O(n^2)。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。如果是回文串则为 true,否则为 false。:“aba” 同样是符合题意的答案。

2024-04-28 13:44:58 353 1

原创 【多维动态规划】Leetcode 64. 最小路径和【中等】

时间复杂度:遍历了一次二维数组dp,时间复杂度为O(m*n),其中m为网格的行数,n为网格的列数。空间复杂度:使用了一个二维数组dp,空间复杂度为O(m*n)。:因为路径 1→3→1→1→1 的总和最小。说明:每次只能向下或者向右移动一步。

2024-04-28 11:40:52 239

原创 【多维动态规划】Leetcode 62. 不同路径【中等】

时间复杂度:遍历了一次二维数组dp,时间复杂度为O(m*n),其中m为网格的行数,n为网格的列数。空间复杂度:使用了一个二维数组dp,空间复杂度为O(m*n)。问总共有多少条不同的路径?

2024-04-28 11:17:38 401

原创 【动态规划】Leetcode 32. 最长有效括号【困难】

时间复杂度:遍历了一次字符串s,时间复杂度为O(n),其中n为字符串s的长度。空间复杂度:使用了一个一维数组dp,空间复杂度为O(n)。:最长有效括号子串是 “()()”

2024-04-26 14:11:29 179 1

原创 【动态规划】Leetcode 416. 分割等和子集【中等】

时间复杂度:遍历了一次数组nums,并使用了一个二维数组dp,时间复杂度为O(n * sum),其中n为数组nums的长度,sum为数组nums的总和。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。空间复杂度:使用了一个二维数组dp,空间复杂度为O(n * sum)。:数组可以分割成 [1, 5, 5] 和 [11]。这是一个典型的动态规划问题,可以使用动态规划来解决。

2024-04-26 11:47:24 949

原创 【动态规划】Leetcode 152. 乘积最大子数组【中等】

我们定义两个数组 maxDp 和 minDp, 其中 maxDp[i] 表示以 nums[i] 结尾的乘积最大的连续子数组的乘积,而 minDp[i] 表示以 nums[i] 结尾的乘积最小的连续子数组的乘积。这里为什么是**nums[i], maxDp[i-1] nums[i]**两个比较?时间复杂度:遍历了一次数组nums,时间复杂度为O(n),其中n为数组nums的长度。当前的 nums[i] 自身就构成一个连续子数组,此时乘积最大;当前的 nums[i] 与之前的连续子数组相乘后得到的乘积更大。

2024-04-26 11:04:56 387

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除