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

【MySQL】表的基础增删改查

前面我们已经知道怎么来创建表了,接下来就来对创建的表进行一些基本操作。

这里先将上次创建的表删除掉:

mysql> use test;
Database changedmysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
+----------------+
1 row in set (0.00 sec)mysql> drop table if exists student;
Query OK, 0 rows affected (0.03 sec)

在test数据库里新建一个student表:

mysql> create table student(->     id int comment '序列号',->     name varchar(20) comment '学生名',->     Chinese decimal(3,1) comment '语文成绩',->     Math decimal(3,1) comment '数学成绩',->     English decimal(3,1) comment '英语成绩'-> );
Query OK, 0 rows affected (0.06 sec)

接下来就针对该表进行增删改查的操作~

目录

♫新增

♪单行数据插入

♪查看默认编码

♪修改配置文件

♪指定列插入

♪多行数据插入

 ♫查询

♪全列查询

♪指定列查询

♪表达式查询

♪表达式查询

♪去重查询

♪排序查询

♪运算符

♪条件查询

♪限制查询

♪分页查询

♫修改

♫删除


♫新增

♪单行数据插入

新增操作是指对表增添数据:

语法:insert into 表名 values(类型1的数据,类型2的数据,类型3的数据...);

mysql> insert into student values(1,'student1',99,94,93);
Query OK, 1 row affected (0.42 sec)

注:

①.into也可以省略不写

②.插入的数据必须和定义表的列数及顺序一致

♪查看默认编码

上面我们就将student1学生的数据插入到student表里了,但如果我们插入的名字是中文名就有可能会报错:

mysql> insert into student values(1,'张三',99,94,93);
ERROR 1366 (HY000): Incorrect string value: '\xD0\xA1\xC3\xF7' for column 'name' at row 1

这是因为我们在创建test数据库的时候没有手动指定字符集,此时字符集就会是配置文件(my.ini)里的字符集,而配置文件的字符集如果没有修改过默认是latin1。

我们可以通过show variables like "%character%";语句来查看当前MySQL的数据库编码:

mysql> show variables like "%character%";
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

其中,character_set_client为客户端编码方式,character_set_connection为建立连接使用的编码,character_set_database数据库的编码,character_set_results结果集的编码,character_set_server数据库服务器的编码。可以看到此时数据库的编码为latin1,所以我们需要在创建数据库时手动指定字符集者通过修改配置文件的字符集来使接下来创建的数据库都支持中文。

♪修改配置文件

手动指定字符集我们都会了,下面就来改一改配置文件里的默认字符集吧~

找到并打开my.ini文件,将里面的default-character-set和character-set-server改为如下:

注:修改配置文件前最好备份一份修改前的,以防改错了能改回之前的。

修改完重启MySQL之后再去查询数据库编码可以发现默认字符集已经改为utf8了:

mysql> show variables like"%character%";
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.02 sec)

这样,之后创建的数据库即使不手动指定字符集也能支持中文了,我们删掉之前的test库,并重新创建一个student表插入中文学生名的数据:

mysql> drop database if exists test;
Query OK, 1 row affected (0.09 sec)mysql> create database if not exists test;
Query OK, 1 row affected (0.00 sec)mysql> use test;
Database changed
mysql> create table student(->     id int comment '序列号',->     name varchar(20) comment '学生名',->     Chinese decimal(3,1) comment '语文成绩',->     Math decimal(3,1) comment '数学成绩',->     English decimal(3,1) comment '英语成绩'-> );
Query OK, 0 rows affected (0.07 sec)mysql> insert into student values(1,"张三",88,93,89);
Query OK, 1 row affected (0.02 sec)

♪指定列插入

插入操作还可以指定列插入:

语法:insert into 表名(列名1,列名2,列名3...) values(列名1的数据,列名2的数据,列名3的数据...);

mysql> insert into student(id,name) values(2,"李四");
Query OK, 1 row affected (0.09 sec)

这样就可以只插入部分数据,其余列则就是默认值。

♪多行数据插入

如果觉得一条一条插入太麻烦,还可以一次插入多条数据:

语法:insert into 表名 values(类型1的数据,类型2的数据,类型3的数据...),(类型1的数据,类型2的数据,类型3的数据...),(类型1的数据,类型2的数据,类型3的数据...)...;

mysql> insert into student values(3,"王五",97,77,82),(4,"赵六",87,67,65),(5,"小七",88,77,82);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

注:MySQL是一个客户端服务器,每次请求和相应都会有时间开销,数据库服务器把数据存储在硬盘上(硬盘的读取和写入速度慢),每进行一次sql都会开启一个事务,故一次插入多条数据往往比多次插入一条数据效率要高。

 ♫查询

