asp多表查询并显示_MySQL多表查询与事务

512ba6f54e31b3dbe2c3edfbe6331887.png

回顾

1. DQL单表高级查询条件  where比较运算逻辑运算符in关键字between关键字if null关键字like关键字% 多个任意字符_ 单个任意字符排序 order byascdesc聚合函数count(*) 统计行,包括null值maxminavgsum分组 group by 分组字段 having 分组后条件过滤分页 limit 开始索引,每页显示个数公式:索引=(当前页-1)× 每页的个数
2. 数据库约束主键约束create table 表名(id int primary key auto_increment,....);唯一 unique非空 not null默认值 default3. 表关系一对多主表从表(外键字段 指向 主表主键)多对多二个主表创建第三张作为从表(二个外键字段 分别指向 各自主表的主键),由多个一对多组成一对一外键是唯一主键是外键外键约束保证多表有关的数据进行限定,保证他的正确性,有效性和完整性[constraint] [约束性] foreign key(外键字段) references 主表(主键)4. 数据库备份与还原

MySQL多表查询与事务

今日目标

1. DQL多表高级查询语法笛卡尔积内连接外连接子查询2. 多表综合案例(四张表),学习多表查询的规律3. 事务安全(TCL)转账案例引入它,解决场景4. 表的范式(数据库的设计规则)

一 多表查询【重点】

同时查询多张表获取到需要的数据组成完整的信息返回给用户。

准备数据

