Mysql数据库概念与安装
目录
一、数据库概述
1、数据库的基本概念
2、数据库管理系统(DBMS)
2.1 数据库管理系统概念
2.2 数据库管理系统工作模式
3、数据库系统(DBS)
3.1 数据库系统概念
3.2 数据库系统发展史
4、关系型数据库与非关系型数据库
4.1 关系型数据库(RDBMS)
4.1.1 概念
4.1.2 特点
4.1.3 优缺点
4.1.2 常见主流关系型数据库
4.2 非关系型数据库(NoSQL)
4.2.1 概念
4.2.2 特点
4.2.3 优缺点
4.2.1 常见主流非关系型数据库
4.3 关系型数据库与非关系型数据库的区别
二、mysql数据库
1、mysql数据库介绍
2、安装mysql及优化
2.1 yum安装
2.2 编译安装
2.2.1 部署编译安装环境
2.2.2 源码编译安装
2.3 优化操作
2.3.1 生成提示符
2.3.2 自动补全
2.4 安装客户端插件mycli
一、数据库概述
1、数据库的基本概念
数据(Data)
- 描述事物的符号记录
- 描述事物的符号记录包括数字、文字、图形、图像、声音、档案记录等
- 以“记录”形式按统一的格式进行存储
表
- 将不同的记录组织在一起
- 表由行和列组成,每行代表一个记录,每列代表一个属性
- 用来存储具体数据
数据库
- 表的集合,是存储数据的仓库
- 以一定的组织方式存储的相互有关的数据集合
2、数据库管理系统(DBMS)
2.1 数据库管理系统概念
数据库管理系统(DBMS)是一种软件,用于管理数据库的创建、维护、访问和控制。它提供了一种有效的方式来组织和管理大量数据,并允许多个用户同时访问和处理这些数据。DBMS 的工作模式包括以下几个方面:
- 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能
- 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出
- 数据操纵功能:提供了对数据的增加、删除、修改和查询的功能,用户可以使用查询语言(如 SQL)来执行这些操作
- 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能
- 通信功能:提供了与应用程序和其他系统进行数据交换和通信的接口,以便数据的共享和集成
2.2 数据库管理系统工作模式
具体过程:
①接受应用程序的数据请求和处理请求
②将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
③实现对数据库的操作
④从数据库的操作中接受查询结果
⑤对查询结果进行处理(格式转换)
⑥将处理结果返回给用户
3、数据库系统(DBS)
3.1 数据库系统概念
数据库系统(DatabaseSystem,DBS)是一个人机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过 DBMS 操作数据库,也可以通过应用程序操作数据库
应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。
常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨 询系统等。
数据库管理员(DatabaseAdministrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA 一般由业务水平较高、资历较深的人员担任。
需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么
3.2 数据库系统发展史
-
网络数据库模型和层次数据库模型(1960s-1970s)
在数据库系统的早期阶段,出现了网络数据库模型和层次数据库模型。这些模型使用树状结构或网络结构来组织数据,但它们的复杂性和限制使得难以满足不断增长的数据管理需求。 -
关系数据库模型(1970s-1980s)
1970年代初,IBM的工程师Edgar F. Codd提出了关系数据库模型的概念,这一模型基于关系代数和关系演算,使用表格形式的数据结构进行数据存储。这一模型的出现标志着数据库系统的重大进步,也开创了现代数据库系统的发展方向。 -
关系数据库管理系统(RDBMS)的兴起(1980s-至今)
随着关系数据库模型的发展,各种商业和开源的关系数据库管理系统相继出现,如Oracle、Microsoft SQL Server、MySQL、PostgreSQL等。这些系统提供了强大的数据管理和查询功能,成为各种应用领域中最常见的数据库系统类型。 -
面向对象数据库和面向对象关系数据库(1980s-1990s)
在关系数据库模型的基础上,出现了面向对象数据库和面向对象关系数据库,这些模型试图将面向对象的概念引入数据库系统中,以更好地支持复杂数据结构和对象关联。 -
NoSQL数据库和大数据时代(2000s-至今)
随着互联网的发展和大规模数据处理需求的增加,NoSQL数据库(非关系型数据库)开始兴起。这些数据库系统采用了不同于传统关系数据库的数据存储和处理模型,以应对大规模数据、高并发访问和分布式计算等挑战。 -
分布式数据库系统和云数据库(2010s-至今)
随着云计算和分布式系统技术的发展,分布式数据库系统和云数据库成为数据库系统发展的新趋势。这些系统能够在多个地理位置上存储和管理数据,提供高可用性、弹性扩展和灵活的数据存储解决方案
4、关系型数据库与非关系型数据库
4.1 关系型数据库(RDBMS)
4.1.1 概念
实体:也称为实例,对应现实世界中可区别于其他对象的 “事件” 或 “事物” 。如银行客户、银行账户等
属性:实体所具有的某一特性,一个实体可以有多个属性。如 “银行客户” 实体集中的每个实体均具有姓名、住址、电话等属性。
联系:实体集之间的对应关系称为联系,也称为关系。如银行客户和银行账户之间存在 “储蓄” 的关系
所有实体及实体之间联系的集合构成一个关系数据库
关系数据库的存储结构是二维表格
在每个二维表中,每一行称为一条记录,用来描述一个对象的信息,每一列称为一个字段,用来描述对象的一个属性
4.1.2 特点
具有严格的数据结构,使用结构化查询语言(SQL)进行数据操作和查询,支持事务处理和复杂的数据关联
4.1.3 优缺点
- 优点
①结构化数据存储: 关系型数据库使用表格形式存储数据,适合存储结构化数据,如行和列的数据
②ACID事务支持: 关系型数据库支持ACID(原子性、一致性、隔离性、持久性)事务,确保数据的完整性和一致性
③SQL查询语言: 使用标准化的SQL查询语言进行数据操作,易于学习和使用
④复杂查询: 支持复杂的查询操作,如连接(JOIN)、子查询等,适合处理复杂的数据关系
- 缺点
①扩展性限制: 在大规模数据存储和高并发访问时,关系型数据库的扩展性受到限制
②固定模式: 需要预先定义表结构,难以适应数据结构频繁变化的情况
③性能瓶颈: 在某些情况下,复杂查询和连接操作可能导致性能下降
④成本高昂: 商业关系型数据库的许可证和维护成本通常较高
4.1.2 常见主流关系型数据库
Oracle、MySQL、Microsoft SQL Server、PostgreSQL、DB2等
4.2 非关系型数据库(NoSQL)
4.2.1 概念
非关系型数据库是一种灵活的数据存储系统,不要求遵循固定的表格结构,可以以文档、键值对、列族或图等形式存储数据
4.2.2 特点
通常具有高度的可扩展性、灵活性和高性能,适合存储大规模、动态结构或分布式数据
4.2.3 优缺点
- 优点
①高可扩展性: 非关系型数据库采用分布式架构,支持水平扩展,适合处理大规模数据和高并发访问
②灵活的数据模型: 可以存储半结构化和非结构化数据,适应数据结构变化较大的情况
③高性能: 部分非关系型数据库采用键值对存储,读写性能较高
④低成本: 开源的非关系型数据库通常免费,部署和维护成本相对较低
- 缺点:
①缺乏事务支持: 大部分非关系型数据库不支持完整的ACID事务,可能出现数据一致性问题
②学习成本较高: 不同类型的非关系型数据库有不同的数据模型和查询语言,学习曲线较陡
③功能限制: 部分非关系型数据库功能较为简单,不支持复杂的查询操作
④数据一致性: 部分非关系型数据库为了追求高性能,可能牺牲一定的数据一致性
4.2.1 常见主流非关系型数据库
文档型数据库(如MongoDB)、键值对数据库(如Redis)、列族数据库(如HBase)、图数据库(如Neo4j)等
4.3 关系型数据库与非关系型数据库的区别
区别 | 关系型数据库 | 非关系型数据库 |
---|---|---|
运行存储的位置 | 运行在硬盘中,查询速度慢 | 运行在内存中,查询速度快 |
数据模型 | 采用表格形式的数据模型 | 采用多种不同的数据模型,如文档型、键值对型等 |
数据结构 | 二维表结构 | 不需要固定的表格式,具有更大的灵活性 |
查询语言 | 结构化查询语言(SQL)进行数据操作和查询 | 根据具体类型而异,如MongoDB使用类似JSON的查询语言 |
适用场景 | 严格数据结构和复杂查询的应用 | 高度可扩展性和灵活性的大规模数据存储和处理应用 |
二、mysql数据库
1、mysql数据库介绍
- 一款深受欢迎的开源关系型数据库
- Oracle旗下的产品
- 遵守GPL协议,可以免费使用与修改
- 特点:性能卓越、服务稳定开源、无版权限制、成本低多线程、多用户基于C/S (客户端/服务器) 架构、安全可靠
官网:https://www.mysql.com/
2、安装mysql及优化
2.1 yum安装
官网下载yum源:https://dev.mysql.com/downloads/
2.2 编译安装
2.2.1 部署编译安装环境
#安装相关依赖包
[root@localhost ~]#yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
#创建mysql程序用户
[root@localhost ~]#useradd -M -s /sbin/nologin mysql
2.2.2 源码编译安装
编译安装说明
利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译编译选项:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
#事先准备好mysql-boost-5.7.20.tar.gz
[root@localhost ~]#cd /opt
[root@localhost opt]#ls
[root@localhost opt]#tar xf mysql-boost-5.7.20.tar.gz
[root@localhost opt]#cd mysql-5.7.20/
[root@localhost mysql-5.7.20]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1#############模块解释#####################
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8 \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件
[root@localhost mysql-5.7.20]#make -j 4 && make install
#更改mysql软件目录和配置文件的属主和属组
[root@localhost mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql-5.7.20]#chown mysql:mysql /etc/my.cnf
#设置环境变量,申明/宣告mysql命令便于系统识别
[root@localhost mysql-5.7.20]#echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost mysql-5.7.20]#source /etc/profile
#调整配置文件
[root@localhost mysql-5.7.20]#vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock [mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES##################sql_mode常用值如下说明####################
NO_ENGINE_SUBSTITUTION
#如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
#在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
#禁正GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
#mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
#不允许日期和月份为零
NO_ZERO_DATE
#mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
#在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
PIPES_As_CONCAT
#将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
ANSI_QUOTES
#启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
#初始化数据库
[root@localhost mysql-5.7.20]#cd /usr/local/mysql/bin/
[root@localhost bin]#./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#创建systemd管理服务
[root@localhost bin]#cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost bin]#systemctl daemon-reload #刷新识别
[root@localhost bin]#systemctl enable --now mysqld #开启服务并开启自启动
[root@localhost bin]#ss -natp | grep 3306 #查看端口
#给mysql的root账号设置密码
[root@localhost bin]#mysqladmin -u root -p password "123456"
#登录mysql数据库,进行简单操作,验证是否安装成功
[root@localhost bin]#mysql -uroot -p123456
show databases;
2.3 优化操作
2.3.1 生成提示符
[root@localhost ~]#vim /etc/my.cnf
[mysql]
prompt=(\\u@\\h) [\\d]>\\_
2.3.2 自动补全
yum安装可以生效,编译安装可能有问题
[root@localhost ~]#vim /etc/my.cnf
[mysql]
auto-rehash
prompt=(mysql) [\\d]>\\_
#自动补全,但只能补全敲过的命令
2.4 安装客户端插件mycli
MyCli 是一个 MySQL命令行工具,支持自动补全和语法高亮。也可用于 MariaDB 和Percona
#安装MyCli工具
[root@localhost ~]#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
[root@localhost opt]#cd /opt
[root@localhost opt]#tar zxvf Python-3.7.7_.tgz
[root@localhost Python-3.7.7]#cd Python-3.7.7/
[root@localhost Python-3.7.7]#./configure --prefix=/usr/local/Python-3.7.7/
[root@localhost Python-3.7.7]#make && make install
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/python3.7 /usr/bin/python37
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37
[root@localhost Python-3.7.7]#pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli
#显示如下表示mycl客户单命令安装成功
[root@localhost Python-3.7.7]#mycli --help
Usage: mycli [OPTIONS] [DATABASE]A MySQL terminal client with auto-completion and syntax highlighting.Examples:- mycli my_database- mycli -u my_user -h my_host.com my_database- mycli mysql://my_user@my_host.com:3306/my_databaseOptions:-h, --host TEXT Host address of the database.-P, --port INTEGER Port number to use for connection. Honors$MYSQL_TCP_PORT.-u, --user TEXT User name to connect to the database.-S, --socket TEXT The socket file to use for connection.-p, --password TEXT Password to connect to the database.--pass TEXT Password to connect to the database.--ssh-user TEXT User name to connect to ssh server.--ssh-host TEXT Host name to connect to ssh server.--ssh-port INTEGER Port to connect to ssh server.--ssh-password TEXT Password to connect to ssh server.--ssh-key-filename TEXT Private key filename (identify file) for thessh connection.--ssh-config-path TEXT Path to ssh configuration.--ssh-config-host TEXT Host to connect to ssh server reading from sshconfiguration.--ssl Enable SSL for connection (automaticallyenabled with other flags).--ssl-ca PATH CA file in PEM format.--ssl-capath TEXT CA directory.--ssl-cert PATH X509 cert in PEM format.--ssl-key PATH X509 key in PEM format.--ssl-cipher TEXT SSL cipher to use.--ssl-verify-server-cert Verify server's "Common Name" in its certagainst hostname used when connecting. Thisoption is disabled by default.-V, --version Output mycli's version.-v, --verbose Verbose output.-D, --database TEXT Database to use.-d, --dsn TEXT Use DSN configured into the [alias_dsn]section of myclirc file.--list-dsn list of DSN configured into the [alias_dsn]section of myclirc file.--list-ssh-config list ssh configurations in the ssh config(requires paramiko).-R, --prompt TEXT Prompt format (Default: "\t \u@\h:\d> ").-l, --logfile FILENAME Log every query and its results to a file.--defaults-group-suffix TEXT Read MySQL config groups with the specifiedsuffix.--defaults-file PATH Only read MySQL options from the given file.--myclirc PATH Location of myclirc file.--auto-vertical-output Automatically switch to vertical output modeif the result is wider than the terminalwidth.-t, --table Display batch output in table format.--csv Display batch output in CSV format.--warn / --no-warn Warn before running a destructive query.--local-infile BOOLEAN Enable/disable LOAD DATA LOCAL INFILE.-g, --login-path TEXT Read this path from the login file.-e, --execute TEXT Execute command and quit.--init-command TEXT SQL statement to execute after connecting.--charset TEXT Character set for MySQL session.--password-file PATH File or FIFO path containing the password toconnect to the db if not specified otherwise.--help Show this message and exit.
登录错误解决:
#解决方法
[root@localhost Python-3.7.7]#mysql -uroot -p123456
grant all on *.* to root@'127.0.0.1' identified by '123456' with grant option;
相关文章:

Mysql数据库概念与安装
目录 一、数据库概述 1、数据库的基本概念 2、数据库管理系统(DBMS) 2.1 数据库管理系统概念 2.2 数据库管理系统工作模式 3、数据库系统(DBS) 3.1 数据库系统概念 3.2 数据库系统发展史 4、关系型数据库与非关系型数据库…...

【Java - 框架 - SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手
"SpringMVC"框架的简单创建与使用,快速上手; 环境 Java版本"1.8.0_202";Spring Boot版本"2.5.9";Windows 11 专业版_22621.2428;IntelliJ IDEA 2021.1.3(Ultimate Edition)࿱…...

框架篇常见面试题
1、Spring框架的单例bean是线程安全的吗? 2、什么是AOP? 3、Spring的事务是如何实现的? 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解 10、My…...

【刷题】滑动窗口入门
送给大家一句话: 那脑袋里的智慧,就像打火石里的火花一样,不去打它是不肯出来的。——莎士比亚 滑动窗口入门 认识滑动窗口Leetcode 209. 长度最小的子数组题目描述算法思路 Leetcode 3. 无重复字符的最长子串题目描述算法思路 Leetcode 1004…...
【Python 48小时速成 3】输入与输出
在 Python 中,输入和输出通常通过内置函数来实现。主要的输入函数是 input(),用于从用户获取输入,而输出函数则是 print(),用于将结果打印到控制台。以下是简单的代码示例演示了输入和输出: # 输入示例 name input(&…...
API开发小红书接口获得小红书笔记详情API接口请求接入演示
为了使用小红书的API接口获取笔记详情,你需要遵循以下步骤: 注册并登录开放平台,创建一个应用并获取App Key和App Secret。 使用App Key和App Secret获取访问令牌(Access Token)。 使用访问令牌(Access T…...

Python条件语句深度解析:从基础到应用的全面指南
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 一、引言 📝 二、…...

【leetcode热题】 地下城游戏
恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…...

Centos7安装ffmpeg
Centos7安装ffmpeg 用到的包压缩并安装 用到的包 压缩并安装 tar xvJf ffmpeg-5.0.1.tar.xz yum install -y gcctar -zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install yasm --versionyum install -y bzip2tar jxvf nasm-2.14.02.tar.bz2 cd n…...
安卓面试题多线程 81-85
81. 共享变量在多线程下如何保证线程安全?因为多线程是交替执⾏,每个线程操作共享变量时可能会导致数据不⼀致,要确保线程 安全,需要在访问共享变量时添加同步机制。当然,如果这个变量本⾝是线程安全的,⽐如AtomicLong,那么多线程访问也是安全 的🚀🚀🚀🚀🚀�…...
Java基础知识总结(8)
StringBuilder类(是线程不安全的) StringBuffer 和 StringBuilder二者及其相似,下面是构造方法: StringBuilder StringBuilder()创建空对象,空的字符序列 StringBuilder StringBuilder(StringBuilder builder)传入对象创造字符序列 Strin…...
C++基础入门(命名空间,函数,引用)
文章目录 前言1,命名空间2,函数函数重载缺省参数内联函数 3,引用尾声 前言 欢迎来到这篇关于C的入门博客!C是一门强大而又广泛应用的编程语言,作为一门面向对象的编程语言,C可以让你更好地组织和管理代码,提高代码的重用性和可维…...

【译】矢量数据库 101 - 什么是矢量数据库?
原文地址:Vector Database 101 - What is a Vector Database? 1. 简介 大家好——欢迎回到 Milvus 教程。在上一教程中,我们快速浏览了每天产生的日益增长的数据量。然后,我们介绍了如何将这些数据分成结构化/半结构化数据和非结构化数据&…...
Python Web开发记录 Day12:Django part6 用户登录
名人说:东边日出西边雨,道是无晴却有晴。——刘禹锡《竹枝词》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、登录界面2、用户名密码校验3、cookie与session配置①cookie与session②配置4、登录验证5、注销登录6、图片验证码①Pillow库②图片验证码的…...

SpringTask实现的任务调度与XXL-job实现的分布式任务调度【XXL-Job工作原理】
目录 任务调度 分布式任务调度 分布式任务调度存在的问题以及解决方案 使用SpringTask实现单体服务的任务调度 XXL-job分布式任务调度系统工作原理 XXL-job系统组成 XXL-job工作原理 使用XXL-job实现分布式任务调度 配置调度中心XXL-job 登录调度中心创建执行器和任务 …...

【java】图书管理系统
有了前几篇文章关于封装、继承、多态、接口等的介绍,想必各位读者对java面向对象的思想有了一定的认识。接下来这篇文章就让我们趁热打铁,利用所学知识做一个小项目图书管理系统吧 目录 一、图书类 1、book类 2、bookList类 二、功能实现 1、IOpera…...
C#实现约瑟夫环算法
目录 1.约瑟夫环定义 2.约瑟夫环算法实现需要注意的地方 3.通过一个例子来演示这个过程 4.三人的约瑟夫环示例 4.十二人的约瑟夫环示例 1.约瑟夫环定义 约瑟夫环即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一…...

游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)
游戏服务端配置“热更”及“秒启动”终极方案 ygluu 卢益贵 关键词:游戏微服务架构、游戏服务端热更、模块化解耦、golang 目录 一、前言 二、异步线程加载/重载方案 三、配置表碎片化方案 四、指针间接引用 五、重载通知 六、示例代码 七、相关连接 一、…...
鸿蒙开发的入门
鸿蒙开发的入门 注册并实名认证华为开发者账户 华为官网 注册 有账户可以直接登录 并进行实名认证 下载并安装开发工具 鸿蒙开发使用的语言 java js c/c 仓颉 手机app java 硬件 c/c 应用开发工具的下载地址 Windows(64-bit) 下载地址 程序的运行过程 解析config.j…...
为什么要减少Http的请求以及如何减少Http请求
为什么要减少Http的请求 减少 HTTP 请求的数量是优化网页性能的一个重要策略,原因有以下几点: 1.延迟:每个 HTTP 请求都会有一定的网络延迟。即使数据量很小,请求和响应的往返时间也可能相当长,特别是在网络条件不好…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...
用 FFmpeg 实现 RTMP 推流直播
RTMP(Real-Time Messaging Protocol) 是直播行业中常用的传输协议。 一般来说,直播服务商会给你: ✅ 一个 RTMP 推流地址(你推视频上去) ✅ 一个 HLS 或 FLV 拉流地址(观众观看用)…...