java day15 (数据库)

news2025/6/6 19:49:59

进入数据库的学习

DB

因为数据太多了,方便统一管理的软件
操作就不用改代码了,直接改数据库则可;
在这里插入图片描述
命令就是sql语句
在这里插入图片描述
这些都是关系型数据库,sql可以控制全部,至于具体的环境我以前就有安装过了;请添加图片描述

理解,在企业开发过程中呢;数据是在一个中心服务器的,为了避免丢失或者窃取而且得方便存储;然后就集中在一台服务器上;多个电脑通过sql软件连接;连接上了之后进行访问和修改;请添加图片描述
有很多的软件都类似;
我们可以通过虚拟机来实现,就是把虚拟机当作内个中央机房,你连接,通过软件访问,去用;
虚拟机就vmware;
在这里插入图片描述
通过这条指令去连接数据库,可以指定连接某一条;
在这里插入图片描述
很多表彼此之间有联系
比如redis就是非关系型的数据库中间件;
登录语句;
在这里插入图片描述
在这里插入图片描述

用户通过数据库先连接,然后按照数据库语句进行创造;比如创一个数据库吧,然后这个数据库里面可以放很多表
然后也可以创一些用户;这些用户能操作哪些表;

**sql语句四大类:

DDL操作表,字段的
DML,增删改
DQL,查
DCL 创建用户**
在这里插入图片描述
这是一个企业拿到一个项目之后,立马该干的事情;
先产品经理给原型;然后我们先完成数据库设计;然后一个个模块和功能开始实现;最后推出上线之后要优化更新;
在这里插入图片描述
前面两个就是,一个是数据库的设计;一个是数据库的操作;

SQL语句

在这里插入图片描述
SQL语句要加上封号
在这里插入图片描述
登录mysql -u root -p
创建数据库 create database 创建数据库,后面跟数据库名字就行; if not exists这个语句加上就是如果这个数据库有的话,不报错,没有的话就创建
use 数据库名
就是使用这个数据库了

大部分sql语句

