夯实根基之MySql从入门到精通(一)

夯实根基之MySql从入门到精通(一)

  • 引言
  • 1. 使用MySQL数据库和表
  • 2. MySql 数据类型
    • 2.1. 数字类型
    • 2.2. 日期和时间类型
    • 2.3. 字符串类型
    • 2.4. JSON类型
    • 2.5. 其他类型
  • 3. MySql运算符
    • 3.1. 数学运算符
    • 3.2.比较运算符
    • 3.3.逻辑运算符
    • 3.4. 位运算符
    • 3.5.字符串运算符
    • 3.6.正则表达式运算符
    • 3.7.特殊运算符
  • 4. MySql操作数据
    • 4.1. 创建(Create)
    • 4.2. 读取(Read)
    • 4.3. 更新(Update)
    • 4.4. 删除(Delete)
  • 5. MySQL 函数
    • 5.1. 数学函数
    • 5.2. 字符串函数
    • 5.3. 日期和时间函数
    • 5.4. 条件函数
    • 5.5. 聚合函数
    • 5.6. 加密函数
    • 5.7. MySQL的控制流函数
    • 5.8. 格式化函数
      • 5.8.1 日期和时间格式化函数
      • 5.8.2 数字格式化函数
      • 5.8.3.字符串格式化函数
    • 5.9. 类型转换函数
      • 5.9. 1. CAST() 函数
      • 5.9. 2. CONVERT() 函数
      • 5.9. 3. 类型特定转换函数

引言

MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,后来被Sun Microsystems收购,最终成为Oracle Corporation的一部分。MySQL是一个基于客户端-服务器模型的数据库,支持多种操作系统,包括Linux、Windows和macOS。MySQL是一个功能强大、灵活且易于使用的数据库系统,适用于各种规模的应用程序。通过学习和使用MySQL,可以有效地管理和操作关系型数据。

1. 使用MySQL数据库和表

使用MySQL时,主要通过SQL(Structured Query Language)进行数据库操作,包括:

创建数据库:CREATE DATABASE database_name;
选择数据库:USE database_name;
删除数据库:DROP database database_name;
显示数据库列表:SHOW databases;
显示数据库中的表: show tables;
显示指定数据库中的表: show tables from database_name;
显示表的描述:describe tale_name;
创建表:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
删除表:dorp table table_name;
修改表名称:alter table table_name rename to new_talbe_name; rename table table_name to new_table_name;
为表添加一个字段:alter table table_name add name_name varchar(25) not null;
修改字段的定义:alter table table_name change name_name new_name_name int(30);
删除表的字段:alter table table_name drop name_name;

2. MySql 数据类型

在MySQL中,数据类型定义了列中可以存储的数据的类型和范围。正确选择数据类型对于确保数据的完整性和优化性能至关重要。以下是一些常用的MySQL数据类型;

2.1. 数字类型

  1. 整数类型

    • TINYINT:-128 到 127(有符号),0 到 255(无符号)
    • SMALLINT:-32768 到 32767(有符号),0 到 65535(无符号)
    • MEDIUMINT:-8388608 到 8388607(有符号),0 到 16777215(无符号)
    • INTINTEGER:-2147483648 到 2147483647(有符号),0 到 4294967295(无符号)
    • BIGINT:-9223372036854775808 到 9223372036854775807(有符号),0 到 18446744073709551615(无符号)
  2. 定点数类型

    • DECIMALNUMERIC:可以指定精度(数值的总位数)和小数位数。
  3. 浮点数类型

    • FLOAT:单精度浮点数。
    • DOUBLE:双精度浮点数。
  4. 位类型

    • BIT:可以存储二进制值。
    • BOOLEANTINYINT(1)的同义词。

2.2. 日期和时间类型

  1. 日期和时间类型

    • DATE:格式为YYYY-MM-DD
    • TIME:格式为HH:MM:SS
    • DATETIME:格式为YYYY-MM-DD HH:MM:SS
    • TIMESTAMP:与DATETIME类似,但会根据时区调整。
  2. 年月类型

    • YEAR:格式为YYYY

2.3. 字符串类型

  1. 字符类型

    • CHAR:固定长度的字符串,长度在1到255个字符之间。
    • VARCHAR:可变长度的字符串,长度在1到65,535个字符之间。
  2. 二进制字符串类型

    • BINARY:固定长度的二进制字符串。
    • VARBINARY:可变长度的二进制字符串。
    • BLOB:二进制大对象,用于存储大量二进制数据。
    • TEXT:文本字符串类型,用于存储大量字符数据。
  3. 枚举类型

    • ENUM:允许从预定义的值列表中选择一个值。
  4. 集合类型

    • SET:允许从预定义的值列表中选择多个值。