♪全列查询

新增数据后,我们就可以通过查询操作查看我们插入的数据了:

语法:select * from 表名;

mysql> select * from student;
+------+--------+---------+------+---------+
| id   | name   | Chinese | Math | English |
+------+--------+---------+------+---------+
|    1 | 张三   |    88.0 | 93.0 |    89.0 |
|    2 | 李四   |    NULL | NULL |    NULL |
|    3 | 王五   |    97.0 | 77.0 |    82.0 |
|    4 | 赵六   |    87.0 | 67.0 |    65.0 |
|    5 | 小七   |    88.0 | 77.0 |    82.0 |
+------+--------+---------+------+---------+
5 rows in set (0.01 sec)

注:当数据量很大时不介意使用全列查询,容易把硬盘IO和网络带宽吃满。

♪指定列查询

相比于全列查询,指定列查询的数据量就要小很多:

语法:select 列名1,列名2,列名3... from 表名;

mysql> select id,name,Chinese from student;
+------+--------+---------+
| id   | name   | Chinese |
+------+--------+---------+
|    1 | 张三   |    88.0 |
|    2 | 李四   |    NULL |
|    3 | 王五   |    97.0 |
|    4 | 赵六   |    87.0 |
|    5 | 小七   |    88.0 |
+------+--------+---------+
5 rows in set (0.00 sec)

♪表达式查询

还可以指定表达式进行查询:

语法:select 表达式1,表达式2,表达式3... from student;

mysql> select id,name,10 from student;
+------+--------+----+
| id   | name   | 10 |
+------+--------+----+
|    1 | 张三   | 10 |
|    2 | 李四   | 10 |
|    3 | 王五   | 10 |
|    4 | 赵六   | 10 |
|    5 | 小七   | 10 |
+------+--------+----+
5 rows in set (0.00 sec)mysql> select id,name,Chinese+10 from student;
+------+--------+------------+
| id   | name   | Chinese+10 |
+------+--------+------------+
|    1 | 张三   |       98.0 |
|    2 | 李四   |       NULL |
|    3 | 王五   |      107.0 |
|    4 | 赵六   |       97.0 |
|    5 | 小七   |       98.0 |
+------+--------+------------+
5 rows in set (0.01 sec)mysql> select id, name,Chinese+Math+English from student;
+------+--------+----------------------+
| id   | name   | Chinese+Math+English |
+------+--------+----------------------+
|    1 | 张三   |                270.0 |
|    2 | 李四   |                 NULL |
|    3 | 王五   |                256.0 |
|    4 | 赵六   |                219.0 |
|    5 | 小七   |                247.0 |
+------+--------+----------------------+
5 rows in set (0.00 sec)

注:根据表达式查询返回的是一个临时表,并不会改变原来表的数据

♪表达式查询

如果觉得表达式太长,还可以为表达式取个别名,这样返回的结果集中就会以该别名作为该列的名称:

语法:select 表达式 as 别名 from student;

mysql> select id,name,Chinese+Math+English as total from student;
+------+--------+-------+
| id   | name   | total |
+------+--------+-------+
|    1 | 张三   | 270.0 |
|    2 | 李四   |  NULL |
|    3 | 王五   | 256.0 |
|    4 | 赵六   | 219.0 |
|    5 | 小七   | 247.0 |
+------+--------+-------+
5 rows in set (0.00 sec)

注:as也可以省略不写

♪去重查询

还可以通过distnct对某一列进行去重操作:

语法:select distance 列名 from 表名;

mysql> select distinct Chinese from student;
+---------+
| Chinese |
+---------+
|    88.0 |
|    NULL |
|    97.0 |
|    87.0 |
+---------+
4 rows in set (0.01 sec)

注:distnct后面如果跟n列,那么只会对n列都重复的进行去重操作。

♪排序查询

也可以通过order by对查询结果进行排序:

语法:select 列名 from 表名 order by 列名 asc/desc;(asc为升序,desc为降序,不写时默认为asc)

mysql> select id,name,Chinese from student order by Chinese asc;
+------+--------+---------+
| id   | name   | Chinese |
+------+--------+---------+
|    2 | 李四   |    NULL |
|    4 | 赵六   |    87.0 |
|    1 | 张三   |    88.0 |
|    5 | 小七   |    88.0 |
|    3 | 王五   |    97.0 |
+------+--------+---------+
5 rows in set (0.40 sec)

注:

①.NULL比任何值都小。

