Python学习路线 - Python高阶技巧 - SQL入门和实战

Python学习路线 - Python高阶技巧 - SQL入门和实战

    • SQL章节前言
      • 无处不在的SQL
    • 数据库介绍
      • 无处不在的数据库
      • 数据库如何存储数据
      • 数据库如何存储数据
      • 数据库管理系统(数据库软件)
      • 数据库和SQL的关系
    • Mysql的安装
      • Mysql的介绍
      • Mysql的版本
      • MySQL安装
      • 配置环境变量
    • Mysql的入门使用
      • 在命令提示符内使用MySQL
      • 使用图形化工具操作MySQL
      • DBeaver安装
      • DBeaver连接MySQL
    • SQL基础与DDL
      • SQL的概述
      • SQL语言的分类
      • SQL的语法特征
      • DDL - 库管理
      • DDL - 表管理
    • SQL - DML
      • DML
      • 数据插入INSERT
      • 数据删除DELETE
      • 数据更新UPDATE
    • SQL - DQL
      • 基础查询
        • 基础数据查询
        • 基础数据查询 - 过滤
      • 分组聚合
      • 排序分页
        • 结果排序
        • 结果分页限制
    • Python & Mysql
      • 基础使用
        • pymysql
        • 创建到Mysql的数据库链接
        • 执行SQL语句
      • 数据插入
        • commit提交
        • 自动commit
    • 综合案例
      • 案例需求
      • 数据内容
      • DDL定义
      • 实现步骤
      • 实现代码
        • data_define.py 数据定义的类
        • file_define.py 文件相关的类定义
        • main.py
        • 执行结果

SQL章节前言

无处不在的SQL

不管是何种开发语言,亦或是何种开发方向,SQL都是开发人员无法绕开的话题。
除了一门趁手的编程语言外,SQL语言也是开发人员人人必备的开发技能。
在这里插入图片描述
在这里插入图片描述

数据库介绍

无处不在的数据库

信息化社会,无处不在的就是数据。
在这里插入图片描述

编程语言可以归纳为,数据的计算一类。
那数据的存储呢?

数据库如何存储数据

我们先看看,生活中,如何以Excel组织数据的存储。
在这里插入图片描述
在这里插入图片描述

数据库如何存储数据

我们在来看看,数据库是如何组织数据的。
在这里插入图片描述

数据库管理系统(数据库软件)

那么如何实现这种数据形式的数据管理呢?
我们需要借助:数据库管理系统,也就是常说的数据库软件。
数据库软件是非常多的,常见的有:
在这里插入图片描述

数据库和SQL的关系

数据库是用来存储数据的,在这个过程中,会涉及到:

  • 数据的新增
  • 数据的删除
  • 数据的修改
  • 数据的查询
  • 数据库、数据表的管理

等等
而SQL语言,就是一种对数据库、数据进行操作、管理、查询的工具。

使用数据库软件去获得库->表->数据,这种数据组织、存储的能力
并借助SQL语言,完成对数据的增删改查等操作

总结
1.数据库是什么?有什么作用呢?
数据库就是指数据存储的库,作用就是组织数据并存储数据。
2.数据库如何组织数据呢?
按照:库 -> 表 -> 数据 三个层级进行组织
3.数据库软件是什么?我们学习哪种数据库软件呢?
数据库软件就是提供库->表->数据,这种数据组织形式的工具软件,也称之为数据库管理系统
常见的数据库软件有:Oracle、MySQL、SQL Server、PostgreSQL、SQLite,课程以MySQL软件为基础进行学习
4.数据库和SQL的关系是?
数据库(软件)提供数据组织存储的能力
SQL语句则是操作数据、数据库的工具语言

Mysql的安装

Mysql的介绍

  • MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于 Oracle 旗下产品。
  • MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,一般开发都选择 MySQL 作为数据库。

简单来说,MySQL是一个中小型的数据库,简单易用性能不错,在企业中频繁出现。
大多数开发人员都会和MySQL打交道,可以说是开发人员必须会使用的一款数据库软件。

