Sharding-JDBC概述

news2025/2/12 9:25:19

前言

​ 随着业务数据量的增加,原来所有的数据都是在一个数据库上的,网络IO及文件IO都集中在一个数据库上的,因此CPU、内存、文件IO、网络IO都可能会成为系统瓶颈。当业务系统的数据容量接近或超过单台服务器的容量、QPS/TPS接近或超过单个数据库实例的处理极限等,此时,往往是采用垂直和水平结合的数据拆分方法,把数据服务和数据存储分布到多台数据库服务器上。

容量瓶颈:

​ 从性能⽅⾯来说,由于关系型数据库⼤多采⽤ B+ 树类型的索引,数据量超过一定大小,B+Tree 索引的高度就会增加,而每增加一层高度,整个索引扫描就会多一次 IO。在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降。

就比如MySQL而言,存储容量取决于多个因素,其中包括:数据库引擎选项、操作系统限制、数据类型等。MySQL支持的存储引擎包括InnoDB、MyISAM、Memory等,其中,每种存储引擎的存储容量都不尽相同。

下面是各种MySQL存储引擎的存储容量:

  • InnoDB:理论容量为64TB
  • MyISAM:理论容量为256TB
  • Memory:由于使用内存而不是磁盘进行存储,容量取决于可用内存的大小

以下是MySQL中一些常用数据类型的存储空间:

  • TINYINT:1字节
  • INT:4字节
  • BIGINT:8字节
  • VARCHAR:根据列的实际用途动态存储

​ MySQL的最大存储容量是由文件系统限制的,一般为 2 GB 或 32 位文件系统上的 4 GB。受每个MySQL table的最大长度限制(默认为4GB)。MySQL可以支持的表行数不受限制,因此只要服务器的配置足够,应用程序可以处理海量的记录。

如果表的结构简单,则能承受的数据量相对比结构复杂时大些。据D.V.B 团队以及Cmshelp 团队做CMS 系统评测时的结果来看,MySQL单表大约在2千万条记录(4G)下能够良好运行,经过数据库的优化后5千万条记录(10G)下运行良好。

吞吐量瓶颈:

​ 同时⾼并发访问请求也使得集中式数据库成为系统的最⼤瓶颈。所以数据库的吞吐量很重要,以及能同时开启的数据连接也有限。

MySQL的最大吞吐量取决于多个因素,包括硬件配置、数据库设计、网络带宽、并发访问量等等。在大多数情况下,MySQL的最大吞吐量会受到CPU和磁盘I/O的限制,以及同时启用最大线程数为10。如果CPU或磁盘I/O达到极限,那么MySQL的性能就会明显下降。

​ **对于一般的Web应用程序来说,MySQL的最大吞吐量通常在几千到几万的QPS(每秒查询数)之间。**但是,如果需要处理大规模数据和高并发请求,MySQL的最大吞吐量可能会更高。在这种情况下,通常需要通过优化数据库设计、调整硬件配置等方式来提高MySQL的性能和吞吐量。

为了提高MySQL的吞吐量,可以采取以下措施:

  1. 优化数据库设计:合理的数据库设计可以减少查询次数和查询时间,

  2. 使用索引:索引可以加速查询过程,减少查询时间,

  3. 调整缓存设置:适当调整MySQL的缓存设置可以减少磁盘I/O,

  4. 使用分布式数据库:分布式数据库可以将数据分散存储在多个节点上,

  5. 调整硬件配置:合理的硬件配置可以提高MySQL的吞吐量,例如增加CPU核心数、增加内存容量等。

​ 总的来说,MySQL的最大吞吐量是一个动态的指标,需要根据具体情况进行评估和优化。通过合理的数据库设计和优化措施,可以提高MySQL的吞吐量,满足不同规模和需求的应用程序的性能要求。

分而治之

分治模式在存储领域的使用:数据分⽚

​ 数据分⽚指按照某个维度将存放在单⼀数据库中的数据, 分散地存放⾄多个数据库或表中以达到提升性能瓶颈以及可⽤性的效果。数据分⽚的有效⼿段是对关系型数据库进⾏分库和分表。分库能够⽤于有效的分散对数据库单点的访问量;分表能够⽤于有效的数据量超过可承受阈值而产⽣的查询瓶颈, 解决MySQL 单表性能问题。而数据分⽚的拆分⽅式⼜分为垂直分⽚和⽔平分⽚。

分库的合理的时机, 请参见 3 高架构秒杀部分内容。