2.4. JSON类型

  • JSON:用于存储JSON数据。

2.5. 其他类型

  • SERIAL:类似于BIGINT,但自动增长。

示例

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,birth_date DATE,last_login TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,data JSON
);

在这个例子中,users表有五个字段,分别使用了不同的数据类型:整数、可变长度字符串、日期、时间戳和JSON,AUTO_INCREMENT自增;

选择正确的数据类型对于数据库设计至关重要,它可以帮助确保数据的准确性,优化存储空间的使用,并提高查询性能。在设计数据库时,应根据数据的特性和应用需求仔细选择数据类型。

3. MySql运算符

在MySQL中,运算符用于执行各种操作,如数学计算、比较、逻辑判断等。以下是MySQL中一些常用的运算符:

3.1. 数学运算符

  1. 加法+
  2. 减法-
  3. 乘法*
  4. 除法/
  5. 求模(取余)%

3.2.比较运算符

  1. 等于=
  2. 不等于!=<>
  3. 大于>
  4. 小于<
  5. 大于等于>=
  6. 小于等于<=

3.3.逻辑运算符

  1. 逻辑非NOT
  2. 逻辑与AND
  3. 逻辑或OR

3.4. 位运算符

  1. 按位与&
  2. 按位或|
  3. 按位异或^
  4. 按位非~
  5. 左移<<
  6. 右移>>

3.5.字符串运算符

  1. 连接CONCAT(str1, str2, ...)

3.6.正则表达式运算符

  1. 匹配REGEXPRLIKE
  2. 不匹配NOT REGEXPNOT RLIKE

3.7.特殊运算符

  1. 同列比较=<><><=>=
  2. IN:检查某个值是否在指定的列表中。
  3. IS NULL:检查某个值是否为NULL。
  4. IS NOT NULL:检查某个值是否不为NULL。
  5. BETWEEN:检查某个值是否在两个值之间。
  6. LIKE:用于搜索列中的指定模式。
  7. NOT LIKE:用于搜索列中不匹配指定模式的值。

示例

SELECT *
FROM users
WHERE age > 18 AND age < 60AND username LIKE 'A%'AND status = 'active';select a-b form users;

在这个例子中,我们使用了比较运算符(><=)和字符串运算符(LIKE)来查询年龄在18到60岁之间,用户名以’A’开头,且状态为’active’的用户。

运算符是MySQL查询语言的基础,它们使得数据检索和操作变得灵活和强大。正确使用运算符可以编写出高效且精确的SQL查询。

4. MySql操作数据

在MySQL中,增删改查(CRUD)操作是数据库管理的基本操作,它们分别代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。以下是这些操作的基本SQL语句:

4.1. 创建(Create)

创建数据通常是指向数据库表中插入新记录。使用INSERT INTO语句来实现:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

如果插入所有列并且所有列都有默认值,可以省略列名:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

进阶插入

INSERT INTO table_name
set  fname=value1;

4.2. 读取(Read)

读取数据是指从数据库表中查询数据。使用SELECT语句来实现:

SELECT column1, column2, column3, ...
FROM table_name
WHERE condition;

如果没有指定列名,将选择所有列:

SELECT *
FROM table_name
WHERE condition;

4.3. 更新(Update)

更新数据是指修改数据库表中的现有记录。使用UPDATE语句来实现:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

4.4. 删除(Delete)

删除数据是指从数据库表中移除记录。使用DELETE FROM语句来实现:

DELETE FROM table_name
WHERE condition;

如果没有指定条件,将删除表中的所有记录,这是非常危险的操作,通常不推荐使用。

示例

假设有一个名为users的表,包含idnameemail三个列。

创建(插入)数据

INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');

读取(查询)数据

SELECT * FROM users;

更新数据

UPDATE users
SET email = 'alice_new@example.com'
WHERE name = 'Alice';

删除数据

DELETE FROM users
WHERE name = 'Alice';

注意事项

  • 在执行增删改操作时,应该始终注意数据的完整性和一致性。
  • 使用WHERE子句可以指定条件,以确保只影响满足条件的记录。
  • 在执行删除操作时应该特别小心,以免意外删除重要数据。
  • 在更新或删除数据之前,建议先进行查询操作,确认将要操作的记录是正确的。

5. MySQL 函数

