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

腾讯四面面经

说明

是的,没听错,确实是腾讯四面,而且是技术面。先声明下,这个面经是帮朋友整理的,都是真实的面经,不得不说,四面确实是有强的的,接下来让我们一起看下

面试部门:s3,投递渠道:腾讯官网

IOC控制反转

分析:

控制反转(将控制权反转给容器),通过 DI 依赖注入实现

回答:

Spring IOC(Inversion of control) 即 控制反转,时 spring 框架的核心概念之一。IOC是一种思想,它通过依赖注入 DI(Dependency Injection) 实现,IOC 将对象的控制权(创建和管理)交给容器负责,而不是由程序员来控制

控制:指的是控制对象的创建, 反转是:将创建对象的工作反转给容器,让容器来帮我们创建

依赖注入 DI 是 IOC 的实现方式,比如我们之前想要创建对象,需要 new ,传参... DI 就是,提前将 对象的属性和依赖配置在配置文件中,在我们需要的地方直接注入对象即可,不需要我们手动去new,传参,Spring容器直接帮我们干好了这个事儿

依赖注入的方式有:构造器注入,setter注入,接口注入

Redis怎么实现分布式锁 

分析:

使用 set ex nx + lua 脚本使用

回答:

在 Redis 中实现分布式锁的常见方法是通过 set ex nx 命令 + lua 脚本组合使用。确保多个客户端不会获得同一个锁的同时,也保证了安全解锁和意外情况下锁的自动释放

ex:设置过期时间,单位是 s nx:仅当键不存在时才设置

加锁:SET lock_key uniqueValue EX expire_time NX

解锁:使用 lua 脚本,先通过 get 获取 key 的 value 判断锁是否是自己加的,如果是则 del

之所以要有 uniqueValue 是为了防止被别的客户端给释放了

Redis 单点加锁故障问题 和 RedLock 红锁解决方案

1.redis 如何实现分布式锁 -> setnx

2.setnx 有什么缺点,替代方案 -> redisson

缺点就是锁的续期问题,只能设置一个固定时间,如果未完成逻辑锁就过期了,数据就可能产生不一致

所以需要一个看门狗机制,redission 就是一个好用的方式

看门狗机制

业界出了一个看门狗机制来防止这种情况的产生。

理论很简单,在抢到锁之后,后台会有一个任务,定时向 redis 进行锁的续期。比如锁的过期时间是 30s,可以每过三分之一时长(30/3)10s 后就去 redis 重新设置过期时间为 30s。

在锁被释放的时候,就移除这个定时任务。

redission

redission是一个类库,封装了很多redis操作,便于我们使用。

其实现的分布式锁就引入了看门狗机制,具体原理和上面所述的一致,

3.setnx 和 redisson 有什么缺点 单点故障 -> redlock

单点故障问题

单台 Redis 实现分布式锁存在单点故障问题,如果采用主从读写分离架构,如果一个客户端在主节点上锁成功,但是主节点突然宕机,由于主从延迟导致从节点还未同步到这个锁,此时可能有另一个客户端抢到新晋升的主节点上的锁,此时会导致两个客户端抢到锁,产生了数据不一致。

基于这个情况,Redis 推出了 Redlock。

4.redlock 有什么缺点 实现复杂 同步问题 -> zk

 Redission 是怎么实现分布式锁的

分析:

锁的获取(setnx(加锁成功) + Lua脚本(加锁失败)),锁的续期,锁的释放(Lua脚本),可重入锁

锁的获取:setnx 成功就 setnx,不成功用 lua,因为 Redission 是可重入锁

回答:

分布式锁是Redission做的, redission 实现分布式锁 加锁(lock),解锁(unlock),续期(lock不指定时间自动续期,默认锁时间30s,每隔10s检查一下 ),防止无限续期(lock时加时间,看门狗就不会生效)

Redission 加解锁的底层是,set ex nx 和 lua 脚本

Redission 加锁 lock,解锁 unlock

Redisson是基于Redis实现的分布式锁,实际上是使用Redis的原子操作来确保多线程、多进程或多节点系统中,只有一个线程能获得锁,避免并发操作导致的数据不一致问题。

1.锁的获取:

  • Redisson使用Lua脚本,利用exists + hexists + hincrby命令来保证只有一个线程能成功设置键(表示获得锁)。

  • 同时,Redisson会通过pexpire命令为锁设置过期时间,防止因宕机等原因导致锁无法释放(即死锁问题)。