操作类型 SQL 语句 示例

  1. 数据库操作
    创建数据库 CREATE DATABASE database_name; CREATE DATABASE mydb;
    创建(不存在时) CREATE DATABASE IF NOT EXISTS database_name; CREATE DATABASE IF NOT EXISTS mydb;
    指定字符集 CREATE DATABASE database_name CHARACTER SET charset_name; CREATE DATABASE mydb CHARACTER SET utf8mb4;
    查看所有数据库 SHOW DATABASES; SHOW DATABASES;
    查看创建语句 SHOW CREATE DATABASE database_name; SHOW CREATE DATABASE mydb;
    修改字符集 ALTER DATABASE database_name CHARACTER SET charset_name; ALTER DATABASE mydb CHARACTER SET utf8;
    删除数据库 DROP DATABASE database_name; DROP DATABASE mydb;
    删除(存在时) DROP DATABASE IF EXISTS database_name; DROP DATABASE IF EXISTS mydb;
    使用数据库 USE database_name; USE mydb;
    查看当前正在使用的数据库select database();

  2. 表操作
    操作类型 SQL 语句 示例
    创建表 CREATE TABLE table_name (column1 data_type constraint, …); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(50));
    复制表结构 CREATE TABLE new_table_name LIKE existing_table_name; CREATE TABLE student_backup LIKE student;
    查看所有表 SHOW TABLES; SHOW TABLES;
    查看表结构 DESC table_name; 或 DESCRIBE table_name; DESC student;
    重命名表 ALTER TABLE table_name RENAME TO new_table_name; ALTER TABLE student RENAME TO stu;
    添加字段 ALTER TABLE table_name ADD column_name data_type constraint; ALTER TABLE student ADD age INT;
    修改字段名 ALTER TABLE table_name CHANGE old_column new_column new_data_type; ALTER TABLE student CHANGE age new_age INT;
    修改字段类型 ALTER TABLE table_name MODIFY column_name new_data_type; ALTER TABLE student MODIFY age TINYINT;
    删除字段 ALTER TABLE table_name DROP column_name; ALTER TABLE student DROP age;
    删除表 DROP TABLE IF EXISTS table_name; DROP TABLE IF EXISTS student;

  3. 数据操作(增删改查)
    操作类型 SQL 语句 示例
    插入数据
    插入指定列 INSERT INTO table_name (column1, column2) VALUES (value1, value2); INSERT INTO student (name, age) VALUES (‘Alice’, 20);
    插入全列 INSERT INTO table_name VALUES (value1, value2, …); INSERT INTO student VALUES (1, ‘Bob’, 21);
    插入多行 INSERT INTO table_name (…) VALUES (row1), (row2), …; INSERT INTO student (name) VALUES (‘Charlie’), (‘David’);
    删除数据
    按条件删除 DELETE FROM table_name WHERE condition; DELETE FROM student WHERE age < 18;
    删除全量数据 DELETE FROM table_name; 或 TRUNCATE TABLE table_name; DELETE FROM student;(保留自增 ID)
    修改数据
    按条件更新 UPDATE table_name SET column1 = value1 WHERE condition; UPDATE student SET age = 22 WHERE name = ‘Alice’;
    全量更新 UPDATE table_name SET column1 = value1; UPDATE student SET age = age + 1;(所有记录年龄 + 1)
    查询数据
    查询全量数据 SELECT * FROM table_name; SELECT * FROM student;
    查询指定列 SELECT column1, column2 FROM table_name; SELECT name, age FROM student;
    去重查询 SELECT DISTINCT column1 FROM table_name; SELECT DISTINCT age FROM student;
    条件查询 SELECT * FROM table_name WHERE condition; SELECT * FROM student WHERE age > 20 AND gender = ‘M’;
    模糊查询 SELECT * FROM table_name WHERE column LIKE pattern; SELECT * FROM student WHERE name LIKE ‘A%’;
    范围查询 SELECT * FROM table_name WHERE column BETWEEN value1 AND value2; SELECT * FROM student WHERE age BETWEEN 18 AND 25;
    排序查询 SELECT * FROM table_name ORDER BY column [ASC DESC]; SELECT * FROM student ORDER BY age DESC;
    分页查询 SELECT * FROM table_name LIMIT offset, row_count; SELECT * FROM student LIMIT 0, 10;(前 10 条)
    聚合查询 SELECT COUNT/SUM/AVG/MAX/MIN(column) FROM table_name; SELECT COUNT() FROM student;(统计总数)
    分组查询 SELECT column1, COUNT(
    ) FROM table_name GROUP BY column1; SELECT gender, COUNT(*) FROM student GROUP
    起别名 SELECT 列 别名 from 表名; 需要有空格那就直接打个引号;

  4. 常用约束与关键字
    约束 / 关键字 说明 示例
    PRIMARY KEY 主键约束(唯一且非空) id INT PRIMARY KEY
    AUTO_INCREMENT 自增(适用于整数类型) id INT AUTO_INCREMENT
    NOT NULL 非空约束 name VARCHAR(50) NOT NULL
    UNIQUE 唯一约束 email VARCHAR(100) UNIQUE
    DEFAULT 默认值 status TINYINT DEFAULT 0
    CHECK 检查约束(MySQL 5.7+ 支持) age INT CHECK (age >= 0)
    JOIN 表连接(INNER/LEFT/RIGHT/FULL) SELECT * FROM orders JOIN users ON orders.user_id = users.id;

  5. 注意事项
    大小写:SQL 关键字(如 SELECT、FROM)不区分大小写,但表名、列名可能区分(取决于数据库配置)。
    分号:每条 SQL 语句必须以 ; 结尾。
    引号:字符串值用单引号 ‘value’,日期时间也需用引号。
    转义字符:字符串中包含单引号时,使用 ’ 或双引号嵌套。
    注释:单行注释用 --,多行注释用 /* … */。

