当前位置: 首页 > news >正文

深信服golang面经

在这里插入图片描述

for range 中赋值的变量,这个变量指向的是真实的地址吗,还是临时变量

不是真实地址,是临时变量

package mainimport "fmt"func main() {slice := []int{4, 2, 3}for _, v := range slice {fmt.Println(v, &v) // 这里的 v 是临时变量}for i := range slice{fmt.Println(i, &i)fmt.Println(slice[i], &slice[i])}fmt.Println("sjhdjaskhdjkashdkas")for _, v := range slice {fmt.Println(v, &v) // 这里的 v 是临时变量}for i := range slice{fmt.Println(i, &i)fmt.Println(slice[i], &slice[i])}
}

如果在for range里面有一个函数,这个函数需要传一个指针,这时候应该怎么写,这时候会进行拷贝吗

slice内容未改变, 换成另一个方法才会改变
for _,v := range x
是值拷贝

package mainimport "fmt"func main() {slice := []int{4, 2, 3}for _,v := range slice{fmt.Println(v, &v)doDubole(&v)fmt.Println(v, &v)}fmt.Println(slice)
}func doDubole(x *int){fmt.Println(*x, x)*x = *x*2
}

有用过go link?那么在什么情况下如果我不赋给一个新的变量,它也是没问题的?

在 Go 语言中,link 通常指的是链接操作,主要用于将多个包和可执行文件组合成一个单一的可执行文件。

如果我要在defer里面修改return里面的值呢?这时怎么写?

命名返回值
返回110

package mainimport "fmt"func main() {ans := get(10)fmt.Println(ans)
}
func get(x int)(ans int){defer func(){ans += 10}()ans = x*10return
}

map时协程安全吗?有什么是协程安全的?

在 Go 中,map 不是协程安全的。如果多个协程同时读写同一个 map,可能会导致数据竞争和不确定的行为。因此,使用 map 时需要确保并发安全。

协程安全的解决方案:

  1. 使用 sync.Mutexsync.RWMutex

    • 通过互斥锁确保对 map 的访问是安全的。
    var mu sync.Mutex
    m := make(map[string]int)func safeWrite(key string, value int) {mu.Lock()m[key] = valuemu.Unlock()
    }func safeRead(key string) int {mu.Lock()value := m[key]mu.Unlock()return value
    }
    
  2. 使用 sync.Map

    • Go 提供了一个内置的并发安全的 map 类型 sync.Map,适合并发读写。
    var m sync.Map// 存储值
    m.Store("key", 42)// 读取值
    value, ok := m.Load("key")
    
  3. 使用通道 (Channels)

    • 通过通道来同步对数据的访问,而不是直接操作 map
    type request struct {key   stringvalue intreply chan int
    }func mapHandler(requests <-chan request) {m := make(map[string]int)for req := range requests {m[req.key] = req.valuereq.reply <- m[req.key]}
    }
    

总结:

  • map 在并发环境下不安全。
  • 使用互斥锁、sync.Map 或通道可以实现协程安全。

channel有缓冲区和无缓冲区的区别?

无缓冲:必须有人接收才能发送,需要保证顺序性
在这里插入图片描述
以下是有缓冲区和无缓冲区通道的实际应用场景示例。

1. 有缓冲区的通道:任务队列

在一个工作池中,多个工作者从一个任务队列中获取任务。使用有缓冲区的通道可以存储一定数量的任务,提高效率。

package mainimport ("fmt""time"
)func worker(id int, tasks <-chan int) {for task := range tasks {fmt.Printf("工作者 %d 处理任务 %d\n", id, task)time.Sleep(time.Second) // 模拟任务处理时间}
}func main() {tasks := make(chan int, 5) // 创建一个缓冲区为 5 的通道// 启动多个工作者for i := 1; i <= 3; i++ {go worker(i, tasks)}// 发送任务for i := 1; i <= 10; i++ {fmt.Printf("发送任务 %d\n", i)tasks <- itime.Sleep(500 * time.Millisecond) // 模拟任务生成时间}close(tasks) // 关闭通道time.Sleep(5 * time.Second) // 等待所有任务完成
}

2. 无缓冲区的通道:同步信号

在两个 goroutine 之间使用无缓冲区通道进行同步,确保一个 goroutine 在另一个完成后再继续执行。

package mainimport ("fmt"
)func main() {done := make(chan struct{}) // 创建一个无缓冲区的信号通道go func() {fmt.Println("工作者正在处理任务...")// 模拟任务处理// ...done <- struct{}{} // 发送完成信号}()// 等待工作者完成<-donefmt.Println("任务完成,主程序继续执行。")
}

总结

  • 有缓冲区的通道适用于任务队列等场景,可以提高并发性能。
  • 无缓冲区的通道适用于需要同步的场景,确保操作的顺序。

我能不能在写入channel的时候,先判断它阻不阻塞再写?

在 Go 中,无法直接检查一个通道是否会阻塞。通道的发送和接收都是阻塞操作,具体行为取决于通道的状态和接收方是否准备好。

解决方案

如果你想在写入通道之前判断是否会阻塞,可以使用非阻塞发送配合 select 语句。例如:

package mainimport ("fmt"
)func main() {ch := make(chan int, 1) // 创建一个缓冲通道,容量为 1// 先尝试发送select {case ch <- 42: // 非阻塞发送fmt.Println("写入成功")default:fmt.Println("通道已满,写入阻塞")}// 再次尝试发送select {case ch <- 99:fmt.Println("写入成功")default:fmt.Println("通道已满,写入阻塞")}// 从通道读取值value := <-chfmt.Println("读取值:", value)
}

关键点:

  1. select 语句:允许你进行非阻塞操作。
  2. default 分支:在通道不能发送或接收时执行,避免阻塞。

通过这种方式,你可以在写入通道之前判断通道的状态,从而避免阻塞。

mutex是个悲观锁还是乐观锁,乐观锁和悲观锁的区别?

Mutex 是悲观锁,适用于高冲突的场景。
乐观锁 适用于低冲突的场景,减少了加锁带来的性能开销。

需要知道一个goroutine里面的一个函数是否执行成功还是失败,应该怎么写

要在一个 goroutine 中检查一个函数是否执行成功,可以使用通道(channel)来传递结果或错误信息。以下是一个示例,演示如何实现这一点:

示例代码

package mainimport ("errors""fmt""time"
)func doWork(resultChan chan<- string, errChan chan<- error) {// 模拟一些工作time.Sleep(2 * time.Second)// 假设工作成功,返回结果// resultChan <- "工作成功"// 假设工作失败,返回错误errChan <- errors.New("工作失败")
}func main() {resultChan := make(chan string)errChan := make(chan error)go doWork(resultChan, errChan)select {case result := <-resultChan:fmt.Println("结果:", result)case err := <-errChan:fmt.Println("错误:", err)case <-time.After(3 * time.Second): // 设置超时fmt.Println("操作超时")}
}

关键点

  1. 通道

    • 使用 resultChan 来传递成功结果。
    • 使用 errChan 来传递错误信息。
  2. select 语句

    • 通过 select 等待通道中的结果或错误。
    • 如果有结果返回,则打印结果;如果有错误返回,则打印错误。
  3. 超时处理

    • 可以使用 time.After 设置超时处理,避免等待太久。

通过这种方式,你可以有效地在 goroutine 中检查函数的执行状态。

了解过Go的内存逃逸吗?

是的,Go 的内存逃逸(Escape Analysis)是一个重要的功能,用于优化内存分配和管理。

什么是内存逃逸?

内存逃逸指的是在 Go 中某个变量的生命周期超出了其原本的作用域。这意味着该变量不能在栈上分配,而必须在堆上分配,以确保在函数返回后仍然能够访问。

如何工作?

  1. 栈 vs 堆

    • :用于存储局部变量,分配和释放速度快,但生命周期受限于函数调用。
    • :用于动态分配内存,生命周期更长,但分配和释放速度较慢。
  2. 逃逸分析

    • Go 编译器会在编译时分析变量的使用情况,判断它是否会“逃逸”到堆上。
    • 如果变量的地址被返回,或在函数外部使用,它将被分配到堆上。

示例

以下是一个简单的例子,展示了内存逃逸的情况:

package mainimport "fmt"type Person struct {Name string
}func NewPerson(name string) *Person {return &Person{Name: name} // 逃逸到堆
}func main() {p := NewPerson("Alice")fmt.Println(p.Name)
}

在上面的代码中,NewPerson 函数返回一个指向 Person 结构体的指针,这导致 Person 实例被分配到堆上,因为它的生命周期超出了函数的作用域。

逃逸分析的好处

  • 性能优化:通过避免不必要的堆分配,提升性能。
  • 内存管理:减少内存泄漏的风险,帮助开发者更好地管理内存。

如何检查逃逸分析

可以使用 go build -gcflags -m 命令来查看编译器的逃逸分析信息:

go build -gcflags -m yourfile.go

这将显示哪些变量逃逸到堆上,以及相关的分析信息。

总结

内存逃逸分析是 Go 的一项重要特性,帮助编译器优化内存分配,提高程序性能。理解内存逃逸有助于编写更高效的 Go 代码。

场景:1GB文件,每个单词不超过16字节,在1M的内存里,得到出现频率最高的100个单词

由于文件大小为1GB,而内存的大小只有1MB,因此不能一次把所有的词读入到内存中去处理,可以采用分治的方法进行处理:把一个文件分解为多个小的子文件,从而保证每个文件的大小都小于1MB,进而可以直接被读取到内存中处理。

第一步:使用多路归并排序对大文件进行排序,这样相同的单词肯定是挨着的

第二步:
① 初始化一个 100 个节点的小顶堆,用于保存 100 个出现频率最多的单词
② 遍历整个文件,一个单词一个单词的从文件中取出来,并计数
③ 等到遍历的单词和上一个单词不同的话,那么上一个单词及其频率如果大于堆顶的词的频率,那么放在堆中,否则不放

最终,小顶堆中就是出现频率前 100 的单词了

多路归并排序对大文件进行排序的步骤如下:
① 将文件按照顺序切分成大小不超过 512KB 的小文件,总共 2048 个小文件
② 使用 1MB 内存分别对 2048 个小文件中的单词进行排序
③ 使用一个大小为 2048 大小的堆,对 2048 个小文件进行多路排序,结果写到一个大文件中

json和protobuf的区别

JSON(JavaScript Object Notation)和 Protobuf(Protocol Buffers)是两种常用的数据序列化格式。它们各自有不同的特点和适用场景。以下是它们之间的主要区别:

1. 数据格式

  • JSON

    • 人类可读的文本格式,易于调试和查看。
    • 数据使用键值对的结构表示,支持基本数据类型(字符串、数字、布尔值、数组和对象)。
  • Protobuf

    • 二进制格式,不易于人类直接阅读。
    • 需要预先定义数据结构(消息格式)并编译生成代码来处理数据。

2. 性能

  • JSON

    • 解析和序列化速度较慢,因为它是文本格式。
    • 数据体积相对较大,尤其是在传输大量数据时。
  • Protobuf

    • 解析和序列化速度快,效率高。
    • 数据体积较小,适合网络传输和存储。

3. 可扩展性

  • JSON

    • 结构灵活,不需要预定义模式,可以随意添加字段,但对版本控制支持较差。
  • Protobuf

    • 需要预定义结构,但支持向后兼容和向前兼容,可以安全地添加或删除字段。

4. 语言支持

  • JSON

    • 几乎所有编程语言都支持 JSON 解析和生成。
  • Protobuf

    • 支持多种编程语言,但需要使用特定的工具生成代码。

5. 使用场景

  • JSON

    • 适用于配置文件、Web API(如 RESTful API)、轻量级数据传输等场景。
  • Protobuf

    • 适用于高性能网络通信、大规模数据存储、微服务架构等场景。

总结

  • JSON:易读、灵活,但性能较低,适合简单的应用场景。
  • Protobuf:高效、可扩展,适合对性能和数据体积有较高要求的应用场景。

Go怎么调试的,会Goland远程调试吗?

  1. 安装dlv
    在Linux服务器上执行:go install github.com/go-delve/delve/cmd/dlv@latest,安装dlv调试工具,因为是go编译的可执行程序,可以随意复制,其他环境甚至都可以不安装go语言环境。

  2. 按照goland提示添加远程调试

  3. 添加编译配置

  4. 在服务器运行
    将可执行程序上传到服务器,并使用dlv运行:
    dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./test001_linux

带命令行参数,在可执行程序后面带上 --,再后面就是命令行参数:

dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./test001_linux – -s 123

  1. 然后再window的goland上运行调试

算法:查找字符串子串,有哪些算法?

暴力匹配:简单,但效率低。
KMP:高效,适合单个子串匹配。O(m+n)
部分匹配表(LPS 数组):

在开始匹配之前,KMP 算法首先构建一个部分匹配表(Longest Prefix Suffix,LPS)。
LPS 数组的每个元素 lps[i] 表示子串 pattern[0…i] 中的最长相等前后缀的长度。
LPS 数组可以帮助我们在匹配失败时,不必回溯主串的指针,而是根据已匹配的部分直接跳到下一个可能匹配的位置。
匹配过程:

使用两个指针,i 指向主串,j 指向子串。
逐个比较主串和子串的字符:
如果字符匹配,两个指针同时向后移动。
如果不匹配且 j > 0,则根据 LPS 数组调整子串指针 j,而不移动主串指针 i。
如果 j 达到子串的长度,说明找到匹配,记录匹配位置。

相关文章:

深信服golang面经

for range 中赋值的变量&#xff0c;这个变量指向的是真实的地址吗&#xff0c;还是临时变量 不是真实地址&#xff0c;是临时变量 package mainimport "fmt"func main() {slice : []int{4, 2, 3}for _, v : range slice {fmt.Println(v, &v) // 这里的 v 是临…...

基于 Netty + SpringBoot + Vue 的高并发实时聊天系统设计与实现

一、系统架构设计 1.1 整体架构图 ------------------ WebSocket (wss) ------------------ Netty TCP ------------------ | Vue前端 | <-------------------------> | SpringBoot网关 | <------------------> | Netty服务集…...

根据当前日期计算并选取上一个月和上一个季度的日期范围,用于日期控件的快捷选取功能

代码如下&#xff1a; <el-date-picker v-model"value" type"monthrange" align"right" unlink-panels range-separator"至"start-placeholder"开始月份" end-placeholder"结束月份" :picker-options"pic…...

Spring Boot 使用 jasypt配置明文密码加密

引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.4</version> </dependency>添加配置 jasypt:encryptor:password: pssw0rd&Hubt2ec…...

ubuntu下docker安装mongodb-支持单副本集

1.mogodb支持事务的前提 1) MongoDB 版本&#xff1a;确保 MongoDB 版本大于或等于 4.0&#xff0c;因为事务支持是在 4.0 版本中引入的。 2) 副本集配置&#xff1a;MongoDB 必须以副本集&#xff08;Replica Set&#xff09;模式运行&#xff0c;即使是单节点副本集&#x…...

科技赋能,开启现代健康养生新潮流

在科技与生活深度融合的当下&#xff0c;健康养生也迎来了全新的打开方式。无需传统医学的介入&#xff0c;借助现代科学与智能设备&#xff0c;我们能以更高效、精准的方式守护健康。​ 饮食管理步入精准化时代。利用手机上的营养计算 APP&#xff0c;录入每日饮食&#xff0…...

《安徽日报》聚焦珈和科技AI创新:智慧虫情测报护航夏粮提质丰产

5月7日&#xff0c;《安徽日报》焦点新闻版块以《高科技助力田管&#xff0c;确保夏粮丰收——为4300多万亩小麦守好防线》为题&#xff0c;深度报道了农业科技在夏粮生产中的关键作用。其中&#xff0c;珈和科技自主研发的AI虫情测报一体机作为绿色防控、农业智慧化的标杆被重…...

企业级 Go 多版本环境部署指南-Ubuntu CentOS Rocky全兼容实践20250520

&#x1f6e0;️ 企业级 Go 多版本环境部署指南-Ubuntu / CentOS / Rocky 全兼容实践 兼顾 多版本管理、安全合规、最小权限原则与 CI/CD 可复现性&#xff0c;本指南以 Go 官方 toolchain 为主&#xff0c;结合 asdf 实现跨语言统一管理&#xff0c;并剔除已过时的 GVM。支持 …...

MCP 协议传输机制大变身:抛弃 SSE,投入 Streamable HTTP 的怀抱

在技术的江湖里&#xff0c;变革的浪潮总是一波接着一波。最近&#xff0c;模型上下文协议&#xff08;MCP&#xff09;的传输机制就搞出了大动静&#xff0c;决定和传统的服务器发送事件&#xff08;SSE&#xff09;说拜拜&#xff0c;转身拥抱 Streamable HTTP&#xff0c;这…...

Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序

Windows 系统上的 Docker 安装与使用指南 1. Windows 上配置 Docker 检查系统要求&#xff1a;使用 64 位 Windows 10/11&#xff0c;BIOS 已启用硬件虚拟化&#xff08;VT-x/AMD-V&#xff09;。Windows 版本最好更新到 2004 及以上&#xff08;内部版本19041&#xff09;&am…...

CBCharacteristic:是「特征」还是「数据通道」?

目录 名词困惑&#xff1a;两种中文译法的由来官方定义 & 开发者视角乐高类比&#xff1a;文件夹与文件智能手表实例&#xff1a;Characteristic 长什么样&#xff1f;iOS 代码实战&#xff1a;读 / 写 / 订阅小结 & Best Practice 1. 名词困惑&#xff1a;为什么有两…...

【JavaEE】多线程

线程 在Java中&#xff0c;鼓励多线程编程。进程可以满足并发编程&#xff0c;但是效率不高&#xff08;创建、销毁、调度时间都比较长&#xff0c;这些都消耗在申请资源上了&#xff09;&#xff0c;而线程就不一样。 线程也叫“轻量级进程”&#xff0c;创建、销毁、调度都更…...

docker- Harbor 配置 HTTPS 协议的私有镜像仓库

Harbor通过配置 HTTPS 协议&#xff0c;可以确保镜像传输的安全性&#xff0c;防止数据被窃取或篡改。本文将详细介绍如何基于 Harbor 配置 HTTPS 协议的私有镜像仓库。 1.生成自建ca证书 [rootdocker01 ~]# mkdir -p /liux/softwares/harbor/certs/custom/{ca,server,client…...

[SpringBoot]Spring MVC(5.0)----留言板

Spring留言板实现 预期结果 可以发布并显示点击提交后&#xff0c;显示并清除输入框并且再次刷新后&#xff0c;不会清除下面的缓存 约定前后端交互接口 Ⅰ 发布留言 url : /message/publish . param(参数) : from,to,say . return : true / false . Ⅱ 查询留言 url : /messag…...

Jules 从私有预览阶段推向全球公测

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

vLLM框架高效原因分析

vLLM框架在模型推理中以高效出名&#xff0c;主要基于以下核心原理和技术优化&#xff0c;这些设计使其在处理大语言模型时显著提升性能&#xff1a; 一、PagedAttention&#xff1a;动态显存管理技术 vLLM的核心创新在于PagedAttention&#xff0c;灵感源自操作系统的虚拟内存…...

【Git】常用命令大全

以下是 Git 的常用命令大全&#xff0c;分为几个常见类别&#xff0c;便于理解和使用&#xff1a; 1. 初始化与克隆 初始化本地仓库&#xff1a;git init克隆远程仓库到本地&#xff1a;git clone <repository_url> 2. 添加与提交 添加指定文件到暂存区&#xff1a;git…...

pycharm无需科学上网工具下载插件的解决方案

以下是两种无需科学上网即可下载 PyCharm 插件的解决思路&#xff1a; 方法 1&#xff1a;设置 PyCharm 代理 打开 PyCharm选择菜单&#xff1a;File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理设置中进行如下配置&#xff1a; 代理地…...

学习threejs,使用Physijs物理引擎,使用DOFConstraint自由度约束,模拟小车移动

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...

仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑

幽蓝君发现一个问题&#xff0c;仓颉开发语言距离发布马上一年了&#xff0c;一些知名App已经使用仓颉开发了许多功能&#xff0c;但是网络上关于仓颉开发语言的教程少之又少&#xff0c;系统性的教程更是没有&#xff0c;仓颉官网的文档也远远不如ArkTS详尽。 现阶段对于想学…...

[Git] 初识 Git 与安装入门

告别文件噩梦&#xff1a;初识 Git 与安装入门 嘿&#xff0c;朋友&#xff01;不知道你是不是也遇到过这样的情况&#xff1a;你在写一份重要的文档、报告&#xff0c;或者更常见的&#xff0c;一段代码时&#xff0c;为了安全起见&#xff0c;怕改错了回不去&#xff0c;或者…...

海康威视摄像头C#开发指南:从SDK对接到安全增强与高并发优化

一、海康威视SDK核心对接流程​​ 1. ​​开发环境准备​​ ​​官方SDK获取​​&#xff1a;从海康开放平台下载最新版SDK&#xff08;如HCNetSDK.dll、PlayCtrl.dll&#xff09;。​​依赖项安装​​&#xff1a;确保C运行库&#xff08;如vcredist_x86.exe&#xff09;与S…...

大语言模型 14 - Manus 超强智能体 开源版本 OpenManus 上手指南

写在前面 Manus 是由中国初创公司 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体&#xff08;AI Agent&#xff09;&#xff0c;旨在实现“知行合一”&#xff0c;即不仅具备强大的语言理解和推理能力&#xff0c;还能自主执行复杂任务&#xff0c;直接交付完整成…...

使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]

以下能帮助你可以使用任何开发语言&#xff0c;在任何平台都能使用 LibreOffice 实现 Word、Excel、PPT 等文档的自动转换&#xff0c;目前展示在 ASP.NET Core 中为 PDF的实战案例&#xff0c;其他的文档格式转换逻辑同理。 &#x1f4e6; 1. 安装 LibreOffice &#x1f427;…...

CentOS Stream 9 中部署 MySQL 8.0 MGR(MySQL Group Replication)一主两从高可用集群

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《MySQL技术精粹》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、MySQL 8.0 中的高可用方案 2、适用场景 二、环境准备 1、系统环境说明…...

软考中级软件设计师——计算机网络篇

一、计算机网络体系结构 1.OSI七层模型 1. 物理层&#xff08;Physical Layer&#xff09; 功能&#xff1a;传输原始比特流&#xff08;0和1&#xff09;&#xff0c;定义物理介质&#xff08;如电缆、光纤&#xff09;的电气、机械特性。 关键设备&#xff1a;中继器&#…...

RK3568 OH5.1 源码编译及问题

安装编译器和二进制工具 在源码根目录下执行prebuilts脚本&#xff0c;安装编译器及二进制工具。 bash build/prebuilts_download.sh在源码根目录执行如下指令安装hb编译工具&#xff1a; python3 -m pip install --user build/hb使用build.sh脚本编译源码 进入源码根目录&…...

【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题

一、razor的echo程序 根据对 yuanrongxi/razor 仓库的代码和 echo 测试程序相关实现的分析,下面详细解读 echo 程序中 RTCP sender report(SR)、receiver report(RR)回显的问题及项目的解决方式。 1. 问题背景 在 RTP/RTCP 体系下,SR(Sender Report)由发送端周期性发…...

leetcode hot100:三、解题思路大全:哈希(两数之和、字母异位词分组、最长连续序列)、双指针(移动零、盛最多水的容器、三数之和、接雨水)

哈希 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返…...

MySQL 8.0 OCP 1Z0-908 161-170题

Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…...

onlyoffice 源码 调试说明 -ARM和x86双模式安装支持

很多用户在调试onlyoffice源码最大的问题是如何搭建环境,这个难度很高,下面提供一键安装的方式,让普通用户也能快速调试源码。 OnlyOffice Document Server 基于源码运行的容器调试模式&#xff0c;凭借 Docker 容器化技术的核心优势&#xff0c;为开发者提供了跨平台、高兼容性…...

workflow:高效的流式工作架构

引言 workflow是sougou的一款开源框架 主要是以请求回应的模式解决各自网络/IO任务而发明的 一.workflow的任务流 1.workflow都封装了哪些任务流 以请求回应的模式来解释 ① 网络层 服务端 在服务端的request 相当于发送了一个获取客户端请求的请求&#xff0c;response相当…...

音视频之H.265/HEVC速率控制

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...

jsmpeg+java+ffmpeg 调用摄像头RTSP流播放

原理就是这样&#xff0c;明白吧。本次用springboot netty起这个2个服务&#xff0c;执行拉代码执行即可 <!-- netty --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.68.Final</ver…...

深度剖析ZooKeeper

1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务&#xff0c;广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…...

Zookeeper 集群安装与脚本化管理详解

安装之前:先关闭所有服务器的防火墙&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; systemctl stop firewalld 关闭防火墙 systemctl disable firewalld 开机不启动防火…...

第10天-Python操作MySQL数据库全攻略:从基础连接到高级应用

一、环境准备 1. 安装MySQL驱动 bash 复制 下载 # 官方推荐驱动 pip install mysql-connector-python# 或使用PyMySQL(兼容性更好) pip install pymysql 2. 创建测试数据库 sql 复制 下载 CREATE DATABASE python_db; USE python_db;CREATE TABLE users (id INT AU…...

Spring Cloud Gateway深度解析:原理、架构与生产实践

文章目录 前言一、概述二、核心架构设计及设计原理2.1 分层架构模型网络层&#xff08;I/O模型&#xff09;核心处理层 2.2 核心组件协作流程路由定位阶段过滤器执行阶段 2.3 响应式编程模型实现Reactor上下文传递背压处理机制 2.4 动态路由设计原理2.5 异常处理体系2.6 关键路…...

Trae 04.22版本深度解析:Agent能力升级与MCP市场对复杂任务执行的革新

我正在参加Trae「超级体验官」创意实践征文&#xff0c;本文所使用的 Trae 免费下载链接&#xff1a;Trae - AI 原生 IDE 目录 引言 一、Trae 04.22版本概览 二、统一对话体验的深度整合 2.1 Chat与Builder面板合并 2.2 统一对话的优势 三、上下文能力的显著增强 3.1 W…...

股指期货模型,简单易懂的套利策略

在股指期货投资领域&#xff0c;有不少实用的模型和策略&#xff0c;今天咱们就用大白话来唠唠其中几个重要的概念。 一、跨期套利&#xff1a;合约间的“差价游戏” 跨期套利简单来说&#xff0c;就是投资者以赚取期货合约之间的价差为目的&#xff0c;在同一个期货品种的不…...

MySQL 故障排查与生产环境优化

目录 1. MySQL单实例故障排查 2. MySQL 主从故障排查 3. MySQL 优化 3.1 硬件方面 3.2 MySQL 配置文件 3.3 SQL 方面 1. MySQL单实例故障排查 &#xff08;1&#xff09; 故障现象1 ERROR 2002 (HY000): Cant connect to local MySQL server through socket /data/mysql…...

Java泛型 的详细知识总结

一、泛型的核心作用 类型安全&#xff1a;在编译期检查类型匹配&#xff0c;避免运行时的ClassCastException。代码复用&#xff1a;通过泛型逻辑统一处理多种数据类型。消除强制转换&#xff1a;减少显式的类型转换代码。 二、泛型基础语法 1. 泛型类/接口 定义&#xff1a…...

k8s 配置 Kafka SASL_SSL双重认证

说明 kafka提供了多种安全认证机制&#xff0c;主要分为SASL和SSL两大类。 SASL&#xff1a; 是一种身份验证机制&#xff0c;用于在客户端和服务器之间进行身份验证的过程&#xff0c;其中SASL/PLAIN是基于账号密码的认证方式。 SSL&#xff1a; 是一种加密协议&#xff0c;…...

电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式

一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下&#xff0c;电商交易的复杂性与日俱增&#xff0c;传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案&#xff0c;通过构建“主账户子账户”的虚拟账户…...

从混乱到高效:我们是如何重构 iOS 上架流程的(含 Appuploader实践)

从混乱到高效&#xff1a;我们是如何重构 iOS 上架流程的 在开发团队中&#xff0c;有一类看不见却至关重要的问题&#xff1a;环境依赖。 特别是 iOS App 的发布流程&#xff0c;往往牢牢绑死在一台特定的 Mac 上。每次需要发版本&#xff0c;都要找到“那台 Mac”&#xff…...

01 基本介绍及Pod基础

01 查看各种资源 01-1 查看K8s集群的内置资源 [rootmaster01 ~]# kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 …...

DAY31-文件的规范拆分和写法

知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 &#xff08;一&#xff09;文件拆分 思考&#xff1a;如何把一个文件&#xff0c;拆分成多个具有着独立功能的文件&#xff0c;然后通过import的方式&#xff0c;来调用这些文件。这样具有几个…...

[创业之路-369]:企业战略管理案例分析-9-战略制定-差距分析的案例之华为

一、综合案例 在战略制定中&#xff0c;华为通过差距分析明确战略方向&#xff0c;以应对市场挑战和实现长期发展目标。 以下为具体案例与分析&#xff1a; 1、案例背景 华为在通信设备领域崛起过程中&#xff0c;始终将差距分析作为战略制定的核心环节。面对国际竞争对手&…...

【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动

文章目录 前言一、HUAWEI MateBook Fold 非凡大师&#xff08;一&#xff09;非凡设计&#xff08;二&#xff09;非凡显示&#xff08;三&#xff09;非凡科技&#xff08;四&#xff09;非凡系统&#xff08;五&#xff09;非凡体验 二、HUAWEI MateBook Pro三、预热&#xf…...

深入理解Redis Cluster:架构、原理与实践

Redis 是一个高性能的键值存储数据库&#xff0c;广泛应用于缓存、会话存储、消息队列等场景。随着数据量和并发量的增长&#xff0c;单机 Redis 可能面临性能瓶颈和单点故障问题。为了解决这些问题&#xff0c;Redis 提供了 Redis Cluster&#xff0c;一种分布式解决方案&…...