NoSQL数据库

news2025/1/17 5:53:20

NoSQL数据库

  • NoSQL简介
  • NoSQL兴起的原因
  • NoSQL与关系数据库的对比
  • NoSQL的四大类型
    • 键值数据库
    • 列族数据库
    • 文档数据库
    • 图形数据库
    • 不同类型数据库比较分析
      • Redis
      • MongoDB
      • Cassandra
      • Neo4j
  • NoSQL三大基石
    • CAP
    • BASE
    • 最终一致性

NoSQL简介

“Not Only SQL”泛指非关系型的数据库,区别于关系数据库,它们不能保证关系数据的ACID特性。
NoSQL适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。
在这里插入图片描述
NoSQL不是一个工具,而是由一些具有互补性和竞争性的工具组成的一个概念,是一个生态圈。
NoSQL 系统舍弃了许多传统关系型数据库的方便之处,而把一些通常由关系型数据库本身来完成的任务交给了应用层来完成。
NoSQL主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种NoSQL都有其特有的使用场景及优点。

NoSQL的两个核心思想

  • Google的BigTable提出的数据模型,将各列数据进行排序存储
  • Amazon的Dynamo使用的是另外一种分布式模型,其数据分片模型有比较强的容灾性,因此它实现的是相对松散的弱一致性:最终一致性

现实中这些思想都是混搭使用的

NoSQL兴起的原因

  • Web1.0
    — 以编辑为特征,网站提供给用户的内容是网站编辑进行编辑处理后提供的,用户阅读网站提供的内容。
    — 过程是网站到用户的单向行为。
    — web1.0时代的代表站点为新浪,搜狐,网易三大门户。
  • Web2.0
    — 更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。
    — 以网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与;用户在web2.0网站系统内拥有自己的数据。并完全基于WEB,所有功能都能通过浏览器完成。
    — web2.0时代的代表站点为Facebook、Twitter。

关系数据库已经无法满足Web2.0的需求,主要表现在以下几个方面:

  • 无法满足海量数据的管理需求
  • 无法满足数据高并发的需求
  • 无法满足可扩展性和高可用性的需求
    关系数据库的关键特性包括完善的事务机制高效的查询机制。但是,关系数据库引以为傲的两个关键特性,到了Web2.0时代却成了鸡肋,主要表现在以下几个方面:
  • Web2.0网站系统通常不要求严格的数据库事务。
  • Web2.0并不要求严格的读写实时性。
  • Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能)。

NoSQL与关系数据库的对比

比较标准RDBMSNoSQL备注
数据库原理完全支持部分支持NoSQL没有统一的理论基础
数据规模超大RDBMS的性能会随着数据规模的增大而降低,NoSQL容易通过添加更多设备来支持更大规模的数据
数据库模式固定灵活RDBMS需要定义数据库模式,严格遵守数据定义和相关约束条件;NoSQL不存在数据库模式,可以自由灵活定义并存储各种不同类型的数据
查询效率可以实现高效的简单查询,复杂查询的性能不尽人意RDBMS借助于索引机制可以实现快速查询;很多NoSQL数据库没有面向复杂查询的索引
一致性强一致性弱一致性RDBMS严格遵守事务ACID模型;NoSQL数据库放松了对事务ACID四性的要求,而是遵守BASE模型,只能保证最终一致性
数据完整性容易实现很难实现NoSQL数据库无法实现数据完整性
扩展性一般NoSQL很容易通过添加廉价设备实现扩展
可用性很好RDBMS为了保证严格的一致性,只能提供相对较弱的可用性;大多数NoSQL都能提供较高的可用性
标准化RDBMS已经标准化(SQL);NoSQL缺乏统一查询语言
技术支持NoSQL在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力技术支持
可维护性复杂复杂RDBMS需要专门的数据库管理员(DBA)维护,NoSQL数据库虽然没有DBMS复杂,也难以维护

注:关系数据库和NoSQL数据库各有优缺点,彼此无法取代

NoSQL的四大类型

