[面试]-golang基础面试题总结
文章目录
- panic` 和 `recover
- **注意事项**
- 使用 `pprof`、`trace` 和 `race` 进行性能调试。
- **Go Module**:
- Go中new和make的区别
- Channel
- 什么是 Channel 的方向性?如何对 Channel 进行方向限制?
- Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有什么影响?如何设置 Channel 的缓冲区大小?
- Channel 可以通过什么形式进行关闭?为什么要关闭 Channel?
- 请简要说明 Channel 在 Go 中的作用以及主要特点。
- 多个 Goroutine 同时对一个 Channel 进行读写操作会出现什么情况?如何避免此类问题?
- 在go语言中,Printf()、Sprintf()、Fprintf()函数的区别用法是什么?
- 说说go语言中,数组与切片的区别?
- (1)数组
- (2)切片
- 解释以下命令的作用?
- 说说go语言中的for循环?
- 说说go语言中的switch语句?
- go语言中没有隐藏的this指针,这句话是什么意思?
- go语言中的引用类型包含哪些?
- go语言中指针运算有哪些?
- 说说go语言的main函数
- 说说go语言的channel特性?
- go语言触发异常的场景有哪些?
- 说说go语言的beego框架?
- 说说go语言的goconvey框架?
- go语言中,GoStub的作用是什么?
- 简单介绍一下Golang。
- Golang是否可以声明一个类?
- Go是否支持泛型?(陷阱问题)
- 从GitHub或者bitbucket导入代码的命令是什么?
- 一个通过make()命令创建的缓冲区被分配了一块内存后。如何销毁缓冲区并收回内存?
- 以下内容表示什么?(陷阱问题)
- 切片和数组的显著差异是什么?
- cap()和len()函数的区别是什么?
- 哈希表或哈希映射允许快速查找。GO如何实现哈希映射?(陷阱问题)
- 以下哪些函数,变量,标识符可以被导出,或者可以被外部函数调用?(陷阱问题)
- Go语言的数据类型有哪些?
- **你有使用过哪些Go的Web框架?**
- **如何防止常见的安全漏洞?**
panic和
recover
特性 | panic | recover |
---|---|---|
作用 | 主动触发异常,导致程序崩溃。 | 捕获异常,避免程序退出。 |
返回值 | 无返回值。 | 返回 panic 的信息或 nil 。 |
执行时机 | 在调用时立即开始栈回溯。 | 在栈回溯中调用时捕获 panic 信息。 |
常用场景 | 不可恢复的严重错误。 | 程序恢复、错误日志记录。 |
与 defer 配合 | 通常在 defer 之前或普通代码中触发。 | 必须在 defer 函数中调用。 |
注意事项
recover
必须在defer
中调用:- 如果直接调用
recover
而没有defer
,它无法捕获panic
。
- 如果直接调用
panic
不应作为常规错误处理工具:- Go 提倡显式错误处理(通过
error
类型返回错误)。 panic
应用于不可恢复的错误,例如程序 bug。
- Go 提倡显式错误处理(通过
- 防止资源泄漏:
panic
会跳过正常的函数执行流程,但会依次执行栈上的defer
语句。- 在关键资源操作时,要确保
defer
释放资源(如文件、锁等)。
合理使用 panic
和 recover
,可以在编写 Go 程序时实现更可靠的错误处理,同时提高程序的健壮性。
func worker() {defer func() {if r := recover(); r != nil {log.Printf("Worker recovered from: %v", r)}}()panic("Worker failed!") // 模拟异常
}func main() {worker()fmt.Println("Program continues running")
}
使用 pprof
、trace
和 race
进行性能调试。
-
pprof
用于分析 Go 程序的性能,帮助识别 CPU 和内存的热点。- CPU 性能分析:查看代码在哪些地方消耗了最多的 CPU 时间。
- 内存分析:查看内存分配的热点。
- 阻塞分析:查看 Goroutine 的阻塞情况。
- 线程分析:分析操作系统线程的使用。
-
trace
提供了更细粒度的时间线分析工具,用于调试 Go 程序的并发行为和性能问题。-
分析 Goroutine 的生命周期。
-
观察网络延迟、垃圾回收(GC)时间。
-
查看锁竞争情况。
-
-
race
:数据竞争检测,race
检测多 Goroutine 并发访问共享变量时的竞争条件。- 检测并发读写导致的数据竞争。
- 帮助定位 Goroutine 中共享资源的错误使用。
Go Module:
- 依赖管理和版本控制。
Go Module
是 Go 的依赖管理工具,用于管理项目的依赖包及其版本控制。它是 Go 从 1.11 开始引入并在 1.16 成为默认的依赖管理方式。
replace
和本地调试,在实际开发中,尤其是调试或开发本地依赖包时,replace
是非常有用的工具。- 重定向模块路径到本地或其他路径。
- 常用于本地开发版本的调试,避免发布到远程仓库。
Go中new和make的区别
在Go中的值类型和引用类型: (new 返回指针,make 返回值)
值类型:int,float,bool,string,struct和array. 变量直接存储值,分配栈区的内存空间,这些变量所占据的空间在函数被调用完后会自动释放。引用类型:slice,map,chan和值类型对应的指针. 变量存储的是一个地址(或者理解为指针),指针指向内存中真正存储数据的首地址。内存通常在堆上分配, 通过GC回收。
这里需要注意的是: 对于引用类型的变量,我们不仅要声明变量,更重要的是,我们得手动为它分配空间.
因此new该方法的参数要求传入一个类型,而不是一个值,它会申请一个该类型大小的内存空间,并会初始化为对应的零值,返回指向该内存空间的一个指针。
new 的作用是初始化一个指向类型的指针(*T),new函数是内建函数,函数定义:func new(Type) *Type
而make也是用于内存分配,但是和new不同,只用来引用对象slice、map和channel的内存创建,它返回的类型就是类型本身,而不是它们的指针类型。
make 的作用是为 slice,map 或 chan 初始化并返回引用(T)。
make函数是内建函数,函数定义:func make(Type, size IntegerType) Type
- 第一个参数是一个类型,第二个参数是长度
- 返回值是一个类型
make(T, args)函数的目的与new(T)不同。它仅仅用于创建 Slice, Map 和 Channel,并且返回类型是 T(不是T*)的一个初始化的(不是零值)的实例。
Channel
什么是 Channel 的方向性?如何对 Channel 进行方向限制?
Channel 的方向性通常指的是 Channel 是否可以进行发送或者接收操作。在声明 Channel 类型时,可以使用 <- 操作符来指定 Channel 的方向,形式如下:
// 双向 Channel
var ch chan int
// 只能发送数据的 Channel
var ch1 chan<- int
// 只能接收数据的 Channel
var ch2 <-chan int
如果没有使用 <- 操作符或者使用了双向的 Channel 类型,则表示该 Channel 是双向的。
Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有什么影响?如何设置 Channel 的缓冲区大小?
缓冲区的大小对于 Channel 和 Goroutine 通信的影响主要体现在两个方面:
- 当 Channel 没有缓冲区或者缓冲区已满时,发送操作会阻塞对应的 Goroutine 直到接收者准备好接收数据;
- 当 Channel 没有缓冲区或者缓冲区为空时,接收操作会阻塞对应的 Goroutine 直到发送者发送数据。
因此,当缓冲区的大小为 0 时,Channel 采用的是“同步模式”,即发送操作和接收操作必须同步进行,如果没有对应的接收者或发送者,将会阻塞对应的 Goroutine。当缓冲区的大小大于 0 时,Channel 采用的是“异步模式”,即发送操作和接收操作可以异步进行,如果缓冲区已满,发送操作会阻塞对应的 Goroutine,如果缓冲区为空,接收操作会阻塞对应的 Goroutine。
设置 Channel 的缓冲区大小可以使用内置的 make 函数,第二个参数指定 Channel 的缓冲区大小:
// 创建缓冲区大小为 10 的 Channel
ch := make(chan int, 10)
Channel 可以通过什么形式进行关闭?为什么要关闭 Channel?
- Channel 可以使用内置函数 close 进行关闭,形式如下:
ch := make(chan int)
close(ch)
关闭 Channel 的主要作用有两个:
- 一是让接收者可以及时知道 Channel 已经关闭,从而及时结束读取数据;
- 二是可以避免出现死锁的情况,如果一个 Goroutine 在 Channel 关闭前一直阻塞在接收操作上,那么该 Goroutine 将永远无法被唤醒。
请简要说明 Channel 在 Go 中的作用以及主要特点。
-
Channel 是为了在 Goroutine 间进行通信而设计的一种数据类型。Channel 可以用于实现协程间的同步、数据交换等。Channel 的主要特点包括:
-
Channel 是基于内存通信的,因此可以在不同的 Goroutine 中安全地传递数据;
-
Channel 具有先进先出的特性,可以保证多个 Goroutine 发送的数据按照发送的顺序被接收;
-
Channel 支持阻塞式的读写操作,在没有数据可读或者没有空闲的缓冲区时会阻塞对应的 Goroutine。
多个 Goroutine 同时对一个 Channel 进行读写操作会出现什么情况?如何避免此类问题?
-
多个 Goroutine 同时对一个 Channel 进行读写操作很容易出现竞争条件导致的数据冲突问题,导致程序出现不可预期的错误。
-
为避免此类问题,可以使用锁机制(如互斥锁、读写锁等)或者使用带缓冲区的 Channel 来确保读写操作的同步和顺序性。
-
Go 还提供了带有 select 关键字的语法,可以在多个 Channel 读写操作之间进行选择,从而避免出现死锁等问题。
在go语言中,Printf()、Sprintf()、Fprintf()函数的区别用法是什么?
都是把格式好的字符串输出,只是输出的目标不一样:
Printf(),是把格式字符串输出到标准输出(一般是屏幕,可以重定向)。
Printf() 是和标准输出文件(stdout)关联的,Fprintf 则没有这个限制.
Sprintf(),是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目
标字符串地址。
Fprintf(), 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针
FILE*。主要用于文件操作。Fprintf()是格式化输出到一个stream,通常是到文件。
说说go语言中,数组与切片的区别?
数据类型、指针、切片、map。
(1)数组
数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。
数组的长度是数组类型的一部分,所以[3]int 和 [4]int 是两种不同的数组类型。
数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 ;数组是值传递;
数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索
引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。
数组定义:
var array [10]int
var array = [5]int{1,2,3,4,5}
(2)切片
切片表示一个拥有相同类型元素的可变长度的序列。
切片是一种轻量级的数据结构,它有三个属性:指针、长度和容量。
切片不需要指定大小;切片是地址传递;
切片可以通过数组来初始化,也可以通过内置函数make()初始化 .初始化时len=cap,在追加元素时如果容量cap不足时将按len的2倍扩容;
切片定义:var slice []type = make([]type, len)
解释以下命令的作用?
- go env: #用于查看go的环境变量
- go run: #用于编译并运行go源码文件
- go build: #用于编译源码文件、代码包、依赖包
- go get: #用于动态获取远程代码包
- go install: #用于编译go文件,并将编译结构安装到bin、pkg目录
- go clean: #用于清理工作目录,删除编译和安装遗留的目标文件
- go version: #用于查看go的版本信息
说说go语言中的for循环?
for循环支持continue和break来控制循环,但是它提供了一个更高级的break,可以选择中断哪一个循环
for循环不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量
说说go语言中的switch语句?
单个case中,可以出现多个结果选项,只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case
go语言中没有隐藏的this指针,这句话是什么意思?
方法施加的对象显式传递,没有被隐藏起来
golang的面向对象表达更直观,对于面向过程只是换了一种语法形式来表达
方法施加的对象不需要非得是指针,也不用非得叫this
go语言中的引用类型包含哪些?
数组切片、字典(map)、通道(channel)、接口(interface)
go语言中指针运算有哪些?
可以通过“&”取指针的地址
可以通过“*”取指针指向的数据
说说go语言的main函数
main函数不能带参数
main函数不能定义返回值
main函数所在的包必须为main包
main函数中可以使用flag包来获取和解析命令行参数
说说go语言的channel特性?
- A. 给一个 nil channel 发送数据,造成永远阻塞
- B. 从一个 nil channel 接收数据,造成永远阻塞
- C. 给一个已经关闭的 channel 发送数据,引起 panic
- D. 从一个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回一个零值
- E. 无缓冲的channel是同步的,而有缓冲的channel是非同步的
go语言触发异常的场景有哪些?
A. 空指针解析
B. 下标越界
C. 除数为0
D. 调用panic函数
说说go语言的beego框架?
- A. beego是一个golang实现的轻量级HTTP框架
- B. beego可以通过注释路由、正则路由等多种方式完成url路由注入
- C. 可以使用bee new工具生成空工程,然后使用bee run命令自动热编译
说说go语言的goconvey框架?
A. goconvey是一个支持golang的单元测试框架
B. goconvey能够自动监控文件修改并启动测试,并可以将测试结果实时输出到web界面
C. goconvey提供了丰富的断言简化测试用例的编写
go语言中,GoStub的作用是什么?
- A. GoStub可以对全局变量打桩
- B. GoStub可以对函数打桩
- C. GoStub不可以对类的成员方法打桩
- D. GoStub可以打动态桩,比如对一个函数打桩后,多次调用该函数会有不同的行为
简单介绍一下Golang。
谷歌开发的一种系统编程语言。它具有内置的垃圾收集机制并支持并发。代码可以编译成单个可执行二进制文件,不需要添加库或运行时环境即可在服务器上执行。
Golang是否可以声明一个类?
是的,Golang用一种独特的类型接口方式实现类。详情请移步:如何声明一个Golang类
Go是否支持泛型?(陷阱问题)
否,泛型是方便的,但是它们在类型系统和运行时的复杂性方面付出了代价。
从GitHub或者bitbucket导入代码的命令是什么?
go get 和 go install 命令
一个通过make()命令创建的缓冲区被分配了一块内存后。如何销毁缓冲区并收回内存?
buffer = nil
在运行时,buffer = nil将启动垃圾回收。
以下内容表示什么?(陷阱问题)
var num int(整型变量)
var prt * int(指针)
num=10(赋值10到变量num)
ptr = &num(指针指向变量num的内存地址)
切片和数组的显著差异是什么?
数组大小是固定的,切片大小不是。在运行时可以动态地增加或减少切片的大
小,但数组不可以。切片类似于链表,可以向切片push,pop数据,实现
FIFO,LIFO。使用了内置的添加、复制功能对切片操作。
cap()和len()函数的区别是什么?
len()返回切片中的元素个数。
cap()返回切片的容量即切片可以容纳的元素数量。
哈希表或哈希映射允许快速查找。GO如何实现哈希映射?(陷阱问题)
哈希表在Golang中相当于map,也就是哈希映射。
hash-table := make(map[string]string)
以下哪些函数,变量,标识符可以被导出,或者可以被外部函数调用?(陷阱问题)
var aName // private, 私有,只在函数或声明范围内可访问
var BigBro //public 公有,可导出
var 123abc // 非法
var 爱 = "love" // public 公有,可导出func (p *Person) SetEmail(email string) { // public 因为SetEmail()函数以大写字母开头p.email = email
}
func (p Person) email() string { // private 私有,因为email()函数以小写字母开头return p.email
}
Go语言的数据类型有哪些?
基本数据类型包括整型、浮点型、布尔型、字符串。复合类型有数组、切片、结构体、映射(map)、接口、通道(channel)。
你有使用过哪些Go的Web框架?
- 如Gin(轻量且高性能)、Echo(强调速度和易用性)、Beego(支持MVC架构)。
如何防止常见的安全漏洞?
- 防范SQL注入(使用预编译SQL)、防XSS(HTML编码)、防CSRF(使用token验证)。
相关文章:

