当前位置: 首页 > news >正文

『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询

文章目录

    • 📂 Create(创建/新增)
      • 📌全列插入与指定列插入📌
      • 📌单行数据插入与多行数据插入📌
      • 📌插入数据否则更新📌
      • 📌数据的替换📌
    • 📂 Retrieve(查询)
      • 📌SELECT语句📌
        • 全列查询 📨
        • 指定列查询 📨
        • 查询字段为表达式 📨
        • 查询结果取别名 📨
        • 去重 📨
      • 📌where条件📌
      • 📌比较运算符📌
      • 📌逻辑运算符📌
      • 📌结果排序📌
      • 📌筛选分页结果📌


📂 Create(创建/新增)

对于表内数据的创建无非就是对数据的插入;

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] ...

存在一张表为:

mysql> create table if not exists stu(-> id int(2) unsigned zerofill primary key comment'id并设置主键约束',-> sn int(5) unsigned zerofill not null unique comment'学号',-> name varchar(20) not null comment'姓名',-> email varchar(32) null comment'邮箱'-> );
Query OK, 0 rows affected (0.00 sec)mysql> desc stu;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type                     | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| id    | int(2) unsigned zerofill | NO   | PRI | NULL    |       |
| sn    | int(5) unsigned zerofill | NO   | UNI | NULL    |       |
| name  | varchar(20)              | NO   |     | NULL    |       |
| email | varchar(32)              | YES  |     | NULL    |       |
+-------+--------------------------+------+-----+---------+-------+

📌全列插入与指定列插入📌

以该表为例,若是需要为该表插入数据,插入数据的方式分为全列插入指定列插入;

  • 全列插入

    全列插入指的是在插入数据时需要插入表中所有的字段;
    即表中有几个字段就需要根据字段个数与字段要求插入对应的数据;

    mysql> insert into stu values(1,1,'Lihua','123456@xx.com'); #全列插入
    Query OK, 1 row affected (0.00 sec)mysql> select * from stu;
    +----+-------+-------+---------------+
    | id | sn    | name  | email         |
    +----+-------+-------+---------------+
    | 01 | 00001 | Lihua | 123456@xx.com |
    +----+-------+-------+---------------+
    1 row in set (0.00 sec)
    

    在默认的插入中使用的即为全列插入,在全列插入时values前不需要使用()来指明需要插入 的字段,只需要在values后使用()按照字段顺序插入对应数据即可;
    语法:

    insert [into] table_name values (value_list) [, (value_list)] ...
    

    其中带[]的为可省略;

  • 指定列插入

    指定列插入,顾名思义是需要指定所插入的字段进行插入;

    mysql> insert into stu (id,name,sn)value(2,'Zhangqian',2);#指定列插入
    Query OK, 1 row affected (0.00 sec)mysql> select * from stu;
    +----+-------+-----------+---------------+
    | id | sn    | name      | email         |
    +----+-------+-----------+---------------+
    | 01 | 00001 | Lihua     | 123456@xx.com |
    | 02 | 00002 | Zhangqian | NULL          |
    +----+-------+-----------+---------------+
    2 rows in set (0.00 sec)
    

    如该段代码所示,这段代码演示了如何使用指定列插入,插入数据时在values前使用()指定了需要插入数据的字段,在插入数据时根据所指定字段的顺序以及对应的要求对表进行数据的插入;
    语法:

     insert [into] table_name [(column [, column] ...)/*指定列*/]values (value_list) [, (value_list)] ...
    

📌单行数据插入与多行数据插入📌

无论是全列插入还是指定列插入都能进行对应的单行数据与多行数据插入;
这表示在MySQL中对于各种条件的混用是十分灵活的;

  • 单行数据插入

    单行数据插入即在解释全列插入与指定列插入所使用的数据插入;
    mysql> insert into stu values(1,1,'Lihua','123456@xx.com'); #单行数据插入
    这个代码中为什么叫做单行数据插入?
    在MySQL中我们将字段称之为列,对应的行即为对应的一组数据;
    这里的values(1,1,'Lihua','123456@xx.com')即为插入一行数据,该行数据根据对应的字段如上;

  • 多行数据插入

    而要进行多行数据插入则可以直接使用,(value_list)来对数据进行追加;
    示例:(这里以全列插入为例,指定列插入不再作示范)

    mysql> insert into stu values(3,3,'Liqiang','112233'),(4,4,'Zhangwu','223344'),(5,5,'Liuba','445566');
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0mysql> select * from stu;
    +----+-------+-----------+---------------+
    | id | sn    | name      | email         |
    +----+-------+-----------+---------------+
    | 01 | 00001 | Lihua     | 123456@xx.com |
    | 02 | 00002 | Zhangqian | NULL          |
    | 03 | 00003 | Liqiang   | 112233        |
    | 04 | 00004 | Zhangwu   | 223344        |
    | 05 | 00005 | Liuba     | 445566        |
    +----+-------+-----------+---------------+
    5 rows in set (0.00 sec)
    

