Mysql-7-mysql函数

1.数学函数

  用来处理数值数据方面的运算,主要的数学函数有:绝对值函数,三角函数,对数函数,随机函数。使用数学函数过程中,如果有错误产生,该函数会返回null值。

数学函数

功能介绍

组合键

abs(x)

返回x的绝对值

整数本身

pi()

返回圆周率

返回pa的值,默认显示6位

sqrt(x)

返回非负数x的二次方根

如为负数,返回null

mod(x,y)

返回x/y的模,即相除余数

ceil(x)和ceiling(x)

先这两个函数功能相同,返回不小于x的最小整数值

注意正负数及小数和整数的区别

floor(x)

返回不大于x的最大整数值

rand()

返回一个随机浮点值v,0<=v<=1

rand(x)

返回一个随机浮点值v,0<=v<=1,参数x为整数,被用作种子值,用来产生重复序列

round(x)

返回最接近参数x的整数,对x进行四舍五入

此函数返回值为整数

round(x,y)

返回最接近参数x的值,此值保留到小数点后面y位

如果参数取负值,则将小数点保留左边y位

truncate(x,y)

返回截去小数点后y位的数值x

sign(x)

返回参数x的符号

x值为负,返回-1;0 为0 ;正,返回1.

pow(x,y)

返回x的y次乘方的结果值

exp(x)

返回e的x次方后的值

log(x)

返回x的自然对数,x相对于基数e的对数

log10(x)

返回x的基础为10的对数

radians

返回参数x由角转化为弧度的值

degrees(x)

返回参数x由弧度转化为角度的值

sin(x)

返回参数x的正玄值

asin(x)

返回参数x的反正玄

cos(x)

返回参数x的余弦值

acos

tan(x)

atan(x)

cot(x)

返回参数x的余切值

例:mysql> select mod(25,6),mod(9,3);
+-----------+----------+
| mod(25,6) | mod(9,3) |
+-----------+----------+
|         1 |        0 |
+-----------+----------+
1 row in set (0.00 sec)

2.字符串函数

  处理字符串数据,字符串函数主要有:计算字符串长度函数、字符串合并函数、字符串转换函数、字符串比较函数、查找指定字符串位置函数。

ASCII(char)        返回字符的ASCII码值

BIT_LENGTH(str)      返回字符串的比特长度

CONCAT(s1,s2…,sn)      将s1,s2…,sn连接成字符串

CONCAT_WS(sep,s1,s2…,sn)  将s1,s2…,sn连接成字符串,并用sep字符间隔

INSERT(str,x,y,instr)    将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果

FIND_IN_SET(str,list)   分析逗号分隔的list列表,如果发现str,返回str在list中的位置

LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果

LEFT(str,x)        返回字符串str中最左边的x个字符

LENGTH(s)         返回字符串str中的字符数

LTRIM(str)         从字符串str中切掉开头的空格

POSITION(substr,str)    返回子串substr在字符串str中第一次出现的位置

QUOTE(str)         用反斜杠转义str中的单引号

REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果

REVERSE(str)        返回颠倒字符串str的结果

RIGHT(str,x)        返回字符串str中最右边的x个字符

RTRIM(str)         返回字符串str尾部的空格

STRCMP(s1,s2)       比较字符串s1和s2

TRIM(str)         去除字符串首部和尾部的所有空格

UCASE(str)或UPPER(str)   返回将字符串str中所有字符转变为大写后的结果

例:mysql> select length('test'),length('测试');
+----------------+------------------+
| length('test') | length('测试') |
+----------------+------------------+
|              4 |                6 |
+----------------+------------------+

3.日期和时间函数

  主要处理日期和时间值,一般的日期函数除使用date类型的参数外,也可以使用datetime或timestamp类型的参数。

(1)日期时间函数

