数据库基本功之SQL的基本函数
1. 单行函数与多行函数
1.1 单行函数
- 指单行数据输入,返回一个值的函数. 所以查询一个表时,对选择的每一行数据都返回一个结果.
[oracle@oracle-db-19c ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 7 07:59:44 2023
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SQL> show con_name;CON_NAME
------------------------------
CDB$ROOT
SQL> show user;
USER is "SYS"
SQL> alter session set container=PDB1;Session altered.SQL> conn scott/tiger@PDB1;
Connected.
SQL> show user;
USER is "SCOTT"
SQL> set pagesize 200 linesize 200
SQL> select empno,lower(ename) from emp;EMPNO LOWER(ENAME)
---------- ------------------------------7369 smith7499 allen7521 ward7566 jones7654 martin7698 blake7782 clark7788 scott7844 turner7876 adams7900 james7902 ford7934 miller13 rows selected.SQL> 
- 单行函数是用于处理数据项的,它接受一个或多个参数,并为查询返回的每个行返回一个值,参数可以是下列对象:
- 用户提供的常数
- 变量值
- 列名
- 表达式
- 单上函数具有以下特性:
- 作用于查询返回的每个行
- 为每行返回一个结果
- 可能会返回与引用数据类型不同的数据值
- 可能需要一个或多个参数
- 可能用在select、where和order by字句中
1.2 多行函数
指多行数据输入,返回一个值的函数.所以对表的多组进行操作,并且每组返回一个结果.(典型的是聚合函数)
SQL> 
SQL> show user;
USER is "SCOTT"
SQL> select sum(sal) from emp;SUM(SAL)
----------24025SQL> 2. 单行函数的几种类型
2.1 字符函数
2.1.1 lower & upper & initcap
-- upper('sql course')			-- sql course 返回大写
-- upper('sql course')			-- sql course 返回大写
-- initcap('sql course')		-- sql course 返回只有首字母大写SQL> select ename,lower(ename),upper(ename),initcap(ename) from emp where ename='SMITH';ENAME                          LOWER(ENAME)                   UPPER(ENAME)                   INITCAP(ENAME)
------------------------------ ------------------------------ ------------------------------ ------------------------------
SMITH                          smith                          SMITH                          SmithSQL> 2.1.2 concat
-- concat('good','string')		-- good string 拼接,只能拼接2个字符串SQL> show user
USER is "SCOTT"
SQL> show con_name;CON_NAME
------------------------------
PDB1
SQL> select concat(ename,job) from emp where ename='FORD';CONCAT(ENAME,JOB)
---------------------------------------------------------
FORDANALYSTSQL> 2.1.3substr
-- substr('String',1,3)			-- Str 从第1位开始截取3位数
SQL> select substr(ename,1,3) from emp where ename='SCOTT';SUBSTR(ENAME,1,3)
------------------------------------
SCOSQL> 2.1.4 instr
-- instr('t#i#m#r#a#n#','#',5)	-- 从第5位起始找#字符在那个绝对位置
SQL> select instr('K#L#A#U#S#','#',5) from dual;INSTR('K#L#A#U#S#','#',5)
-------------------------6SQL>2.1.5 length
-- length('String')				-- 长度
SQL> 
SQL> show user;
USER is "SCOTT"
SQL> show con_name;CON_NAME
------------------------------
PDB1
SQL> select length(ename) from emp where ename='SCOTT';LENGTH(ENAME)
-------------5SQL> 2.1.6 lpad & rpad
-- lpad('first',10,'$')		-- 左填充
-- rpad (676768,10,'*')		-- 右填充SQL> select rpad(ename,10,'$') from emp where rownum < 6;RPAD(ENAME,10,'$')
------------------------------------------------------------------------------------------------------------------------
SMITH$$$$$
ALLEN$$$$$
WARD$$$$$$
JONES$$$$$
MARTIN$$$$SQL> select lpad(ename,10,'*') from emp where rownum < 6;LPAD(ENAME,10,'*')
------------------------------------------------------------------------------------------------------------------------
*****SMITH
*****ALLEN
******WARD
*****JONES
****MARTINSQL> 2.1.7 replace
-- replace ('JACK and JUE','J','BL')	-- 替换字符
SQL> select replace('Gkkd Jkb','k','o') from dual;REPLACE('GKKDJKB','K','O
------------------------
Good JobSQL> 
2.1.8 trim
-- trim ('a' from 'aaklausaa')			-- 去除前后指定字符
SQL> 
SQL> select trim ('a' from 'aaklausaa') from dual;TRIM('A'FROM'AA
---------------
klausSQL> 2.2 数值函数
2.2.1 round
对指定的值做四舍五入
round (p, s)
s为正数时, 表示小数点后要保留的位数,
s为0或不填写,表示取整四舍五入.
s为负数时,表示小数点前要保留的位数.
SQL> 
SQL> select round(14535.9856) from dual;ROUND(14535.9856)
-----------------14536SQL> select round(14535.9856,2) from dual;ROUND(14535.9856,2)
-------------------14535.99SQL> select round(14535.9856,-2) from dual;ROUND(14535.9856,-2)
--------------------14500SQL> select round(14555.9856,-2) from dual;ROUND(14555.9856,-2)
--------------------14600SQL> 
2.2.2 trunc
对指定的值取整
trunc (p, s)
s为正数时, 表示小数点后要保留的位数,
s为0或不填写,表示取整.
s为负数时,表示小数点前要保留的位数.SQL> select trunc(14535.9856) from dual;TRUNC(14535.9856)
-----------------14535SQL> select trunc(14535.9856,2) from dual;TRUNC(14535.9856,2)
-------------------14535.98SQL> select trunc(14535.9856,-2) from dual;TRUNC(14535.9856,-2)
--------------------14500SQL> 2.2.3 mod
返回除法后的余数
SQL> 
SQL> select mod(100,12) from dual;MOD(100,12)
-----------4SQL> 
2.3 日期函数
2.3.1 格式和语言
select * from v$nls_parameters;	-- 查询日期语言	
select SYSTIMESTAMP from dual;	-- 查看日期格式
-- 设置日期语言
alter session set NLS_DATE_LANGUAGE='American';				-- 只对当前会话起作用
alter system set NLS_DATE_LANGUAGE='American';				-- 对系统设置生效
alter session set NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE';
-- 或者这样
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
-- 缺省格式:DD-MON-RR.
-- 可以表示日期范围:(公元前)4712 至(公元)99992.3.2 日期转字符
# (to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;	-- 日期转化为字符串	
select to_char(sysdate,'yyyy') as nowYear from dual;					-- 获取时间的年	
select to_char(sysdate,'mm') as nowMonth from dual;						-- 获取时间的月
select to_char(sysdate,'dd') as nowDay from dual;						-- 获取时间的日  
select to_char(sysdate,'hh24') as nowHour from dual;					-- 获取时间的时  
select to_char(sysdate,'mi') as nowMinute from dual;					-- 获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual;					-- 获取时间的秒2.3.3 字符和时间互换
-- 显示Two Hundred Twenty-Two
SQL> 
SQL> select to_date('2023-03-07 09:32:46','yyyy-mm-dd hh24:mi:ss') from dual;TO_DATE('2023-0')
---------------
07-MAR-23SQL> select to_char(to_date(222,'J'),'Jsp') from dual;TO_CHAR(TO_DATE(222,'J'),'JSP')
------------------------------------------------------------------
Two Hundred Twenty-TwoSQL> 
2.3.4 天数差floor
SQL> select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;FLOOR(SYSDATE-TO_DATE('20020405','YYYYMMDD'))
---------------------------------------------7641SQL> 
2.3.5 Month_between
因为日期在oracle里是以数字形式存储的,所以可对它进行加减运算,计算是以天为单位
-- 1、数据类型转换
SQL> select months_between ('1994-04-01','1992-04-01') mm from dual;
select months_between ('1994-04-01','1992-04-01') mm from dual
ERROR at line 1:
ORA-01861: literal does not match format string
-- 报错:字符串格式不匹配
-- 原因:
-- 如果直接按照字符串方式,或者直接使用'2013-2-26 11:07:25',没有指定日期格式,就会报错
to_date('2013-2-26 11:07:25' , 'yyyy-mm-dd hh24:mi:ss')
-- 正确如下:
select months_between (to_date('1994-04-01','yyyy-mm-dd'),to_date('1992-04-01','yyyy-mm-dd')) mm from dual;
-- 参考第三章:[数据类型转换]部分-- 2、查找emp表中参加工作时间>30年的员工
SQL> select * from emp where months_between (sysdate, hiredate)/12>30;
知识点:
 很容易认为单行函数返回的数据类型与函数类型一致,对于数值函数类型而言的确如此,但字符和日期函数可以返回任何数据类型的值.
 比如 instr 函数是字符型的, months_between函数是日期型的,但它们返回的都是数值. 
2.3.6 Next_day
-- NEXT_DAY的第2个参数可以是数字1-7, 分别表示周日--周六, 比如要取下一个星期六, 则应该是:SQL> select next_day(sysdate,7) from dual;NEXT_DAY(SYSDAT
---------------
11-MAR-23SQL> select last_day (to_date('1999-06','yyyy-mm')) ld from dual;LD
---------------
30-JUN-99SQL> 
2.3.7 extract
-- extract()找出日期或间隔值的字段值
-- 获得小时数
SQL> SELECT EXTRACT(HOUR FROM TIMESTAMP '2020-09-16 2:39:40') from dual;EXTRACT(HOURFROMTIMESTAMP'2020-09-162:39:40')
---------------------------------------------2
--获取分钟数SQL> SELECT EXTRACT(minute FROM TIMESTAMP '2020-09-16 2:39:40') from dual;EXTRACT(MINUTEFROMTIMESTAMP'2020-09-162:39:40')
-----------------------------------------------39
---获取天数
SQL> SELECT EXTRACT(day FROM TIMESTAMP '2020-09-16 2:39:40') from dual;EXTRACT(DAYFROMTIMESTAMP'2020-09-162:39:40')
--------------------------------------------16
--- 获取月份数
SQL> SELECT EXTRACT(month FROM TIMESTAMP '2020-09-16 2:39:40') from dual;EXTRACT(MONTHFROMTIMESTAMP'2020-09-162:39:40')
----------------------------------------------9
--- 获取年份数
SQL> SELECT EXTRACT(year FROM TIMESTAMP '2020-09-16 2:39:40') from dual;EXTRACT(YEARFROMTIMESTAMP'2020-09-162:39:40')
---------------------------------------------2020SQL> select sysdate,to_char(sysdate,'hh24') from dual;SYSDATE         TO_CHA
--------------- ------
07-MAR-23       09SQL>2.3.8 add_month
SQL> 
SQL> select add_months(to_date('2023-03-01','yyyy-mm-dd'),4) am from dual;AM
---------------
01-JUL-23SQL> select add_months(sysdate,-6) from dual;ADD_MONTHS(SYSD
---------------
07-SEP-22SQL> 2.3.9 日期函数的运用
2.3.9.1 查看月份天数不定的方法
SQL> select to_char(add_months(last_day(sysdate) +1, -1), 'yyyymmdd') s,to_char(last_day(sysdate),'yyyymmdd') e from dual;S                        E
------------------------ ------------------------
20230301                 20230331SQL> 2.3.9.2 今年的天数
SQL> select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') days from dual;DAYS
----------365SQL> --- 今年2月份的最后一天
SQL> select to_char(last_day(to_date('02'||to_char(sysdate,'yyyy'),'mmyyyy')),'dd') days from dual;DAYS
------
28SQL> 2.3.9.3 某天是星期几
SQL> select to_char(to_date('2023-03-31','yyyy-mm-dd'),'day') from dual;TO_CHAR(TO_DATE('2023-03-31
---------------------------
fridaySQL> select to_char(to_date('2023-03-31','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE =''simplified chinese''') from dual;TO_CHAR(TO_DATE('2023-03-31
---------------------------
星期五SQL>2.3.9.4 去除指定周天的天数
-- 查找2002-02-28至2002-02-01间除星期一和七的天数SQL> select count(*)2  from(3  select rownum-1 rnum 4  from all_objects5  where rownum <= to_date('2023-03-31','yyyy-mm-dd')-to_date('2023-03-01','yyyy-mm-dd')+1)     6  where to_char( to_date('2023-03-01','yyyy-mm-dd')+rnum-1,'D')not in ('1','7');COUNT(*)
----------23SQL> 2.3.9.5 ROUND(p,s),TRUNC(p,s)在日期中的应用
-- 如何舍入要看具体情况,s是MONTH按30天计,应该是15舍16入,s是YEAR则按6舍7入计算.SQL> SELECT empno, hiredate,2  round(hiredate,'MONTH') AS round,3  trunc(hiredate,'MONTH') AS trunc4  FROM emp WHERE empno=7788;EMPNO HIREDATE        ROUND           TRUNC
---------- --------------- --------------- ---------------7788 24-JAN-87       01-FEB-87       01-JAN-87
SQL>
SQL> SELECT empno, hiredate,2  round(hiredate,'YEAR') AS round,3  trunc(hiredate,'YEAR') AS trunc4  FROM emp WHERE empno=7369;EMPNO HIREDATE        ROUND           TRUNC
---------- --------------- --------------- ---------------7369 17-DEC-80       01-JAN-81       01-JAN-80SQL> 2.4 几个有用的函数
实现sql语句中的条件判断语句,具有类似高级语言中的if语句的功能. decode函数源自oracle, case表达式源自sql标准, 实现功能类似
2.4.1 decode函数
-- 第一种形式
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
该函数的含义如下:
IF 条件=值1 THENRETURN(翻译值1)
ELSIF 条件=值2 THENRETURN(翻译值2)......
ELSIF 条件=值n THENRETURN(翻译值n)
ELSERETURN(缺省值)
END IF
-- 【eg.】----
SELECT empno, job, sal,DECODE (job,'ANALYST', SAL*1.1,'CLERK', SAL*1.15,'MANAGER', SAL*1.20, SAL) newsal
FROM emp;
-------------------------------------
-- 第二种形式
decode(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多2.4.2 case表达式
------- -- 格式1---------
CASE WHEN 条件表达式1 THEN语句段1WHEN 条件表达式2 THEN语句段2......WHEN 条件表达式n THEN 语句段n[ELSE 语句段]
END;
-----------------------------
-- 【eg.】
select ename, job, sal
, case jobwhen 'ANALYST' then SAL*1.1when 'CLERK'   then SAL*1.15when 'MANAGER' then SAL*1.20else sal end newsal
from emp;
-------- -- 格式2---------
CASE 条件表达式WHEN 条件表达式结果1 THEN 语句段1WHEN 条件表达式结果2 THEN语句段2......WHEN 条件表达式结果n THEN语句段n[ELSE 条件表达式结果]
END;
-----------------------------
-- 【eg.】
select ename, job, sal,case when job='ANALYST' then SAL*1.1when job='CLERK'   then SAL*1.15when job='MANAGER' then SAL*1.20else sal end newsal
from emp;
-- case第二种语法比第一种语法增加了搜索功能.形式上第一种when后跟定值,而第二种还可以使用比较符.
-- eg.
select ename,sal,case when sal>=3000 then 'H'when sal>=2000 then 'M'else 'L' end Job_Level
from emp;
----------
select ename,sal,case when sal>=3000 then 'H'when sal>=2000 then 'M'else 'L' end
from emp;2.4.3 DISTINCT
-- distinct貌似多行函数,严格来说它不是函数.
-- DISTINCT一定要放在开头,否则报错
-- 语法
SELECT DISTINCT column_name,column_name FROM table_name;
---------------------------------------------------------------------------------------
SQL> 
SQL> -- 消除表行重复值
SQL> select distinct job from emp;JOB
---------------------------
CLERK
SALESMAN
ANALYST
MANAGERSQL> -- 重复值是后面的字段组合起来考虑的
SQL> select distinct job,deptno from emp;JOB                             DEPTNO
--------------------------- ----------
CLERK                               20
MANAGER                             20
MANAGER                             30
MANAGER                             10
SALESMAN                            30
ANALYST                             20
CLERK                               30
CLERK                               108 rows selected.SQL> 2.4.4 CHAR()和ASCII()函数
-- chr()函数将ASCII码转换为字符		:ASCII码 –》 字符
-- ascii()函数将字符转换为ASCII码	:字符 –》 ASCII码
-- 在oracle中chr()函数和ascii()是一对反函数.
SQL> select ASCII('K') FROM dual;	-- 大写K
ASCII('K')
------------
75
SQL> select ASCII('k') FROM dual;	-- 小写k
ASCII('K')
------------
107
SQL> select chr(75) from dual;
C
-
K2.4.5 sys_context获取环境上下文的函数(很有用)
-- scott远程登录(查询IP时)
select sys_context('USERENV','AUTHENTICATION_TYPE') from dual;	-- DATABASE 用户的认证类型
select sys_context('USERENV','AUTHENTICATION_DATA') from dual;	-- null 未知
select sys_context('USERENV','BG_JOB_ID') from dual;			-- null 当前指定id的会话是否为oracle后台程序建立,不是则返回null
select sys_context('USERENV','CLIENT_INFO') from dual;			-- null 通过dbms_application_info包可以存储高达64字节的用户会话信息
select sys_context('USERENV','CURRENT_SCHEMA') from dual;		-- DICPTEST 默认的schema将被当做当前的schema.-- 当在当前会话中使用ALTER SESSION SET CURRENT_SCHEMA语句的时候,它的查询返回值将被改变
select sys_context('USERENV','CURRENT_SCHEMAID') from dual;		-- 当前schema的id
select sys_context('USERENV','CURRENT_USER') from dual;			-- DICPTEST 当前的登陆用户
select REPLACE(SUBSTR(sys_context('USERENV','HOST'),1,30),'/',':') from dual;	-- 当前会话主机操作系统名
select sys_context('USERENV','CURRENT_USERID') from dual;		-- 当前登陆的用户的id
select sys_context('USERENV','DB_DOMAIN') from dual;			-- null 为数据库的域指定初始化参数
select sys_context('USERENV','DB_NAME') from dual;				-- iomtest 数据库实例名
select sys_context('USERENV','ENTRYID') from dual;				-- null 可用的审计标示符.不能再分布式sql语句中使用此选项-- 使用USERENV关键字必须置AUDIT_TRAIL的初始化参数为真.
select sys_context('USERENV','EXTERNAL_NAME') from dual;		-- null 数据库用户的扩展名
select sys_context('USERENV','FG_JOB_ID') from dual;			-- 0 返回作业id当此会话是客户端进程创建.否则,返回null
select sys_context('USERENV','INSTANCE') from dual;				-- 1 当前数据库实例的标示id
select sys_context('USERENV','ISDBA') from dual;				-- FALSE 当前用户是否是以dba身份登录
select sys_context('USERENV','LANG') from dual;					-- ZHS iso对LANGUAGE’的简称,查询的参数比”LANGUAGE”短
select sys_context('USERENV','LANGUAGE') from dual;				-- SIMPLIFIED CHINESE_CHINA.ZHS16GBK 结果为当前数据库使用的存储语言,跟上面查询意义一样
select sys_context('USERENV','NETWORK_PROTOCOL') from dual;		-- tcp 用于通信的网络协议
select sys_context('USERENV','NLS_CALENDAR') from dual;			-- GREGORIAN 当前会话使用的,格林尼治时间
select sys_context('USERENV','NLS_CURRENCY') from dual;			-- ¥本地化的货币符,如人民币为¥,美元符为$
select sys_context('USERENV','NLS_DATE_FORMAT') from dual;		-- DD-MON-RR 当前使用的日期格式,一般中国为dd-mon-rr
select sys_context('USERENV','NLS_DATE_LANGUAGE') from dual;	-- SIMPLIFIED CHINESE 表示日期的语言,如中文简体SIMPLIFIED CHINESE
select sys_context('USERENV','NLS_TERRITORY') from dual;		-- CHINA 数据库服务器所在区域,如中国CHINA
select sys_context('USERENV','OS_USER') from dual;				-- 操作系统的用户名
select sys_context('USERENV','PROXY_USER') from dual;			-- null 是否使用代理用户.否返回null
select sys_context('USERENV','PROXY_USERID') from dual;			-- null 代理用户id
select sys_context('USERENV','SESSION_USER') from dual;			-- DICPTEST 当前认证的数据库用户名
select sys_context('USERENV','SESSION_USERID') from dual;		-- 当前认证的数据库用户名id
select sys_context('USERENV','SESSIONID') from dual;			-- 当前会话id
select sys_context('USERENV','TERMINAL') from dual;				-- 操作系统用户组
select sys_context('USERENV','IP_ADDRESS') from dual;			-- 当前会话主机ip
select sys_context('USERENV','HOST') from dual;					-- 当前会话主机操作系统名
-- 在sqldeveloper中 一键查询
select 
SYS_CONTEXT('USERENV','TERMINAL') terminal,
SYS_CONTEXT('USERENV','LANGUAGE') language,
SYS_CONTEXT('USERENV','SESSIONID') sessionid,
SYS_CONTEXT('USERENV','INSTANCE') instance,
SYS_CONTEXT('USERENV','ENTRYID') entryid,
SYS_CONTEXT('USERENV','ISDBA') isdba,
SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
SYS_CONTEXT('USERENV','NLS_DATE_formAT') nls_date_format,
SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
SYS_CONTEXT('USERENV','SESSION_USER') session_user,
SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
SYS_CONTEXT('USERENV','DB_NAME') db_name,
SYS_CONTEXT('USERENV','HOST') host,
SYS_CONTEXT('USERENV','OS_USER') os_user,
SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE') authentication_type,
SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') authentication_data
from dual;
相关文章:
数据库基本功之SQL的基本函数
1. 单行函数与多行函数 1.1 单行函数 指单行数据输入,返回一个值的函数. 所以查询一个表时,对选择的每一行数据都返回一个结果.[oracleoracle-db-19c ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 7 07:59:44 2023 Version 19.3.0.0.0Copyri…...
 
配置主机名与ip的映射关系
本次进行简单的小实验 通过在windows上配置主机名与IP地址的映射关系,达到我们在xshell或其他远程连接设备上,不用IP地址登陆,只需要用主机名就能实现登陆的效果 配置 首先 需要查看自己虚拟机的IP地址,找到ens33或者ens160…...
 
Spring Cache简单介绍和使用
目录 一、简介 二、使用默认ConcurrentMapManager (一)创建数据库和表 (二)创建boot项目 (三)使用Api 1、EnableCaching 2、CachePut 3、cacheable 4、CacheEvict 三、使用redis作为cache 一、简…...
 
ECCV 2022|面向精确的主动相机定位算法
标题:ECCV 2022,山东大学、北大、腾讯AILab、斯坦福和三维家联合提出,面向精确的主动相机定位算法项目地址:https://github.com/qhFang/AccurateACL.文章:Towards Accurate Active Camera Localization(ECCV 2022&…...
 
web实现环形旋转、圆形、弧形、querySelectorAll、querySelector、clientWidth、sin、cos、PI
文章目录1、HTML部分2、css部分3、JavaScript部分4、微信小程序演示1、HTML部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…...
PyCharm+Python+Selenium自动化测试动态验证码识别
driver.find_element(byBy.ID,valueUSERID).send_keys("admin")driver.find_element(byBy.ID,valuePASSWORD_VIEW).send_keys("123456")#ocr识别原理:先根据验证码的class dl_yzm定位到验证码图片,然后将验证码截图保存,…...
git版本回退简单记录
简单记录git版本回退的命令,参考的是这篇文章1 首先查看以前存档的版本: git log1. 知道要回退的版本和现在的版本差了多少代 回退上一代版本(1个以前) git reset –hard HEAD^回退上上一代版本(2个以前࿰…...
 
QT入门Display Widgets之QLine、QLcdNumber、QTextBrowser
目录 一、QLine界面相关 1、布局介绍 2、界面基本属性 二、QLCDNumber的介绍 1、界面布局 2、定时器代码测试 三、QTextBrowser 此文为作者原创,创作不易,转载请标明出处! 一、QLine界面相关 1、布局介绍 先看下界面中创建个Q…...
 
Spring学习笔记
目录1 IOC容器1.1 概念1.2 IOC的底层原理1.3 Spring中IOC容器的两种实现方式(两个接口)1.3.1 BeanFactory接口1.3.2 ApplicationContext接口1.3.3 为什么开发中使用ApplicationContext接口1.3.4 ApplicationContext接口的两个实现类1.4 IOC操作之bean管理1.4.0 bean是什么&…...
 
数据的标准化处理
假设各个指标之间的水平相差很大,此时直接使用原始指标进行分析时,数值较大的指标,在评价模型中的绝对作用就会显得较为突出和重要,而数值较小的指标,其作用则可能就会显得微不足道。 因此,为了统一比较的标…...
 
性能优化|记一次线上OOM问题处理
概述最近线上监控发现 OOM 涨幅较大,因此去尝试定位和修复这个问题,在修复了一些内存泄漏和大对象占用问题后, OOM 依旧未达到正常标准,在这些新上报的 hprof 文件中,发现几乎所有 case 中都有个叫 FinalizerReference 的对象&…...
 
Vue动态粒子特效插件(背景线条吸附动画)
目录 效果图: 一、安装: 二、引入 main.js 文件: 三、使用: 四、属性说明: 效果图: 一、安装: npm install vue-particles --save 二、引入 main.js 文件: import VueParticles…...
【Java 类】002-类、属性、方法、代码块
【Java 类】002-类、属性、方法、代码块 文章目录【Java 类】002-类、属性、方法、代码块一、类1、类与对象2、类的作用3、创建与使用类类结构创建类调用类运行结果4、Java 类的执行过程5、封装、继承、多态、抽象类、内部类、接口、枚举、记录、注解等二、属性1、概述2、类型3…...
Ubuntu Linux 编译安装的基本步骤
文章目录1 基本步骤若报错: No such file or directory2 解压 tar.bz2文件参考:1 基本步骤 解压: tar -zxvf file.tar.gz 进入解压后的文件夹: cd file 源码编译安装 ./configure # ./configmakesudo make install 若报错&…...
 
day59反刍笔记
1.本地环境安装vue后,没有vue.js文件,只有vue.cjs.js文件, 引用后也无法正常使用,看npm install vue后的文件夹中没有vue.js文件_找不到vue.js_一枝风的博客-CSDN博客 老哥的博客后得到启发,将原本的命令由࿱…...
【阅读笔记】你不知道的Javascript--强制类型转换4
目录强制类型转换基本概念JSONboolean强转归纳其他知识点被诟病的安全使用隐式强转法则抽象关系比较语法表达式变动强制类型转换 基本概念 类型转换发生在静态类型语言的编译阶段; 强制类型转换则发生在动态类型语言的运行时(runtime) JSON…...
华为OD机试真题Python实现【有效子字符串】真题+解题思路+代码(20222023)
有效子字符串 题目 输入两个字符串S和L,都只包含小写字母, S长度 <= 100,L长度 <= 500000, 判断S是否是L的有效子字符串, 判定规则:S中的每个字符在L中都能找到(可以不连续) 且S在L中字符的前后顺序与S中顺序要保持一致 例如: S="ace"是L="abcd…...
 
上门按摩预约APP源码-东郊到家源码(开发,PHP,平台搭建)
一、什么是上门按摩预约APP源码? 上门按摩预约APP源码是一款家政服务类型的APP,可以帮忙用户在家就能享受按摩的服务。APP源码分两端,一端是用户端,另外一端是技师端。采用的技术,前端是安卓IOS,后端是PHP&…...
 
STL讲解——模拟实现vector
STL讲解——模拟实现vector vector深度剖析 在STL源码中,发现vector定义的并不是 start、size、capacity,而是start、finish、end_of_storage. 这样就可以得到size()和capacity()。 sizefinish-start capacityend_of_storage-start 扩容可能是本地扩容也…...
各种经典排序算法介绍及实现源码
一,冒泡排序(Bubble Sort) 排序算法是程序员必须了解和熟悉的一类算法,排序算法有很多种,基础的如:冒泡、插入、选择、快速、归并、计数、基数和桶排序等。 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果不…...
 
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
 
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
 
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
 
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
 
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
 
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