Mysql的版本

针对不同的用户,MySQL分为两种不同的版本:
免费

  • MySQL Community Server
    社区版本,免费,但是Mysql不提供官方技术支持。
  • MySQL Cluster
    集群版,开源免费,可将几个MySQL Server封装成一个Server。

收费

  • MySQL Enterprise Edition
    商业版,该版本是收费版本,可以试用30天,官方提供技术支持
  • MySQL Cluster CGE
    高级集群版,需付费。

MySQL安装

下载地址:https://downloads.mysql.com/archives/installer
在这里插入图片描述
在这里插入图片描述

配置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将MySQL安装目录的bin文件夹的路径,复制进入
即可,通过cmd命令提示符,输入:
mysql -uroot -p
回车后输入密码即可:
在这里插入图片描述

Mysql的入门使用

在命令提示符内使用MySQL

MySQL安装好后,就可以简单的尝试使用它。
打开:命令提示符程序,输入:mysql -uroot -p,然后回车后输入密码,即可进入命令行环境
在这里插入图片描述
在MySQL的命令行环境下,可以通过:

  • show databases; 查看有哪些数据库
  • use 数据库名 使用某个数据库
  • show tables 查看数据库内有哪些表
  • exit 退出MySQL的命令行环境

等基础命令。

这些命令就是后面我们要学习的SQL语言。

使用图形化工具操作MySQL

使用命令提示符进行MySQL的操作,不是太方便,一般开发者都会使用第三方的图形化工具进行使用。
可用于MySQL的图形化工具非常多,课程使用跨平台、开源、免费的图形化工具:DBeaver

下载地址:https://dbeaver.io/download
我们选择免费的社区版(DBeaver Community)
选择适用自己电脑系统的安装包下载即可。
在这里插入图片描述

DBeaver安装

安装非常简单,打开安装包,选择中文,双击一路下一步即可:
在这里插入图片描述
在这里插入图片描述

DBeaver连接MySQL

打开DBeaver软件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SQL基础与DDL

SQL的概述

  • SQL全称:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言。
    SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。

  • 经过多年发展,SQL已成为数据库领域统一的数据操作标准语言,可以说几乎市面上所有的数据库系统都支持使用SQL语言来操作

简单来说,SQL语言就是操作数据库的专用工具。

SQL语言的分类

由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。
所以,操作数据库的SQL语言,也基于功能,可以划分为4类:

  • 数据定义:DDL(Data Defintion Language)
    • 库的创建删除、表的创建删除等
  • 数据操作:DML(Data Manipulation Language)
    • 新增数据、删除数据、修改数据等
  • 数据控制:DCL(Data Control Language)
    • 新增用户、删除用户、密码修改、权限管理等
  • 数据查询:DQL(Data Query Language)
    • 基于需求查询和计算数据

SQL的语法特征

在学习DDL、DQL等之前,我们先来了解SQL的语法特征。

  • SQL语言,大小写不敏感
  • SQL可以单行或多行书写,最后一;号结束
  • SQL支持注释:
    • 单行注释:–注释内容(–后面一定要有一个空格)
    • 单行注释:#注释内容(#后面可以不加空格,推荐加上)
    • 多行注释:/* 注释内容 */

DDL - 库管理

现在来简单学习一下数据库管理的相关SQL
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SQL示例:

show databases;
create database mry01 charset 'utf8';
drop database mry01;

DDL - 表管理

在这里插入图片描述
在这里插入图片描述
注意:需要先选择数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结
1.SQL语言是什么?有什么作用?
SQL:结构化查询语言,用于操作数据库,通用于绝大多数的数据库软件
2.SQL的特征

  • 大小写不敏感
  • 需以;号结尾
  • 支持单行、多行注释
    3.SQL语言的分类
  • DDL数据定义
  • DML数据操作
  • DCL数据控制
  • DQL数据查询

4.DDL中数据库管理的语法
在这里插入图片描述

5.DDL中数据表管理的语法
在这里插入图片描述

SQL示例:

use car_booking;

show tables;