MySQL提供了大量的内置函数,用于执行各种操作,如数学计算、字符串处理、日期和时间处理等。这些函数可以在SQL查询中使用,以便于数据处理和分析。以下是一些常用的MySQL函数:

5.1. 数学函数

  • ABS(x):返回x的绝对值。
  • CEIL(x)CEILING(x):返回大于或等于x的最小整数。
  • FLOOR(x):返回小于或等于x的最大整数。
  • MOD(a, b):返回a除以b的余数。
  • POW(x, y)POWER(x, y):返回x的y次幂。
  • ROUND(x, y):返回x四舍五入到y小数位的值。
  • SQRT(x):返回x的平方根。

5.2. 字符串函数

  • CONCAT(str1, str2, ...):返回连接字符串的结果。
  • LENGTH(str)CHAR_LENGTH(str):返回字符串的长度。
  • SUBSTRING(str, start, length):返回从start位置开始,长度为length的字符串。
  • REPLACE(str, search, replace):返回替换字符串中search子串为replace后的结果。
  • UPPER(str):返回字符串的大写形式。
  • LOWER(str):返回字符串的小写形式。
  • TRIM(str):返回去除字符串首尾空格后的结果。
  • LTRIM(str):返回去除字符串左侧空格后的结果。
  • RTRIM(str):返回去除字符串右侧空格后的结果。

5.3. 日期和时间函数

  • CURDATE():返回当前日期。

  • CURTIME():返回当前时间。

  • NOW():返回当前日期和时间。

  • DATE_ADD(date, INTERVAL expr type):给定日期加上一个时间间隔。

  • DATE_SUB(date, INTERVAL expr type):给定日期减去一个时间间隔。

  • DATE_FORMAT(date, format):返回格式化的日期。

  • TIME_FORMAT(time, format):返回格式化的时间。

    5.4. 条件函数

  • IF(condition, true_value, false_value):如果条件为真,返回true_value,否则返回false_value。

  • CASE expression WHEN value THEN result [WHEN ...] [ELSE result] END:类似于SQL的CASE表达式。

5.5. 聚合函数

  • COUNT(expr):返回表达式中非NULL值的数量。
  • SUM(expr):返回表达式中所有值的总和。
  • AVG(expr):返回表达式中所有值的平均值。
  • MAX(expr):返回表达式中的最大值。
  • MIN(expr):返回表达式中的最小值。

5.6. 加密函数

  • MD5(str):返回字符串的MD5哈希值。
  • SHA1(str):返回字符串的SHA1哈希值。
  • password(str):返回字符串的加密串。 不可逆,区分大小写。
  • encrypt(str,key):带KEY的加密串。不可逆。
  • encode(str,key),decode(str,key):可逆的加密算法。加密程度不高。
  • aes_encrypt(str,key),aes_decrypt(str,key):可逆的加密算法。加密程度高。

示例

SELECT CONCAT(name, ' ', surname) AS full_name,ROUND(salary * 1.1, 2) AS salary_with_bonus,DATE_FORMAT(hire_date, '%Y-%m-%d') AS formatted_hire_date
FROM employees;

在这个例子中,我们使用了CONCAT来连接名字和姓氏,ROUND来计算带奖金的工资,以及DATE_FORMAT来格式化入职日期。

5.7. MySQL的控制流函数

MySQL的控制流函数允许在SQL查询中实现条件逻辑和循环逻辑。这些函数主要用于复杂的查询和数据操作,它们可以控制数据的处理流程。以下是一些常用的MySQL控制流函数:

IF()
IF()函数是一个条件函数,它根据指定的条件返回两个值中的一个。如果条件为真,返回第一个值;如果条件为假,返回第二个值。

SELECT IF(condition, true_value, false_value);

CASE()
CASE()函数提供了更灵活的条件判断能力,类似于编程语言中的switch语句或if-else链。它可以处理多个条件,并根据条件返回相应的值。

SELECT CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_result
END;

IFNULL()
IFNULL()函数用于检查两个参数中的任何一个是否为NULL。如果第一个参数是NULL,则返回第二个参数的值;否则返回第一个参数的值。

SELECT IFNULL(value1, value2);

COALESCE()
COALESCE()函数返回其参数列表中的第一个非NULL值。

SELECT COALESCE(value1, value2, ..., valueN);

NULLIF()
NULLIF()函数检查两个参数是否相等。如果相等,返回NULL;否则返回第一个参数的值。

SELECT NULLIF(value1, value2);

