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

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

outside_default.png

自 2021 年发布以来,Nacos 2.0 在社区的支持下已走过近三年,期间取得了诸多成就。在高性能与易扩展性方面,Nacos 2.0 取得了显著进展,同时在易用性和安全性上也不断提升。想了解更多详细信息,欢迎阅读我们之前发布的回顾文章:《Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进》。

近期,我们欣喜地宣布 Nacos 3.0 的第一个版本 Nacos 3.0-ALPHA 已经发布。Nacos 3.0 的目标是在 2.0 的基础上,进一步优化安全性、易用性和标准化。同时,我们将引入更多功能,帮助用户在分布式协调、AI 大模型、云原生等多种场景中更好地使用 Nacos,以提升其广泛适应性。

01

Nacos 3.0 Alpha 主要更新亮点

Aliware

在 Nacos 3.0-ALPHA 的发布中,我们将重心放在了提升安全性和标准化上,这一部分内容将 Nacos 3.0 的后续更新的基础。

1.1 API 分类更为精细化

在 Nacos 3.0 之前,API 主要分为两大类:面向客户端和应用程序的 OpenAPI,以及供运维人员管理使用的 AdminAPI。这种分类方式在实际使用场景中存在一定的矛盾,比如用于引擎间数据同步的 API 和控制台上进行数据检索的 API,导致这部分 API 无法合理地对外开放和描述。同时,由于不同 API 对安全认证需求的差异,粗略将 API 分为两类也难以满足安全认证的多样化要求。

为了解决这些问题,Nacos 3.0 对 API 进行了更精细化的分类,具体包括:提供给客户端和应用程序的 OpenAPI、供运维人员和管理平面使用的 AdminAPI、用于控制台 UI 的 ConsoleAPI,以及引擎节点之间的 InnerAPI。这种新分类方式不仅针对不同使用场景提供了多维度的数据访问 API,同时也为不同类型的 API 实施相应的安全认证机制奠定了基础。

8bba713372dff66b71542d903a600d8f.png

例如,客户端和应用程序往往更关心特定服务和配置,因此 OpenAPI 仅提供有限范围(如单个配置)的数据访问。而控制台则需要展示所有相关的数据,因此 ConsoleAPI 提供了更广泛的 list 范围 API。这种灵活的设计使得 Nacos 能够更好地满足不同用户和场景的需求。

1.2 按 API 类型默认启用安全认证

在 Nacos 3.0 之前,所有 API 都采用统一的安全认证方式,这对于 InnerAPI 和 AdminAPI 等主要用于内部调用的 API 来说并不适合。此外,由于所有 API 的安全认证采用同一个开关,导致在客户端和应用程序完成身份设置之前无法开启安全认证,从而带来了更高的安全风险。

为了解决这些问题,Nacos 3.0 将根据不同 API 类型默认采用不同的安全认证策略:对于 InnerAPI 和 AdminAPI,将默认启用 ServerIdentity 进行身份验证;对于 ConsoleAPI,将默认启用用户名和密码的身份及权限校验;而对于客户端和应用程序使用的 OpenAPI,则默认与 Nacos 2.0 保持一致,即默认不开启安全认证,需要用户自行查找并启用。这样做不仅提升了 Nacos 集群的数据安全性,还增加了用户在可信环境中的易用性,以及在升级启用安全认证过渡期间的稳定性。

892e7330c419320b30a7820312ddd879.png

1.3 优化默认命名空间

在 Nacos 中,命名空间 ID 是命名空间的唯一标识符。然而,许多用户在使用默认命名空间 public 时,错误地将名称“public”作为 ID 配置到应用程序中,这导致了一些问题。同时,其他正常使用此命名空间的用户对默认命名空间 public 的 ID 为空字符串''感到困惑。这种困惑源于服务发现模块可以使用 public 作为命名空间 ID 并将其视为默认处理方式,而在配置管理模块中却并非如此。简而言之,默认命名空间 ID 的处理方式存在不一致性。