2.锁的续期:

  • 为了防止锁在持有过程中过期导致其他线程抢占锁,Redisson实现了锁自动续期的功能。持有锁的线程会定期续期,即更新锁的过期时间,确保任务没有完成时锁不会失效。

3.锁的释放:

  • 锁释放时,Redisson也是通过Lua脚本保证释放操作的原子性。利用hexists + del确保只有持有锁的线程才能释放锁,防止误释放锁的情况。

  • Lua脚本同时利用publish命令,广播唤醒其它等待的线程。

4. 可重入锁:

  • Redisson支持可重入锁,持有锁的线程可以多次获取同一把锁而不会被阻塞。具体是利用Redis中的哈希结构,哈希中的key为线程ID,如果重入则value +1,如果释放则value -1,减到0说明锁被释放了,则del锁。

lua脚本是如何保证的

我感觉这里应该是让答:Redis 是单线程,lua 脚本并不具有原子性,是 Redis 核心操作都是单线程,所以保证了 lua 脚本的原子性

底层原理应该是调用命令(源码我也没看过 -- 四面问源码很正常,这个真没办法,上强度了):

Lua 脚本中执行复杂的逻辑,超过了单个 Redis 命令的能力,例如常见基于 Redis 实现分布式锁就需要结合 Lua 脚本来实现(释放锁先get获取key的value判断锁是不是自己加的,如果是则 del)

Lua 如何使用:redis.call 调用 redis 命令,也有 if-else 这种逻辑可用

Redis 实现分布式锁,用 lua 脚本如下:

if redis.call("GET",KEYS[1]) == ARGV[1]
thenreturn redis.call("DEL",KEYS[1])
elsereturn 0
end

IO 多路复用

I/O多路复用:也常称为事件驱动I/O。在此模式中,应用程序可以同时监控多个I/O描述符(比如,socket),当任何一个I/O描述符准备好数据时,应用程序就可以对其进行处理。这可以在一个单独的进程或线程中同时处理多个I/O操作,并且不需要阻塞或轮询。select、poll、epoll都是这种模型的实现。

Select,poll,epoll 的区别

分析:

select,poll,epoll 是 IO 多路复用机制,大概是怎么工作的,扯出都是同步IO,然后具体分析原理和优缺点(特点) 然后渐进式回答,select 和 poll 一起说,然后说有什么问题,epoll 通过什么解决了这两个问题

回答:

select,poll,epoll 都是 IO 多路复用的机制,可以监听多个文件描述符,一旦某个文件描述符就绪(读就绪或者写就绪),就能够通知程序进行相应的读写操作,但他们本质上都是同步IO,因为它们都需要在事件就绪后自己进行读写操作,这个读写操作是阻塞的,而异步 IO 无需自己进行读写,异步IO的实现会负责将数据从内核空间拷贝到用户空间

  • select 和 poll 内部都是使用线性结构来存储进程关注的 socket 集合,在使用的时候,首先需要把关注的 socket 集合通过 select/poll 系统调用从用户态拷贝到内核态,然后由内核检测事件,当有网络事件发生时,内核需要遍历进程关注的 socket 集合,找到对应的 socket,并设置状态为 可读/可写,然后把整个 socket 集合从内核态拷贝到用户态,用户态还要继续便利整个 socket 集合找到可读/可写的socket,然后对其进行处理,select和poll的区别在于 scoket 集合的大小,select 限制了 socket 集合有限制,通常为 1024 ,可以调整。poll 没有限制 socket 集合的大小,可以支持任何数量 socket

  • 很明显发现,select 和 poll 的缺陷在于,当客户端越多,也就是 socket 集合越大,socket 集合的遍历和拷贝会带来很大的开销,epoll 通过两个方面解决了 select/poll 的问题

  • epoll 在内核里使用 红黑树 来关注进程所有待检测的 socket,红黑树是个高效的数据结构,增删改一般时间复杂度都是 O(logn),通过对这颗红黑树的管理,不需要像 select/poll 在每次操作时都需要传入整个 socket 集合,减少了内核和用户空间大量的数据拷贝和内存分配(需要在内核中为这些 socket 分配临时的存储空间)

  • epoll 采用事件驱动机制,内核中维护着一个链表用于记录就绪事件。它只需要把有事件发生的 socket 集合传递给应用程序,而不必像 select 和 poll 那样去轮询扫描整个 socket 集合(其中包含有事件和无事件的 socket),这极大地提高了检测效率

  • epoll 提供了 水平触发 LT,边缘触发 ET 两种模式,调用 epoll_wait 拿发生事件的 socket 时,水平触发是,每次都会返回有事件处理的 socket,边缘触发是 只会返回一次 有事件处理的 socket,如果这次返回没有处理,下次就不会返回了