在这里插入图片描述
在这里插入图片描述
来了,可视化的客户端工具;
老师用的是datagrip
我咋感觉还是navicat更多;
在这里插入图片描述

这两是同一家,而且也可以直接用idea,现在已经把datagrip的功能集合到idea里面去了;
在idea里面可以直接用;
右侧栏的数据库拉开选择mysql,行了连接这一趴也可以跳过了;之前我做过jdbc的
在这里插入图片描述
这和创建数据库没区别

进行创建表吧
在这里插入图片描述
创建一个这样的表
在这里插入图片描述
大致就是根据字段创建表;
先前面的创建表和表名吗;
里面就是比如第一个字段是id 那他就是Int 然后后面的就是 comment这个是注释;然后一以此类推;里面的东西挨个建立;最后在表后面的这个也是注释;其实comment’‘这种格式就是注释;最后一个,不用打,
但是现在navicat比较方便呀;直接创就完了,但是也得学,毕竟也不知道下一个公司是不是navicat;

在这里插入图片描述
选到表然后点击加号去加值就可以了;
在这里插入图片描述

约束唯一性
一看,我们给id就该给主键约束;
在这里插入图片描述
这是要求;
在这里插入图片描述
最终版本;auto_increment这个东西一加上;就是自动递增;自动增长;价格约束就可以了;

Mysql里面的数值类型

现在MySql中的数据类型有很多
MySql 的类型主要分三类;数值类型、字符串类型、日期时间类型。
数值类型
在这里插入图片描述
字符串类型
在这里插入图片描述
对于char 定长但是给多少就是10
varchar不定长,按自己所以看需求;

日期类型
在这里插入图片描述

注意我们的格式类型是 id int 后面再写数据类型的这种;
比如日期类型吧;我们是birthday date
date是年月日,datatime是时分秒;

实际开发会给一个需求表
在这里插入图片描述

给一个需求文档之后呢;
我们先选用最小的类型;然后存1,2之类的;存好之后以后去服务层重写方法改就完了;

然后根据需求一个个分析,这个表就建立好了;

1.DDL 表操作

在这里插入图片描述
这些语句吧,很多东西一目了然;就是英语;上面这个纯查询
在这里插入图片描述
改变;在这里插入图片描述
一一执行则可,不会的语句ai就行;

这些所有用可视化工具就完了;
在这里插入图片描述
只有创建最重要,学可视化就行了;

2.DML 增删改

在这里插入图片描述
就是给表加字段;我觉得sql语句都不用学了,现在的东西有很多;
在这里插入图片描述
这句话给表插入数据;
1给字段,2给值,然后非空的字段,要去给值
前面是所有的字段,后面给个value里面都是值
在这里插入图片描述
批量插入;这个插入值进去,前面是字段,后面的值就直接分成两个括号,在括号里面写就行;一次性建立了两条数据;

给表更新,这是更新经常用到的场景;
比如点击页面给展示了吗,然后给详情了;然后咱们点击好修改好提交表单了;然后那里面的数值肯定会修改的;
在这里插入图片描述
看update的场景
在这里插入图片描述
在这里插入图片描述
他调用的now()这个东西就是当前时间;,然后更新字段

在这里插入图片描述
在这里插入图片描述
同理,删就完了;
在这里插入图片描述
在这里插入图片描述

3.DQL 查

最重要

能看到,都是因为查
基本上每点击一次就能有一次查询操作;而且还有条件查询
分页查询;还可以对查询的数据进行排序;

单表查询:

记住这张图,基本上就能写很多基本的查询语句了;

在这里插入图片描述
突然想到,本来java就是对着建需求表,建立类,然后咱们的表是对着需求文档建立,所以流程就是,
对着需求文档建立表,对着表建立类;