[面试]-golang基础面试题总结
文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**:Go中new和make的区别 Channel什么是 Channel 的方向性?如何对 Channel 进行方向限制?Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…...

【案例】泛微.齐业成助力北京中远大昌汽车实现数电票全流程管理
中远大昌统一发票共享平台上线三个多月以来,实现: 5000份 60000元 发票开具 成本节约 客户简介及需求分析 北京中远大昌汽车服务有限公司(以下简称“中远大昌”)成立于2002年,是中远海运集团所属香远(北…...

微软安全文章合集
说明:文章来自微软很多年前旧帖,有用的部分拿去,没用的就忽略吧,另外提一句,微软会清理文章,很多我收藏的帖子都无法查看了,所以收藏的最好办法是,用word复制粘贴下来保存到云盘&…...

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜
本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址:https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路…...

鸿蒙主流路由详解
鸿蒙主流路由详解 Navigation Navigation更适合于一次开发,多端部署,也是官方主流推荐的一种路由控制方式,但是,使用起来入侵耦合度高,所以,一般会使用HMRouter,这也是官方主流推荐的路由 Navigation官网地址 个人源码地址 路由跳转 第一步-定义路由栈 Provide(PageInfo) pag…...

C#构建一个简单的循环神经网络,模拟对话
循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络模型。与传统的前馈神经网络不同,RNN具有内部记忆能力,可以捕捉到序列中元素之间的依赖关系。这种特性使得RNN在自然语言处理、语音识别、时间序列预…...

Linux上安装单机版Kibana6.8.1
1. 下载安装包 kibana-6.8.1-linux-x86_64.tar.gz 链接:https://pan.baidu.com/s/1b4kION9wFXIVHuWDn2J-Aw 提取码:rdrc 2. Kibana启动不能使用root用户,使用ES里创建的elsearch用户,进行赋权: chown -R elsearch:els…...

短视频矩阵矩阵,矩阵号策略
随着数字媒体的迅猛发展,短视频平台已经成为企业和个人品牌推广的核心渠道。在这一背景下,短视频矩阵营销策略应运而生,它通过高效整合和管理多个短视频账号,实现资源的最优配置和营销效果的最大化。本文旨在深入探讨短视频矩阵的…...

Rust 力扣 - 2266. 统计打字方案数
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题可以先求按了多少次相同连续的按钮,所有的连续相同按钮表示的方案数的乘积就是本题答案 我们的关键问题就转换成了按n个连续相同按钮表示的方案数 设f(i)表示按i个连续相同按钮表示的方案数 如…...

【大数据技术与开发实训】携程景点在线评论分析
景点在线评论分析 题目要求实验目标技术实现数据采集获取所有相关景点页面的 URL获取所有相关景点对应的 poiId 及其他有用信息通过 poiId 获取所有景点的全部评论数据采集结果 数据预处理景点信息的数据预处理查看数据基本信息缺失值处理 用户评论的数据处理缺失值处理分词、去…...

46.坑王驾到第十期:vscode 无法使用 tsc 命令
点赞收藏加关注,你也能住大别墅! 一、问题重现 上一篇帖子记录了我昨天在mac上安装typescript及调试的过程。今天打开vscode准备开干的时候,发现tsc命令又无法使用了,然后按照昨天的方法重新安装调试后又能用了,但是关…...

postman 调用 下载接口(download)使用默认名称(response.txt 或随机名称)
官网地址:https://www.postman.com 介绍 Postman 是一款流行的 API 开发和测试工具,用于发送 HTTP 请求、测试接口、调试服务器响应以及进行 API 文档管理。它支持多种请求类型(如 GET、POST、PUT、DELETE 等),并且功能…...

单片机_简单AI模型训练与部署__从0到0.9
IDE: CLion MCU: STM32F407VET6 一、导向 以求知为导向,从问题到寻求问题解决的方法,以兴趣驱动学习。 虽从0,但不到1,剩下的那一小步将由你迈出。本篇主要目的是体验完整的一次简单AI模型部署流程&#x…...

对撞双指针(七)三数之和
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...

【Ubuntu24.04】服务部署(虚拟机)
目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…...

timm库加载的模型可视化
在深度学习中,模型的可视化有助于了解模型的结构和层级关系。以下是几种方式来可视化使用 timm 库加载的模型: 打印模型结构 torch.nn.Module 的子类(包括 timm 的模型)可以通过 print() 查看其结构:import timm# 加…...

服务限流、降级、熔断-SpringCloud
本文所使用的组件:Nacos(服务中心和注册中心)、OpenFeign(服务调用)、Sentinel(限流、降级)、Hystrix(熔断) 项目结构: service-provider:提供服…...

2024最新YT-DLP使用demo网页端渲染
2024最新YT-DLP使用demo网页端渲染 前提摘要1.使用python的fastapi库和jinjia2库进行前端渲染2.代码实现1)目录结构2)代码style.cssindex.htmlresult.htmlmain.pyrun.py 3)运行测试命令端运行 3.项目下载地址 前提摘要 2024最新python使用yt…...