epoll事件驱动,红黑树和就序列表(事件回调机制)

NIO 是怎么实现的 

首先要说明,NIO 是 Java 中创建 IO 的一种方式

我的理解(如果让我回答的话):

New IO ,大概就是 进行系统调用,然后内核创建IO线程,在堆外开辟直接内存,减少拷贝次数...

具体我也不太清楚是怎么实现的,不过我感觉只要说出来点儿沾边的,问题就不大

零拷贝原理是什么 

分析:

说出传统方式:2 次系统调用(read,write),4 次用户态和内核态切换,4 次数据拷贝

零拷贝技术:一次系统调用(sendfile),减少了两次内核/用户态切换,加上 SG-DMA 网卡技术,两次数据拷贝都不需要 CPU,都是通过 DMA 来搬运

回答:

传统文件传输的方式,需要涉及 2 次系统调用,write 和 read 函数,期间会发生 4 次用户态和内核态上下文转换和 4 次数据拷贝。而零拷贝技术的文件传输方式只需要一次系统调用,就是 sendfile,这样相比传统文件传输的方式,减少了 2 次用户态和内核态上下文切换,再加上网卡支持 SG-DMA 技术的话,数据拷贝次数只需要 2 次,就可以完成文件的传输,而且 2 次的数据拷贝过程,都不需要通过 CPU,2 次都是由 DMA 来搬运

所以零拷贝技术主要是为了提升文件传输的效率,kafka 消息队列 I/O 的吞吐量高的原因,也是因为使用了零拷贝技术(可提可不提,别给自己挖坑)。

DMADirect Memory Access,直接内存访问) 是一种硬件机制,用于在外设(如磁盘、网卡)和内存之间直接传输数据,而无需 CPU 的干预。

零拷贝这么好,为什么不全用零拷贝?

零拷贝只适用于单纯的发送文件,没办法对文件数据进行额外的加工,比如压缩,再发送之类的。

零拷贝是将数据发送到网络中的场景

CA 证书 和 签名证书,从安全性上有什么区别

这...,真没办法 我也第一次遇到

但我理解大概就是:

CA 证书,服务器私钥加密,本地服务器公钥解密,重要数据是加密传输的,涉及加解密,更安全(但是 HTTPS 的四次握手 CA 证书这里,比 JWT 多做一次加加密操作,更安全

其他的 CA 证书可以选择对传输的数据也进行加密(这里不太了解 HTTPS 实现细节),我记得是没有的)

签名证书,类似 JWT 实现,没有涉及到加密解密,只是设计哈希函数的计算,重要数据是明文传输的,可能会被盗取

JWT Token 能说一说吗?

分析:

Json Web Token 回答:

JWT(JSON Web Token)是一种用于在各方之间传递安全信息的紧凑、URL安全的令牌格式。

在用户登录后,服务器生成JWT并返回给客户端。客户端在后续请求中通过HTTP头部(通常是Authorization头)发送该JWT,服务器则验证该JWT的有效性以进行用户身份验证。

因为它的无状态性,常用于分布式系统和微服务架构中。

其结构主要包括三个部分:Header、Payload和Signature。

JWT的工作原理可以总结为以下几个步骤:

  1. Header:描述令牌的元数据,通常包含令牌的类型(即JWT)和所使用的签名算法(如HMAC SHA256)。

  2. Payload:包含声明(Claims),即传递的数据。这些数据通常包括用户信息和其他相关数据。常见的声明类型有iss(发行者)、exp(到期时间)、sub(主题)等。

  3. Signature:将Header和Payload用指定的算法进行签名,用以验证JWT的真实性和完整性。签名确保了令牌内容在传输过程中未被篡改。

