浅谈云计算15 | 存储可靠性技术(RAID)
存储可靠性技术
- 一、存储可靠性需求
- 1.1 数据完整性
- 1.2 数据可用性
- 1.3 故障容错性
- 二、传统RAID技术剖析
- 2.1 RAID 0
- 2.2 RAID 1
- 2.3 RAID 5
- 2.4 RAID 6
- 2.5 RAID 10
- 三、RAID 2.0+技术
- 3.1 RAID 2.0+技术原理
- 3.1.1 两层虚拟化管理模式
- 3.1.2 数据分布与重构
- 3.2 RAID 2.0+技术优势
- 3.2.1 自动负载均衡
- 3.2.2 快速重构
- 3.2.3 性能提升
存储可靠性是云计算存储的核心要素,它直接关系到数据的完整性、可用性和安全性。一旦存储系统出现故障,导致数据丢失或损坏,可能会给企业带来巨大的经济损失,甚至影响到其生存与发展。在金融行业,客户的交易记录、账户信息等数据若丢失,不仅会引发客户信任危机,还可能面临法律风险和巨额赔偿。
一、存储可靠性需求
1.1 数据完整性
数据完整性是存储可靠性的核心要素之一,它强调确保数据在整个生命周期中不被篡改、丢失或损坏,始终保持其原始的准确性和一致性 。在云计算存储环境中,数据可能会面临来自内部系统错误、外部恶意攻击等多种威胁,任何数据的完整性遭到破坏,都可能导致严重的后果。在金融交易数据中,若交易金额、账户信息等关键数据被篡改,可能引发资金损失和金融秩序混乱;在医疗记录中,错误的数据可能导致误诊,危及患者生命安全。
1.2 数据可用性
数据可用性是指在用户需要时,数据能够随时被访问和使用的能力 。在云计算环境下,用户对数据的访问需求具有实时性和突发性,因此确保数据的高可用性至关重要。无论是企业的日常业务运营,还是个人用户对云存储中数据的频繁访问,都依赖于数据的随时可用。若数据无法及时获取,将导致业务中断、工作效率降低,甚至影响用户体验和信任度。
1.3 故障容错性
故障容错性是云计算存储系统应对各种硬件故障、软件错误以及网络问题等异常情况的能力 。在复杂的云计算环境中,硬件设备的故障是不可避免的,如硬盘损坏、服务器死机等;软件系统也可能出现漏洞、错误导致数据丢失或服务中断;网络故障则可能导致数据传输中断或延迟。因此,存储系统必须具备强大的故障容错能力,以确保在各种故障场景下,数据的安全性和系统的正常运行。
二、传统RAID技术剖析
2.1 RAID 0
RAID 0 是一种通过数据条带化来显著提升读写性能的磁盘阵列技术。在RAID 0中,数据被分割成大小相等的数据块,这些数据块被均匀且交叉地分布存储在多个磁盘上,形成条带结构。这种分布方式使得数据的读写操作能够在多个磁盘上并行进行,极大地提高了数据的I/O性能。
以一个由四块磁盘组成的RAID 0阵列为例,当存储一个大型文件时,文件会被划分成多个数据块,如Block1、Block2、Block3、Block4等。这些数据块会分别存储在不同的磁盘上,Block1存储在磁盘1,Block2存储在磁盘2,Block3存储在磁盘3,Block4存储在磁盘4。在读取数据时,四个磁盘可以同时工作,并行读取各自存储的数据块,然后将这些数据块快速组合成完整的文件,大大缩短了读取时间。与传统的单个磁盘存储方式相比,RAID 0的读写速度有了显著提升,能够满足对数据处理速度要求极高的应用场景。在视频编辑领域,处理高清视频素材需要大量的数据读写操作。使用RAID 0阵列,视频编辑软件可以快速读取和写入视频数据,减少了素材加载时间和渲染等待时间,提高了视频编辑的效率。在大规模数据处理、科学计算等领域,RAID 0的高性能优势也得到了充分体现。
然而,RAID 0的一个显著缺点是缺乏数据冗余机制。由于数据被分散存储在多个磁盘上,且没有任何冗余备份,一旦其中任何一个磁盘发生故障,就会导致整个数据的丢失。因为数据块是相互关联的,缺少了某个磁盘上的数据块,就无法完整地恢复出原始数据。在一个企业的数据库系统中,如果采用RAID 0存储重要的业务数据,一旦某个磁盘出现故障,可能会导致大量业务数据丢失,给企业带来严重的经济损失和业务中断风险。因此,RAID 0通常适用于对数据可靠性要求不高,但对读写速度有极高要求的场景,如临时数据存储、高速缓存等,并且在使用RAID 0时,需要配合其他数据备份措施来确保数据的安全性。
2.2 RAID 1
RAID 1是一种基于数据镜像技术的磁盘阵列级别,其核心原理是将数据完全相同地复制到两个或多个磁盘上,形成镜像对。在一个由两块磁盘组成的RAID 1阵列中,当用户写入数据时,数据会同时被写入到这两块磁盘上,确保两块磁盘上的数据始终保持一致。这种数据镜像的方式为数据提供了极高的可靠性保障。
一旦其中一个磁盘发生故障,另一个磁盘上的数据副本可以立即接替工作,保证数据的正常访问和系统的持续运行。在金融行业的核心交易系统中,数据的准确性和完整性至关重要。采用RAID 1技术存储交易数据,即使其中一块磁盘出现硬件故障、磁盘损坏等问题,另一块磁盘上的镜像数据依然能够确保交易系统的稳定运行,避免因数据丢失而引发的金融风险和客户信任危机。在医疗领域,患者的病历数据关乎生命健康,不容有失。使用RAID 1对病历数据进行存储,可以有效防止因磁盘故障导致的数据丢失,保障医疗服务的连续性和准确性。
然而,RAID 1的高可靠性是以牺牲存储效率为代价的。由于数据需要在多个磁盘上进行完整复制,实际可用的存储容量仅为磁盘总容量的一半。在一个由两块1TB磁盘组成的RAID 1阵列中,虽然磁盘总容量为2TB,但实际能够用于存储用户数据的容量只有1TB。这意味着在存储成本方面,RAID 1相对较高,对于存储大量数据的场景来说,可能需要投入更多的硬件成本来满足存储需求。因此,RAID 1通常适用于对数据可靠性要求极高,且对存储容量需求相对较小的关键应用场景,如服务器系统盘、数据库关键数据存储等。
2.3 RAID 5
RAID 5是一种广泛应用的磁盘阵列技术,它采用分布式奇偶校验的方式来实现数据冗余和性能优化。在RAID 5阵列中,数据被分块存储在多个磁盘上,同时计算每个数据块的奇偶校验信息,并将这些奇偶校验信息均匀地分布存储在各个磁盘上。
以一个由三块磁盘组成的RAID 5阵列为例,假设要存储的数据块为D1、D2、D3,系统会计算出它们的奇偶校验信息P1(P1 = D1 ⊕ D2 ⊕ D3,其中⊕表示异或运算)。然后,将D1存储在磁盘1,D2存储在磁盘2,D3存储在磁盘3,而奇偶校验信息P1则存储在其中一个磁盘上,比如磁盘1。当读取数据时,系统可以通过读取数据块和相应的奇偶校验信息来验证数据的完整性。如果某个磁盘,如磁盘2发生故障,系统可以利用磁盘1上的D1和P1以及磁盘3上的D3,通过异或运算(D2 = D1 ⊕ P1 ⊕ D3)来重建出丢失的数据块D2,从而保证数据的完整性和可用性。
RAID 5在读写性能方面具有一定的特点。在读取数据时,由于可以并行从多个磁盘读取数据块,因此读取速度相对较快,能够满足大多数应用场景对数据读取的性能需求。在写入数据时,由于需要计算并更新奇偶校验信息,写入操作相对复杂,性能会受到一定影响。但相较于其他一些具有数据冗余的RAID级别,RAID 5在写入性能上仍具有一定的优势。在企业的文件服务器中,存储着大量的日常业务文件,如文档、报表等。采用RAID 5技术,既能保证在单个磁盘故障时数据不丢失,又能在一定程度上满足员工对文件读写的性能要求。同时,RAID 5至少需要三块磁盘才能构建,并且随着磁盘数量的增加,其存储效率也会相应提高,因为奇偶校验信息所占的磁盘空间比例会相对减少。
2.4 RAID 6
RAID 6是在RAID 5基础上发展而来的一种更高级的数据保护技术,它通过引入双重奇偶校验机制,为数据提供了更高的容错能力。在RAID 6阵列中,数据同样被分块存储在多个磁盘上,并且会计算出两组不同的奇偶校验信息,分别存储在不同的磁盘上。
以一个由四块磁盘组成的RAID 6阵列为例,假设要存储的数据块为D1、D2、D3、D4,系统会计算出两组奇偶校验信息P1和Q1(P1 = D1 ⊕ D2 ⊕ D3 ⊕ D4,Q1通过另一种独立的计算方式得出,例如基于不同的算法或数据块组合)。然后,将数据块和奇偶校验信息分布存储在四个磁盘上,如D1存储在磁盘1,D2存储在磁盘2,D3存储在磁盘3,D4存储在磁盘4,P1存储在磁盘1,Q1存储在磁盘2。这样,当任意两个磁盘发生故障时,系统可以利用剩余磁盘上的数据块和奇偶校验信息,通过复杂的算法重建出丢失的数据。如果磁盘1和磁盘3出现故障,系统可以通过磁盘2上的D2、Q1以及磁盘4上的D4和P1,经过一系列的运算(涉及到两种奇偶校验信息的协同计算)来恢复出D1和D3的数据块,从而确保数据的完整性。
RAID 6的双重奇偶校验机制使得它能够容忍两个磁盘同时故障的极端情况,这在数据安全性要求极高的场景中具有重要意义。在大型数据中心,存储着海量的关键业务数据,如金融机构的交易数据、互联网公司的用户数据等,这些数据一旦丢失,可能会带来无法估量的损失。采用RAID 6技术,可以有效降低因磁盘故障导致的数据丢失风险,保障业务的连续性和稳定性。然而,这种高可靠性的实现也带来了一定的代价。由于需要计算和存储两组奇偶校验信息,RAID 6的存储效率相对较低,成本也相对较高。在存储同样数量的数据时,RAID 6需要比RAID 5更多的磁盘空间来存储奇偶校验信息,这意味着硬件成本的增加。同时,由于写入数据时需要更新两组奇偶校验信息,其写入性能也会受到一定程度的影响,相较于RAID 5会更慢一些。
2.5 RAID 10
RAID 10是一种结合了RAID 0的条带化技术和RAID 1的镜像技术的磁盘阵列级别,它融合了两者的优势,既具备高性能的数据读写能力,又拥有高可靠性的数据冗余保障。在RAID 10阵列中,首先将磁盘划分为多个镜像对,然后在这些镜像对之间进行条带化处理。
以一个由八块磁盘组成的RAID 10阵列为例,将这八块磁盘分为四组镜像对,即(磁盘1和磁盘2)、(磁盘3和磁盘4)、(磁盘5和磁盘6)、(磁盘7和磁盘8)。在每组镜像对中,数据以镜像的方式存储,确保数据的冗余性。当写入数据时,数据会同时被写入到每组镜像对中的两个磁盘上,保证数据的安全性。然后,将这四组镜像对进行条带化,即把数据分块后交叉存储在不同的镜像对之间。假设要存储一个大文件,文件被分成多个数据块,Block1存储在磁盘1,Block2存储在磁盘3,Block3存储在磁盘5,Block4存储在磁盘7,而它们的镜像数据分别存储在对应的磁盘2、磁盘4、磁盘6、磁盘8上。在读取数据时,多个镜像对可以同时并行读取数据块,大大提高了数据的读取速度,这体现了RAID 0条带化技术的高性能优势。
由于数据以镜像的方式存储在多个磁盘上,即使某个镜像对中的一个磁盘发生故障,另一个磁盘上的数据副本仍然可以保证数据的可用性。而且,RAID 10能够容忍多个磁盘故障,只要故障磁盘不来自同一镜像对,数据就不会丢失。在一个企业的数据库服务器中,采用RAID 10技术存储数据库数据,既可以满足数据库对大量数据读写的高性能需求,确保业务系统的快速响应,又能在面对磁盘故障时,保障数据的安全可靠,避免因数据丢失而导致的业务中断。因此,RAID 10适用于对数据安全性和读写性能都有较高要求的场景,如大型数据库系统、关键业务应用服务器等。不过,RAID 10需要较多的磁盘数量来构建,硬件成本相对较高,在实际应用中需要根据具体的业务需求和预算进行综合考虑 。
三、RAID 2.0+技术
3.1 RAID 2.0+技术原理
3.1.1 两层虚拟化管理模式
RAID 2.0+技术创新性地采用了两层虚拟化管理模式,这种模式在底层块级虚拟化的硬盘管理基础上,结合上层虚拟化的资源管理,实现了对存储资源的高效、灵活管理 。
在底层,块级虚拟化通过将硬盘划分为CK,为存储资源的管理提供了细粒度的基础。不同硬盘的CK被组合成具有RAID属性的逻辑集合,即Chunk Group(CKG) 。CKG的形成是基于用户在存储系统中设置的“RAID策略”,例如可以选择类似RAID 5、RAID 6等不同的冗余策略来构建CKG。在一个包含多个硬盘的存储池中,系统会根据用户设定的RAID策略,从不同硬盘中选取CK组成CKG,以实现数据的冗余存储和可靠性保障。如果用户选择RAID 5策略,系统会在CKG中计算并存储奇偶校验信息,当某个CK出现故障时,能够利用其他CK和奇偶校验信息进行数据恢复。
在上层,资源管理则是基于存储池进行的。存储池是由多个硬盘域中的资源组成的逻辑容器,所有应用服务器使用的存储空间都来自于存储池。用户在创建逻辑单元号(LUN)时,不再直接与物理硬盘或传统的RAID组相关联,而是从存储池中分配空间。存储池通过对CKG的管理和调度,为用户提供了统一的、灵活的存储空间分配服务。当用户需要创建一个新的LUN时,存储池会根据用户的需求和存储池的资源情况,从合适的CKG中分配相应的CK来组成LUN。这种上层虚拟化的资源管理方式,使得用户无需关心底层物理硬盘的具体情况,只需要关注存储池提供的逻辑存储空间,大大简化了存储资源的管理和使用。
通过底层块级虚拟化和上层虚拟化的协同工作,RAID 2.0+技术实现了对存储资源的高效管理。它不仅提高了存储资源的利用率,还增强了系统的灵活性和可扩展性。在企业业务不断发展,存储需求不断变化的情况下,RAID 2.0+的两层虚拟化管理模式能够方便地对存储资源进行调整和优化。当企业需要增加存储容量时,可以通过向存储池中添加硬盘域的方式,轻松扩展存储池的容量,而无需对上层应用进行大规模的调整。
3.1.2 数据分布与重构
在RAID 2.0+技术中,数据分布采用了独特的策略,以确保数据在存储池中的均匀性和可靠性 。当数据写入存储系统时,会被分割成多个CK,并根据一定的算法均匀地分布到存储池的各个硬盘上。这种算法通常会考虑硬盘的剩余容量、性能等因素,以实现硬盘负载的均衡。在一个由多个不同类型硬盘组成的存储池中,算法会优先将数据分配到剩余容量较大且性能较好的硬盘上,避免某些硬盘因负载过重而影响整个存储系统的性能。同时,数据在分布过程中,会根据用户设置的RAID策略,在CKG中进行冗余存储。如果采用RAID 6策略,数据会在CKG中存储两组不同的奇偶校验信息,以提高数据的容错能力。
当存储系统中的某个硬盘或CK出现故障时,RAID 2.0+技术具备高效的数据重构机制 。与传统RAID技术不同,RAID 2.0+的重构不是局限于单个RAID组内的硬盘,而是涉及到故障硬盘所在硬盘域中的所有同类型硬盘。在一个包含多个硬盘域的存储系统中,每个硬盘域可能包含不同类型的硬盘,如SSD、SAS等。当某个SSD硬盘出现故障时,系统会自动触发重构机制,利用该硬盘域中其他同类型的SSD硬盘上的数据和校验信息,对故障硬盘上的数据进行重构。由于RAID 2.0+技术采用了块虚拟化和多硬盘参与重构的方式,大大增加了参与重构的硬盘数量,使得重构数据流的写带宽不再成为重构速度的瓶颈,从而显著提升了数据重构的速度。在传统RAID 5中,当一块硬盘出现故障时,重构过程可能需要十几个小时甚至几十个小时,而在RAID 2.0+系统中,由于多个硬盘同时参与重构,数据重构时间能够大幅缩短,可能只需要几个小时甚至更短时间,极大地降低了数据丢失的风险,提高了存储系统的可靠性和可用性 。
3.2 RAID 2.0+技术优势
3.2.1 自动负载均衡
当数据写入存储系统时,会被分割成多个CK,并依据特定的算法,均匀地分布到存储池的各个硬盘上。这种算法充分考虑了硬盘的剩余容量、性能等因素,确保数据能够均衡地分配到各个硬盘,避免了数据集中在某些特定硬盘上的情况,确保了也用户数据能够快速、稳定地读写,还延长了硬盘的使用寿命,降低了硬件故障率。
3.2.2 快速重构
RAID 2.0+技术在数据重构方面展现出了显著的优势,极大地提升了存储系统在面对硬盘故障时的恢复能力,有效降低了数据丢失的风险 。在传统RAID技术中,数据重构过程存在诸多局限性。以传统RAID 5为例,当一块硬盘出现故障时,重构过程需要从其他正常硬盘读取数据,并通过奇偶校验信息计算出故障硬盘上的数据,然后将其写入热备盘。由于热备盘的写入速度有限,且在重构过程中,其他正常硬盘的读写操作也会受到一定影响,导致重构速度较慢。在数据量较大的情况下,重构一块硬盘可能需要十几个小时甚至几十个小时。在如此漫长的重构时间内,存储系统处于单冗余状态,一旦其他硬盘再次出现故障,就极有可能导致数据丢失,给企业带来巨大的损失。
相比之下,RAID 2.0+技术采用了创新的块虚拟化和多硬盘参与重构的方式,彻底打破了传统RAID技术重构的性能瓶颈。在RAID 2.0+系统中,当某个硬盘出现故障时,重构机制会自动触发,且涉及到故障硬盘所在硬盘域中的所有同类型硬盘 。由于参与重构的硬盘数量大幅增加,数据重构过程中的写带宽不再成为瓶颈,从而显著提升了重构速度。例如,在某金融机构的数据存储中心,采用了RAID 2.0+技术。一次,一块硬盘突然出现故障,但由于RAID 2.0+的快速重构机制,系统能够迅速利用硬盘域中其他同类型硬盘的数据和校验信息,对故障硬盘上的数据进行重构。整个重构过程仅用了短短几个小时,就完成了数据的恢复,确保了金融业务的正常运行,避免了因数据丢失而可能引发的金融风险和客户信任危机 。
3.2.3 性能提升
RAID 2.0+技术在读写性能方面实现了显著提升,为用户提供了更高效的数据存储和访问体验 。在读取性能上,RAID 2.0+技术通过块虚拟化和条带化技术的协同作用,能够实现数据的并行读取。由于数据被均匀地分布到多个硬盘的CK中,当用户请求读取数据时,多个硬盘可以同时工作,并行读取各自存储的CK数据块,然后将这些数据块快速组合成完整的数据,大大缩短了数据的读取时间。在一个科研项目中,需要频繁读取大量的实验数据进行分析。采用RAID 2.0+技术后,实验数据被分散存储在多个硬盘上,科研人员在读取数据时,多个硬盘能够并行工作,快速将所需数据传输到计算设备中,大大提高了数据分析的效率,加快了科研项目的进展。
在写入性能方面,虽然传统RAID技术在写入数据时,需要计算并更新奇偶校验信息,这会增加写入操作的复杂性和时间开销。而RAID 2.0+技术通过优化数据分布和写入算法,减少了写入操作的性能损耗。在数据写入时,RAID 2.0+系统会根据硬盘的负载情况和性能特点,智能地选择合适的硬盘进行数据写入,避免了传统RAID中可能出现的因写入操作集中在某些硬盘上而导致的性能瓶颈。
通过对RAID 2.0+技术在自动负载均衡、快速重构和性能提升等方面优势的深入分析,可以看出该技术在提升云计算存储可靠性和性能方面具有显著的效果。在实际应用中,越来越多的企业和机构选择采用RAID 2.0+技术来构建其云计算存储系统,以满足日益增长的数据存储和处理需求,为业务的稳定发展提供坚实的技术支撑 。
(注:图片来源网络,如有侵权请联系删除)
相关文章:
浅谈云计算15 | 存储可靠性技术(RAID)
存储可靠性技术 一、存储可靠性需求1.1 数据完整性1.2 数据可用性1.3 故障容错性 二、传统RAID技术剖析2.1 RAID 02.2 RAID 12.3 RAID 52.4 RAID 62.5 RAID 10 三、RAID 2.0技术3.1 RAID 2.0技术原理3.1.1 两层虚拟化管理模式3.1.2 数据分布与重构 3.2 RAID 2.0技术优势3.2.1 自…...
vscode【实用插件】Material Icon Theme 美化文件图标
安装 在 vscode 插件市场的搜索 Material Icon Theme点 安装 效果...
json().get() 和 json[““] 的区别
以下是 json().get() 和 json[“”] 的区别: 使用方法和语法 json[“”]: 这是使用字典的索引操作符 [] 来访问 JSON 数据。假设 json 是一个字典,你可以通过 json[“key”] 的方式来获取对应 key 的值。 示例: python import js…...
商用车电子电气零部件电磁兼容条件和试验—目录
写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求,高压试验项目内容及要求。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 目录 商用车电子电气零部件电磁兼容条件和试验(1)—…...
【新人系列】Python 入门(二十六):常见设计模式
✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...
【跟着官网学技术系列之MySQL】第7天之创建和使用数据库1
前言 在当今信息爆炸的时代,拥有信息检索的能力很重要。 作为一名软件工程师,遇到问题,你会怎么办?带着问题去搜索引擎寻找答案?亦或是去技术官网,技术社区去寻找? 根据个人经验,一…...
Spark任务提交流程
当包含在application master中的spark-driver启动后,会与资源调度平台交互获取其他执行器资源,并通过反向注册通知对应的node节点启动执行容器。此外,还会根据程序的执行规划生成两个非常重要的东西,一个是根据spark任务执行计划生…...
使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))
一、API的选择 我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API 测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、…...
Docker的入门
一、安装Docker 本教程参考官网文档,链接如下: CentOS | Docker Docs 这个教程是基于你的虚拟机已经弄好了(虚拟机用的CentOS),并且有SecureCRT或者MobaXterm等等任意一个工具 1.1 卸载旧版 如果系统中存在旧版本的Docker&a…...
机器学习:监督学习与非监督学习
监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…...
神经网络常见操作(卷积)输入输出
卷积 dimd的tensor可以进行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2对于torch.nn.Convnd(in_channels,out_channels),改变的是tensor的倒数n1维的大小 全连接 使用torch.nn.Linear(in_features,out_features,bias)实现YXWT b,其中X 的形状为 (ba…...
海云安开发者安全智能助手D10荣膺 “ AI标杆产品 ” 称号,首席科学家齐大伟博士入选2024年度 “ 十大杰出青年 ”
2024年12月27日,粤港澳大湾区AI领袖峰会在深圳成功举办,大会表彰了在人工智能技术创新、应用实践和产业发展等方面取得优异成绩的企业和个人,深圳海云安网络安全技术有限公司开发者安全智能助手D10荣膺“AI标杆产品”称号。同时,公…...
O2O同城系统架构与功能分析
2015工作至今,10年资深全栈工程师,CTO,擅长带团队、攻克各种技术难题、研发各类软件产品,我的代码态度:代码虐我千百遍,我待代码如初恋,我的工作态度:极致,责任ÿ…...
C#,入门教程(27)——应用程序(Application)的基础知识
上一篇: C#,入门教程(26)——数据的基本概念与使用方法https://blog.csdn.net/beijinghorn/article/details/124952589 一、什么是应用程序 Application? 应用程序是编程的结果。一般把代码经过编译(等)过程&#…...
计算机网络(四)——网络层
目录 一、功能 二、IP数据报分片 三、DHCP动态主机配置协议 四、网络地址转换(NAT)技术 五、无分类编址CIDR 六、ARP地址解析协议 七、ICMP网际控制报文协议 八、IPv4和IPv6的区别 九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术 十、路由…...
VSCode的配置与使用(C/C++)
从0开始教你在vscode调试一个C文件 一.首先是配置你的编译环境,添加到环境变量(默认你是全新的电脑,没有安装vs2019之类的) 原因:因为相比于vs2019,vscode只是个代码编辑器,相当于一个彩色的、…...
《机器学习》——TF-IDF(关键词提取)
文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF(Term Frequency - Inverse Do…...
金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout
找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数: 默认值: -Xms512m -Xmx1024m 改为: -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错:An I/O error occurred …...
XML在线格式化 - 加菲工具
XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
thinkphp8.0 likeadmin 框架添加API 文档自动生成工具 apidoc支持
Apidoc 是一个便捷的 API 文档自动生成工具,它能帮助开发者快速生成和管理 API 文档。以下是 Apidoc 的主要特点和功能: 主要特点 开箱即用 安装后,无需繁杂配置,直接按照文档编写注释,即可自动生成 API 文档。 轻松编…...
计算机网络 (44)电子邮件
一、概述 电子邮件(Electronic Mail,简称E-mail)是因特网上最早流行的应用之一,并且至今仍然是因特网上最重要、最实用的应用之一。它利用计算机技术和互联网,实现了信息的快速、便捷传递。与传统的邮政系统相比&#…...
【Idea启动项目报错NegativeArraySizeException】
项目场景: Idea启动项目报错(打包不报错),项目在服务器部署运行没有问题,尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…...
长安“战疫”网络安全公益赛的一些随想
起因 今年刚进入大学,开始带校队,为了培养校队新成员,也就一直计划着和当地的一些高校合作交流,但是由于种种原因一直被搁置下来。正巧学校信息中心和四叶草有一个培训项目的合作,学校的网安协会也算是沾了光成为了培…...
【网络编程】基础知识
目录 网络发展史 局域网和广域网 局域网(LAN) 广域网(Wan) 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址(后续编程使用) IP地址转换 字节序 网络模型 网络的体系结…...
RK3568平台(音频篇)lineout无声调试
一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…...
计算机组成原理(计算机系统3)--实验三:取指和指令译码设计
一、 实验目标: 设计完成一个连续取指令并进行指令译码的电路,从而掌握设计简单数据通路的基本方法。 二、实验内容 本实验完成:1)首先完成一个译码器;2)接着实现一个寄存器文件;3࿰…...
紫光无人机AI飞控平台介绍
随着无人机技术的迅猛发展,无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品,为用户提供了从飞行控制到任务管理的一站式解决方案,尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…...
基于EMQX+MQTT+ESP32+Openharmony的开发实例
EMQX介绍 EMQ X 是基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQX 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实…...
npm发布组件(vue3+webpack)
1.初始化Vue项目 vue create my-app 2.本地运行 npm run serve 3.新增目录和文件 1. src/package/index.js 2. src/package/wlz-btn/index.vue 3. src/package/wlz-input/index.vue // src\package\index.js import WlzBtn from "./wlz-btn"; import WlzInput …...
kubuntu24.04配置vmware17.5.1
背景 个人主机的最后一次折腾吧。 丝滑上网前提:singbox实践https://blog.csdn.net/qq_43652666/article/details/145190110 vmware 博通官网下载vmware workstation pro 17.5.1版本,注意一个新注册的账号只能下载一个win版本的vmware和一个linux版本…...
开发规范
开发规范 企业项目开发有2种开发模式:前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题…...
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.4 使用Blocks创建自定义聊天机器人11.4.1 简单聊天机器人演示11.4.2 流式传输Chatbot11.4.3 添…...
[操作系统] 深入理解操作系统的概念及定位
概念 任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。 其核心功能如图片所示,包括: 内核 (Kernel): 内核是操作系统的核心部分,被认为是狭义上的操作系统,直接与硬件打交道。负责进程管理、内…...
redhat安装docker 24.0.7
1、下载docker镜像包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz 2、解压 tar -xvf docker-24.0.7.tgz 3、解压的docker文件夹全部移动至/usr/bin目录 cd docker cp -p docker/* /usr/bin 4、注册服务 vi /usr/lib/systemd/syste…...
数据库基础实验1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
安装MySQL详细步骤 1. 下载 MySQL 安装程序 访问 MySQL 官方网站:MySQL Downloads。在下载页面,选择 "MySQL Community (GPL) Downloads"。在 "MySQL Community Server" 部分,根据你的操作系统(Windows&…...
如何攻击一个服务器(仅用于教育及娱乐实验目的)
import socket import osdef create_virus():# 创建一个简单的病毒脚本,它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…...
HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)
在开发一款影视APP时,首页的轮播图是一个非常重要的部分。它不仅能够吸引用户的注意力,还能有效地推广重点内容。为了提升应用的性能和用户体验,可以实现轮播图的懒加载功能。本文将详细介绍如何在HarmonyOS NEXT应用开发中实现这一功能。 1.…...
Jmeter 简单使用、生成测试报告(一)
一、下载Jmter 去官网下载,我下载的是apache-jmeter-5.6.3.zip,解压后就能用。 二、安装java环境 JMeter是基于Java开发的,运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功(java -versio…...
采用海豚调度器+Doris开发数仓保姆级教程(满满是踩坑干货细节,持续更新)
目录 一、采用海豚调度器+Doris开发平替CDH Hdfs + Yarn + Hive + Oozie的理由。 1. 架构复杂性 2. 数据处理性能 3. 数据同步与更新 4. 资源利用率与成本 6. 生态系统与兼容性 7. 符合信创或国产化要求 二、ODS层接入数据 接入kafka实时数据 踩坑的问题细节 三、海…...
大疆最新款无人机发布,可照亮百米之外目标
近日,DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列,包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起,DJI Matrice 4T价格为38888元起。 图片来源:大疆官网 DJI Matrice 4E DJI Matrice 4T D…...
无公网IP 实现外网访问本地 Docker 部署 Navidrome
Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…...
踏上 C++ 编程之旅:开篇之作
踏上 C 编程之旅:开篇之作 在计算机编程的广袤天地中,C 宛如一座巍峨的高峰,吸引着无数开发者攀登探索。今天,就让我们一同开启这段充满挑战与惊喜的 C 编程之旅,在代码的世界里开辟属于自己的道路。 一、为什么选择…...
JS逆向系列之某考古站数据解密
声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 文章目录 声明本次目标网址逆向分析ing代码python实现最近太忙了,博客摆烂了好久,狗头保命.jpg。 本次目标网址 aHR0cHM6Ly93d3cua2F…...
idea 如何安装 github copilot
idea 如何安装 github copilot 要在 IntelliJ IDEA 中安装 GitHub Copilot,可以按照以下步骤操作: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件管理器: 点击菜单栏中的 File。 选择 Settings(Windows/Linux)或 Prefere…...
html5各行各业官网模板源码下载 (4)
文章目录 1.来源2.源码模板2.1 html实现酷炫美观的可视化大屏(十种风格示例,附源码)2.2 HTML5实现古典音乐网站源码模板22.3 HTML5实现古典音乐网站源码模板32.4 HTML5实现小鸟过管道小游戏源码2.5 HTML5实现俄罗斯方块小游戏2.5 HTML5实现剪刀石头布小游戏(附源码)…...
2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一
2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一) 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1:网络平台搭建任务 2:网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二:网络安全事件…...
理解CPU负载与使用率
目录 CPU使用率 CPU负载 CPU使用率 定义:就像看一个工人干活的时间占他上班时间的比例。比如工人上班8小时,实际干活6小时,干活时间占比就是68100%75%。对于CPU,单核的看它被占用的时间占总时间的比例,多核的就把每个…...
鸿蒙-点击Notification通知并打开App的具体页面
意图通知 获取router事件中传递参数并跳转 目前点击通知消息打开应用的指定页面,通过为通知添加行为意图的方式。也就是在wants的parameters中设置自定义参数,然后在UIAbility的onNewWant或者onCreate方法中 解析配置的自定义参数信息判断跳转不同页面&a…...
Jmeter分布式测试的注意事项和常见问题
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠…...
w~Transformer~合集11
我自己的原文哦~ https://blog.51cto.com/whaosoft/12472192 #LightSeq 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎,近年来,Transformer 已经成为了 NLP 和 CV 等领域的主流模型,但庞大的模型参数限制了它的高效训练和推理。…...