create table student(
    id int,
    name varchar(20),
    age int
);

drop table student;

SQL - DML

DML

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。

关键字:

  • 插入INSERT

  • 删除DELETE

  • 更新UPDATE

在这里插入图片描述

数据插入INSERT

基础语法:
在这里插入图片描述

示例:
在这里插入图片描述
注意:
1.插入字符串数据,需要用单引号包围
2.插入全部列的时候,列的列表可以省略

SQL示例:

insert into student(id) values (1), (2), (3);

insert into student(id, name, age) values (4, '周杰伦', 31), (5, '林俊杰', 33);

数据删除DELETE

基础语法:
在这里插入图片描述
在这里插入图片描述

演示:
在这里插入图片描述

SQL示例:

delete from student where id = 1;

delete from student where id > 6;

delete from student where age = 33;

delete from student;

数据更新UPDATE

基础语法:
在这里插入图片描述
在这里插入图片描述

演示:
在这里插入图片描述

SQL示例:

update student set name = '张学友' where id = 4;

update student set name = '王力宏';

总结
1.DML插入、删除、更新的语法
在这里插入图片描述
在这里插入图片描述
2.注意事项
字符串的值,出现在SQL语句中,必须要用单引号包围起来

SQL - DQL

基础查询

基础数据查询

在SQL中,通过SELECT关键字开头的SQL语句,来进行数据的查询
基础语法:
在这里插入图片描述
含义就是:
从(FROM)表中,选择(SELECT)某些列进行展示

演示:
在这里插入图片描述

SQL示例:

select id, name from student;

select id, name, age from student;

select id, name, age, gender  from student;

select * from student;
基础数据查询 - 过滤

查询也可以带有指定条件,语法如下:
在这里插入图片描述
在这里插入图片描述

演示:
在这里插入图片描述

SQL示例:

select * from student where gender = '男';

总结
1.基础查询的语法
在这里插入图片描述

2.过滤查询的语法
在这里插入图片描述

分组聚合

分组聚合应用场景非常多,如:统计班级中,男生和女生的人数。
这种需求就需要:

  • 按性别分组
  • 统计每个组的人数

这就称之为:分组聚合。

基础语法:
在这里插入图片描述
演示:
在这里插入图片描述
注意:SELECT中,除了聚合函数外,GROUP BY 了哪个列,哪个列在能出现在SELECT中。

SQL示例:

select gender,avg(age) from student group by gender;

select gender,avg(age), sum(age), min(age), max(age), count(*) from student group by gender;

总结

1.分组聚合的语法是?
在这里插入图片描述

2.分组聚合的注意事项?
GROUP BY中出现了哪个列,哪个列才能出现在SELECT中的非聚合

排序分页

结果排序

可以对查询的结果,使用ORDER BY关键字,指定某个列进行排序,语法:
在这里插入图片描述

演示:
在这里插入图片描述

SQL示例:

select * from student where age > 20 order by age asc;

select * from student where age > 20 order by age desc;
结果分页限制

同样,可以使用LIMIT关键字,对查询结果进行数量限制或分页显示,语法:
在这里插入图片描述

演示:
在这里插入图片描述

SQL示例:

select * from student limit 5;
select * from student limit 10, 5;
select age, count(*) from student where age > 20 group by age order by age limit 3;

总结
1.排序和分页限制的语法是?
在这里插入图片描述

2.截止到目前学习到的关键字,需注意:

  • WHERE、GROUP BY、ORDER BY、 LIMIT均可按需求省略
  • SELECT 和 FROM 是必写的
  • 执行顺序:
    FROM -> WHERE -> GROUP BY和聚合函数 -> SELECT -> ORDER BY -> LIMIT

Python & Mysql

基础使用

pymysql

除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。
在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作。

安装:

pip install pymysql

在这里插入图片描述

创建到Mysql的数据库链接

代码如下:
在这里插入图片描述

执行SQL语句

演示,执行非查询性质的SQL语句:
在这里插入图片描述

