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

Hot100方法及易错点总结2

本文旨在记录做hot100时遇到的问题及易错点

  • 五、
    • 234.回文链表
    • 141.环形链表
  • 六、
    • 142. 环形链表II
    • 21.合并两个有序链表
    • 2.两数相加
    • 19.删除链表的倒数第n个节点
  • 七、
    • 24.两两交换链表中的节点
    • 25.K个一组翻转链表(坑点很多,必须多做几遍)
    • 138.随机链表的复制
    • 148.排序链表
  • New
    • 23.合并k个升序链表(看懂未做)
    • 146.LRU缓存(未做)
    • 二叉树的中序遍历
    • 104.二叉树的最大深度
    • 226.翻转二叉树
    • 101.对称二叉树
    • 543. 二叉树的直径
    • 102.二叉树的层序遍历(看懂未做)
    • 108.将有序数组转换为二叉搜索树(看懂未做)
    • 98.验证二叉搜索树(看懂未做)
    • 230.二叉搜索树中第k小的元素(有思路未做)
    • 199.二叉树的右视图(看懂未做)
    • 114.二叉树展开为链表(看懂未做)
    • 105.从前序与中序遍历序列构造二叉树(看懂未做)

五、

234.回文链表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public boolean isPalindrome(ListNode head) {if(head==null)return false;if(head.next==null)return true;int count=0;ListNode fast=head;ListNode slow=head;while(fast!=null&&fast.next!=null){fast=fast.next.next;slow=slow.next;//slow就是中间开始的第一个元素,不论是奇数还是偶数,他都是第一个元素}ListNode p=head;while(p.next!=slow){p=p.next;}//循环结束后p.next=middle;p.next=null;//前后断开才行//后半部分用尾插法ListNode reverse=new ListNode(0);ListNode q=slow;while(slow!=null){q=slow;slow=slow.next;q.next=reverse.next;reverse.next=q;}//逆序后,第二个链表的元素是reverse.nextListNode head2=reverse.next;while(head!=null&&head2!=null){if(head.val!=head2.val){return false;}head=head.next;head2=head2.next;}return true;}
}
1.易错点:前半部分和后半部分需要断开
2.还是翻转链表的问题
3.
while(slow!=null){q=slow;slow=slow.next;q.next=reverse.next;reverse.next=q;}
//循环变量是slow,不能写成q啊,这个笔误真讨厌
4. while(fast!=null&&fast.next!=null){fast=fast.next.next;slow=slow.next;//slow就是中间开始的第一个元素,不论是奇数还是偶数,他都是第一个元素}

141.环形链表

这次竟然没费什么周折直接做出来了,果然第二遍做题就是不一样

1.A和B一起跑步,AB快,如果A能和B相遇,那一定是AB多跑了n圈
/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {//当fast和slow第一次相等的时候,fast比slow多跑了一圈,ListNode fast=head;ListNode slow=head;while(fast!=null&&fast.next!=null){fast=fast.next.next;slow=slow.next;if(fast==slow){return true;}}return false;}
}

六、

142. 环形链表II

思路:
1.设快指针走的步数是f,慢指针走的步数是s,f=2s
当快慢指针第一次相遇的时候,(f-a)=(s-a)+nb ,快指针在环上套圈了b
综合求得到s=nb
2.到达环入口的节点(示例中图1)走的长度为a+nb, 第一次相遇时b走了nb,所以b再走a步就到入口,同时另一个指针每次走一步,走a步也到入口。

在这里插入图片描述

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {ListNode fast=head;ListNode slow=head;int flag=0;while(fast!=null&&fast.next!=null){fast=fast.next.next;slow=slow.next;if(fast==slow){//此刻slow走了nbfast=head;while(fast!=slow){fast=fast.next;slow=slow.next;}return slow;}}return null;   }
}

21.合并两个有序链表

一道常规题,p和q写的时候要注意,不能把p写成q,这样会陷入死循环,眼花找不出错误。
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode p=list1;ListNode q=list2;ListNode L=new ListNode(0);ListNode l=L;while(p!=null&&q!=null){if(p.val<q.val){l.next=p;l=l.next;p=p.next;}else{l.next=q;l=l.next;q=q.next;}}while(p!=null){l.next=p;l=l.next;p=p.next;}while(q!=null){l.next=q;l=l.next;q=q.next;   }return L.next;}
}

2.两数相加

1.不能先将两数用int保存下来,然后再计算,这样不仅效率不高,而且如果数字过大,超过了int的取值范围,会有数值溢出的风险
2.看清楚题目,数字的最高位在链表的末尾的!!,可以用进位解决
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {int carry=0;ListNode L=new ListNode(0);//尾插法的头节点ListNode l=L;while(l1!=null&&l2!=null){ListNode p=l1;ListNode q=l2;l1=l1.next;l2=l2.next;int tmp=(p.val+q.val+carry)%10;carry=(p.val+q.val+carry)/10;ListNode tmpnode=new ListNode(tmp);l.next=tmpnode;l=l.next;}while(l1!=null){ListNode p=l1;l1=l1.next;int tmp=(p.val+carry)%10;carry=(p.val+carry)/10;ListNode tmpnode=new ListNode(tmp);l.next=tmpnode;l=l.next;}while(l1!=null){ListNode p=l1;l1=l1.next;int tmp=(p.val+carry)%10;carry=(p.val+carry)/10;ListNode tmpnode=new ListNode(tmp);l.next=tmpnode;l=l.next;}while(l2!=null){ListNode q=l2;l2=l2.next;int tmp=(q.val+carry)%10;carry=(q.val+carry)/10;ListNode tmpnode=new ListNode(tmp);l.next=tmpnode;l=l.next;}if(carry>0){ListNode tmpnode=new ListNode(carry);l.next=tmpnode;l=l.next;}return L.next;}
}
尾插法:
1.首先要保证便利l1,l2时,保存了第一个节点的信息之后要和后面的节点断开,不然会形成连锁反应
2.用l遍历新建立的链表,l,每次指向链表的末尾,L永远指向头节点

19.删除链表的倒数第n个节点

删除链表的节点的时候,第一个节点的删除和其他节点不一样,为了保证大家都一样,需要添加一个虚拟头节点,这样操作起来就一样了。
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode l=head;int count=0;//总的元素的个数while(l!=null){count++;l=l.next;}ListNode dummy=new ListNode(0);dummy.next=head;count++;//加上虚拟头节点,链表中节点的个数是count个。//原链表中倒数第n个节点,在原链表中排序是count+1-n;新链表中的排序是count-n;//原链表中倒数第n个节点的前一个节点,在新链表中是count-n-1l=dummy;int number=0;while(number<count-n-1){l=l.next;number++;}l.next=l.next.next;return dummy.next;}
}

七、

24.两两交换链表中的节点

1.每次需要将新链表末尾元素.next指向l2的第一个元素,这样才能把链表串起来.
2.还是得画图来做,用手画图一下子就清晰了
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if(head==null||head.next==null)return head;ListNode dummy=new ListNode(0);ListNode d=dummy;ListNode p=head;//用p来遍历链表ListNode q=head.next;while(p!=null&&p.next!=null ){q=p.next;d.next=q;p.next=q.next;q.next=p;d=p;p=p.next;}return dummy.next;}
}

