MySQL (四)------DML操作表记录-增删改【重点】DQL操作表记录-查询【重点】

news2024/12/23 18:16:57

 DML操作表记录-增删改【重点】

  • 准备工作: 创建一张商品表(商品id,商品名称,商品价格,商品数量.)

create table product(
	pid int primary key auto_increment,
	pname varchar(40),
	price double,
	num int
);

1.1 插入记录

1.1.1 语法

  • 方式一: 插入指定列, 如果没有把这个列进行列出来, 以null进行自动赋值了.

    eg: 只想插入pname, price , insert into t_product(pname, price) values('mac',18000);

insert into 表名(列,列..) values(值,值..);

注意: 如果没有插入了列设置了非空约束, 会报错的

  • 方式二: 插入所有的列,如果哪列不想插入值,则需要赋值为null

insert into 表名 values(值,值....);           

eg:
insert into product values(null,'苹果电脑',18000.0,10);
insert into product values(null,'华为5G手机',30000,20);
insert into product values(null,'小米手机',1800,30);
insert into product values(null,'iPhonex',8000,10);
insert into product values(null,'iPhone7',6000,200);
insert into product values(null,'iPhone6s',4000,1000);
insert into product values(null,'iPhone6',3500,100);
insert into product values(null,'iPhone5s',3000,100);
insert into product values(null,'方便面',4.5,1000);
insert into product values(null,'咖啡',11,200); 
insert into product values(null,'矿泉水',3,500);

1.2 更新记录

1.2.1语法

update 表名 set 列 =值, 列 =值 [where 条件]

1.2.2练习

  • 将所有商品的价格修改为5000元

update product set price = 5000;
  • 将商品名是苹果电脑的价格修改为18000元

UPDATE product set price = 18000 WHERE pname = '苹果电脑';
  • 将商品名是苹果电脑的价格修改为17000,数量修改为5

UPDATE product set price = 17000,num = 5 WHERE pname = '苹果电脑';
  • 将商品名是方便面的商品的价格在原有基础上增加2元

UPDATE product set price = price+2 WHERE pname = '方便面';

1.3 删除记录

1.3.1 delete

根据条件,一条一条数据进行删除

  • 语法

delete from 表名 [where 条件]    注意: 删除数据用delete,不用truncate
  • 类型

删除表中名称为’苹果电脑’的记录

delete from product where pname = '苹果电脑';

删除价格小于5001的商品记录

delete from product where price < 5001;

删除表中的所有记录

delete from product;

1.3.2 truncate

把表直接DROP掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快

truncate table 表;

1.3.3 工作中删除数据

  • 物理删除: 真正的删除了, 数据不在, 使用delete就属于物理删除

  • 逻辑删除: 没有真正的删除, 数据还在. 搞一个标记, 其实逻辑删除是更新 eg: state 1 启用 0禁用

DQL操作表记录-查询【重点】

1.1 基本查询语法

select 要查询的字段名 from 表名 [where 条件] 

1.2 简单查询

1.2.1 查询所有行和所有列的记录

  • 语法

select * form 表
  • 查询商品表里面的所有的列

select * from product;

1.2.2 查询某张表特定列的记录

  • 语法

select 列名,列名,列名... from 表
  • 查询商品名字和价格

select pname, price from product;

1.2.3 去重查询 distinct

  • 语法

SELECT DISTINCT 字段名 FROM 表名;   //要数据一模一样才能去重
  • 去重查询商品的名字

SELECT DISTINCT pname,price FROM product

注意点: 去重针对某列, distinct前面不能先出现列名

1.2.4 别名查询

  • 语法

select 列名 as 别名 ,列名  from 表   //列别名  as可以不写
select 别名.* from 表 as 别名      //表别名(多表查询, 明天会具体讲)
  • 查询商品信息,使用别名

SELECT pid ,pname AS '商品名',price AS '商品价格',num AS '商品库存' FROM product

1.2.5 运算查询(+,-,*,/,%等)

  • 把商品名,和商品价格+10查询出来:我们既可以将某个字段加上一个固定值,又可以对多个字段进行运算查询

select pname ,price+10 as price from product;
​
select name,chinese+math+english as total from student

注意

  • 运算查询字段,字段之间是可以的

  • 字符串等类型可以做运算查询,但结果没有意义