-- 多表查询
create database web03_1;
use web03_1;
-- 创建部门表(主表)
CREATE TABLE dept (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20)
);INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'),('销售部');-- 创建员工表(从表)
CREATE TABLE emp (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),gender CHAR(1),   -- 性别(sex)salary DOUBLE,   -- 工资join_date DATE,  -- 入职日期dept_id INT -- 外键字段
);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('孙悟空','男',7200,'2013-02-24',1);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('猪八戒','男',3600,'2010-12-02',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('唐僧','男',9000,'2008-08-08',2);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('白骨精','女',5000,'2015-10-07',3);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('蜘蛛精','女',4500,'2011-03-14',1);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('沙僧','男',6666,'2017-03-04',null);

a84061c2de6530839b9edcc68b248144.png

1.1 笛卡尔积

* 功能二张表的记录所有字段进行了组合,这种现象称为笛卡尔积,(又称为交叉连接)
* 语法SELECT ... FROM 左表,右表;

a84061c2de6530839b9edcc68b248144.png

1.2 内连接

* 功能拿左表的记录去匹配右表的记录,若匹配上就显示,匹配不上就不显示(二张表的交集)
* 语法1.隐式内连接【了解】SELECT ... FROM 左表,右表 where 条件过滤;2.显示内连接【推荐】 select ... from 左表 [inner] join 右表 on 条件过滤;
-- 隐式内连接
SELECT * FROM emp e,dept d WHERE e.dept_id = d.id;
-- 显示内连接
SELECT * FROM emp e INNER JOIN dept d ON e.dept_id = d.id;# 内连接
-- 查询唐僧的 id,姓名,性别,工资和所在部门名称
SELECT e.id,e.name,e.gender,e.salary,d.name FROM emp e INNER JOIN dept d ON e.dept_id = d.id WHERE e.name = '唐僧';

1.3 外连接

1. 左外连接【掌握】功能展示左表的全部记录,去匹配右表的记录,若匹配上显示数据,若没匹配上显示NULL语法select ... from 左表 left [outer] join 右表 on 条件过滤;2. 右外连接【了解】功能展示右表的全部记录,去匹配左表的记录,若匹配上显示数据,若没匹配上显示NULL语法select ... from 左表  right [outer] join 右表 on 条件过滤;
# 左外连接
-- 查询所有员工信息(左边)及对应的部门名称(右边)
SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.dept_id = d.id;
-- 查询所有部门(左边)及对应的员工信息(右边)
SELECT * FROM dept d LEFT OUTER JOIN emp e ON e.dept_id = d.id;# 右外连接
-- 查询所有部门(右边)及对应的员工信息(左边)
SELECT * FROM emp e RIGHT OUTER JOIN dept d ON d.id = e.dept_id;

1.4 子查询

* 功能一条select语句执行结果,作为另一条select 语法 的一部分,使用需要添加括号
* 语法1. 单值SELECT MAX(salary) FROM emp;2. 单列多行SELECT NAME FROM emp;3. 多列多行SELECT * FROM emp;* 小结子查询结果为单列,作为条件在where后使用select ... from 表名 where  字段  = or in(子查询);子查询结果为多列,作为虚拟表在form后使用select ... from (子查询) as 表别名....
# 子查询# 子查询结果为单值
-- 1 查询工资最高的员工是谁?
SELECT * FROM emp WHERE salary = (SELECT MAX(salary) FROM emp);
-- 2 查询工资小于平均工资的员工有哪些?
-- 2.1 先求出平均工资
SELECT AVG(salary) FROM emp;
-- 2.2 再查询小于平均工资的员工
SELECT * FROM emp WHERE salary < (SELECT AVG(salary) FROM emp);# 子查询结果为单列多行
-- 1 查询工资大于5000的员工,来自于哪些部门的名字  
-- 1.1 查询工资大于5000的员工
SELECT dept_id FROM emp WHERE salary > 5000;
-- 1.2 来自于哪些部门的名字  
SELECT * FROM dept WHERE id IN(SELECT dept_id FROM emp WHERE salary > 5000);-- 2 查询开发部与财务部所有的员工信息
-- 2.1 查询开发部与财务部
SELECT id FROM dept WHERE NAME IN('开发部','财务部');
-- 2.2 对应的的员工信息
SELECT * FROM emp WHERE dept_id IN(SELECT id FROM dept WHERE NAME IN('开发部','财务部'));# 子查询结果为多列多行
-- 1 查询出2011年以后入职的员工信息,包括部门名称
-- 1.1 查询出2011年以后入职的员工信息
SELECT * FROM emp WHERE join_date > '2011-1-1';
-- 1.2 作为虚拟表连接部门表
SELECT * FROM (SELECT * FROM emp WHERE join_date > '2011-1-1') AS e LEFT JOIN dept d ON e.dept_id = d.id;-- 扩展 
SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.dept_id = d.id WHERE e.join_date > '2011-1-1';

a84061c2de6530839b9edcc68b248144.png

二 多表案例【四张表】

我们在企业开发时,根据不同的业务需求往往需要通过2张及以上的表中去查询需要的数据。其实不管是几张表的查询,都是有规律可循的。

准备数据

-- 多表案例
create database web03_2;
use web03_2;
-- 部门表
CREATE TABLE dept (id INT PRIMARY KEY auto_increment, -- 部门iddname VARCHAR(50), -- 部门名称loc VARCHAR(50) -- 部门位置
);-- 添加4个部门
INSERT INTO dept(id,dname,loc) VALUES 
(10,'教研部','北京'),
(20,'学工部','上海'),
(30,'销售部','广州'),
(40,'财务部','深圳');-- 职务表
CREATE TABLE job (id INT PRIMARY KEY,jname VARCHAR(20), -- 职务名称description VARCHAR(50) -- 职务描述
);-- 添加4个职务
INSERT INTO job (id, jname, description) VALUES
(1, '董事长', '管理整个公司,接单'),
(2, '经理', '管理部门员工'),
(3, '销售员', '向客人推销产品'),
(4, '文员', '使用办公软件');-- 员工表
CREATE TABLE emp (id INT PRIMARY KEY, -- 员工idename VARCHAR(50), -- 员工姓名job_id INT, -- 职务id  外键mgr INT , -- 上级领导joindate DATE, -- 入职日期salary DECIMAL(7,2), -- 工资 99999.99bonus DECIMAL(7,2), -- 奖金 99999.99dept_id INT, -- 所在部门编号  外键CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY (job_id) REFERENCES job (id),CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept (id)
);-- 添加员工
INSERT INTO emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id) VALUES 
(1001,'孙悟空',4,1004,'2000-12-17','8000.00',NULL,20),
(1002,'卢俊义',3,1006,'2001-02-20','16000.00','3000.00',30),
(1003,'林冲',3,1006,'2001-02-22','12500.00','5000.00',30),
(1004,'唐僧',2,1009,'2001-04-02','29750.00',NULL,20),
(1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00',30),
(1006,'宋江',2,1009,'2001-05-01','28500.00',NULL,30),
(1007,'刘备',2,1009,'2001-09-01','24500.00',NULL,10),
(1008,'猪八戒',4,1004,'2007-04-19','30000.00',NULL,20),
(1009,'罗贯中',1,NULL,'2001-11-17','50000.00',NULL,10),
(1010,'吴用',3,1006,'2001-09-08','15000.00','0.00',30),
(1011,'沙僧',4,1004,'2007-05-23','11000.00',NULL,20),
(1012,'李逵',4,1006,'2001-12-03','9500.00',NULL,30),
(1013,'小白龙',4,1004,'2001-12-03','30000.00',NULL,20),
(1014,'关羽',4,1007,'2002-01-23','13000.00',NULL,10);-- 工资等级表
CREATE TABLE salarygrade (grade INT PRIMARY KEY,  -- 等级losalary INT, -- 最低工资hisalary INT -- 最高工资
);-- 添加5个工资等级
INSERT INTO salarygrade(grade,losalary,hisalary) VALUES 
(1,7000,12000),
(2,12010,14000),
(3,14010,20000),
(4,20010,30000),
(5,30010,99990);

a84061c2de6530839b9edcc68b248144.png

练习

-- 1 查询所有员工信息。显示员工编号,员工姓名,工资,职务名称,职务描述
-- 1.1 确定查询哪些表?【员工  职务】
SELECT * FROM emp e INNER JOIN job j ;
-- 1.2 确定连接条件?【员工(job_id) 指向 职务(id)】
SELECT * FROM emp e INNER JOIN job j ON e.job_id = j.id;
-- 1.3 确定显示字段?【员工编号,员工姓名,工资,职务名称,职务描述】
SELECT e.id,e.ename, e.salary,j.jname,j.descriptionFROM emp e INNER JOIN job j ON e.job_id = j.id;
-- 2 查询所有员工信息。显示员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
-- 2.1 确定查询的表?【员工、职务、部门】
SELECT * FROM emp e INNER JOIN job j INNER JOIN dept d;
-- 2.2 确定连接条件?【员工(job_id) 指向 职务(id)、员工(dept_id) 指向 部门(id)】
SELECT * FROM emp e INNER JOIN job j INNER JOIN dept dON e.job_id = j.id AND e.dept_id = d.id; -- 了解SELECT * FROM emp e INNER JOIN job j ON e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.id; -- 推荐
-- 2.3 确定显示字段?【显示员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置】
SELECT e.id,e.ename, e.salary,j.jname,j.description,d.dname,d.locFROM emp e INNER JOIN job j ON e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.id; -- 推荐
-- 3 查询所有员工信息。显示员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
-- 3.1 确定查询表?【员工、职务、部门、工资等级】
SELECT * FROM emp eINNER JOIN job jINNER JOIN dept dINNER JOIN salarygrade sg;
-- 3.2 确定连接条件?【员工(job_id) 指向 职务(id)、员工(dept_id) 指向 部门(id)、员工(salary) 范围查找 对应工资等级】
SELECT * FROM emp eINNER JOIN job j ON e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.idINNER JOIN salarygrade sg ON e.salary BETWEEN sg.losalary AND sg.hisalary;
-- 3.3 确定显示字段?【显示员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级】
SELECT e.id,e.ename, e.salary,j.jname,j.description,d.dname,d.loc,sg.gradeFROM emp eINNER JOIN job j ON e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.idINNER JOIN salarygrade sg ON e.salary BETWEEN sg.losalary AND sg.hisalary;

小结

1. 多表查询会出现笛卡尔积2. 消除笛卡尔积:2张表1个条件、3张表2个条件【条件=n-1】3. 步骤3.1 确定查询几张表?3.2 确定连接条件?3.3 确定显示字段?3.4 确定业务条件?
-- 4 查询经理的信息。显示员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
-- 4.1 确定查询几张表
SELECT * FROM emp eINNER JOIN job jINNER JOIN dept dINNER JOIN salarygrade sg;
-- 4.2 确定连接条件
SELECT * FROM emp eINNER JOIN job j ON  e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.idINNER JOIN salarygrade sg ON e.salary BETWEEN sg.losalary AND sg.hisalary;
-- 4.3 确定显示字段
SELECT e.id,e.ename, e.salary,j.jname,j.description,d.dname,d.loc,sg.gradeFROM emp eINNER JOIN job j ON  e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.idINNER JOIN salarygrade sg ON e.salary BETWEEN sg.losalary AND sg.hisalary;
-- 4.4 确定业务条件【经理】
SELECT e.id,e.ename, e.salary,j.jname,j.description,d.dname,d.loc,sg.gradeFROM emp eINNER JOIN job j ON  e.job_id = j.idINNER JOIN dept d ON e.dept_id = d.idINNER JOIN salarygrade sg ON e.salary BETWEEN sg.losalary AND sg.hisalaryWHERE j.jname = '经理';
-- 5 查询出部门编号、部门名称、部门位置、部门人数
-- 5.1 先查询部门人数
SELECT dept_id,COUNT(*) AS total FROM emp GROUP BY dept_id;-- 5.2 查询结果作为虚拟表 连接 部门表
SELECT * FROM (SELECT dept_id,COUNT(*) AS total FROM emp GROUP BY dept_id) AS e INNER JOIN dept d ON e.dept_id = d.id;-- 内连接不关注书写的顺序,谁先谁后都可以
SELECT d.id,d.dname,d.loc,e.total FROM dept d INNER JOIN (SELECT dept_id,COUNT(*) AS total FROM emp GROUP BY dept_id) AS e ON d.id = e.dept_id;

a84061c2de6530839b9edcc68b248144.png

三 事务安全 TCL

3.1 概述

如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。

准备数据

-- 创建数据表
CREATE TABLE account (  -- 账户表id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(32),money DOUBLE 
);-- 添加数据
INSERT INTO account (NAME, money) VALUES ('片王', 1000), ('刚刚', 1000);

模拟转账

-- 转账
-- 片王扣钱 -100
UPDATE account SET money=money-100 WHERE id = 1;
-- 机器故障
-- 刚刚收钱 +100
UPDATE account SET money=money+100 WHERE id = 2;

3.2 操作

3.2.1 手动提交事务

1. 开启事务start transaction;2. 提交事务commit;3. 回滚事务rollback;

转账成功

-- 1.开启事务
start transaction;
-- 2.片王扣钱
UPDATE account SET money=money-100 WHERE id = 1;    
-- 3.刚刚加钱
UPDATE account SET money=money+100 WHERE id = 2;
-- 4.提交事务
commit;

转账失败

-- 1.开启事务
start transaction;
-- 2.片王扣钱
UPDATE account SET money=money-100 WHERE id = 1;
-- 机器故障
-- 3.回滚事务
rollback;

3.2.2 自动提交事务

* MySQL数据库默认情况一条DML语句就是一个独立的事务。* 查看MySQL是否开启自动提交show variables like 'autocommit';* 临时关闭自动提交set autocommit=OFF;

测试还会不会自动提交

-- 片王扣钱
UPDATE account SET money=money-100 WHERE id = 1;
-- 手动提交事务
commit;

3.3 事务原理【理解】

注意:代码报错之后必须进行rollback处理,如果没有执行rollback 会影响到同一个事务中下一次提交数据。

a84061c2de6530839b9edcc68b248144.png

3.4 回滚点【了解】

* 功能当事务开启后,一部分sql执行成功,添加一个回滚点,后续操作报错了,直接到回滚点,保证之前的操作可以成功提交* 语法:1.添加保存点savepoint 保存点名称;2.回滚到保存点rollback to 保存点名称;

模拟,插入四条记录,在前二条插入成功后,设置保存点,后续操作报错了,直接到保存点,保证前二条记录可成功提交。

-- 1.开启事务
start transaction;
-- 2.插入 小路
insert into account values(null,'小路',1000);
-- 3.插入 PGONE
insert into account values(null,'pgone',1000);
-- 4.设置保存点
savepoint ok;
-- 5.插入 薛之谦
insert into account values(null,'谦谦',1000);
-- 机器故障
-- 6.回滚到保存点
rollback to ok;
-- 7.提交事务
commit;

3.5 事务特性【ACID】【面试题】

1. 原子性:A atomicity如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。2. 一致性:C consistency数据在事务的执行前后,保证它的完整一致3. 隔离性:I isolation多个事务之间,相互独立互不干扰4. 持久性:D durability事务一旦成功提交,同步到数据库磁盘文件,不可逆。

3.6 事务隔离性

* 功能多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。1. 脏读:一个事务中,读取到另一个事务未提交的数据2. 不可重复读:一个事务中,二次读取的内容不一致(update)3. 幻读:一个事务中,二次读取的数量不一致(insert、delete)

MySQL数据库隔离级别

| 级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认隔离级别 | | ---- | -------- | ---------------- | ---- | ---------- | ---- | ------------------ | | 1 | 读未提交 | read uncommitted | 是 | 是 | 是 | | | 2 | 读已提交 | read committed | 否 | 是 | 是 | Oracle和SQL Server | | 3 | 可重复读 | repeatable read | 否 | 否 | 是 | MySQL | | 4 | 串行化 | serializable | 否 | 否 | 否 | |

数据库性能:1>2>3>4

数据库安全:4>3>2>1

综合考量:2、3

演示不同隔离级别产生的问题

开启二个事务:A窗口 B窗口

1. 查看当前数据库隔离级别show variables like '%isolation%';
2. 临时修改隔离级别set session transaction isolation level 级别字符串;update account set money=900 where id = 1;
3. 演示3.1 脏读 设置隔离级别为 read uncommitted;set session transaction isolation level read uncommitted;3.2 解决脏读 设置隔离级别为 read committed;set session transaction isolation level read committed;3.3 解决不可重复读 设置隔离级别为 repeatable read;set session transaction isolation level repeatable read;4.3 串行化 设置隔离级别 serializable;set session transaction isolation level serializable;

a84061c2de6530839b9edcc68b248144.png

a84061c2de6530839b9edcc68b248144.png

a84061c2de6530839b9edcc68b248144.png

a84061c2de6530839b9edcc68b248144.png

四 三范式【了解】

4.1 概述

* 范式(Normal Form)设计数据库表的规则,好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化数据的设计和存储 。* 分类目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

4.2 三范式

看图

1. 第一范式(1NF)要求:每一列不能再拆分
2. 第二范式(2NF)要求:1.一张表只描述一件事情2.表中的每一个普通列都依赖于主键
3. 第三范式(3NF)要求:从表的外键必须使用主表的主键

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

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

相关文章

Bias and Debias in Recommender System: A Survey and Future Directions学习笔记

1 引言 2006-2020发表的有关推荐系统去偏的论文统计&#xff1a; 2 推荐系统的偏差 偏差发生在推荐系统的不同阶段&#xff1a; 用户交互到生成数据的阶段&#xff1a; – 选择偏差&#xff1a; – 一致性偏差&#xff08;从众偏差&#xff09;&#xff1a; – 曝光偏差&a…

卡扇区数据教程_分享一款硬盘分区和数据恢复软件

最近有朋友留言&#xff0c;自己的硬盘被格式化了&#xff0c;没法恢复。今天给大家介绍一款解决硬盘恢复软件--DiskGenius&#xff0c;文末附下载地址&#xff0c;觉得有用点个在看吧。DiskGenius是一款功能非常强大的硬盘分区及数据恢复软件&#xff0c;算法精湛、功能强大&a…

名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车

本文车型速览除了文章作者的主观观点外&#xff0c;我们正尝试基于全网可查的客观数据&#xff0c;为您提供中立、客观的参考依据&#xff1a;本文部分车型速览&#xff1a;畅销车型质量排行top10展开微信扫码&#xff0c;直接一次看完附近所有城市低价(附近城市均有经销商可售…

3 vue 线条箭头_线条眉要如何处理才能更自然?

更多纹绣内容关注公众号&#xff1a;法米索半永久学堂。眉头的操作确实不是一件容易的事&#xff0c;都说万事开头难&#xff0c;很多纹绣师把握不好眉头的操作技巧&#xff0c;一不小心就会把眉头做的方了、圆了&#xff0c;总之就是非常不自然。但只要我们把眉头做好了&#…

git rebase用法_Git:Clone别人的代码之后push到自己码云上失败的解决办法

最近也是刚开始使用gitee&#xff0c;比较生疏。场景是这样的&#xff1a;clone了朋友的一份代码到自己的本地&#xff0c;然后自己想把它保存到自己的gitee 私有仓库上&#xff0c;就在gitee上面创建了一个私有的仓库&#xff0c;然后多次push都失败了&#xff0c;实践了网上提…

fpga板子怎么和电脑连_windows7台式电脑怎么连接路由器?台式win7电脑连路由器步骤...

相信还有许多在使用windows7系统&#xff0c;尽管使用很长一段时间了&#xff0c;不过对win7系统的一些功能还是不太了解。大家家里应该都有路由器&#xff0c;那么windows7台式电脑怎么连接路由器&#xff0c;下面我们就一起来看看台式win7电脑连接路由器步骤。win7台式电脑连…

英特尔核显自定义分辨率_让免费的核显更好用!英特尔酷睿集成的GPU如何优化?...

点击上方电脑爱好者关注我们在笔记本领域&#xff0c;无论是英特尔酷睿还是AMD锐龙&#xff0c;都采取了“买一赠一”的策略&#xff0c;即都在处理器内集成了性能还不赖的核显&#xff0c;虽然它们无法驾驭3A游戏大作&#xff0c;但应对《英雄联盟》级别的游戏还是不成问题的。…

python脚本式编程_Python编程入门(一)

Python编程入门&#xff08;一&#xff09;概述&#xff1a;编程语言 1.脚本编程语言★脚本编程语言如php&#xff0c;perl&#xff0c;python&#xff0c;java等为脚本编程语言&#xff0c;通常需要通过解释器解释运行。 ★python&#xff08;java&#xff09;程序的执行过程s…

for循环里面有异步操作_JS 线程与异步的那些事

已知&#xff0c;JavaScript 是单线程的&#xff0c;天生异步&#xff0c;适合 IO 密集型&#xff0c;不适合 CPU 密集型&#xff0c;但是&#xff0c;为什么是异步的喃&#xff0c;异步由何而来的喃&#xff0c;我们将在这里逐渐讨论实现。一、进程与线程1. 浏览器是多进程的它…

FDRNet: Fourier Document Restoration for Robust Document Dewarping and Recognition学习笔记

1 广告 这篇工作由字节跳动商业化技术团队与新加坡南洋理工大学合作完成。 话不都说&#xff0c;先看效果&#xff1a; FDRNet的效果看上去有点好&#xff0c;可惜没有源代码提供。 2 相关工作 2.1 几何形变恢复方法Geometric Document Restoration 由相机传感器捕获的文档…

通讯可以并联吗_工业控制知识:吃透RS485通讯的连接方式,接485总线就简单多了...

RS485被广泛使用&#xff0c;可以支持ModBus协议。由于其简单、价优、可靠和成熟&#xff0c;因此&#xff0c;被广泛应用于工业控制、智能仪器和电力通信。我们来看看RS485的一个典型组网结构&#xff1a;理论上&#xff0c;RS485总线的传输距离可以达到1200米。然而&#xff…

python编程a的x次方_「Python 面试」第四次更新

阅读本文大约需要 5 分钟。 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁&#xff0c;该锁使得 Python 的多线程在处理 CPU 计算密集型任务时&#xff0c;同一时刻只能有一个线程在运行&#xff0c;这也是为什么说 Python 的多线程…

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

往期文章「Java并发编程」谈谈Java中的内存模型JMM面试官&#xff1a;说说你知道多少种线程池拒绝策略为什么不要在MySQL中使用UTF-8编码方式前言很多公司都有写单元测试的硬性要求&#xff0c;在提交代码的时候&#xff0c;如果单测通不过或者说单元测试各种覆盖率不达标&…

java编译_解析 Java 即时编译器原理。

↑ 点击上面 “时代Java”关注我们&#xff0c;关注新技术&#xff0c;学习新知识&#xff01;一、导读常见的编译型语言如C&#xff0c;通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译&#xff0c;处处运行”的特性&#xff0c;把编译的过程分成…

ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用

参考iOS-谓词的使用详解NSPredicate 谓词NSPredicateA definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.一种逻辑条件的定义&#xff0c;可以根据定义的模糊查询条件&#xff0c;对内存对象进行过滤搜索。1.比较运…

恒位油杯故障原因_抽油烟机常见故障及处理方法

您知道抽油烟机常见故障及处理方法是什么吗&#xff1f;抽油烟机通电后不能启动&#xff0c;可能是因为电源线断路或接头脱焊&#xff0c;仔细查出断路点或脱焊点&#xff0c;重新焊牢。通断开关断路或触点接触不良&#xff0c;检查断路器处是否焊好&#xff0c;若触点接触不良…

会议容易中吗_在装配式建筑中重要又容易被忽视的部分,你中招了吗?

装配式 建筑装配式建筑大家应该都有听过&#xff0c;那么这种建筑又是怎样构成的呢&#xff1f;装配式建筑概览▲▲▲装配式建筑粘结方案▲▲▲密封胶作为装配式建筑中的重要材料&#xff0c;起到不可忽视的作用~SMP密封胶&#xff0c;1978年开始生产&#xff0c;最初是针对硅酮…

Document image dewarping using text-lines and line Segments学习笔记

1 核心思想 论文:Robust Document Image Dewarping Method Using Text-Lines and Line Segments 论文:Document Dewarping via Text-line based Optimization 代码:https://github.com/taeho-kil/Document-Image-Dewarping 传统的基于文本行的文档去扭曲方法在处理复杂布局…

官网mysql安装目录_官网下载MySQL 并安装

官网下载MySQL 并安装一、下载二、安装&#xff1a;这里不再叙述安装步骤三、MySQL环境变量配置不是必须的。MySQL环境变量作用&#xff1a;找到MySQL安装目录下的bin目录&#xff0c;才能使用MySQL相关命令。配置环境变量后就不必找到bin目录了。说到这里解释一下Java &#x…