JWT的优点:

  • 自包含:JWT中包含了所有必要的信息,因此在验证时不需要查询数据库,提升了性能。

  • 跨语言:由于JWT是基于JSON的,几乎所有编程语言都支持它的生成和解析。

TLS 四次握手说一下

分析:

我们就回答 HTTPS RSA 算法握手流程就好了

四次握手(中间加一个校验证书):

  1. 客户端问候(TLS 版本,支持的加密算法套件,随机数)

  2. 服务端问候(确认的 TLS 版本,确认的加密算法套件-挑了其中一个,随机数,CA签名的证书)

  • 校验证书

  1. 客户端密钥交互(发送第三个随机数,用三个随机数来生成密钥) + 开始使用加密(做摘要) + 客户端完成

  2. 服务端发送开始使用加密(做摘要) + 服务器完成

回答:

TLS 四次握手过程如下:

  • 第一次 TLS 握手,客户端向服务端发送一条 Client Hello 消息,这其中包括,客户端使用的 TLS 版本号,支持的密码套件列表,客户端生成的随机数,这个随机数是用来后面生成密钥的元素之一

  • 第二次 TLS 握手,服务端向客户端发送一条 Server Hello 消息,这其中包括,服务端确认的版本号,确认的密码套件,服务端生成的随机数。接着为了服务端为了验证自己的身份,会发送 Server Certificate,CA 签发的服务器证书,随后,服务端发送 Server Hello Done,目的是告诉客户端,我已经把东西给你了,本此握手完毕

  • 校验证书:客户端收到服务端证书后,会用本地CA公钥解密证书,来验证证书是否合法,如果合法,客户端就能拿到服务端的公钥

  • 第三次 TLS 握手,客户端再生产一个随机数,用服务端公钥加密,通过 ClientKeyExchange 消息传给服务端。服务端接收到后用私钥解密得到第二个随机数。到这里,服务端和客户端双方都有 3 个随机数,双方根据这三个随机数,根据算法生成对称密钥。生成完之后,客户端发送消息告诉服务端使用对称加密方式发送数据,并且还会对之前所有发送的数据做个摘要,再用对称密钥加密一下,让服务器做个验证,验证对称密钥是否可用,以及之前握手信息是否有被中途修改

  • 第四次 TLS 握手,服务器也做同样的操作,发消息告诉客户端开始使用对称加密方式发送消息,并且也会对数据做个摘要,用对称密钥加密一下,让客户端做个校验,如果双方都验证加密和解密没问题,那么 TLS 四次握手就完成了

如何验证 CA 证书是否有效?

如何验证 CA 的证书是否有效的:

服务端发送:

这个证书中包含的信息有服务端公钥,用途等打成一个包,用hash计算得到一个值

然后CA用自己私钥对这个值进行加密,生成一个签名,也就是CA对证书做了签名

客户端验证:

客户端将拿到的证书信息进行hash运算得到h1,用本地CA公钥解密签名得到h2,如果h1==h2,说明证书有效

为什么要 3 个随机数?

因为前两个随机数都是明文传输,容易被其他人获取,如果就用两个,其他人会用这两个随机数生成对称密钥

第三个随机数使用服务端公钥来加密,就算被获取了,没有服务端私钥,也解析不出来,也就不能生成正确的对称密钥,所以三个随机数更安全

总结:

TLS 四次握手,对称加密和非对称加密都涉及到了,都是两次

HTTP 主要使用 TLS 协议握手,SSL 存在安全漏洞,并且 TLS 作为 SSL 的升级版,在安全性、兼容性和标准化等方面都有诸多优势,这是在 HTTPS 通信中主要使用 TLS 协议握手而不是 SSL 协议的重要原因。

所以我们主要关注 TLS 的握手过程,TLS 握手根据密钥交互算法的不同,可以分为两种:RSA 算法,ECDHE 算法

智力题:一个 3 升的水桶,一个 5 升的水桶,用这两个水桶从一个无边无际的壶里面舀出来4升,怎么做?

经典智力题,没有什么问题

前提:5L桶满,3L桶空

第一次:5L桶 ->(倒满) 3L桶,然后把 3L 桶中的全倒掉 现在:5L桶 -> 2L 3L 桶 -> 0L

第二次:5L桶剩余的2L ->(倒入) 3L桶 现在:5L桶 -> 0L 3L 桶 -> 2L