②.没有 order by 子句的查询,返回的顺序是未定义的。

③.也可以使用表达式及别名排序(如:mysql> select name,Chinese+Math+English as total from student order by total;)。

④.还可以对多个字段进行排序,排序优先级随书写顺序(如:mysql> select name from student order by Chinese desc,Math,English;(先根据语文成绩排序,语文成绩相同再根据数学成绩排序,数学成绩相同再根据英语成绩排序))。

MySQL还可以根据指定的条件进行查询,不过条件查询需要用到运算符,这里我们还是先了解下MySQL里的运算符~

♪运算符

♩比较运算符

运算符描述
>,>=,<,<=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=,<>
不等于
between a1 and a2
范围匹配, [a1, a2] ,如果 a1 <= value <= a2, 返回 TRUE(1)
in (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
NULL
IS NOT NULL
不是 NULL
like
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字

注:<=>可以比较两列都为NULL的情况,而IS NULL只能判断一个是否为NULL

♩逻辑运算符

运算符描述
and
多个条件必须都为 TRUE(1) ,结果才是 TRUE(1)
or
任意一个条件为 TRUE(1), 结果为 TRUE(1)
not
条件为 TRUE(1) ,结果为 FALSE(0)

注:and 的优先级高于 or

♪条件查询

对特定条件的数据进行查询也可以降低查询的数据量:

语法:select 列名 from 表名 where 查询条件;

mysql> select id,name,Chinese from student where Chinese<=90;
+------+--------+---------+
| id   | name   | Chinese |
+------+--------+---------+
|    1 | 张三   |    88.0 |
|    4 | 赵六   |    87.0 |
|    5 | 小七   |    88.0 |
+------+--------+---------+
3 rows in set (0.00 sec)mysql> select id,name from student where name like '%五';
+------+--------+
| id   | name   |
+------+--------+
|    3 | 王五   |
+------+--------+
1 row in set (0.02 sec)mysql> select id,name,Chinese from student where Chinese between 88 and 99;
+------+--------+---------+
| id   | name   | Chinese |
+------+--------+---------+
|    1 | 张三   |    88.0 |
|    3 | 王五   |    97.0 |
|    5 | 小七   |    88.0 |
+------+--------+---------+
3 rows in set (0.00 sec)mysql> select id,name,Chinese,Math from student where Chinese>85 and Math>85;
+------+--------+---------+------+
| id   | name   | Chinese | Math |
+------+--------+---------+------+
|    1 | 张三   |    88.0 | 93.0 |
+------+--------+---------+------+
1 row in set (0.00 sec)mysql> select id,name,Chinese+Math+English as total from student where Chinese+Math+English is not null;-- where后面不能用别名
+------+--------+-------+
| id   | name   | total |
+------+--------+-------+
|    1 | 张三   | 270.0 |
|    3 | 王五   | 256.0 |
|    4 | 赵六   | 219.0 |
|    5 | 小七   | 247.0 |
+------+--------+-------+
4 rows in set (0.00 sec)

注:条件查询where后面不能用别名

♪限制查询

使用where虽然可以限制查询内容,但仍然不知道查询到的数据量有多少,而limit就可以强制限制查询的行数:

语法:select 列名 from 表名 limit 行数;

mysql> select * from student limit 3;
+------+--------+---------+------+---------+
| id   | name   | Chinese | Math | English |
+------+--------+---------+------+---------+
|    1 | 张三   |    88.0 | 93.0 |    89.0 |
|    2 | 李四   |    NULL | NULL |    NULL |
|    3 | 王五   |    97.0 | 77.0 |    82.0 |
+------+--------+---------+------+---------+
3 rows in set (0.00 sec)

♪分页查询

当查询结果的数量较大时,我们需要将其分页显示,以方便用户查看和管理,MySQL中可以通过limitoffset(limit限制行数,offset设置开始查询的行(0为第一行))来实现分页查询:

语法:select 列名 from 表名 limit 行数 offset 第n行;

mysql> select * from student limit 2 offset 0;
+------+--------+---------+------+---------+
| id   | name   | Chinese | Math | English |
+------+--------+---------+------+---------+
|    1 | 张三   |    88.0 | 93.0 |    89.0 |
|    2 | 李四   |    NULL | NULL |    NULL |
+------+--------+---------+------+---------+
2 rows in set (0.00 sec)mysql> select * from student limit 2 offset 2;
+------+--------+---------+------+---------+
| id   | name   | Chinese | Math | English |
+------+--------+---------+------+---------+
|    3 | 王五   |    97.0 | 77.0 |    82.0 |
|    4 | 赵六   |    87.0 | 67.0 |    65.0 |
+------+--------+---------+------+---------+
2 rows in set (0.00 sec)mysql> select *from student limit 2 offset 4;
+------+--------+---------+------+---------+
| id   | name   | Chinese | Math | English |
+------+--------+---------+------+---------+
|    5 | 小七   |    88.0 | 77.0 |    82.0 |
+------+--------+---------+------+---------+
1 row in set (0.00 sec)

注:分页查询也可以写成select 列名 from 表名 limit 第n行,行数;的形式

了解完这些基础的查询操作后,我们再来看看如何修改已添加的数据。

♫修改

通过update关键字可以对指定条件的列修改指定内容:

语法:update 表名 set 列名 = 值 指定条件;

-- 将张三的语文成绩改为90
mysql> update student set Chinese = 90 where name = "张三";
Query OK, 1 row affected (0.19 sec)
Rows matched: 1  Changed: 1  Warnings: 0-- 将语文成绩倒数的2个学生的语文成绩改为90
mysql> update student set Chinese = 90 order by Chinese limit 2;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

MySQL还支持一次修改多列数据:

语法:update 表名 set 列名1=值1,列名2=值2,列名3=值3.. 指定条件;

-- 将张三的语文成绩,数学成绩,英语成绩都改为90
mysql> update student set Chinese=90,Math=90,English=90 where name="张三";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

注:修改时若不加上指定条件,则会将表里所有行的数据都进行修改

最后来看下删除操作~

♫删除

删除操作是指将表中不需要的数据移除掉:

语法:delete from 表名 指定条件;

-- 删除学生名为张三的数据
mysql> delete from student where name="张三";
Query OK, 1 row affected (0.01 sec)-- 删除语文成绩最后两名的学生数据
mysql> delete from student order by Chinese limit 2;
Query OK, 2 rows affected (0.00 sec)

注:删除操作如果没有添加指定条件同样会把表里所有数据都删了

相关文章:

【MySQL】表的基础增删改查

前面我们已经知道怎么来创建表了&#xff0c;接下来就来对创建的表进行一些基本操作。 这里先将上次创建的表删除掉&#xff1a; mysql> use test; Database changedmysql> show tables; ---------------- | Tables_in_test | ---------------- | student | -----…...

第11章 Redis(二)

11.11 Redis 哨兵机制和集群有什么区别 难度:★★★ 重点:★★ 白话解析 前面的题目都是Redis的原理,接下来就是实际使用的问题了,首先Redis为了保证高可用,在微服务场景下必须是部署集群的,而Redis的集群部署通常就两种方式:主从和Redis Cluster。 参考答案 1、主从…...

mybatis配置entity下不同文件夹同类型名称的多个类型时启动springboot项目出现TypeException源码分析

记录问题&#xff1a;当配置了 mybatis.type-aliases-packagecom.runjing.erp.entity 配置项时&#xff0c;如果entity文件夹下存在不同子文件夹下的同名类型时&#xff0c;mybatis初始化加载映射时会爆出org.apache.ibatis.type.TypeException&#xff1a; The alias TestDemo…...

淘宝商品评论数据分析接口,淘宝商品评论接口

淘宝商品评论数据分析接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL&#xff0c;可以向淘宝服务器发起HTTP请求&#xff0c;获取商品评论数据。接口返回的数据一般为JSON格式&#xff0c;包含了商品的各种评价信息。 获取到商品评论数据后&#xff0c;可以对其进…...

RK3288 android7.1 修改双屏异触usb tp触摸方向

一&#xff0c;问题描述&#xff1a; android机器要求接两个屏&#xff08;lvdsmipi&#xff09;两个usb tp要实现双屏异触。由于mipi的方向和lvds方向转成一样的了。两个usb tp的方向在异显示的时候也要作用一样。这个时候要根据pid和vid修改触摸上报的数据。usb tp有通用的触…...

软考 系统架构设计师系列知识点之软件架构风格(8)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件架构风格&#xff08;7&#xff09; 这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此…...

ubuntu安装ssh

安装 OpenSSH 服务器&#xff08;如果尚未安装&#xff09;&#xff1a; apt-get update && apt-get upgrade -y sudo apt-get install -y openssh-server 检查 SSH 服务是否正在运行&#xff1a; sudo service ssh status 如果 SSH 服务未运行&#xff0c;请通过以…...

webpack不同环境下使用CSS分离插件mini-css-extract-plugin

1.背景描述 使用mini-css-extract-plugin插件来打包css文件&#xff08;从css文件中提取css代码到单独的文件中&#xff0c;对css代码进行代码压缩等&#xff09;。 本次采用三个配置文件&#xff1a; 公共配置文件&#xff1a;webpack.common.jsdev开发环境配置文件&#x…...

[MongoDB]-权限验证管理

[MongoDB]-权限验证管理 senge | 2023年9月 背景说明&#xff1a;现有两套MongoDB副本集群给开发人员使用时未开启认证。 产生影响&#xff1a;用户若输入账号以及密码则会进行校验&#xff0c;但用户可以在不输入用户名和密码的情况下也可直接登录。 倘若黑客借此进行攻击勒索…...

bootstrapjs开发环境搭建

Bootstrapjs是一个web前端页面应用开发框架&#xff0c;其提供功能丰富的JavaScript工具集以及用户界面元素或组件的样式集&#xff0c;本文主要描述bootstrapjs的开发环境搭建。 如上所示&#xff0c;使用nodejs运行时环境、使用npm包管理工具、使用npm初始化一个项目工程test…...

远程实时监控管理:5G物联网技术助力配电站管理

配电站远程监控管理系统是基于物联网和大数据处理等技术的一种创新解决方案。该系统通过实时监测和巡检配电场所设备的状态、环境情况、安防情况以及火灾消防等信息&#xff0c;实现对配电站的在线实时监控与现场设备数据采集。 配电站远程监控管理系统通过回传数据进行数据系…...

ubuntu 23.04安装中文输入法

使用ubuntu 23.04安装中文输入法&#xff0c;尝试了最新的搜狗&#xff0c;谷歌拼音&#xff0c;fcitx的原始拼音&#xff0c;最终的结果就是使用了谷歌拼音。 搜狗输入法&#xff1a;好用&#xff0c;但是用了没几天发现各种闪退&#xff0c;一打开就闪烁&#xff0c;根本无法…...

java:解析json的几种方式

Java是一种流行的编程语言&#xff0c;它提供了很多实用的库和工具&#xff0c;在处理JSON数据时也不例外。在本文中&#xff0c;我们将介绍Java中如何解析JSON数据。 JSON是一种轻量级的数据交换格式&#xff0c;它已经成为Web应用程序中最流行的数据格式之一。Java提供了许多…...

pytorch_神经网络构建1

文章目录 pytorch简介神经网络基础分类问题分析:逻辑回归模型逻辑回归实现多层神经网络多层网络搭建保存模型 pytorch简介 为什么神经网络要自定义数据类型torch.tensor? tensor可以放在gpu上训练,支持自动求导,方便快速训练,同时支持numpy的运算,是加强版,numpy不支持这些 为…...

Android 多线程并发详解

一&#xff0c;基础概念 1.1什么是CPU 中央处理器&#xff08;CPU&#xff09;&#xff0c;是电子计算机的主要设备之一&#xff0c;电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令&#xff0c;对指令译码并执行指令的…...

系统架构设计:8 论软件架构风格

目录 一 软件架构风格 1 数据流风格 (1)批处理风格 (2)管道-过滤器风格...

[Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数

本文翻译自Elasticsearch官方指南的Proximity Matching一章。 邻近匹配(Proximity Matching) 使用了TF/IDF的标准全文搜索将文档&#xff0c;或者至少文档中的每个字段&#xff0c;视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中是否包含了…...

Bootstrap中让元素尽可能往父容器的左侧靠近或右侧造近(左浮动和右浮动)

在Bootstrap中&#xff0c;float-left是一个用于浮动元素的CSS类。它的作用是将一个元素向左浮动&#xff0c;使其在父容器内尽可能靠近左侧边缘&#xff0c;同时允许其他元素在其右侧排列。 使用float-left类可以创建多列布局&#xff0c;将元素水平排列在一行上&#xff0c;…...

网络流量安全分析-工作组异常

在网络中&#xff0c;工作组异常分析具有重要意义。以下是网络中工作组异常分析的几个关键点&#xff1a; 检测网络攻击&#xff1a;网络中的工作组异常可能是由恶意活动引起的&#xff0c;如网络攻击、病毒感染、黑客入侵等。通过对工作组异常的监控和分析&#xff0c;可以快…...

Flink之Watermark源码解析

1. WaterMark源码分析 在Flink官网中介绍watermark和数据是异步处理的,通过分析源码得知这个说法不够准确或者说不够详细,这个异步处理要分为两种情况: watermark源头watermark下游 这两种情况的处理方式并不相同,在watermark的源头确实是异步处理的,但是在下游只是做的判断,这…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...