继续
在这里插入图片描述
基本查询需求
在这里插入图片描述
条件查询
在这里插入图片描述
这里就是where的条件约束;比如查一整个表,name=''最好无论是什么符号,都带上引号;
在这里插入图片描述
类似这种;但是,null他不是;他必须用is;多个条件就用and

如果确定查谁了,直接等于就行;不确定的话,可以用到模糊查询;
比如要查所有是两个字的员工;

在这里插入图片描述
下划线是单个;百分号是多个

分组查询

在这里插入图片描述
就是可以统计计算;
聚合函数;
count是不对null值进行计算的;
在这里插入图片描述
在这里插入图片描述
这些都是聚合函数; 比如统计数量啊,最大最小值啊

在这里插入图片描述
在这里插入图片描述
from还是表名哈;然后跟着的是按照什么分组;再一个就是跟的是按照什么分组,咱们跟的是一个gender;格式就是group by gender
然后前面要写分段;第一个是gender 第二个是统计;count();
聚合函数他必须用再前面,where是跟在from后面的,要什么条件直接and加就完了;然后分组语句写好,但是如果还有聚合函数的语法的话,再加个having;然后再用再判断;里面的
就是统计数量的;having就是专门写在分组之后的东西;
在这里插入图片描述

在这里插入图片描述

排序查询

在这里插入图片描述

也是一个字段加上就行了
在这里插入图片描述
在这里插入图片描述

分页查询

在这里插入图片描述
在这里插入图片描述
这个非常好理解了;直接在后面接个Limit然后给个范围就可以了;怎么说呢,这个范围吧;你要按id去算,后面是展示几条,比如第一页展示五条就是0,5;第二页展示五条,那之前的id是0,1,2,3,4 现在就该 5,6,7,8,9,所以开头的索引是从5开始的;后面再跟展示五条,第三页就是类推;从10开始一直往后;
**但是!**咱们不可能是说每个,咱们都去写吧,那不得算死;所以我们上公式;
就是查询的页码减1然后乘以每条消息的记录数;

案例

在这里插入图片描述
现在需求来了,我们看这个表,先分析吧;
就是普通的字段,名字用户名性别 职位 日期 之前和之后的日期,想起来是调now()然后一个按钮绑定点击事件进行增删改

然后最上面就是查询,监听用户输入的条件,后端是不是把这些条件转换成对应的sql语句;然后进行分页,每页十条的显示;
越学好像越清晰了一点;

那就是先建表,把这张图的表建立出来;然后开始分页,然后写好约束条件;先把增删改查弄了;
在这里插入图片描述
很多需求也是按照产品经理给的文档;
在这里插入图片描述

然后一段不是太长了吗,咱们就直接把他格式化一下
在这里插入图片描述
idea里面有快捷键;直接快捷键格式化就行了;
在这里插入图片描述
查询里面可以用if这种流程控制语句;比如看这个性别等于1,正确就是男性员工;不正确就是女性员工;
这个的作用主要是进行转换
还有一个转换词的流程语句 其实也就那两,一个是if 一个是switch里面的case
在这里插入图片描述

首先还是先选择出来;然后case后面跟着工作;意思是对工作进行简单的案例判断,用when开始开头,说案例,当等于1 的时候呢,然后是班主任
所以是 when 1 then ‘班主任’ 然后直接接就行了;这种流程条件要放在前面先筛选,不然,没筛就计数,就完蛋了;
然后就能把这个sql语句返回给前端,然后前端渲染出来就好了;