25.K个一组翻转链表(坑点很多,必须多做几遍)

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseKGroup(ListNode head, int k) {// 边界情况处理if (head == null || head.next == null) return head;// 哑节点用于简化操作ListNode dummy = new ListNode(0);ListNode pre=dummy;dummy.next = head;while(head!=null){ListNode first_end=findEnd(head,k);if(first_end==null)break;ListNode seconde_head=first_end.next;ListNode first_rev_head=reverseNode(head,first_end);//与前面连接pre.next= first_rev_head;//!!!!与后面连接,不然没办法遍历了head.next=seconde_head;//更新pre 和head进入下一个区间pre=head;//head是当前节点的尾巴head=seconde_head;}return dummy.next;}// 找到 k 组的结尾节点(第 k 个节点),如果不足 k 个返回 nullpublic ListNode findEnd(ListNode head, int k) {ListNode dummy=new ListNode(0);dummy.next=head;ListNode p = dummy;int count=0;while(p!=null&&count<k){p=p.next;count++;}return p; // 返回第 k 个节点}// 反转从 head 到 end 之间的链表,并返回新的头部public ListNode reverseNode(ListNode head, ListNode end) {ListNode dummy=new ListNode(0);dummy.next=head;ListNode p=head;ListNode nextHead=end.next;//必须用nextHead来标记,end在移动的过程中会变的while(p!=nextHead){ListNode p_next=p.next;p.next=dummy.next;dummy.next=p;p= p_next;}return dummy.next;}}

138.随机链表的复制

/*
// Definition for a Node.
class Node {int val;Node next;Node random;public Node(int val) {this.val = val;this.next = null;this.random = null;}
}
*/class Solution {public Node copyRandomList(Node head) {Node p=head;//使用p来遍历原来链表的head;while(p!=null){Node q=new Node(p.val);Node p_next=p.next;p.next=q;q.next= p_next;p=p_next;}//每个节点复制了一个,插入了原结点的后面//复制randomwhile (p != null) {if (p.random != null) {p.next.random = p.random.next;}p = p.next.next;}// 第三步:拆分链表,恢复原链表并构造复制链表p = head;Node newHead = head.next;Node q = newHead;while (p != null) {p.next = p.next.next;if (q.next != null) {q.next = q.next.next;q = q.next;}p = p.next;}return newHead;}
}

148.排序链表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode sortList(ListNode head) {if (head == null || head.next == null) return head;// 找到链表的结尾ListNode tail = head;while (tail.next != null) {tail = tail.next;}// 归并排序return Mergesort(head, tail);}// 找链表的中间前驱节点(返回 slow 前一个节点)public ListNode findMiddlePre(ListNode head) {if (head == null || head.next == null) return null;ListNode slow = head, fast = head, prev = null;while (fast != null && fast.next != null) {prev = slow;slow = slow.next;fast = fast.next.next;}return prev; // 返回 slow 之前的节点}public ListNode Mergesort(ListNode head, ListNode tail) {if (head == tail) {return head;}ListNode middlePre = findMiddlePre(head);ListNode middle = middlePre.next;middlePre.next = null; // 断开链表// 递归排序ListNode left = Mergesort(head, middlePre);ListNode right = Mergesort(middle, tail);// 归并return merge(left, right);}// 归并两个有序链表public ListNode merge(ListNode left, ListNode right) {ListNode dummy = new ListNode(0);ListNode p = dummy;while (left != null && right != null) {if (left.val < right.val) {p.next = left;left = left.next;} else {p.next = right;right = right.next;}p = p.next;}// 连接剩余部分if (left != null) p.next = left;if (right != null) p.next = right;return dummy.next;}
}
1.易错点:在合并的时候才创建虚拟头节点进行合并,不能在递归传入,因为会改变值ListNode left=Mergesort(head,middle_pre,p);
2.链表合并的时候需要连接剩余部分,这点一定不能忘记

New

23.合并k个升序链表(看懂未做)

146.LRU缓存(未做)

二叉树的中序遍历

1.递归方法最好写成void类型,不容易出错
2.首先拿一个点的树判断逻辑,再拿三个节点的树来判断逻辑
class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res =new ArrayList<>();inorder(root,res);return res;}public void inorder(TreeNode root,List<Integer> res){if(root==null)return ;inorder(root.left,res);res.add(root.val);inorder(root.right,res);}
}