分表的合理的时机, 请参见 3 高架构秒杀部分内容。

​ 一般都是使⽤多主多从的分⽚⽅式,可以有效的避免数据单点,从而提升数据架构的可⽤性。通过分库和分表进⾏数据的拆分来使得各个表的数据量保持在阈值以下,以及对流量进⾏疏导应对⾼访问量,是应对⾼并发和海量数据系统的有效⼿段。

分库分表的问题

也就是分布式事务问题。

介绍

​ Sharding-JDBC 是当当网开源的适用于微服务的分布式数据访问基础类库,完整的实现了分库分表,读写分离和分布式主键功能,并初步实现了柔性事务。

​ **ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar这3款相互独立的产品组成。**他们均提供标准化的数据分片、分布式事务 和 数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。**Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。**Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,仍在不断增加中。

优势

​ **1、Sharding-JDBC直接封装JDBC API。**可以理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。

​ **2、可适用于任何基于Java的ORM框架。**如JPA、Hibernate、Mybatis、Spring JDBC Template或直接使用JDBC。

​ **3、可基于任何第三方的数据库连接池。**如DBCP、C3P0、 BoneCP、Druid等。理论上可支持任意实现JDBC规范的数据库。虽然目前仅支持MySQL,但已有支持Oracle、SQLServer等数据库的计划。

​ Sharding-JDBC定位为轻量Java框架,使用客户端直连数据库,以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式。Sharding-JDBC分片策略灵活,可支持等号、between、in等多维度分片,也可支持多分片键。SQL解析功能完善,支持聚合、分组、排序、limit、or等查询,并支持Binding Table以及笛卡尔积表查询。

与常见开源产品对比

img

​ **通过以上表格可以看出,Cobar(MyCat)属于中间层方案,在应用程序和MySQL之间搭建一层Proxy。中间层介于应用程序与数据库间,需要做一次转发,而基于JDBC协议并无额外转发,直接由应用程序连接数据库,性能上有些许优势。**这里并非说明中间层一定不如客户端直连,除了性能,需要考虑的因素还有很多,中间层更便于实现监控、数据迁移、连接管理等功能。

​ Cobar-Client、TDDL和Sharding-JDBC均属于客户端直连方案。此方案的优势在于轻便、兼容性、性能以及对DBA影响小。其中Cobar-Client的实现方式基于ORM(Mybatis)框架,其兼容性与扩展性不如基于JDBC协议的后两者。

img

​ 目前常用的就是Cobar(MyCat)与Sharding-JDBC两种方案

MyCAT

​ MyCAT它的后端可以支持MySQL, SQL Server, Oracle, DB2, PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库、容灾管理,而且可以用于多租户应用开发、云平台基础设施,让架构具备很强的适应性和灵活性,借助于MyCAT智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表隐射到不同存储引擎上,而整个应用的代码一行也不用改变。

​ MyCAT是在Cobar基础上发展的版本,两个显著提高:

1、后端由BIO改为NIO,并发量有大幅提高;

2、增加了对Order By, Group By, Limit等聚合功能

Sharding-JDBC

​ Sharding-JDBC定位为轻量Java框架,使用客户端直连数据库,以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式。适用于中小企业、或者中小团队。Sharding-JDBC分片策略灵活,可支持等号、between、in等多维度分片,也可支持多分片键。SQL解析功能完善,支持聚合、分组、排序、limit、or等查询,并支持Binding Table以及笛卡尔积表查询。

​ 一般情况下,开发维度的数据分片,大多是以水平切分模式(水平分库、分表)为基础来说的,垂直分片主要在于运维维度,或者做存储的深级改造的时候。

​ 简单来说,数据分片的工作分为两大工作,分片的拆分和分片的路由。

Sharding-JDBC数据分片

​ 数据分片就是按照分片规则(分片算法)把数据分到若干个shard、partition当中。主要的分片算法有精确分片算法、范围分片算法、复合分片算法、Hint分片算法。

分片算法类型

1、精确分片算法

精确分片算法(PreciseShardingAlgorithm)用于单个字段作为分片键,SQL中有 =IN 等条件的分片,需要在标准分片策略(StandardShardingStrategy )下使用。

2、范围分片算法

范围分片算法(RangeShardingAlgorithm)用于单个字段作为分片键,SQL中有 BETWEEN AND><>=<= 等条件的分片,需要在标准分片策略(StandardShardingStrategy )下使用。

3、复合分片算法

