MySQL数据库入门到大牛_01_数据库概述
文章目录
- 1. 为什么要使用数据库
- 2. 数据库与数据库管理系统
- 2.1 数据库的相关概念
- 2.2 数据库与数据库管理系统的关系
- 2.3 常见的数据库管理系统排名(DBMS)
- 2.4 常见的数据库介绍
- 3. MySQL介绍
- 3.1 概述
- 3.2 MySQL发展史重大事件
- 3.3 关于MySQL 8.0
- 3.4 Why choose MySQL?
- 3.5 Oracle vs MySQL
- 4. RDBMS 与 非RDBMS
- 4.1 关系型数据库(RDBMS)
- 4.1.1 实质
- 4.1.2 优势
- 4.2 非关系型数据库(非RDBMS)
- 4.2.1 介绍
- 4.2.2 有哪些非关系型数据库
- 4.2.3 NoSQL的演变
- 4.3 小结
- 5. 关系型数据库设计规则
- 5.1 表、记录、字段
- 5.2 表的关联关系
- 5.2.1 一对一关联(one-to-one):表A中一条记录对应表B中的一条记录
- 5.2.2 一对多关系(one-to-many):表A中一条记录对应表B中的多条记录
- 5.2.3 多对多(many-to-many)
- 5.3.4 自我引用(Self reference)
1. 为什么要使用数据库
- 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
- 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
数据库存储数据相对于存储于文件中的特点:
-
数据量庞大:单就数据库中的某一张表,就可以存储几千万,上亿的数据,单纯的格式简单文件也能存数据,再进行查找时十分恐怖,数据库可以有一定的优化手段,可以很快查找
-
保存数据结构可以更复杂:放在文件中想打开也不靠谱,例如在Excel中保存数据,就涉及打开等操作
-
存储的数据类型多种多样:除了常见的string等,还可以存储文本等
生活中的例子:第一次登录qq,如果回到进程的角度,往上一滑动,将qq的进程滑掉,意味着当前进程中的数据从内存中被抹掉。当你重新登录qq的app的时候发现仍然能登录成功,明明从内存中已经清除,但是登录时还会显示保存了数据,显然是进行了数据的持久化。
2. 数据库与数据库管理系统
2.1 数据库的相关概念
DB:数据库(Database) |
---|
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。 |
DBMS:数据库管理系统(Database Management System) |
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。 |
SQL:结构化查询语言(Structured Query Language) |
读/色口/,专门用来与数据库通信的语言。 |
2.2 数据库与数据库管理系统的关系
数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。
数据库管理系统、数据库和表的关系如图所示:
举例:大家网上购物时将要买的东西放在购物车里,大家通过客户端从网络访问Web服务器,Web服务器接着去访问数据库服务器,在数据库服务器中就安装的是数据库管理系统DBMS。由Web发送相应的请求,给到DBMS,编写相应的SQL,比如想要查看购物车的数据,就需要写查询的SELECT语句,放到数据库中,针对相关的关联表查询做查询,查询完之后通过DBMS返回给Web服务器,再返回给相关的用户,这就是一个整体的流程。
下面这个图更贴近真实场景,客户通过TCP/IP的协议以及相关的端口号来访问相应的数据库服务器,数据库服务器在数据库中进行查询,典型的数据服务器对象就是表,表里有一条条的记录。
2.3 常见的数据库管理系统排名(DBMS)
目前互联网上常见的数据库管理软件有Oracle(读/ao rei kou/)、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix这几种。以下是2021年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:(查看数据库最新排名:https://db-engines.com/en/ranking)
。。。
对应的走势图:(https://db-engines.com/en/ranking_trend)
2.4 常见的数据库介绍
Oracle
1979 年,Oracle 2 诞生,它是第一个商用的 RDBMS(关系型数据库管理系统)。随着 Oracle 软件的名气越来越大,公司也改名叫 Oracle 公司。
2007年,总计85亿美金收购BEA Systems。
2009年,总计74亿美金收购SUN。此前的2008年,SUN以10亿美金收购MySQL。意味着Oracle 同时拥有了 MySQL 的管理权,至此 Oracle 在数据库领域中成为绝对的领导者。
2013年,甲骨文超越IBM,成为继Microsoft后全球第二大软件公司。
如今 Oracle 的年收入达到了 400 亿美金,足以证明商用(收费)数据库软件的价值。
SQL Server
SQL Server 是微软开发的大型商业数据库,诞生于 1989 年。C#、.net等语言常使用,与WinNT完全集成,也可以很好地与Microsoft BackOffice产品集成。
DB2
IBM公司的数据库产品,收费的。常应用在银行系统中。
PostgreSQL
可以读作/pg 色口/,PostgreSQL 的稳定性极强,最符合SQL标准,开放源码,具备商业级DBMS质量。PG对数据量大的文本以及SQL处理较快。
SyBase
已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
SQLite
嵌入式的小型数据库,应用在手机端。 零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复。
informix
IBM公司出品,取自Information 和Unix的结合,它是第一个被移植到Linux上的商业数据库产品。仅运行于unix/linux平台,命令行操作。 性能较高,支持集群,适应于安全性要求极高的系统,尤其是银行,证券系统的应用。
3. MySQL介绍
3.1 概述
- MySQL是一个
开放源代码的关系型数据库管理系统
,由瑞典MySQL AB(创始人Michael Widenius)公司1995年开发,迅速成为开源数据库的 No.1。 - 2008被
Sun
收购(10亿美金),2009年Sun被Oracle
收购。MariaDB
应运而生。(MySQL 的创造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB) - MySQL6.x 版本之后分为
社区版
和商业版
。(社区版免费,商业版收费) - MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL是开源的,所以你不需要支付额外的费用。
- MySQL是可以定制的,采用了
GPL(GNU General Public License)
协议,你可以修改源码来开发自己的MySQL系统。 - MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持
4GB
,64位系统支持最大的表文件为8TB
。 - MySQL使用
标准的SQL数据语言
形式。 - MySQL可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP和Ruby等。
3.2 MySQL发展史重大事件
MySQL的历史就是整个互联网的发展史。互联网业务从社交领域、电商领域到金融领域的发展,推动着应用对数据库的需求提升,对传统的数据库服务能力提出了挑战。高并发、高性能、高可用、轻资源、易维护、易扩展的需求,促进了MySQL的长足发展。
3.3 关于MySQL 8.0
MySQL从5.7版本直接跳跃发布了8.0版本
,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。
3.4 Why choose MySQL?
为什么如此多的厂商要选用MySQL?大概总结的原因主要有以下几点:
-
开放源代码,使用成本低。
-
性能卓越,服务稳定。
-
软件体积小,使用简单,并且易于维护。
-
历史悠久,社区用户非常活跃,遇到问题可以寻求帮助。
-
许多互联网公司在用,经过了时间的验证。
3.5 Oracle vs MySQL
Oracle 更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求。
MySQL 由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter,YouTube,阿里巴巴/蚂蚁金服,去哪儿,美团外卖,腾讯)。
4. RDBMS 与 非RDBMS
从排名中我们能看出来,关系型数据库绝对是 DBMS 的主流,其中使用最多的 DBMS 分别是 Oracle、MySQL 和 SQL Server。这些都是关系型数据库(RDBMS)。
4.1 关系型数据库(RDBMS)
4.1.1 实质
-
这种类型的数据库是
最古老
的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系
(即二维表格形式)。
-
关系型数据库以
行(row)
和列(column)
的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table)
,一组表组成了一个库(database)。 -
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用
关系模型
来表示。关系型数据库,就是建立在关系模型
基础上的数据库。比如:上表存的是老师信息,每一条记录就是一个具体的老师,这几个老师会有具体的部门,部门也会有对应的一张表,员工的表和部门的表会有一定的关系,我们把这种关系就称作关系模型来表示。数据库主要为代表的是表,表中间有这种关系模型来连接,构成了所谓的关系型数据库。
-
SQL 就是关系型数据库的查询语言。
4.1.2 优势
- 复杂查询
可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。 - 事务支持
使得对于安全性能很高的数据访问要求得以实现。
4.2 非关系型数据库(非RDBMS)
4.2.1 介绍
非关系型数据库,可看成传统关系型数据库的功能阉割版本
,基于键值对存储数据,不需要经过SQL层的解析,性能非常高
。同时,通过减少不常用的功能,进一步提高性能。
目前基本上大部分主流的非关系型数据库都是免费的。
4.2.2 有哪些非关系型数据库
相比于 SQL,NoSQL 泛指非关系型数据库,包括了榜单上的键值型数据库、文档型数据库、搜索引擎和列存储等,除此以外还包括图形数据库。也只有用 NoSQL 一词才能将这些技术囊括进来。
键值型数据库
典型的键值型数据库就是内存级别的缓存数据用的Redis,键值型数据库通过 Key-Value 键值的方式来存储数据,其中 Key 和 Value 可以是简单的对象,也可以是复杂的对象。Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。
键值型数据库典型的使用场景是作为内存缓存
。Redis
是最流行的键值型数据库。
分区的key及排序的key,实际应用的时候可以key拿序号作为键,而具体的value值可以是学生的信息,来查找的速度是比较快的。
做过java开发等后台开发都会接触Redis缓存级别的数据库,像秒杀等都是需要进行一些缓存处理。
文档型数据库
此类数据库可存放并获取文档,可以是XML、JSON
(传输数据的主流格式)等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。MongoDB 是最流行的文档型数据库。此外,还有CouchDB等。
搜索引擎数据库
虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是“倒排索引”。
典型产品:Solr、Elasticsearch、Splunk 等。
列式数据库
列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server 等数据库都是采用的行式存储(Row-based)(扫描时会加载冗余字段),查找也是按照行查找,而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的 I/O,查询速度快,适合于分布式文件系统,不足在于功能相对有限。典型产品:HBase(大数据必学)等。
图形数据库
图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
图形数据库顾名思义,就是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体(对象)之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。典型产品:Neo4J、InfoGrid等。
4.2.3 NoSQL的演变
由于 SQL 一直称霸 DBMS,因此许多人在思考是否有一种数据库技术能远离 SQL,于是 NoSQL 诞生了,但是随着发展却发现越来越离不开 SQL。到目前为止 NoSQL 阵营中的 DBMS 都会有实现类似 SQL 的功能。下面是“NoSQL”这个名词在不同时期的诠释,从这些释义的变化中可以看出 NoSQL 功能的演变
:
1970:NoSQL = We have no SQL
1980:NoSQL = Know SQL
2000:NoSQL = No SQL!
2005:NoSQL = Not only SQL
2013:NoSQL = No, SQL!
NoSQL 对 SQL 做出了很好的补充,比如实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高
、成本更低
的非关系型数据库当然是更明智的选择。比如:日志收集、排行榜、定时器等。
4.3 小结
NoSQL 的分类很多,即便如此,在 DBMS 排名中,还是 SQL 阵营的比重更大,影响力前 5 的 DBMS 中有 4 个是关系型数据库,而排名前 20 的 DBMS 中也有 12 个是关系型数据库。所以说,掌握 SQL 是非常有必要的。整套课程将围绕 SQL 展开。
5. 关系型数据库设计规则
-
关系型数据库的典型数据结构就是
数据表
,这些数据表的组成都是结构化的(Structured)。 -
将数据放到表中,表再放到库中。
-
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
-
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计。
5.1 表、记录、字段
-
E-R(entity-relationship,实体-联系)模型中有三个主要概念是:
实体集
、属性
、联系集
。 -
实体集和属性:一个
实体集(class)
对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)
对应于数据库表中的一列(column),也称为一个字段(field)。
编程语言操作数据库的时候,对应有一种关系,这种关系称为ORM映射
ORM思想 (Object Relational Mapping)体现:
数据库中的一个表 <---> Java或Python中的一个类
表中的一条(行)数据 <---> 类中的一个对象(或实体)
表中的一个列 <----> 类中的一个字段、属性(field)
ER模型之中除了上面介绍的实体集和属性,还提到一种联系集,这种联系就是来刻画表中一条记录和另外一个表中一条记录是如何表达,就提到了表的关联关系,接下来我们来看一下关联关系。
5.2 表的关联关系
-
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
-
四种:
一对一关联
、一对多关联
、多对多关联
、自我引用
5.2.1 一对一关联(one-to-one):表A中一条记录对应表B中的一条记录
- 在实际的开发中应用不多,因为一对一可以创建成一张表。
- 举例:设计
学生表
:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…- 拆为两个表:两个表的记录是一一对应关系。
基础信息表
(常用信息):学号、姓名、手机号码、班级、系别档案信息表
(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…- 对应关系举例:一张表中学号1001对应张三,另外一张表中找1001,后边就是张三的信息,这种一对一对应的关系。上面的两波字段完全可以合成一张表,和分开的区别就是,后边想要真正的查询某一个学号学生的姓名、手机号和家庭住址,用到了两张表,就涉及到了多表的查询,SQL写起来比我们在一张表中复杂。从整个设计库的设计上来讲,设计到一张表,SQL写起来会简单一些,但是实际开发中发现,这张表的字段非常多,那么有些字段是常用的,有些是不常用的,我们完全可以将其分拆到两张表中,这关联到数据表的设计的优化上,在下篇中会讲到,好处是如果没有拆分,每次加载都需要加载多余的冗余字段,占用内存多,就会导致有可能进行IO的次数变多,效率偏低。
- 两种建表原则: 此时还看不懂,当后边讲完约束的时候再去理解
- 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
- 外键是主键:主表的主键和从表的主键,形成主外键关系。
5.2.2 一对多关系(one-to-many):表A中一条记录对应表B中的多条记录
- 常见实例场景:
客户表和订单表(一个客户会有多个订单)
,分类表和商品表(大的门类下有多个商品)
,部门表和员工表(一个部门中会有多个员工)
。 - 举例:
-
员工表:编号(员工编号)、姓名、…、所属部门
-
部门表:编号(部门编号)、名称、简介
-
- 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
一个省对应多个城市
5.2.3 多对多(many-to-many)
要表示多对多关系,必须创建第三个表,该表通常称为联接表
,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。
-
举例1:学生-课程
-
学生信息表
:一行代表一个学生的信息(学号、姓名、手机号码、班级、系别…) -
课程信息表
:一行代表一个课程的信息(课程编号、授课老师、简介…) -
选课信息表
:一个学生可以选多门课,一门课可以被多个学生选择(联接表)学号 课程编号 1 1001 2 1001 1 1002
-
-
举例2:产品-订单
“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
产品表
:“产品”表中的每条记录表示一个产品。订单表
:“订单”表中的每条记录表示一个订单。订单明细表
:每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。
- 举例3:用户-角色
- 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
理解:在座的都是人,会有多种角色,正在听课,角色是学生,你如果结婚了,相对与妻子来讲是丈夫,相对与孩子是夫妻,当然一个角色也对应多个人
5.3.4 自我引用(Self reference)
员工表中104和105的“主管编号”的主管也是公司员工,自己对应自己就是自我引用。
经过上面的介绍,大家应该对E-R(entity-relationship,实体-联系)模型应该有一定的了解,但是不一定掌握的很好,下篇将会继续介绍数据库设计规范中的范式、ER模型,表的的设计规则,此处有个整体的了解即可。
相关文章:

MySQL数据库入门到大牛_01_数据库概述
文章目录 1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库管理系统排名(DBMS)2.4 常见的数据库介绍 3. MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Why choose MySQL?3.5 Oracle v…...

Web - Servlet详解
目录 前言 一 . Servlet简介 1.1 动态资源和静态资源 1.2 Servlet简介 二 . Servlet开发流程 2.1 目标 2.2 开发过程 三 . Servlet注解方式配置 编辑 四 . servlet生命周期 4.1 生命周期简介 4.2 生命周期测试 4.3 生命周期总结 五 . servlet继承结构 5.1 ser…...

postgresql 触发器如何生成递增序列号,从1开始,并且每天重置
大家好,我是三叔,许久不见,这期给大家介绍一下笔者在开发中遇到的业务处理:pgsql 创建触发器生成每日递增序列,并且第二天重置,根据不同的用户进行不同的控制。 1.创建生成递增序列的 table 表 -- 创建us…...

“第五十九天”
这是昨天那道题,这个后面自己的处理思路还是差了点,这道题关键感觉就是对进位的处理的,由于进位的存在,所以处理数据的时候只能从最低位开始,我一开始是从高位处理的,而且后面越来越迷,这个点一…...

IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
Docker官网 Docker官网:https://www.docker.com/ Docker Hub官网:http://hub.docker.com/ 什么是Docker Docker 是一个开源的容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编…...

【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/03
文章目录 TCP/UDP对比端口号作用字节序字节序转换api套接字 socket实现网络通讯服务端 逻辑思路demo: 满血版双方通讯/残血版多方通讯服务端 demo客户端 demo FTP 项目实现sever demo:client demo: 局域网多方通讯 配合线程实现sever demo:client demo: TCP/UDP对比…...

Leetcode刷题详解——全排列
1. 题目链接:46. 全排列 2. 题目描述: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],…...