104.二叉树的最大深度

按照上面的思路来的,1.空节点2.一个节点2.三个节点

class Solution {public int maxDepth(TreeNode root) {if(root==null)return 0;int left =maxDepth(root.left)+1;int right =maxDepth(root.right)+1;return Math.max(left,right);}}

226.翻转二叉树

关于树的题越做越有感觉了,竟然又一次过了,哈哈哈哈哈
1.先考虑空节点的情况,空则怎么办
2.如果是一个节点呢,三个节点呢,处理完简单三个节点呢
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {invertT(root);return root;}public void invertT(TreeNode root) {if(root==null) return ;TreeNode temp=root.left;root.left=root.right;root.right=temp;invertTree(root.left);invertTree(root.right);}
}

101.对称二叉树

1.先找到最小的子问题 也就是树只有两个节点
2.找到所有能直接返回的条件,否则才会递归
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {if(root==null)return false;return isTwoSymmetric(root.left,root.right);}public boolean isTwoSymmetric(TreeNode One,TreeNode Two) {if(One==null&&Two==null)return true;if(One==null||Two==null)return false;//One和Two均非空if(One.val!=Two.val)return false;return (isTwoSymmetric(One.left,Two.right)&&isTwoSymmetric(One.right,Two.left));}}   

543. 二叉树的直径

易错点:
1.直径是左节点高度+右节点高度
2.高度是Math.max(left,right)+1;
3.height(TreeNode root,int max)
这样的max是局部变量,不是全局变量!!!!!
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private int max;public int diameterOfBinaryTree(TreeNode root) {height(root);return max;}public int height(TreeNode root){if(root==null)return 0;int left =height(root.left);int right =height(root.right);int len=Math.max(left,right)+1;max=Math.max(max,left+right);return len;    }
}