1.3 条件查询(很重要)

1.3.1语法

select ... from 表 where 条件 
//取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

1.3.2 运算符

1、比较运算符

大于:>
小于:<
大于等于:>=
小于等于:<=
等于:=   不能用于null判断
不等于:!=  或 <>
安全等于: <=>  可以用于null值判断

2、逻辑运算符(建议用单词,可读性来说)

逻辑与:&& 或 and
逻辑或:|| 或 or
逻辑非:! 或 not
逻辑异或:^ 或 xor

3、范围

区间范围:between x  and  y
        not between x  and  y
集合范围:in (x,x,x) 
        not  in (x,x,x)

4、模糊查询和正则匹配(只针对字符串类型,日期类型)

like 'xxx'  模糊查询是处理字符串的时候进行部分匹配
如果想要表示0~n个字符,用%
如果想要表示确定的1个字符,用_
regexp '正则'

5、特殊的null值处理

#(1)判断时
xx is null
xx is not null
xx <=> null

1.3.3 练习

  • 查询商品价格>3000的商品

select * from product where price > 3000;
  • 查询pid=1的商品

select * from product where pid = 1;
  • 查询pid<>1的商品

select * from product where pid <> 1;
  • 查询价格在3000到6000之间的商品

select * from product where price between 3000 and 6000;
  • 查询pid在1,5,7,15范围内的商品

select * from product where id = 1;
select * from product where id = 5;
select * from product where id = 7;
select * from product where id = 15;
​
select * from product where id in (1,5,7,15);
  • 查询商品名以iPho开头的商品(iPhone系列)

select * from product where pname like 'iPho%';
  • 查询商品价格大于3000并且数量大于20的商品 (条件 and 条件 and...)

select * from product where price > 3000 and num > 20;
  • 查询id=1或者价格小于3000的商品

select * from product where pid = 1 or price < 3000;

1.4 排序查询

排序是写在查询的后面,代表把数据查询出来之后再排序

1.4.1 环境的准备

# 创建学生表(有sid,学生姓名,学生性别,学生年龄,分数列,其中sid为主键自动增长)
CREATE TABLE student(
    sid INT PRIMARY KEY auto_increment,
    sname VARCHAR(40),
    sex VARCHAR(10),
    age INT,
    score DOUBLE
);
​
INSERT INTO student VALUES(null,'zs','男',18,98.5);
INSERT INTO student VALUES(null,'ls','女',18,96.5);
INSERT INTO student VALUES(null,'ww','男',15,50.5);
INSERT INTO student VALUES(null,'zl','女',20,98.5);
INSERT INTO student VALUES(null,'tq','男',18,60.5);
INSERT INTO student VALUES(null,'wb','男',38,98.5);
INSERT INTO student VALUES(null,'小丽','男',18,100);
INSERT INTO student VALUES(null,'小红','女',28,28);
INSERT INTO student VALUES(null,'小强','男',21,95);

1.4.2 单列排序

  1. 语法: 只按某一个字段进行排序,单列排序

SELECT 字段名 FROM 表名 [WHERE 条件] ORDER BY 字段名 [ASC|DESC];  
//ASC: 升序,默认值; DESC: 降序
  1. 练习: 以分数降序查询所有的学生

SELECT * FROM student ORDER BY score DESC

1.4.3 组合排序

  1. 语法: 同时对多个字段进行排序,如果第1个字段相等,则按第2个字段排序,依次类推

SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];
  1. 练习: 以分数降序查询所有的学生, 如果分数一致,再以age降序

SELECT * FROM student ORDER BY score DESC, age DESC

1.5 聚合函数

聚合函数通常会和分组查询一起使用,用于统计每组的数据

1.5.1 聚合函数列表

聚合函数作用
max(列名)求这一列的最大值
min(列名)求这一列的最小值
avg(列名)求这一列的平均值
count(列名)统计这一列有多少条记录
sum(列名)对这一列求总和
  1. 语法

SELECT 聚合函数(列名) FROM 表名 [where 条件];
  1. 练习

-- 求出学生表里面的最高分数
SELECT MAX(score) FROM student
-- 求出学生表里面的最低分数
SELECT MIN(score) FROM student
-- 求出学生表里面的分数的总和(忽略null值)
SELECT SUM(score) FROM student
-- 求出学生表里面的平均分
SELECT AVG(score) FROM student
-- 统计学生的总人数 (忽略null) 
SELECT COUNT(sid) FROM student
SELECT COUNT(*) FROM student