存储过程和函数中的控制流语句
除了上述函数外,MySQL还提供了在存储过程和函数中使用的控制流语句,如:

  • BEGIN ... END:用于将多条语句组合成一个代码块。
  • IF ... THEN ... ELSE:用于在存储过程和函数中实现条件逻辑。
  • WHILE:用于在存储过程和函数中实现循环逻辑。
  • LOOP:用于在存储过程和函数中实现循环逻辑。
  • REPEAT:用于在存储过程和函数中实现循环逻辑,直到满足特定条件。
  • LEAVE:用于立即退出循环。
  • ITERATE:用于继续下一次循环迭代。

示例:使用存储过程和控制流语句

DELIMITER //CREATE PROCEDURE GetEmployeeDetails(IN emp_id INT)
BEGINDECLARE done INT DEFAULT FALSE;DECLARE cur_name VARCHAR(100);DECLARE cur_salary DECIMAL(10, 2);DECLARE cur CURSOR FOR SELECT name, salary FROM employees WHERE id = emp_id;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;OPEN cur;read_loop: LOOPFETCH cur INTO cur_name, cur_salary;IF done THENLEAVE read_loop;END IF;SELECT cur_name, cur_salary;END LOOP;CLOSE cur;
END //DELIMITER ;

5.8. 格式化函数

MySQL提供了多种格式化函数,用于将数据转换成特定的格式。这些函数在处理日期、时间、数字和字符串时非常有用。以下是一些常用的MySQL格式化函数:

5.8.1 日期和时间格式化函数

  1. DATE_FORMAT(date, format):返回格式化的日期。

    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
    
  2. TIME_FORMAT(time, format):返回格式化的时间。

    SELECT TIME_FORMAT(NOW(), '%H:%i:%s');
    
  3. FROM_UNIXTIME(unix_timestamp, format):将UNIX时间戳转换为格式化的日期和时间。

    SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s');
    

5.8.2 数字格式化函数

  1. FORMAT(x, d):将数字x格式化为带有d位小数的字符串。

    SELECT FORMAT(1234.5678, 2);  // 结果: '1234.57'
    
  2. ROUND(x, d):将数字x四舍五入到d位小数。

    SELECT ROUND(1234.5678, 2);  // 结果: 1234.57
    

5.8.3.字符串格式化函数

  1. CONCAT(str1, str2, …):连接字符串。

    SELECT CONCAT('Hello', ' ', 'World');  // 结果: 'Hello World'
    
  2. CONCAT_WS(separator, str1, str2, …):使用指定的分隔符连接字符串。

    SELECT CONCAT_WS('-', '2023', '10', '10');  // 结果: '2023-10-10'
    
  3. REPLACE(str, search_str, replace_str):在字符串中替换子串。

    SELECT REPLACE('Hello World', 'World', 'MySQL');  // 结果: 'Hello MySQL'
    
  4. SUBSTRING(str, position, length):返回字符串的子串。

    SELECT SUBSTRING('Hello World', 1, 5);  // 结果: 'Hello'
    
  5. TRIM(str):去除字符串两端的空格。

    SELECT TRIM('  Hello World  ');  // 结果: 'Hello World'
    
  6. LPAD(str, length, pad_str):用另一个字符串填充当前字符串,使其达到指定的长度。

    SELECT LPAD('Hello', 10, '-');  // 结果: '---Hello---'
    
  7. RPAD(str, length, pad_str):同LPAD,但是填充在字符串的右侧。

    SELECT RPAD('Hello', 10, '-');  // 结果: 'Hello-----'
    
  8. LTRIM(str):去除字符串左侧的空格。

    SELECT LTRIM('  Hello World');  // 结果: 'Hello World'
    
  9. RTRIM(str):去除字符串右侧的空格。

    SELECT RTRIM('Hello World  ');  // 结果: 'Hello World'
    

这些格式化函数可以帮助你在查询和数据处理时,将数据转换成所需的格式。通过使用这些函数,可以提高数据的可读性和易用性。

5.9. 类型转换函数

在MySQL中,类型转换函数用于将一种数据类型转换为另一种数据类型。这些函数在处理数据时非常有用,尤其是在数据类型不匹配或需要特定格式时。以下是一些常用的MySQL类型转换函数:

5.9. 1. CAST() 函数

CAST()函数用于将一个表达式转换为指定的数据类型。

SELECT CAST(column_name AS data_type);
  • 将字符串转换为整数:
     SELECT CAST('123' AS SIGNED);
    
  • 将整数转换为日期:
     SELECT CAST(123456 AS DATE);
    
  • 将日期转换为字符串:
     SELECT CAST(NOW() AS CHAR(50));
    

