【2024年华为OD机试】 (C卷,100分)- 求字符串中所有整数的最小和(Java JS PythonC/C++)
一、问题描述
题目解析
题目描述
输入字符串 s
,输出 s
中包含所有整数的最小和。
说明
- 字符串
s
只包含a-z
、A-Z
、+
、-
。 - 合法的整数包括:
- 正整数:一个或多个
0-9
组成,如0
、2
、3
、002
、102
。 - 负整数:负号
-
开头,数字部分由一个或多个0-9
组成,如-0
、-012
、-23
、-00023
。
- 正整数:一个或多个
输入描述
包含数字的字符串。
输出描述
所有整数的最小和。
用例
输入
bb1234aa
输出
10
说明
无
输入
bb12-34aa
输出
-31
说明
1 + 2 + (-34) = -31
题目解析
问题分析
-
目标
从字符串中提取所有合法的整数(正整数和负整数),并计算它们的最小和。 -
关键点
- 正整数的每位数字应单独计算,以最小化和。
- 负整数应整体计算,以最小化和。
- 需要处理字符串中可能出现的连续符号(如
--
)和不完整负数(如-a
)。
-
问题转化
通过遍历字符串,识别正负整数,并分别计算它们的贡献。
解题思路
-
初始化变量
- 使用一个变量
ans
存储当前的和。 - 使用一个容器
negative
存储负数的数字字符。 - 使用一个标志
isNegative
记录当前是否在处理负数。
- 使用一个变量
-
遍历字符串
- 对于每个字符
c
:- 如果
c
是-
:- 如果当前正在处理负数(
isNegative == true
),则将negative
中的字符拼接成负数,加入ans
,并清空negative
。 - 设置
isNegative = true
,表示开始处理负数。
- 如果当前正在处理负数(
- 如果
c
是数字:- 如果
isNegative == true
,将c
加入negative
。 - 如果
isNegative == false
,将c
转换为数字并加入ans
。
- 如果
- 如果
c
是字母:- 如果
isNegative == true
,将negative
中的字符拼接成负数,加入ans
,并清空negative
。 - 设置
isNegative = false
。
- 如果
- 如果
- 对于每个字符
-
处理末尾的负数
- 遍历结束后,如果
isNegative == true
,将negative
中的字符拼接成负数,加入ans
。
- 遍历结束后,如果
-
返回结果
- 返回
ans
作为最终的最小和。
- 返回
示例分析
输入
bb12-34aa
步骤
- 初始化
ans = 0
,negative = []
,isNegative = false
。 - 遍历字符串:
b
:字母,忽略。b
:字母,忽略。1
:数字,isNegative == false
,ans += 1
。2
:数字,isNegative == false
,ans += 2
。-
:开始负数,isNegative = true
。3
:数字,isNegative == true
,negative.push('3')
。4
:数字,isNegative == true
,negative.push('4')
。a
:字母,isNegative == true
,将negative
拼接为-34
,ans += -34
,清空negative
,isNegative = false
。a
:字母,忽略。
- 返回
ans = 1 + 2 - 34 = -31
。
复杂度分析
-
时间复杂度
- 遍历字符串一次,时间复杂度为
O(n)
,其中n
是字符串长度。
- 遍历字符串一次,时间复杂度为
-
空间复杂度
- 使用
negative
存储负数字符,空间复杂度为O(m)
,其中m
是负数的长度。 - 总空间复杂度为
O(m)
。
- 使用
总结
本题的核心是通过遍历字符串,识别正负整数,并分别计算它们的贡献。关键在于:
- 正整数的每位数字单独计算。
- 负整数整体计算。
- 处理不完整负数和连续符号的情况。
- 时间复杂度优化为
O(n)
,适合处理较长的字符串。
二、JavaScript算法源码
这段JavaScript代码使用Node.js的readline
模块来处理控制台输入,采用ACM(ACM-ICPC,即国际大学生程序设计竞赛)模式来读取多行输入。这段代码的目标是从输入字符串中提取数字,并计算它们的总和,其中以负号开头的数字将被视为负数。以下是对这段代码的详细解析和讲解:
代码解析
输入处理
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {console.log(getResult(line));
});
- 功能:创建一个
readline
接口,用于从标准输入读取数据。 - 逻辑解释:
readline.createInterface
函数接受input
和output
流。rl.on("line")
事件监听器在每行输入时触发。- 每次读取一行,调用
getResult
函数进行处理,然后输出结果。
getResult
函数
function getResult(s) {let isNegative = false;const negative = [];// let ans = 0;let ans = BigInt(0);for (let c of s) {if (c >= "0" && c <= "9") {if (isNegative) {negative.push(c);} else {// ans += parseInt(c);ans += BigInt(c);}} else {if (isNegative && negative.length > 0) {// ans -= parseInt(negative.join(""));ans -= BigInt(negative.join(""));negative.length = 0;}isNegative = c == "-";}}if (negative.length > 0) {// ans -= parseInt(negative.join(""));ans -= BigInt(negative.join(""));}return ans.toString();
}
- 功能:解析输入字符串中的数字,并计算它们的总和。
- 逻辑解释:
isNegative
用于指示当前数字是否为负。negative
数组用于存储当前负数的各个数字字符。ans
使用BigInt
来存储结果,以处理可能出现的大数。- 遍历输入字符串,检查每个字符:
- 如果是数字字符并且
isNegative
为true
,将其添加到negative
数组。 - 如果是数字字符且不是负数,直接累加到
ans
。 - 如果遇到非数字字符:
- 如果存在负数,计算负数值并从
ans
中减去。 - 更新
isNegative
状态。
- 如果存在负数,计算负数值并从
- 如果是数字字符并且
- 最后,如果
negative
数组中仍有数字,减去最后一个负数值。 - 返回
ans
的字符串形式。
总结
- 核心思想:使用遍历和条件判断解析输入字符串中的数字,分别处理正数和负数。
- 使用场景:适用于需要从混合字符中提取并计算数字的场景。
- 代码优化:使用
BigInt
以处理大数字,确保计算结果的精度。
这段代码的设计良好,能够有效地处理输入并计算结果。如果您有其他问题或需要进一步解释,请随时询问!
三、Java算法源码
这段Java代码的功能是从输入的字符串中提取数字并计算它们的总和,其中以负号(-
)开头的数字被视为负数。使用了BigInteger
来处理可能出现的大数,确保计算的精度。下面是对这段代码的详细解析及讲解:
代码解析
主函数 main
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println(getResult(sc.nextLine()));
}
- 功能:读取用户输入的字符串,并输出计算结果。
- 逻辑解释:
- 使用
Scanner
对象sc
从控制台读取输入。 - 调用
getResult
方法,传入读取的字符串,并打印结果。
- 使用
getResult
函数
public static String getResult(String s) {boolean isNegative = false;StringBuilder negative = new StringBuilder();BigInteger ans = new BigInteger("0");for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c >= '0' && c <= '9') {if (isNegative) {negative.append(c);} else {ans = ans.add(new BigInteger(c + ""));}} else {if (isNegative && negative.length() > 0) {ans = ans.subtract(new BigInteger(negative.toString()));negative = new StringBuilder();}isNegative = c == '-';}}if (negative.length() > 0) {ans = ans.subtract(new BigInteger(negative.toString()));}return ans.toString();
}
- 功能:从输入字符串
s
中解析数字,并计算结果。 - 逻辑解释:
isNegative
:布尔变量,用于指示当前解析的数字是否为负数。negative
:使用StringBuilder
存储当前负数的字符。ans
:使用BigInteger
来累加结果,保证处理大数字的精度。- 遍历字符串
s
:- 如果是数字字符:
- 根据
isNegative
状态决定是否将字符添加到负数字符串或直接累加到ans
。
- 根据
- 如果遇到非数字字符:
- 检查是否需要处理并减去负数。
- 更新
isNegative
状态。
- 如果是数字字符:
- 最后,如果
negative
中仍有数字,减去这个负数。
总结
- 核心思想:通过遍历和条件判断解析输入字符串中的数字,识别并处理正负数。
- 使用场景:适用于需要从混合字符的字符串中提取并计算数字的场景。
- 代码特性:使用
BigInteger
以确保计算大数的精度,StringBuilder
用于高效处理字符串连接。
这段代码结构清晰,功能明确,通过合理使用Java类库的功能实现了对输入字符串的数字解析和计算。如果您有任何问题或需要进一步的解释,请随时询问!
四、Python算法源码
这段Python代码从输入字符串中提取数字并计算它们的总和,其中以负号(-
)开头的数字被视为负数。以下是对这段代码的详细解析和讲解:
代码解析
输入处理
s = input()
- 功能:读取一行输入。
- 逻辑解释:将输入的字符串存储在变量
s
中,供后续处理。
getResult
函数
def getResult():isNegative = Falsenegative = []ans = 0for c in s:if '0' <= c <= '9':if isNegative:negative.append(c)else:ans += int(c)else:if isNegative and len(negative) > 0:ans -= int("".join(negative))negative.clear()isNegative = c == '-'if len(negative) > 0:ans -= int("".join(negative))return ans
- 功能:从字符串
s
中解析数字并计算结果。 - 逻辑解释:
isNegative
用于指示当前数字是否为负数。negative
列表用于存储当前负数的数字字符。ans
用于累加结果。- 遍历字符串
s
中的每个字符c
:- 如果是数字字符:
- 如果
isNegative
为True
,将其添加到negative
列表中。 - 否则,直接将该数字累加到
ans
。
- 如果
- 如果是非数字字符:
- 如果
isNegative
为True
且negative
列表不为空,将列表中的字符组合成一个数字,并从ans
中减去该数字。 - 重置
negative
列表,并更新isNegative
状态为当前字符是否为-
。
- 如果
- 如果是数字字符:
- 在遍历结束后,如果
negative
列表仍不为空,再次组合并减去最后一个负数。 - 返回累加的结果
ans
。
总结
- 核心思想:通过遍历和条件判断解析输入字符串,识别并处理正负数字。
- 使用场景:适用于从包含非数字字符的字符串中提取并计算数字的情况。
- 代码特性:使用简单的条件结构和列表操作,逻辑直观清晰。
这段代码结构清晰,功能明确,能够有效地实现解析和计算。如果您有其他问题或需要进一步的解释,请随时询问!
五、C/C++算法源码:
C++ 版本
#include <iostream>
#include <string>
#include <cstdlib> // 包含atoi函数using namespace std;int main() {string s;getline(cin, s); // 读取整行输入bool isNegative = false; // 标记当前数字是否为负数string negative; // 存储当前负数的字符long long ans = 0; // 用于累加结果for (char c : s) { // 遍历字符串中的每个字符if (c >= '0' && c <= '9') { // 如果是数字字符if (isNegative) {negative += c; // 将字符添加到负数字符串中} else {ans += c - '0'; // 直接将数字累加到结果中}} else {if (isNegative && !negative.empty()) {ans -= stoll(negative); // 将负数转换为整数并减去negative.clear(); // 清空负数字符串}isNegative = (c == '-'); // 更新负数标记状态}}if (!negative.empty()) {ans -= stoll(negative); // 处理最后一个负数}cout << ans << endl; // 输出结果return 0;
}
C 版本
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_SIZE 10000int main() {char s[MAX_SIZE];fgets(s, MAX_SIZE, stdin); // 读取整行输入int isNegative = 0; // 标记当前数字是否为负数char negative[MAX_SIZE]; // 存储当前负数的字符int negative_size = 0; // 负数字符计数long long ans = 0; // 用于累加结果int i = 0;while (s[i] != '\0' && s[i] != '\n') { // 遍历字符串中的每个字符,直到结束符char c = s[i];if (c >= '0' && c <= '9') { // 如果是数字字符if (isNegative) {negative[negative_size++] = c; // 将字符添加到负数数组中negative[negative_size] = '\0'; // 确保字符串以空字符结尾} else {ans += c - '0'; // 直接将数字累加到结果中}} else {if (isNegative && negative_size > 0) {ans -= atol(negative); // 将负数字符串转换为整数并减去memset(negative, '\0', MAX_SIZE); // 清空负数字符串negative_size = 0; // 重置负数字符计数}isNegative = (c == '-'); // 更新负数标记状态}i++;}if (negative_size > 0) {ans -= atol(negative); // 处理最后一个负数}printf("%lld\n", ans); // 输出结果return 0;
}
代码讲解
-
输入处理:
- C++ 使用
getline
读取整行输入,而C使用fgets
读取。
- C++ 使用
-
逻辑执行:
- 利用
isNegative
变量判断当前解析的数字是否为负。 - 遇到数字字符时判断是否在负数上下文中,并根据情况累加到
ans
或追加到negative
中。 - 遇到非数字字符时,检查是否为负号,并在需要时将
negative
中的字符转换为负数并减去。 - 最后处理可能剩下的负数。
- 利用
-
数字处理:
- 使用字符和整数之间的ASCII码差进行简单的数字累加。
- C++中使用
stoll
函数将字符串转换为长整数,C中使用atol
。
通过这些步骤,代码能够有效地从输入字符串中提取并计算所有数字的总和,正确处理正负号。希望这些解释能够帮助您理解代码的工作原理!如有其他问题,请随时询问。
六、尾言
什么是华为OD?
华为OD(Outsourcing Developer,外包开发工程师)是华为针对软件开发工程师岗位的一种招聘形式,主要包括笔试、技术面试以及综合面试等环节。尤其在笔试部分,算法题的机试至关重要。
为什么刷题很重要?
-
机试是进入技术面的第一关:
华为OD机试(常被称为机考)主要考察算法和编程能力。只有通过机试,才能进入后续的技术面试环节。 -
技术面试需要手撕代码:
技术一面和二面通常会涉及现场编写代码或算法题。面试官会注重考察候选人的思路清晰度、代码规范性以及解决问题的能力。因此提前刷题、多练习是通过面试的重要保障。 -
入职后的可信考试:
入职华为后,还需要通过“可信考试”。可信考试分为三个等级:- 入门级:主要考察基础算法与编程能力。
- 工作级:更贴近实际业务需求,可能涉及复杂的算法或与工作内容相关的场景题目。
- 专业级:最高等级,考察深层次的算法以及优化能力,与薪资直接挂钩。
刷题策略与说明:
2024年8月14日之后,华为OD机试的题库转为 E卷,由往年题库(D卷、A卷、B卷、C卷)和全新题目组成。刷题时可以参考以下策略:
-
关注历年真题:
- 题库中的旧题占比较大,建议优先刷历年的A卷、B卷、C卷、D卷题目。
- 对于每道题目,建议深度理解其解题思路、代码实现,以及相关算法的适用场景。
-
适应新题目:
- E卷中包含全新题目,需要掌握全面的算法知识和一定的灵活应对能力。
- 建议关注新的刷题平台或交流群,获取最新题目的解析和动态。
-
掌握常见算法:
华为OD考试通常涉及以下算法和数据结构:- 排序算法(快速排序、归并排序等)
- 动态规划(背包问题、最长公共子序列等)
- 贪心算法
- 栈、队列、链表的操作
- 图论(最短路径、最小生成树等)
- 滑动窗口、双指针算法
-
保持编程规范:
- 注重代码的可读性和注释的清晰度。
- 熟练使用常见编程语言,如C++、Java、Python等。
如何获取资源?
-
官方参考:
- 华为招聘官网或相关的招聘平台会有一些参考信息。
- 华为OD的相关公众号可能也会发布相关的刷题资料或学习资源。
-
加入刷题社区:
- 找到可信的刷题交流群,与其他备考的小伙伴交流经验。
- 关注知名的刷题网站,如LeetCode、牛客网等,这些平台上有许多华为OD的历年真题和解析。
-
寻找系统性的教程:
- 学习一本经典的算法书籍,例如《算法导论》《剑指Offer》《编程之美》等。
- 完成系统的学习课程,例如数据结构与算法的在线课程。
积极心态与持续努力:
刷题的过程可能会比较枯燥,但它能够显著提升编程能力和算法思维。无论是为了通过华为OD的招聘考试,还是为了未来的职业发展,这些积累都会成为重要的财富。
考试注意细节
-
本地编写代码
- 在本地 IDE(如 VS Code、PyCharm 等)上编写、保存和调试代码,确保逻辑正确后再复制粘贴到考试页面。这样可以减少语法错误,提高代码准确性。
-
调整心态,保持冷静
- 遇到提示不足或实现不确定的问题时,不必慌张,可以采用更简单或更有把握的方法替代,确保思路清晰。
-
输入输出完整性
- 注意训练和考试时都需要编写完整的输入输出代码,尤其是和题目示例保持一致。完成代码后务必及时调试,确保功能符合要求。
-
快捷键使用
- 删除行可用
Ctrl+D
,复制、粘贴和撤销分别为Ctrl+C
,Ctrl+V
,Ctrl+Z
,这些可以正常使用。 - 避免使用
Ctrl+S
,以免触发浏览器的保存功能。
- 删除行可用
-
浏览器要求
- 使用最新版的 Google Chrome 浏览器完成考试,确保摄像头开启并正常工作。考试期间不要切换到其他网站,以免影响考试成绩。
-
交卷相关
- 答题前,务必仔细查看题目示例,避免遗漏要求。
- 每完成一道题后,点击【保存并调试】按钮,多次保存和调试是允许的,系统会记录得分最高的一次结果。完成所有题目后,点击【提交本题型】按钮。
- 确保在考试结束前提交试卷,避免因未保存或调试失误而丢分。
-
时间和分数安排
- 总时间:150 分钟;总分:400 分。
- 试卷结构:2 道一星难度题(每题 100 分),1 道二星难度题(200 分)。及格分为 150 分。合理分配时间,优先完成自己擅长的题目。
-
考试环境准备
- 考试前请备好草稿纸和笔。考试中尽量避免离开座位,确保监控画面正常。
- 如需上厕所,请提前规划好时间以减少中途离开监控的可能性。
-
技术问题处理
- 如果考试中遇到断电、断网、死机等技术问题,可以关闭浏览器并重新打开试卷链接继续作答。
- 出现其他问题,请第一时间联系 HR 或监考人员进行反馈。
祝你考试顺利,取得理想成绩!
相关文章:
【2024年华为OD机试】 (C卷,100分)- 求字符串中所有整数的最小和(Java JS PythonC/C++)
一、问题描述 题目解析 题目描述 输入字符串 s,输出 s 中包含所有整数的最小和。 说明 字符串 s 只包含 a-z、A-Z、、-。合法的整数包括: 正整数:一个或多个 0-9 组成,如 0、2、3、002、102。负整数:负号 - 开头&…...
MBox20网关:数字化工厂的智能加速器
在当今这个日新月异的数字化时代,企业对于生产效率、数据管理和网络安全的追求已经达到了前所未有的高度。特别是在制造业领域,随着“工业4.0”和“智能制造”概念的深入实践,数字化工厂已成为产业升级的必然趋势。在这场深刻的变革中&#x…...
NodeJS | 搭建本地/公网服务器 live-server 的使用与安装
目录 介绍 安装 live-server 安装方法 安装后的验证 环境变量问题 Node.js 环境变量未配置正确 全局安装的 live-server 路径未添加到环境变量 运行测试 默认访问主界面 访问文件 报错信息与解决 问题一:未知命令 问题二:拒绝脚本 公网配置…...
用C++实现一个基于模板的观察者设计模式
观察者模式 定义 观察者模式(Observer Pattern)是一种行为型设计模式,用于定义对象间的一对多依赖关系,使得当一个对象状态发生变化时,其所有依赖它的对象都会收到通知并自动更新。 核心概念 角色定义 Subject(被观察者): 持有观察者列表,维护观察者的注册和移除。 …...
LabVIEW开发X光图像的边缘检测
在医疗影像处理中,X光图像的分析对于骨折、肿瘤等病变的检测非常重要。X光图像中包含许多关键信息,然而,由于图像噪声的干扰,直接从图像中提取有用的特征(如骨折的边缘)变得非常困难。边缘检测作为图像处理…...
GitEE
版本控制 cvs svn git 等等 一、团队开发过程中的问题 1、备份【Release】 2、代码还原 3、协同修改 4、多版本文件管理 5、追溯问题代码的编写人和编写时间 6、权限控制 二、版本控制 版本控制就是维护工程蓝图标准做法,能追踪工程蓝图从诞生一直到定案的过程…...
Ubuntu配置python环境
前言 Ubuntu22.04自带python3,仅需要安装pip3即可。 也可以安装Anaconda使用虚拟环境。 本地Python环境 查看python3是否已安装: python3 -V若已安装python3,继续安装pip3: sudo apt install python3-pip查看pip版本…...
数据库的DML
1.insert 数据库于表创建成功后,需要向数据库的表中插入数据。在MySQL中可以使用insert语句向数据库已有的表中插入一行或者多行元组数据 基本语法: insert 语句有两种语法形式,分别是insert…values语句和insert…set语句 insert into&l…...
什么是SSL及SSL的工作流程
什么是 SSL SSL(Secure Sockets Layer,安全套接层)是一种保护互联网通信安全的加密协议,用于确保数据在客户端和服务器之间传输时的保密性、完整性和身份验证。它已被TLS(Transport Layer Security,传输层安全协议)取代,但很多场景仍习惯称其为SSL。 SSL/TLS 的主要目…...
RabbitMQ---消息确认和持久化
(一)消息确认 1.概念 生产者发送消息后,到达消费端会有以下情况: 1.消息处理成功 2.消息处理异常 如果RabbitMQ把消息发送给消费者后就把消息删除,那么就可能会导致,消息处理异常想要再获取这条消息的时…...
4 AXI USER IP
前言 使用AXI Interface封装IP,并使用AXI Interface实现对IP内部寄存器进行读写实现控制LED的demo,这个demo是非常必要的,因为在前面的笔记中基本都需哟PS端与PL端就行通信互相交互,在PL端可以通过中断的形式来告知PS端一些事情&…...
windows下安装并使用node.js
一、下载Node.js 选择对应你系统的Node.js版本下载 Node.js官网下载地址 Node.js中文网下载地址??? 这里我选择的是Windows64位系统的Node.js20.18.0(LTS长期支持版本)版本的.msi安装包程序 官网下载: 中文网下载: 二、安…...
【报错解决】Sql server 2022连接数据库时显示证书链是由不受信任的颁发机构颁发的
SSMS 20在连接Sql server 2022数据库时有如下报错: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 原因是尝试使…...
VSCode 的部署
一、VSCode部署 (1)、简介 vsCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、版本管理GIT等特性&…...
淘宝、京东联盟数字ID转加密ID接口
该接口可以将主站的数字ID转换为加密ID 例如:123456789 转换为 xxxxxxxxxx-xxxxxxxxx PHP示例 // 接口地址:https://www.haodanku.com/openapi/api_detail?id103 $app_secret 你的appSecret, //替换成自己的 $x [app_id > 你的appid, //替换成…...
【物联网】keil仿真环境设置 keilV5可以适用ARM7
文章目录 一、ARM指令模拟器环境搭建1. keil软件2. Legacy Support 二、Keil仿真环境设置1. 创建一个项目2. 编译器介绍(1)arm-none-eabi-gcc(2)arm-none-linux-gnueabi-gcc(3)arm-eabi-gcc(4)grmcc(5)aarch64-linux-gnu-gcc 3. 安装编译器(1)设置调试 一、ARM指令模拟器环境搭…...
Oracle 可观测最佳实践
简介 Oracle 数据库是一种广泛使用的商业关系数据库管理系统(RDBMS),由甲骨文公司(Oracle Corporation)开发。它支持 SQL 语言,能够存储和管理大量数据,并提供高级数据管理功能,如数…...
上传自己的镜像到docker hub详细教程
上传自己的镜像到docker hub详细教程 本博客通B站视频一致: 上传自己的镜像到docker hub详细教程 1. 登录自己的hub.docker.com的账号 docker hub仓库 2. 点击Repositories,跳转到创建仓库页面 3. 点击Create a repository 创建repository,…...
Python猜数小游戏
Python 实现的《猜数游戏》 介绍 本文将展示如何使用 Python 编写一个简单的《猜数游戏》。这个游戏将会生成一个1到10之间的随机数,用户有最多三次机会来猜测正确的数字。如果用户猜对了,游戏将结束并显示恭喜信息;如果没有猜对࿰…...
HackMyVM-Klim靶机的测试报告
目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 CVE-2008-0166 四、结论 一、测试环境 1、系统环境 渗透机:kali2021.1(192.168.159.127) 靶 机:debian(192.168.159.27) 注意事…...
MySQL中大量数据优化方案
文章目录 1 大量数据优化1.1 引言1.2 评估表数据体量1.2.1 表容量1.2.2 磁盘空间1.2.3 实例容量 1.3 出现问题的原因1.4 解决问题1.4.1 数据表分区1.4.1.1 简介1.4.1.2 分区限制和执行计划1.4.1.3 分区表的索引1.4.1.4 为什么分区键必须是主键的一部分1.4.1.5 操作分区1.4.1.5.…...
春秋杯-WEB
SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy, 当输入路径时会返回目标文件的大小, 通…...
C++多态的认识与理解
多态的定义 多态其实就是同一操作在不同的对象上可以有不同的实现方式。 多态的类型 多态分为静态多态和动态多态两种,而静态多态其实我们之前就了解过,今天主要是讲解一下动态多态。 静态多态(编译时多态):静态多态其实就是在…...
improve-gantt-elastic(vue2中甘特图实现与引入)
1.前言 项目开发中需要使用甘特图展示项目实施进度,左侧为表格计划,右侧为图表进度展示。wl-gantt-mater,dhtmlx尝试使用过可拓展性受到限制。gantt-elastic相对简单,可操作性强,基础版本免费。 甘特图(Gan…...
模型 笛卡尔思维
系列文章分享模型,了解更多👉 模型_思维模型目录。怀疑一切,分析整合,验证真理。 1 笛卡尔思维模型的应用 1.1 笛卡尔思维模型在城市规划中的应用 背景:某城市计划进行新的城市规划,以提高城市的可持续性…...
LabVIEW桥接传感器数据采集与校准程序
该程序设计用于采集来自桥接传感器的数据,执行必要的设置(如桥接配置、信号采集参数、时间与触发设置),并进行适当的标定和偏移校正,最终通过图表呈现采集到的数据信息。程序包括多个模块,用于配置通道、触…...
无人机技术架构剖析!
一、飞机平台系统 飞机平台系统是无人机飞行的主体平台,主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构:无人机的机身是其核心结构,承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…...
飞牛 使用docker部署Watchtower 自动更新 Docker 容器
Watchtower是一款开源的Docker容器管理工具,其主要功能在于自动更新运行中的Docker容器 Watchtower 支持以下功能: 自动拉取镜像并更新容器。 配置邮件通知。 定时执行容器更新任务。 compose搭建Watchtower 1、新建文件夹 先在任意位置创建一个 w…...
【Flink系列】4. Flink运行时架构
4. Flink运行时架构 4.1 系统架构 Flink运行时架构——Standalone会话模式为例 1)作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被…...
【机器学习实战入门】使用Pandas和OpenCV进行颜色检测
Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道,并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的,它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测? 颜色检测是检测任何颜色名称的过程…...
C++ K2 (2)
提示:文章 文章目录 前言一、背景标准库基础知识堆栈 总结 前言 前期疑问: 本文目标: 一、背景 接上文 标准库 1、(单选)【STL】在以下容器中间插入一个元素,时间复杂度为O(1)的是(A&#x…...
【React】静态组件动态组件
目录 静态组件动态组件创建一个构造函数(类)使用 class 实现组件**使用 function 实现类组件** 静态组件 函数组件是静态组件: 组件第一次渲染完毕后,无法基于内部的某些操作让组件更新「无法实现自更新」;但是,如果调用它的父组…...
Spring Web MVC综合案例
承接上篇文章——Spring Web MVC探秘,在了解Spring Web MVC背后的工作机制之后,我们接下来通过三个实战项目,来进一步巩固一下前面的知识。 一、计算器 效果展示:访问路径:http://127.0.0.1:8080/calc.html 前端代码&a…...
OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 为已校准的立体相机的每个头计算校正变换。 cv::stereoRectify 是 OpenCV 中用于立体校正的函数,它基于已知的相机参数和相对位置&am…...
SDL2基本的绘制流程与步骤
SDL2(Simple DirectMedia Layer 2)是一个跨平台的多媒体库,它为游戏开发和图形应用提供了一个简单的接口,允许程序直接访问音频、键盘、鼠标、硬件加速的渲染等功能。在 SDL2 中,屏幕绘制的流程通常涉及到窗口的创建、渲染目标的设置、图像的绘制、事件的处理等几个步骤。…...
计算机网络 (42)远程终端协议TELNET
前言 Telnet(Telecommunication Network Protocol)是一种网络协议,属于TCP/IP协议族,主要用于提供远程登录服务。 一、概述 Telnet协议是一种远程终端协议,它允许用户通过终端仿真器连接到远程主机,并在远程…...
重拾Python学习,先从把python删除开始。。。
自己折腾就是不行啊,屡战屡败,最近终于找到前辈教我 第一步 删除Python 先把前阵子折腾的WSL和VScode删掉。还是得用spyder,跟matlab最像,也最容易入手。 从VScode上搞python,最后安装到appdata上,安装插…...
51c大模型~合集106
我自己的原文哦~ https://blog.51cto.com/whaosoft/13115290 #GPT-5、 Opus 3.5为何迟迟不发 新猜想:已诞生,被蒸馏成小模型来卖 「从现在开始,基础模型可能在后台运行,让其他模型能够完成它们自己无法完成的壮举——就像一个老…...
node安装教程及环境配置
1.下载安装包 下载的网址:Node.js — Download Node.js 根据自己电脑系统及位数选择,电脑是Windows系统、64位、想下载稳定版的.msi(LTS为长期稳定版)这里选择windows64位.msi格式安装包。 .msi和.zip格式区别: .msi…...
Temp123
MapDB:的持久化机制,以及源码分析和摘取 1、spark streaming--struct streaming 基于 时间间隔 攒批 2、kafka-connect-hdfs 控制 flush.size 和 interval.ms控制 攒批 - 完全自研 攒批机制 - 使用 embeded 版 https://lxblog.com/qianwen/share?shar…...
YOLO系列代码
Test-Time Augmentation TTA (Test Time Augmentation)是指在test过程中进行数据增强。其思想非常简单,就是在评测阶段,给每个输入进行多种数据增广变换,将一个输入变成多个输入,然后再merge起来一起输出,形成一种ens…...
2025.1.16——一、NewsCenter
题目来源:攻防世界 NewsCenter 目录 一、题目 二、sqlmap解题——bp抓包存为txt文件进行爆破 step 1:search框内随便输入,进行抓包 step 2:抓包后,存到txt文件,进行sqlmap step 3:-r获取文…...
Java中的继承
引入继承 Java中使用类对实体进行描述,类经过实例化之后的产物对象,就可以用来表示现实中的实体,描述的事物错综复杂,事物之间可能会存在一些关联,因此我们就需要将他们共性抽取,面向对象的思想中提出了继…...
vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
文章目录 简介一、先看效果1.1 授权定位前,先弹出隐私协议弹框1.2 上述弹框点击同意,得到如下弹框1.3 点击三个点,然后点设置 1.4 在1.2步骤下,无论同意或者拒绝 二、manifest.json 文件配置三、微信公众平台配置3.1 登录进入微信…...
在Playwright中使用PO模式
1.新建项目 安装库 npm init -y npm install -D playwright npm install -D playwright/test npm install typescript ts-node types/node npx playwright install 项目目录 2.编写代码 package.json {"name": "pom_playwright","version": …...
三台 Centos7.9 中 Docker 部署 Redis 哨兵模式
三台 Centos7.9 中 Docker 部署 Redis 哨兵模式 1. 环境规划2. 配置 Docker Compose3. 配置 Redis 密码和持久化4. 配置哨兵5. 启动服务6. 验证 Redis 哨兵模式7. 注意事项 1. 环境规划 三台服务器的角色分配如下: IP Address容器端口角色192.168.15.128redis-mas…...
JSON数据格式的序列化和反序列化jackson针对首字母小学的字段返回序列化后第2个大写字母也变成小写的问题处理
SpringBoot类属性”第二个字母大写“反序列化问题。key第二个字母大写会被转成小写 , 这个为 jackson 的bug。 后台 : String pName; public String getPName() { return pName; } 前台 : { pname : xxx } 解决方案: 使用JsonProperty("pName")…...
Android wifi列表中去自身的热点
Android wifi列表中去自身的热点 一、前言 Android wifi列表中能搜索到自身的热点wifi? 正常手机上都不会出现这个问题;可能是系统底层已经做了过滤处理。 现实开发中Android设备的Wifi能搜索到自身热点也可能会存在。 比如基于两个单独的wifi双模组硬…...
Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧
作者:来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后,我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中,我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中,我们将回顾一些最佳实…...
单线性激光扫描、多线性激光扫描?激光扫描三维重建算法环节
分类 都属于激光扫描技术,但它们在光源的数量和工作方式上存在一些差异。 单线性激光扫描: 单线性激光扫描使用单个线状光源进行扫描。光源沿一个方向移动,将一条直线上的目标进行扫描。这种方式适用于需要获取目标表面在一个维度上的信息的…...