执行查询性质的SQL语句:
在这里插入图片描述

  • 游标对象使用fetchall()方法,得到的是全部的查询结果,是一个元组
  • 这个元组内部嵌套了元组,嵌套的元组就是一行查询结果

SQL示例:

"""
演示Python pymysql库的基础操作
"""
from pymysql import Connection
# 构建到MySql数据库的链接
conn = Connection(
    host="localhost",   # 主机名
    port=3306,          # 端口
    user="root",        # 账户
    password="muriyue"  # 密码
)

print(conn.get_server_info())
# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
# 选择数据库
conn.select_db("test")
# 执行查询性质SQL
# cursor.execute("create table test_pymsql2(id int);")
cursor.execute("select * from student")
results = cursor.fetchall()
print(results)
for r in results:
    print(r)

# 关闭链接
conn.close()

执行结果:

D:\python\python-learn\venv\Scripts\python.exe D:\python\python-learn\模块\01_pymysql入门.py 
5.5.51
((10001, '周杰轮', 31, '男'), (10002, '王力鸿', 33, '男'), (10003, '蔡依琳', 35, '女'), (10004, '林志灵', 36, '女'), (10005, '刘德滑', 33, '男'), (10006, '张大山', 10, '男'), (10007, '刘志龙', 11, '男'), (10008, '王潇潇', 33, '女'), (10009, '张一梅', 20, '女'), (10010, '王一倩', 13, '女'), (10011, '陈一迅', 31, '男'), (10012, '张晓光', 33, '男'), (10013, '李大晓', 15, '男'), (10014, '吕甜甜', 36, '女'), (10015, '曾悦悦', 31, '女'), (10016, '刘佳慧', 21, '女'), (10017, '项羽凡', 23, '男'), (10018, '刘德强', 26, '男'), (10019, '王强强', 11, '男'), (10020, '林志慧', 25, '女'))
(10001, '周杰轮', 31, '男')
(10002, '王力鸿', 33, '男')
(10003, '蔡依琳', 35, '女')
(10004, '林志灵', 36, '女')
(10005, '刘德滑', 33, '男')
(10006, '张大山', 10, '男')
(10007, '刘志龙', 11, '男')
(10008, '王潇潇', 33, '女')
(10009, '张一梅', 20, '女')
(10010, '王一倩', 13, '女')
(10011, '陈一迅', 31, '男')
(10012, '张晓光', 33, '男')
(10013, '李大晓', 15, '男')
(10014, '吕甜甜', 36, '女')
(10015, '曾悦悦', 31, '女')
(10016, '刘佳慧', 21, '女')
(10017, '项羽凡', 23, '男')
(10018, '刘德强', 26, '男')
(10019, '王强强', 11, '男')
(10020, '林志慧', 25, '女')

进程已结束,退出代码为 0

总结

1.Python中使用什么第三方库来操作MySQL?如何安装?
使用第三方库为:pymysql
安装:pip install pymysql
2.如何获取链接对象?

  • from pymysql import Connection 导包
  • Connection(主机,端口,账户,密码)即可得到链接对象
  • 链接对象.close() 关闭和MySQL数据库的连接

3.如何执行SQL查询
通过连接对象调用cursor()方法,得到游标对象

  • 游标对象.execute()执行SQL语句
  • 游标对象.fetchall()得到全部的查询结果封装入元组内

数据插入

commit提交

如图所示代码,经过执行是无法将数据插入到数据表student中的。
在这里插入图片描述

这是为什么呢?

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码"确认"这种更改行为。

通过链接对象.commit()即可确认此行为。

代码示例:

"""
演示使用pymysql库进行数据插入的操作
"""
from pymysql import Connection

# 构建到Mysql数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP)
    port=3306,         # 端口
    user="root",       # 账户
    password="muriyue" # 密码
)

# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
# 选择数据库
conn.select_db("test")
# 执行SQL
cursor.execute("insert into student values(10111, '周杰伦', 31, '男')")
# 通过commit确认
conn.commit()
# 关闭链接
conn.close()

执行结果:
在这里插入图片描述

自动commit

如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性。
在这里插入图片描述