复合分片算法(ComplexKeysShardingAlgorithm)用于多个字段作为分片键的分片操作,同时获取到多个分片健的值,根据多个字段处理业务逻辑。需要在复合分片策略(ComplexShardingStrategy )下使用。

4、Hint分片算法

​ Hint分片算法(HintShardingAlgorithm)稍有不同,上边的算法中我们都是解析SQL 语句提取分片键,并设置分片策略进行分片。但有些时候我们并没有使用任何的分片键和分片策略,可还想将 SQL 路由到目标数据库和表,就需要通过手动干预指定SQL的目标数据库和表信息,这也叫强制路由。

算法与算法类

sharding-jdbc 提供了多种分片算法,其内部实现依据抽象分片算法类:ShardingAlgorithm

精确分片算法:对应PreciseShardingAlgorithm类,主要用于处理 = 和 IN的分片;
区间分片算法:对应RangeShardingAlgorithm类,主要用于处理 BETWEEN AND, >, <, >=, <= 分片;
复合分片算法:对应ComplexKeysShardingAlgorithm类,用于处理使用多键作为分片键进行分片的场景;
Hint分片算法:对应HintShardingAlgorithm类,用于处理使用 Hint 行分片的场景;

分片策略

​ 分片策略是一种抽象的概念,实际分片操作的是由分片算法和分片健来完成的。

1、标准分片策略

​ 标准分片策略适用于单分片键,此策略支持 PreciseShardingAlgorithmRangeShardingAlgorithm 两个分片算法。其中 PreciseShardingAlgorithm 是必选的,用于处理 =IN 的分片。RangeShardingAlgorithm 是可选的,用于处理BETWEEN AND><>=<= 条件分片,如果不配置RangeShardingAlgorithm,SQL中的条件等将按照全库路由处理

2、复合分片策略

​ 复合分片策略,对照ComplexShardingStrategy。同样支持对 SQL语句中的 =><>=<=INBETWEEN AND 的分片操作。不同的是它支持多分片键,具体分配片细节完全由应用开发者实现。

3、行表达式分片策略(inline内联分片策略)

行表达式分片策略,支持对 SQL语句中的 =IN 的分片操作,但只支持单分片键。这种策略通常用于简单的分片,不需要自定义分片算法,可以直接在配置文件中接着写规则。t_order_$->{t_order_id % 4} 代表 t_order 对其字段 t_order_id取模,拆分成4张表,而表名分别是t_order_0t_order_3

4、强制分片策略 (Hint分片策略)

​ **Hint 分片策略,通过指定分片健而非从 SQL 中提取分片健的方式进行分片的策略。**对于分⽚值⾮ SQL 决定,不是来自于分片建,甚至连分片建都没有 ,而由其他外置条件决定的场景,可使⽤Hint 分片策略 。Hint 分片算法,是手工设置的⽅式,进⾏分⽚的策略。

5、不分片策略

​ 对应 NoneShardingStrategy。不分⽚的策略。这种严格来说不算是一种分片策略了,只是ShardingSphere也提供了这么一个配置。

核心概念

分片键

​ **分⽚键⽤于分⽚的字段,是将数据库(表)⽔平拆分的关键字段。**在对表中的数据进行分片时,首先要选出一个分片键(Shard Key),即用户可以通过这个字段进行数据的水平拆分。

说明

  • 除了使用单个字段作为分片件, sharding-jdbc 还支持根据多个字段作为分片健进行分片。
  • SQL 中如果⽆分⽚字段,将执⾏全路由,性能较差。

数据节点

​ 数据节点是分库分表中一个不可再分的最小数据单元(表),它由数据源名称和数据表组成。

逻辑表

​ 逻辑表是指一组具有相同逻辑和数据结构表的总称。

真实表

​ 真实表也就是 t_order_n 数据库中真实存在的物理表。

数据执行过程

执行过程

​ 数据分片之后,数据查询执行过程为:

SQL 解析 -> 查询优化 -> SQL 路由 -> SQL 改写 -> SQL 执⾏ -> 结果归并。

1、SQL 解析

​ 将用户提交的 SQL 查询语句解析为数据库可以理解的语法结构,以便后续处理。说白了就是将拆分后的SQL转换为抽象语法树,通过对抽象语法树遍历,提炼出分片所需的上下文。上下文包含查询字段信息(Field)、表信息(Table)、查询条件(Condition)、排序信息(Order By)、分组信息(Group By)以及分页信息(Limit)等,并标记出 SQL中有可能需要改写的位置。
​ Sharding-JDBC有提供专门的SQL解析引擎,支持多种方言的MySQL、PostgreSQL、SQLServer、Oracle、SQL92。

