Mysql--基础篇--函数(字符串函数,日期函数,数值函数,聚合函数,自定义函数及与存储过程的区别等)

news2025/1/8 16:08:22

MySQL提供了丰富的内置函数,涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流等多种功能。这些函数可以帮助你简化SQL查询,提升开发效率。
除了内置函数,MySQL还支持自定义函数(User-Defined Functions),允许用户根据自己的需求编写复杂的逻辑。

一、MySQL内置函数

1、字符串函数

字符串函数用于处理和操作文本数据。以下是一些常用的字符串函数:

1.1、CONCAT()
  • 作用:连接多个字符串。
  • 语法:CONCAT(str1, str2, …, strN)

示例:

SELECT CONCAT('Hello', ' ', 'World');  -- 输出: Hello World
1.2、CONCAT_WS()
  • 作用:使用指定的分隔符连接多个字符串。
  • 语法:CONCAT_WS(separator, str1, str2, …, strN)

示例:

SELECT CONCAT_WS('-', '2024', '12', '31');  -- 输出: 2024-12-31

运行结果:
在这里插入图片描述

1.3、SUBSTRING()或SUBSTR()
  • 作用:从字符串中提取子字符串。
  • 语法:SUBSTRING(str, pos, len) 或 SUBSTR(str, pos, len)

示例:

SELECT SUBSTRING('Hello World', 7, 5);  -- 从第7个元素开始,截取5个元素。输出: World
1.4、LEFT()和RIGHT()
  • 作用:分别从字符串的左侧或右侧提取指定长度的字符。
  • 语法:LEFT(str, len)和RIGHT(str, len)

示例:

SELECT LEFT('Hello World', 5);  -- 从最左侧开始截取5个元素。输出: Hello
SELECT RIGHT('Hello World', 5); -- 从最右侧开始截取5个元素。输出: World
1.5、LENGTH()和CHAR_LENGTH()
  • 作用:分别返回字符串的字节长度和字符长度。
  • 语法:LENGTH(str)和CHAR_LENGTH(str)

示例:

SELECT LENGTH('Hello'), CHAR_LENGTH('Hello');  -- 输出: 5, 5
SELECT LENGTH('你好'), CHAR_LENGTH('你好');     -- 输出: 6, 2 (中文字符占多个字节)
1.6、LOWER()和UPPER()
  • 作用:将字符串转换为小写或大写。
  • 语法:LOWER(str) 和 UPPER(str)

示例:

SELECT LOWER('HELLO'), UPPER('hello');  -- 输出: hello, HELLO
1.7、TRIM()
  • 作用:去除字符串两端的空格或其他指定字符。
  • 语法:TRIM([BOTH | LEADING | TRAILING] [remstr] FROM str)

示例:

  SELECT TRIM('   Hello World   ');  -- 输出: Hello World
  SELECT TRIM(BOTH '_' FROM '__Hello__');  -- 输出: Hello
1.8、REPLACE()
  • 作用:替换字符串中的某个子字符串。
  • 语法:REPLACE(str, from_str, to_str)

示例:

SELECT REPLACE('Hello World', 'World', 'Universe');  -- 输出: Hello Universe

2、数值函数

数值函数用于处理和计算数值数据。

2.1、ABS()
  • 作用:返回数值的绝对值。
  • 语法:ABS(num)

示例:

SELECT ABS(-10);  -- 输出: 10
2.2、CEIL()和FLOOR()
  • 作用:分别返回大于或等于给定数值的最小整数,以及小于或等于给定数值的最大整数。
  • 语法:CEIL(num)和FLOOR(num)

示例:

SELECT CEIL(3.14), FLOOR(3.14);  -- 输出: 4, 3
2.3、ROUND()
  • 作用:对数值进行四舍五入。
  • 语法:ROUND(num, decimals)

示例:

SELECT ROUND(3.14159, 2);  -- 输出: 3.14
SELECT ROUND(3.14159);  -- 输出: 3
2.4、MOD()
  • 作用:返回两个数相除后的余数。
  • 语法:MOD(num1, num2)或num1 % num2

示例:

 SELECT MOD(10, 3);  -- 输出: 1
2.5、POW()和POWER()
  • 作用:返回第一个参数的幂次方。
  • 语法:POW(base, exponent) 或 POWER(base, exponent)

示例:

 SELECT POW(2, 3);  -- 输出: 8