如图代码进行设置,即可自动提交无需手动commit了。

代码示例:

"""
演示使用pymysql库进行数据插入的操作
"""
from pymysql import Connection

# 构建到Mysql数据库的链接
conn = Connection(
    host="localhost",   # 主机名(IP)
    port=3306,          # 端口
    user="root",        # 账户
    password="muriyue", # 密码
    autocommit=True     # 自动提交(确认)
)

# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
# 选择数据库
conn.select_db("test")
# 执行SQL
cursor.execute("insert into student values(10112, '林俊杰', 31, '男')")
# 通过commit确认
# conn.commit()
# 关闭链接
conn.close()

执行结果:
在这里插入图片描述

总结
1.什么是commit提交?
pymysql库在执行对数据库有修改操作的行为时,是需要通过链接对象的commit成员方法来进行确认的。
只有确认的修改,才能生效。
2.如何自动提交呢?
在这里插入图片描述

综合案例

案例需求

我们使用<<面向对象>>章节案例中的数据集,完成使用Python语言,读取数据,并将数据写入Mysql的功能。
在这里插入图片描述

数据内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1月份数据是普通文本,使用逗号分割数据记录,从前到后分别是(日期,订单id,销售额,销售省份)
  • 2月份数据是JSON数据,同样包含(日期,订单id,销售额,销售省份)

DDL定义

  • 本次需求开发我们需要新建一个数据库来使用,数据库名称:py_sql
  • 基于数据结构,可以得到建表语句:
    在这里插入图片描述
    SQL示例:
create database py_sql charset utf8;

use py_sql;

create table orders(
    order_data date,
    order_id varchar(255),
    money int,
    province varchar(10)
);

执行结果:
在这里插入图片描述

实现步骤

在这里插入图片描述

实现代码

data_define.py 数据定义的类
"""
数据定义的类
"""
class Record:

    def __init__(self, date, order_id, money, province):
        self.date = date          # 订单日期
        self.order_id = order_id  # 订单ID
        self.money = money        # 订单金额
        self.province = province  # 销售省份

    def __str__(self):
        return f"{self.date}, {self.order_id}, {self.money}, {self.province}"

    def to_json(self):
        d = {"date": self.date, "order_id": self.order_id, "money": self.money, "province": self.province}
        import json
        return json.dumps(d)
file_define.py 文件相关的类定义
"""
文件相关的类定义
"""
import json

from data_define import Record

# 先定义一个抽象类用来做顶层设计,确定有哪些功能需要实现
class FileReader:
    def read_data(self) -> list[Record]:
        # 读取文件的数据,读到的每一条数据都转换为Record对象,将它们都封装到list内返回即可
        pass

class TextFileReader(FileReader):
    def __init__(self, path):
        self.path = path   # 定义成员变量记录文件的路径

    # 复写(实现抽象方法)父类的方法
    def read_data(self) -> list[Record]:
        f = open(self.path, "r", encoding="UTF-8")

        record_list: list[Record] = []
        for line in f.readlines():
            line = line.strip()  # 消除读取到的每一行数据中的\n
            data_list = line.split(",")
            record = Record(data_list[0], data_list[1], data_list[2], data_list[3])
            record_list.append(record)

        f.close()
        return record_list

class JsonFileReader(FileReader):
    def __init__(self, path):
        self.path = path  # 定义成员变量记录文件的路径

    def read_data(self) -> list[Record]:
        f = open(self.path, "r", encoding="UTF-8")

        record_list: list[Record] = []
        for line in f.readlines():
            data_dict = json.loads(line)
            record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])
            record_list.append(record)

        f.close()
        return record_list


if __name__ == '__main__':
    text_file_reader = TextFileReader("D:/yuancheng/python/2011年1月销售数据.txt")
    json_file_reader = JsonFileReader("D:/yuancheng/python/2011年2月销售数据JSON.txt")
    list1 = text_file_reader.read_data()
    list2 = json_file_reader.read_data()

    for l in list1:
        print(l)

    for l in list2:
        print(l)

