木舟0基础学习Java的第二十一天(数据库,MySQL,SQLyog)
数据库
数据库:按照数据结构来组织 存储数据的厂库
数据管理系统(Database Management System,DBMS):一套操作和管理数据库的软件 用于简历 使用 维护数据库
关系型数据库:采用关系模型作为数据组织方式 逻辑结构是一张二维表 由行和列组成 表的每一行为一个元组 每一列为一个属性
应用系统:建立在用户层和数据层之间的展现和交互部分
数据库设计的三范式
1.数据库表的每一列都是不可分割的基本数据项
2.首先满足1 要求数据库表中的每个实体必须可以被唯一的区分(主关键字)要求主体的非主属性完全依赖于主关键字
3.首先满足2 每一列数据都和主键相关 不能间接相关 既不能传递依赖与主关键字
保证数据完整性和一致性
例子:School(数据库),students(表)
MySQL每句代码后一定要加;
创建代码:
建库:
//创建数据库
CREATE DATABASE School(数据库名);
//创建前判断有无该数据库 没有就创建(常用)
CREATE DATABASE IF NOT EXISTS School;
//创建数据库判断有无该数据库同时指定编码格式
CREATE DATABASE IF NOT EXISTS(不写没判断) School CHARACTER SET utf8(编码格式);
建表:
CHAR(8)//指定字符长度
NOT NULL//不为空
UNIQUE//唯一的
VARCHAR(255)//长度大于CHAR最大到255
INT//同java一样
每句话需要用 , 隔开 最后一句话不需要
一定记得要在括号外加;
CREATE TABLE students(stu_num CHAR(8) NOT NULL UNIQUE,stu_name VARCHAR(20) NOT NULL,stu_gender CHAR(2) NOT NULL,stu_age INT NOT NULL,stu_tel CHAR(11) NOT NULL UNIQUE,stu_qq VARCHAR(11) UNIQUE);
//添加列(字段)
ALTER TABLE students ADD stu_wx VARCHAR(20);
插入数据:
语法:INSERT INTO 表名<列名,列名,...> VALUES<'数据','数据',...>;
INSERT INTO
//在开发中推荐使用将全部列名写出
//添加数据 数据位置要与列名位置匹配
INSERT INTO students(stu_num,stu_name,stu_gender,stu_age,stu_tel)VALUES('20240101','张三',' ',23,'182XXXX8780');//' ' 不是null 是数据表没有值
//全部插入
INSERT INTO students VALUES('20240102','李四','女',24,'182XXXX8781','qq488085218');//数据必须与表中列的位置数量一一对应
删除代码:
删库:
//删除School数据库 敏感操作
DROP DATABASE School(数据库名);
删表:
//删除表 敏感操作会删除表中所有数据
DROP TABLE students(表名);
//删除前判断有无该数据表 没有就删除(常用)
DROP TABLE IF EXISTS students;
//删除列
ALTER TABLE students DROP stu_ww;
删数据:
//根据名字删除数据 要加上WHERE条件 不然会删除全部数据
DELETE FROM students WHERE stu_name='张三';//name可以替换成gender 就是根据性别删除
TRUNCATE FROM students WHERE stu_name='张三';
//DELETE和TRUNCATE的区别是自动增长
//DELETE删除后自动增长继续
//TRUNCATE删除后自动增长从1开始 并且 不能用在主外键关系表上
修改代码:
改库:
//修改数据库字符集(不常用)
ALTER DATABASE School CHARACTER SET gbk(编码格式);
改表:
//修改表名 将studengs改为stus RENAME TO 重命名
ALTER TABLE students RENAME TO stus;
//修改列的列表和类型 CHANGE 改变
ALTER TABLE students CHANGE stu_wx stu_ww VARCHAR(11);
//修改列类型 MODIFY 修改
ALTER TABLE students MODIFY stu_ww CHAR(11);
改数据:
//修改数据 敏感操作 会把students表中所有数据性别改为男 一定要加WHERE条件
UPDATE students SET stu_gender='男';
//修改一列数据 根据num来改
UPDATE students SET stu_gender='男' WHERE stu_num='20240101';//基本都是通过主键修改
//修改多列数据 同时 根据名字修改
UPDATE students SET stu_gender='女',stu_name='李四',stu_age=24 WHERE stu_name='张三';
查询代码:
查库:
//查询所有数据库
SHOW DATABASES;
查表:
//查询数据表
SHOW TABLES;
//查询表结构
DESC students;
//查询表中所有数据 *代表所有的
SELECT * FROM students;
//指定列查询
SELECT stu_name FROM students;
查数据:
单表查询:
//查询性别为女的数据
SELECT * FROM students WHERE stu_gender='女';
//查询数据 取别名并且算出生年份 AS 别名不建议取中文
SELECT stu_name AS 学生姓名,今年(2024)年份-stu_age AS 出生年份 FROM students;
SELECT stu_name,2024-stu_age AS stu_birth_year FROM students;
//去重并查询 DISTINCT 去重
SELECT DISTINCT stu_age FROM students;
//排序(升序,降序)ORDER BY 排列
SELECT * FROM students ORDER BY stu_age;//没写升序降序 默认升序
//升序 ASC
SELECT * FROM students ORDER BY stu_age ASC;
//降序 DESC也可以查表结构
SELECT * FROM students ORDER BY stu_age DESC;
//多字段排序 先排序性别 再排序年龄
SELECT * FROM students ORDER BY stu_gender ASC,stu_age DESC;
区间查询:
BETWEEN AND 在...之间
//查询年龄在18到29之间的数据
SELECT * FROM students WHERE stu_age BETWEEN 18 AND 29;
//查询年龄不在18到29之间的数据
SELECT * FROM students WHERE stu_age NOT BETWEEN 18 AND 29;
//查询性别为女并且年龄小于25岁的数据
SELECT * FROM students WHERE stu_gender='女' AND stu_age<25;
//查询性别为男或者年龄大于25岁的数据
SELECT * FROM students WHERE stu_gender='男' OR stu_age>25;
模糊查询:
LIKE 类似于百度搜索
//查询名字中有 张 字的数据
SELECT * FROM students WHERE stu_name LIKE '%张%';
//查询名字中最后一个字为 三 字的数据
SELECT * FROM students WHERE stu_name LIKE '%三';//查第一个字为张 LIKE '张%'
//查询名字中第二个字为 三 字的数据
SELECT * FROM students WHERE stu_name LIKE '_三%';
分组查询:
GROUP BY 分组(后面只能跟一个列名)
//分组查询 先对性别进行分组 然后统计每组数据个数
SELECT stu_gender,COUNT(stu_num) FROM students GROUP BY stu_gender;
//分组查询 先对性别进行分组 然后计算每组的平均年龄
SELECT stu_gender,AVG(stu_age) FROM students GROUP BY stu_gender;
//分组查询 先对年龄进行分组 再统计各组人数 还可以对最终的结果进行排序
SELECT stu_age,COUNT(stu_num)FROM students GROUP BY stu_age ORDER BY stu_age;
//分组查询 先对年龄进行分组 再统计男生的人数 还可以对最终的结果进行排序
SELECT stu_age,COUNT(stu_num)FROM students WHERE stu_gender='男' GROUP BY stu_age ORDER BY stu_age;
//先查询所有数据 按年龄分组 然后统计每组男生人数
//再筛选当前组人数大于1的组 HAVING 拥有 COUNT(*)>1 按年龄升序显示
SELECT stu_age,COUNT(*)FROM students WHERE stu_gender='男' GROUP BY stu_age HAVING COUNT(*)>1 ORDER BY stu_age;//这里不能使用WHERE
WHERE是筛选分组前的条件 HAVING是筛选分组后的条件
优先级:WHERE > GROUP BY > HAVINE > ORDER BY
分页查询:
LIMIT
//第一页 分页查询每页两条数据
SELECT * FROM student LIMIT 0,2; // LIMIT (1-1)*每页有几条数据,每页有几条数据;
//第二页
SELECT * FROM student LIMIT 2,2; //(2-1)*2
两表连接查询:
数据表的别名:(开发常用)
SELECT s.*,c.class_name FROM students s INNER JOIN classes c ON s.cid=c.class_id;
内连接查询:
内连接查询关键字 INNER JOIN 如果不加其他条件查询是没有意义的 需要添加条件查询
//使用WHERE作为过滤条件连接查询 效率很低
//WHERE 先生成笛卡尔积 再从笛卡尔积中过滤数据
SELECT * FROM students INNER JOIN classes WHERE students.cid=classes.class_id;
//使用ON作为过滤条件连接查询 INNER JOIN 一般都匹配ON使用
//ON 先判断连接条件是否成立 如果成立两张表的数据进行组合生成一条结果记录
SELECT * FROM students INNER JOIN classes ON students.cid=classes.class_id;
左连接:
//左连接LEFT JOIN 显示左表所有数据 如果在右表中存在与左表记录 满足匹配条件的数据 则进行匹配 如果右表中不存在匹配记录 则显示null
SELECT * FROM students LEFT JOIN classes ON students.cid=classes.class_id;
右连接:
//右连接 RIGHT JOIN
SELECT * FROM students RIGHT JOIN classes ON students.cid=classes.class_id;
子查询:
//先进行一次查询 第一次查询的结果作为第二次查询的源/条件 第二次查询是基于第一次查询的结果来进行的
//查询班级名称为Java2024 班级中的学生信息(只知道班级名称 不知道班级id)
SELECT class_id FROM classes WHERE class_name='Java2024';
//class_id 已经被记录
SELECT * FROM students WHERE cid=1;
//子查询
SELECT * FROM students WHERE cid=
(SELECT class_id FROM classes WHERE class_name='Java2024');
//子查询返回多个值 方法1 UNION 多行单列(查询所有Java班级中的学生信息)
SELECT class_id FROM classes WHERE class_name LIKE '%Java%';
SELECT * FROM students WHERE cid=1
UNION
SELECT * FROM students WHERE cid=2
UNION
SELECT * FROM students WHERE cid=3
//子查询返回多个值 方法2 IN 多行单列(查询所有Java班级中的学生信息)
SELECT * FROM students WHERE
cid IN(SELECT class_id FROM classes WHERE class_name LIKE '%Java%');
//拓展 查询cid=1的班级中 性别为男的同学
SELECT * FROM(SELECT * FROM students WHERE cid=1) t WHERE t.stu_gender='男';
聚合函数:
//查询表中数据总条数 COUNT 计数(括号中不能为空 一般放* 或者放列名)
SELECT COUNT(*)AS 总条数 FROM students;
//查询总数据中 有多少数据为男性
SELECT COUNT(*)AS 总条数 FROM students WHERE stu_gender='男';
//查询最大年龄 MAX
SELECT MAX(stu_age)AS 最大年龄 FROM students;
//查询最小年龄 MIN
SELECT MIN(stu_age)AS 最大年龄 FROM students;
//计算总和(年龄)SUM
SELECT SUM(stu_age)AS 年龄总和 FROM students;
//计算数据男性年龄总和
SELECT SUM(stu_age)AS 年龄总和 FROM students WHERE stu_gender='男';
//计算平均值(年龄)AVG
SELECT AVG(stu_age)AS 年龄平均值 FROM students;
//计算数据女性年龄平均值
SELECT AVG(stu_age)AS 年龄平均值 FROM students WHERE stu_gender='女';
日期函数:
//获取当前系统时间
SELECT NOW();
SELECT SYSDATE();
INSERT INTO students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
VALUES('20241001','张三','男',23,'18624170526','4880085218','2024-07-28 9:29:29');//正常的
//通过NOW()获取当前时间
INSERT INTO students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
VALUES('20241003','王五','男',25,'18624170528','4880085220',NOW());
//通过SYSDATE()获取当前时间
INSERT INTO students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
VALUES('20241002','李四','女',24,'18624170527','4880085219',SYSDATE());
字符串函数:
//拼接 使用CONCAT()将数据拼接后查询
SELECT CONCAT(stu_name,'-',stu_age) FROM students;
//转换 将字段的值转换为大写UPPER()
SELECT UPPER(stu_name)FROM students;
//转换 将字段的值转换为小写LOWER()
SELECT LOWER(stu_name)FROM students;
//截取 从指定列中截取部分显示 SUBTRING(列名,从第几位开始,截取几位)
SELECT stu_name,SUBSTRING(stu_tel,8,4)FROM student;
使用代码:
//使用或切换数据库(常用)
USE School;
//自动增长代码 一般加在主键后 建表时可以额外定义一个与数据无关的列做id 便于以后删改查
AUTO_INCREMENT //只保证唯一性 不保证连续性
CREATE TABLE stu(stu_id INT PRIMARY KEY AUTO_INCREMENT,stu_name VARCHAR(6) NOT NULL,stu_remark VARCHAR(100)
);
// 如果自动增长的数据因为删除 导致不连续 想恢复成连续状态 TRUNCATE
TRUNCATE TABLE students;//删除表中的数据 让自动增长从1开始
约束:
约束:限制 保证数据有效性 完整性 正确性
常见约束:
NOT NULL(非空) 数据不能为空
UNIQUE(唯一) 数据不能重复
FOREIGN KEY(外键) 两表之间的关联关系
PRIMARY KEY(主键) 数据不能为空也不能重复
主键:一般用在表的第一例 表里可以有多个主键
添加主键的第一种方式:
CREATE TABLE IF NOT EXISTS books (
book_isbn CHAR(4)PRIMARY KEY,
book_name VARCHAR(11)NOT NULL,
book_author VARCHAR(6)NOT NULL
);
//删除主键
ALTER TABLE students DROP PRIMARY KEY;
//修改 建表后添加主键约束 stu_num CHAR(4) 必须与表一致
ALTER TABLE books MODIFY book_isbn CHAR(4) PRIMARY KEY;
联合主键:
将数据表中的多列组合在一起设置成主键
外键约束:
数据于数据的四种关系:一对一,一对多,多对多,多对一
外键关联主键(顺序不能乱)
外键关联主键 类型一般为INT 如果为CHAR或者其他类型 数据类型与长度必须一致
CONSTRAINT KF_大写的外键表名_大写的主键表名 FOREIGN KEY(外键列名)
REFERENCES 表名(主键列名);
//在建表时关联主键
CREATE TABLE IF NOT EXISTS classes(class_id INT PRIMARY KEY AUTO_INCREMENT,class_name VARCHAR(40) NOT NULL,class_remark VARCHAR(200)
);
CREATE TABLE IF NOT EXISTS students(stu_num CHAR(8) PRIMARY KEY,stu_name VARCHAR(20) NOT NULL,stu_age INT NOT NULL,stu_gender CHAR(2) NOT NULL,cid INT,CONSTRAINT KF_STUDENTS_CLASSES FOREIGN KEY(cid) REFERENCES classes(class_id);
);
//建表后关联主键
ALTER TABLE students ADD CONSTRAINT KF_STUDENTS_CLASSES FOREIGN KEY(cid) REFERENCES students(class_id);
//删除外键约束
ALTER TABLE students DROP FOREIGN KEY KF_STUDENTS_CLASSES;
//级联关系
副表必须与主表里面没有关联的时候才可以删除
必须先解决关联 先删除副表中的数据 再删除主表中的数据
//在添加外键时 设置级联修改和级联删除
//1.先删除原来的外键
ALTER TABLE students DROP FOREIGN KEY FK_STUDENTS_CLASSES;
//2.重新添加外键 并设置级联修改和级联删除
ALTER TABLE students ADD CONSTRAINT FK_STUDENTS_CLASSES FOREIGN KEY(cid)
REFERENCES classes(class_id) ON UPDATE CASCADE ON DELETE CASCADE;
关键字:
WHERE(子句)后面跟条件 用于筛选满足特定的添加的数据 进行删除修改查询
数值类型:
大小 范围 类型 其他
整数型:
tinyint 1byte 有符号-128~127 无符号0~255 (特小型整数)(年龄)
smallint 2byte (16bit) -32768~32767 D-65535(小整数型)
mediumint 3byte -2^31~2^31-1 0~2^32-1 (中型整数)
int/integer 4byte (整数)
bigint 8byte (大型整数)
小数型:
float 4byte (单精度)
double 8byte (双精度)
decimal 第一参数+2 写法:decimal(10,2)表示数值一个有10位,小数位2位
字符串:
char 0~255 定长字符串 最多255个字符 当我们去指定数据表字段char 10个长度 没用到 会补\u000
varchar 0~65536 可变长度字符串 65536
二进制字符串:tinyblob(0~255),blob(0~65535),mediumbolb(0~1677215),longblob (0~4294967295)
文本数据(字符串):tinytext(0~255),text(0~65535),mediumtext(0~1677215),longtext(0~4294967295)
日期类型:
date 2022-02-26
time 21:56:50
year 2022
datetime 2022-02-26 21:56:59
timestamp 20220226 215659(时间戳)
条件关系运算符:
= 等于
!= 不等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
事物:
转帐案例:
CREATE DATABASE IF NOT EXISTS day06;
USE day06;
CREATE TABLE IF NOT EXISTS account(id INT PRIMARY KEY,uname VARCHAR(20) NOT NULL UNIQUE,money DOUBLE
);
INSERT INTO account(id,uname,money)VALUES(1,'张三',1000);
INSERT INTO account(id,uname,money)VALUES(2,'李四',1000);
SELECT * FROM account;
//mysql事物自动提交
//设置事物为手动提交
SET @@autocommit=0;//设置手动提交
SELECT @@autocommit;
UPDATE account SET money=money-100 WHERE uname='张三';
UPDATE account SET money=money+100 WHERE uname='李四';
ROLLBACK;//回滚
COMMIT;//手动永久提交 不可以回滚
JAVA连接数据库
JDBC
public class MainTest {public static void main(String[] args) {//jdbcConnection conn = null;Statement st = null;ResultSet rs = null;//jdbc必须提供驱动 jar包try {//注册驱动 com.mysql.jdbc.DriverDriverManager.registerDriver(new com.mysql.jdbc.Driver());//Class.forName("com.mysql.jdbc.Driver");//建立连接 协议+访问的数据库名字 用户名 root 用户名密码 123456conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?verifyServerCertificate=false&useSSL=false", "root", "123456");//跟数据库打交道 Statement 这个对象一定要写st = conn.createStatement();//执行查询st.executeQuery() //执行增删改 st.executeUpdate()String sql ="select * from t_stu";rs = st.executeQuery(sql);//返回一个结果集 是一块数据//需要一条一条的数据 要遍历while (rs.next()) {int id = rs.getInt("id");String uname = rs.getString("uname");String pwd = rs.getString("pwd");System.out.println("id=" + id + "\tuname=" + uname + "\tpwd=" + pwd);}} catch (SQLException e) {throw new RuntimeException(e);}finally{if(rs!=null){try {rs.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(st!=null){try {st.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(conn!=null){try {conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}}
}}
相关文章:
木舟0基础学习Java的第二十一天(数据库,MySQL,SQLyog)
数据库 数据库:按照数据结构来组织 存储数据的厂库 数据管理系统(Database Management System,DBMS):一套操作和管理数据库的软件 用于简历 使用 维护数据库 关系型数据库:采用关系模型作为数据组织方式 逻辑结构是一张二维表 由行和列组成…...
python-鼠标绘画线条程序
闲来无聊简单编写了一个绘图小程序。 主要思路 主要是基于Python中的内置模块turtle编写的,简单扩展了一下,通过绑定事件能够达到鼠标绘制、删除、存储已经绘制图案的线条这几个功能。 路径结构 -draw- define.py- main.py- myturtle.py使用 点住鼠…...
【Python实战】如何优雅地实现 PDF 去水印?
话接上篇,自动化处理 PDF 文档,完美实现 WPS 会员功能 小伙伴们更关心的是如何去除 PDF 中的水印~ 今天,就来分享一个超简单的 PDF 去水印方法~ 1. 原理介绍 在上一篇中,我们介绍了如何将 PDF 文档转换成图片,图片…...
Keysight(原Agilent) E4980AL 精密 LCR 表特性与技术指标
Keysight(原Agilent) E4980AL 精密 LCR 表为基础 LCR 表树立了行业标准,可在多个频率范围内提供更佳的精度、速度和通用性。E4980AL 结合了种类繁多的附件,适用于一般研发和生产环境中的各种元件和材料测量。也可通过频率升级而提升投资回报率。 Keysig…...
【运维】Redis主从复制 配置
【运维】Redis主从复制 配置 主库配置Master # 默认情况下,是 启用保护模式的,其他主机的客户端无法连接到 Redis 。当想要其他主机的客户端连接到 Redis 时,需要修改为 no 。protected-mode no 从库配置Slave # replicaof [master主机ip] …...
C++ 微积分 - 求导 - 自动微分(Automatic Differentiation)
C 微积分 - 求导 - 自动微分(Automatic Differentiation) flyfish 自动微分(Automatic Differentiation,简称 AD)是一种用于精确计算函数导数的技术。它结合了符号微分的准确性和数值微分的效率。自动微分的核心思想…...
面试题-每日5道
26.在 Queue 中 poll()和 remove()有什么区别? 相同点:都是删除第一个元素并返回。 不同点:如果没有元素poll()会返回null,而remove()会抛出NoSuchElementException异常 27.哪些集合类是线程安全的? Vector,Stock,Hashtable都是线程安全的&a…...
STM32卡死、跑飞如何调试确定问题
目录 前言 一、程序跑飞原因 二、调试工具 2.1Registers工具 2.2 Memory工具 2.3 Disassembly工具 2.4 Call Stack工具 三、找到程序跑飞位置 方式一、 方式二、 前言 我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行&#…...
代理模式和Spring MVC
Spring是一个分层的轻量级的开源Java框架。核心是IOC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程) AOP 面向切面 AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想&#x…...
深入理解Vue slot的原理
文章目录 前言为什么需要插槽作用域插槽插槽的原理总结 前言 插槽是Vue中一个重要的特性,它有很多种用法:默认插槽、具名插槽、作用域插槽。尤其作用域插槽,还有一堆特性,比如解构prop,解构prop的时候还可以进行属性名…...
git fetch作用与用法
目录 git fetch作用 git fetch用法 git fetch作用 git fetch 命令在 Git 版本控制系统中扮演着重要的角色。其主要作用是从远程仓库获取最新版本的项目文件,但不会自动合并或修改你当前的工作。这意味着,使用 git fetch 后,你需要手动合并…...
pycharm如何查看git历史版本变更信息
通过名字查看不同版本 查看版本不同地方...
【2.2 python中的变量】
2.2 python中的变量 在Python中,变量是存储数据值的容器。Python是一种动态类型语言,这意味着你不需要在声明变量时指定变量的类型;Python会根据你赋给变量的值自动确定其类型。下面我将详细介绍Python中的变量,包括保留字&#…...
Python软体中找出一组字符串的最长公共前缀:算法与实现
Python软体中找出一组字符串的最长公共前缀:算法与实现 在处理字符串数据时,寻找多个字符串之间的共同特征是一个常见的需求。特别是在文件名、URL、或其他文本数据中,找到最长公共前缀(Longest Common Prefix, LCP)可以帮助我们进行更高效的搜索和分类。本文将详细介绍如…...
git lfs使用(huggingface下载大模型文件)-教程记录
写的比较清楚的教程,用于之后有需求时查找用: https://blog.csdn.net/flyingluohaipeng/article/details/130788293...
1. 什么是操作系统
文章目录 1.1 从功能上来看操作系统1.2 硬件资源 1.1 从功能上来看操作系统 对用户来说,操作系统是一个控制软件,可以用来管理应用程序,它可以限制不同的程序来占用的资源。对内部的软件来说,操作系统是一个管理外设和分配资源的…...
数据科学 - 数据预处理 (数据清洗,结构化数据)
1. 前言 数据清洗与结构化数据在数据分析和机器学习项目中扮演着至关重要的角色。随着大数据时代的到来,数据的质量、准确性和可用性成为决定项目成功与否的关键因素。 数据清洗提高数据质量,保证数据集的一致性;促进数据分析与挖掘…...
基于SpringBoot+Vue的校车调度管理系统(带1w+文档)
基于SpringBootVue的校车调度管理系统(带1w文档) 基于SpringBootVue的校车调度管理系统(带1w文档) 如今,因为无线网相关技术的快速,尤其是在网上进行资源的上传下载、搜索查询等技术,以及信息处理和语言开发技术的进步,同时编程语…...
基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划(MATLAB代码)
一、无人机多目标优化模型 无人机三维路径规划是无人机在执行任务过程中的非常关键的环节,无人机三维路径规划的主要目的是在满足任务需求和自主飞行约束的基础上,计算出发点和目标点之间的最佳航路。 1.1路径成本 无人机三维路径规划的首要目标是寻找…...
opencascade AIS_Trihedron源码学习 绘制三轴坐标系
opencascade AIS_Trihedron 前言 //! 创建一个可选择的三轴坐标系 //! 该三轴坐标系包括一个原点,三个轴线和三个标签。 //! 标签的默认文本为 “X”, “Y”, “Z”。 //! 可以更改原点和任意轴线的颜色,箭头和标签的颜色也可以改变。 //! 可视化呈现可…...
【C++】C++应用案例-通讯录管理系统
目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四…...
使用Python自动批量提取增值税发票信息并导出为Excel文件
要批量提取增值税发票的关键信息并将其导出为 Excel 文件,可以使用 Python 脚本结合 pdfplumber(用于解析 PDF 内容)、pandas(用于处理数据并导出 Excel)等库来实现。以下是实现这一目标的详细步骤。 1. 环境设置 首…...
vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法
在使用vitis(2021.1) 过程中,有一个非常方便实用的功能,就是在函数或变量等源代码上通过右键菜单或快捷键F3、F4、CtrlAltH,也可以按住Ctrl键然后鼠标停留在函数名或变量名上,点击出现的链接,可以跳转到函数或变量的定…...
最佳HR软件指南:11款高效管理工具
文章介绍了11款人力资源管理工具:Moka、友人才、北森HRSaaS、同鑫eHR、i人事、红海eHR、BambooHR、Skuad、Hibob、OrangeHRM、Verint。 在选择人力资源管理软件时,选错不仅浪费时间和金钱,还会影响团队的工作效率和员工满意度。本文总结了11款…...
家长为孩子出国留学择校的四个步骤
如何为孩子选择最好的学校?无论您是选择公立或私立学校还是在家上学,无论您是否支付学费,都必须仔细规划。在为孩子选择学校的过程中,以下部分有供您考虑的问题。 写下对你来说最重要的五件事 在考虑选择学校时,您可…...
数据挖掘可以挖掘什么类型的模式?
一、挖掘频繁模式、关联和相关性 频繁模式(frequent pettern)是在数据中频繁出现的模式。 频繁项集一般是指频繁的在事务数据集中一起出现的商品的集合。 频繁出现的子序列,如顾客倾向于先买相机,再买内存卡这样的模式就是一个…...
JAVA中的隐式参数this
在Java中,this 关键字是一个非常重要的隐式参数,它代表当前对象的引用。通过 this,你可以访问类中的字段(属性)、方法以及构造函数中的参数(当参数名与字段名相同时,用于区分)。虽然…...
ThreadLocal 使用和详解避坑
在多线程编程中,每个线程都有自己的线程栈和线程本地存储。线程栈用于存储方法调用的信息,而线程本地存储则是每个线程私有的存储空间,用于存储线程的局部变量。ThreadLocal类提供了一种简单的方式来实现线程本地存储,它允许将线程…...
Python中使用类方法的返回值在其他方法中继续调用,return self进行链式调用
文章目录 return self进行链式调用继续思考,以下内容可以不看如果self中没有初始化valueself中定义其他变量,调用类方法外的函数 return self进行链式调用 在Python中,可以使用类方法的返回值在其他方法中继续调用。这通常通过返回类实例&am…...
基于IOT架构的数据采集监控平台!
LP-SCADA数据采集监控平台是蓝鹏测控推出的一款聚焦于工业领域的自动化数据采集监控系统, 助力数字工厂建设的统一监控平台。 为企业提供从下到上的完整的生产信息采集与集成服务,从而为企业综合自动化、工厂数字化及完整的"管控一体化”的解决方案…...
珠海网站策划公司/最新的域名网站
python十六进制字符串To assign a hexadecimal value in the string so that it can be printed as a string, we use \x that is known as Escape sequence”, it represents that given value is the hexadecimal value. 为了在字符串中分配一个十六进制值以便可以将其打印为…...
南宁网站建设专家/免费站推广网站2022
jQuery on()方法是官方推荐的绑定事件的一个方法。使用 on() 方法可以给将来动态创建的动态元素绑定指定的事件,通过本文给大家介绍jQuery on()绑定动态元素出现的问题小结,需要的朋友参考下jQuery on()方法是官方推荐的绑定事件的一个方法。使用 on() 方…...
网站制作价格表/东莞网站推广运营公司
新文章移至 http://cffile.sinaapp.com/?p22tomcat5.0版本的时候,由于context是直接配置在server.xml中的(最终是生成$CATALINA_HOME/conf /[enginename]/[hostname]目录下的应用名称.xml文件,启动顺序是按照目录下生成的应用名称的字典顺序…...
衢州建设职业学校网站/北京官网优化公司
今天早上在写一个.scala文件时,控制台一直出现这个错误。 原本以为这个错误是找不到URL地址,不能使用local[*]这种模式,后来发现这个错误的根本是在上一行,也就是: SparkContext: Error initializing SparkContext 原…...
毕业设计某网站开发的开题报告范文/网站友链查询接口
本文首发于我的博客:刘冲的博客 在阅读C项目(caffe)源码时,发现不少基类不仅把常规的成员函数定义成虚函数(virtual),也会把析构函数定义为虚函数,结合前面几节的介绍,稍…...
一个网站两个域名 seo/企业查询系统
记录下 分为两种 一般的情况和 使用只能指针(shared_ptr)的情况 如下图 传统的模式被注释掉了 传统的模式需要手动销毁占用内存 shared_ptr模式会自动释放内存 只能一种模式 注释:没有加锁 多线程情况下可能有问题 头文件 CPP文件 如何…...