注意: 聚合函数会忽略空值NULL

我们发现对于NULL的记录不会统计,建议如果统计个数则不要使用有可能为null的列,但如果需要把NULL也统计进去呢?我们可以通过 IFNULL(列名,默认值) 函数来解决这个问题. 如果列不为空,返回这列的值。如果为NULL,则返回默认值。

SELECT AVG(IFNULL(score,0)) FROM student;

1.6 分组查询

GROUP BY将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。分组的目的就是为了统计,一般分组会跟聚合函数一起使用

1.6.1分组

  1. 语法

SELECT 字段1,字段2... FROM 表名  [where 条件] GROUP BY 列 [HAVING 条件];
  1. 练习:根据性别分组, 统计每一组学生的总人数

-- 根据性别分组, 统计每一组学生的总人数
SELECT sex '性别',COUNT(sid) '总人数' FROM student GROUP BY sex
​
-- 根据性别分组,统计每组学生的平均分
SELECT sex '性别',AVG(score) '平均分' FROM student GROUP BY sex
​
-- 根据性别分组,统计每组学生的总分
SELECT sex '性别',SUM(score) '总分' FROM student GROUP BY sex

1.6.2 分组后筛选 having

  • 练习根据性别分组, 统计每一组学生的总人数> 5的(分组后筛选)

SELECT sex, count(*) FROM student GROUP BY sex HAVING count(*) > 5
  • 练习根据性别分组,只统计年龄大于等于18的,并且要求组里的人数大于4

SELECT sex '性别',COUNT(sid) '总人数' 
FROM student WHERE age >= 18 
GROUP BY sex HAVING COUNT(sid) > 4

1.6.3 where和having的区别【面试】

子名作用
where 子句1) 对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,即先过滤再分组。2) where后面不可以使用聚合函数
having字句1) having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。2) having后面可以使用聚合函数

1.7 分页查询

1.7.1 语法

select ... from .... limit a ,b
LIMIT a,b;
a 表示的是跳过的数据条数
b 表示的是要查询的数据条数

1.7.2 练习

-- 分页查询
-- limit 关键字是使用在查询的后边,如果有排序的话则使用在排序的后边
-- limit的语法: limit offset,length  其中offset表示跳过多少条数据,length表示查询多少条数据
SELECT * FROM product LIMIT 0,3
-- 查询product表中的前三条数据(0表示跳过0条,3表示查询3条)
​
SELECT * FROM product LIMIT 3,3
-- 查询product表的第四到六条数据(3表示跳过3条,3表示查询3条)
-- 分页的时候,只会告诉你我需要第几页的数据,并且每页有多少条数据
-- 假如,每页需要3条数据,我想要第一页数据: limit 0,3
-- 假如,每页需要3条数据,我想要第二页数据: limit 3,3
-- 假如,每页需要3条数据,我想要第三页数据: limit 6,3
-- 结论: length = 每页的数据条数,offset = (当前页数 - 1)*每页数据条数
-- limit (当前页数 - 1)*每页数据条数, 每页数据条数

1.8 查询的语法小结

select...from...where...group by...order by...limit
​
select...from...where...
select...from...where...order by...
select...from...where...limit...
select...from...where...order by...imit

二   导入和导出数据(了解)

2.1 单个数据库备份

mysql5.5

C:\Windows\System32> mysqldump -h主机地址 -P端口号 -u用户名 -p密码 --database  数据库名 > 文件路径/文件名.sql

例如:

C:\Windows\System32>mysqldump -hlocalhost -P3306 -uroot -p123456 --database  test > d:/test.sql

mysql5.7版

C:\Windows\System32> mysqldump -h主机地址 -P端口号 -u用户名 -p密码  数据名 > 文件路径/文件名.sql

不要再写--database

2.2 导入执行备份的sql脚本

先登录mysql,然后执行如下命令:

mysql> source  sql脚本路径名.sql

例如:

mysql>source d:/test.sql;

上述操作比较麻烦,且不常用

 Navicat可视化sql软件内 

备份数据库:   选择当前数据库右键   --->   转储为sql文件      

读取数据库:   选择当前连接右键   --->   运行sql文件

 