main.py
"""
SQL 综合案例,读取文件,写入Mysql数据库中
"""
from file_define import TextFileReader, JsonFileReader
from data_define import Record
from pymysql import Connection

text_flie_reader = TextFileReader("D:/yuancheng/python/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:/yuancheng/python/2011年2月销售数据JSON.txt")

jan_data: list[Record] = text_flie_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()

# 将2个月份的数据合并为1个list来存储
all_data: list[Record] = jan_data + feb_data

# 构建MySql链接对象
conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="muriyue",
    autocommit=True
)

# 获得游标对象
cursor = conn.cursor()

# 选择数据库
conn.select_db("py_sql")

# 组织SQL语句
for record in all_data:
    sql = f"insert into orders(order_data, order_id, money, province) " \
    f"values('{record.date}', '{record.order_id}',{record.money}, '{record.province}')"

    print(sql)
    # 执行SQL语句
    cursor.execute(sql)

# 关闭MySql链接对象
conn.close()

执行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6-2、T型加减速计算简化【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍简化T型加减速计算过程&#xff0c;使其适用于单片机数据处理。简化内容包括浮点数转整型数计算、加减速对称处理、预处理计算 一、浮点数转整型数计算 根据上一节内容已知 常用的晶振大小…

JVM 性能调优 - 四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

一个冷门的js加密逆向分析