第三次:5L桶拉满,把3L桶倒满(这次3L桶只能倒1L) 现在:5L桶 -> 4L     3L 桶 -> 3L

相关文章:

腾讯四面面经

说明 是的,没听错,确实是腾讯四面,而且是技术面。先声明下,这个面经是帮朋友整理的,都是真实的面经,不得不说,四面确实是有强的的,接下来让我们一起看下 面试部门:s3&a…...

【mysql】唯一性约束unique

文章目录 唯一性约束 1. 作用2. 关键字3. 特点4. 添加唯一约束5. 关于复合唯一约束 唯一性约束 1. 作用 用来限制某个字段/某列的值不能重复。 2. 关键字 UNIQUE3. 特点 同一个表可以有多个唯一约束。唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯…...

如何理解前端工程化

前端工程化详解 一、 定义二、特点1. 模块化‌2. 组件化‌3. 自动化4. 规范化‌ 三、涉及环节1. 项目架构‌2. 版本控制:3.自动化构建4.任务自动化5. 部署与CI/CD‌ 五、 前端工程化的实际应用六、前端工程化的优势:七、总结‌ 一、 定义 前端工程化是指将前端开发…...

嵌入式八股RTOS与Linux---进程间的通信与同步篇

前言 同步异步、阻塞/非阻塞是什么? 同步:在执行某个操作时,调用者必须等待该操作完成并返回结果后,才能继续执行后续的操作异步:在执行某个操作时,调用者发起操作后不必等待其完成,可以立即继续执行后续的操作。操作完成后&am…...

this.centerDialogVisible = true this.$nextTick(()=>{ this.resetForm(); })

这段代码的作用是 打开一个对话框,并在对话框打开后 重置表单。下面是对这段代码的详细解析: 1. 代码作用 this.centerDialogVisible true:控制对话框的显示。this.$nextTick(() > { ... }):在 DOM 更新后执行回调函数&#…...

datawhale组队学习--大语言模型—task4:Transformer架构及详细配置

第五章 模型架构 在前述章节中已经对预训练数据的准备流程(第 4 章)进行了介绍。本章主 要讨论大语言模型的模型架构选择,主要围绕 Transformer 模型(第 5.1 节)、详细 配置(第 5.2 节)、主流架…...

专业级 AI 提示生成工具清单

1. 引言 近年来,随着 GPT-3、GPT-4 等大规模预训练语言模型的广泛应用,提示(Prompt)工程作为驱动模型输出质量的重要环节,受到了各界的高度关注。精心设计、管理与优化提示,不仅能够大幅提高生成文本的准确…...

Web前端考核 JavaScript知识点详解

一、JavaScript 基础语法 1.1 变量声明 关键字作用域提升重复声明暂时性死区var函数级✅✅❌let块级❌❌✅const块级❌❌✅ 1.1.1变量提升的例子 在 JavaScript 中,var 声明的变量会存在变量提升的现象,而 let 和 const 则不会。变量提升是指变量的声…...

23种设计模式-生成器(Builder)设计模式

工厂方法设计模式 🚩什么是生成器设计模式?🚩生成器设计模式的特点🚩生成器设计模式的结构🚩生成器设计模式的优缺点🚩生成器设计模式的Java实现🚩代码总结🚩总结 🚩什么…...

Thinkphp(TP)框架漏洞攻略

1.环境搭建 vulhub/thinkphp/5-rce docker-compose up -d 2.访问靶场 远程命令执行: ? sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1] []whoami 远程代码执行: ? s/Index/\think\app/invokefunc…...

HTTP/HTTPS 中 GET 请求和 POST 请求的区别与联系

一、基础概念 HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种用于浏览器与服务器之间进行数据交互的协议。HTTPS (加密的 HTTP) 则通过 SSL/TLS 协议实现通信加密与数据安全性。 二、GET 和 POST 概述 GET 请求: 用于从服务器获取资源。 POST 请求: 用于将数据…...

2021年蓝桥杯第十二届CC++大学B组真题及代码

目录 1A:空间(填空5分_单位转换) 2B:卡片(填空5分_模拟) 3C:直线(填空10分_数学排序) 4D:货物摆放(填空10分_质因数) 5E&#xf…...

解锁 AWX+Ansible 自动化运维新体验:快速部署实战