102.二叉树的层序遍历(看懂未做)

108.将有序数组转换为二叉搜索树(看懂未做)

98.验证二叉搜索树(看懂未做)

230.二叉搜索树中第k小的元素(有思路未做)

二叉搜索树中序遍历会得到有序数组,这是一个很重要的特性

199.二叉树的右视图(看懂未做)

114.二叉树展开为链表(看懂未做)

105.从前序与中序遍历序列构造二叉树(看懂未做)

相关文章:

Hot100方法及易错点总结2

本文旨在记录做hot100时遇到的问题及易错点 五、234.回文链表141.环形链表 六、142. 环形链表II21.合并两个有序链表2.两数相加19.删除链表的倒数第n个节点 七、24.两两交换链表中的节点25.K个一组翻转链表(坑点很多&#xff0c;必须多做几遍)138.随机链表的复制148.排序链表 N…...

网络:手写HTTP

目录 一、HTTP是应用层协议 二、HTTP服务器 三、HTTP服务 认识请求中的uri HTTP支持默认首页 响应 功能完善 套接字复用 一、HTTP是应用层协议 HTTP下层是TCP协议&#xff0c;站在TCP的角度看&#xff0c;要提供的服务是HTTP服务。 这是在原来实现网络版计算器时&am…...

C++[类和对象][3]

C[类和对象][3] 赋值运算符的重载(operator) 1.是一个默认成员函数,重载必须为成员函数,用于两个已经存在的对象,(d1d3赋值重载)(Stack d4d1拷贝构造(因为d4未存在,初始化)) 2.建议写成引用返回提高效率,可以连续赋值重载 3.没有写的时候会自动生成,完成值拷贝/浅拷贝对(对于…...

【计算机视觉】CV实战项目 - 基于YOLOv5的人脸检测与关键点定位系统深度解析

基于YOLOv5的人脸检测与关键点定位系统深度解析 1. 技术背景与项目意义传统方案的局限性YOLOv5多任务方案的优势 2. 核心算法原理网络架构改进关键点回归分支损失函数设计 3. 实战指南&#xff1a;从环境搭建到模型应用环境配置数据准备数据格式要求数据目录结构 模型训练配置文…...

【python】如何将python程序封装为cpython的库

python程序在发布时&#xff0c;往往会打包为cpython的库&#xff0c;并且根据应用服务器的不同架构&#xff08;x86/aarch64&#xff09;&#xff0c;以及python的不同版本&#xff0c;封装的输出类型也是非常多。本文介绍不同架构指定python下的代码打包方式&#xff1a; 首…...

【人工智能】DeepSeek 的开源生态:释放 AI 潜能的社区协同与技术突破

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 DeepSeek 作为中国 AI 领域的先锋,以其高效的混合专家模型(MoE)和彻底的开源策略,在全球 AI 社区掀起波澜。本文深入剖析 DeepSeek 的开…...

【差分隐私】假设检验的视角(高斯差分隐私)

在差分隐私中&#xff0c;假设检验的框架被用来量化攻击者通过机制输出区分两个相邻数据集 S S S 和 S ′ S S′ 的难度。这种区分的根本困难直接反映了隐私保护强度。以下是对问题的详细解释&#xff1a; 1. 假设检验的基本设定 原假设 H 0 H_0 H0​&#xff1a;数据集为 …...

计算机组成原理 课后练习

例一&#xff1a; 例二&#xff1a; 1. 原码一位乘 基本原理 原码是一种直接表示数值符号和大小的方式&#xff1a;最高位为符号位&#xff08;0表示正&#xff0c;1表示负&#xff09;&#xff0c;其余位表示数值的绝对值。原码一位乘的核心思想是逐位相乘&#xff0c;并通…...

pytorch手动调整学习率

文章目录 1. 为什么引入学习率衰减&#xff1f;2. 针对不同层设置不一样的学习率3. 手动更新学习率4. 使用学习率调度器5. 推荐做法 在前面的文章中&#xff0c;介绍了各种学习率。在此&#xff0c;将进行拓展&#xff0c;学习如何手动更新学习率&#xff08;即不使用pytorch自…...

SVN仓库突然没有权限访问

如果svn仓库突然出现无法访问的情况&#xff0c;提示没有权限&#xff0c;所有账号都是如此&#xff0c;新创建的账号也不行。 并且会突然提示要输入账号密码。 出现这个情况时&#xff0c;大概率库里面的文件有http或者https的字样&#xff0c;因为单独给该文件添加权限导致…...

【Qt】文件

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; Qt 文件概述 二&#xff1a;&#x1f525; 输入输出设备类 三&#xff1a;&#x1f525; 文件读写类 四&#xff1a;&#x1f525; 文件和目录信息类 五&…...

7.DJI-PSDK:psdk负载应用固件升级(基于RTOS)

DJI-PSDK:psdk负载应用固件升级(基于RTOS): 在单片机应用程序开发阶段,我们可以借助keil5和J-LINK来直接下载应用程序进行开发和调试, 但在产品交付之后,我们对应用程序做了改动和升级,是断然不可能采用这种方式的,我们应该将新版本的程序固件打包发给客户, 能够方便用…...

ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变

各位数组操控师们好&#xff01;今天给大家带来的是Apache Commons Lang3中的ArrayUtils工具类。这个工具就像数组界的"孙悟空"&#xff0c;能让你的数组随心所欲地变大、变小、变长、变短&#xff0c;再也不用对着原生数组的"死板"叹气了&#xff01; 一…...

架构-系统可靠性分析与设计

一、可靠性相关基本概念 1. 可靠性与可用性 可靠性&#xff1a;软件系统在遇到错误、意外操作或系统故障时&#xff0c;仍能维持自身功能特性的能力。 举例&#xff1a;手机银行APP在用户误操作&#xff08;如快速点击多次转账&#xff09;时&#xff0c;仍能正确处理交易并避…...

【AI】[特殊字符]生产规模的向量数据库 Pinecone 使用指南

一、Pinecone 的介绍 Pinecone是一个完全托管的向量数据库服务&#xff0c;专为大规模机器学习应用设计。它允许开发者轻松存储、搜索和管理高维向量数据&#xff0c;为推荐系统、语义搜索、异常检测等应用提供强大的基础设施支持。 1.1 Pinecone的核心特性 1. 高性能向量搜…...

大模型备案对模型训练语料的要求

昨天接到一位客户的咨询&#xff0c;说他们的模型还在开发阶段&#xff0c;想提前了解一下大模型备案政策中对于模型训练语料有什么具体要求&#xff0c;提前规避一下。客户确实有前瞻性&#xff0c;考虑得比较充分。训练语料在研发阶段至关重要&#xff0c;直接影响模型的性能…...

dstream

DStream转换DStream 上的操作与 RDD 的类似&#xff0c;分为 Transformations&#xff08;转换&#xff09;和 Output Operations&#xff08;输出&#xff09;两种&#xff0c;此外转换操作中还有一些比较特殊的原语&#xff0c;如&#xff1a;updateStateByKey()、transform(…...

CentOS系统中MySQL安装步骤分享

在 CentOS 系统上安装 MySQL&#xff0c;需要依次进行环境检查、软件源配置、安装 MySQL、启动服务等操作。我将按照规范流程&#xff0c;为你详细分享完整且具体的安装步骤。 在 CentOS 系统中安装 MySQL 数据库&#xff0c;能够为各类应用提供高效稳定的数据存储和管理服务。…...

HFSS5(李明洋)——设置激励(波端口激励)

Magnetic是适用于铁磁氧导体的&#xff0c;只有前三种激励类型可以用于计算S参数 1波端口激励 也可以设置在模型内部&#xff0c;如果是设置在模型内部必须加一段理想导体&#xff0c;用于指定端口方向 1.1——模式 number 输入N&#xff1a;计算1-N的模式都计算 1.2——模式…...

ubiquant比赛系列——用docker准备ubipoker开发环境

比赛过程&#xff1a; 环境准备&#xff1a; #在云服务器上拉python官方的docker镜像并下载到本地 https://hub.docker.com/_/python/ sudo docker pull python:3.11.12-slim-bullseye sudo docker images sudo docker save -o 3.11.12-slim-bullseye.tar python:3.11.12-slim…...

运维打铁:Mysql 分区监控以及管理

文章目录 一、简介二、设计逻辑1、配置文件检查2、创建逻辑3、 删除逻辑4、重建表分区逻辑5、recognize maxvalue分区表逻辑6、创建多个未来分区逻辑7、定时检测分区是否创建成功&#xff0c;否则发送告警邮件。 三、解决的问题四、配置例子与介绍 一、简介 操作数据库&#xf…...

Rust实现高性能目录扫描工具ll的技术解析

Rust实现高性能目录扫描工具ll的技术解析 一、项目概述 本项目使用Rust构建了一个类ls命令行工具&#xff0c;具备以下核心特性&#xff1a; 多格式文件信息展示并行目录扫描加速人类可读文件大小运行时性能统计交互式进度提示 二、技术架构 1. 关键技术栈 clap&#xff…...

深入理解C语言变量:从基础到实践

在编程世界中&#xff0c;变量是最基础也是最重要的概念之一。作为C语言的核心组成部分&#xff0c;变量承载着程序运行时数据的存储和传递功能。理解变量的工作原理和正确使用方法&#xff0c;是成为一名合格C程序员的必经之路。本文将全面介绍C语言变量的各个方面&#xff0c…...

深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南

Server Message Block&#xff08;SMB&#xff09;协议是广泛应用于文件共享、打印机共享和进程间通信的网络协议&#xff0c;尤其在 Windows 环境中常见。渗透测试和网络安全审计中&#xff0c;SMB 是一个重要的攻击面&#xff0c;相关工具如 smbmap、smbclient 和 netexec 提…...

RK3562/3588 系列之0—NPU基础概念

RK3562/3588 系列之0—NPU基础概念 1.处理器分类2.算力衡量指标TOPS参考文献 1.处理器分类 中央处理器(CPU)&#xff1b; 图形处理器 (GPU)&#xff1b; 神经网络处理器(NPU)。 每个处理器擅长不同的任务:CPU擅长顺序控制和即时性&#xff1b;GPU适合并行数据流处理,NPU擅长…...

springboot如何管理多数据源?

静态多数据源管理 配置多个数据源 :创建多个数据源的配置类,通常使用 @ConfigurationProperties 注解来绑定配置文件中的数据源属性,并通过 @Bean 注解定义多个 DataSource Bean 。例如: 配置类: @Configuration public class DataSourceConfig {@Bean(name = "prima…...

为什么vue的key值,不用index?

在 Vue 中&#xff0c;key 的作用是帮助框架高效地识别和复用 DOM 节点或组件实例。使用数组索引 (index) 作为 key 值可能会导致以下问题&#xff0c;因此通常不建议这样做&#xff1a; 1. 列表数据变化时&#xff0c;可能导致错误的 DOM 复用 问题&#xff1a;当列表的顺序…...

canvas画板!随意画!!

希望你天天开心 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绘画板</title…...

Float32、Float16、BFloat16

我们先介绍 Float32、Float16、BFloat16 的 浮点数表示方法 然后根据浮点数表示&#xff0c;来分析总结他们是怎么控制 精度和 数值范围 的 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持 1、浮点数的表示方法 Float32 &#xff1a; 单精度浮点数…...

C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)报错:参数无效,如何将图像分块化处理?

C#处理非常大的图像&#xff08;如 32043x32043 像素&#xff09;时&#xff0c;确实需要采取分块化处理的方法来避免内存不足的问题。分块化处理可以将大图像分割成多个较小的块&#xff0c;分别进行处理和保存&#xff0c;最后再合并这些块以形成完整的图像。以下是一个详细的…...