多学多练才能有出路!!!!!!!!!!没考上的东西继续考,大家都不看好你,偏偏你最争气,人多靠自己,我也想靠自己赚很多,不用我妈给生活费;靠自己去旅游,去买想要的,吃想吃的;现在实习工作了,才真正体会到什么是社会价值,什么是残酷,学校真的是大家最后最后的避风港了;呜呜再坚持一下;大家都不看好我一个没咋吃苦的女生走开发;我必走!先得尝尝咸淡吧!在这里插入图片描述今日开会人家的项目是清楚的分成vo bo 层的,就是数据库表映射进来,转换成语句,然后是类吗;这些类咱们不一定都要;比如点击这一面只弹出来年龄信息,别的不要,可能就是子表类似,我们可以再设计一个vo层去转换接收;还有一个bo层,他就是来接收指令的;现在sql的增删改查也有注解可以直接生成了;但是还是要理解底层逻辑!

多表设计

在这里插入图片描述

表与表之间的关系互相是,有这三种;1是一对多的或者多对一,一张表可以联系多个;
2.是多对多的;具体情况具体描述
3.是一对一的,我只与他有关;

在这里插入图片描述
先按照需求来;
比如现在是crm系统,做员工和部门的关系,肯定是这个员工隶属于哪个部门吗,一对多体现在,一个部门多个员工;
一是部门那边,多是员工那边;
在这里插入图片描述
看这种需求说明;
比如部门管理页面;
先看需求说明;说的是数据少不做分页,也就是不写Limit;
页面开发规则;新增的时候弹出新增的页面;,然后只填入部门名称;
然后还有删除的功能

在这里插入图片描述
这是两张表;员工和部门表;要让他们联系起来,我们去员工表里面创建一个部门的属性;就是内个dept—id 然后把这个类型设置成一致;然后加上注释,这样两张表就关联起来了;

一对多

在这里插入图片描述
像这个,就用id联系到一起了;

也就是去多的地方,关联员工的主键
在这里插入图片描述
插入语句;

在这里插入图片描述
现象;就是比如多表里面吧;部门数据删除一个部门吧;但是另一个员工表里面;

用外键约束就能解决
在这里插入图片描述
这边声明外键,可以进行多表的联系
就是在字段外,进行一个constraint的名称声明;然后,进行一个外键的标注,比如你要联系另一个表的id吧还是什么,就写到这里,然后关联一下主表;

在这里插入图片描述

物理外键和逻辑外键,逻辑外键就是只是解决外键的关联性;物理外键是使用这个关键字去定义外键关联一张表。
逻辑外键可以解决很多东西;比如可以表层把他删了,实际东西还在;
因为如果一旦物理绑定了
就不能随意删除某张表的东西了
所以用逻辑外键更好
可以把部门删了,员工也还在,重新分配就行了,而不是删都删不掉;

一对一

在这里插入图片描述

就是比如一个人只有一个身份证这种类型;
现在有个情况就是;有些信息的查询频率很高;有些真的很低,比如我们只要身份证,不看民族吧
那我们就可以对表进行拆分;这也是项目里面的;vo层干的事情;

对他们直接随意一张表加一个外键就行了,加一个Unique唯一就行

多对多

比如学生对老师

在这里插入图片描述
在这里插入图片描述
这时候用外键就不合适
给谁加都不知道怎么填,因为一个学生可以选多门课,一个课多个学生选;

在这里插入图片描述
解决方案就是出现了第三章表
第三张表呢有两个外键,一个放学生一个放课程;一个放自己的东西;成功解决,比如图中1号学生对应了3门课

在这里插入图片描述
可视化

案例

在这里插入图片描述
先看好三个模块,然后对此进行分析
在这里插入图片描述

先看关系
比如,分类模块和菜品模块吧;
一个分类应该有多个菜品;分类是1,菜品是多
比如一个荤菜分类底下,应该有多个荤菜,什么红烧肉啥的等等等等;
套餐呢,他一个套餐有多个菜,这里两个对应菜品我认为应该都是一对多;套餐是1,菜品是多
然后就是分类与套餐的关系了;一个分类比如一个荤菜分类,可能会有多个荤菜套餐啥的,套餐肯定不能混吗,应该是一对多,一个分类,多个套餐
按之前设计的原则;应该是在多的一方增加外键,进行一个关联;
现在还有一个就是套餐和菜品,这两个是多对多的关系;所以需要再添加一张表,关联他们两个的字段
在这里插入图片描述
最后这是总的表结构关系
在这里插入图片描述
按照需求一一对应去可视化建表就行了,约束啊,唯一啊,等等等等,都按照需求填

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多线程爬虫使用代理IP指南