​ 抽象语法树。解析过程分为词法解析和语法解析。词法解析器⽤于将 SQL 拆解为不可再分的原⼦符号,称为 Token。并根据不同数据库⽅⾔所提供的字典,将其归类为关键字,表达式,字⾯量和操作符。再使⽤语法解析器将 SQL 转换为抽象语法树。

2、查询优化

​ 对解析后的查询进行优化,选择最优的执行计划(待确定是否存在获取表结构、索引数据),以便在执行查询时能够高效地访问数据。

3、SQL 路由

SQL 路由通过解析分片上下文,匹配到用户配置的分片策略,并生成路由路径。简单点理解就是可以根据我们配置的分片策略计算出 SQL该在哪个库的哪个表中执行,而SQL路由又根据有无分片健区分出 分片路由广播路由

其中有分⽚键的路由叫分片路由,细分为直接路由、标准路由和笛卡尔积路由这3种类型。

img

直接路由(暗示路由)

​ 通过使用 HintAPI 直接将 SQL路由到指定⾄库表的一种分⽚方式,而且直接路由可以⽤于分⽚键不在SQL中的场景,还可以执⾏包括⼦查询、⾃定义函数等复杂情况的任意SQL。因此它的兼容性最好,可以执行包括子查询、自定义函数等复杂情况的任意 SQL。直接路由还可以用于分片键不在 SQL 中的场景。例如,设置用于数据库分片的值为 3

标准路由

​ 标准路由是最推荐也是最为常⽤的分⽚⽅式,它的适⽤范围是不包含关联查询或仅包含绑定表之间关联查询的SQL。

  • 当 SQL分片健的运算符为 = 时,路由结果将落⼊单库(表),路由策略返回的是单个的目标。
  • 当分⽚运算符是BETWEENIN 等范围时,路由结果则不⼀定落⼊唯⼀的库(表),因此⼀条逻辑SQL最终可能被拆分为多条⽤于执⾏的真实SQL。
笛卡尔积路由

笛卡尔路由是由非绑定表之间的关联查询产生的,查询性能较低尽量避免走此路由模式。笛卡尔路由是最复杂的情况,它无法根据绑定表的关系定位分片规则,因此非绑定表之间的关联查询需要拆解为笛卡尔积组合执行。

​ 例如:SELECT * FROM t_order_0 o JOIN t_order_item_0 i ON o.order_id=i.order_id WHERE order_id IN (1, 2);

广播路由

​ 无分⽚键的路由又叫做广播路由,可以划分为全库表路由、全库路由、 全实例路由、单播路由和阻断路由这 5种类型。

全库表路由

​ 全库表路由针对的是数据库 DQL和 DML,以及 DDL等操作,当执行一条逻辑表 t_order SQL时,在所有分片库中对应的真实表 t_order_0 ··· t_order_n 内逐一执行。

全库路由

​ 全库路由主要是对数据库层面的操作,比如数据库 SET 类型的数据库管理命令,以及 TCL 这样的事务控制语句。对逻辑库设置 autocommit 属性后,所有对应的真实库中都执行该命令。

全实例路由

​ 全实例路由是针对数据库实例的 DCL 操作(设置或更改数据库用户或角色权限),比如:创建一个用户 order ,这个命令将在所有的真实库实例中执行,以此确保 order 用户可以正常访问每一个数据库实例。

单播路由

​ 单播路由用来获取某一真实表信息,比如获得表的描述信息:

阻断路由

⽤来屏蔽SQL对数据库的操作,例如:USE order_db;这个命令不会在真实数据库中执⾏,因为 ShardingSphere 采⽤的是逻辑 Schema(数据库的组织和结构) ⽅式,所以无需将切换数据库的命令发送⾄真实数据库中。

4、SQL 改写

​ 在数据库分片中,由于数据分布在多个节点上,可能需要对原始查询进行改写,以便在每个分片节点上执行局部查询,然后合并结果。当分库分表以后真实数据库中 t_order 表就不存在了,而是被拆分成多个子表 t_order_n 分散在不同的数据库内,还按原SQL执行显然是行不通的,这时需要将分表配置中的逻辑表名称改写为路由之后所获取的真实表名称。

5、SQL 执行

​ 在各个分片节点上执行局部查询。

6、结果归并

​ 将分片节点上的局部查询结果进行合并,生成最终的查询结果。而我们SQL中的排序、分组、分页和聚合等语法,均是在归并后的结果集上进行操作的。