此外,自 1.2.0 版本起,auth 插件依赖于命名空间 ID,而这种处理差异也引发了默认命名空间的权限问题。在适应默认命名空间''方面,数据源插件也遇到了一些困难。相关问题已在以下 ISSUE 中被讨论:#3525[1]、#8774[2]、#9773[3]、#9783[4]等。

为了解决默认命名空间 ID 的使用问题,Nacos 3.0 计划对默认命名空间的 ID 进行调整。根据社区讨论的 ISSUE#9846[5],默认命名空间的 ID 将被修改为 public,与其名称相同。在访问 API 时,如果未传入命名空间 ID 或仍然传入空字符串'',Nacos 3.0 将自动将其匹配为 public 以进行后续处理,从而兼容旧客户端的访问请求。

12078f5f148c2ac645aebd8fbcc24133.png

需要注意的是,Nacos 3.0 Alpha 版本在数据存储的平滑迁移和适配方面尚未进行处理,因此进行直接升级会导致配置数据无法获取,并且目前无法实现平滑升级。不过,Nacos 3.0 的正式版本将会支持平滑升级。

1.4 支持先进的 xDS 协议

xDS(Extended Discovery Service)是一组由 Envoy proxy 团队提出的协议,广泛应用于服务网格中,旨在服务发现和配置管理,以支持现代微服务架构下的动态配置。随着服务网格概念的普及,xDS 协议逐渐获得了社区的认可。Nacos 作为微服务生态体系中的注册与配置中心,通过标准化协议来满足服务网格的功能需求,成为云原生化的核心要求之一。

在 Nacos 2.0 版本中,Nacos 通过 Istio 的 MCP 协议获取服务数据,并将其转换为 xDS 协议数据。然而,这一过程依赖于中间组件 Istio,这导致系统的复杂性和稳定性面临风险。而在 Nacos 3.0 版本中,Nacos 直接支持 xDS 协议中的 EDS、LDS、RDS 和 CDS 协议,显著降低了对 Istio 组件的依赖,提高了系统的易用性和稳定性。

02

Nacos 3.0 即将推出的新功能

Aliware

基于 Nacos 3.0-Alpha 版本所提供的基础功能,在 Nacos3.0 正式版中计划进一步从架构上提升提升安全性和标准化能力。

2.1 全新 Admin API 的推出

在 Nacos 的早期版本中,AdminAPI 主要面向运维人员,专注于 Nacos 集群的维护操作。由于当时的设计场景多以人为本地调用为主,因此 AdminAPI 的定义较为随意,导致其安全性和标准化程度不足。这使得后续的控制台在复用 AdminAPI 时面临困难,同时也给希望开发自定义控制台或构建管理平台的开发者带来了挑战。

为了解决这些问题,Nacos 3.0 正式版将对 AdminAPI 进行全面的重新设计。我们将规范 API 的请求体、返回体和错误码等标准,提升整体的标准化水平。同时,默认启用并优化 AdminAPI 的身份验证,以增强安全性。此外,我们将提供 Maintainer-SDK,以便希望开发自定义管理程序的开发者方便使用。这些改进将为 Nacos 控制台与引擎的灵活拆分和部署奠定坚实基础。

c641caac179830067656e6a630da7a84.png

2.2 控制台与引擎的灵活拆合部署

在之前的 Nacos 版本中,为了方便用户的部署和使用,控制台与引擎程序一直合并部署,且共用同一个端口。这种方式虽然增强了使用的便利性,但也带来了一些安全风险。此外,由于控制台和引擎在使用场景上存在差异,它们对于开放网络访问范围及安全认证需求的预期也不尽相同。基于此,Nacos 计划在新版本中对控制台和引擎的部署架构进行较大调整。

