当前位置: 首页 > news >正文

【MySQL】数据库中常用的函数

目录

  • 聚合函数
    • COUNT()函数的多种用法
      • COUNT(*)
      • COUNT(主键)
      • COUNT(1)
      • COUNT(常量)
      • COUNT(非主键)
      • COUNT(distinct(字段))
    • COUNT()函数小结
  • 字符函数
    • length(str)函数:获取参数值的字节个数
    • concat(str1,str2,...)函数:字符串拼接
    • upper(str)、lower(str)函数:大小写转换
    • substr(str,start,len)函数:截取字符串
    • substring_index(str,delim,count)
    • instr(str,要查找的子串)函数
    • trim(str)函数
    • lpad(str,len,填充字符)、rpad(str,len,填充字符)函数
    • replace(str,子串,另一个字符串)函数
    • concat_ws(separator,str1,str2,…)
    • elt(n,str1,str2,str3,…)
    • insert(str,pos,len,newstr)
    • reverse(str)翻转字符串
  • 数学函数
    • round(x,保留位数)函数
    • ceil(x)函数:向上取整
    • floor(x)函数:向下取整
    • truncate(x,D)函数
    • mod(被除数,除数)函数
    • pow(x,D)函数
    • 绝对值函数:ABS()
    • 圆周率函数:PI()
    • 获取随机数:RAND()
  • 时间/日期函数
    • now()函数
    • curdate()函数
    • curtime()函数
    • 获取日期和时间中的年、月、日、时、分、秒
    • weekofyear()函数:获取当前时刻所属周数
    • quarter()函数:获取当前时刻所属的季度
    • str_to_date()函数:字符串转日期
    • date_format()函数:日期转字符串
    • date_add(日期,interval num 时间)函数
    • last_day()函数:提取某个月最后一天的日期
    • datediff(end_date,start_date)函数:计算两个时间相差的天数
    • timestampdiff(unit,start_date,end_date)函数: 计算两个时间返回的年/月/天数;
    • ADDDATE(d,n)
    • ADDTIME(t,n)
    • DATE_SUB(date,INTERVAL expr type)
    • DAYNAME(d):返回日期 d 是星期几,如Monday,Tuesday
    • DAYOFMONTH(d)、DAYOFWEEK(d)等
    • NULLIF(expr1, expr2)
  • 流程操作函数
    • if(expr,v1,v2)函数
    • ifnull()函数
    • case…when函数的三种用法
      • 1.等值判断:可以实现多条件的查询值赛选;
      • 2.区间判断:类似于python中if-elif-else的效果;
      • case … when和聚合函数联用
  • 系统信息函数
    • version()函数:查看MySQL系统版本信息号
    • connection_id()函数:查看当前登入用户的连接次数数
    • processlist:查看用户的连接信息
    • database(),schema()函数
    • user(),current_user(),system_user()函数
  • 其它函数
    • md5(str)函数 加密函数;
    • encode(str,pswd_str)、decode(加密的字符串,pswd_str)函数
    • uuid():生成唯一序列UUID

聚合函数

聚合函数通常会跟分组查询结合使用

  • SUM(字段):求和
  • AVG(字段):求平均值
  • MIN(字段):求最小值
  • MAX(字段):求最大值
  • COUNT(*):统计符合条件的记录总条数

COUNT()函数的多种用法

count(1)、count(*)、count(常量)、count(主键)、count(非主键)、count(distinct(字段)) 等多个函数

COUNT(*)

  • 对于 MyISAM 引擎,会把表的总行数存在了磁盘上(存放在 information_schema 库中的 PARTITIONS 表中),在不加 where 条件时,执行 count(*) 时会直接返回这个总数,因此效率很高,但是在加 where 限定语句的时候 MySQL 需要对全表进行检索从而得出 count 的总数。

  • 而 InnoDB 引擎并没有像 MyISAM 那样把表的总行数存储在磁盘,而是在执行 count(* )时,在不加 where 限定语句时,MySQL Server 层需要把数据从引擎里面读出来,然后逐行累加得出总数;如果加了 where 限定语句,需要根据 where 条件从引擎里面筛选出数据,然后累加得出总数。