-- 操作MySQL服务器需要使用MySQL的命令语句(SQL语句)操作

# 这也是注释
/*
多行注释
*/
-- 第一章: 操作数据库的DDL
-- 1. 创建数据库
-- 创建一个名字为day01的数据库,使用默认的字符集和校对规则
CREATE DATABASE day01;

-- 创建一个名字为day01_2的数据库,并且使用字符集为gbk
CREATE DATABASE day01_2 CHARACTER SET gbk;

-- 我们也可以使用可视化工具直接创建数据库

-- 2. 删除数据库
DROP DATABASE day01_3;

-- 3. 查询整个MYSQL服务器中的所有数据库
SHOW DATABASES;

-- 4. 查看某个数据库的结构
SHOW CREATE DATABASE day01_2;
-- 一般情况下创建数据库,指定字符集为UTF8,校对规则为UTF8默认的校对规则

-- 5. 修改某个数据库的字符集
ALTER DATABASE day01 CHARACTER SET UTF8;

-- 6. 指定使用哪个数据库
-- 因为我们以后要建表、操作表,需要先指定是操作哪个数据库中的表
USE day01;

-- 7. 查看当前正在使用哪个数据库
SELECT DATABASE();


-- 第二章: 操作表的DDL
-- 1. 创建表
-- 创建一张学生表(含有id字段,姓名字段不能重复,性别字段不能为空. id为主键自动增长)
CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增长
	NAME VARCHAR(30) UNIQUE, -- 唯一约束
	gender CHAR(1) NOT NULL
);

-- 字段的类型: timestamp 表示时间戳为了解决时差问题而产生的

-- 2. 查看某个数据库中的所有表
SHOW TABLES;

-- 3. 查看某张表的结构
DESC student;

-- 4. 修改表结构的SQL语句
-- 4.1 添加一个字段
-- 给学生表增加一个grade字段,类型为varchar(20),不能为空
ALTER TABLE student ADD grade VARCHAR(20) NOT NULL;

-- 4.2 修改某个字段的类型和约束
-- 给学生表的gender字段改成int类型,不能为空,默认值为1
ALTER TABLE student MODIFY gender INT NOT NULL DEFAULT 1;

-- 4.3 修改某个字段的名字
-- 给学生表的grade字段修改成class字段
ALTER TABLE student CHANGE grade class VARCHAR(20) NOT NULL;

-- 4.4 删除某个字段
-- 把class字段删除
ALTER TABLE student DROP class;

-- 4.5 修改表的名字
-- 把学生表修改成老师表(了解)
RENAME TABLE student TO teacher;

-- 5. 删除表
DROP TABLE teacher;

-- 第三章: DML操作数据的增删改
-- 准备工作
CREATE TABLE product(
	pid INT PRIMARY KEY AUTO_INCREMENT,
	pname VARCHAR(40),
	price DOUBLE,
	num INT
);
-- 插入测试数据
insert into product values(null,'苹果电脑',18000.0,10);
insert into product values(null,'华为5G手机',30000,20);
insert into product values(null,'小米手机',1800,30);
insert into product values(null,'iPhonex',8000,10);
insert into product values(null,'iPhone7',6000,200);
insert into product values(null,'iPhone6s',4000,1000);
insert into product values(null,'iPhone6',3500,100);
insert into product values(null,'iPhone5s',3000,100);
insert into product values(null,'方便面',4.5,1000);
insert into product values(null,'咖啡',11,200); 
insert into product values(null,'矿泉水',3,500);

-- 1. 往商品表中插入数据
-- 1.1 第一种形式: 指定插入哪些列的数据,没有指定的列那个就插入null
INSERT INTO product (pname,price,num) VALUES ('华为手机',6980.0,1500);

-- 1.2 第二种形式: 不指定插入哪些列的数据,也就是说要对所有列都插入数据,就算某一列你不想插入数据,也要写null
INSERT INTO product VALUES (NULL,'苹果手机',8999.0,2000)

-- 2. 更新数据
-- update 表名 set 字段名=新值,字段名=新值 where 条件
-- 如果没有修改条件的话,那么会将整张表的该字段的值都改掉
-- 2.1 将所有商品的价格修改为5000元
UPDATE product SET price=5000;