先上加密代码供各位先看为敬 (function(){function j2f6c82(ve7deb){var i86905"VPfaI5H|Nc]$^rhn1B8dR.w/u-4!ZetJ?XFM2SY(&sbjlW6GEmAd[L0i,;yx%qozC9U_~g37OkKTpvQD:";var z1a52da8"4H_&|GNcEon:B2-?h]lx.(gkzOdA3eL,9;myV8bJwriRSt6sX75Fvu^p0Ij…

Linux-3进程概念(一)

1.冯诺伊曼结构 1.1 冯诺依曼结构的概念 冯诺依曼结构&#xff0c;又称为普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置&#xff0c;因此程序指令和数据的宽度相同&…

日历功能——C语言

实现日历功能&#xff0c;输入年份月份&#xff0c;输出日历 #include<stdio.h>int leap_year(int year) {if(year % 4 0 && year % 100 ! 0 || year % 400 0){return 1;}else{return 0;} }int determine_year_month_day(int *day,int month,int year) {if(mo…

【C++】构造函数、初始化列表,析构函数,拷贝构造函数,运算符重载

注&#xff1a;本博客图片来源于学习笔记: 学习笔记https://gitee.com/box-he-he/learning-notes 完整思维导图请前往该博主码云下载。 目录 注&#xff1a;本博客图片来源于学习笔记: 学习笔记https://gitee.com/box-he-he/learning-notes 完整思维导图请前往该博主码云下载…

带你实现用自己域名打开Tomcat

文章目录 Tomcat1.1、Tomcat 下载1.2、Tomcat 文件图解1.3、 启动或关闭 Tomcat1.3.1、 启动1.3.2、 关闭程序2.1、 修改端口号2.2、修改主机名称Tomcat 1.1、Tomcat 下载 首先去Tomcat 官网下载找到我们需要下载的版本 1.2、To

PKI - 02 对称与非对称密钥算法

文章目录 概述对称密钥算法凯撒密码优点缺点 非对称密钥算法工作原理优点缺点 非对称密钥的的用途一&#xff1a; 一种简单而优雅的“混合加密”解决方案加密解密 非对称密钥的的用途二&#xff1a; 数字签名工作原理工作示意图 扩展 DSA vs RSA 概述 对称密钥算法和非对称密钥…

jvm体系结构

一、Jvm 的介绍 1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型 JVM运行时内存 共享内存区 线程内存区 3.1、共享内存区 共享内存区 持久带(方法区 其他) 堆(Old Space Young Space(den S0 S1)) 持久代&#xff1a; JVM用持久带&#xff08;Permanent Space&…

使用CICFlowMeter 实现对pcap文件的特征提取【教程】

使用CICFlowMeter 实现对pcap文件的特征提取【教程】 针对现有的关于CICFlowMeter 的使用教程不够全面&#xff0c;一些细节没有展示&#xff0c;我将结合网络上的相关资料和实际的经历&#xff0c;提供一些经验和建议。 configuration information --------------- Windows…

污水处理设备数据分析:潜在市场容量高达1000亿

随着国家可再生能源激励政策和中长期发展规划的不断贯彻落实&#xff0c;一些大型能源投资公司、房地产开发商、装备制造龙头企业和物流运营商瞄准了污水处理设备产业的巨大潜在市场&#xff0c;纷纷加入到了污水处理设备建设的行列。我国污水处理设备行业发展重点已从农户自用…

时间序列之趋势

什么是趋势&#xff1f; 在时间序列中&#xff0c;趋势成分表示序列均值持续的、长期的变化。趋势是一个序列中移动最慢的部分&#xff0c;但却代表最重要的时间尺度。在产品销售的时间序列中&#xff0c;随着越来越多的人逐年了解该产品&#xff0c;市场扩张就可能会产生增长…

JavaScript ATM取款机

①&#xff1a;循环的时候&#xff0c;需要反复提示输入框&#xff0c;所以提示框写到循环里面 ②&#xff1a;退出的条件是用户输入了 4&#xff0c;如果是4&#xff0c;则结束循环&#xff0c;不在弹窗 ③&#xff1a;提前准备一个金额预先存储一个数额 ④&#xff1a;取钱…

【敏感词】敏感词检测功能v1.1.0版本正式上线

背景 为了解决系统发布信息时人工审核成本高的问题&#xff0c;开发一个敏感词检测系统。该系统能够自动检测用户输入的内容中是否包含敏感词&#xff0c;从而减少不合规内容的发布&#xff0c;降低人工审核成本。通过实施这个系统&#xff0c;可以提高信息发布的效率和准确性…

文献速递:肿瘤分割---- 优先注意网络,用于医学图像中多病变分割

文献速递&#xff1a;肿瘤分割---- 优先注意网络&#xff0c;用于医学图像中多病变分割 Title 题目 Prior Attention Network for Multi-Lesion Segmentation in Medical Images 优先注意网络&#xff0c;用于医学图像中多病变分割 Abstract 摘要 —The accurate segmen…

【C++】win11,OpenCV安装教程(VS2022)

1.下载 首先进入官网&#xff0c;下载对应的安装包&#xff0c;苹果系统就选IOS pack&#xff0c;微软系统就选Windows 下载地址&#xff1a;Releases - OpenCV 不方便外网下载的话可以下载我分享的百度网盘资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1lV7l…

学生信息|基于Springboot的学生信息管理系统设计与实现(源码+数据库+文档)

学生信息管理系统目录 目录 基于Springboot的学生信息管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、课程管理 3、公告信息管理 4、公告类型管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、…

阿里资深摸鱼测试工程师推荐——Web自动化测试学会这一招,下班早一小时

前 言 大家都知道&#xff0c;我们在通过 Selenium 执行 Web 自动化测试时&#xff0c;每次都需要启动/关闭浏览器&#xff0c;如果是多线程执行还会同时打开多个&#xff0c;比较影响工作的正常进行。那有没有办法可以不用让浏览器的自动化执行干扰我们的工作呢&#xff1f; …

seatunnel数据集成(一)简介与安装

seatunnel数据集成&#xff08;一&#xff09;简介与安装seatunnel数据集成&#xff08;二&#xff09;数据同步seatunnel数据集成&#xff08;三&#xff09;多表同步seatunnel数据集成&#xff08;四&#xff09;连接器使用 1、背景 About Seatunnel | Apache SeaTunnel …

【Spring基础】从0开始学习Spring(2)

前言 在上篇文章&#xff0c;我已经讲了Spring中最核心的知识点&#xff1a;IoC&#xff08;控制反转&#xff09;以及DI&#xff08;依赖注入&#xff09;。这篇文章&#xff0c;我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点&#xff0c;因此&#xff…
最新文章