COUNT(主键)

  • 对于 MyISAM 引擎,不加 where 条件时,直接返回的表中保存的数据总行数值;加 where 条件时,需要走主键索引筛选出值后再统计;

  • 对于 InnoDB 引擎,不加 where 条件时,count(id) 和 count(*) 的处理方式一样,MySQL优化器会选择最小树索引age 索引进行遍历统计;加 where 条件时,需要走主键索引筛选出值后再统计

COUNT(1)

对于 MyISAM 引擎,count(1) 和 count(*) 的 逻辑是一样的。

对于 InnoDB 引擎,按照官方文档,count(1) 和 count(*) 的处理方式一样,无性能差别

COUNT(常量)

count(常量)的执行逻辑和 count(1) 的逻辑是一样的,比如:count(5)、count(‘abc’)、count(‘.’)

COUNT(非主键)

只统计非主键字段值不为NULL的总数,不管在 InnoDB 引擎 还是在 MyISAM引擎中执行,非主键这个字段是否添加了索引直接影响了count() 统计扫描表的行数,从而影响统计的性能

COUNT(distinct(字段))

count(distinct(字段)) 其实是 count(字段) + distinct 的结果集,统计字段不为NULL,并且在字段值重复的情况下只统计一次

COUNT()函数小结

  1. count(expr)函数的参数 expr可以是任意的表达式,该函数用于统计在符合搜索条件的记录总数;
  2. count(expr)函数执行效率从低到高排序为:count(非主键字段) < count(主键) < count(1) ≈ count(*) ;
  3. 对于 count(1) 和 count() ,效率相当,建议尽量使用 count(),因为 MySQL 优化器会选择最小的索引树进行统计,把优化的问题交给 MySQL 优化器去解决就可以了;
  4. count(列字段) 只统计不为 NULL 的总行数,比如,count(name),当name字段值为NUll时,就不会被count;而其他的count,它返回检索到的行数,无论它们是否包含 NULL值;
  5. count(NULL) 总是返回 0;
  6. count(expr) 聚合函数在统计时,带与不带 where 条件实现原理具有差异性,性能也存在差异性;
  7. 在生产中,对于InnoDB 引擎,如果对数据总量不要求特别精确,可以使用 “show table status” 方式获取总行数;
  8. 因为 MySQL一直在快速发展,所以不同的版本实现可能存在差异,所以在研究技术的时候一定要注意版本差异;
  9. 在生产环境中,应尽量避免 count(expr)这种耗时操作,如果一定要进行统计,可以根据统计数据的精确度来区分采用什么方式统计;也可以在专业 DBA 的指导下进行,或者通过 explain 执行计划宏观看下count(expr) 操作会扫描多少数据行,如果对性能影响比较大,可以选择在离线库或者只读库中进行

字符函数

length(str)函数:获取参数值的字节个数

对于utf-8字符集来说,一个英文占1个字节;一个中文占3个字节;
对于gbk字符集来说,一个英文占1个字节;一个中文占2个字节;

select length('苏生Susheng') as 长度 from dual;

在这里插入图片描述

concat(str1,str2,…)函数:字符串拼接

通过输入的参数str1、str2等,将他们拼接成一个字符串。

select concat('苏生','-','Susheng') as 作者信息 from dual;

在这里插入图片描述

upper(str)、lower(str)函数:大小写转换

upper(str):将字符中的所有字母变为大写
lower(str)将字符中的所有字母变成小写
lcase(str)是 lower()的同义词,用法一样。

select upper('susheng') as 大写, lower('SUSHENG') as 小写 from dual;

在这里插入图片描述

substr(str,start,len)函数:截取字符串

str为输入字符串,从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。
mid(str,pos,len)是 substring(str,pos,len)的同义词,截取字符串功能,用法一样

select substr('我是CSDN的苏生,低调学习',8,2) as 截取输出 from dual;

在这里插入图片描述注:8是开始位置,此处起始位置,2是开始到结束位置的长度,并不是索引的结束位置