小结

​ 数据库分片的引入主要是为了处理大规模数据集和高并发负载,以提高数据库的扩展性和性能。然而,分片架构也会引入一些复杂性和管理难题,因此在设计和实施分片时需要仔细考虑各个方面,包括数据分布、查询路由、数据一致性等。

原理分析

​ 从源码上看,Sharding-JDBC对原有的 DataSource、Connection 等接口扩展成 ShardingDataSource、ShardingConnection,而对外暴露的分片操作接口与 JDBC 规范中所提供的接口完全一致,只要熟悉 JDBC 就可以轻松应用 Sharding-JDBC 来实现分库分表。

疑问

1、分库分表后,模糊条件查询怎么处理?

​ 目前绝大部分公司的核心数据都是:以RDBMS存储为主,NoSQL/NewSQL存储为辅!RDBMS互联网公司又以MySQL为主,NoSQL比较具有代表性的是MongoDB,es;NewSQL比较具有代表性的是TiDB。

​ 但是,MySQL单表可以存储10亿级数据,行业认可的,MySQL单表容量在1KW以下, 所以必然要分库分表,以sharding-jdbc为例,有多少个分库分表,就要并发路由到多少个分库分表中执行,然后对结果进行合并。尤其是有些模糊条件查询,或者上十个条件筛选。这种条件查询相对于有sharding column的条件查询性能很明显会下降很多。所以建议有sharding column的查询走分库分表,一些模糊查询,或者多个不固定条件筛选则走es,海量存储则交给HBase。

HBase特点:

​ 所有字段的全量数据保存到HBase中,Hadoop体系下的HBase存储能力是海量的,rowkey查询速度快,快如闪电(可以优化到50Wqps甚至更高)。

es特点:

​ es的多条件检索能力非常强大。可能参与条件检索的字段索引到ES中。这个方案把es和HBase的优点发挥的淋漓尽致,同时又规避了它们的缺点,可以说是一个扬长避免的最佳实践。这就是经典的ES+HBase组合方案,即索引与数据存储隔离的方案。

总结

​ 合理的利用中间件,若是数据库单表承受压力快达到上限了,可以采用分库分表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/864293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式作业调度框架——ElasticJob

1、简介 ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案&#xff0c;由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能&#xff0c;打造一个适用于互联网场景的分布式调度解决方案&#xff0c;…

c语言进阶部分详解(数据在内存中的存储)

大家好&#xff0c;今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中&#xff0c;数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程&#xff0c;优化内存使用&#xff0c;提高程序的性能。 目录 一.数…

5.0SMDJ24CA 瞬态抑制TVS二极管 可过4kV 2Ω测试

瞬态概述 浪涌描述的是存在于电源或信号线上uS级以上的脉冲。通常浪涌产生于雷击或开关瞬变能量。雷击能量可能是由于直击雷或感应雷作用于系统所产生的瞬变能量&#xff0c;开关瞬变能量通常由于配电系统的电源切换&#xff0c;或是负载的变化导致。 雷击浪涌测试目的 GB/T …

QT中的PRO文件怎么进行相关的信息的注释?

小白学开发之QT下的PRO文件怎么进行注释&#xff0c;以及Pro文件的作用 Hello大家好&#xff0c;这里是程序员小白学开发&#xff0c;我是一个刚入门QT的初学者&#xff0c;晕乎晕乎的&#xff01;希望能够随时随地将自己所学的知识分享给大家&#xff0c;带着大学从零基础开始…

测试设计规范:优秀实践的全面指南

测试设计规范是一个定义了与测试项目相关的测试条件、详细的测试方法和高级测试用例的文档。它确定了要运行哪些测试套件和测试用例&#xff0c;以及要跳过哪些。 使用测试设计规范&#xff0c;可以简化对当前测试周期的理解。这个文档回答了像“我们在做什么?”&#xff0c;…

springcloud3 springcloud stream的学习以及案例(了解)

一 springcloud stream的作用 1.1 springcloud stream作用 stream屏蔽底层消息中间件的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型。 stream中的消息通信模式遵循了“发布-订阅”模式。 1.2 Binder作用 通过定义绑定器Binder作为中间层&#xff0c;实现…

基于DEM tif影像的插值平滑和tif纹理贴图构建方法

准备数据是一个10米分辨率的Tif影像&#xff0c;直接用于生成DEM会十分的不平滑。如下图所示&#xff0c;平滑前后的对比效果图差异&#xff1a; 基于ArcGIS的DEM平滑插值 等值线生成&#xff08;指定加密间距&#xff09; 平滑线&#xff08;指定平滑容差平滑等高线&#xff0…