Ansible 和 AWX 是自动化运维领域的强大工具组合。Ansible 是一个简单高效的 IT 自动化工具,而 AWX 则是 Ansible 的开源 Web 管理平台,提供图形化界面来管理 Ansible 任务。本指南将带你一步步在 Ubuntu 22.04 上安装 Ansible 和 AWX,使用 M…...

简洁、实用、无插件和更安全为特点的WordPress主题

简站WordPress主题是一款以简洁、实用、无插件和更安全为特点的WordPress主题,自2013年创立以来,凭借其设计理念和功能优势,深受用户喜爱。以下是对简站WordPress主题的详细介绍: 1. 设计理念 简站WordPress主题的核心理念是“崇…...

区块链学习总结

Hardhat 是一个用于 Ethereum 智能合约开发 的开发环境,专为 Solidity 语言编写的智能合约提供工具支持。它能够帮助开发者 编译、部署、测试和调试 智能合约,并提供一个本地的以太坊测试网络。 Hardhat 的核心功能 本地开发网络(Hardhat Ne…...

可发1区的超级创新思路(python\matlab实现):基于周期注意力机制的TCN-Informer时间序列预测模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等 二、模型整体介绍(本文以光伏功率预测为例) 1.1 核心创新点 本模型通过三阶段…...

案例4:鸢尾花分类(pytorch)

一、引言 鸢尾花分类是机器学习领域的经典案例,常用于演示分类算法的基本原理和应用。本案例使用 PyTorch 构建一个简单的神经网络模型,对鸢尾花进行分类。通过该案例,我们可以学习如何使用 PyTorch 进行数据处理、模型构建、训练和评估&…...

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…...

CCF-CSP历年真题答案1,2

本文代码主要来自up主圣斗士-DS-ALGO对历年真题的讲解&#xff0c;在此特别感谢。 侵权则删。 10.1_分蛋糕_2017_03 #include <iostream> using namespace std;int main() {int a[1000], n, k; // 定义数组a用于存储蛋糕的重量&#xff0c;整数n表示蛋糕的数量&#xf…...

【MySQL】一篇讲懂什么是聚簇索引和非聚簇索引(二级索引)以及什么是回表?

1.聚簇索引&#xff1a; 叶子节点直接存储了完整的数据行。 每个表只能有一个聚簇索引&#xff0c;通常是主键(Primary Key)。如果没有定义主键&#xff0c;则MySQL会选择一个唯一且非空索引作为聚簇索引。 特点&#xff1a; 数据存储&#xff1a;叶子结点存储完整的数据行…...

炫酷的HTML5粒子动画特效实现详解

炫酷的HTML5粒子动画特效实现详解 这里写目录标题 炫酷的HTML5粒子动画特效实现详解项目介绍技术栈项目架构1. HTML结构2. 样式设计 核心实现1. 粒子类设计2. 动画效果实现星空效果烟花效果雨滴效果 3. 鼠标交互 性能优化效果展示总结 项目介绍 本文将详细介绍如何使用HTML5 C…...

go-zero学习笔记

内容不多&#xff0c;只有部分笔记&#xff0c;剩下的没有继续学下去&#xff0c;包括路由与处理器、日志中间件、请求上下文 文章目录 1、go-zero核心库1.1 路由与处理器1.2 日志中间件1.3 请求上下文 1、go-zero核心库 1.1 路由与处理器 package mainimport ("github…...

QuecPython 网络协议之TCP/UDP协议最祥解析

概述 IP 地址与域名 IP 地址是网络中的主机地址&#xff0c;用于两台网络主机能够互相找到彼此&#xff0c;这也是网络通信能够成功进行的基础。IP 地址一般以点分十进制的字符串来表示&#xff0c;如192.168.1.1。 ​ 我们日常访问的网站&#xff0c;其所在的服务器主机都有…...

FPGA_YOLO(二)

上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…...

Camera2 与 CameraX 闲谈

目录 &#x1f4c2; 前言 1. &#x1f531; Camera2 2. &#x1f531; CameraX 3. &#x1f531; Camera2 与 CameraX 1&#xff09;使用复杂度与开发效率 2&#xff09;控制能力与应用场景 3&#xff09;设备兼容性与稳定性 4&#xff09;更新与维护 4. &#x1f4a0…...

【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody 2d)

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…...