substring_index(str,delim,count)

在定界符 delim 以及count 出现前,从字符串str返回自字符串。若count为正值,则返回最终定界符(从左边开始)左边的一切内容。若count为负值,则返回定界符(从右边开始)右边的一切内容。

 select substring_index('pro,file,admin',',',-1) from dual;

在这里插入图片描述

instr(str,要查找的子串)函数

  • 返回子串第一次出现的索引,如果找不到,返回0;
  • 当查找的子串存在于字符串中:返回该子串在字符串中【第一次】出现的索引。
  • 当查找的子串不在字符串中:返回0
select instr('我是CSDN的苏生,低调学习','苏生') as 第一次出现 from dual;
select instr('我是CSDN的苏生,低调学习','书生') as 第一次出现 from dual;

在这里插入图片描述在这里插入图片描述

trim(str)函数

去掉字符串前后的空格; 该函数只能去掉字符串前后的空格,不能去掉字符串中间的空格。

select trim('   我是CSDN的苏生    低调学习   ') as 空格去除 from dual;

在这里插入图片描述

lpad(str,len,填充字符)、rpad(str,len,填充字符)函数

lpad(左填充):用指定的字符,实现对字符串左填充指定长度
rpad(右填充):用指定的字符,实现对字符串右填充指定长度

select lpad('1',3,'0') as out_put from dual;
select rpad('1.0',5,'0') as out_put from dual;

在这里插入图片描述在这里插入图片描述注:这里的填充len指的是用填充字符填充后的总长度,也就是若你的len选择5你的字符串含有位置为4则只能填充一个字符,也就是填充字符的第一个字符

replace(str,子串,另一个字符串)函数

将字符串str中的字串,替换为另一个字符串

select username as 替换之前,replace(username,'liubei','liuxuande') as 替换之后 from user;

在这里插入图片描述

concat_ws(separator,str1,str2,…)

是concat()的特殊形式。第一个参数是其它参数的分隔符。
分隔符的位置放在要连接的两个字符串之间。
分隔符可以是一个字符串,也可以是其它参数。
如果分隔符为 null,则结果为 null。
函数会忽略任何分隔符参数后的 null 值。

select concat_ws(':',username,userpass,role) from user;

在这里插入图片描述在这里插入图片描述

elt(n,str1,str2,str3,…)

若n=1,则返回值为str1若n=2,则返回值为 str2 ,以此类推。若n小于1或大于参数的数目,则返回值为 null 。

select username,elt(role,'管理员','版主','会员','游客') as 身份 from user;

在这里插入图片描述

select username,elt(role,'管理员','版主','会员','游客') as 身份 from user;

在这里插入图片描述

insert(str,pos,len,newstr)

  • 返回字符串 str, 其子字符串起始于 pos 位置和长期被字符串 newstr取代的len 字符。
  • 如果pos 超过字符串长度,则返回值为原始字符串。假如len的长度大于其它字符串的长度,则从位置pos开始替换。若任何一个参数为null,则返回值为null。
select insert('susheng',1,2,'shu') from dual;

在这里插入图片描述

reverse(str)翻转字符串

select 'admin' as 翻转前,reverse('admin') as 翻转后 from dual;

在这里插入图片描述

数学函数

round(x,保留位数)函数

四舍五入; 当对正数进行四舍五入:按照正常的计算方式,四舍五入即可。当对负数进行四舍五入:先把符号丢到一边,对去掉负号后的正数进行四舍五入,完成以后,再把这个负号,补上即可。

select round(1.595658,3) as out_put from dual;

在这里插入图片描述

ceil(x)函数:向上取整

向上取整,返回>=该参数的最小整数。求的是大于等于这个数字的最小整数

select ceil(1.9),ceil(1.1) from dual;

在这里插入图片描述

floor(x)函数:向下取整

向下取整,返回<=该参数的最大整数,求的是小于等于这个数字的最大整数。

select floor(1.9),floor(1.1) from dual;

在这里插入图片描述