NoSQL数据库虽然数量众多,但是,归结起来,典型的NoSQL数据库通常包括键值数据库、列族数据库、文档数据库和图形数据库。

键值数据库

  • 这一类数据库主要会使用到一个散列表,这个表中有一个特定的键和一个指针指向特定的数据
  • 键值模型对于IT系统来说,其优势在于简单、易部署
  • 键值数据库可以按照键对数据进行定位,还可以通过对键进行排序和分区,以实现更快速的数据定位。
    在这里插入图片描述
    注:键值型系统中,复杂的联合操作以及满足多个条件的取数据操作就不那么容易了,需要我们换一种思维来建立和使用键名。如果一个程序员既想通过员工号查到员工信息,又想通过部门号查到员工信息,那么他必须建立两种类型的键值对。
相关产品Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
数据类型键值对;键是一个字符串对象;值可以是任意类型的数据
典型应用涉及频繁读写、拥有简单数据模型的应用;内容缓存;存储配置和用户数据信息的移动应用
优点扩展性好,灵活性好,大量写操作时性能高
缺点无法存储结构化信息,条件查询效率较低
不适用情形不是通过键而是通过值来查;需要存储数据之间的关系;需要事务的支持
使用者百度云数据库(Redis)、Github(Riak)、Twitter(Redis和Memcached)、Youtube(Memcached)

列族数据库

  • 列族数据库通常用来应对分布式存储的海量数据
  • 键仍然存在,但是它们的特点是指向了多个列,如图所示,此列族数据库表中由两行组成,每一行都有关键字Row Key,每一行由多个列族组成,即Column-Family-1和Column-Family-2,而每个列族由多个列组成。
    在这里插入图片描述

好处

  • 查询时只有指定的列会被读取,不会读取所有列
  • 存储上节约空间,Null值不会被存储,一列中有时候会有很多重复数据,这类数据可压缩
  • 列数据被组织到一起,一次磁盘IO可以将一列数据一次性读取到内存中
相关产品BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
数据类型列族
典型应用分布式数据存储与管理;数据在地理上分布于多个数据中心的应用程序;可以容忍副本中存在短期不一致情况的应用程序;拥有动态字段的应用程序;拥有潜在大量数据的应用程序,大到几百TB的数据
优点查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
缺点功能较少、大都不支持强事务一致性
不适用情形需要ACID事务支持的情形,Cassandra等产品就不适用
使用者Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Twitter(Cassandra and HBase)、Facebook(HBase)、Yahoo!(HBase)

文档数据库

  • 该类型的数据模型是版本化的文档,文档以特定的格式存储,如JSON。
  • 文档数据库可以看作键值数据库的升级版,允许之间嵌套键值。
  • 文档数据库比键值数据库的查询效率高,因为文档数据库不仅可以根据键创建索引,同时还可以根据文档内容创建索引。如,MongoDB。
  • “文档”其实就是一个数据记录,这个记录能够对包含的数据类型和内容进行“自我介绍”,XML文档、HTML文档和JSON文档就属于这一类。
    在这里插入图片描述
相关产品MongoDB、CouchDB、Terrastore、ThruDB、RavenDB、SisoDB、RaptorDB、CloudKit、Perservere、Jackrabbit
数据类型键/值;值(value)是版本化的文档
典型应用存储、索引并管理面向文档的数据或者类似的半结构化数据,比如,用于后台具有大量读写数据操作的网站、使用JSON数据结构的应用、使用嵌套结构等非规范化数据的应用程序
优点性能好(高并发),灵活性高,复杂性低,数据结构灵活;提供嵌入式文档功能,将经常查询的数据存储在同一个文档中;既可以根据键来构建索引,也可以根据内容构建索引
缺点缺乏统一的查询语法
不适用情形在不同的文档上添加事务。文档数据库并不支持文档间的事务
使用者百度云数据库(MongoDB)、SAP (MongoDB)、Codecademy (MongoDB)、Foursquare (MongoDB)、NBC News(RavenDB)