多线程爬虫能有效提高工作效率&#xff0c;如果配合代理IP爬虫效率更上一层楼。作为常年使用爬虫做项目的人来说&#xff0c;选择优质的IP池子尤为重要&#xff0c;之前我讲过如果获取免费的代理ip搭建自己IP池&#xff0c;虽然免费但是IP可用率极低。 在多线程爬虫中使用代理I…

前端面试真题(第一集)

目录标题 1、跨域问题及解决方法同源策略生产环境解决方案开发环境解决方案其他解决方案 2、组件间通信方式Vue2中的组件通信方式Vue3中的组件通信方式通用注意事项 3、微信小程序生命周期微信小程序原生生命周期UniApp生命周期 4、微信小程序授权登录流程登录流程手机号获取 5…

TDengine 高级功能——流计算

简介 在时序数据的处理中&#xff0c;经常要对原始数据进行清洗、预处理&#xff0c;再使用时序数据库进行长久的储存&#xff0c;而且经常还需要使用原始的时序数据通过计算生成新的时序数据。在传统的时序数据解决方案中&#xff0c;常常需要部署 Kafka、Flink 等流处理系统…

05.字母异位词分组

题意理解 &#x1f9e0; 什么是“字母异位词”&#xff1f; 字母异位词是指由相同的字母组成&#xff0c;只是排列顺序不同的单词。 比如&#xff1a; "eat" 和 "tea" 是异位词&#xff0c;它们都包含 e、a 和 t。"ate" 也是它们的异位词。但…

Mac查看MySQL版本的命令

通过 Homebrew 查看&#xff08;如果是用 Homebrew 安装的&#xff09; brew info mysql 会显示你安装的版本、路径等信息。 你的终端输出显示&#xff1a;你并没有安装 MySQL&#xff0c;只是查询了 brew 中的 MySQL 安装信息。我们一起来看下重点&#xff1a; &#x1f9fe…

【.net core】【watercloud】树形组件combotree导入及调用

源码下载:combotree: 基于layui及zTree的树下拉框组件 链接中提供了组件的基本使用方法 框架修改内容 1.文件导入&#xff08;路径可更具自身情况自行设定&#xff09; 解压后将文件夹放在图示路径下&#xff0c;修改文件夹名称为combotree 2.设置路径&#xff08;设置layu…

2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家

前言 题解 2021 RoboCom 世界机器人开发者大赛-高职组&#xff08;复赛&#xff09;解题报告。 模拟题为主&#xff0c;包含进制转换等等。 最后一题&#xff0c;是对向量/自定义类型&#xff0c;重定义小于操作符。 7-1 人工智能打招呼 分值: 15分 考察点: 分支判定&…

34.1STM32下的can总线实现知识(区分linux)_csdn

看过我之前的文章就知道&#xff0c;正点原子下的linux中CAN总线并没有讲的很明白&#xff0c;都是系统自带的&#xff01; 这里我找到江科大学长的can总线的讲解视频&#xff01; CAN总线入门教程-全面细致 面包板教学 多机通信_哔哩哔哩_bilibili 在这里我也会一步一步讲解CA…

2025年想冲网安方向,该考华为安全HCIE还是CISSP?

打算2025年往网络安全方向转&#xff0c;现在考证是不是来得及&#xff1f;考啥证&#xff1f; 说实话&#xff0c;网络安全这几年热得发烫&#xff0c;但热归热&#xff0c;入门门槛也不低&#xff0c;想进这个赛道&#xff0c;技术、项目经验、证书&#xff0c;缺一不可。 …