truncate(x,D)函数

  • 此函数叫截断函数,顾名思义就是就是截取不要的部分,然后删掉(断掉)它。在小数点的D位置处,截取数字直接删去数字,若在左边就是位置取整不使用任何法则。

  • 把truncate当作小数点(.)x是要截取的数字。D为正数时是小数点的右侧部分,D为0时则不要小数部分,D为负数时是小数点左边部分,具体使用看例子演示。

select truncate(314159.2673525,5) as 截取之后 from dual;
select truncate(314159.2673525,0) as 截取之后 from dual;
select truncate(314159.2673525,-4) as 截取之后 from dual;

在这里插入图片描述

mod(被除数,除数)函数

取余; 当被除数为正数,结果就是正数。当被除数为负数,结果就是负数。

select mod(10,3) as out_put from dual;

在这里插入图片描述

pow(x,D)函数

此函数是用于计算指数函数,x为底,D为指数
select pow(5,2) as 平方运算 from dual;

select pow(5,2) as 平方运算 from dual;

在这里插入图片描述

绝对值函数:ABS()

select abs(-99) from dual;

在这里插入图片描述

圆周率函数:PI()

在这里插入图片描述

获取随机数:RAND()

每次调用都会得到一个0-1之间的浮点数

select RAND(),RAND(),RAND(),RAND() from dual;

在这里插入图片描述

时间/日期函数

  • DATE_FORMAT(“20000101”, ‘%Y-%m-%d’) – 2020-01-01
  • DATE_FORMAT(“2000-01-01”, ‘%Y-%m-%d’) – 2020-01-01
  • DATE_FORMAT(‘2000-05-07 05:06:07’, ‘%H:%i:%s’) – 05:06:07 (24小时制)
  • DATE_FORMAT(‘2000-05-07 05:06:07’, ‘%h:%i:%s’) – 05:06:07 (12小时制)
  • DATE_FORMAT(‘2000-05-07 05:06:07’, ‘%Y-%m-%d %H:%i:%s’) – 2000-05-07 05:06:07
    在这里插入图片描述

now()函数

select now() from dual;

在这里插入图片描述

curdate()函数

只返回系统当前的日期,不包含时间

select curdate() from dual;

在这里插入图片描述

curtime()函数

只返回当前的时间,不包含日期

select curtime() from dual;

在这里插入图片描述

获取日期和时间中的年、月、日、时、分、秒

  • 获取年份:year()
  • 获取月份:month()
  • 获取日:day()
  • 获取小时:hour()
  • 获取分钟:minute()
  • 获取秒数:second()
select year(now()) from dual;

在这里插入图片描述

weekofyear()函数:获取当前时刻所属周数

select weekofyear(now()) from dual;

在这里插入图片描述

quarter()函数:获取当前时刻所属的季度

select quarter(curdate()) from dual;

在这里插入图片描述

str_to_date()函数:字符串转日期

select str_to_date('2024,3,1','%Y,%c,%d');

在这里插入图片描述

date_format()函数:日期转字符串

select date_format(now(),'%Y年%m月%d日') from dual;

在这里插入图片描述

date_add(日期,interval num 时间)函数

向前、向后偏移日期和时间,正号为向后,负号为向前,除此之外还有hour(小时),minute(分钟),second(秒)

select curdate() as '当前时间',date_add(curdate(),interval 1 year) as '一年后',date_add(curdate(),interval 1 month) as '一个月后',date_add(curdate(),interval 1 day) as '一天后' 
from dual;

在这里插入图片描述

last_day()函数:提取某个月最后一天的日期

select last_day(now()) from dual;

在这里插入图片描述

datediff(end_date,start_date)函数:计算两个时间相差的天数

select datediff(curdate(),'2000-1-1') from dual;在这里插入图片描述

timestampdiff(unit,start_date,end_date)函数: 计算两个时间返回的年/月/天数;

unit参数是确定(start_date,end_date)结果的单位,表示为整数,以下是有效单位:
year:年份、month:月份、day:天、hour:小时、minute 分钟、second:秒、microsecond:微秒、week:周数、quarter:季度