什么是文档型NoSQL?
文档型NoSQL指的是将半结构化数据存储为文档的一种NoSQL,文档型NoSQL通常以JSON或者XML格式存储数据,因此文档型NoSQL是没有Schema(关系型数据必须有schema信息才能理解数据的含义),由于没有Schema的特性,我们可以随意地存储与读取数据,因此文档型NoSql的出现是解决关系型数据库结构扩展不方便的问题的。
在这里插入图片描述

图形数据库

  • 图形数据库来源于图论中的拓扑学,以节点、边及节点之间的关系来存储复杂网络中的数据。
  • 这种拓扑结构类似E-R图,但在图形模式中,关系和节点本身就是数据,而在E-R图中,关系描述的是一种结构。
    在这里插入图片描述
相关产品Neo4J、OrientDB、InfoGrid、Infinite Graph、GraphDB
数据类型图结构
典型应用专门用于处理具有高度相互关联关系的数据,比较适合与社交网络、模式识别、依赖分析、推荐系统以及路径寻找等问题
优点灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱
缺点缺乏统一的查询语法
不适用情形在不同的文档上添加事务。文档数据库并不支持文档间的事务
使用者Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

不同类型数据库比较分析

Redis

  • Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
  • Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set–有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
  • Redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现master-slave(主从)同步

MongoDB

  • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB是一个介于关系数据库和非关系数据库之间的产品,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型
  • Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

Cassandra

  • Cassandra是一套开源分布式NoSQL数据库系统,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
  • Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的)。
  • 支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。

Neo4j

  • Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络上而不是表中。
  • 它是一个嵌入式的、基于磁盘的、具备完全的事务特性Java持久化引擎,Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
  • Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。

NoSQL三大基石

CAP