《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍
经过近一周的USART学习,我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑,只有掌握了通信技术,单片机才能与外界交互,展现出丰富多彩的功能,变得更加强大和实用。 单片机最基础的“语言”是二进制。可惜&am…...

wireshark使用lua解析自定义协议
wireshark解析自定义协议 1.自定义的lua放入路径2.修改init.lua2.1 开启lua2.2 init.lua文件最后加入自己的lua文件位置,这里需要确保与自己的文件名相同 3.编写lua4.编写c抓包5.wireshark添加自定义协议如何加调试信息 1.自定义的lua放入路径 一般是自己软件的安装…...

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容
参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…...

Qt实现可拖拽的矩形
之前项目上需要用Qt来绘制可拖拽改变形状的矩形。看了Qt Graphics相关的内容,虽然对Qt怎么添加图元的有了些了解,但是具体如何实现拖拽效果,一时也没有什么好的想法。还好网上有人分享的例子,很受启发。后来又回顾了一下这部分的代…...

CentOS:A服务器主动给B服务器推送(上传),B服务器下载A服务器文件(下载)
Linux:常识(bash: ip command not found )_bash: ip: command not found-CSDN博客 rsync 中断后先判断程序是否自动重连:ps aux | grep rsync 查看目录/文件是否被使用(查询线程占用):lsof /usr/local/bin/mongodump/.B_database1.6uRCTp 场景:MongoDB中集合非常大需要…...