select timestampdiff(year,'2000-1-1',curdate()) from dual;

在这里插入图片描述

ADDDATE(d,n)

计算起始日期 d 加上 n 天的日期

SELECT  ADDDATE("2017-06-15",  INTERVAL 10 DAY);

在这里插入图片描述

ADDTIME(t,n)

n 是一个时间表达式,时间 t 加上时间表达式 n

# 加5秒
SELECT  ADDTIME('2011-11-11  11:11:11',5);

在这里插入图片描述

DATE_SUB(date,INTERVAL expr type)

函数从日期减去指定的时间间隔。

SELECT DATE_SUB('2024-3-1',INTERVAL  2 DAY) AS OrderPayDate FROM dual;

在这里插入图片描述

DAYNAME(d):返回日期 d 是星期几,如Monday,Tuesday

SELECT  DAYNAME('2011-11-11  11:11:11') from dual;

在这里插入图片描述

DAYOFMONTH(d)、DAYOFWEEK(d)等

DAYOFMONTH(d):计算日期 d 是本月的第几天
DAYOFWEEK(d):日期 d 今天是星期几,1 星期日,2 星期一,以此类推

NULLIF(expr1, expr2)

比较两个字符串,如果字符串 expr1 与 expr2 相等返回 NULL,否则返回 expr1

SELECT  NULLIF(25,25),nullif(24,25);

在这里插入图片描述

流程操作函数

if(expr,v1,v2)函数

实现if-else的效果,如果expr是true,返回v1。如果expr是false,返回v2

select studentresult,if(studentresult<60,'不及格',studentresult) as 成绩 from result where subjectno=1;

在这里插入图片描述

ifnull()函数

判断值是否为null,是null用指定值填充;如果v1不为NULL,返回v2。否则返回v1

select studentno,studentname,ifnull(address,'地址不详') from student order by studentno desc limit 5;

在这里插入图片描述

case…when函数的三种用法

1.等值判断:可以实现多条件的查询值赛选;

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2

else 要显示的值n或语句n
end

select studentname,gradeid,case gradeid when 1 then '一年级' when 2 then '二年级' when 3 then '三年级' else '四年级' end as 年级 from student order by studentno desc limit 5;

在这里插入图片描述

2.区间判断:类似于python中if-elif-else的效果;

case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2

else 要显示的值n或语句n
end

select studentresult ,case when studentresult <60 then '不及格' when studentresult >= 60 and studentresult < 80 then '及格' else '优秀' end as 档次  from result where subjectno = 1;

在这里插入图片描述

case … when和聚合函数联用

select subjectno,max(studentresult) 最高分,min(studentresult) 最低分,avg(studentresult) 平均分, sum(case when studentresult>=60 then 1 else 0 end)/count(*) 及格率,sum(case when studentresult>=80 then 1 else 0 end)/count(*) 优秀率,sum(case when studentresult < 60 then 1 else 0 end)/count(*) 不及格率 
from result group by subjectno;

在这里插入图片描述

系统信息函数

version()函数:查看MySQL系统版本信息号

select version() from dual;

在这里插入图片描述

connection_id()函数:查看当前登入用户的连接次数数

直接调用CONNECTION_ID()函数–不需任何参数–就可以看到当下连接MySQL服务器的连接次数,不同时间段该函数返回值可能是不一样的

select connection_id();

在这里插入图片描述

processlist:查看用户的连接信息

show processlist;

在这里插入图片描述

  • Id列:登录MySQL的用户标识,是系统自动分配的CONNECTION ID;
  • User列:显示当前的“用户名”;
  • Host列:显示执行这个语句的IP,用来追踪出现问题语句的用户;
  • db列:显示这个进程目前连接的是哪个数据库;
  • Command列:显示当前连接执行的命令,一般是休眠(Sleep)、查询(Query)、连接(Connect);
  • Time列:显示这个状态持续的时间,单位是秒;
  • State列:显示使用当前连接的SQL语句的状态,包含有:Copying to tmptable、Sorting result、Sending data等状态;
  • Info列:显示当前SQL的内容,如果语句过长可能无法显示完全。