时间转化秒函数:time_to_sec
MySQL> select time_to_sec('01:01:01');
+-------------------------+
| time_to_sec('01:01:01') |
+-------------------------+
| 3661 | 
+-------------------------+
1 row in set (0.00 sec)
秒转化时间函数:sec_to_time
mysql> select sec_to_time(3661);
+-------------------+
| sec_to_time(3661) |
+-------------------+
| 01:01:01 | 
+-------------------+
1 row in set (0.00 sec)
日期转为天数函数:to_days
mysql> select to_days('0000-00-00');
+-----------------------+
| to_days('0000-00-00') |
+-----------------------+
| NULL | 
+-----------------------+
1 row in set, 1 warning (0.01 sec)
mysql> select to_days('0001-01-01');
+-----------------------+
| to_days('0001-01-01') |
+-----------------------+
| 366 | 
+-----------------------+
1 row in set (0.00 sec)
天数转化日期函数:from_days
mysql> select from_days(0);
+--------------+
| from_days(0) |
+--------------+
| 0000-00-00 | 
+--------------+
1 row in set (0.00 sec)
mysql> select from_days(366);
+----------------+
| from_days(366) |
+----------------+
| 0001-01-01 | 
+----------------+
1 row in set (0.00 sec)
字符串转换为日期函数:str_to_date
mysql> select str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s');
+--------------------------------------------------------+
| str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s') |
+--------------------------------------------------------+
| 2013-01-01 01:21:01 | 
+--------------------------------------------------------+
1 row in set (0.00 sec)
日期转换为字符串函数:date_format
mysql> select date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s');
+----------------------------------------------------+
| date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s') |
+----------------------------------------------------+
| 20130101 012101 | 
+----------------------------------------------------+
1 row in set (0.00 sec)
时间转换为字符串函数:time_format
mysql> select time_format('01:21:01','%H%i%s');
+----------------------------------+
| time_format('01:21:01','%H%i%s') |
+----------------------------------+
| 012101 | 
+----------------------------------+
1 row in set (0.00 sec)

说明:

日期时间格式参数如下:

%M 月名字(January……December)

%W 星期名字(Sunday……Saturday)

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

%Y 年, 数字, 4 位

%y 年, 数字, 2 位

%a 缩写的星期名字(Sun……Sat)

%d 月份中的天数, 数字(00……31)

%e 月份中的天数, 数字(0……31)

%m 月, 数字(01……12)

%c 月, 数字(1……12)

%b 缩写的月份名字(Jan……Dec)

%j 一年中的天数(001……366)

%H 小时(00……23)

%k 小时(0……23)

%h 小时(01……12)

%I 小时(01……12)

%l 小时(1……12)

%i 分钟, 数字(00……59)

%r 时间,12 小时(hh:mm:ss [AP]M)

%T 时间,24 小时(hh:mm:ss)

%S 秒(00……59)

%s 秒(00……59)

%p AM或PM

%w 一个星期中的天数(0=Sunday ……6=Saturday )

%U 星期(0……52), 这里星期天是星期的第一天

%u 星期(0……52), 这里星期一是星期的第一天

%% 一个文字“%”。