【论文#目标检测】YOLO9000: Better, Faster, Stronger

目录 摘要1.引言2.更好&#xff08;Better&#xff09;3.更快&#xff08;Faster&#xff09;4.更健壮&#xff08;Stronger&#xff09;使用 WordTree 组合数据集联合分类和检测评估 YOLO9000 5.结论 Author: Joseph Redmon; Ali Farhadi Published in: 2017 IEEE Conference …...

C++异常处理时的异常类型抛出选择

在 C 中选择抛出哪种异常类型&#xff0c;主要取决于错误的性质以及希望传达的语义信息。以下是一些指导原则&#xff0c;帮助在可能发生异常的地方选择合适的异常类型进行抛出&#xff1a; 1. std::exception 适用场景&#xff1a;作为所有标准异常的基类&#xff0c;std::e…...

centos 7 搭建FTP user-list用户列表

在 CentOS 7 上搭建基于 user_list 的 FTP 用户列表&#xff0c;你可以按以下步骤操作&#xff1a; 1. 安装 vsftpd 服务 若还未安装 vsftpd&#xff0c;可以使用以下命令进行安装&#xff1a; bash yum install -y vsftpd2. 启动并设置开机自启 vsftpd 服务 bash systemctl…...

vulnhub-Tr0ll ssh爆破、wireshark流量分析,exp、寻找flag。思维导图带你清晰拿到所以flag

vulnhub-Tr0ll ssh爆破、wireshark流量分析&#xff0c;exp、寻找flag。思维导图带你清晰拿到所以flag 1、主机发现 arp-scan -l 2、端口扫描 nmap -sS -sV 192.168.66.185 nmap -sS -A -T4 -p- 192.168.66.185 nmap --scriptvuln 192.168.66.185经典扫描三件套&#xff0c;…...

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…...

搭建Redis哨兵集群

停掉现有的redis集群 因为这篇文章我是在 搭建完redis主从集群之后写的&#xff0c;如果要是没有搭建过这些&#xff0c;可以直接略过。要是从我上一篇 搭建redis主从集群过来的&#xff0c;可以执行下。 docker compose down 查找下redis相关进程 ps -ef | grep redis 可以看…...

.Net SSO 单点登录方式

SSO单点登录目的 之前一般来讲系统简单&#xff0c;登录后 本地 cookie 加服务器 session 存储用户身份信息&#xff0c;以此为依据来判断用户再次登录时免验证 但随着互联网发展&#xff0c;很多应用 部署在不同的服务器上&#xff0c;而用户体系是一套&#xff0c;那么按照原…...

SQL 基础 BETWEEN 的常见用法

在SQL中&#xff0c;BETWEEN是一个操作符&#xff0c;用于选取介于两个值之间的数据。 它包含这两个边界值。BETWEEN操作符常用于WHERE子句中&#xff0c;以便选取某个范围内的值。 以下是BETWEEN的一些常见用法&#xff1a; 选取介于两个值之间的值&#xff1a; 使用 BETWE…...

ngx_http_add_location

声明在 src\http\ngx_http_core_module.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http_core_loc_conf_t *clcf); 定义在 src\http\ngx_http.c ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations,ngx_http…...

深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件

在ArkUI框架中&#xff0c;组件化开发是提升代码复用性和维护性的关键手段。随着项目复杂度的增加&#xff0c;开发者常常面临如何在保持组件封装性的同时&#xff0c;灵活处理组件内部逻辑的问题。传统的Builder装饰器虽然提供了强大的自定义构建能力&#xff0c;但在某些场景…...

视频知识库初步设想