database(),schema()函数

查看当前使用的数据库

select database(),schema();

在这里插入图片描述

user(),current_user(),system_user()函数

获取当前用户

select user(),current_user(),system_user();

在这里插入图片描述

其它函数

md5(str)函数 加密函数;

  • 参数为字符串,该函数为字符串算出一个MD5 128比特校验和
  • 返回值以32位16进制数字的二进制字符串形式返回
  • str为NULL,返回NULL
  • select md5(‘Susheng’);
    在这里插入图片描述

encode(str,pswd_str)、decode(加密的字符串,pswd_str)函数

加密:encode(被加密的密码,密码);
解密:decode(encode(被加密的密码,密码),密码); //也可以用上面返回的二进制字符串

uuid():生成唯一序列UUID

select uuid();

在这里插入图片描述

相关文章:

【MySQL】数据库中常用的函数

目录 聚合函数COUNT()函数的多种用法COUNT(*)COUNT(主键)COUNT(1)COUNT(常量)COUNT(非主键)COUNT(distinct(字段)) COUNT()函数小结 字符函数length(str)函数&#xff1a;获取参数值的字节个数concat(str1,str2,...)函数&#xff1a;字符串拼接upper(str)、lower(str)函数:大小…...

嵌入式面试常见问题(四)

1.在基于Linux的网络套接字编程中&#xff0c;如果需要创建一个IPv4的网络套接字&#xff0c;应该在socket函数中指定domain参数为AF_INET 解析&#xff1a; socket()函数创建套接字 函数原型:int socket(int domain, int type, int protocol); domain&#xff1a;协议簇&…...