提取表达式的日期部分
mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2013-05-16 | 
+-------------+
1 row in set (0.00 sec)
返回表达式的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select weekday(now());
+----------------+
| weekday(now()) |
+----------------+
| 3 | 
+----------------+
1 row in set (0.00 sec)
返回表达式是一年的第几周
mysql> select week(now());
+-------------+
| week(now()) |
+-------------+
| 19 | 
+-------------+
1 row in set (0.00 sec)
WEEK()允许指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1, 从星期一开始,如下所示:
mysql> select week(now(),0);
+---------------+
| week(now(),0) |
+---------------+
| 19 | 
+---------------+
1 row in set (0.00 sec)
mysql> select week(now(),1);
+---------------+
| week(now(),1) |
+---------------+
| 20 | 
+---------------+
1 row in set (0.00 sec)
返回表达式一年中季度
mysql> select quarter(now());
+----------------+
| quarter(now()) |
+----------------+
| 2 | 
+----------------+
1 row in set (0.00 sec)
返回表达式一周的第一天
mysql> select dayofweek(now());
+------------------+
| dayofweek(now()) |
+------------------+
| 5 | 
+------------------+
1 row in set (0.00 sec)
返回表达式一个月的第几天
mysql> select dayofmonth(now());
+-------------------+
| dayofmonth(now()) |
+-------------------+
| 16 | 
+-------------------+
1 row in set (0.00 sec)
返回表达式一年的第几天
mysql> select dayofyear(now());
+------------------+
| dayofyear(now()) |
+------------------+
| 136 | 
+------------------+
1 row in set (0.00 sec)
返回表达式的星期名字
mysql> select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| Thursday | 
+----------------+
1 row in set (0.00 sec)
返回表达式月份的名字
mysql> select monthname(now());
+------------------+
| monthname(now()) |
+------------------+
| May | 
+------------------+
1 row in set (0.00 sec)
mysql>
提取表达式的年份
mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
| 2013 | 
+-------------+
1 row in set (0.00 sec)
提取表达式的月份
mysql> select month(now());
+--------------+
| month(now()) |
+--------------+
| 5 | 
+--------------+
1 row in set (0.01 sec)
提取表达式的天数
mysql> select day(now());
+------------+
| day(now()) |
+------------+
| 16 | 
+------------+
1 row in set (0.00 sec)
提取表达式的小时
mysql> select hour(now());
+-------------+
| hour(now()) |
+-------------+
| 16 | 
+-------------+
1 row in set (0.00 sec)
提取表达式的分钟
mysql> select minute(now());
+---------------+
| minute(now()) |
+---------------+
| 31 | 
+---------------+
1 row in set (0.00 sec)
提取表达式的秒数
mysql> select second(now());
+---------------+
| second(now()) |
+---------------+
| 34 | 
+---------------+
1 row in set (0.00 sec)
将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2013-05-16 | 
+------------+
1 row in set (0.00 sec)
mysql> select curdate()+1;
+-------------+
| curdate()+1 |
+-------------+
| 20130517 | 
+-------------+
1 row in set (0.00 sec)
将当前时间以'HH:MM:SS'或 HHMMSS的格式返回,具体格式根据函数用在字符串或是数字语境中而定。 
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 16:43:10 | 
+-----------+
1 row in set (0.00 sec)
mysql> select curtime()+1;
+---------------+
| curtime()+1 |
+---------------+
| 164420.000000 | 
+---------------+
1 row in set (0.00 sec)
获取当前日期时间:sysdate(),now()
mysql> select sysdate(),sleep(2),sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(2) | sysdate() |
+---------------------+----------+---------------------+
| 2013-05-16 17:16:04 | 0 | 2013-05-16 17:16:06 | 
+---------------------+----------+---------------------+
1 row in set (2.00 sec)
mysql> select now(),sleep(2),now();
+---------------------+----------+---------------------+
| now() | sleep(2) | now() |
+---------------------+----------+---------------------+
| 2013-05-16 17:16:18 | 0 | 2013-05-16 17:16:18 | 
+---------------------+----------+---------------------+
1 row in set (2.00 sec)
从上面可以看到sysdate和now的区别,now表示语句开始的时间,而sysdate实时的获取时间