所谓的CAP是指:

  • C(Consistency):一致性,是指任何一个操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据
  • A(Availability):可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应。
  • P(Tolerance of Network Partition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作

CAP理论告诉我们,一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个。
在这里插入图片描述
当处理CAP的问题时,可以有几个明显的选择:

  • CA:强调一致性和可用性,放弃分区容忍性,最简单的做法是把所有与事务相关的内容都放到同一台机器上。很显然,这种做法会严重影响系统的可扩展性。
  • CP:也就是强调一致性和分区容忍性,放弃可用性,当出现网络分区的情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务。
  • AP:也就是强调可用性和分区容忍性,放弃一致性,允许系统返回不一致的数据。
    不同产品在CAP理论下的不同设计原则
    在这里插入图片描述

BASE

说到BASE(Basically Available,Soft-state、Eventual consistency),不得不提到ACID。

ACIDBASE
原子性(Atomicity)基本可用(Basically Available)
一致性(Consistency)软状态/柔性事务(Soft state)
隔离性(Isolation)最终一致性(Eventual consistency)
持久性(Durable)

BASE的基本含义是基本可用(Basically Availble)软状态(Soft-state)最终一致性(Eventual consistency)

  • 基本可用:是指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现
  • 软状态:“软状态(soft-state)”是与“硬状态(hard-state)”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。“软状态”是指状态可以有一段时间不同步,具有一定的滞后性
  • 最终一致性:最终一致性只不过是弱一致性的一种特例,允许后续的访问操作可以暂时读不到更新后的数据,但是经过一段时间之后,必须最终读到更新后的数据。最常见的实现最终一致性的系统是DNS(域名系统)。一个域名更新操作根据配置的形式被分发出去,并结合有过期机制的缓存;最终所有的客户端可以看到最新的值。

一致性的类型包括强一致性弱一致性,二者的主要区别在于高并发的数据访问操作下,后续操作是否能够获取最新的数据。对于强一致性而言,当执行完一次更新操作后,后续的其他读操作就可以保证读到更新后的最新数据;反之,如果不能保证后续访问读到的都是更新后的最新数据,那么就是弱一致性。

最终一致性

最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:

  • 因果一致性:如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将获得A写入的最新值。而与进程A无因果关系的进程C的访问,仍然遵守一般的最终一致性规则。
  • “读己之所写”一致性:可以视为因果一致性的一个特例。当进程A自己执行一个更新操作之后,它自己总是可以访问到更新过的值,绝不会看到旧值。
  • 单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。
  • 会话一致性:它把访问存储系统的进程放到会话(session)的上下文中,只要会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统保证不会延续到新的会话。
  • 单调写一致性:系统保证来自同一个进程的写操作顺序执行。系统必须保证这种程度的一致性,否则就非常难以编程了。

如何实现各种类型的一致性?
对于分布式数据系统:

N数据复制的份数
W更新数据时需要保证写完成的节点数
R读取数据的时候需要读取的节点数

如果W+R>N,写的节点和读的节点重叠,则是强一致性,一般设定是R+W = N + 1,这是保证强一致性的最小设定
如果W+R<=N,则是弱一致性。
对于分布式系统,为了保证高可用性,一般设置N>=3。不同的N,W,R组合,是在可用性和一致性之间取一个平衡,以适应不同的应用场景。
如果N=W,R=1,任何一个写节点失效,都会导致写失败,因此可用性会降低,但是由于数据分布的N个节点是同步写入的,因此可以保证强一致性。
实例:HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。

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

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

相关文章

简单分享怎么通过微信小程序开店

小程序开店的好处 1.可以为用户提供更多的便利。通过使用微信或其他社交媒体&#xff0c;可以随时随地与潜在客户进行交流互动。 2.让消费者体验更好。通过二维码、小程序代码等方式&#xff0c;消费者能够快速找到所需产品和服务。 3.有助于降低营销成本。相比传统销售渠道…

关于Idea的一些常用设置项

1. 输出中文不乱码 设置工程项目编码 file -> settings -> Editor -> File Encodings-> 如下图通通UTF-8 2. 创建文件自动设置本文模板 File–>settings–>Editor–>File and Code Templates–>Includes -> 输入类注释模板 /*** Classname ${N…

第9章:SpringMVC的拦截器

一、拦截器 1.拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行SpringMVC中的拦截器需要实现HandlerInterceptorSpringMVC的拦截器必须在SpringMVC的配置文件进行配置 ①创建拦截器&#xff0c;继承接口HandlerInterceptor. Component public class FirstIntercep…

深入理解Linux虚拟内存管理(五)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

面试银行测试岗,面试官问你网上银行转账是怎么测的,设计一下测试用例?你知道吗

目录 前言 1、网上银行转账是怎么测的&#xff0c;设计一下测试用例回答思路: 2.测试工作的流程?缺陷状态有什么?设计测试用例有几种方法? 3在项目中到的经典BUG是什么? 4、定期存款到期自动转存该怎么测? 5、登录功能如何设计测试用例?功能测试(FunctionTest) 6、…

上海亚商投顾:创业板指续创新低 AI概念股逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 大小指数今日走势分化&#xff0c;沪指全天横盘震荡&#xff0c;创业板指低开低走&#xff0c;午后一度跌近2%&…

低代码最真实的反馈是什么样的?

一、前言 业内大V陈果曾吐槽&#xff1a;“低代码正在以比中台更快的速度在臭大街”&#xff0c;但在另一方面&#xff0c;微软/华为/百度/网易/腾讯/阿里等互联网巨头又在纷纷入局低代码&#xff0c;并推出了自己的低代码平台。 所以&#xff0c;有人说好&#xff0c;但却又有…

《计算机组成原理》期末考试手写笔记——模块二:计算机数据表示方法

目录 &#xff08;一&#xff09;知识点总结 知识点一&#xff1a;进制表示 知识点二&#xff1a;进制转换 1.基本进制转换计算 &#xff08;1&#xff09;二进制数转八进制 &#xff08;2&#xff09;二进制数转十六进制 &#xff08;3&#xff09;二进制数转十进制 &…

Redis从入门到精通【高阶篇】之底层数据结构压缩列表(ZipList)详解

&#x1f44f; 简介&#xff1a;大家好&#xff0c;我是冰点&#xff0c;从业11年&#xff0c;目前在物流独角兽企业从事技术管理和架构设计方面工作&#xff0c;之前的把博客作为技术流水账在写。现在准备把多年的积累整理一下&#xff0c;成体系的分享给大家&#xff0c;也算…

阿里巴巴最新开源“SpringSecurity手册”用户+案例+认证+框架,面面俱到太全了

pringSecurity 相信Spring大家一定不陌生&#xff0c;那么SpringSecurity你又了解多少呢&#xff1f;市面上有关Spring的介绍有很多&#xff0c;那么对于SpringSecurity只有一些简单的有关概念的介绍&#xff0c;如果想深入了解并使用SpringSecurity还是需要下很大的功夫的&am…

Python爬取广州、深圳、河源、惠州四个城市天气数据,并作数据可视化

本文爬取的网站是天气,天气预报查询,24小时,今天,明天,未来一周7天,10天,15天,40天查询_2345天气王 1.爬取广惠河深2022-2024年的数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf open(广-惠-河-深天气.csv, modea, encodingut…

【自学网安必看】自学网络安全遇到的问题及解决方法!

自学网络安全很容易学着学着就迷茫了&#xff0c;找到源头问题&#xff0c;解决它就可以了&#xff0c;所以首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题&#xff0c;看到后面有惊喜哦 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#x…

STM32 HAL库开发——入门篇(1)

目录 一、GPIO 1.1 什么是GPIO 1.2 GPIO简介 1.2.1 GPIO特点 1.2.2 GPIO电气特性 1.2.3 GPIO引脚分布 1.3 IO端口基本结构介绍 1.4 GPIO的八种模式 1.5 GPIO的寄存器介绍 1.6 通用外设驱动模型&#xff08;四步法&#xff09; 1.7 GPIO配置步骤 1.8 编程实战…

用Notes打造一个资讯中心

大家好&#xff0c;才是真的好。 有一段时间&#xff0c;我介绍过&#xff0c;从Domino 10版本开始&#xff0c;LotusScript增强了网络数据访问和JSON解析功能等&#xff0c;从而可以从网上获取很多资讯&#xff0c;例如即时新闻、股市资讯等等。 例如我们采用Notes内置的讨论…

多线程-线程安全的懒汉式_死锁-ReentrantLock的使用

线程安全的懒汉式_死锁-ReentrantLock的使用 解决单例模式中的懒汉式的线程安全问题 解决单例模式中的懒汉式的线程安全问题> 饿汉式&#xff1a;不存在线程安全问题。 > 懒汉式&#xff1a;存在线程安全问题&#xff0c;&#xff08;需要使用同步机制来处理&#xff0…

案例39:基于Java办公自动化管理系统开题报告设计

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring架构篇--2.7.3 远程通信基础--Netty原理--bind实现端口的绑定

前言&#xff1a;在对ServerBootstrap 进行属性赋值之后&#xff0c;通过bind 方法完成端口的绑定&#xff0c;并开始在NioEventLoop中进行轮询进行事件的处理&#xff1b;本文主要探究ServersocketChannel 在netty 中是如何完成注册&#xff0c;以及端口的绑定 1 Nio selecto…

两个月涨粉90万,B站内容风向又有新指示?

6月1日&#xff0c;B站公布了2023年第一季度财报。 财报中显示第一季度&#xff0c;B站日均活跃用户达9370万&#xff0c;同比增长18%。用户日均使用时长96分钟&#xff0c;日均视频播放量达41亿&#xff0c;其中&#xff0c;本季度B站Story-Mode竖屏视频日均播放量同比增长82…

网络安全怎么学?才不会成为脚本小子?

一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09; 了解网络安全相关法律法规 熟悉基本概念&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#xff09;。 通过关键字&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#…

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

引言 今天给大家分享一篇有关Python和Windows系统的文章。你有没有想过如何获取Windows系统的硬件信息&#xff1f;或者你是否曾经尝试过将Python脚本编译打包成可执行文件&#xff1f;如果你对这些问题感兴趣&#xff0c;那么这篇文章一定适合你。 背景 由于公司现阶段大多…