JSONP 跨域访问(1), 简介, 原理, 实验, 缺点
JSONP 跨域访问(1), 简介, 原理, 实验, 缺点 一, JSONP 简介 JSONP(JSON with Padding)是一种非官方跨域数据交互协议。它允许web页面从不同的域名下加载数据。 由于同源策略,web页面通过XMLHttpRequest调用通常只允许访问与其自身相同域名…...

velero备份k8s集群
流程图 velero备份原理 本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。 velero的…...

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。
文章目录 2章4 章5章(没看)6章(没看) 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络,预先简历链路 卫星和地面终端有…...

Spring Boot实践 --windows环境下 K8s 部署 Docker
第一步:搭建项目并制作合适的jar包 这里我们准备好前面项目 用户管理系统 项目里的jar包。测试功能,定时任务会每过10s打印一次日志: E:\test>java -jar demospringboot-0.0.1-SNAPSHOT.jar2023-11-01 20:24:21.059 INFO 11848 --- [ …...

Linux 将Qt程序打包为AppImage包
前言 在 Linux 环境下,开发完 Qt 程序后,也需要制作为一个安装包或者可执行文件进行分发。这里介绍使用 linuxdeployqt 将 Qt 程序打包为 .AppImage 应用程序(类似于 Windows 的绿色免安装软件) 环境配置 配置 Qt 环境变量 这…...

修复国产电脑麒麟系统开机出现initramfs 问题
目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏,重启后大概率就会进…...

机器人控制算法—如何使用C++读取pgm格式的栅格地图并转化为ROS地图格式的data?
1.Introduction 近期正在做全局规划局部动态规划的项目,目前遇到的问题是,我们如何利用C处理pgm地图文件。即将地图信息要与像素点结合起来。所以我们需要知道地图读取和处理的底层原理,这样更好地在非ROS平台下移植。 2.Main 如下几条信息…...

牛客项目(五)-使用kafka实现发送系统通知
kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…...
计算机网络——第一章时延部分深入学习、相关习题及详细解析
目录 时延相关 习题1 习题1-改 习题2 时延相关 之前我们学习过,时延由发送时延、传播时延和处理时延三部分构成。 发送时延的计算公式为“分组长度除以发送速率”, 发送速率应该从网卡速率、信道带宽、以及对端的接口速率中取最小。 传播时延的计…...

CSS3媒体查询与页面自适应
2017年9月,W3C发布媒体查询(Media Query Level 4)候选推荐标准规范,它扩展了已经发布的媒体查询的功能。该规范用于CSS的media规则,可以为文档设定特定条件的样式,也可以用于HTML、JavaScript等语言。 1、媒体查询基础 媒体查询…...

UG\NX二次开发 超长的对象属性值,怎么设置
文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 Dr. Lin 订阅本专栏,非常感谢。 简介 使用UF_ATTR_assign设置对象属性,如果属性值超过UF_ATTR_MAX_STRING_LEN则会报错。 #define UF_ATTR_MAX_STRING_LEN 132 怎么办呢?下面这种方法可以解决: 效果 …...

流媒体服务实现H5实时预览视频
目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急,最高可扩容16T。排查如下:主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制,这样上传一份视频后最大会有四份拷贝(预览、普通发布、互动…...

C++适配器
文章目录 引言栈和队列 priority_queue仿函数迭代器区间 引言 栈的特性是先进后出,队列的特性是先进先出,然而双向队列同时具有栈和队列的特性,所以我们可以通过双向队列来适配出栈和队列。 先看库里面 栈和队列 stack和queue模板参数里面都…...

基于openresty waf二次开发多次匹配到的ip再做拉黑
我们想在openresty waf的基础上做二次开发,比如再精确一些。比如我们先匹配到了select的url我们先打分10分,匹配到cc 1000/s我们再给这个ip打10分…直到100分我们就拉黑这个ip。 [openresty waf][1] #cat reids_w.lua require lib local redis require…...

新一代构建工具Vite-xyphf
一、什么vite? vite:是一款思维比较前卫而且先进的构建工具,他解决了一些webpack解决不了的问题——在开发环境下可以实现按需编译,加快了开发速度。而在生产环境下,它使用Rollup进行打包,提供更好的tree-shaking、代码压缩和性能优化&…...

Flink源码解析三之执行计划⽣成
JobManager Leader 选举 首先flink会依据配置获取RecoveryMode,RecoveryMode一共两两种:STANDALONE和ZOOKEEPER。 如果用户配置的是STANDALONE,会直接去配置中获取JobManager的地址如果用户配置的是ZOOKEEPER,flink会首先尝试连接zookeeper,利用zookeeper的leadder选举服务发现…...

Flutter 常见错误记录总结
1、当 flutter pub get 指令报如下错误时: pub get failed command: "/Users/***/developer/flutter/bin/cache/dart-sdk/bin/dart __deprecated_pub --color --directory . get --example" pub env: { "FLUTTER_ROOT": "/Users/***/dev…...

[ASP]校无忧在线报名系统 v2.1
校无忧在线报名系统为了满足各地不同的报名人员的需求,为提供更为高效、方便、快捷的报名条件,同时也为减轻管理人员的工作难度;更为协调报名人员与管理人员的关系,快速提高了报名人员与管理人员的工作效率应运而生。系统适用于政…...

【Hydro】部分基流分割方法及程序代码说明
目录 说明一、数字滤波法单参数数字滤波Lyne-Hollick滤波法Chapman滤波法Chapman-Maxwell滤波法Boughton-Chapman滤波法 双参数滤波法Eckhardt滤波法 二、其他基流分割方法基流指数(BFI)法时间步长(HYSEP)法PART法加里宁-阿里巴扬…...

C#Regex正则表达式(Regular Expression)
在C#中,Regex是正则表达式(Regular Expression)的缩写,它是一种强大的文本匹配和处理工具。正则表达式是一种用于描述模式的字符串,它可以用来在文本中查找、替换和提取满足特定模式的内容。 在C#中,你可以…...

Wi-Fi还可以做什么?柯南解释IOT应用
大会报告:无线人工智能技术正在改变世界 Wi-Fi还可以做什么?随着带宽的提升,无线终端可以识别出更多的多径,每条多径都可以视作一个虚拟传感器,以感知周边环境。基于此,越来越多的无线感知产品应运而生。20…...

centos部署java程序
后台启动java程序 nohup java -jar -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/data/app1/logs/ /data/app1.jar --spring.config.location/data/app1/config/application.properties,/data/app1/config/application-dev.properties > /data/app1/logs 2>&1…...

Sqoop导入到Hive,Hive使用 HA
Sqoop写入Hive卡在连接Hive的JDBC上不执行 Sqoop访问 启用 HA模式的Hive 找到Hive的安装根目录:$HIVE_HOME/conf 创建一个新的配置文件:beeline-hs2-connection.xml <?xml version"1.0"?> <?xml-stylesheet type"text/xsl…...