📌插入数据否则更新📌

INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...

插入数据否则更新这个是为了应对当在插入数据时发生的主键冲突或者唯一键冲突
当插入数据时发生主键冲突或者唯一键冲突时使用这个语法时将会将原本的数据删除并以新的数据进行插入并替换该数据;
以该表为例:

+----+-------+-----------+---------------+
| id | sn    | name      | email         |
+----+-------+-----------+---------------+
| 01 | 00001 | Lihua     | 123456@xx.com | 
| 02 | 00002 | Zhangqian | NULL          |
| 03 | 00003 | Liqiang   | 112233        |
| 04 | 00004 | Zhangwu   | 223344        |
| 05 | 00005 | Liuba     | 445566        |
+----+-------+-----------+---------------+
mysql> show create table stu\G
*************************** 1. row ***************************Table: stu
Create Table: CREATE TABLE `stu` (`id` int(2) unsigned zerofill NOT NULL COMMENT 'id并设置主键约束',`sn` int(5) unsigned zerofill NOT NULL COMMENT '学号',`name` varchar(20) NOT NULL COMMENT '姓名',`email` varchar(32) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`),UNIQUE KEY `sn` (`sn`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

从上面的代码可以看出其中id字段设有主键约束,sn字段设有唯一键约束;
在不使用替换的语法前对其进行插入数据,且人为的触发其中一个约束冲突;

#主键冲突
mysql> insert into stu values(5,6,'Lianhua','22222');
ERROR 1062 (23000): Duplicate entry '05' for key 'PRIMARY'#唯一键冲突
mysql> insert into stu values(6,5,'Lianhua','22222');
ERROR 1062 (23000): Duplicate entry '00005' for key 'sn'

当发生冲突时使用语法使其完成当发生键值冲突进行替换;

mysql> insert into stu values(5,6,'Lianhua','22222') -> on duplicate key update id = 6,sn = 6,name ='LIANHUA',email='22222';
Query OK, 2 rows affected (0.00 sec)mysql> select * from stu;
+----+-------+-----------+---------------+
| id | sn    | name      | email         |
+----+-------+-----------+---------------+
| 01 | 00001 | Lihua     | 123456@xx.com |
| 02 | 00002 | Zhangqian | NULL          |
| 03 | 00003 | Liqiang   | 112233        |
| 04 | 00004 | Zhangwu   | 223344        |
| 06 | 00006 | LIANHUA   | 22222         | #->已经发生了替换
+----+-------+-----------+---------------+

从上面的操作可以看出原来的其中一个字段为:
| 05 | 00005 | Liuba | 445566 |
在这次插入失败后进行了替换,替换为了:
| 06 | 00006 | LIANHUA | 22222 |
不仅如此,在替换成功时也有对应的提示:
Query OK, 2 rows affected (0.00 sec)
在MySQL中以该方式进行数据插入时,会有对应提示:

-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,并且数据已经被更新

📌数据的替换📌

数据的替换类比于上一个插入数据否则更新;
数据的替换真正的意义上是:

  • 若是发生主键冲突或者唯一键冲突,则删除原数据再进行插入;
  • 若是未发生主键冲突也未发生唯一键冲突,则直接插入数据;
    对应的语法即为INSERT INTO变为REPLACE INTO;
mysql> replace into stu values(5,6,'Lianhua','22222');
Query OK, 2 rows affected (0.00 sec)

📂 Retrieve(查询)

在数据库中查询是一个非常频繁的工作,需要根据不同的场合以及不同的条件进行查找;

+----+---------+---------+------+---------+
| id | name    | chinese | math | english |
+----+---------+---------+------+---------+
|  1 | Lihua   |      67 |   88 |      90 |
|  2 | Liming  |      57 |   58 |      70 |
|  3 | Zhaolao |      66 |   80 |      47 |
|  4 | Wu      |      76 |   70 |      47 |
|  5 | Wuqi    |      88 |   43 |      80 |
|  6 | Liqiang |      89 |   92 |      90 |
|  7 | Qinsu   |      90 |   74 |      67 |
|  8 | Zhaoli  |      54 |   74 |     100 |
+----+---------+---------+------+---------+

📌SELECT语句📌

在MySQL中SELECT语句是一个高频语句;
其功能可以根据条件对表数据进行查询;
其查询不单单能对数据,还能对表达式、函数等等…

mysql> select 1+1;
+-----+
| 1+1 |
+-----+
|   2 |
+-----+
1 row in set (0.00 sec)

全列查询 📨

在MySQL中*符号代表通配符;
SELECT * FROM table_name;
该句指令即表示查询表中所有字段(列);
以该中方式即可以打印出表中的所有字段的数据;

mysql> select * from Point;
+----+---------+---------+------+---------+
| id | name    | chinese | math | english |
+----+---------+---------+------+---------+
|  1 | Lihua   |      67 |   88 |      90 |
|  2 | Liming  |      57 |   58 |      70 |
|  3 | Zhaolao |      66 |   80 |      47 |
|  4 | Wu      |      76 |   70 |      47 |
|  5 | Wuqi    |      88 |   43 |      80 |
|  6 | Liqiang |      89 |   92 |      90 |
|  7 | Qinsu   |      90 |   74 |      67 |
|  8 | Zhaoli  |      54 |   74 |     100 |
+----+---------+---------+------+---------+

指定列查询 📨

指定列查询,顾名思义就是指定对应的字段进行查询;
语句:SELECT 字段1,字段2... FROM table_name;
示例:

mysql> select name,chinese from Point;
+---------+---------+
| name    | chinese |
+---------+---------+
| Lihua   |      67 |
| Liming  |      57 |
| Zhaolao |      66 |
| Wu      |      76 |
| Wuqi    |      88 |
| Liqiang |      89 |
| Qinsu   |      90 |
| Zhaoli  |      54 |
+---------+---------+

查询字段为表达式 📨

SELECT不仅能查询表中的字段,也能查询表达式;
示例:

mysql> select name,chinese,6 from Point;
+---------+---------+---+
| name    | chinese | 6 |
+---------+---------+---+
| Lihua   |      67 | 6 |
| Liming  |      57 | 6 |
| Zhaolao |      66 | 6 |
| Wu      |      76 | 6 |
| Wuqi    |      88 | 6 |
| Liqiang |      89 | 6 |
| Qinsu   |      90 | 6 |
| Zhaoli  |      54 | 6 |
+---------+---------+---+

在该次查询中查询的除了字段以外还查询了一个常量表达式;


查询结果取别名 📨

当一个查询的字段由一个较为复杂的表达式合成时,可以将该表达式使用as将其改名;
需要注意的是,在SELECT查询为结果的字段进行改名时,这个操作一般是靠后的,即将数据处理完后将其打印时才能将其进行改名,所以不能先进行改名再将其进行其他操作;
示例:

mysql> select name,chinese+math+english as '总分' from Point;
+---------+--------+
| name    | 总分   |
+---------+--------+
| Lihua   |    245 |
| Liming  |    185 |
| Zhaolao |    193 |
| Wu      |    193 |
| Wuqi    |    211 |
| Liqiang |    271 |
| Qinsu   |    231 |
| Zhaoli  |    228 |
+---------+--------+

其中这里的as可以省略不写;


去重 📨

这里的去重指的是对最终的结果在显示前进行去重;
其语法即为SELECT DISTINCT 字段 FROM table_name;

mysql> select math from Point; # 未使用去重
+------+
| math |
+------+
|   88 |
|   58 |
|   80 |
|   70 |
|   43 |
|   92 |
|   74 |
|   74 |
+------+mysql> select distinct math from Point; # 结果去重
+------+
| math |
+------+
|   88 |
|   58 |
|   80 |
|   70 |
|   43 |
|   92 |
|   74 |
+------+

📌where条件📌

在大部分的情况下,SELECT在查询数据时应该配合着行的限制与列的限制从而达到筛选数据的效果;
若是不对数据进行筛选而是无脑选择SELECT * FROM table_name;来将数据进行全部显示的话可能会因为数据量过于庞大不便于观察且并没有筛选出需要条件的数据而做出的无用查看;
在MySQL中可以使用where条件来为SELECT查看的数据做出对应的条件限制从而达到能够查看到对应的数据;
同样的接下来的操作将基于上表进行;


📌比较运算符📌

  • > , >= , < , <=
    若是满足条件则显示1,否则显示0;

    mysql> select 1>2;
    +-----+
    | 1>2 |
    +-----+
    |   0 |
    +-----+
    1 row in set (0.00 sec)mysql> select 1<2;
    +-----+
    | 1<2 |
    +-----+
    |   1 |
    +-----+
    1 row in set (0.00 sec)
    

    示例:
    显示出math大于90的人的名字与成绩

    mysql> select name,math from Point where math>90;
    +---------+------+
    | name    | math |
    +---------+------+
    | Liqiang |   92 |
    +---------+------+
    

  • =<=>

    在MySQL中的等于有两种,分别为以上两种;
    两种的等于在实质性的使用层面并没有太多的区别;
    唯一的区别只是对NULL进行判断;

    #--------------------------------------
    mysql> select 1 = 1;
    +-------+
    | 1 = 1 |
    +-------+
    |     1 |
    +-------+mysql> select 1 = 2;
    +-------+
    | 1 = 2 |
    +-------+
    |     0 |
    +-------+mysql> select NULL = NULL;
    +-------------+
    | NULL = NULL |
    +-------------+
    |        NULL |
    +-------------+
    #--------------------------------------
    mysql> select 1<=>1;
    +-------+
    | 1<=>1 |
    +-------+
    |     1 |
    +-------+mysql> select 1<=>2;
    +-------+
    | 1<=>2 |
    +-------+
    |     0 |
    +-------+mysql> select NULL<=>NULL;
    +-------------+
    | NULL<=>NULL |
    +-------------+
    |           1 |
    +-------------+
    #--------------------------------------
    

  • 不等于 !=<>

    在MySQL中的不等于为以上两种,但是无论哪种不等于都无法对NULL做比较;

    mysql> select NULL <> NULL;
    +--------------+
    | NULL <> NULL |
    +--------------+
    |         NULL |
    +--------------+
    1 row in set (0.00 sec)mysql> select NULL = NULL;
    +-------------+
    | NULL = NULL |
    +-------------+
    |        NULL |
    +-------------+
    1 row in set (0.00 sec)
    

  • 范围匹配BETWEEN a0 AND a1

    范围匹配一般用来判断一个数是否属于该范围内,且该范围属于左闭右闭区间([a0,a1]);

    mysql> select 5 between 0 and 10;
    +--------------------+
    | 5 between 0 and 10 |
    +--------------------+
    |                  1 |
    +--------------------+
    1 row in set (0.00 sec)
    

    示例:找出math区间为[70,75]的数据:

    mysql> select name,math from Point where math between 70 and 75;
    +--------+------+
    | name   | math |
    +--------+------+
    | Wu     |   70 |
    | Qinsu  |   74 |
    | Zhaoli |   74 |
    +--------+------+
    

  • 该数据是否为一组数据中的其中一个IN (option,...)

    该运算符一般判断一个数据是否存在于一组数据中;

    mysql> select 12 in (10,12,14);
    +------------------+
    | 12 in (10,12,14) |
    +------------------+
    |                1 |
    +------------------+
    1 row in set (0.00 sec)
    

    示例:分别找出english为(70,80,90,100)的数据;

    mysql> select name,english from Point where english in (70,80,90,100);
    +---------+---------+
    | name    | english |
    +---------+---------+
    | Lihua   |      90 |
    | Liming  |      70 |
    | Wuqi    |      80 |
    | Liqiang |      90 |
    | Zhaoli  |     100 |
    +---------+---------+
    5 rows in set (0.00 sec)
    

  • 是NULL IS NULL 与 非NULL IS NOT NULL

    该运算符一般用来判断一个字段是否为NULL;

    mysql> select NULL IS NULL;
    +--------------+
    | NULL IS NULL |
    +--------------+
    |            1 |
    +--------------+
    1 row in set (0.00 sec)mysql> select NULL IS NOT  NULL;
    +-------------------+
    | NULL IS NOT  NULL |
    +-------------------+
    |                 0 |
    +-------------------+
    1 row in set (0.00 sec)
    

  • 模糊匹配LIKE

    该运算符一般用来模糊匹配,其中%表示多个(包括0)个任意字符,_表示任意一个字符;
    示例:分别找出name为W的字段与W_ 的字段;

    mysql> select * from Point where name like 'W%';
    +----+------+---------+------+---------+
    | id | name | chinese | math | english |
    +----+------+---------+------+---------+
    |  4 | Wu   |      76 |   70 |      47 |
    |  5 | Wuqi |      88 |   43 |      80 |
    +----+------+---------+------+---------+mysql> select * from Point where name like 'W_';
    +----+------+---------+------+---------+
    | id | name | chinese | math | english |
    +----+------+---------+------+---------+
    |  4 | Wu   |      76 |   70 |      47 |
    +----+------+---------+------+---------+
    

📌逻辑运算符📌

运算符说明
AND多个条件为TRUE(1)时结果为TRUE(1);
OR任意一个条件为TRUE(1)时结果为TRUE(1);
NOT条件为TRUE(1)时结果为FALSE(0);

📌结果排序📌

结果排序可以将数据再处理完时对其进行排序处理(一般该操作的顺序为最后的操作);
且没有进行ORDER BY子句的查询所返回的结果顺序一般都是未定义的,即不可靠的;
语法:

SELECT ... FROM table_name [ WHERE ... ]ORDER BY column [ASC|DESC],[...];#其中:#ASC为升序,DESC为降序;#默认为ASC升序;

示例:
显示namemath的字段且math为升序的条件显示;

mysql> select name,math from Point order by math ASC;
+---------+------+
| name    | math |
+---------+------+
| Wuqi    |   43 |
| Liming  |   58 |
| Wu      |   70 |
| Qinsu   |   74 |
| Zhaoli  |   74 |
| Zhaolao |   80 |
| Lihua   |   88 |
| Liqiang |   92 |
+---------+------+
8 rows in set (0.00 sec)

📌筛选分页结果📌

在MySQL中经常会因为数据量过大而导致不便于数据的观察;
而在MySQL中有这么一条语句可以便于结果的观察,即为筛选分页结果;
语法:

#分页时的起始下标为0;SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从起始下标开始筛选n条结果;SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s,n;
-- 从s开始,筛选n条结果SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
-- 从s开始,筛选n条结果(该方法的表达更为明确)

示例:
查看namemath字段并使用order by以降序的方式进行排序最终结果每页显示3条;

mysql> SELECT name,math from Point order by math desc limit 3 offset 0;
+---------+------+
| name    | math |
+---------+------+
| Liqiang |   92 |
| Lihua   |   88 |
| Zhaolao |   80 |
+---------+------+
3 rows in set (0.01 sec)mysql> SELECT name,math from Point order by math desc limit 3 offset 3;
+--------+------+
| name   | math |
+--------+------+
| Qinsu  |   74 |
| Zhaoli |   74 |
| Wu     |   70 |
+--------+------+
3 rows in set (0.00 sec)mysql> SELECT name,math from Point order by math desc limit 3 offset 6;
+--------+------+
| name   | math |
+--------+------+
| Liming |   58 |
| Wuqi   |   43 |
+--------+------+
2 rows in set (0.00 sec)

相关文章:

『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询

文章目录 &#x1f4c2; Create(创建/新增)&#x1f4cc;全列插入与指定列插入&#x1f4cc;&#x1f4cc;单行数据插入与多行数据插入&#x1f4cc;&#x1f4cc;插入数据否则更新&#x1f4cc;&#x1f4cc;数据的替换&#x1f4cc; &#x1f4c2; Retrieve(查询)&#x1f4c…...

Vue中mvvm的作用

目录 模型表示应用程序的数据。在Vue.js中&#xff0c;它们是JavaScript对象。视图是用户界面。在Vue.js中&#xff0c;使用模板语法编写HTML的表示层。ViewModel是视图的抽象表示&#xff0c;负责处理用户输入的数据&#xff0c;并处理视图的数据绑定。ViewModel使用模型中的…...

基于springboot实现高校食堂移动预约点餐系统【项目源码】

基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…...

用element ui上传带参数的文件,并用flask接收

需求 网页需要实现上传一个csv文件&#xff0c;并携带两个表单的参数给后端 方法 上传组件 <el-uploadclass"upload-demo"dragaction"/upload" <!--要上传到的路由地址&#xff0c;跟flask路由函数对应-->accept".csv" <!--只接…...

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git&#xff0c;你可以通过Homebrew来安装它&#xff1a; brew install git 方式一&#xff1a;终端管理 1.创建本地Git仓库 在项目的根目录下&#xff0c;打开终端&#xff08;Terminal&#xff09;并执行以下命令来初始化一个新的Git仓库&#xff1…...

python cv2.imread()和Image.open()的区别和联系

文章目录 1. cv2.imread()1.1 cv2.imread参数说明1.2 注意事项 2. Image.open()3. cv2.imread()与Image.open()相互转化3.1 cv2.imread()转成Image.open()&#xff1a;Image.fromarray()3.2 Image.open()转成cv2.imread()&#xff1a;np.array() 1. cv2.imread() cv2.imread()…...

hdlbits系列verilog解答(exams/m2014_q4i)-45

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路&#xff1a; 二、verilog源码 module top_module (output out);assign out 1b0;endmodule三、仿真结果 转载请注明出处&#xff01;...

flink源码分析之功能组件(二)-kubeclient

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。 kubeclient组件…...

无需API开发,有赞小程序集成广告推广系统,提升品牌曝光

无需API开发&#xff0c;实现有赞小程序与其他系统的连接 有赞小程序作为一个多功能的电子商务解决方案&#xff0c;为商家提供了无需复杂API开发就可以实现系统连接和集成的便捷途径。通过有赞小程序&#xff0c;商家可以轻松实现与各种系统的数据同步和应用互联&#xff0c;…...

CMD - ping

文章目录 前言参数 前言 ping 命令主要测试到达指定 IP 或主机的连通性. 参数 -t: ping 指定的计算机直到中断 -a: 将地址解析为主机名 -n count: 要发送的回显请求数...

数据结构与算法编程题23

设计二叉树的双序遍历算法&#xff08;双序遍历是指对于二叉树的每一个结点来说&#xff0c;先访问这个结点&#xff0c;再按双序遍历它的左子树&#xff0c;然后再一次访问这个结点&#xff0c;接下来按双序遍历它的右子树&#xff09; #define _CRT_SECURE_NO_WARNINGS#inclu…...

小程序中的大道理之二--抽象与封装

继续扒 接着 上一篇 的叙述, 健壮性也有了, 现在是时候处理点实际的东西了, 但我们依然不会一步到底, 让我们来看看. 一而再地抽象(Abstraction Again) 让我们继续无视那些空格以及星号等细节, 我们看到什么呢? 我们只看到一整行的内容, 当传入 3 时就有 3 行, 传入 4 时就…...

基于卷积神经网络CNN开发构建HAR人类行为识别Human Activity Recognition【完整代码实践】

行为识别相关的开发实践在我们之前的博文中也有过相关的实践了,感兴趣的话可以自行移步阅读即可:《python实现基于TNDADATASET的人体行为识别》 《UCI行为识别——Activity recognition with healthy older people using a batteryless wearable sensor Data Set》《人体行为…...

excel自己记录

1、清除换行符号 2、添加特殊符号&并清除换行符号 7日&15日&30日&60日 3、判断单元格最后一个字符是不是数字&#xff0c;不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…...

vcsa6.7 5480无法登录

停电维护硬件后&#xff0c;发现vcsa异常&#xff0c;https://ip:5480无法登录&#xff0c;https://ip/ui正常&#xff0c;ssh登录页正常 kb资料 通过端口 5480 登录到 VMware vCenter Server Appliance Web 控制台失败 (2120477) 操作过程 Connecting to 192.16.20.31:22..…...

CSS 属性列表

CSS属性列表 序号 属性类别 属性 描述 1 动画属性 keyframes 定义一个动画,keyframes定义的动画名称用来被animation-name所使用。 2 animation 复合属性。检索或设置对象所应用的动画特效。 3 animation-name 检索或设置对象所应用的动画名称 ,必须与规则keyfra…...

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…...

脚本自动化定制开发:实现高效工作的魔法钥匙

在当今这个快节奏的工作环境中&#xff0c;自动化已成为提高工作效率的黄金标准。如果你是一名Windows用户&#xff0c;那么通过Windows脚本自动化&#xff0c;你可以将你的工作流程化繁为简&#xff0c;实现高效工作。而在众多Windows脚本自动化工具中&#xff0c;Python以其简…...

使用websocket获取thingsboard设备的实时数据

背景 有一个读者前来咨询,如何实时获取设备的遥测数据。 其实tb是有提供websocket接口来获取设备数据的。而且还支持js跨域调用。下面给大家演示一下。 websocket地址 完整代码 <!DOCTYPE HTML> <html><h...

使用Linux JumpServer堡垒机本地部署与远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装Jump server二. 本地访问jump server三. 安装 cpolar内网穿透软件四. 配…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...