将视频字幕提取出来作为知识库来源定位,下一步设想:把视频上的图片信息也精简出来作为定位。 下面是测试例子: 入参: {"model":"deepseek-ai/DeepSeek-R1-Distill-Llama-8B","messages":[{"role":"system","cont…...

微信小程序中使用Less样式方法

在微信小程序中使用Less样式&#xff0c;可以通过以下步骤实现。主要原理是借助Visual Studio Code&#xff08;VSCode&#xff09;的插件将Less文件自动编译为小程序支持的.wxss文件&#xff0c;或通过微信开发者工具的扩展功能直接集成Less编译环境。以下是具体方法&#xff…...

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免PCI冲突、PCI混淆以及PCI模3干扰等现象。PCI规划对于减少…...

本周安全速报(2025.3.18~3.24)

合规速递 01 2025欧洲网络安全报告&#xff1a;DDoS攻击同比增长137%&#xff0c;企业应如何应对&#xff1f; 原文: https://hackread.com/european-cyber-report-2025-137-more-ddos-attacks/ 最新的Link11《欧洲网络安全报告》揭示了一个令人担忧的趋势&#xff1a;DDo…...

力扣刷题-热题100题-第23题(c++、python)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 记录前一个指针&#xff0c;当前指针&am…...

YAML是什么?

YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种以数据为中心、高度可读的序列化语言&#xff0c;广泛应用于配置文件、数据交换和自动化工具中。以下从多个维度对其进行全面解析&#xff1a; 1. 定义与历史演变 全称与定位&#xff1a; YAML的全称最初为“Yet…...

期权交易投资怎么操作?新手期权操作指南

期权就是股票&#xff0c;唯一区别标的物上证指数&#xff0c;会看大盘吧&#xff0c;新手做期权交易两个方向认购做多&#xff0c;认沽做空&#xff0c;双向t0交易没了&#xff0c;跟期货一样&#xff0c;对的&#xff0c;玩的也是合约&#xff0c;唯一区别没有保证金不会爆仓…...

音视频学习(三十):fmp4

FMP4&#xff08;Fragmented MP4&#xff09;是 MP4&#xff08;MPEG-4 Part 14&#xff09;的扩展版本&#xff0c;它支持流式传输&#xff0c;并被广泛应用于DASH&#xff08;Dynamic Adaptive Streaming over HTTP&#xff09;和HLS&#xff08;HTTP Live Streaming&#xf…...

破局AI落地困局 亚信科技“四位一体手术刀“切开产业智能三重枷锁

当全球进入以AI为核心竞争力的新经济周期&#xff0c;政企机构的数字化转型正面临关键转折点&#xff1a;IDC数据显示&#xff0c;2023年超过67%的中国企业在AI落地环节遭遇"技术断层"&#xff0c;高昂的试错成本与碎片化解决方案让智能转型陷入僵局。在此背景下&…...

android 去掉状态栏的方法汇总

在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Status Bar&#xff09;有多种方法&#xff0c;具体实现方式取决于应用场景和目标 Android 版本。以下是常用的 ​6 种方法及其代码示例&#xff1a; 在 Android 开发中&#xff0c;隐藏或去除状态栏&#xff08;Sta…...

jenkins+1panel面板java运行环境自动化部署java项目

本文章不包含1panel面板安装、jenkins部署、jenkins连接git服务器等操作教程&#xff0c;如有需要可以抽空后期补上 jenkins安装插件Publish Over SSH 在系统配置添加服务器 查看项目的工作空间 项目Configure->构Post Steps选择Send files or execute commands over SSH…...

VLAN综合实验报告

一、实验拓扑 网络拓扑结构包括三台交换机&#xff08;LSW1、LSW2、LSW3&#xff09;、一台路由器&#xff08;AR1&#xff09;以及六台PC&#xff08;PC1-PC6&#xff09;。交换机之间通过Trunk链路相连&#xff0c;交换机与PC、路由器通过Access或Hybrid链路连接。 二、实验…...

雷军从 6 楼扔涂有防弹涂层西瓜,西瓜完好无损,这种防弹涂层是什么材质?用在车上效果怎么样?

雷军展示的“防弹涂层”是一种基于第四代高分子材料聚脲&#xff08;Polyurea&#xff09;的升级技术&#xff0c;其核心特性是通过纳米级交联结构形成弹性防护层&#xff0c;兼具柔韧性与刚性&#xff0c;能够有效吸收冲击能量并抵御尖锐物体的穿刺。以下是关于该涂层材质及在…...

信奥赛CSP-J复赛集训(模拟算法专题)(31):P2692 覆盖

信奥赛CSP-J复赛集训&#xff08;模拟算法专题&#xff09;&#xff08;31&#xff09;&#xff1a;P2692 覆盖 题目背景 WSR 的学校有 B B B 个男生和 G G G 个女生都来到一个巨大的操场上扫地。 题目描述 操场可以看成是 N N N 行 M M M 列的方格矩阵&#xff0c;如下…...