在 Nacos 3.0 中,控制台将独立在一个 Web 容器中运行,允许用户设定独立的访问端口。这一改变使得 Nacos 集群的运维人员能够更灵活地配置网络访问控制列表(ACL),例如,仅将控制台端口开放给办公网络。同时,配合控制台默认启用的安全认证,这将显著提高 Nacos 的安全性。此外,独立的 Web 容器还将与全新的 Admin API 相结合,实现控制台和引擎节点的灵活拆分部署,使得它们能够在不同节点上运行,进一步增强安全性。

2e1edc0b25720fa8f3a6da7ff244dfa3.png

2.3 引入分布式锁支持

Nacos 社区向用户征集了他们对 Nacos 3.0 的期望功能,其中支持分布式锁的需求是呼声最高的功能之一。分布式锁是一项在分布式应用中常用的功能,目前大多数实现依赖于 Zookeeper 或 Redis 等产品。许多用户已经将 Nacos 替换为 Zookeeper 来进行服务和配置管理,但由于 Nacos 尚未支持分布式锁,用户仍需额外运维 Zookeeper 集群,增加了系统的复杂性。

因此,Nacos 3.0 正式版本计划引入分布式锁的实验性功能,以满足部分用户对轻量级分布式锁的需求。这一功能的推出将帮助用户减少对额外系统的依赖,从而简化微服务应用架构,拓展 Nacos 的使用场景。

2.4 Spring Boot 3 和原生启动的支持

Spring 社区已经停止了 Spring Boot2 的支持,同时最新的 Spring Boot3 支持了 Java 原生启动的支持;考虑到 Spring Boot 3 要求将 JDK 升级至 17 及以上版本,这可能会导致许多用户在升级时遇到阻碍,因此 Nacos 2.X 版本依然基于 JDK 8 和 Spring Boot 2,并未升级至 Spring Boot 3。

然而,随着时间的推移,失去支持的 Spring Boot 2 将会产生越来越多的安全漏洞,这将间接降低Nacos的安全性。因此,Nacos 计划在 3.0 版本中对 JDK 和 Spring Boot 进行升级。这一升级不仅能确保遵循社区的支持,及时修复安全漏洞,而且还能利用 Java 原生启动来提升性能。

03

Nacos 3.X 发展蓝图

Aliware

在 Nacos 3.0 的发展蓝图中,我们将继续致力于提升易用性与普适性,以满足用户日益增长的需求。

在引擎自身方面,新版本计划引入了服务与配置的模糊订阅功能,使用户能够更灵活地管理服务和配置,简化在网关应用中服务发现和配置订阅的操作流程。此外,我们计划支持 DNS 协议,以进一步拓展 Nacos 在支持较弱编程语言场景中的适用性。另外对于服务健康检查体系,我们将优化相关机制,通过将健康检查与服务类型解耦,提供更多关于服务可用性的判断依据,这将使微服务之间的流量调用更加灵活,同时确保系统的稳定运行。最后对于社区中已经比较成熟的插件,我们会将其纳入 Nacos 的主干仓库中进行维护,诸如 PostgreSQL 插件、AES 配置加密插件等,让这些插件在后续版本中随引擎一起发布、不需要再独立构建引入。

在生态建设方面,我们将通过 Nacos Controller 的快速迭代,实现 Kubernetes 服务与配置的同步管理,从而使云原生环境下的使用变得更加便捷。此外,我们将积极探索多语言生态与 AI 大模型的集成,通过支持多语言应用框架以及 Spring AI 和其他 AI 大模型开发框架的动态 prompt 发现和资源发现,为用户提供更加丰富的功能选择与应用场景,努力构建一个高效、灵活的分布式协调平台。

f73764ccda0433d736037ebc71a6ec7b.png

04

关于 Nacos3.0 的一些投票和讨论

Aliware

Nacos 是一个开放的社区,任何社区参与者和使用者都可以参与 Nacos 发展的讨论,提供自己的想法和建议。由于 Nacos3.0 的改动较大,因此社区也发起了一些投票和讨论,希望大家能够积极参与,帮助 Nacos 社区更好的进行规划。

4.1 1.X 正式 EoL(End of Life)