-- 2.2 将商品名是苹果电脑的价格修改为18000元
UPDATE product SET price=18000 WHERE pname='苹果电脑';

-- 2.3 将商品名是苹果电脑的价格修改为17000,数量修改为5
UPDATE product SET price=17000,num=5 WHERE pname='苹果电脑';

-- 2.4 将商品名是方便面的商品的价格在原有基础上增加2元
UPDATE product SET price=price+2 WHERE pname='方便面';

-- 3. 删除数据
-- 3.1 delete根据条件进行删除
-- delete from 表名 where 条件
-- 删除表中名称为’苹果电脑’的记录
DELETE FROM product WHERE pname='苹果电脑';
-- 删除价格小于5001的商品记录
DELETE FROM product WHERE price < 5001;

-- 删除所有数据,就是不加条件
DELETE FROM product;

-- 3.2 要删除所有数据,不太建议使用delete语句进行删除,因为delete语句是根据条件一行一行删除
-- truncate进行删除,将整张表整体干掉,然后自动创建一张结构一模一样的新表

TRUNCATE TABLE product;

-- 实际工作中怎么删除数据? 采用逻辑删除

-- 第四章: 数据查询
-- 1. 查询所有行和所有列的数据
-- select 要查询哪些列 from 表名 where 条件
SELECT * FROM product

-- 2. 查询指定列的数据, select 和 from之间写的就是要查询的列名,列名之间使用逗号分隔
SELECT pid,pname,price,num FROM product

-- 3. 去重查询: 在查询结果中去掉重复的数据,使用关键字distinct
-- select distinct 要查询的字段 from 表名 where 条件
SELECT DISTINCT pname,price FROM product

-- 4. 别名查询: 给查询的字段或者表进行别名设置
-- 给字段取别名的时候,最好使用'别名'
-- 语法: 列名 as 别名,当然as可以省略
SELECT pid ,pname AS '商品名',price AS '商品价格',num AS '商品库存' FROM product

-- 5. 运算查询
SELECT pid,pname,price + 10 'price',num FROM product

-- 6. 条件查询
-- 6.1 查询商品价格>3000的商品
SELECT * FROM product WHERE price > 3000;

-- 6.2 查询pid=1的商品
SELECT * FROM product WHERE pid=1;

-- 6.3 查询pid<>1的商品
SELECT * FROM product WHERE pid<>1;

-- 6.4 查询价格在3000到6000之间的商品
SELECT * FROM product WHERE price BETWEEN 3000 AND 6000;

-- 6.5 查询pid在1,5,7,15范围内的商品
SELECT * FROM product WHERE pid IN (1,5,7,15);

-- 6.6 查询商品名以iPho开头的商品(iPhone系列)   like模糊查询
SELECT * FROM product WHERE pname LIKE 'Ipho%';

-- 6.7. 查询商品价格大于3000并且数量大于20的商品   (条件 and 条件 and...)
SELECT * FROM product WHERE price > 3000 AND num > 20;

-- 6.8 查询id=1或者价格小于3000的商品 
SELECT * FROM product WHERE pid=1 OR price < 3000;

-- 7. 排序查询
-- 升序 asc(默认)  , 降序 desc
-- 7.1 单列排序, 按照某一列进行排序
-- 以分数降序查询所有的学生
SELECT * FROM student ORDER BY score DESC;

-- 7.2多列排序
-- 先按照第一个字段进行排序,如果第一个字段相同,那么就按照第二个字段进行排序
--  以分数降序查询所有的学生, 如果分数一致,再以age降序
SELECT * FROM student ORDER BY score DESC,age DESC;

-- 8. 聚合函数: 用于统计的,通常和分组查询一起使用,用于统计每组的数据
-- 8.1 max函数,查询最大值
-- 求出学生表里面的最高分数
SELECT MAX(score) FROM student;

-- 8.2 min函数,查询最小值
-- 求出学生表里面的最低分数
SELECT MIN(score) FROM student;

-- 8.3 avg函数,查询平均值
-- 求出学生表里面的平均分  -- 如果该字段为null,则不会将其加入到计算平均值
SELECT AVG(score) FROM student;
-- 如果我的想法是你缺考了就当成0分处理
SELECT AVG(IFNULL(score,0)) FROM student;

-- 8.4 count函数,统计数据条数
-- 统计学生总数
SELECT COUNT(sid) FROM student

