自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql sql技巧与优化

结合上图执行计划分析,C表是外部驱动表,索引方式为idx_pk,Type是Range,Extra有Using index condition、Using where以及Using MRR,表示进行全表扫描,通过索引初步过滤,回表B再过滤其他条件。在这个例子中,如果customers.customer_id是一个唯一键或主键,并且在orders.customer_id上有索引,那么可能会使用eq_ref访问方法。用法:当一个表有一个唯一索引,并且该索引中的所有字段都被用于连接条件时,会使用eq_ref。

2024-07-19 17:30:14 882

原创 Mysql索引优化

如果MySQL 使用某个索引进行范围查询,也就无法再使用另一个索引((或者是该索引的后续字段) 进行排序了

2024-07-12 15:26:02 187

原创 Mysql如何高效ALTER TABL

MySQL MySQL 执行大部分修改表结构操作的方法是用新结构的 创建一个,空表从旧表中查出所有数据插入,新表然后删除旧。,我们是常量在 列表的末尾增加一个新的值。如果把新增的放值在,中间例如PG-13 之后则导致会已存在经 数据的的含义被改变: 已存在经 的了值将变成PG-14 ,而已存在经 的NC-17 将成为RR,等。列的默认值实际上存在表的. frm 文件中,是可以直接修改.frm 文件的。MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题。所以,这个操作是非常快的。

2024-07-10 17:42:55 708

原创 Java protobuf序列化

Protobuf(全称:Protocol Buffers)是由 Google 开发的一种语言中立、平台无关、可扩展的序列化协议。它用于高效地结构化数据的序列化和反序列化。Protobuf 的主要特点是其紧凑、高效和可扩展的编码格式,使其在各种网络通信和数据存储场景中广泛使用。

2024-07-10 16:45:24 804

原创 Jemeter--关联接口压测

可以发现,接口http1、http2、http3是并发依次调用的,即在不同线程里是依次调用的,而且csv数据由线程共享的,不同线程不会取同一行的数据。

2024-07-04 17:50:53 912

原创 Jemeter--独立变参接口压测

可以发现数据库的sql会重复执行(可以用来压测sql),不同线程也会取到相同的值,对于压测接口数据重复没有影响的话可以直接使用。但是,对于要求值唯一性的接口比如下单、复核等是有影响的。解决方式也比较麻烦,一个是写脚本,不同的线程执行sql的数据范围不同,获取遍历器的范围不同。另一个是复制多个线程组,每个线程组自定义 sql查询和ForEach遍历器。(使用csv当作数据源就没有这种问题了)csv方式可以做到多个线程共享数据,并发执行且不会有重复的请求(取决于csv文件的数据是否有重复)

2024-07-04 16:22:39 588

原创 Jemeter--独立不变参接口压测

添加 察看结果数、汇总报告、聚合报告 以及gc Transactions Per Second(每秒事务数 tps 需要添加额外扩展jar,网上找找都有的)设置自己需要的压测对应参数,比如说 30个线程,ramp-up 5s中线程全部启动完成,持续压测30分钟(30*60)可以发现,接口性能比较差,而且很不稳定,最高30 tps 最低只有2、3tps。可以放入一些公共头,比如token之类的,线程组内所有http都可以使用。右击线程组,添加->配置元件->hhtp信息头管理器。右击压测计划,选择线程组。

2024-07-04 15:04:50 281

原创 【多维动态规划】Leetcode 221. 最大正方形【中等】

时间复杂度:O(m * n),其中 m 是矩阵的行数,n 是矩阵的列数,需要遍历矩阵中的每一个元素。空间复杂度:O(m * n),使用了一个大小为 m * n 的 dp 数组。

2024-06-28 13:29:35 444

原创 【多维动态规划】Leetcode 97. 交错字符串【中等】

dp[i-1][j] 表示 s3 的前 i + j - 1 个字符可以通过 s1 的前 i-1 个字符和 s2 的前 j 个字符交错组成。同理,如果 dp[i][j-1] 为真且 s2[j-1] == s3[i + j - 1],则 dp[i][j] = true。如果 dp[i-1][j] 为真且 s1[i-1] == s3[i + j - 1],则 dp[i][j] = true。如果 s1 的第 i 个字符 s1[i-1] 等于 s3 的第 i + j 个字符 s3[i + j - 1],

2024-06-28 11:36:22 713

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

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。:3x3 网格的正中间有一个障碍物。

2024-06-27 14:07:33 417

原创 【多维动态规划】Leetcode 120. 三角形最小路径和【中等】

相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1。为了找到从顶部到底部的最小路径和,可以使用动态规划(Dynamic Programming, DP)方法。输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。输入:triangle = [[-10]]

2024-06-27 13:46:32 277

原创 【技巧】Leetcode 190. 颠倒二进制位【简单】

在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。就是把n的低位加入到result的低位,然后result不断左移把低位,n不断右移把高位变低位,逐位反转。可以从输入的最低位开始,将其移动到输出的最高位,然后依次处理每一位,直到所有位都被处理完。n >>= 1:将 n 右移一位,准备处理下一位。

2024-06-25 11:54:03 753

原创 【数学】Leetcode 50. Pow(x, n)【中等】

快速幂算法的基本思想是利用幂的二分性质,将幂次分解成较小的幂次,减少乘法次数。实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。解释:2-2 = 1/22 = 1/4 = 0.25。输入:x = 2.00000, n = 10。输入:x = 2.00000, n = -2。输入:x = 2.10000, n = 3。输出:1024.00000。输出:9.26100。输出:0.25000。

2024-06-25 11:20:38 409

原创 【数学】Leetcode 69. x 的平方根【简单】

不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。使用牛顿迭代法通过逐步逼近来找到平方根。

2024-06-21 13:49:39 336

原创 【数学】Leetcode 172. 阶乘后的零【中等】

时间复杂度:O(log n),因为我们每次将 powerOf5 乘以 5,直到它超过 n,循环的次数是log 5(n)。对于每一个数字i(从 1 到 n),统计它包含的因子 5 的数量。在阶乘中,因子 2 的数量总是多于因子 5 的数量,因此尾随零的数量由因子 5 的数量决定。= n * (n - 1) * (n - 2) * …n/5 的结果,然后计算n/5/5即n/25 的结果,依此类推,直到n/5的k次方为 0。1、100/5=20 表示从 1 到 100 之间有 20 个数是 5 的倍数。

2024-06-21 13:25:27 634

原创 【技巧】Leetcode 201. 数字范围按位与【中等】

给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。可以通过不断右移操作,找到左端点和右端点的共同前缀(非共同前缀&的结果一定是0),记录右移的次数,最后将共同前缀左移回原来的位置。在一个范围内进行按位与操作时,如果这个范围跨越了多个2的幂次方区间,那么最终的结果中,这些幂次方位上的所有位都将变为0。5 & 6 & 7 = 100 (即 只有相同前缀的数字保留了,其他位都是0)

2024-06-19 11:20:18 656

原创 【数学】Leetcode 66. 加一【简单】

对数组进行处理,将表示的整数加一。由于数组中每个元素都只存储一个数字,需要从数组的末尾开始逐位处理进位问题。如果所有位都处理完之后仍有进位(例如 999 + 1 变成 1000),需要在数组最前面插入一个 1。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。输入:digits = [1,2,3]解释:输入数组表示数字 123。输出:[1,2,4]

2024-06-19 10:35:22 337

原创 Kubernetes Dashboard

使用上述命令生成的自签名证书 k8s.test.crt 和私钥 k8s.test.key 是自签名的证书,其安全性在开发或测试环境中通常是可以接受的,但不会被主流浏览器(如Chrome、Firefox、Edge等)视为安全,因为它们未经公共颁发机构(CA)的认证和签名。在开发或测试环境中,可以使用这样的自签名证书来进行测试和开发工作。它生成的是一个 X509 格式的证书,有效期 365 天,私钥是 RSA2048 位,摘要算法是 SHA256,签发的网站是“k8s.test”。

2024-06-18 18:47:42 1302

原创 【数学】Leetcode 9. 回文数【简单】

解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。

2024-06-18 11:32:19 303

原创 【技巧】Leetcode 137. 只出现一次的数字 II【中等】

要找到一个整数数组中唯一出现一次的元素,其余元素都出现三次,我们可以使用位操作的方法。这种方法利用了数字在计算机中是以二进制形式存储的特性,通过统计每一位上出现1的次数来解决这个问题。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。输入:nums = [0,1,0,1,0,1,99]输入:nums = [2,2,3,2]

2024-06-18 11:18:38 478

原创 Kubernetes集群持久化部署实践

Ingress 使用的是 HTTP 路由规则,用 IP 地址访问是无效的,所以在集群外的主机上必须能够识别我们的“wp.test”域名,也就是说要把域名“wp.test”解析到 Ingress Controller 所在的节点上。Mac,那就修改 /etc/hosts;【wp连接db配置】

2024-06-14 18:15:29 881

原创 【技巧】Leetcode 191. 位1的个数【简单】

输入的二进制串 10000000 中,共有 1 个设置位。:输入的二进制串 1011 中,共有 3 个设置位。

2024-06-14 10:58:35 512

原创 【技巧】Leetcode 67. 二进制求和【简单】

【代码】【技巧】Leetcode 67. 二进制求和【简单】

2024-06-14 10:12:23 361

原创 【堆】Leetcode 373. 查找和最小的 K 对数字【中等】

给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k。请找到和最小的 k 个数对 (u1,v1), (u2,v2) …定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2。在最坏情况下,堆中最多包含 k 个元素,每次操作(插入和删除)需要。空间复杂度:最小堆最多包含 k 个元素,因此空间复杂度是 O(k)。时间复杂度:初始化堆的时间复杂度是。,因为将最多 k 个元素加入堆。因此,总体时间复杂度为。

2024-06-13 13:32:11 765

原创 【二分查找】Leetcode 162. 寻找峰值【中等】

nums[-1] = nums[n] = -∞,这就代表着 只要数组中存在一个元素比相邻元素大,那么沿着它一定可以找到一个峰值。你可以假设 nums[-1] = nums[n] = -∞。解释:3 是峰值元素,你的函数应该返回其索引 2。输入:nums = [1,2,1,3,5,6,4]解释:你的函数可以返回索引 1,其峰值元素为 2;输入:nums = [1,2,3,1]或者返回索引 5, 其峰值元素为 6。是指其值严格大于左右相邻值的元素。

2024-06-12 11:44:32 614

原创 【Kadane】Leetcode 918. 环形子数组的最大和【中等】

形式上,对于子数组 nums[i], nums[i + 1], …, nums[j] , 不存在 i <= k1, k2 <= j 其中 k1 % n == k2 % n。即数组中的最小子数组和,然后用总和减去最小子数组和得到最大子数组和。解释:从子数组 [3] 和 [3,-2,2] 都可以得到最大和 3。解释:从子数组 [5,5] 得到最大和 5 + 5 = 10。输入:nums = [1,-2,3,-2]输入:nums = [3,-2,2,-3]输入:nums = [5,-3,5]

2024-06-12 11:05:57 621

原创 【回溯】Leetcode 77. 组合【中等】

你可以按 任何顺序 返回答案。

2024-06-11 11:31:37 304

原创 【字典树】Leetcode 211. 添加与搜索单词 - 数据结构设计【中等】

search:最坏情况下 O(N * 26^L),其中 N 是节点数量,L 是单词的长度。// 返回 False。// 返回 True。// 返回 True。// 返回 True。空间复杂度:O(N * L),其中 N 是单词数量,L 是平均单词长度。addWord:O(L),其中 L 是单词的长度。

2024-06-11 10:27:06 450

原创 【图论】Leetcode 133. 克隆图【中等】

给定节点将始终是图中的第一个节点(值为 1)。你必须将 给定节点的拷贝 作为对克隆图的引用返回。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。**输入:**adjList = [[2,4],[1,3],[2,4],[1,3]]节点 1 的值是 1,它有两个邻居:节点 2 和 4。节点 2 的值是 2,它有两个邻居:节点 1 和 3。节点 3 的值是 3,它有两个邻居:节点 2 和 4。节点 4 的值是 4,它有两个邻居:节点 1 和 3。图中有 4 个节点。

2024-06-06 13:53:36 539

原创 【图论】Leetcode 130. 被围绕的区域【中等】

被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

2024-06-06 10:57:42 794

原创 【二叉树】Leetcode 530. 二叉搜索树的最小绝对差【简单】

差值是一个正数,其数值等于两值之差的绝对值。

2024-06-04 11:32:31 394

原创 【二叉树】Leetcode 103. 二叉树的锯齿形层序遍历【中等】

【代码】【二叉树】Leetcode 103. 二叉树的锯齿形层序遍历【中等】

2024-06-04 11:17:16 482

原创 【二叉树】Leetcode 637. 二叉树的层平均值【简单】

第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。因此返回 [3, 14.5, 11]。

2024-06-04 10:30:28 402

原创 【二叉树】Leetcode 222. 完全二叉树的节点个数【简单】

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

2024-06-03 11:47:05 371

原创 【二叉树】Leetcode 173. 二叉搜索树迭代器【中等】

你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。// 返回 True。// 返回 True。// 返回 True。

2024-06-03 11:11:34 1190

原创 Kubernetes 系统监控Metrics Server、HorizontalPodAutoscaler、Prometheus

当它发现目标的 CPU 使用率超过了预定的 5% 后,就会以 2 的倍数开始扩容,一直到数量上限,然后持续监控一段时间,如果 CPU 使用率回落,就会再缩容到最小值。Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标(metrics)的工具,它定时从所有节点的 kubelet 里采集信息,但是对集群的整体性能影响极小,每个节点只大约会占用 1m 的 CPU 和 2MB 的内存,所以性价比非常高。”,简称是“hpa”。

2024-05-31 15:42:32 1207

原创 【二叉树】Leetcode 129. 求根节点到叶节点数字之和【中等】

从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123。因此,数字总和 = 495 + 491 + 40 = 1026。从根到叶子节点路径 4->9->5 代表数字 495。从根到叶子节点路径 4->9->1 代表数字 491。计算从根节点到叶节点生成的 所有数字之和。从根到叶子节点路径 4->0 代表数字 40。是指没有子节点的节点。

2024-05-31 13:25:39 712

原创 【二叉树】Leetcode 112. 路径总和【简单】

等于目标和的根节点到叶节点路径如上图所示。是指没有子节点的节点。

2024-05-31 11:39:32 517

原创 【二叉树】Leetcode 117. 填充每个节点的下一个右侧节点指针 II【中等】

给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),‘#’ 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。

2024-05-31 11:14:05 444

原创 Kubernetes 名称空间Namespace

它可以把集群切分成一个个彼此独立的区域,然后我们把对象放到这些区域里,就实现了类似容器技术里 namespace 的隔离效果,应用只能在自己的名字空间里分配资源和运行,不会干扰到其他名字空间里的应用。它设置了每个容器默认申请 0.2 的 CPU 和 50MB 内存,容器的资源上限是 0.5 的 CPU 和 100MB 内存,每个 Pod 的最大使用量是 0.8 的 CPU 和 200MB 内存。有了名称空间,就可以像管理容器一样,给名字空间设定配额,把整个集群的计算资源分割成不同的大小,按需分配使用。

2024-05-30 16:15:09 611

空空如也

空空如也

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

TA关注的人

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