5.9. 2. CONVERT() 函数

CONVERT()函数与CAST()类似,也用于数据类型转换,但CONVERT()提供了更多的灵活性,特别是在转换为字符串时。

SELECT CONVERT(data_type, column_name);
  • 将日期转换为字符串:
     SELECT CONVERT(CURDATE(), CHAR(50));
    
  • 将字符串转换为浮点数:
     SELECT CONVERT(123.456, FLOAT);
    

5.9. 3. 类型特定转换函数

MySQL还提供了一些专门用于特定类型转换的函数:

  • INT():将一个值转换为整数。
     SELECT INT('123');
    
  • FLOAT():将一个值转换为浮点数。
     SELECT FLOAT('123.456');
    
  • DOUBLE():将一个值转换为双精度浮点数。
     SELECT DOUBLE('123.456');
    
  • DECIMAL():将一个值转换为定点数。
     SELECT DECIMAL('123.456', 10, 2);
    
  • CHAR():将一个值转换为字符。
     SELECT CHAR(65);  // 输出 'A'
    
  • DATE():将一个值转换为日期。
     SELECT DATE('2023-10-10');
    
  • TIME():将一个值转换为时间。
     SELECT TIME('14:20:30');
    
  • DATETIME():将一个值转换为日期和时间。
     SELECT DATETIME('2023-10-10 14:20:30');
    
  • TIMESTAMP():将一个值转换为时间戳。
     SELECT TIMESTAMP('2023-10-10 14:20:30');
    

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

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

相关文章

openlayers 封装加载本地geojson数据 - vue3

Geojson数据是矢量数据&#xff0c;主要是点、线、面数据集合 Geojson数据获取&#xff1a;DataV.GeoAtlas地理小工具系列 实现代码如下&#xff1a; import {ref,toRaw} from vue; import { Vector as VectorLayer } from ol/layer.js; import { Vector as VectorSource } fr…

OpenCV图像处理方法:腐蚀操作

腐蚀操作 前提 图像数据为二值的&#xff08;黑/白&#xff09; 作用 去掉图片中字上的毛刺 显示图片 读取一个图像文件&#xff0c;并在一个窗口中显示它。用户可以查看这个图像&#xff0c;直到按下任意键&#xff0c;然后程序会关闭显示图像的窗口 # cv2是OpenCV库的P…

【运维心得】U盘启动安装Dell服务器踩坑指南

目录 第一坑&#xff1a;没有键盘选择 第二坑&#xff1a;没有修改mount路径 最近碰到一台Dell服务器R720需要重新安装centos操作系统&#xff0c;由于之前已经配置好了Raid&#xff0c;这里就节省了配置磁盘的步骤。 以前都是通过光盘安装的&#xff0c;考虑到R720是支持U盘…

RAGChecker:显著超越RAGAS,一个精细化评估和诊断 RAG 系统的创新框架

RAG应用已经是当下利用大模型能力的典型应用代表&#xff0c;也获得了极大的推广&#xff0c;各种提升RAG性能的技术层出不穷。然而,如何全面、准确地评估 RAG 系统一直是一个挑战。传统评估方法存在诸多局限性:无法有效评估长文本回复、难以区分检索和生成模块的错误来源、与人…

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…

JDK的下载

目录 JDK官网 Windows Ubantu 1.安装JDK 2.确定JDK版本 卸载OpenJDK Centos 1.下载JDK 2.安装JDK 3.验证JDK JDK官网 官网网址&#xff1a;Java Downloads | Oracle Windows 双击运⾏exe⽂件, 选择安装⽬录, 直⾄安装完成 Ubantu 1.安装JDK 更新软件包 sudo apt u…

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 轴承作为机械设备中的关键部件&#xff0c;其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而&#xff0c;传统的轴承缺陷检测方法往往依赖于人工检查&#xff0c;这不仅效率低下&#xff0c;而且容易…

taro微信小程序assets静态图片不被编译成base64

taro 的微信小程序项目&#xff0c;不希望把在样式文件&#xff08; css 、 less 、 scss &#xff09;中引入的 assets/images 文件夹下的图片编译成 base64 。 可以在config/index.ts文件中的mini进行配置。 参考&#xff1a;taro小程序打包时静态图片无法关闭base64转换 …

告别局域网限制:宝塔FTP结合内网穿透工具实现远程高效文件传输