153页PPT麦肯锡咨询流程管理及企业五年发展布局构想与路径规划

麦肯锡咨询的流程管理以其高度结构化、数据驱动和结果导向的核心特点著称&#xff0c;旨在为客户提供清晰、可行且价值最大化的解决方案。其典型流程可概括为以下几个关键阶段&#xff1a;下载资料请查看文章中图片右下角信息 问题界定与结构化&#xff1a; 这是流程的基石。麦…

[特殊字符] 革命性AI提示词优化平台正式开源!

AI时代最强大的Prompt工程师已经到来&#xff01; 你是否还在为写不出高质量提示词而头疼&#xff1f;是否羡慕那些能够驾驭AI、让ChatGPT、Claude乖乖听话的"提示词大师"&#xff1f;今天&#xff0c;我们为你带来一个颠覆性的解决方案——TokenAI Auto-Prompt&…

我的概要设计模板(以图书管理系统为例)

一、总述 1.1 需求或目标 随着数字化阅读普及&#xff0c;传统图书馆管理方式效率低下、资源检索不便。为提升图书管理效率&#xff0c;方便读者借阅与查询&#xff0c;公司计划开发 “在线图书管理系统”&#xff0c;实现图书的电子化管理、快速检索、在线借阅等功能&#x…

DrissionPage爬虫包实战分享

一、爬虫 1.1 爬虫解释 爬虫简单的说就是模拟人的浏览器行为&#xff0c;简单的爬虫是request请求网页信息&#xff0c;然后对html数据进行解析得到自己需要的数据信息保存在本地。 1.2 爬虫的思路 # 1.发送请求 # 2.获取数据 # 3.解析数据 # 4.保存数据 1.3 爬虫工具 Dris…

iptables实战案例

目录 一、实验拓扑 二、网络规划 三、实验要求 四、环境准备 1.firewall &#xff08;1&#xff09;配置防火墙各大网卡IP并禁用 firewall和selinux &#xff08;2&#xff09;打开firewall路由转发 2.PC1&#xff08;内网&#xff09; &#xff08;1&#xff09;配置防…

Google AI 模式下的SEO革命:生成式搜索优化(GEO)与未来营销策略

一、搜索范式转变&#xff1a;从链接引导到答案交付 Google自2023年起逐步推出AI搜索功能&#xff0c;经历了SGE&#xff08;Search Generative Experience&#xff09;和Gemini阶段&#xff0c;最终在2025年全面上线了「AI Mode」搜索模式。与此同时&#xff0c;也保留了一种过…

SpringBoot中缓存@Cacheable出错

SpringBoot中使用Cacheable: 错误代码&#xff1a; Cacheable(value "FrontAdvertiseVOList", keyGenerator "cacheKey") Override public List<FrontAdvertiseVO> getFrontAdvertiseVOList(Integer count) {return this.list(Wrappers.<Adve…

iOS UIActivityViewController 组头处理

0x00 情形一 - (void)shareAction1 {// 当前 View 转成图片UIImage *image [self snapshotImage:self.view];NSArray *activityItems [image];UIActivityViewController *activityVC [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationAc…

《TCP/IP 详解 卷1:协议》第3章:链路层

以太网和IEEE802局域网/城域网标准 IEEE802局域网/城域网标准 IEEE 802 是一组由 IEEE&#xff08;电气与电子工程师协会&#xff09;定义的局域网和城域网通信标准系列&#xff0c;涵盖了从物理层到链路层的多个网络技术。其中&#xff1a; IEEE 802.3 定义的是传统的以太网…

Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程(二)

package com.test.xulk.es.entity.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.test.xulk.es.entity.Hotel;public interface HotelMapper extends BaseMapper<Hotel> { }集成Springboot 项目里面 官方地址&#xff1a; Elasticsearch …

数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)

数据库管理333期 2025-06-04 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff09;1 概念2 要求3 操作流程4 转移失败处理总结 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff0…