Nacos 2.X 版本经过了近 3 年的演进和沉淀,无论是从性能、稳定、安全的角度,都比 1.X 版本优秀太多;而且 1.X 版本实际上也已经进入了尾声维护阶段(仅修复严重 Bug 和安全漏洞)近 2 年,我们希望在 Nacos 3.0 正式发版之际,正式归档和 EoL Nacos 的 1.X 版本(不再进行更新)。希望征询社区的意见,大家可以到 ISSUE#12921[6]中进行投票和讨论。

4.2 3.X 不再支持 1.X 的客户端

Nacos 的 2.X 版本兼容大多数 1.X 的客户端,这主要是考虑到业务应用升级客户端版本较为谨慎,时间周期较长;随着 Nacos 2.X 版本经过了近 3 年的演进和沉淀,主要的上游应用框架基本都升级到了 Nacos 2.X 的客户端,因此我们希望在 Nacos 3.0 或未来的某个 3.X 版本中,不再支持 1.X 的客户端,减少 Nacos 冗余代码。希望征询社区的意见,大家可以到 ISSUE#12922[7]中进行投票和讨论。

4.3 spring boot3 + jdk 17 升级

正如前文所提及的,由于 spring boot2 已经彻底停止了维护,nacos3 升级到spring boot 3 势在必行,对应的 JDK 版本也必须升级到 17。而升级 JDK 版本可能是一个比较大的变动,部分使用者可能由于各种考量无法接受 JDK 版本的升级。因此我们希望通过社区投票,再决定 Nacos 3.0 是否升级到 JDK17,欢迎大家到 ISSUE#12923[8]中进行投票和讨论。

除了上述的 3 个投票,Nacos 社区还有更多关于 Nacos3.0 改动的讨论,也欢迎大家积极参与,比如:ISSUE#9129[9]、ISSUE#9846 等。

05

About Nacos

Aliware

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

相关链接:

[1] #3525

https://github.com/alibaba/nacos/issues/3525

[2] #8774

https://github.com/alibaba/nacos/issues/8774

[3] #9773

https://github.com/alibaba/nacos/issues/9773

[4] #9783

https://github.com/alibaba/nacos/issues/9783

[5] ISSUE#9846

https://github.com/alibaba/nacos/issues/9846

[6] ISSUE#12921

https://github.com/alibaba/nacos/issues/12921

[7] ISSUE#12922

https://github.com/alibaba/nacos/issues/12922

[8] ISSUE#12923

https://github.com/alibaba/nacos/issues/12923

[9] ISSUE#9129

https://github.com/alibaba/nacos/issues/9129

相关文章:

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

自 2021 年发布以来,Nacos 2.0 在社区的支持下已走过近三年,期间取得了诸多成就。在高性能与易扩展性方面,Nacos 2.0 取得了显著进展,同时在易用性和安全性上也不断提升。想了解更多详细信息,欢迎阅读我们之前发布的回…...

GeoIP介绍

文章目录 GeoIP1. GeoIP的详细介绍2. 在Go语言中使用GeoIP GeoIP GeoIP是一种技术,它允许通过IP地址来查询地理位置信息,如国家、地区、城市等。这种技术在网络安全、内容分发、市场分析等领域有着广泛的应用。 1. GeoIP的详细介绍 原理: …...

详述 BigDecimal 的错误计算