文章目录 前言1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 前言 本文主要介绍宝塔FTP文件传输服务如何搭配内网穿透工具&#xff0c;实现随时随地远程连接局域网环境搭建的宝塔FTP文件服务并进行文件…

2024 前端面试题!!! html css js相关

常见的块元素、行内元素以及行内块元素&#xff0c;三者有何不同&#xff1f;​​​​​​​ HTML、XML、XHTML它们之间有什么区别&#xff1f;​​​​​​​ DOCTYPE(⽂档类型) 的作⽤ Doctype是HTML5的文档声明&#xff0c;通过它可以告诉浏览器&#xff0c;使用哪一个HTM…

业务逻辑与代码分离:规则引擎如何实现高效管理?

在这个快速变化、高度信息化的时代&#xff0c;软件系统和业务流程的复杂性日益增加。为了应对这种复杂性&#xff0c;越来越多的企业开始采用规则引擎来应对这种复杂性。我们这次结合JVS规则引擎来解析为什么越来越多人使用规则引擎。 规则引擎定义 规则引擎是一种用于管理和…

关键词排名技巧实用指南提升网站流量的有效策略

内容概要 在数字营销的世界中&#xff0c;关键词排名的影响不可小觑。关键词是用户在搜索引擎中输入的词语&#xff0c;通过精确选择和优化这些关键词&#xff0c;网站能够更轻松地被目标用户发现。提升关键词排名的第一步是了解基本概念&#xff0c;包括关键词的分类、重要性…

数据结构与算法——树与二叉树

树与二叉树 1.树的定义与相关概念 树的示例&#xff1a; 树的集合形式定义 Tree(K,R) 元素集合&#xff1a;K{ki|0<i<n,n>0,ki∈ElemType}&#xff08;n为树中结点数&#xff0c;n0则树为空&#xff0c;n>0则为非空树&#xff09; 对于一棵非空树&#xff0c…

51单片机应用开发---定时器(定时1S,LED以1S间隔闪烁)

实现目标 1、掌握定时器的配置流程&#xff1b; 2、掌握定时器初值的计算方法&#xff1b; 3、具体实现&#xff1a;&#xff08;1&#xff09;1mS中断1次&#xff0c;计数1000次中断&#xff0c;实现定时1S功能&#xff1b;&#xff08;2&#xff09;LED1每隔1S状态取反。 …

TCP/IP Attack Lab

网络拓扑&#xff1a; Task 1: SYN Flooding Attack 收到攻击之前&#xff0c;在Victim主机查看网络连接的状态: 在攻击之前使用User1主机(10.9.0.6)访问Victim(10.9.0.5)主机的 Telnet服务: Task 1.1: Launching the Attack Using Python 在Atacker上建立文件attack-1.py…

VictoriaMetrics 中文教程(10)集群版介绍

VictoriaMetrics 中文教程系列文章&#xff1a; VictoriaMetrics 中文教程&#xff08;01&#xff09;简介VictoriaMetrics 中文教程&#xff08;02&#xff09;安装VictoriaMetrics 中文教程&#xff08;03&#xff09;如何配置 Prometheus 使其把数据远程写入 VictoriaMetri…

Vue 3 插件常见用途和场景

Vue 3插件是一个用于增强Vue应用功能的库或模块&#xff0c;其常见用途和场景包括&#xff1a; 常见用途 添加全局方法或属性&#xff1a; 插件可以向Vue实例添加全局方法或属性&#xff0c;使开发者能够在应用的任何部分方便地调用这些方法或属性。 添加全局资源&#xff1a…

深度学习(五):语音处理领域的创新引擎(5/10)

一、深度学习在语音处理中的崛起 在语音处理领域&#xff0c;传统方法如谱减法、维纳滤波等在处理复杂语音信号时存在诸多局限性。这些方法通常假设噪声是平稳的&#xff0c;但实际噪声往往是非平稳的&#xff0c;导致噪声估计不准确。同时&#xff0c;为了去除噪声&#xff0…

https和http的区别,及HTTPS的工作流程

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;都是超文本传输协议&#xff0c;但它们之间的关键区别在于安全性。 安全性&#xff1a; HTTP&#xff1a;数据以明文传输&#xff0c;没有加密&…

阿里云 SAE 应用引擎可观测性最佳实践

SAE 简介 Serverless 应用引擎 SAE&#xff08;Serverless App Engine&#xff09;是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 能够让用户免运维 IaaS 和 Kubernetes&#xff0c;秒级完成从源代码、代码包、Docker 镜像部署任意语言的在线应用&#xff08;…