-- 8.5 sum函数,求和
-- 求出学生表里面的分数的总和(忽略null值)
SELECT SUM(score) FROM student;

-- 9. 分组查询:分组的目的是为了做统计,所以要结合聚合函数一起使用
-- 语法: group by 用于分组的字段
-- 根据性别分组, 统计每一组学生的总人数
SELECT sex '性别',COUNT(sid) '总人数' FROM student GROUP BY sex

-- 根据性别分组,统计每组学生的平均分
SELECT sex '性别',AVG(score) '平均分' FROM student GROUP BY sex

-- 根据性别分组,统计每组学生的总分
SELECT sex '性别',SUM(score) '总分' FROM student GROUP BY sex

-- 10. 分组后的筛选
-- 分组后的条件,不能卸载where之后,where关键字要写在group by之前
-- 练习根据性别分组, 统计每一组学生的总人数> 5的(分组后筛选)
SELECT sex '性别',COUNT(sid) '总人数' FROM student GROUP BY sex HAVING COUNT(sid)>5

-- 练习根据性别分组,只统计年龄大于等于18的,并且要求组里的人数大于4
SELECT sex '性别',COUNT(sid) '总人数' FROM student WHERE age >= 18 GROUP BY sex HAVING COUNT(sid) > 4




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

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

相关文章

联合证券|2022年逾200家企业IPO“撤单”,谁在“临阵脱逃”?

刚刚过去的2022年&#xff0c;A股IPO募集资达5870亿元&#xff0c;创下前史新高。不过&#xff0c;也有不少“带病闯关”的IPO项目遇阻&#xff0c;计算数据显现&#xff0c;2022年A股IPO共有234家企业撤单&#xff0c;创9年以来最大撤回潮。 谁在惊惶万状&#xff1f; 2022年…

LeetCode[剑指offer 40]最小的k个数

难度&#xff1a;简单 题目&#xff1a; 输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。示例 1&#xff1a; 输入&#xff1a;arr [3,2,1], k 2 输出&#xff1a;[…

C 语言的 互斥锁、自旋锁、原子操作

今天不整 GO 语言&#xff0c;我们来分享一下以前写的 C 代码&#xff0c;来看看 互斥锁&#xff0c;自旋锁和原子操作的 demo 互斥锁 临界区资源已经被1个线程占用&#xff0c;另一个线程过来访问临界资源的时候&#xff0c;会被CPU切换线程&#xff0c;不让运行后来的这个线…

基础算法(二)——归并排序

归并排序 介绍 归并排序是一种复杂度O(nlog(n)nlog(n)nlog(n))的排序算法&#xff0c;并且在任何情况下都是&#xff0c;但是它不是原地算法&#xff0c;即需要额外存储空间 其原理是&#xff0c;先将区间均匀分成左右两半&#xff0c;然后再对左右两半继续二分&#xff0c;…

Large Language Models Are Reasoning Teachers

Paper name Large Language Models Are Reasoning Teachers Paper Reading Note URL: https://arxiv.org/pdf/2212.10071.pdf twitter 宣传&#xff1a; https://twitter.com/itsnamgyu/status/1605516353439354880 TL;DR 提出了 Fine-tune-CoT 方法&#xff0c;旨在利用非…

Java --- JVM对象内存布局与访问定位

目录 一、对象内存布局 1.1、对象头(Header) 1.1.1、运行时元数据(Mark Word) 1.1.2、 类型指针 1.2、实例数据(Instance Date) 1.3、对齐填充(Padding) 二、对象访问定位 一、对象内存布局 1.1、对象头(Header) 1.1.1、运行时元数据(Mark Word) 1、哈希值(HashCode) 2、G…

【高级人工智能】国科大《高级人工智能》符号主义笔记

国科大《高级人工智能》罗老师部分——符号主义笔记 罗老师上课很有意思&#xff0c;但是这部分内容还是挺难理解的&#xff0c;需要仔细思考今年考试题目这部分跟往年不一样&#xff0c;老师讲的重点&#xff08;A搜索归结原理&#xff09;也没考&#x1f605; 文章目录几个概…

FFmpeg

介绍 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0c;为了保证高可移植性和编解码质量&…

Windows 下安装共享文件夹(一步一步带你创建,亲测有效果)