将当前日期按照'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
mysql> select current_timestamp;
+---------------------+
| current_timestamp |
+---------------------+
| 2013-05-16 17:19:51 | 
+---------------------+
1 row in set (0.00 sec)
mysql> select current_timestamp+1;
+-----------------------+
| current_timestamp+1 |
+-----------------------+
| 20130516172008.000000 | 
+-----------------------+
1 row in set (0.00 sec)
unix_timestamp(),unix_timestamp(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一 
个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME 
字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。 
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1368696216 | 
+------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp('2013-05-16 01:01:01');
+---------------------------------------+
| unix_timestamp('2013-05-16 01:01:01') |
+---------------------------------------+
| 1368637261 | 
+---------------------------------------+
1 row in set (0.00 sec)
mysql>
FROM_UNIXTIME(unix_timestamp) 
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,具体格式根据函数用在字符串或是数字语境中而定
mysql> select from_unixtime(1368637261);
+---------------------------+
| from_unixtime(1368637261) |
+---------------------------+
| 2013-05-16 01:01:01 | 
+---------------------------+
1 row in set (0.00 sec)
mysql> select from_unixtime(1368637261)+1;
+-----------------------------+
| from_unixtime(1368637261)+1 |
+-----------------------------+
| 20130516010102.000000 | 
+-----------------------------+
1 row in set (0.00 sec)
mysql> select from_unixtime(1368637261,'%Y-%m-%d %h:%i:%s');
+-----------------------------------------------+
| from_unixtime(1368637261,'%Y-%m-%d %h:%i:%s') |
+-----------------------------------------------+
| 2013-05-16 01:01:01 | 
+-----------------------------------------------+
1 row in set (0.00 sec)
返回表达式所在月的最后一天
mysql> select last_day(now());
+-----------------+
| last_day(now()) |
+-----------------+
| 2013-05-31 | 
+-----------------+
1 row in set (0.00 sec)
日期加减运算
DATE_ADD(date,INTERVAL expr type) --加法
DATE_SUB(date,INTERVAL expr type) --减法

mysql> select date_add('2013-05-16 01:01:01',interval 1 second);
+---------------------------------------------------+
| date_add('2013-05-16 01:01:01',interval 1 second) |
+---------------------------------------------------+
| 2013-05-16 01:01:02 | 
+---------------------------------------------------+
1 row in set (0.00 sec)
mysql> select date_add('2013-05-16 01:01:01',interval 1 day);
+------------------------------------------------+
| date_add('2013-05-16 01:01:01',interval 1 day) |
+------------------------------------------------+
| 2013-05-17 01:01:01 | 
+------------------------------------------------+
1 row in set (0.00 sec)
mysql> select date_add('2013-05-16 01:01:01',interval 1 minute);
+---------------------------------------------------+
| date_add('2013-05-16 01:01:01',interval 1 minute) |
+---------------------------------------------------+
| 2013-05-16 01:02:01 | 
+---------------------------------------------------+
1 row in set (0.00 sec)
mysql> select date_add('2013-05-16 01:01:01',interval 1 hour);
+-------------------------------------------------+
| date_add('2013-05-16 01:01:01',interval 1 hour) |
+-------------------------------------------------+
| 2013-05-16 02:01:01 | 
+-------------------------------------------------+
1 row in set (0.00 sec)
mysql> select date_add('2013-05-16 01:01:01',interval '1:1' minute_second);
+--------------------------------------------------------------+
| date_add('2013-05-16 01:01:01',interval '1:1' minute_second) |
+--------------------------------------------------------------+
| 2013-05-16 01:02:02 | 
+--------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select date_add('2013-05-16 01:01:01', interval '1 1:1:1' day_second);
+----------------------------------------------------------------+
| date_add('2013-05-16 01:01:01', interval '1 1:1:1' day_second) |
+----------------------------------------------------------------+
| 2013-05-17 02:02:02 | 
+----------------------------------------------------------------+
1 row in set (0.00 sec)

type值格式:

SECOND 秒 SECONDS

MINUTE 分钟 MINUTES

HOUR 时间 HOURS

DAY 天 DAYS

MONTH 月 MONTHS

YEAR 年 YEARS

MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"

HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"

DAY_HOUR 天和小时 "DAYS HOURS"

YEAR_MONTH 年和月 "YEARS-MONTHS"

HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"

DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"

DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

DATEDIFF(expr, expr2)

返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。

mysql> select datediff('2013-05-16 06:01:01', '2013-05-17 01:01:01');
+--------------------------------------------------------+
| datediff('2013-05-16 06:01:01', '2013-05-17 01:01:01') |
+--------------------------------------------------------+
| -1 | 
+--------------------------------------------------------+
1 row in set (0.00 sec)
表示日期时间的数据类型:
date
time
year
datetime
timestamp
在使用日期时间数据比较时常用如下
mysql> select * from tab ;
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
| bbbb | 2013-04-14 17:20:36 |
| bbbb | 2013-04-13 17:20:36 |
| bbbb | 2013-04-15 17:20:36 |
+------+---------------------+
4 rows in set (0.00 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2013-05-14 17:10:26 |
+---------------------+
1 row in set (0.00 sec)
mysql> select * from tab where createtime > now();
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
+------+---------------------+
1 row in set (0.00 sec)
mysql> select current_timestamp;
+---------------------+
| current_timestamp |
+---------------------+
| 2013-05-14 17:10:49 |
+---------------------+
1 row in set (0.00 sec)
mysql> select * from tab where createtime > current_timestamp;
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
+------+---------------------+
1 row in set (0.00 sec)
mysql> select * from tab where createtime> str_to_date('2013-05-14 00:00:00','%Y-%m-%d %H:%i:%s');;
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
+------+---------------------+
1 row in set (0.00 sec)
mysql> select * from tab where createtime between str_to_date('2013-05-14 00:00:00','%Y-%m-%d %H:%i:%s') and str_to_date('2013-05-15 00:00:00','%Y-%m-%d %H:%i:%s')
-> ;
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
+------+---------------------+
1 row in set (0.00 sec)
mysql> select * from tab where createtime between '2013-05-14 00:00:00' and '2013-05-15 00:00:00';
+------+---------------------+
| name | createtime |
+------+---------------------+
| aaaa | 2013-05-14 17:20:19 |
+------+---------------------+
1 row in set (0.00 sec)
mysql>

(2)数值函数

ABS(X) :返回表达式X的绝对值
mysql> select abs(-2);
+---------+
| abs(-2) |
+---------+
| 2 | 
+---------+
1 row in set (0.00 sec)
FLOOR(X) :返回不大于X的最大整数值
mysql> select floor(-2.45);
+--------------+
| floor(-2.45) |
+--------------+
| -3 | 
+--------------+
1 row in set (0.00 sec)
MOD(N,M):模操作,返回N被M除后的余数。
mysql> select mod(3,2);
+----------+
| mod(3,2) |
+----------+
| 1 | 
+----------+
1 row in set (0.00 sec)
RAND()/RAND(N) :返回一个随机浮点值数a,范围在 0 到1 之间 (即, 其范围为 0 ≤ a ≤ 1.0)。若已指定一个整数参数 N,则它被用作种子值,用来产生重复序列。
mysql> select rand();
+-------------------+
| rand() |
+-------------------+
| 0.294932589209576 | 
+-------------------+
1 row in set (0.00 sec)
mysql> select rand(2);
+-------------------+
| rand(2) |
+-------------------+
| 0.655586646549019 | 
+-------------------+
1 row in set (0.00 sec)
ROUND(X)/ROUND(X,D) :返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D位,可将D设为负值。
mysql> select round(2.4 );
+-------------+
| round(2.4 ) |
+-------------+
| 2 | 
+-------------+
1 row in set (0.00 sec)
mysql> select round(2.432,2 );
+-----------------+
| round(2.432,2 ) |
+-----------------+
| 2.43 | 
+-----------------+
1 row in set (0.00 sec)
mysql> select round(12.432,-1 );
+-------------------+
| round(12.432,-1 ) |
+-------------------+
| 10 | 
+-------------------+
1 row in set (0.00 sec)

3.控制流函数(又称条件判断函数)

控制流函数

功能介绍

使用说明

if(expr,v1,v2)

返回表达式expr得到不同运算结果时对应的值。若expr是true(expr<>0 and expr<>null),则if()返回值为v1,否则返回v2

if()的返回值为数值型或字符串型,具体情况视其所在语境而定。

ifnull(v1,v2)

返回参数v1或v2的值。假如v1不为null,则返回值为v1,否则返回值为v2

返回值为数值型或字符串型,具体情况视其所在语境而定。

case

例:mysql> select if(3<2,1,0),if(3>2,1,0);
+-------------+-------------+
| if(3<2,1,0) | if(3>2,1,0) |
+-------------+-------------+
|           0 |           1 |
+-------------+-------------+
1 row in set (0.00 sec)

4.系统信息函数:包括系统库的版本号、当前用户和链接数、系统字符集、最后一个自动生成的值等。

系统信息函数

功能介绍

使用的说明

version()

返回当前版本号的字符串

connection_id()

返回服务器当前用户的链接次数

每个连接都有各自唯一的id,登录次数不同,返回的值也不同

processlist

show processlist输出结果显示正在运行的线程,不仅可以查看当前所有的链接数,还可以查看连接状态。

show processlist只能列出100条连接,如果查看全部show full processlist

database()

显示目前正在使用的数据库名称

user(),current_user(), system_user(),session_ user

获取当前用户名的函数

charset(str)

获取字符串的字符集函数,返回参数字符串str使用的字符集

collation(str)

返回参数字符串str的排列方式

last_insert_id()

获取最后一个自动生成的id值得函数。

5.加密函数:对数据进行加密和解密处理,保证数据表中某些重要数据不被别人窃取,保证安全。

加密函数

功能介绍

使用说明

password(str)

加密函数。原明文密码str,并返回加密后的密码字符串

当参数为null时,返回null

md5(str)

为参数字符串计算出一个md5 128比特检验和,该值以32位十六制数字的二进制字符串形式返回

str为null,返回null

encode(str,pswd_str)

使用参数pswd_str作为秘钥,加密参数str

要使用decode()进行解密

decode(crypt_str,pswd_str)

解密函数。使用参数pswd_str作为秘钥,解密参数加密字符串crypt_str

例:mysql> select password('cairui');
+-------------------------------------------+
| password('cairui')                        |
+-------------------------------------------+
| *5E4CC0E31193A3717D105C9B98F79988347A025D |
+-------------------------------------------+
1 row in set (0.00 sec)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

BZOJ4355: Play with sequence(吉司机线段树)

这题最坑的地方在于对于操作1,$C >= 0$, 操作2中需要对0取max,$a[i] >= 0$,这不就是统计最小值出现的次数么??

1682
来自专栏TechBox

为什么不能在init和dealloc函数中使用accessor方法前言为什么不能在init中调用accessor为什么不能在dealloc中调用accessor结尾

1553
来自专栏IT可乐

深入理解计算机系统(2.3)------布尔代数以及C语言运算符

  本篇博客我们主要讲解计算机中的布尔代数以及C语言的几个运算符。 1、布尔代数   我们知道二进制值是计算机编码、存储和操作信息的核心,随着计算机的发展,围绕...

2405
来自专栏陈满iOS

编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

这篇文章综合介绍了四种分类,特别地,为了方便大家快速有效的学习,笔者尝试用思维导图的办法描述编程语言的区别。一般来讲,看第一个图就够了。但如果你想更深入地了解,...

2571
来自专栏华仔的技术笔记

iOS中的正则表达式,一篇就够了

38310
来自专栏Python攻城狮

MySQL中char、varchar和text的区别

它们的存储方式和数据的检索方式都不一样。 数据的检索效率是:char > varchar > text 空间占用方面,就要具体情况具体分析了。

834
来自专栏分布式系统进阶

Librdkafka的基础数据结构 1 --- 队列

两个元素: tqh_first: 指向队列的第一个成员; tqh_last: 存的是队列里的最后一个元素的 next指针的变量地址, 这个二级指针太有用了,...

1002
来自专栏二进制文集

LeetCode 473 Matchsticks to Square

Remember the story of Little Match Girl? By now, you know exactly what matchstic...

1153
来自专栏移动端开发

内存管理说明白点

1462
来自专栏老马说编程

(27) 剖析包装类 (中) / 计算机程序的思维逻辑

本节继续探讨包装类,主要介绍Integer类,下节介绍Character类,Long与Integer类似,就不再单独介绍了,其他类基本已经介绍完了,不再赘述。 ...

22210

扫码关注云+社区

领取腾讯云代金券