【C++笔记】C++常见二叉树OJ和拓扑排序
【C++笔记】C++常见二叉树OJ和拓扑排序
🔥个人主页:大白的编程日记
🔥专栏:C++笔记
文章目录
- 【C++笔记】C++常见二叉树OJ和拓扑排序
- 前言
- 一.二叉树OJ
- 1.1 根据二叉树创建字符串
- 1.2 二叉树的层序遍历
- 1.3 二叉树的最近公共祖先
- 1.4 将二叉搜索树转化为排序的双向链表
- 1.5 从前序与中序遍历序列构造二叉树
- 1.6 从中序与后序遍历序列构造二叉树
- 1.7 根据前序和后续遍历构建二叉树
- 1.8 二叉树前序遍历的非递归
- 1.9 二叉树中序遍历的非递归
- 1.10 二叉树的后序遍历
- 二. 拓扑排序
- 2.1 动画演示
- 2.2 课程表
- 2.3 课程表2
- 2.4 火星词典
- 后言
前言
哈喽,各位小伙伴大家好!上期我们讲了C++的类型转换。今天我们来讲一下C++常见二叉树OJ和拓扑排序。话不多说,我们进入正题!向大厂冲锋
一.二叉树OJ
1.1 根据二叉树创建字符串
- 题目:根据二叉树创建字符串
- 思路分析
- 代码实现
class Solution {
public:string tree2str(TreeNode* root) {string ret;if(root==nullptr){return "";}ret+=to_string(root->val);//左不为空进入//左为空 右不为空进入不省略空号if(root->right||root->left){ret+='(';ret+=tree2str(root->left);ret+=')';}//右为空则不进入省略if(root->right){ret+='(';ret+=tree2str(root->right);ret+=')';}return ret;}
};
1.2 二叉树的层序遍历
-
题目:二叉树的层序遍历
-
思路分析
- 代码实现
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ret;if(root==nullptr){return {};}queue<TreeNode*> q;q.push(root);int size=1;while(q.size()){vector<int> v;while(size--){TreeNode* t=q.front();v.push_back(t->val);q.pop();if(t->left){q.push(t->left);}if(t->right){q.push(t->right);}}ret.push_back(v);size=q.size();}return ret;}
};
1.3 二叉树的最近公共祖先
-
题目:二叉树的最近公共祖先
-
思路分析:
- 代码实现
方法一:
class Solution {
public:bool find(TreeNode* root,TreeNode* x){if(root==nullptr){return false;}return root==x||find(root->left,x)||find(root->right,x);}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==nullptr){return nullptr;}if(root==p||root==q){return root;}bool pinleft=find(root->left,p);bool pinright=!pinleft;bool qinleft=find(root->left,q);bool qinright=!qinleft;if((pinleft&&qinright)||(pinright&&qinleft)){return root;}else if(pinleft&&qinleft){return lowestCommonAncestor(root->left,p,q);}else{return lowestCommonAncestor(root->right,p,q);}}
};
方法二:
class Solution {
public:bool GetPath(TreeNode* root, TreeNode* x, stack<TreeNode*>& st){if(root==nullptr){return false;}st.push(root);if(root==x){return true;}if(GetPath(root->left,x,st)){return true;}if(GetPath(root->right,x,st)){return true;}st.pop();return false;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {stack<TreeNode*> stl,str;GetPath(root,p,stl);GetPath(root,q,str);while(stl.size()!=str.size()){if(stl.size()>str.size()){stl.pop();}else{str.pop();}}while(stl.top()!=str.top()){stl.pop();str.pop();}return str.top();}
};
1.4 将二叉搜索树转化为排序的双向链表
- 题目:将二叉搜索树转化为排序的双向链表
- 思路分析
- 代码实现
方法一
class Solution {
public:Node* treeToDoublyList(Node* root) {if(root==nullptr){return root;}vector<Node*> v;auto dfs=[&](this auto&& dfs,Node* root)->void{if(root==nullptr){return ;}dfs(root->left);v.push_back(root);dfs(root->right);};dfs(root);for(int i=0;i<v.size()-1;i++){v[i]->right=v[i+1];v[i+1]->left=v[i];}v[0]->left=v[v.size()-1];v[v.size()-1]->right=v[0];return v[0];}
};
方法二
class Solution {
public:void InOrderCovert(Node*cur,Node*& prev)//中序遍历同时修改指针prev为中序前一个cur当前中序{if(cur==nullptr){return;}InOrderCovert(cur->left,prev);cur->left=prev;if(prev){prev->right=cur;}//修改前后指针prev=cur;//更新prevInOrderCovert(cur->right,prev);}Node* treeToDoublyList(Node* root) {if(root==nullptr){return root;}Node* prev=nullptr;InOrderCovert(root,prev);Node* head=root;while(head->left){head=head->left;}head->left=prev;prev->right=head;//首尾相连return head;}
};
- 下面的这三道题都是我看灵神的题解 发现讲的特别好 思路也很清晰 通俗易通。 直接上按照灵神的思路图了。
1.5 从前序与中序遍历序列构造二叉树
-
题目:从前序与中序遍历序列构造二叉树
-
思路分析
-
代码实现
class Solution {
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if (preorder.empty()) { // 空节点return nullptr;}int rootValue = preorder[0];int left_size = 0;// 使用for循环查找根节点在中序遍历中的位置for (int i = 0; i < inorder.size(); ++i) {if (inorder[i] == rootValue) {left_size = i; // 找到根节点的位置,即左子树的大小break;}}vector<int> pre1(preorder.begin() + 1, preorder.begin() + 1 + left_size);vector<int> pre2(preorder.begin() + 1 + left_size, preorder.end());vector<int> in1(inorder.begin(), inorder.begin() + left_size);vector<int> in2(inorder.begin() + left_size + 1, inorder.end());TreeNode* left = buildTree(pre1, in1);TreeNode* right = buildTree(pre2, in2);return new TreeNode(preorder[0], left, right);}
};
1.6 从中序与后序遍历序列构造二叉树
- 题目:从中序与后序遍历序列构造二叉树
- 思路分析
- 代码实现
class Solution {
public:TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {int n = inorder.size();unordered_map<int, int> index;for (int i = 0; i < n; i++) {index[inorder[i]] = i;}function<TreeNode*(int, int, int, int)> dfs = [&](int in_l, int in_r, int post_l, int post_r) -> TreeNode* {if (post_l > post_r) { // 空节点,注意左闭右闭区间的判断条件return nullptr;}int rootValue = postorder[post_r];int rootIndex = index[rootValue];int left_size = rootIndex - in_l; // 左子树的大小TreeNode* root = new TreeNode(rootValue);root->left = dfs(in_l, rootIndex - 1, post_l, post_l + left_size - 1);root->right = dfs(rootIndex + 1, in_r, post_l + left_size, post_r - 1);return root;};return dfs(0, n - 1, 0, n - 1); // 左闭右闭区间}
};
1.7 根据前序和后续遍历构建二叉树
-
题目:根据前序和后续遍历构建二叉树
-
思路分析
-
首先说明,如果只知道前序遍历和后序遍历,这棵二叉树不一定是唯一的,如下图。
-
注:如果二叉树的每个非叶节点都有两个儿子,知道前序和后序就能唯一确定这棵二叉树。
-
题目说,如果存在多个答案,我们可以返回其中任何一个。那么不妨规定:无论什么情况,在前序遍历中,preorder[1] 都是左子树的根节点值。
- 代码实现
class Solution {
public:TreeNode* constructFromPrePost(vector<int>& preorder, vector<int>& postorder) {int n = preorder.size();vector<int> index(n + 1); // 用于快速查找 postorder 中元素的索引for (int i = 0; i < n; i++) {index[postorder[i]] = i;}// 使用左闭右闭区间 [pre_l, pre_r] 和 [post_l, post_r]auto dfs = [&](this auto&& dfs, int pre_l, int pre_r, int post_l, int post_r) -> TreeNode* {if (pre_l > pre_r) { // 空节点return nullptr;}if (pre_l == pre_r) { // 叶子节点return new TreeNode(preorder[pre_l]);}int left_size = index[preorder[pre_l + 1]] - post_l + 1; // 左子树的大小TreeNode* left = dfs(pre_l + 1, pre_l + left_size, post_l, post_l + left_size - 1);TreeNode* right = dfs(pre_l + left_size + 1, pre_r, post_l + left_size, post_r - 1);return new TreeNode(preorder[pre_l], left, right);};return dfs(0, n - 1, 0, n - 1); // 左闭右闭区间}
};
1.8 二叉树前序遍历的非递归
-
题目:二叉树的前序遍历
-
思路分析
-
代码实现
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> v;TreeNode* cur=root;//把遍历分为遍历左子树和右子树while(cur||!st.empty())//当前右子树不为空或还有右子树待访问{while(cur)//访问根 左子树{v.push_back(cur->val);//访问根st.push(cur);cur=cur->left;}TreeNode* tmp=st.top();st.pop();//弹出避免二次递归并且更新上上级递归cur=tmp->right;//转为子问题访问右子树}return v;}
};
1.9 二叉树中序遍历的非递归
-
题目:二叉树的中序遍历
-
思路分析
-
代码实现
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> v;TreeNode* cur = root;while (cur || !st.empty())//右子树不为空或者当前子树还有根和根子树没有访问{while (cur)//访问左子树{st.push(cur);cur = cur->left;}TreeNode* tmp = st.top();st.pop();//弹出避免二次递归并且更新上上级递归v.push_back(tmp->val);//访问根cur = tmp->right;//转为子问题访问右子树}return v;}
};
1.10 二叉树的后序遍历
-
题目:二叉树的后序遍历
-
思路分析
-
代码实现
class Solution {
public:vector<int> postorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> v;TreeNode* cur = root;while (cur || !st.empty())//左子树不为空或者还有根和右子树没有访问{while (cur)//访问根 右子树{st.push(cur);v.push_back(cur->val);//访问根cur = cur->right;//访问右子树}TreeNode* root = st.top();st.pop();//弹出避免二次递归并且更新上上级递归cur = root->left;//转为子问题访问左子树}reverse(v.begin(),v.end());//逆置return v;}
};
二. 拓扑排序
拓扑排序是一种对有向无环图(DAG,Directed Acyclic Graph)的顶点进行线性排序的方法,使得对于图中的每一个边 (u,v),顶点 u 在排序中都出现在顶点 v 的前面。拓扑排序在实际应用中非常重要,例如在任务调度、项目管理、编译原理等领域。
2.1 动画演示
2.2 课程表
- 题目:课程表
- 思路分析
同上 判断是否有环 - 代码实现
class Solution {
public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {vector<int> in(numCourses);unordered_map<int,vector<int>> hash;for(auto& x:prerequisites)//维护每个节点的入度{int a=x[0],b=x[1];hash[b].push_back(a);in[a]++;}queue<int> q;for(int i=0;i<numCourses;i++)//维护每个节点的边信息{if(in[i]==0){q.push(i);}}while(q.size())//bfs{int i=q.front();q.pop();for(auto& x:hash[i]){in[x]--;if(in[x]==0){q.push(x);}}}for(auto& x:in)//判断是否有环{if(x){return false;}}return true;}
};
2.3 课程表2
- 题目:
- 思路分析
同上 拓扑排序 - 代码实现
class Solution {
public:vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {vector<int> in(numCourses),ret;unordered_map<int,vector<int>> hash;for(auto& x:prerequisites){int a=x[0],b=x[1];hash[b].push_back(a);in[a]++;}queue<int> q;for(int i=0;i<numCourses;i++){if(in[i]==0){q.push(i);ret.push_back(i);}}while(q.size()){int i=q.front();q.pop();for(auto& x:hash[i]){in[x]--;if(in[x]==0){q.push(x);ret.push_back(x);}}}for(auto& x:in){if(x){return {};}}return ret;}
};
2.4 火星词典
-
题目:火星词典
-
思路分析
-
代码实现
class Solution {
public:string alienOrder(vector<string>& words) {string ret;int n=words.size();unordered_map<char,unordered_set<char>> edge;//出度信息unordered_map<char,int> in;//入度信息for(auto& s:words){for(auto ch:s){in[ch]=0;}}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){int len1=words[i].size();int len2=words[j].size();int l=0,r=0;while(l<len1&&r<len2){while(l<len1&&r<len2&&words[i][l]==words[j][r])//找到不相等的位置{l++;r++;}char a=words[i][l],b=words[j][r];if(l<len1&&r<len2&&(!edge.count(a)||!edge[a].count(b)))//防止重复信息{edge[a].insert(b);in[b]++;}if(r==len2&&l<len1)//处理边界情况{return "";}break;}}}queue<char> q;for(auto [a,b]:in)//入度为0的入队列{if(b==0){q.push(a);}}while(q.size()){char t=q.front();ret+=t;q.pop();for(auto x:edge[t]){if(--in[x]==0)//出度--判断是否入度为0{q.push(x);}}}for(auto [a,b]:in){if(b!=0){return "";//判断是否有向无环图}}return ret;}
};
后言
这就是C++常见二叉树OJ和拓扑排序。大家自己好好消化!今天就分享到这!感谢各位的耐心垂阅!咱们下期见!拜拜~
相关文章:
【C++笔记】C++常见二叉树OJ和拓扑排序
【C笔记】C常见二叉树OJ和拓扑排序 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】C常见二叉树OJ和拓扑排序前言一.二叉树OJ1.1 根据二叉树创建字符串1.2 二叉树的层序遍历1.3 二叉树的最近公共祖先1.4 将二叉搜索…...
ARM-----数据处理、异常处理、模式切换
实列一: 1. 异常向量表 area reset, code, readonly code32 entry area reset, code, readonly:定义一个名为reset的代码区域,只读。 code32:指示编译器生成32位ARM指令。 entry:标记程序的入口点。 2. 程序入口…...
mapbox基础,使用geojson加载line线图层,实现铁路黑白间隔效果
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️line线图层样式二、🍀使用geojson加载…...
Python FastAPI + Celery + RabbitMQ 分布式图片水印处理系统
FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理 首先创建项目结构: c:\Users\Administrator\Desktop\meitu\ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── celery_app.py │ ├── tasks.py │ └── config.py…...
阶段项目:Windows 服务器的组建与管理
项目概述 公司简介 创鑫公司是一家新成立的小型 IT 公司 公司决定组建部署一个小型的企业网络 员工人数不到20人 使用一台独立的 Windows 服务器提供各种网络服务 网络拓扑 设计需求 权限部分 权限部分要求 公司的网络管理员对办公计算机和服务器分别进行独立管理ÿ…...
【408】26考研-王道计算机408
王道408考研全套视频资料: 讲义01.26考研王道计算机【C语言督学营】02.【408领学班】26考研王道计算机B站独家03.26考研王道计算机【组成原理领学班】04.26王道计算机【计算机网络领学班】05.26考研王道计算机【数据结构领学班】06.26王道计算机【操作系统领学班】…...
数据分析问题思考路径
一、思考问题 1. 确认问题 因为背景: 因为5月1日的营业额突然下滑了10%,而历史从未出现过类似的跌幅 我想目的: 我想知道本次下滑的原因以此避免再出现这样的异常情况 现在思路: 现在能想到是原因是节假日和产品环节转化异常 最后感谢: 想请你帮我取数分析一下,…...
vue省市区懒加载,用el-cascader 新增和回显
el-cascader对于懒加载有支持方法,小难点在于回显的时候,由于懒加载第一次只有一层,所以要根据选中id数组一层层的加载。 子组件 <template><el-cascaderref"cascaderRef"v-model"selectedValue":props"…...
从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.3.3领域适配案例:医疗文本分类与法律合同生成
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第三部分:训练与优化技术-3.3.3 领域适配案例:医疗文本分类与法律合同生成1. 领域适配的核心挑战与解决方案2. 医疗文本分类:从通用到专业的跃迁2.1 医疗领域适配的技…...
Web网页内嵌 Adobe Pdf Reader 谷歌Chrome在线预览编辑PDF文档
随着数字化办公的普及,PDF文档已成为信息处理的核心载体,虽然桌面端有很多软件可以实现预览编辑PDF文档,而在线在线预览编辑PDF也日益成为一个难题。 作为网页内嵌本地程序的佼佼者——猿大师中间件,之前发布的猿大师办公助手&am…...
Python WebSockets 库详解:从基础到实战
1. 引言 WebSocket 是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等。相比传统的 HTTP 轮询方式,WebSocket 减少了带宽开销,提高了实时性。 在 Python 中ÿ…...
php根据一个数组里面的元素顺序来排序另外一个数组的的顺序
根据arr2的顺序来排序arr $arr [[size_id > 9],[size_id > 1],[size_id > 1],[size_id > 6],[size_id > 6],[size_id > 8],];$arr2 [1,9,6,8];usort($arr, function ($item1, $item2) use ($arr2) {return array_search($item1[size_id], $arr2) - array_s…...
从JVM到分布式锁:高并发架构设计的六把密钥
【300秒速览分布式核心技术栈】 作为十年架构老兵,今天用一张图说透高并发系统的底层逻辑: 🔑 JVM锁:synchronized与AQS构筑单机防线,却难逃分布式困局 🔑 数据库锁:MySQL行锁/间隙锁守住…...
《深度剖析SQL游标:复杂数据处理场景下的智慧抉择》
在数据库领域的广袤天地中,SQL游标宛如一把独特的钥匙,为复杂数据处理场景开启了一扇充满可能的大门。它以一种细腻且精准的方式,穿梭于数据库的记录之间,为众多棘手的数据处理难题提供了解决之道。 复杂数据处理场景的挑战 随着…...
【数据分享】中国3254座水库集水区特征数据集(免费获取)
水库在水循环、碳通量、能量平衡中扮演关键角色,实实在在地影响着我们的生活。其功能和环境影响高度依赖于地理位置、上游流域属性(如地形、气候、土地类型)和水库自身的动态特征(如水位、蒸发量)。但在此之前一直缺乏…...
【蓝桥杯每日一题】4.1
🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x "今日秃头刷题,明日荣耀加冕!" 今天我们来练习二分算法 不熟悉二分算法的朋友可以看:【C语言刷怪篇】二分法_编程解决算术问题-CSDN博客 …...
PHY——LAN8720A 代码解析 (三)
文章目录 PHY——LAN8720A 代码解析 (三)PHY 源码解析ETH_PHY_IO_InitETH_PHY_IO_DeInitETH_PHY_IO_WriteRegETH_PHY_IO_ReadRegETH_PHY_IO_GetTick LAN8720 源码解析LAN8720_RegisterBusIOLAN8720_InitLAN8720_DisablePowerDownModeLAN8720_EnablePowerDownMode PHY——LAN872…...
【工具】BioPred一个用于精准医疗中生物标志物分析的 R 软件包
介绍 R 语言包 BioPred 提供了一系列用于精准医疗中的亚组分析和生物标志物分析的工具。它借助极端梯度提升(XGBoost)算法,并结合倾向得分加权和 A 学习方法,帮助优化个体化治疗规则,从而简化亚组识别过程。BioPred 还…...
如何修复 SQL Server 数据库中的恢复挂起状态?
原文:如何修复 SQL Server 数据库中的恢复挂起状态? | w3cschool笔记 当我们想与关系数据库交互时,SQL 就会出现并帮助用户与数据库进行交互。SQL 从高级语言中获取用户的输入,然后访问将代码转换为机器可理解的形式。SQL 确实会…...
C++11QT复习 (十)
基类与派生类之间的转换 **Day7-4 基类与派生类之间的转换****一、问题回顾****二、基类与派生类间的转换****1. 类型适应(Upcasting)****2. 逆向转换(Downcasting)** **三、代码示例****四、派生类间的复制控制****五、总结****1…...
Linux——冯 • 诺依曼体系结构操作系统初识
目录 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 1.2 内存提高冯•诺依曼体系结构效率的方法 1.3 理解数据流动 2. 初步认识操作系统 2.1 操作系统的概念 2.2 设计OS的目的 3. 操作系统的管理精髓 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 计算…...
JVM 学习计划表(2025 版)
JVM 学习计划表(2025 版) 📚 基础阶段(2 周) 1. JVM 核心概念 JVM 作用与体系结构 理解 JVM 在 Java 跨平台运行中的核心作用,掌握类加载子系统、运行时数据区、执行引擎的交互流程内存结构与数据存…...
arm_mat_init_f32用法 dsp库
arm_mat_init_f32 是 CMSIS DSP 库中的一个函数,用于初始化一个浮点矩阵结构体。以下是其使用方法: 函数原型 c复制 void arm_mat_init_f32(arm_matrix_instance_f32 * S,uint16_t nRows,uint16_t nColumns,float32_t * pData ); 参数说明 S…...
【蓝桥杯14天冲刺课题单】Day3
1. 题目链接:1025 答疑 贪心类型的题目做法很简单,只需要保证局部解最优即可保证整体解最优。 这里的思路就是第i个学生前面的人答疑所用的时间最短,那么他所发送短信的时间节点越小。这道题目有个需要注意的点是:要先将前i-1个…...
基于开源AI大模型与S2B2C模式的线下服务型门店增长策略研究——以AI智能名片与小程序源码技术为核心
摘要 在传统零售行业中,商品零售可通过无限流量实现销量增长,但服务型门店(如餐饮、医疗、美容等)因受限于地理位置、服务承载能力及非标化服务特性,需从“流量驱动”转向“复购驱动”增长模式。本研究以“开源AI大…...
批量修改图像命名
打开存放图片的文件 ctrA全选 找到功能栏上的三个点的位置,点击选择复制路径 打开一个Excel表格 将复制的图片路径复制到Excel表格中 选中刚复制的图片路径,点击选择数据->分列->分列 在打开的窗口中选中分隔符号,在点击下一步 选中…...
linux-- 0. C语言过、Java半静对、Python纯动和C++对+C
学习目标: java,CPYTHONC 学习内容: java,CPYTHONC 目录 学习目标: 学习内容: java 纯解释型语言(如 Python)的对比 C语言与Java的核心区别 java,C PYTHON C 学习时间: 学习产出…...
程序化广告行业(50/89):Cookie映射技术深度剖析
程序化广告行业(50/89):Cookie映射技术深度剖析 大家好!一直以来,我都希望能和大家一起深入探索程序化广告行业,共同学习进步。在之前的分享中,我们已经了解了程序化广告的很多关键内容&#x…...
大语言模型智体的综述:方法论、应用和挑战(下)
25年3月来自北京大学、UIC、广东大亚湾大学、中科院计算机网络信息中心、新加坡南阳理工、UCLA、西雅图华盛顿大学、北京外经贸大学、乔治亚理工和腾讯优图的论文“Large Language Model Agent: A Survey on Methodology, Applications and Challenges”。 智体时代已经到来&a…...
【操作系统】Linux进程管理和调试
在 Linux 中,可以通过以下方法查看 PID(进程ID)对应的进程名称和详细信息: 1. 使用 ps 命令(最直接) ps -p <PID> -o pid,comm,cmd示例: ps -p 1234 -o pid,comm,cmd输出: P…...
C++---RAII模式
一、RAII模式概述 1. 定义 RAII(Resource Acquisition Is Initialization)即资源获取即初始化,是C中用于管理资源生命周期的一种重要编程模式。其核心在于将资源的获取和释放操作与对象的生命周期紧密绑定。当对象被创建时,资源…...
Clion刷题攻略-配置Cmake
使用Clion刷题,在一个项目中创建多个main函数,每一个文件对应一道题目,将Clion作为题目管理系统使用,并且cpp文件允许使用中文名,exe文件统一输出到runtime目录,防止污染根目录,CmakeLists文件如…...
DEBUG:file命令
file 命令详解 file 是 Linux/Unix 系统中用于检测文件类型的实用工具。它通过检查文件的**魔数(magic number)**和内容结构来判断文件类型,而不是依赖文件扩展名。 1. 基本语法 file [选项] 文件名... 常用选项 选项说明-b (--brief)简洁…...
hackmyvn-casino
arp-scan -l nmap -sS -v 192.168.255.205 目录扫描 dirsearch -u http://192.168.255.205/ -e * gobuster dir -u http://192.168.255.205 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php -b 301,401,403,404 80端口 随便注册一个账号 玩游戏时的…...
Elasticsearch笔记
官网 https://www.elastic.co/docs 简介 Elasticsearch 是一个分布式、开源的搜索引擎,专门用于处理大规模的数据搜索和分析。它基于 Apache Lucene 构建,具有实时搜索、分布式计算和高可扩展性,广泛用于 全文检索、日志分析、监控数据分析…...
在Windows下使用Docker部署Nacos注册中心(基于MySQL容器)
需要两个容器Nacos容器和MySQL容器,MySQL容器专注数据存储,Nacos容器专注服务发现/配置管理 准备工作 确保已安装Docker Desktop for Windows确保已启用WSL 2(推荐)或Hyper-V确保Docker服务正在运行 部署步骤 1. 拉取所需镜像 # 拉取MySQL镜像(这里…...
去中心化自治组织(DAO):革新未来治理的下一站
去中心化自治组织(DAO):革新未来治理的下一站 引言 去中心化自治组织(DAO)的诞生,像是互联网时代的一道新曙光。它打破了传统组织的等级壁垒,以去中心化和智能合约为核心,让社区成员能够直接参与决策并共享收益。从NFT社区到投资基金,DAO的应用场景正以前所未有的速…...
ideal自动生成类图的方法
在 IntelliJ IDEA 中,“**在项目资源管理器中选择以下类**” 是指通过 **项目资源管理器(Project Tool Window)** 找到并选中你需要生成类图的类文件(如 .java 文件),然后通过右键菜单或快捷键操作生成类图…...
爬虫获取1688关键字搜索接口的实战指南
在当今电商行业竞争激烈的环境下,数据的重要性不言而喻。1688作为国内领先的B2B电商平台,拥有海量的商品信息,这些数据对于商家的市场分析、选品决策、价格策略制定等都有着重要的价值。本文将详细介绍如何通过爬虫技术获取1688关键字搜索接口…...
视频设备轨迹回放平台EasyCVR渡口码头智能监控系统方案,确保港口安全稳定运行
一、背景 近年来,随着水上交通运输业的快速发展,辖区内渡口码头数量持续增加,船舶运营规模不断扩大,各类船舶活动频繁,给水上交通安全监管带来了巨大挑战。近期发生的多起村民使用无证木船捕鱼导致的伤亡事故…...
使用 Sales_data 类实现交易合并(三十)
1. Sales_data 类定义 假设 Sales_data 类定义在头文件 Sales_data.h 中,其基本定义如下: // Sales_data.h #ifndef SALES_DATA_H #define SALES_DATA_H#include <string>struct Sales_data {std::string bookNo; // ISBN 编号unsigned uni…...
电力系统惯量及其作用解析
电力系统中的惯量是指由同步发电机的旋转质量提供的惯性,用于抵抗系统频率变化的能力。其核心作用及要点如下: 1. 物理基础 转动惯量:同步发电机的转子具有质量,其转动惯量()决定了转子抵抗转速变化的能力…...
HNSW(Hierarchical Navigable Small World,分层可导航小世界)用来高效搜索高维向量的最近邻
HNSW(Hierarchical Navigable Small World,分层可导航小世界)是一种用于 高效最近邻搜索(ANN, Approximate Nearest Neighbors) 的索引结构,专门用于在 高维向量(比如文本、图像、音频的嵌入向量…...
STM32 CAN学习(一)
CAN总线应用最多的是汽车领域。 CAN(Controller Area Network)控制器 局域 网 局域网:把几台电脑连接到一台路由器上,这几台电脑就可以进行通讯了。 控制器在汽车中的专业术语叫做ECU(Electronic Control Unit&…...
高效内存位操作:如何用C++实现数据块交换的性能飞跃?
「性能优化就像考古,每一层都有惊喜」—— 某匿名C工程师 文章目录 问题场景:当内存操作成为性能瓶颈性能深潜:揭开内存操作的面纱内存访问的三重代价原始方案的性能缺陷 性能突破:从编译器视角重构代码方案一:指针魔法…...
Spring Boot向Vue发送消息通过WebSocket实现通信
后端实现步骤 添加Spring Boot WebSocket依赖配置WebSocket端点和消息代理创建控制器,使用SimpMessagingTemplate发送消息 前端实现步骤 安装sockjs-client和stompjs库封装WebSocket连接工具类在Vue组件中建立连接,订阅主题 详细实现步骤 后端&…...
USB转串口数据抓包--Bus hound
Bus Hound是一款强大的总线分析工具。 Bus Hound 支持哪些设备 ? 所有的 IDE , SCSI , USB 和 1394 设备都得到支持,包括磁盘驱动器,鼠 标、扫描仪,网络摄像头,等等。只要是枚举成以上所列的总线类型的…...
Android 使用CameraX实现预览、拍照、录制视频(Java版)
Android 官方关于相机的介绍如下: https://developer.android.google.cn/media/camera/get-started-with-camera?hlzh_cn 一、开始使用 Android 相机 Android相机一般包含前置摄像头和后置摄像头,使用相机可以开发一系列激动人心的应用,例…...
【已解决】Javascript setMonth跨月问题;2025-03-31 setMonth后变成 2025-05-01
文章目录 bug重现解决方法:用第三方插件来实现(不推荐原生代码来实现)。项目中用的有dayjs。若要自己实现,参考 AI给出方案: bug重现 今天(2025-04-01)遇到的一个问题。原代码逻辑大概是这样的…...
DeepSeek技术架构解析:MLA多头潜在注意力
一、前言 我们上一篇已经讲了 DeepSeek技术架构解析:MoE混合专家模型 这一篇我们来说一说DeepSeek的创新之一:MLA多头潜在注意力。 MLA主要通过优化KV-cache来减少显存占用,从而提升推理性能。我们知道这个结论之前,老周带大家…...