Oracle 执行计划查看方法汇总及优劣对比
在 Oracle 数据库中,查看执行计划是优化 SQL 语句性能的重要工具。以下是几种常用的查看执行计划的方法及其优劣比较: 1. 使用 EXPLAIN PLAN FOR 和 DBMS_XPLAN.DISPLAY 方法 执行 EXPLAIN PLAN FOR 语句: EXPLAIN PLAN FOR SELECT * FROM …...

TCL大数据面试题及参考答案
Mysql 索引失效的场景 对索引列进行运算或使用函数:当在索引列上进行数学运算、函数操作等,索引可能失效。例如,在存储年龄的列上建立了索引,若查询语句是 “SELECT * FROM table WHERE age + 1 = 20”,这里对索引列 age 进行了加法运算,数据库会放弃使用索引而进行全表扫…...

九、FOC原理详解
1、FOC简介 FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最佳选择…...

vue页面成绩案例(for渲染表格/删除/添加/统计总分/平均分/不及格显红色/输入内容去首尾空格trim/输入内容转数字number)
1.使用v-if 和v-else 完成<tbody>标签的条件渲染 2.v-for完成列表渲染 3.:class完成分数标红的条件控制 删哪个就传哪个的id,基于这个id去过滤掉相同id的项,把剩下的项返回 a标签的默认点击事件会跳转 这里要禁止默认事件 即使用click.provent 就…...

STM32编程小工具FlyMcu和STLINK Utility 《通俗易懂》破解
FlyMcu FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。 注意:STM32 芯片的 ISP 下载,只能使用串口1(USART1),对应的串口…...

Centos使用docker搭建Graylog日志平台
日志管理系统有很多,比如ELK,Graylog,LokiGrafanaPromtail 适用场景: 1.如果需求复杂,服务器资源不受限制,推荐使用ELK(Logstash Elasticsearch Kibana)方案; 2.如果需求仅是将…...

自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例
Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析:…...