2.6、SQRT()
  • 作用:返回数值的平方根。
  • 语法:SQRT(num)

示例:

SELECT SQRT(16);  -- 输出: 4
2.7、RAND()
  • 作用:返回一个0到1之间的随机浮点数。
  • 语法:RAND()

示例:

  SELECT RAND();  -- 输出: 随机浮点数

运行结果:
在这里插入图片描述

3、日期和时间函数

日期和时间函数用于处理和操作日期、时间数据。

3.1、NOW()和CURRENT_TIMESTAMP()
  • 作用:返回当前的日期和时间。
  • 语法:NOW() 和 CURRENT_TIMESTAMP()

示例:

  SELECT NOW();  -- 输出: 当前日期和时间

运行结果:
在这里插入图片描述

3.2、CURDATE()和CURTIME()
  • 作用:分别返回当前的日期和时间。
  • 语法:CURDATE()和CURTIME()

示例:

SELECT CURDATE(), CURTIME();  -- 输出: 当前日期, 当前时间

在这里插入图片描述

3.3、DATE()和TIME()
  • 作用:分别提取日期和时间部分。
  • 语法:DATE(datetime) 和 TIME(datetime)

示例:

 SELECT DATE('2024-12-31 14:30:00'), TIME('2024-12-31 14:30:00');  -- 输出: 2024-12-31, 14:30:00
3.4、YEAR()、MONTH()、DAY()等
  • 作用:提取日期中的年、月、日等部分。
  • 语法:YEAR(date)、MONTH(date)、DAY(date) 等

示例:

  SELECT YEAR('2024-12-31'), MONTH('2024-12-31'), DAY('2024-12-31');  -- 输出: 2024, 12, 31
3.5、DATEDIFF()
  • 作用:计算两个日期之间的天数差。
  • 语法:DATEDIFF(date1, date2)

示例:

 SELECT DATEDIFF('2024-12-31', '2024-01-01');  -- 输出: 365
3.6、TIMESTAMPDIFF()
  • 作用:计算两个日期或时间之间的差异,支持多种单位(如年、月、日、小时等)。
  • 语法:TIMESTAMPDIFF(unit, datetime1, datetime2)

示例:

  SELECT TIMESTAMPDIFF(YEAR, '1990-01-01', '2024-12-31');  -- 输出: 34
3.7、DATE_ADD()和DATE_SUB()
  • 作用:在日期上添加或减去指定的时间间隔。
  • 语法:DATE_ADD(date, INTERVAL expr unit) 和 DATE_SUB(date, INTERVAL expr unit)

示例:

  SELECT DATE_ADD('2024-12-31', INTERVAL 1 DAY);  -- 增加1个月。输出: 2025-01-01
  SELECT DATE_SUB('2024-12-31', INTERVAL 1 MONTH);  -- 减去1个月。输出: 2024-11-30

4、聚合函数

聚合函数用于对一组数据进行汇总计算。以下是一些常用的聚合函数:

4.1、COUNT()
  • 作用:计算行数。
  • 语法:COUNT()或COUNT(column)

示例:

 SELECT COUNT() FROM employees;  -- 计算表中所有行数
 SELECT COUNT(salary) FROM employees;  -- 计算非空 salary 的行数
4.2、SUM()
  • 作用:计算数值列的总和。
  • 语法:SUM(column)

示例:

 SELECT SUM(salary) FROM employees;  -- 计算所有员工的工资总和
4.3、AVG()
  • 作用:计算数值列的平均值。
  • 语法:AVG(column)

示例:

 SELECT AVG(salary) FROM employees;  -- 计算所有员工的平均工资
4.4、MAX()和MIN()
  • 作用:分别返回数值列中的最大值和最小值。
  • 语法:MAX(column)和MIN(column)

示例:

  SELECT MAX(salary), MIN(salary) FROM employees;  -- 返回最高和最低工资
4.5、GROUP_CONCAT()
  • 作用:将多行数据合并为一个字符串。
  • 语法:GROUP_CONCAT(column [SEPARATOR separator])

示例:

  SELECT department, GROUP_CONCAT(name SEPARATOR ', ') AS employees
  FROM employees
  GROUP BY department;

运行结果:
在这里插入图片描述

5、控制流函数

控制流函数用于在查询中实现条件逻辑。以下是一些常用的控制流函数:

5.1、IF()
  • 作用:根据条件返回不同的值。
  • 语法:IF(condition, true_value, false_value)

示例:

  SELECT name, IF(salary > 50000, 'High', 'Low') AS salary_level
  FROM employees;

运行结果:
在这里插入图片描述

5.2、CASE表达式
  • 作用:实现多条件判断。
  • 语法:
  CASE
      WHEN condition1 THEN result1
      WHEN condition2 THEN result2
      ...
      ELSE default_result
  END

示例:

  SELECT name,
         CASE
             WHEN salary > 80000 THEN 'Senior'
             WHEN salary > 50000 THEN 'Mid-level'
             ELSE 'Junior'
         END AS level
  FROM employees;

运行结果:
在这里插入图片描述

5.3、COALESCE()
  • 作用:返回第一个非空的表达式。
  • 语法:COALESCE(expr1, expr2, …, exprN)

示例:

  SELECT COALESCE(phone, email, 'No contact info') AS contact_info
  FROM employees;

运行结果:
在这里插入图片描述
说明:
COALESCE(参数1,参数2…),方法可以包含多个参数,方法返回第一个不为空的参数值。

5.4、NULLIF()
  • 作用:如果两个表达式相等,则返回NULL,否则返回第一个表达式。
  • 语法:NULLIF(expr1, expr2)

示例:

  SELECT NULLIF(manager_id, 0) AS managerId
  FROM employees;

运行结果:
manger_id和null(本例的0)作比较,如果不相等返回第一个表达式的值,如果相等则返回null
在这里插入图片描述
manger_id和manger_id自身相比,肯定都是相同的,都返回了null
在这里插入图片描述

6、加密和哈希函数

加密和哈希函数用于生成加密字符串或哈希值。以下是一些常用的加密和哈希函数:

6.1、MD5()
  • 作用:生成MD5哈希值。
  • 语法:MD5(str)

示例:

 SELECT MD5('password');  -- 输出: 5f4dcc3b5aa765d61d8327deb882cf99

运行结果:
在这里插入图片描述

6.2、SHA1()和SHA2()
  • 作用:生成SHA-1或SHA-2哈希值。
  • 语法:SHA1(str)和SHA2(str, bit_length)

示例:

 SELECT SHA1('password');  -- 输出: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
 SELECT SHA2('password', 256);  -- 输出: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

运行结果:
在这里插入图片描述

6.3、AES_ENCRYPT()和AES_DECRYPT()
  • 作用:使用AES算法进行加密和解密。
  • 语法:AES_ENCRYPT(str, key)和AES_DECRYPT(encrypted_str, key)

示例:

 SELECT AES_ENCRYPT('secret', 'mykey');
 SELECT AES_DECRYPT(AES_ENCRYPT('secret', 'mykey'), 'mykey');

运行结果:
在这里插入图片描述

7、其他函数

除了上述分类,MySQL还提供了一些其他类型的函数。

7.1、UUID()
  • 作用:生成一个唯一的UUID(通用唯一标识符)。
  • 语法:UUID()

示例:
SELECT UUID();
运行结果:
在这里插入图片描述

7.2、INET_ATON()和INET_NTOA()
  • 作用:将IP地址转换为整数,或将整数转换为IP地址。
  • 语法:INET_ATON(ip_address) 和 INET_NTOA(integer)

示例:
SELECT INET_ATON(‘192.168.1.1’); – 输出: 3232235777
SELECT INET_NTOA(3232235777); – 输出: 192.168.1.1
运行结果:
在这里插入图片描述

8、内置函数总结

MySQL提供了丰富多样的内置函数,涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流、加密和哈希操作等多个方面。合理使用这些函数可以大大简化SQL查询,提高开发效率并增强数据处理能力。

二、MySQL自定义函数

除了内置函数,MySQL还支持自定义函数(User-Defined Functions, UDF),允许用户根据自己的需求编写复杂的逻辑。

自定义函数可以分为两类:

  • 存储函数(Stored Functions):使用SQL语法自定义编写函数,可以在数据库中存储并调用。
  • C语言编写的UDF(User-Defined Functions):通过C或C++编写并编译为动态链接库(.so 文件),然后在MySQL中加载和使用。

1、存储函数(Stored Functions)

存储函数是使用SQL和PL/SQL编写的函数,类似于存储过程,但它们返回一个值。存储函数可以在SELECT、INSERT、UPDATE等SQL语句中直接调用。

