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,一经查实,立即删除!

相关文章

pyqt按钮关闭窗口_PyQt5按钮单击事件,退出程序

1.注意项&#xff1a;当使用QPushButton.clicked.connect(lambda:self.信号槽方法)。connect方法传参数时&#xff0c;需要加上“lambda:”2.步骤&#xff1a;添加一个按钮 self.button1 QPushButton(按钮上的文本)。创建水平布局对象QHBoxLayout&#xff0c;并使用setWidget方…

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;直接一次看完附近所有城市低价(附近城市均有经销商可售…

文本图像增强及opencv应用实例

1 文本图像增强简介 文本图像增强应用场景:扫描电子图像、图像去背景、去噪点、文字增强等;传统图像处理的方法:滤波锐化、形态学处理等,利用opencv就可以操作;基于深度学习的方法:风格迁移、超分重构等。2 基于opencv的文本图像增强算法之一 利用传统图像处理方式对文本…

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

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

文本图像增强文献调研

1 角度矫正 https://blog.csdn.net/weixin_39133209/article/details/127754001 https://zhuanlan.zhihu.com/p/370145715 https://blog.csdn.net/m_buddy/article/details/81463234 https://blog.csdn.net/weixin_42869334/article/details/123348328 https://www.codenong.c…

Jenkins Job 迁移小妙招【jenkins-cli】

文章目录 jenkins-cli 入门jenkins-cli 使用方法 1:使用 ssh 访问 jenkins第 1 步:认证第 2 步:查看支持的命令第 3 步:构建 job 案例方法 2:使用 cli 客户端 访问 jenkins第 1 步:下载 jar第 2 步:使用 cli 客户端查看所有选项客户端连接模式两种方式的对比迁移案例【基…

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台式电脑连…

文本检测及识别小组周报

1 Huang L的工作 https://blog.csdn.net/qq_44950283/article/details/127739829 OCR小组会议纪要 2022/11/12 任意形状文本检测 1、特征提取&#xff1a;输入图片通过共享卷积得到共享特征Fs 2、边界建议模型使用Fs&#xff0c;得到先验特征Fp(包括分类图、距离场图、方向场…

python回车换行怎么不行_使用Python编写换行符时避免写入回车'\r'

如果考虑到carriage return \r和line feed \nPython 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>…

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

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

TextBPN:Adaptive Boundary Proposal Network for Arbitrary Shape Text Detection学习笔记

1 动机 领域&#xff1a;任意形状的文本检测目的&#xff1a;不需要后处理&#xff0c;直接学习到任意形状文本的边界。 2 相关工作 3 算法分析 算法分为两个部分&#xff1a; 边界建议模型(a boundary proposal model)&#xff1a;我的理解是这个部分先给出一个大致的边界…

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 由相机传感器捕获的文档…

python如何在所有线程结束后执行最后操作_Python线程的生命周期

在线程的生命周期中&#xff0c;从创建到执行以及最终终止&#xff0c;线程通常处于四种状态之一&#xff1a;开始态、可调度状态、阻塞态和终止态。 父线程和子线程 当一个新的进程或程序开始运行时&#xff0c;它将以一个线程开始&#xff0c;这个线程被称为主线程。然后主线…

mac怎么安装python开发环境搭建_Mac OS搭建Python开发环境

简书 Wwwwei转载请注明原创出处&#xff0c;谢谢&#xff01;前言最近在看一些关于机器学习的内容&#xff0c;其中大量代码需要Python的运行环境&#xff0c;所以搭建了Python开发环境&#xff0c;这里记录下&#xff0c;方便大家学习。安装PythonMac OS下安装Python主要方式有…

文本图形处理(扭曲变形、增强等)的源代码列表-1

文本图形扭曲变形 Google:Document image dewarping GitHub Document image dewarping using text-lines and line Segments https://github.com/taeho-kil/Document-Image-Dewarping Document Dewarping with Control Points https://github.com/gwxie/Document-Dewarping…