spark数据处理练习题详解【上】
1. (单选题) scala中属于序列的可变的集合,可以添加,删除元素的是()
A.Array
B.List
C.Tuple
D.ListBuffer
答案及解析:D
在Scala中,属于序列的可变集合,可以添加和删除元素的是:
D. ListBuffer
解释:
- ListBuffer是Scala中mutable包下的可变序列集合
- 它允许高效地添加和删除元素
- 可以通过+=, ++=等操作添加元素,通过-=, --=等操作删除元素
- 它实现了Buffer接口,是mutable.Seq的子类
其他选项分析:
- A (Array):虽然是可变的,但不能改变大小,只能修改元素值
- B (List):是不可变的序列,不能直接修改内容
- C (Tuple):是不可变的,且不是序列类型
2. (单选题)var map1:Map[___________]=Map()
map1+=("tom"->21)
请填空
A.T
B.String->Int
C.String,Int
D.String=>Int
答案及解析:C
解释:
- Scala中Map的类型声明格式为
Map[KeyType,ValueType]
- 从
map1+=("tom"->21)
可以看出,键是字符串类型("tom"),值是整数类型(21) - 因此类型应该是
Map[String,Int]
其他选项分析:
- A (T):这是泛型参数标记,不是具体的类型声明
- B (String->Int):这是键值对创建语法,不是类型声明语法
- D (String=>Int):这是函数类型声明,表示从String到Int的函数映射
3. (单选题)
val tb1=("1号窗口","豆腐脑",2.5)
//为了输出1号窗口。请填空
println(tb1.________)
A._1
B._0
C._2
D._3
答案及解析:A
解释:
- 元组tb1的第一个元素是"1号窗口",使用tb1._1访问
- 第二个元素"豆腐脑"使用tb1._2访问
- 第三个元素2.5使用tb1._3访问
其他选项错误原因:
- B (_0):Scala元组没有_0,索引从1开始
- C (_2):这会访问第二个元素"豆腐脑"
- D (_3):这会访问第三个元素2.5
4. (单选题)
函数调用语句为
println(mysum(3,5,2,5,1,9))
那么补充完整函数的定义
def mysum(list1:______)={
var s=0
for(i<-list1)
s=s+i
s
}
A.Int
B.Array[Int]
C.List[Int]
D.Int*
答案及解析:D
解释:
Int*
表示接收任意数量的Int类型参数- 这种语法称为可变参数列表(varargs)
- 在函数内部,
list1
会被当作一个Seq[Int]类型的集合处理 - 这样函数就能接收
mysum(3,5,2,5,1,9)
这样的多参数调用 - for循环可以遍历这个参数序列,计算所有值的总和
5. (单选题)
val set1=Set(1,2,3)
val set2=Set(2,3,4)
println(set1++set2)//并集
println(set1--set2)//差集
输出结果为
A.Set(1, 2, 3, 4)
Set(1)
B.Set(1, 2, 3, 4)
Set(2,3)
C.Set(1, 2, 3, 2,3,4)
Set(1)
D.Set(1, 2, 3, 4)
Set(1,4)
答案及解析:A
解释:
-
并集操作 (set1 ++ set2):
- 将两个集合的所有元素合并,去除重复元素
- set1有元素 1,2,3
- set2有元素 2,3,4
- 合并后为 Set(1, 2, 3, 4)
-
差集操作 (set1 -- set2):
- 返回在set1中但不在set2中的元素
- set1中的2,3也出现在set2中
- 只有1是set1独有的元素
- 所以结果为 Set(1)
其他选项错误原因:
- B选项的差集结果不正确
- C选项的并集包含重复元素,违背了Set的特性
- D选项的差集错误地包含了4,而4不在set1中
6. (单选题)
一个酒店有100个房间,房间门都是关闭的,房间号为1~100.有100个人,编号1~100,他们经过这些房间的走廊,每个人经过时都把自己编号倍数的房间门做相反操作。问最后哪些门是开着的。
for(i<-1 to 100){
var door=false;
for(p<-1 to 100)
if(_________________)
__________________
if(door)
println(i)
}
A.i%p!=0
door= !door
B.i%p==0
door= ~door
C.i//p==1
door= !door
D.i%p==0
door= !door
答案及解析:D
解释:
- 条件
i%p==0
表示:当门号(i)能被人的编号(p)整除时,该人会操作这个门 - 操作
door= !door
表示:将门的状态取反(关变开,开变关)
完整代码应该是:
for(i <- 1 to 100) {var door = false; // 初始所有门都是关闭的for(p <- 1 to 100)if(i % p == 0) // 如果门号能被人编号整除door = !door // 改变门的状态if(door)println(i) // 打印开着的门号
}
分析结果:
- 最终开着的门将是:1, 4, 9, 16, 25, 36, 49, 64, 81, 100
- 这些都是完全平方数
- 这是因为只有完全平方数的因子数量是奇数,其他数字的因子数量都是偶数
- 门被翻转奇数次则最终为开,被翻转偶数次则最终为关
7. (单选题)
关于单行函数正确的写法有()
1 def f1(a:Int,b:Int):Int={return a+b}
2 def f1(a:Int,b:Int):Int={a+b}
3 def f1(a:Int,b:Int):Int=a+b
A.1,2
B.仅1
C.1,3
D.1,2, 3
答案及解析:D
-
带return关键字的完整形式
def f1(a:Int, b:Int):Int = {return a+b}
这是传统的函数定义方式,使用花括号和显式的return关键字。
2.无return的块表达式形式
def f1(a:Int, b:Int):Int = {a+b}
在Scala中,函数体中最后一个表达式的值会自动作为返回值,不需要显式的return语句。
3.简化形式
def f1(a:Int, b:Int):Int = {a+b}
对于只有单个表达式的函数体,可以省略花括号,直接使用等号连接表达式。
8. (单选题)
println(func1("jerry",(s:String)=>{"hello "+s}))
//输出结果为hello jerry,请填空
def func1(s:String,fp:______________)={
_________________
}
A.(String=>String)
fp(s)
B.(String=>String)
println(s)
C.(String=>Unit)
fp(s)
D.(String<-String)
fp
答案及解析:A
解释:
-
函数参数类型:
fp: (String=>String)
表示fp是一个函数类型参数- 这个函数接收一个String类型参数并返回一个String类型结果
- 正好匹配了传入的
(s:String)=>{"hello "+s}
这个匿名函数
-
函数体:
fp(s)
将字符串s作为参数传递给fp函数- 当fp是
(s:String)=>{"hello "+s}
时,结果就是"hello jerry"
其他选项错误原因:
- B:函数体错误,直接打印s而不是应用函数fp
- C:函数类型错误,String=>Unit表示不返回值的函数
- D:语法错误,函数类型写法不正确,且函数体没有应用参数
9. (单选题)
func4(Array("tom","jerry","mike"),Array(f1,f2))
//
def func4(a:Array[String],fps:______________________)={
for(fp<-fps)
for(i<-a)
println(fp(i))
}
def f1(s:String)={
"welcome "+s
}
def f2(s:String)={
"hello "+s
}
A.Array[String=>String]
B.Array[s:String=>String]
C.Array[s:String=>Unit]
D.(String=>String)
答案及解析:A
解释:
-
函数分析:
f1
和f2
都是接收一个String参数并返回String类型的函数- 例如:
f1("tom")
会返回"welcome tom"
-
类型说明:
Array[String=>String]
表示"字符串到字符串函数"的数组类型- 这正好符合
Array(f1, f2)
的类型,因为f1和f2都是String=>String
-
函数运行流程:
- 外层循环遍历每个函数(f1, f2)
- 内层循环遍历每个字符串("tom", "jerry", "mike")
- 对每个组合应用函数并打印结果
- 所以会打印出6行结果(welcome tom, welcome jerry, welcome mike, hello tom, hello jerry, hello mike)
其他选项错误原因:
- B:语法错误,类型声明中不应包含参数名
- C:语法错误且返回类型不匹配,f1和f2返回String而非Unit
- D:这是单个函数的类型,不是函数数组的类型
10. (单选题)
var s2="hello tom,hello T3m,team"
var p2="(T|t)[a-z]+m".r()
p2.findAllIn(s2).foreach(println(_))
输出结果是()
A.tom
T3m
team
B.tom
T3m
C.T3m
team
D.tom
team
答案及解析:D
解释:
让我们分析正则表达式 (T|t)[a-z]+m
的含义:
(T|t)
- 以大写字母'T'或小写字母't'开头[a-z]+
- 后面跟着一个或多个小写字母m
- 以字母'm'结尾
检查字符串 "hello tom,hello T3m,team"
中的各部分:
- "tom":以't'开头,中间有小写字母'o',以'm'结尾,符合模式
- "T3m":虽然以'T'开头,以'm'结尾,但中间是数字'3'而不是小写字母,不符合模式
- "team":以't'开头,中间有小写字母'e'和'a',以'm'结尾,符合模式
11. (单选题)
var s2="tel:13955411234,TEL:16545457899,QQ:4646846"
var p2="1[(3-5)|(7-9)][0-9]{9}".r()
p2.findAllIn(s2).foreach(println(_))
输出结果是()
A.tel:13955411234
B.tel:13955411234
TEL:16545457899
C.13955411234
D.13955411234
16545457899
答案及解析:C
解释:
让我们分析这个正则表达式 1[(3-5)|(7-9)][0-9]{9}
:
1
- 匹配第一位数字必须是1(中国手机号都以1开头)[(3-5)|(7-9)]
- 这是一个字符类,里面包含字符(
,3
,-
,5
,)
,|
,(
,7
,-
,9
,)
- 注意:虽然这可能是想表达"3-5或7-9范围的数字",但实际上这个语法在正则表达式中不是这样工作的
- 第二位数字必须是这些字符之一,数字6不在其中
[0-9]{9}
- 后面必须跟着9个数字
检查字符串中的电话号码:
- "13955411234":以1开头,第二位是3(在允许的字符集中),后跟9位数字,符合模式
- "16545457899":以1开头,但第二位是6(不在允许的字符集中),所以不符合模式
- "4646846":不是以1开头,不符合模式
此外,findAllIn()
方法只返回匹配的部分,而不包括前缀如"tel:"或"TEL:"。
相关文章:
spark数据处理练习题详解【上】
1. (单选题) scala中属于序列的可变的集合,可以添加,删除元素的是() A.Array B.List C.Tuple D.ListBuffer 答案及解析:D 在Scala中,属于序列的可变集合,可以添加和删除元素的是ÿ…...
sparkSQL读入csv文件写入mysql(2)
(二)创建数据库和表 接下来,我们去创建一个新的数据库,数据表,并插入一条数据。 -- 创建数据库 CREATE DATABASE spark; -- 使用数据库 USE spark;-- 创建表 create table person(id int, name char(20), age int);-- …...
产品周围的几面墙
不能把排序,当单选题做。 2025年的杭州咖啡馆,味道最浓的不是咖啡,是聊各种项目和创业的卷味。 在过去几年,聊项目的也不少,那时候带着更加浓烈的自信和松弛感,不过今年略带几分忐忑和试探的口吻。 看到网…...
【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
目录 效果一览程序获取程序内容代码分享效果一览 程序获取 获取方式一:文章顶部资源处直接下载:...
螺旋矩阵--LeetCode
题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:matrix [[…...
湖北理元理律师事务所:债务管理的社会价值探索
债务问题从来不是孤立的经济事件,其背后牵涉家庭稳定、社会信用体系乃至区域经济发展。湖北理元理律师事务所通过五年服务数据发现:科学债务规划可使单个家庭挽回约23%的可支配收入,间接降低离婚率、心理健康问题发生率等社会成本。 债务优化…...
知识图谱(KG)与大语言模型(LLM)
知识图谱(KG)以其结构化的知识表示和推理能力,为大语言模型(LLM)的“幻觉”、知识更新滞后和可解释性不足等问题提供了有力的解决方案。反过来,LLM的强大文本理解和生成能力也为KG的构建、补全、查询和应用…...
LLM大语言模型系列1-token
一,什么是token 1,什么是token: 参考:https://en.wikipedia.org/wiki/Token https://en.wikipedia.org/wiki/Lexical_analysis#Token 我们有很多描述token的解释,建议是汇总在一起进行综合理解: 1️⃣To…...
数据清洗-案例
四)实现代码 在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。 (1)编写WebLogMapper类 package com.root.mapreduce.weblog; import java.io.IOException; import…...
项目的部署发布和访问的流程
首先打包项目: npm run build 打包后的文件会生成在dist文件夹中,将dist文件夹需要放到服务器里面,意味着服务有dist静态资源(index.html,css/,js/,img/) 用户在浏览器输入域名&am…...
人工智能、机器学习、深度学习定义与联系
人工智能、机器学习、深度学习定义与联系目录 一、人工智能(Artificial Intelligence, AI)1、定义2、特征:3、关键阶段的概述:1. 萌芽期(1940s–1950s):理论奠基2. 形成期(1950s–19…...
Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得
针对软件架构师、技术专业人士如何更好的把 GenAI 如何融入解决方案,提升用户体验、生产力并带来差异化成果的趋势,Gartner发布了《Integrating GenAI Into Your Application Architecture》研究报告。 报告首先介绍了 GenAI 的发展背景,指出其已成为主流趋势,大型语言模型…...
vscode中Debug c++
在vscode中Debug ros c程序 1 在Debug模式下编译 如果用命令行catkin_make,在输入catkin_make时加上一个参数: catkin_make -DCMAKE_BUILD_TYPEDebug 或者直接修改CMakelist.txt,添加以下代码: SET(CMAKE_BUILD_TYPE "D…...
c++从入门到精通(六)--特殊工具与技术-完结篇
特殊工具与技术-完结篇 控制内存分配 重载new和delete: 如果应用程序希望控制内存分配的过程,则它们需要定义自己的operator new函数和operator delete函数。当自定义了全局的operator new函数和operator delete函数后,我们就担负起了控…...
原型链的详细解释及使用场景
一、原型链的概念 原型链是JavaScript实现继承和属性共享的核心机制。每个对象都有一个内部属性[[Prototype]](可通过proto访问),指向其原型对象。当访问对象的属性时,若对象自身不存在该属性,则会沿着原型链向上查找…...
OpenCL C C++核心对象与属性对比
基础对象对应关系 OpenCL C 对象OpenCL C 对应类型创建函数示例cl::Platformcl_platform_idclGetPlatformIDs(1, &platform, NULL)cl::Devicecl_device_idclGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL)cl::Contextcl_contextclCreateContext(NULL,…...
Azure 机器学习初学者指南
Azure 机器学习初学者指南 在我们的初学者指南中探索Azure机器学习,了解如何设置、部署模型以及在Azure生态系统中使用AutoML & ML Studio。Azure 机器学习 (Azure ML) 是一项全面的云服务,专为机器学习项目生命周期而设计&am…...
一文读懂----Docker 常用命令
Docker 是一个强大的容器化平台,广泛用于开发、测试和生产环境。通过 Docker 命令行工具(CLI),我们可以轻松管理容器、镜像、网络和卷等资源。本文将详细介绍 Docker 的常用命令,带你熟练掌握 Docker 的核心操作命令。…...
React 19 中的useRef得到了进一步加强。
文章目录 前言一 useRef 的核心原理1.1 为什么需要 useRef?1.2 基本语法 二、React 19 中 useRef 的常见用法2.1 访问 DOM 元素2.2 保存跨渲染的数据 三、React 19 中的改进ref 作为一个属性案例演示(触发子组件焦点事件) 注意 总结 前言 在 React 的世界里&#x…...
报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)”
this.hWindowControl_Player new HalconDotNet.HWindowControl();报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)” System.BadImageFormatException 错误通常是由于平台架构不匹配导致的。它意味着你正在尝试在一个平台上加…...
【图像处理基石】OpenCV中都有哪些图像增强的工具?
OpenCV 图像增强工具系统性介绍 OpenCV 提供了丰富的图像增强工具,主要分为以下几类: 亮度与对比度调整 线性变换(亮度/对比度调整)直方图均衡化自适应直方图均衡化(CLAHE) 滤波与平滑 高斯滤波中值滤波双…...
Nordic 的RTC(Real-time counter)的介绍
目录 概述 1 RTC(Real-time counter)介绍 1.1 框架结构 1.2 时钟源 1.3 分辨率与溢出和precaler 2 寄存器功能介绍 2.1 计数寄存器 2.2 事件控制功能 2.3 比较功能 2.4 读取COUNTER寄存器 概述 本文主要介绍Nordic 的RTC(Real-time…...
【数据结构】2-2-2 顺序表的插入删除查找
数据结构知识点合集 知识点 顺序表的插入 ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 /*在顺序表L的第i个位置插入元素e*/ bool ListInsert(SqList &L,int i,int e) {/*判断i的范围是否有效*/if(i<0||i>L.length)return fals…...
【免杀】C2免杀技术(五)动态API
一、什么是动态API 在C2免杀领域中,“动态API” 主要指的是绕过静态检测的一种技术手段,其本质是运行时动态解析和调用Windows API函数,而不是在程序编译阶段就明确引用这些API。这种方式可以有效躲避静态分析工具和杀软的签名识别。 为什么…...
77.数据大小端赋值的差异与联系
上述赋值a定义为大端模式 a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] 上述赋值b定义为小端模式 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 因为5的二进制数…...
GO语言语法---switch语句
文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…...
PH热榜 | 2025-05-16
1. Tolt 标语:专为SaaS初创公司打造的一体化联盟营销软件 介绍:Tolt帮助SaaS初创公司启动和发展联盟计划。它提供自动化的支付、欺诈保护、与多种平台的无缝集成(包括Stripe、Paddle和Chargebee),还有一个品牌化的联…...
Java正则表达式:从基础到高级应用全解析
Java正则表达式应用与知识点详解 一、正则表达式基础概念 正则表达式(Regular Expression)是通过特定语法规则描述字符串模式的工具,常用于: 数据格式验证文本搜索与替换字符串分割模式匹配提取 Java通过java.util.regex包提供支持,核心类…...
iOS 初识RunLoop
iOS 初识RunLoop 文章目录 iOS 初识RunLoopRunLoop的概念RunLoop的功能RunLoop和线程的关系RunLoop的结构ModeObserverTimer 和 source小结 RunLoop的核心RunLoop的流程RunLoop的应用AutoreleasePool响应触控事件刷新界面常驻线程网络请求NSTimer 和 CADisplayLinkNSTimerGCDTi…...
备忘录模式
1.意图 备忘录模式是一种行为型设计模式,允许在不破坏封装的特性前提,获取并保存一个对象的内部状态,后续需要时恢复该状态。核心是将对象的状态存储在一个独立的备忘录对象中,并在需要时恢复。 2.模式类型 行为型对象设计模式 …...
UCOS 嵌入式操作系统
UCOS 嵌入式操作系统是一款在嵌入式领域应用广泛且具有重要地位的实时操作系统,以下是对它的详细介绍。 发展历程 初始版本诞生:UCOS 最早由美国嵌入式系统专家 Jean J. Labrosse 于 1991 年开始开发。当时他在项目中需要一个合适的实时操作系统&#…...
redis读写一致问题
title: redis读写一致问题 date: 2025-05-18 11:11:31 tags: redis categories: redis的问题方案 Redis读写一致问题 条件: 数据库此时的数据为10,redis此时的数据也为10 业务流程: 操作数据库使得数据库的数据为20,删除redis里面的数据保证读写一致 先删缓存…...
Redis实现分布式锁的进阶版:Redisson实战指南
一、为什么选择Redisson? 在上一篇文章中,我们通过Redis原生命令实现了分布式锁。但在实际生产环境中,这样的基础方案存在三大痛点: 锁续期难题:业务操作超时导致锁提前释放不可重入限制:同一线程无法重复…...
标准库、HAl库和LL库(PC13初始化)
标准库 (Standard Peripheral Library) c #include "stm32f10x.h"void GPIO_Init_PC13(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode GPIO_…...
第二章:安卓端启动流程详解与疑难杂症调试手册
想让一个安卓项目跑起来,从表面看无非就是:双击打开、连接真机、点击运行。 但是到了互动娱乐组件项目里,事情就变成了:点击运行→等待→黑屏→白屏→强制退出→LogCat爆炸→你怀疑人生。 本章就来系统性解决几个问题࿱…...
备份C#的两个类
GuestIP依赖项: using System.Data.SQLite; //这是第三方依赖项,要从nuget下载 static class GuestIP {public static void ReadLastGuestIP(string constr "Data Sourceguestip_log.db;"){using (var connection new SQLiteConnection(co…...
通过串口设备的VID PID动态获取串口号(C# C++)
摘要 本篇文章主要介绍分别通过C#和C++使用设备VID PID如何动态获取COM口 目录 1 简述 2 VID PID查看方式 3 C#实现通过串口设备的VID PID动态获取串口号 3.1 辅助类实现 3.2 调用实例 4 C++实现通过串口设备的VID PID动态获取串口号 4.1 辅助类实现 4.2 调用实例 1 简…...
C语言指针深入详解(二):const修饰指针、野指针、assert断言、指针的使用和传址调用
目录 一、const修饰指针 (一)const修饰变量 (二)const 修饰指针变量 二、野指针 (一)野指针成因 1、指针未初始化 2、指针越界访问 3、指针指向的空间释放 (二)如何规避野指…...
《P5283 [十二省联考 2019] 异或粽子》
题目描述 小粽是一个喜欢吃粽子的好孩子。今天她在家里自己做起了粽子。 小粽面前有 n 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 1 到 n。第 i 种馅儿具有一个非负整数的属性值 ai。每种馅儿的数量都足够多,即小粽…...
C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
有自定义官方示例链接: 如何实现和调用自定义扩展方法 - C# | Microsoft Learn 1.静态类 2.静态方法 3.第一参数固定为this 要修改的类型,后面才是自定的参数 AI给出的一个示例:没有自定义参数 、有自定义参数的 using System; using System.Colle…...
oracle 资源管理器的使用
14.8.2资源管理器的使用 资源管理器控制CPU资源使用说明: 第一种分配方法:EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU占用率的分配级别为从1 到8,级别1 的优先级最高。百分比指定如何将CPU 资源分配给每…...
(二十一)Java集合框架源码深度解析
一、集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java语言中用于存储和操作数据集合的一套标准架构。它提供了一组接口、实现类和算法,使开发者能够高效地处理各种数据结构。 1.1 集合框架的历史演变 在Java 1.2之前,Java只有几种简…...
spark数据的提取和保存
Spark数据提取和保存 一、数据提取(读取数据) 1. 读取文件(文本、CSV、JSON等) scala // 读取文本文件 val textData spark.read.text("路径/文件.txt") // 读取CSV文件(带表头) val csvD…...
Graphics——基于.NET 的 CAD 图形预览技术研究与实现——CAD c#二次开发
一、Graphics 类的本质与作用 Graphics 是 .NET 框架中 System.Drawing 命名空间下的核心类,用于在二维画布(如 Bitmap 图像)上绘制图形、文本或图像。它相当于 “绘图工具”,提供了一系列方法(如 DrawLine、FillElli…...
vue3_flask实现mysql数据库对比功能
实现对mysql中两个数据库的表、表结构、表数据的对比功能, 效果如下图 基础环境请参考 vue3flasksqlite前后端项目实战 代码文件结构变化 api/ # 后端相关 ├── daos/ │ ├── __init__.py │ └── db_compare_dao.py # 新增 ├── routes/ │ ├── _…...
【数据结构】2-3-1单链表的定义
数据结构知识点合集 知识点 单链表存储结构 优点:不要求大片连续空间,改变容量方便;缺点:不可随机存取,要耗费一定空间存放指针 /*单链表节点定义*/ typedef struct LNode{ElemType data;struct LNode *next; }LNo…...
面试题总结一
第一天 1. 快速排序 public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作,获取基准元素的最终位置int pivotIndex partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, …...
Ubuntu24.04下安装ISPConfig全过程记录
今天在网上看到ISPConfig,觉得不错,刚好手里又有一台没用的VPS,就顺手安装一个玩玩。具体安装步骤如下: 一、配置服务器hosts及hostname 【安装时候需要检查】 使用root账号登录VPS后 先安装vim编辑器,然后编辑hosts࿰…...
【NGINX】 -10 keepalived + nginx + httpd 实现的双机热备+ 负载均衡
文章目录 1、主架构图1.1 IP地址规划 2、web服务器操作3、配置nginx服务器的负载均衡4、配置keepalived4.1 master4.1 backup 5、测试双机热备5.1 两台keepalived服务器均开启5.2 模拟master节点故障 1、主架构图 1.1 IP地址规划 服务器IP地址web1192.168.107.193web2192.168.…...
NC016NC017美光固态芯片NC101NC102
NC016NC017美光固态芯片NC101NC102 在存储技术的演进历程中,美光科技的NC016、NC017、NC101与NC102系列固态芯片,凭借其技术创新与市场适应性,成为行业关注的焦点。本文将从技术内核、产品性能、行业动向、应用场景及市场价值五个维度&#…...