1.1、创建存储函数

使用CREATE FUNCTION语句来创建存储函数。

创建存储函数的基本语法:

DELIMITER //
CREATE FUNCTION function_name (param1 type, param2 type, ...)
RETURNS return_type
DETERMINISTIC | NOT DETERMINISTIC
LANGUAGE SQL
BEGIN
    -- 函数体
    RETURN result;
END //
DELIMITER ;

解释:

  • function_name:函数的名称。
  • param1, param2, …:函数的参数列表,每个参数包括名称和类型。
  • RETURNS return_type:指定函数的返回值类型。
  • DETERMINISTIC | NOT DETERMINISTIC:指定函数是否是确定性的。如果函数对于相同的输入总是返回相同的结果,则为DETERMINISTIC;否则为NOT DETERMINISTIC。
  • LANGUAGE SQL:指定函数使用的语言,通常是SQL。
  • BEGIN … END:函数体,包含执行的逻辑。
  • RETURN result:返回结果。
1.2、示例1:简单的数学计算函数

假设我们想创建一个函数add_numbers,它接受两个整数作为参数,并返回它们的和。

示例:

DELIMITER //

CREATE FUNCTION add_numbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
    DECLARE sum INT;
    SET sum = a + b;
    RETURN sum;
END //

DELIMITER ;

运行结果:
在这里插入图片描述
调用示例:

SELECT add_numbers(5, 10);  -- 输出: 15

运行结果:
在这里插入图片描述

1.3、示例2:带有条件判断的函数

我们可以创建一个函数get_employee_level,它根据员工的工资返回其级别(如"Junior"、“Mid-level"或"Senior”)。

示例:

DELIMITER //

CREATE FUNCTION get_employee_level(salary DECIMAL(10, 2))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
    DECLARE level VARCHAR(20);
    
    IF salary > 80000 THEN
        SET level = 'Senior';
    ELSEIF salary > 50000 THEN
        SET level = 'Mid-level';
    ELSE
        SET level = 'Junior';
    END IF;
    
    RETURN level;
END //

DELIMITER ;

运行结果:
在这里插入图片描述

调用示例:

SELECT name, salary, get_employee_level(salary) AS level
FROM employees;

运行结果:
在这里插入图片描述

1.4、示例3:带有游标的函数

假设我们有一个表orders,我们想创建一个函数get_total_orders,它接受客户ID作为参数,并返回该客户的所有订单总额。

创建表的sql:

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,          -- 订单的唯一标识符
    customer_id INT NOT NULL,                   -- 客户的唯一标识符
    order_date DATE NOT NULL,                   -- 订单的日期
    amount DECIMAL(10, 2) NOT NULL             -- 订单的金额
);

示例数据:
在这里插入图片描述
创建函数示例:

DELIMITER //

CREATE FUNCTION get_total_orders(customer_id_p INT)
RETURNS DECIMAL(10, 2)
DETERMINISTIC
BEGIN
    DECLARE total DECIMAL(10, 2) DEFAULT 0;
    DECLARE order_amount DECIMAL(10, 2);
    DECLARE done INT DEFAULT 0;
    
    DECLARE cur CURSOR FOR
        SELECT amount FROM orders WHERE customer_id = customer_id_p;
    
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
    OPEN cur;
    
    read_loop: LOOP
        FETCH cur INTO order_amount;
        IF done THEN
            LEAVE read_loop;
        END IF;
        SET total = total + order_amount;
    END LOOP;
    
    CLOSE cur;
    
    RETURN total;
END //

DELIMITER ;