摘要 详细阐述在使用 Java 的 BigDecimal 类时,可能产生的错误计算。 据 java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题-CSDN博客 介绍:“BigDecimal 的执行顺序不能调换(乘法交换律失效&am…...

3D Gaussian Splatting for Real-Time Radiance Field Rendering-简洁版

1. 研究背景与问题 传统的3D场景表示方法,如网格和点云,适合GPU加速的光栅化操作,但缺乏灵活性。而基于神经辐射场(NeRF)的表示方式,尽管质量高,但需要高成本的训练和渲染时间。此外&#xff0…...

(三)PyQT5+QGIS+python使用经验——解决各版本不兼容问题

一、问题描述 基础环境:Windows10(64) PyCharm2024 QGIS 3.22。 目的:解决之前python版本多,pyqt5以及QT Designer交互使用存在环境变量冲突矛盾,以及QGIS安装时自带python、pyqt5等问题。 尤其是在QT …...

uniapp navigateTo、redirectTo、reLaunch等页面路由跳转方法的区别

uni.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 // app.json {"tabBar": {"list": [{"pagePath": "index","text": "首页"},{"pagePath": "other","text&…...

[创业之路-198]:华为的成立发展与新中国的建立与发展路径的相似性比较

目录 一、公司比较 1、创业初期的艰难与挑战 2、坚持自主创新与研发 3、市场拓展与国际化战略 4、企业文化与社会责任 5、面临的挑战与应对策略 二、任正非管理企业的思想大量借鉴了毛泽东建国的思想 1、矛盾论与企业管理 2、群众路线与企业文化 3、战略思维与长远发…...

[Unity Shader]【图形渲染】【游戏开发】 Unity Shader与原始Shader的区别

在Unity中,Shader是用于控制如何渲染图形的程序,通常涉及到对图形管线的自定义操作。尽管所有的着色器都遵循基本的图形渲染流程,但Unity Shader和原始Shader(通常指OpenGL/DirectX等底层API的Shader)之间存在显著差异。理解这些区别能帮助开发者更好地在Unity环境下进行图…...

JAVA学习日记(二十七)反射

一、反射的概述 二、获取Class对象的三种方式 import testpackage.Student;public class Main {public static void main(String[] args) throws ClassNotFoundException {//获取.class对象的三种方式//1. Class.forName("全类名")//2. 类名.class//3. 对象.getClas…...

PyTorch中apex的安装方式

apex是NVIDIA开发的基于PyTorch的混合精度训练加速神器,能够增加运算速度,并且减少显存的占用。 Github地址:https://github.com/NVIDIA/apex官方教程:https://nvidia.github.io/apex/ 安装方式 需要注意的是apex的安装不能通过…...

JavaScript网络请求( XMLHttpRequest 对象,进度事件, 跨源资源共享)

一、 XMLHttpRequest 对象 IE5 是第一个引入 XHR 对象的浏览器。这个对象是通过 ActiveX 对象实现并包含在 MSXML 库中 的。为此, XHR 对象的 3 个版本在浏览器中分别被暴露为 MSXML2.XMLHttp 、 MSXML2.XMLHttp.3.0 和 MXSML2.XMLHttp.6.0 。 所有现代…...

Android Studio、JDK、AGP、Gradle、kotlin-gradle-plugin 兼容性问题

文章目录 问题:解决办法:gradle与 java的版本兼容AGP与Gradle的版本兼容kotlin 与 jvm 的版本兼容KGP、Gradle、AGP兼容关系kotlin 与 java 的编译版本配置 问题: 你从githb上clone了一个项目,本地跑的时候,各种报错。…...

滑动窗口(定长窗口)

题目一:找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) ​ ​ 分析 异位次,就是通过排序之后可以跟哪个单词一样,例如 hello 跟 lleho 这是定长窗口, 窗口维护在p的…...

Vue Web开发(九)

1. 用户管理 1.1. user页面下的diolog表单 本节课完成user页面下的diolog表单,表单里的元素都是动态渲染,以一个CommonForm组件的形式放入user页面。 运用Element ui Form表单。 1.1.1. CommonForm组件 在src/components下新建CommonForm.vue组件&am…...

go语言zero框架下的日志记录的sdk实战案例

在 Go 语言中,构建一个日志 SDK 是常见的开发任务,尤其是当你希望将日志记录集中管理时。一个好的日志 SDK 可以帮助你规范化日志记录的方式,并将日志存储到不同的地方(例如:控制台、文件、数据库、远程日志服务等&…...

【Unity基础】Unity中拖拽3D物体的过程分析和实现方法

我们先来分析一下Unity中拖拽物体的过程: 第一步:先检测拖拽的输入方式,可以鼠标,触摸,可以用InputManager输入,也可以 使用InputSystem输入 第二步:获取触碰点的位置,并计算offse…...

深入了解Spring

目录 Spring基础 什么是Spring框架? Spring 包含的模块有哪些? Core Container AOP Data Access/Integration Spring Web Messaging Spring Test Spring,Spring MVC,Spring Boot 之间什么关系? Spring基础 什么是Spring框架? Sp…...

vue3修改elementui-plus的默认样式的几种方法

#创作灵感 今天写vue的前端项目,因为需要去修改elementui-plus中drawer的默认样式,所以刚好将修改步骤记录下来。 一共提供了三种方法,但亲测第二种最好用。 使用第二种是可以无视自己的代码中是否定义了该盒子,因为有时候盒子的…...

免费开源!推荐一款网页版数据库管理工具!

免费开源!推荐一款网页版数据库管理工具! DBGate 是一个开源的数据库管理工具,DBGate 的最大特点是可以 Web 访问!,轻松实现一台机器部署,所有人使用! 无论是 MySQL、PostgreSQL、SQLite 还是…...

Ubuntu22.04切换gcc版本教程

在编译安装程序的时候,由于gcc版本过高,导致编译无法通过,需要降低gcc版本。 一、安装gcc版本 根据自己的需求安装gcc版本。 sudo apt update sudo apt install gcc-10 g++-10二、切换gcc版本 sudo update-alternatives --install /usr/bin/gcc gcc...

OpenCV相机标定与3D重建(24)计算两个二维点集之间的最佳仿射变换矩阵(2x3)函数estimateAffine2D()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算两个二维点集之间的最优仿射变换,它计算 [ x y ] [ a 11 a 12 a 21 a 22 ] [ X Y ] [ b 1 b 2 ] \begin{bmatrix} x\\ y\\ \en…...

并发修改导致MVCC脏写问题

并发修改导致MVCC脏写问题 一、概要 1.1 业务场景 数据库表结构设计: 一个主档数据,通过一个字段,逗号分隔的方式去关联其他明细信息的id。 如主档数据A,有3条明细数据与A关联,其id分别是1,2,3,那么其存…...

webSokect安卓和web适配的Bug 适用实时语音场景

❌BUG: Failed to construct WebSocket: The URLs scheme must be either ws or wss. https is not allowed.WebSocket 协议在创建连接时,规定其 URL 的协议头(scheme)必须是 ws(用于非加密的普通 WebSocket 连接&…...

Linux系列之如何更换Centos yum源?

环境 Centos7Xshell7 问题描述 最近安装了一个虚拟机,准备用来学习,不过使用yum命令安装一些软件,不过使用这个命令时候,提示 Cannot find a valid baseurl for repo: base/7/x86_64,Could not retrieve mirrorlis…...

微知-C语言如何指定弱符号?(#define WEAK __attribute__((weak)); WEAK int foo(void))

背景 在C语言中,弱符号是一种特殊的符号,它可以被重定义,但在链接时,只会使用被重定义的符号。 在某些情况下,我们需要在多个文件中定义相同的函数,但只使用其中一个函数。本文将介绍如何在C语言中实现弱符…...

三极管功能

1 三极管的结构 2 三极管开关电路设计注意事项 1 三极管进入饱和状态 电机:500毫安 2 判断三级什么状态:电压法 3 判断三级什么状态:电流法 4 求IB的电阻 5 当三极管用作开关时,通常N型三极管控制负载的gnd端,P型…...

Python的3D可视化库【vedo】2-5 (plotter模块) 坐标转换、场景导出、添加控件

文章目录 4 Plotter类的方法4.7 屏幕和场景中的坐标点转换4.7.1 屏幕坐标转为世界坐标4.7.2 世界坐标转为屏幕坐标4.7.3 屏幕坐标取颜色 4.8 导出4.8.1 导出2D图片4.8.2 导出3D文件 4.9 添加控件4.9.1 添加内嵌子窗口4.9.2 添加选择区4.9.3 添加比例尺4.9.4 为对象添加弹出提示…...

定时/延时任务-万字解析Spring定时任务原理

文章目录 1. 概要2. EnableScheduling 注解3. Scheduled 注解4. postProcessAfterInitialization 解析4.1 createRunnable 5. 任务 Task 和子类6. ScheduledTaskRegistrar6.1 添加任务的逻辑6.2 调度器初始化6.3 调用时机 7. taskScheduler 类型7.1 ConcurrentTaskScheduler7.2…...

Android上传到Minio本地存储

Minio简介 MinIO是一个对象存储解决方案,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云,裸金属基础设施,编排环境,以及边缘基础设施。author: https…...

海量数据-Vastbase G100数据库安装

海量数据-Vastbase G100数据库安装 文章目录 海量数据-Vastbase G100数据库安装前期准备防火墙配置方案一:关闭防火墙方案二:开放数据库端口 SELINUX配置时间同步IPC参数配置 单机安装设置主机名创建数据库安装用户和目录(可选)修改资源限制 字符安装&am…...

Python | 对于DataFrame中所有行数据比较的几种方法

在数据分析中,比较DataFrame数据框中的行是一项基本操作,可应用于多种场景,包括: 查找重复项:标识所有相似或包含相同数据的行。相似性检查:确定某些选定因子的不相似行的相似程度。成对分析:非…...

React:闭包陷阱产生和解决

在 React 中,闭包陷阱是一个常见的问题,尤其是在处理异步操作、事件处理器、或是定时器时。理解闭包的工作原理以及它在 React 中如何与状态和渲染交互,可以帮助你避免陷入一些常见的错误。 一、闭包陷阱的产生 1、什么是闭包陷阱&#xff1…...

图的遍历|深度优先搜索|广度优先搜索(C)

图的基本操作 图的基本操作是独立于图的存储结构的。而对于不同的存储方式,操作算法的具体实现会有着不同的性能。在设计具体算法的实现时,应考虑采用何种存储方式的算法效率会更高。 图的基本操作主要包括(仅抽象地考虑,所以忽略…...

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架 Pytest BDD vs Behave:选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave:关键区别Pytest BDD vs Behave:最佳应用场景结…...

python文字转语音

一、安装对应的包 pip install pyttsx3 二、代码实现 import pyttsx3# 初始化tts引擎 engine pyttsx3.init()# 设置要转换的文本 text "你好"# 设置语速,范围从-1到1,1是正常速度,-1是最慢速度 rate engine.getProperty(rate…...

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…...

XSLT 编辑 XML

XSLT 编辑 XML 介绍 XSLT(可扩展样式表语言转换)是一种用于转换XML文档的语言。它允许开发人员将XML数据转换为其他格式,如HTML、PDF或纯文本。XSLT通过使用XPath查询来定位XML文档中的元素,并对这些元素应用转换规则。在本教程…...

计算机网络信息系统安全问题及解决策略

目 录 摘 要 前 言 一、计算机网络信息系统研究现状及安全技术 (一)计算机网络信息系统研究现状 (二)计算机网络信息系统全技术概述 二、计算机网络信息系统安全问题 (一)环境危害引发的安全问…...

112.【C语言】数据结构之排序(详解插入排序)

目录 1.排序定义 2.插入排序 "插入"的含义 代码 函数框架 函数设计思路 以升序为例,分析插入的三种可能 单趟排序代码 优化后 将单趟排序代码嵌入到循环中 错误代码 两种改法 运行结果 时间复杂度 1.排序定义 使一串记录,按照其中的某个或某些关键字的…...

洞察:OpenAI 全球宕机,企业应该如何应对 LLM 的不稳定性?

北京时间12月12日上午,OpenAI证实其聊天机器人ChatGPT正经历全球范围的宕机,ChatGPT、Sora及API受到影响。 OpenAI 更新事故报告称,已查明宕机原因,正努力以最快速度恢复正常服务,并对宕机表示歉意。 此次 OpenAI 故障…...

Git Bash Here 中文显示乱码的处理方法

在使用"open Git Bash Here"时,遇到中文显示乱码问题。 原因:通常是由于编码设置不正确导致的。 open Git Bash Here —>鼠标右击空白处,点击「选项」|或「Options」 在「文本」或 「Text」选项卡中,找到"local…...

【python因果库实战6】LaLonde 数据集

目录 LaLonde 数据集 数据 收入指示变量 教育年限的因子化 变量选择 模型 估计因果效应 未经调整的估计 LaLonde 数据集 经济学家长期以来假设培训项目可以改善参与者的劳动力市场前景。为了测试(或证明)这一点,国家支持性工作示范项…...

和Ente交流

今日去清华大学深圳国际研究生院能源环境大楼与研三师弟交流。 交流内容: 今年年初3月份的时候去实习,刚刚开始字节远程实习(海投),然后远程了一个月,让去线下,然后就去线下待了一个月&#x…...

imx6ull qt多页面控制系统(正点原子imx系列驱动开发)

开题答辩完了也考完了四六级,赶紧来更新一下一个月前留下的坑吧 QAQ首先,因为毕业设计需要用到这些知识所以就从网络上找了一个智能车机系统,借鉴了一下大佬的项目思路,缝缝补补一个月终于完成了这一内容。 在这里先感谢从两位大佬…...

[C++]运算符重载

一、 什么是运算符重载? 运算符重载是 C 中的一种功能,它允许用户定义的类或数据类型重新定义或扩展运算符的行为,使运算符能够作用于用户定义的对象。 二、 通俗解释 在 C 中,运算符(如 , -, *, 等)默认…...

C++基础

01引用的本质 int a 10;/**引用本质是指针常量&#xff0c;指针指向不可更改,因此引用一旦初始化就不可以更改*自动转换为int* const ref&a;*/int &ref a;/*内部发现是引用&#xff0c;自动转换为*ref20;*/ref20; 02函数高级 2.1默认参数 #include <iostream&g…...

鸿蒙项目云捐助第七讲鸿蒙App应用的首页推荐模块布局的实现

鸿蒙项目云捐助第七讲鸿蒙App应用的首页推荐模块布局的实现 最后设置首页的推荐模块&#xff0c;参考模板如下图所示。 一、首页热门推荐模块的实现 对于热门推荐模块&#xff0c;先有上面的小标题栏&#xff0c;这里的标题栏也有一个小图标&#xff0c;首先从“百度图库”中…...

【网络安全设备系列】1、防火墙

0x00 前言 最近由于工作原因&#xff0c;需要详细如今各类网络安全设备&#xff0c;所以开了此系列文章&#xff0c;希望通过对每个网络安全设备进行整理总结&#xff0c;来详细了解各类网络安全设备作用功能以及实现原理、部署配置方法等。 0x01 定义&#xff1a;防火墙指的…...

C# 备份文件夹

C# 备份目标文件夹 方法1&#xff1a;通过 递归 或者 迭代 结合 C# 方法 参数说明&#xff1a; sourceFolder&#xff1a;源文件夹路径destinationFolder&#xff1a;目标路径excludeNames&#xff1a;源文件夹中不需备份的文件或文件夹路径哈希表errorLog&#xff1a;输出错…...

【sizeof】各种数据类型所占空间大小

各种数据类型所占空间大小 文章目录 前言 一、sizeof是什么&#xff1f; 二、使用步骤 1.整型 2.字符型 总结 前言 ‌sizeof在C语言中是一个运算符&#xff0c;用于获取数据类型或变量在内存中所占的字节数。‌它可以在编译时计算数据类型或变量的内存大小&#xff0c;而…...