用Java在Spring Boot项目中,如何传递来传递一个对象(多个参数??

前言&#xff1a; 在前面我们已经了解到&#xff0c;Spring Boot项目中&#xff0c;可以传递一个参数&#xff0c;或者多个参数&#xff0c;但是&#xff0c;随着参数的增加&#xff0c;咱们总不能每增加一个参数&#xff0c;就重新写一段代码吧&#xff1f;&#xff1f;这样显…...

如何利用ChatGPT搞科研?论文检索、写作、基金润色、数据分析、科研绘图(全球地图、植被图、箱型图、雷达图、玫瑰图、气泡图、森林图等)

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...

一命通关二分搜索

二分法 简介 和双指针一样&#xff0c;二分法也是一种优化方法&#xff0c;或者说二分法就是双指针的一类。不过&#xff0c;二分法的思想比双指针诞生更早也更广泛&#xff0c;在我们日常生活里也无时不刻在使用二分的思想。 比如我们想回顾某些影片&#xff0c;但是只记得…...

串联所有单词的子串

题目链接 串联所有单词的子串 题目描述 注意点 words[i] 和 s 由小写英文字母组成1 < words.length < 5000可以以 任意顺序 返回答案words中所有字符串长度相同 解答思路 根据滑动窗口哈希表解决本题&#xff0c;哈希表存储words中所有的单词及单词的出现次数&#…...

【会议征稿通知】第四届经济发展与商业文化国际学术会议(ICEDBC2024)

第四届经济发展与商业文化国际学术会议&#xff08;ICEDBC2024&#xff09; The 4th International Conference on Economic Development and Business Culture (ICEDBC 2024) 第四届经济发展与商业文化国际学术会议&#xff08;ICEDBC2024&#xff09;将于2024年6月21-23日在…...

回溯算法套路③排列型回溯+N皇后【基础算法精讲 16】

46 . 全排列 链接 : . - 力扣&#xff08;LeetCode&#xff09; 思路 : 那么怎么确定选了那个数呢? 这里设置一个used表示i选没选过 ; class Solution { public:vector<vector<int>> ans;vector<int> path;void backtrack(vector<int>nums,vect…...

MyBatis-Plus 框架中的自定义元对象处理器

目录 一、代码展示二、代码解读 一、代码展示 package com.minster.yanapi.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;import java.util…...

Node.js_基础知识(fs模块 - 文件操作)

写入 文件操作 流式写入:fs.createWriteStream(path[, options]) 可以减少打开关闭文件的次数适用于:大文件写入、频繁写入参数说明: path:文件路径文件夹操作: 调用mkdir方法:fs.mkdir(./a/b/c, err => {}) 递归创建文件夹:加参数recursive fs.mkdir(./a/b/c, {recu…...

基于C#开发OPC DA客户端——搭建KEPServerEX服务

简介 OPC DA (OLE for Process Control Data Access) 是一种工业自动化领域中的通信协议标准&#xff0c;它定义了应用程序如何访问由OPC服务器提供的过程控制数据。OPC DA标准允许软件应用程序&#xff08;客户端&#xff09;从OPC服务器读取实时数据或向服务器写入数据&…...

让你的函数,返回你需要的“两个值” (函数传址、结构体作为参数传参)

总结&#xff1a;1.结构体完成你的目标 2.指针传参 方法2. void get_a_b(int* a, int* b) { *a 13; *b 14; //通过解引用&#xff0c;找到并修改 } int main() { int a 0; int b 0; get_a_b(&a, &b); //传地址 prin…...

快速上手:在 Android 设备上运行 Pipy

Pipy 作为一个高性能、低资源消耗的可编程代理&#xff0c;通过支持多种计算架构和操作系统&#xff0c;Pipy 确保了它的通用性和灵活性&#xff0c;能够适应不同的部署环境&#xff0c;包括但不限于云环境、边缘计算以及物联网场景。它能够在 X86、ARM64、海光、龙芯、RISC-V …...

【操作系统学习笔记】文件管理1.3

【操作系统学习笔记】文件管理1.3 参考书籍: 王道考研 视频地址: Bilibili I/O 控制方式 程序直接控制方式中断驱动方式DMA 方式通道控制方式 程序直接控制方式 关键词: 轮询 完成一次读/写操作的流程 CPU 向控制器发出读指令。于是设备启动&#xff0c;并且状态寄存器设…...

基于springboot+vue的酒店管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

Linux 相关命令

文章目录 目录相关操作vim 编辑器命令行模式插入模式底行模式 目录相关操作 查看当前目录下的文件 ls创建目录 mkdir 目录名进入文件&#xff0c;首先确认位于文件的目录 vi 文件名 vim 编辑器 命令行模式 控制光标的移动&#xff0c;字符或行的删除&#xff0c;移动复制某区域…...

阿里云搭建私有docker仓库(学习)

搭建私有云仓库 首先登录后直接在页面搜索栏中搜索“容器镜像服务” 进入后直接选择个人版&#xff08;可以免费使用&#xff09; 选择镜像仓库后创建一个镜像仓库 在创建仓库之前我们先创建一个命名空间 然后可以再创建我们的仓库&#xff0c;可以与我们的github账号进行关联…...

MySQL数据库基本操作(一)

数据库的基本概念 1. 数据库的英文单词&#xff1a; DataBase 简称 &#xff1a; DB 2. 什么数据库&#xff1f;* 用于存储和管理数据的仓库。 ​ 3. 数据库的特点&#xff1a;1. 持久化存储数据的。其实数据库就是一个文件系统2. 方便存储和管理数据3. 使用了统一的方式操作数…...

【暗月安全】2021年渗透测试全套培训视频

参与培训需要遵守国家法律法规&#xff0c;相关知识只做技术研究&#xff0c;请勿用于违法用途&#xff0c;造成任何后果自负与本人无关。 中华人民共和国网络安全法&#xff08;2017 年 6 月 1 日起施行&#xff09; 第二十二条 任何个人和组织不得从事入侵他人网络、干扰他…...

HTML极速入门

HTML基础 什么是HTML HTML(Hyper Text Markup Language),超文本标记语言. 超文本:比文本更强大.通过链接和交互式方式来组织和呈现信息的文本形式.不仅仅有文本,还可能包括图片,音频,或者自己经审阅过它的学者所加的评注,补充或脚注等. 标记语言:由标签构成的语言 HTML的标…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...