解释:

  • DELIMITER //:更改分隔符为//,以便在函数体中使用;作为语句结束符,而不会提前终止函数定义。最后再将分隔符恢复为;。

  • CREATE FUNCTION get_total_orders(customer_id INT):创建一个名为get_total_orders的存储函数,接受一个INT类型的参数customer_id_p(注意入参不要和表字段相同),表示要查询的客户ID。

  • RETURNS DECIMAL(10, 2):指定函数返回一个DECIMAL(10, 2)类型的值,即订单总额,最多10位数字,其中2位是小数部分。

  • DETERMINISTIC:表示该函数对于相同的输入总是返回相同的结果。这意味着MySQL可以对其进行优化,因为它不会依赖外部状态或产生随机结果。

  • DECLARE total DECIMAL(10, 2) DEFAULT 0; :定义total,用于累加所有订单的金额,初始值为0。

  • DECLARE order_amount DECIMAL(10, 2); :定义order_amount,用于存储从游标中获取的每个订单的金额。

  • DECLARE done INT DEFAULT 0;:定义done,用于标记游标的遍历是否完成,初始值为0。当游标遍历到末尾时,done将被设置为1。

  • DECLARE cur CURSOR FOR:声明一个游标cur,用于遍历orders表中属于指定customer_id_p的所有订单的amount列。

  • SELECT amount FROM orders WHERE customer_id = customer_id_p; :这里的customer_id_p是函数的参数,表示我们要查询的客户ID。

  • DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; :当游标遍历到末尾(即没有更多行可以读取)时,MySQL会触发NOT FOUND异常。我们使用CONTINUE HANDLER来捕获这个异常,并将done设置为1,表示遍历结束。

  • OPEN cur:打开游标,准备从orders表中读取数据。

  • read_loop: LOOP:开始一个循环,逐行读取游标中的数据。

  • FETCH cur INTO order_amount:从游标中获取当前行的amount值,并将其存储在 order_amount变量中。

  • IF done THEN LEAVE read_loop:如果done被设置为1,表示游标已经遍历到末尾,则退出循环。

  • SET total = total + order_amount:将当前订单的金额累加到total中。

  • CLOSE cur:关闭游标,释放资源。

  • RETURN total:返回累加后的订单总额。

创建函数结果:
在这里插入图片描述
调用示例:

SELECT get_total_orders(2001);  -- 返回客户ID2001的所有订单总额

运行结果:
在这里插入图片描述

2、存储函数与存储过程的区别

在这里插入图片描述

3、存储函数的最佳实践

  • 保持函数简单:存储函数应该尽量简洁,避免过于复杂的逻辑。如果需要处理复杂的业务逻辑,考虑使用存储过程。
  • 使用DETERMINISTIC标记:如果函数对于相同的输入总是返回相同的结果,标记为DETERMINISTIC可以提高查询优化器的效率。
  • 避免副作用:存储函数不应该修改数据库中的数据,因为这可能会导致不可预测的行为。
  • 合理使用变量:在函数体内使用局部变量(DECLARE)来存储中间结果,避免重复计算。
  • 错误处理:使用SIGNAL语句抛出自定义错误,确保函数在遇到异常情况时能够正确处理。

4、自定义函数总结

MySQL的自定义函数功能非常强大,尤其是存储函数,允许你在数据库中封装复杂的逻辑并返回结果。通过合理使用存储函数,你可以简化SQL查询,提升代码的可读性和可维护性。

乘风破浪会有时,直挂云帆济沧海!!!

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

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

相关文章

关于Mac中的shell

1 MacOS中的shell 介绍: 在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前&#xff0c…

外卖院长帝恩以专业打法,开启外卖运营新格局

据中国饭店协会数据显示,2023年我国在线餐饮外卖市场规模已达到15254亿元,同比增长36.7%。预计到2027年,我国在线餐饮外卖市场规模有望达到19567亿元,行业渗透率有望达到30.4%。在这一蓬勃发展的行业背后,离不开无数从…

高清绘画素材3600多张动漫线稿线描上色练习参考插画原画

工作之余来欣赏一波线稿,不务正业版... 很多很多的线稿... 百度网盘 请输入提取码

Power BI如何连接Azure Databricks数据源?

故事背景: 近期有朋友询问,自己公司有一些项目使用了Azure Databricks用于数据存储。如何使用Power BI Desktop桌面开发软件连接Azure Databricks的数据源呢? 解决方案: 其实Power BI是提供了连接Azure Databricks数据源的选项的,只是配置…

了解RabbitMQ中的Exchange:深入解析与实践应用

在分布式系统设计中,消息队列(Message Queue)扮演着至关重要的角色,而RabbitMQ作为开源消息代理软件的佼佼者,以其高性能、高可用性和丰富的功能特性,成为了众多开发者的首选。在RabbitMQ的核心组件中&…

前端通过后端返回的数据流下载文件