目录1 需求2 实现1 需求 我们想要在自己的Windows电脑上面安装一个共享文件夹&#xff0c;想让其他电脑连我们的共享文件夹&#xff0c;或者我们需要使用代码&#xff0c;连接这个共享文件夹&#xff0c;所以我们必须先在Windows电脑创建一个共享文件夹 2 实现 首先我们创建…

centos7.9安装harbor-offline-installer-v2.4.1.tgz

1.首先下载安装包 可以去github上搜索下载&#xff1a; GitHub: Let’s build from here GitHub 然后选择版本进行下载&#xff0c;一般从githut上下载速度很慢,我已提前下载好&#xff0c;从csdn上下载会比较快&#xff1a; harbor-offline-installer-v2.4.1.tgz: https:…

聊聊跳表?

什么是跳表 跳表&#xff08;Skip List&#xff09;是一种类似于链表的数据结构&#xff0c;其查询、插入、删除的时间复杂度都是O(logn)。 在传统的单链表结构中&#xff0c;查找某个元素需要从链表的头部按顺序遍历&#xff0c;直到找到目标元素为止&#xff0c;查找的时间复…

PowerShell木马免杀利器: Invoke-Obfuscation(过火绒)

Invoke-Obfuscation 简介 Invoke-Obfuscation工具下载地址: https://github.com/danielbohannon/Invoke-Obfuscation Invoke-Obfuscation是一款PowerShell混淆工具&#xff0c;可以将PowerShell脚本加密&#xff0c;使得它的检测和分析变得更加困难。该工具包含多种加密方法&…

HTML实现右下角闪烁弹窗

演示 完整HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

【系列01】java运算符及运算符优先级[附带目录 按需服用]

运算符、三元运算符、位运算符、拓展赋值、运算优先级、自增自减 运算符 java代码优先级多用括号**,多用括号()**不仅方便而且增加可读性 自增自减 a 是先赋值再增加a 是先增加再赋值上面都表示 a a1;自减同理由 public class Demo05 {public static void main(String[] ar…

CSS3 之属性

文章目录calcborderbox-shadowbackground-image垂直渐变水平渐变左上角渐变渐变方向写法组合background-clipbackground-attachmentword-wrap:break-word&#xff1a;允许长单词换行到下一行;word-wrap:word-break&#xff1a;text-shadow3、字体white-space 设置如何处理元素内…

Java设计模式中建造者模式是啥/建造者模式实现细节是什么/工厂模式,抽象工厂与建造者模式之间区别是啥

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 4.6 建造者模式 4.6.1 概述 分离部件构造(由Builder来创建)和装配(Director组装)实现构建与装配解耦用户只需指定复杂对象类型就可得到最终对象&#xff0c;不需…

医药行业应用APS生产排产软件的必要性

高级计划与排程APS生产排产软件(advanced planning and scheduling) 是一个立足于整个企业生产活动的计算机系统。利用APS生产排产软件的管理手段和信息&#xff0c;企业可优化其从制定生产产量到管理最终产品的整个生产流程中的各个环节。利用实时、准确的数据&#xff0c;APS…

umi4 多环境配置改变

umi3 多环境我们可以根据脚本配置环境变量&#xff0c;然后配置不同的umirc 或者config 文件&#xff0c;从而达到配置多环境的效果。 问题描述 umi4 发布了&#xff0c;还是按照umi3 的配置了多环境&#xff0c; package.json 配置 了不同环境运行和编译脚本&#xff1a; co…

Netty进阶——粘包与半包(固定长度方式解决粘包问题)

目录一、固定长度方式解决粘包问题&#xff08;代码示例&#xff09;1.1、固定长度方式解决粘包问题的服务端代码示例1.2、固定长度方式解决粘包问题的客户端代码示例1.3、分别启动服务端&#xff0c;客户端&#xff0c;查看服务端结果输出一、固定长度方式解决粘包问题&#x…

一零四六、Spark性能调优

本文分为四个部分&#xff0c;基本涵盖了所有Spark优化的点&#xff0c;面试和实际工作中必备。 《Spark性能优化&#xff1a;开发调优篇》《Spark性能优化&#xff1a;资源调优篇》《Spark性能优化&#xff1a;数据倾斜调优篇》《Spark性能优化&#xff1a;shuffle调优篇》Spa…