【C++】数字位数提取:从个位到十位的深入分析与理论拓展
文章目录
- 💯前言
- 💯第一题:提取个位数
- 解法
- 代码
- 解法分析
- 代码优化
- 拓展思考:取模运算的普适性
- 💯第二题:提取十位数
- 题目解读与思路分析
- 方法一:使用取模和整除的组合
- 代码示例
- 优点与不足
- 方法二:老师的优化解法 `(a / 10) % 10`
- 老师代码示例
- 逻辑分析
- 对比与结论
- 💯示例讲解与图示分析
- 方法一 `(a % 100) / 10` 的操作步骤
- 方法二 `(a / 10) % 10` 的操作步骤
- 💯数学方法的延伸:提取更高位数
- 💯小结
💯前言
- 本文旨在对整数操作的数位提取进行系统化的探讨,特别是在
C++
编程语言环境下。通过逐个案例的深入分析,本文不仅涵盖了个位与十位提取的技术细节,还探讨了不同实现方法的深层逻辑以及背后的数学原理
。本文将结合用户与指导老师的解法进行比较,从而为程序优化提供理论支持及最佳实践。此外,为了帮助读者全面掌握这些数值操作的基本原理,我们还会提供大量扩展性建议,涵盖更复杂的位数提取
以及通用数学处理方法
。这篇文章面向具有较高数学基础与编程技巧的读者,希望通过理论与实践的结合,为复杂整数操作的掌握打下坚实的理论基础。
C++ 参考手册
💯第一题:提取个位数
题号:NC21990
题目描述:
输入一个整数 a
,求其个位数。
输入描述:
输入一个整数,范围在 int
类型的表示范围内。
输出描述:
输出一个整数,即该数字的个位数。
示例:
- 输入:
102
- 输出:
2
限制条件:
- 时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
- 空间限制:C/C++/Rust/Pascal 32M,其他语言64M
- 64bit IO Format: %lld
题目图示:
- 整数的个位
解法
用户的初始实现通过 a % 10
的取模运算来提取个位数。这种方法极为直接且高效,适用于大多数情形,是数字操作中基础而常见的技巧。它背后的核心原理基于除法运算的余数特性,通过对10取模,即保留了整数的最后一位。
代码
#include <iostream>
using namespace std;int main() {int a;cin >> a;cout << a % 10 << endl;return 0;
}
解法分析
- 数学原理:
- 通过
%
运算符对 10 取模,可以直接提取出整数的最后一位。这种操作等价于将整数与 10 进行除法运算后求余,从而仅保留个位信息。 - 举例来说,对于
a = 102
,执行102 % 10
的结果为2
,因此个位数为2
。
- 通过
- 负数处理:
- 如果输入为负数,例如
a = -45
,则-45 % 10 = -5
。 - 为了确保输出结果为非负,可以使用标准数学函数
abs()
来取绝对值。这样可以避免由于负数带来的不符合预期的结果。 - 对于
a = -45
,取模结果为-5
,使用abs()
函数后,得到5
,使得输出结果更符合直观的期望。
- 如果输入为负数,例如
代码优化
为了处理负数情况,可以在取模运算后应用 abs()
函数,使得输出结果始终为非负值,从而增加代码的健壮性:
#include <iostream>
#include <cmath>
using namespace std;int main() {int a;cin >> a;cout << abs(a % 10) << endl;return 0;
}
这种优化在实际应用中尤为重要,特别是在涉及可能为负数的输入时。abs()
函数的使用可以确保输出符合预期,增强代码的鲁棒性,并有效避免负值所带来的歧义。
拓展思考:取模运算的普适性
取模运算广泛应用于提取数位信息的场景。对于不同的基数(例如二进制、八进制等),取模运算可以通过不同的模数
来实现灵活的位数操作。例如,若要提取一个数字的百位数,可以使用表达式 a % 1000 / 100
。这种方法的核心是先通过取模获取高位信息,再通过整除
得到目标位数。
此外,取模运算还广泛用于其他编程场景,例如实现循环边界条件处理
,检测数字的奇偶性
等。取模的灵活性与通用性使其成为编程中不可或缺的基础工具
之一。理解并掌握取模操作的多种应用方式,有助于编程人员在解决更多问题时更加得心应手。
💯第二题:提取十位数
题号:NC21991
题目描述:
输入一个整数 a
,求其十位数。
输入描述:
输入一个整数,范围在 int
类型的表示范围内。
输出描述:
输出一个整数,即该数字的十位数。
示例:
- 输入:
123
- 输出:
2
限制条件:
- 时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
- 空间限制:C/C++/Rust/Pascal 32M,其他语言64M
- 64bit IO Format: %lld
题目图示:
- 整数的十位
题目解读与思路分析
本题要求提取整数的十位数,因此需要对输入的整数进行适当的运算,确保能正确地提取十位部分。需要考虑整数可能为正、负数及个位为零的各种特殊情况。针对这一问题,可以采用两种主要的方法来进行解决。
方法一:使用取模和整除的组合
我最初采用的方法是使用 (a % 100) / 10
。其逻辑如下:
- 通过
a % 100
提取出数字的最后两位。 - 然后对结果执行
/ 10
,以获得十位的值。
代码示例
#include <iostream>
using namespace std;int main() {int a;cin >> a;cout << (a % 100) / 10 << endl;return 0;
}
优点与不足
-
优点:
- 逻辑直观清晰,先通过取模操作提取出最后两位数字,再通过整除得到十位数。
- 该方法的核心在于将目标数位范围缩小至百位以内,再通过整除简化为十位。
-
不足:
- 对于负数情况,得到的十位数会为负值,需要再用
abs()
处理以得到正确结果。 - 例如:
a = -456
时,-456 % 100 = -56
,-56 / 10 = -5
,这并不是我们期望的输出结果。
- 对于负数情况,得到的十位数会为负值,需要再用
优化后的代码:
#include <iostream>
#include <cmath>
using namespace std;int main() {int a;cin >> a;cout << abs((a % 100) / 10) << endl;return 0;
}
通过这一改进,我们确保无论输入是正数还是负数,输出的十位数都为非负值,从而使代码的行为更为可控,符合大多数应用场景的预期。
方法二:老师的优化解法 (a / 10) % 10
相比用户的解法,老师给出的 (a / 10) % 10
方法更加简洁且逻辑自洽,尤其是在负数处理方面。
老师代码示例
#include <iostream>
using namespace std;int main() {int a;cin >> a;cout << (a / 10) % 10 << endl;return 0;
}
逻辑分析
- 步骤:
- 首先对输入整数进行整除
10
,以去除个位数,保留十位及更高位。 - 然后对结果执行
% 10
操作,以获取十位数的值。
- 首先对输入整数进行整除
- 优点:
- 该方法通过直接进行整除操作,再进行取模运算,减少了取模的次数,逻辑更简明,代码更易读。
- 对于负数,可以结合
abs()
使用,以确保输出结果为正。
- 负数处理:
- 当输入为负数时,例如
a = -123
,执行(a / 10) % 10
,结果为-2
。通过abs()
函数可以将其转换为正数,得到2
。
- 当输入为负数时,例如
对比与结论
通过上述两种解法的对比,我们可以得出结论:老师的解法 (a / 10) % 10
在逻辑上更加直观,简洁清晰。相比用户的方法,它更符合数学上位数提取的本质,并且减少了不必要的运算步骤。因此,对于这种情况,推荐使用老师的方案来实现位数提取。
💯示例讲解与图示分析
为了使读者更加深入理解这两种方法的不同之处,我们通过图示详细分析了各个步骤的操作。
方法一 (a % 100) / 10
的操作步骤
- 蓝色框(第一步):
a % 100
- 通过取模操作保留最后两位。例如,若
a = 123456
,则123456 % 100 = 56
。
- 通过取模操作保留最后两位。例如,若
- 黄色框(第二步):
56 / 10
- 对最后两位进行整除,结果为
5
,即十位数。
- 对最后两位进行整除,结果为
图示分析:
方法二 (a / 10) % 10
的操作步骤
- 蓝色框(第一步):
a / 10
- 首先去掉个位数。例如,
a = 123456
时,123456 / 10 = 12345
。
- 首先去掉个位数。例如,
- 黄色框(第二步):
12345 % 10
- 对得到的数进行取模,结果为
5
,即十位数。
- 对得到的数进行取模,结果为
图示分析:
从这种可视化的分析中可以看出,虽然两种方法都能正确提取十位数,但老师的方案在步骤上更为简洁,且逻辑上更符合人们对数位操作的直觉理解。
💯数学方法的延伸:提取更高位数
除了个位与十位之外,我们还可以通过类似的方法提取任意高位的数字:
- 百位数提取:可以使用
(a / 100) % 10
。- 例如,
a = 123456
,执行(123456 / 100) % 10
得到4
,即百位数。
- 例如,
- 千位数提取:可以使用
(a / 1000) % 10
。- 例如,
a = 987654
,执行(987654 / 1000) % 10
得到7
,即千位数。
- 例如,
这种方法具有高度的普适性,通过调整除以 10
的次数,可以灵活地逐位提取任何数位的信息。因此,在各类编程竞赛和复杂问题中,这种位数提取方法极具应用价值。无论是 Python、Java 还是其他语言,类似的整数位数提取方法都广泛适用,跨语言的理解对于进一步提升编程技巧至关重要。
💯小结
-
本文通过对两个C++
位数提取问题的详细分析,探讨了多种解决方案及其优化策略。无论是个位还是十位的提取,均可以通过整除
与取模
的组合来简洁实现。 -
取模运算 是一种非常有效的工具,尤其适合提取
个位数
及处理循环问题
。 -
整除与取模的结合 能够实现对任意位数的精准提取,具备简洁性与高效性。
-
在编写代码时,务必考虑负数,确保程序的健壮性。
-
通过反复的练习和对理论的深入理解,我们能够更加灵活地运用这些
数学技巧
,解决各种位数提取问题
。
通过这次的练习与分析,相信你已经不仅掌握了数字位数提取的基本操作,也理解了如何在实际应用中优化代码,使其更加简洁高效
。希望本文的分析与讨论能帮助你在编程竞赛
及实际开发
中更加游刃有余,成为你在学习过程中的重要参考工具。理解与掌握这些基础知识,将是你编程之路上最重要的基石之一,让你在面对复杂问题时更加自信与从容
。
相关文章:
【C++】数字位数提取:从个位到十位的深入分析与理论拓展
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯第一题:提取个位数解法代码解法分析代码优化拓展思考:取模运算的普适性 💯第二题:提取十位数题目解读与思路分析方法一&…...
数据结构--二叉树的创建和遍历
目录 引入 定义 性质 二叉树的创建 迭代法 注意事项: 递归法 注意事项: 二叉树的遍历 深度优先 广度优先 先序遍历(前序遍历) 中序遍历 后序遍历 层序遍历 查找树结构中是否存在某数值 方法一: 方法…...
CEF127 编译指南 Linux篇 - 安装Git和Python(三)
1. 引言 在前面的文章中,我们已经完成了基础开发工具的安装和配置。接下来,我们需要安装两个同样重要的工具:Git 和 Python。这两个工具在 CEF 的编译过程中扮演着关键角色。Git 负责管理和获取源代码,而 Python 则用于运行各种编…...
计算机网络的类型
目录 按覆盖范围分类 个人区域网(PAN) 局域网(LAN) 城域网(MAN) 4. 广域网(WAN) 按使用场景和性质分类 公网(全球网络) 外网 内网(私有网…...
Web入门(学习笔记)
Web入门 文章目录 Web入门SpringSpringBootWeb入门HTTP协议HTTP-概述HTTP特点 HTTP-请求协议HTTP-请求数据格式 HTTP-响应协议响应状态码 HTTP-协议解析 Web服务器-TomcatWeb服务器简介基本使用Tomcat文件夹目录解析常见问题Tomcat部署项目 入门程序解析**内嵌的Tomcat服务器**…...
mind+自定义库编写注意事项
在mind图形化命令编写中,main.ts 文件是通过图形化编程工具生成 C 代码,然后将生成的 C 代码上传到 Arduino Uno 上执行。 这些由main.ts定义的图形化代码通过生成的代码,需要包含调用arduinoc/libraries文件夹的*.h和*.cpp文件&#…...
jQuery零基础入门速通(上)
大家好,我是小黄。 在前端开发的世界里,jQuery以其简洁的语法和强大的功能,一直是许多开发者手中的利器。它不仅简化了HTML文档遍历和操作、事件处理、动画以及Ajax交互,还极大地提高了开发效率。本文将带你走进jQuery的世界&…...
计算机网络-Wireshark探索IPv4
使用工具 Wiresharkcurl(MacOS)traceroute: This lab uses “traceroute” to find the router level path from your computer to a remote Internet host. traceroute is a standard command-line utility for discovering the Internet paths that your computer uses. It i…...
【05】Selenium+Python 两种文件上传方式(AutoIt)
上传文件的两种方式 一、input标签上传文件 可以用send_keys方法直接上传文件 示例代码 input标签上传文件import time from selenium import webdriver from chromedriver_py import binary_path # this will get you the path variable from selenium.webdriver.common.by i…...
《构建 C++分布式计算框架:赋能人工智能模型并行训练》
在人工智能迅猛发展的今天,模型训练所需的计算资源呈指数级增长。为了高效地支持人工智能模型在多节点、多 GPU/CPU 集群上的并行训练,基于 C构建分布式计算框架成为了关键之举。 一、分布式计算框架的核心意义 随着人工智能模型复杂度的不断攀升&…...
分支定价算法Branch and price
分支定价算法是进阶版的列生成算法,是用来专门求解整数规划问题的。 目录 1.整数规划与线性规划的关系 2.限制主问题(RLMP)求得整数解 3.B&P用法:以VRPTW为例 列生成是求解线性规划问题的算法,通过不断往限制主…...
【信息系统项目管理师】第5章:信息系统工程 考点梳理
文章目录 5.1 软件工程5.1.1 架构设计1、软件架构风格2、软件架构评估 5.1.2 需求分析1、需求的层次2、需求过程(重点)3、UML事务、关系和视图4、面向对象分析 5.1.3 软件设计1、结构化设计2、面向对象设计3、设计模式 5.1.4 软件实现1、软件配置管理2、…...
kdump调试分析(适用于麒麟,ubuntu等OS)
1. kdump基本原理 1.1 内核崩溃处理机制 当 Linux 系统内核发生崩溃时,通常会触发 panic,系统停止正常运行。Kdump 在这种情况下: 使用一个备用的内核(称为 crash kernel)来启动最小化的环境。从崩溃的主内核中复制内存内容(转储文件)。将转储文件保存到预定义的存储位…...
Ubuntu在NVME硬盘使用Systemback安装记录
问题 使用Systemback重装系统找不到NVME硬盘。 0.使用Systemback制作iso后,制作启动盘 1.插入启动盘进入live mode模式 2.安装gparted sudo apt-get update sudo apt-get install gparted3.使用gparted对待分区硬盘进行分区 gparted按照你希望的分区方式分区即…...
C++多态的实现原理
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 1、类的继承 子类对象在创建时会首先调用父类的构造函数 父类构造函数执行结束后,执行子类的构造函数 当父类的构造函数有参数时,需要在子类的初始化列表中显式调用 Child(int i) : …...
com.github.gavlyukovskiy依赖是做什么的呢?
p6spy-spring-boot-starter 是一个Spring Boot的starter,用于集成P6Spy库。P6Spy是一个开源的数据库连接池代理工具,它可以拦截和记录所有的SQL语句及其执行时间,从而帮助开发者进行SQL性能分析和调试。 功能概述 SQL日志记录: P…...
QChart数据可视化
目录 一、QChart基本介绍 1.1 QChart基本概念与用途 1.2 主要类的介绍 1.2.1 QChartView类 1.2.2 QChart类 1.2.3QAbstractSeries类 1.2.4 QAbstractAxis类 1.2.5 QLegendMarker 二、与图表交互 1. 动态绘制数据 2. 深入数据 3. 缩放和滚动 4. 鼠标悬停 三、主题 …...
离线安装 Docker-IO:详细步骤指南
离线安装 Docker-IO:详细步骤指南 一、准备工作1.1 下载 Docker 离线安装包1.2 准备安装环境1.3 配置防火墙和 SELinux(可选)二、上传和解压离线安装包2.1 上传安装包2.2 解压安装包三、安装 Docker-IO3.1 移动 Docker 文件到系统目录3.2 配置 Docker 服务3.3 赋予服务文件执…...
梯度爆炸与消失
梯度爆炸和梯度消失 一、概念解析 (一)梯度爆炸 定义 在深度神经网络训练的反向传播过程中,梯度爆炸是指梯度的值过大的现象。这会使模型的参数更新出现异常。 产生原因 深层网络与链式法则:深度神经网络按链式法则计算某层权重…...
动捕 动作捕捉学习笔记
2024.11.28 实时动作捕捉 ThreeDPoseTracker VRMLiveViewer 实现虚拟主播跳舞自由_哔哩哔哩_bilibili blender 手工操作,不能渲染到原视频 【快速有效】三分钟学会,通过blender把网上视频武术动作捕捉绑定到3D角色上,需要使用Auto-rig Pro(ARP…...
spark3.x之后时间格式数据偶发报错org.apache.spark.SparkUpgradeException
3.x之后如果你去处理2.x生成的时间字符串数据,很容易遇到一个问题 Error operating ExecuteStatement: org.apache.spark.SparkUpgradeException: You may get a different result due to the upgrading of Spark 3.0: Fail to parse 20200725__cb90fcc3_8006_46…...
计算机网络(二)
ip地址:11010010:01011110:00100100:00010100 子网掩码:11111111:11111111:11111111:11000000 and :11010010:01011110:00100100:00000000 210.94.36.0的下一站为R1 因为255为11111111 192为ÿ…...
如何在Spark中使用gbdt模型分布式预测
这目录 1 训练gbdt模型2 第三方包python环境打包3 Spark中使用gbdt模型3.1 spark配置文件3.2 主函数main.py 4 spark任务提交 1 训练gbdt模型 我们可以基于lightgbm快速的训练一个gbdt模型,训练相对比较简单,只要把训练样本处理好,几行代码可…...
llamaindex实战-ChatEngine-ReAct Agent模式
概述 ReAct 是一种基于Agent的聊天模式,构建在数据查询引擎之上。对于每次聊天交互,代理都会进入一个 ReAct 循环: 首先决定是否使用查询引擎工具并提出适当的输入 (可选)使用查询引擎工具并观察其输出 决定是否重复…...
关于音频 DSP 的接口种类以及其应用场景介绍
在音频系统中,DSP(数字信号处理器)扮演着重要角色,通常会通过不同的接口与音频系统中的其他组件(如功放、扬声器、音频源等)进行连接。以汽车应用场景为例,以下是一些常见的接口类型分类及其介绍…...
DLL中的inline static成员变量:Windows开发中的常见陷阱
在Windows平台进行C开发时,DLL(动态链接库)是一个非常重要的概念。它让我们能够实现代码的模块化和动态加载,提高了程序的灵活性和维护性。然而,当我们在DLL中使用C17引入的inline static成员变量时,可能会…...
7. 现代卷积神经网络
文章目录 7.1. 深度卷积神经网络(AlexNet)7.2. 使用块的网络(VGG)7.3. 网络中的网络(NiN)7.4. 含并行连结的网络(GoogLeNet)7.5. 批量规范化7.5.1. 训练深层网络7.5.2. 批量规范化层…...
软件测试丨Pytest生命周期与数据驱动
Pytest的生命周期概述 Pytest 是一个强大的测试框架,提供了丰富的特性来简化测试执行。它的生命周期包括多个阶段,涉及从准备测试、执行测试到报告结果的完整流程。因此,理解Pytest的生命周期将帮助我们更好地设计和管理测试用例。 开始阶段…...
Python 网页控制自动化 getEdgeDriver
透过python 使用 edge 执行自动化时,原来的代码 出现报错了 执行报错啦:message info 如下显示 HTTPSConnectionPool(hostmsedgedriver.azureedge.net, port443): Max retries exceeded with url: /130.0.2849/edgedriver_win64.zip (Caused by NewConn…...
白鹿 Hands-on:消除冷启动——基于 Amazon Lambda SnapStart 轻松打造 Serverless Web 应用(二)
文章目录 前言一、前文回顾二、在 Lambda 上运行2.1、查看 Amazon SAM template2.2、编译和部署到 Amazon Lambda2.3、功能测试与验证 三、对比 Snapstart 效果四、资源清理五、实验总结总结 前言 在这个环节中,我们将延续《白鹿 Hands-on:消除冷启动——…...
pandas read_csv读取中文内容文件报错UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte
先用如下代码检查编码格式 import chardet# 检测文件编码 with open("data.csv", "rb") as f:result chardet.detect(f.read())print(result["encoding"]) # 打印检测到的编码我检查后我的文件编码格式是ISO-8859-1,因此读取文件时…...
LoRA微调原理 代码实践
LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大语言模型)的流行技术,最初由来自微软的研究人员在论文《 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 》中提出。不同于其他技术,LoRA 不是调整…...
数据结构--树二叉树顺序结构存储的二叉树(堆)
前言 前面我们学习了顺序表、链表、栈和队列,这些都是线性的数据结构。今天我们要来学习一种非线性的数据结构——树。 树的概念及结构 树的概念 树是一种非线性的数据结构,是由n(n≥0)个有效结点组成的一个具有层次关系的集合…...
mongodb shard 分片集群基础概念
目录 一、shard 集群 二、Config Server 1、config.shards 2、config.database 3、config.collection 4、config.chunks 5、config.settings 6、其他 三、shard机制 1、Primary Shard 2、Shard Key 2.1 范围分片 2.2 哈希分片 2.3 Shard Key重定义 2.4 版本约束…...
Streamlit 应用从本地部署到服务器并进行访问
目录 1 部署 Streamlit 应用到服务器2 配置服务器允许远程访问3 使用反向代理4 使用 HTTPS5 总结 1 部署 Streamlit 应用到服务器 1 选择一个服务器平台 首先,你需要选择一个服务器平台来部署你的 Streamlit 应用。常见的选择包括: 云服务器:…...
大数据新视界 -- 大数据大厂之 Hive 数据压缩:优化存储与传输的关键(上)(19/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
Java开发中对List<Map<String, Object>>集合去重并按大小拆分子列表
Java开发中对List< Map< String, Object > >集合去重并按大小拆分子列表 一、使用场景二、实现步骤三、相关知识四、代码示例 一、使用场景 在处理大量List<Map<String, Object>>集合的数据时,为确保数据的唯一性,需要先根据Ma…...
vue3项目搭建-6-axios 基础配置
axios 基础配置 安装 axios npm install axios 创建 axios 实例,配置基地址,配置拦截器,目录:utils/http.js 基地址:在每次访问时,自动作为相对路径的根 // axios 基础封装 import axios from "axios";…...
git 学习笔记
目录 一、git 前期准备 1、托管平台的账号注册(以gitee码云为demo) 2、本地个人电脑配置 (1)配置用户属性 (2)配置SSH密钥 二、git 工作流程图 三、git 提交命令 (1)git ini…...
Y20030019 基于java+jsp+mysql的微信小程序校园二手交易平台的设计与实现 源代码 文档
旅游度假区微信小程序 1.摘要2. 系统开发的目的和意义3.系统功能4.界面展示5.源码获取 1.摘要 随着移动互联网的发展,微信小程序已经成为人们生活中不可或缺的一部分。微信小程序的优点在于其快速、轻量、易用,用户无需下载即可使用,节省了用…...
Cookie跨域
跨域:跨域名(IP) 跨域的目的是共享Cookie。 session操作http协议,每次既要request,也要response,cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …...
Mybatis:CRUD数据操作之删除一行数据
Mybatis基础环境准备请看:Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之单条删除数据 当用户点击了该按钮,就会将改行数据删除掉。那我们就需要思考,这种删除是根据什么进行删除呢?是通过主键id删除,因为id是…...
【机器学习】CatBoost 模型实践:回归与分类的全流程解析
一. 引言 本篇博客首发于掘金 https://juejin.cn/post/7441027173430018067。 PS:转载自己的文章也算原创吧。 在机器学习领域,CatBoost 是一款强大的梯度提升框架,特别适合处理带有类别特征的数据。本篇博客以脱敏后的保险数据集为例&#x…...
MySQL中如何减少回表
在MySQL中,回表是指在使用非聚集索引进行查询时,如果需要获取的数据不在索引页中,就需要根据索引页中的指针返回到数据表中查找实际数据行的过程。这个过程会增加额外的磁盘I/O操作,降低查询性能,特别是在查询大量数据…...
10. 函数
一、什么是函数 函数也是对象,对象是内存中专门用来存储数据的一块区域。函数可以用来保存一些可执行代码的,并且可以在需要时,对这些语句进行多次调用。 二、创建函数 创建函数也称为定义函数。我们可以使用 def 关键字来定义函数ÿ…...
计算机网络:数据链路层(二)
网课资源: 湖科大教书匠 1、网络适配器和MAC地址 习题1 1 以下哪个地址是广播MAC地址 A. 00-00-00-00-00-00 B. AB-CD-EF-11-22-33 C. FF-FF-FF-FF-FF-FF D. 29-29-29-29-29-29 2 以下哪个地址是多播MAC地址 A. 00-00-00-00-00-00 B. A9-8B-7C-6D-5E-4F C. FF-FF-…...
一万台服务器用saltstack还是ansible?
一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器,取决于几个关键因素,如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析,帮助你做出决策: SaltStack&…...
设计模式学习之——观察者模式
观察者模式是一种行为型设计模式,它用于在对象之间建立一对多的依赖关系。 一、定义与角色 定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察…...
服务器实现ssh证书登录
1.生成公钥和私钥 ssh-keygen -t rsa 提示默认生成位置为/root/.ssh/id_rsa ,直接回车。(也可以自己修改) 提示输入证书的密码,可以留空,建议输入,如果输入了,则需要再次确认,记住这个证书密码(证书再加…...
python基础知识精讲
Python基础知识精讲 Python是一种广泛使用的高级编程语言,以其清晰的语法和代码可读性而闻名。它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。以下是Python基础知识的详细讲解。 1. Python简介 Python由Guido van Rossum创建&#x…...