后端返回文件流,下载的文件无法读取,损坏,原因是因为接口处理没有加 blob类型 downloadFile(row.fileId).then(res > { // res 即后端返回的数据流 const blob new Blob([res.data]) if (blob && blob.size 0) { this.$notify.error(内容为空,无法下载…

基于 GEE Sentinel-1 数据集提取水体

目录 1 水体提取原理 2 完整代码 3 运行结果 1 水体提取原理 水体提取是地理信息和遥感技术的关键应用之一,对于多个领域都具有重要的应用价值。它有助于更好地管理水资源,保护环境,减少灾害风险,促进可持续发展,以…

BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型

这篇文章介绍了BloombergGPT,一个专门为金融领域设计的大语言模型(LLM)。以下是文章的主要内容总结: 背景与动机: 大语言模型(如GPT-3)在多个任务上表现出色,但尚未有针对金融领域的…

ansible-api分析(VariableManager变量)

一. 简述: ansible是一个非常强大的工具,可以支持多种类型(字符,数字,列表,字典等)的变量。除了有大量的内置变量及fact变量,也可以通过多种方式进行变量自定义 。不同方式定义的变量,优先级也不太一样,之…

2025年PMP考试最新报名通知

经PMI和中国国际人才交流基金会研究决定,中国大陆地区2025年第一期PMI认证考试定于3月15日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。 一、时间安排 (一&#…

Mysql--基础篇--数据类型(整数,浮点数,日期,枚举,二进制,空间类型等)

MySQL提供了多种数据类型,用于定义表中列的数据格式。选择合适的数据类型不仅可以提高查询性能,还能确保数据的完整性和准确性。 一、数值类型 数值类型用于存储整数、浮点数和定点数。根据精度和范围的不同,数值类型可以分为以下几类&…

1-Transformer算法解读

目录 一.RNN与Transfrmer 二.word2vec 三.自注意力机制 四.辅助向量Q/K/V 五.计算过程 六.整体架构​编辑 七.Bert 一.RNN与Transfrmer RNN(循环神经网络)和Transformer都是深度学习中用于处理序列数据的模型,但它们在结构和性能上有显著的区别。以下是它们的一些…

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。在结合 Spring Boot 使用时,开发者能够快速完成数据库访问层的开发。 1. 介绍Spring Data JPA 1.1 什么是Spr…

【计算机操作系统:一、绪论】

第1章 绪论 1.1 操作系统在计算机系统中的地位 1.1.1 存储程序式计算机的结构和特点 存储程序式计算机(Stored Program Computer)是现代计算机的基础,其概念源于冯诺依曼(John von Neumann)提出的模型。这种计算机架…

如何查看服务器上的MySQL/Redis等系统服务状态和列表

如果呢你知道系统服务名称,要看状态很简单: systemctl status server-name 比如 systemctl status nginxsystemctl status redis # 等 这是一个nginx的示例: 那问题是 当你不知道服务名称时该怎么办。举个例子,比如mysql在启动…

安科瑞Acrel-1000DP分布式光伏监控系统在浙江安吉成3234.465kWp分布式光伏发电项目中的应用

摘 要:分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上,利用太阳能进行发电的一种可再生能源利用方式,与传统的大型集中式光伏电站相比,分布式光伏发电具有更灵活的布局、更低的建设成本和更高…

探索 Vue.js 的动态样式与交互:一个有趣的样式调整应用

修改日期备注2025.1.3初版 一、前言 今天和大家分享在 Vue.js 学习过程中开发的超酷的小应用。这个应用可以让我们通过一些简单的交互元素,如复选框、下拉菜单和输入框,来动态地改变页面上元素的样式哦 让我们一起深入了解一下这个项目的实现过程&…

大数据-268 实时数仓 - ODS层 将 Kafka 中的维度表写入 DIM

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 目前已经更新到了: H…

把vue项目或者vue组件发布成npm包或者打包成lib库文件本地使用

将vue项目发布成npm库文件,第三方通过npm依赖安装使用;使用最近公司接了一个项目,这个项目需要集成到第三方页面,在第三方页面点击项目名称,页面变成我们的项目页面;要求以npm库文件提供给他们;…

Kafka为什么要放弃Zookeeper

1.Kafka简介 Apache Kafka最早是由Linkedin公司开发,后来捐献给了Apack基金会。 Kafka被官方定义为分布式流式处理平台,因为具备高吞吐、可持久化、可水平扩展等特性而被广泛使用。目前Kafka具体如下功能: 消息队列,Kafka具有系统解耦、流…