jackson库收发json格式数据和ajax发送json格式的数据

一、jackson库收发json格式数据 jackson库是maven仓库中用来实现组织json数据功能的库。 json格式  json格式一个组织数据的字符文本格式&#xff0c;它用键值对的方式存贮数据&#xff0c;json数据都是有一对对键值对组成的&#xff0c;键只能是字符串&#xff0c;用双引号包…

python爬虫——爬虫伪装和反“反爬”

前言 爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序&#xff0c;从而减少被服务器封禁的风险&#xff1b;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧&#xff0c;并提…

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用&#xff08;branch prediction target reuse&#xff09;引发的前瞻执行处理器漏洞 CV…

2000-2022年全国各地级市绿色金融指数数据

2000-2022年全国各地级市绿色金融指数数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;来源&#xff1a;统计局、科技部、中国人民银行等权威机构网站及各种权威统计年鉴&#xff0c;包括全国及各省市统计年鉴、环境状况公报及一些专业统计年鉴&#xff0c;如 《中国…

工厂老化设备维护的重要性及如何维护老化设备?

工业领域的老化设备问题日益凸显&#xff0c;对于保持生产稳定和效率至关重要。本文将探讨工厂老化设备维护的重要性&#xff0c;并介绍如何通过PreMaint设备数字化平台实现对老化设备的高效维护&#xff0c;从而确保工厂持续高效运转。 一、工厂老化设备的重要性 随着时间的推…

Flutter实现倒计时功能,秒数转时分秒,然后倒计时

Flutter实现倒计时功能 发布时间&#xff1a;2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 有一个需求&#xff0c;需要在页面进行显示倒计时&#xff0c;倒计时结束后&#xff0c;做相应的逻辑处理。 实…

【Spring专题】Bean的声明周期流程图

前言 我向来不主张【通过源码】理解业务&#xff0c;因为每个人的能力有限&#xff0c;甚至可能会因为阅读错误导致出现理解上的偏差&#xff0c;所以我决定&#xff0c;还是先帮大家【开天眼】&#xff0c;先整体看看流程图&#xff0c;好知道&#xff0c;Spring在写源码的过…

山东Certum公网IP证书申请

Certum作为欧洲第一个通过WebTrust的CA认证机构&#xff0c;一直致力于为用户提供高质量的数字证书服务。WebTrust是一种全球认可的数字证书认证标准&#xff0c;它确保了数字证书颁发机构的操作符合严格的标准和程序。Certum通过WebTrust的认证&#xff0c;证明了其数字证书服…

Practices9(双指针)|283. 移动零、11. 盛最多水的容器、15. 三数之和

283. 移动零 1.题目&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,…

豪越HYDO智能运维助力智慧医院信息化建设

随着国家政策的推动与支持&#xff0c;医疗行业信息化应用不断普及&#xff0c;大数据、AI、医疗物联网等技术的应用&#xff0c;快速推动了电子病历、智慧服务、智慧管理的智慧医院建设和医院信息标准化建设&#xff0c;通过不断探索创新“智慧医院”服务模式&#xff0c;实现…

中国首份仿生机器人产业全景报告发布!大模型带来加速度,三大指标决定竞争格局

AGI火热发展&#xff0c;让仿生机器人的实现补全了最后一块重要拼图。 一直以来&#xff0c;仿生机器人都代表人类对于科技的一种终极想象&#xff0c;备受产业圈热捧。 马斯克、雷军等&#xff0c;纷纷押注这一赛道。特斯拉全尺寸仿生机器人Optimus、小米全尺寸通用人形机器…

资深测试员才知道的五个行业秘密

作为一名资深测试员&#xff0c;总有一些平时难以诉说的行业秘密&#xff0c;我也不例外。也许这些秘密你认可&#xff0c;也许你嗤之以鼻&#xff0c;但不管如何&#xff0c;我都希望能给你带来一丝感悟&#xff0c;更深的认识测试&#xff0c;并走得更远。 1、手工测试不可替…

【Linux】网络基础2

文章目录 网络基础21. 应用层1.1 协议1.2 HTTP 协议1.2.1 URL1.2.2 urlencode和urldecode1.2.3 HTTP协议格式1.2.4 HTTP的方法1.2.5 HTTP的状态码1.2.6 HTTP 常见的header1.2.7 最简单的HTTP服务器 2. 传输层2.1 端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2…