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

Java面试黄金宝典35

1. A 和 B 两个表做等值连接 (Inner join) 怎么优化

  1. 索引优化:在连接字段上创建索引,让数据库在进行等值连接时,能够快速定位匹配的记录,减少全表扫描的开销。例如,若 A 表和 B 表通过 id 字段进行连接,可在 A.id 和 B.id 上分别创建索引。
  2. 表的顺序:通常把小表放在前面。数据库进行连接操作时,先扫描前面的表,将其结果作为驱动集,再与后面的表匹配。小表数据量少,扫描速度快,能减少中间结果集的大小。
  3. 过滤条件前置:在连接之前,利用 WHERE 子句尽可能过滤掉不必要的数据,减少参与连接的记录数,提升连接效率。
  4. 调整数据库参数:比如调整 join_buffer_size 参数,它用于在内存中缓存连接操作的中间结果。适当增大该参数可减少磁盘 I/O,提高连接性能。
  • 定义

等值连接是一种基于两个表中指定列的值相等来组合记录的操作。通过优化连接过程,可以减少数据库的 I/O 操作和 CPU 计算量,提高查询性能。

  • 要点
  1. 确保连接字段有索引。
  2. 合理安排表的连接顺序。
  3. 尽早过滤数据。
  4. 根据实际情况调整数据库参数。
  • 应用

在电商系统中,订单表和商品表进行连接查询时,可使用上述优化方法提高查询速度,为用户快速展示订单详情。

代码示例

sql

-- 创建表 A
CREATE TABLE A (id INT,name VARCHAR(50),PRIMARY KEY (id)
);-- 创建表 B
CREATE TABLE B (id INT,price DECIMAL(10, 2),PRIMARY KEY (id)
);-- 在连接字段上创建索引
CREATE INDEX idx_a_id ON A(id);
CREATE INDEX idx_b_id ON B(id);-- 执行等值连接查询,同时使用过滤条件
SELECT A.id, A.name, B.price
FROM A
INNER JOIN B ON A.id = B.id
WHERE A.id > 10;

 

2. 数据库连接池的理解和优化

 

数据库连接池是一种数据库连接的管理机制,预先创建一定数量的数据库连接。当应用程序需要与数据库交互时,直接从连接池中获取连接,使用完毕后再将连接返回给连接池,而非每次都创建和销毁连接。

优化方法如下:

  1. 合理设置连接池大小:依据应用程序的并发量和数据库的处理能力,设置合适的最小连接数、最大连接数和空闲连接数。若连接池太小,应用程序可能需等待连接;若太大,会占用过多系统资源。
  2. 连接超时设置:设置连接的最大使用时间和等待时间。当连接使用时间超过最大使用时间时,关闭并重新创建;当等待连接的时间超过等待时间时,抛出异常,避免应用程序长时间等待。
  3. 连接验证:从连接池中获取连接时,验证连接的有效性。可通过发送简单的 SQL 语句(如 SELECT 1)检查连接是否正常。
  4. 定期清理空闲连接:定期检查连接池中的空闲连接,关闭空闲时间过长的连接,释放系统资源。
  • 定义

数据库连接池是一种用于管理数据库连接的技术,通过复用连接,减少连接创建和销毁的开销,提高应用程序的性能和响应速度。

  • 要点
  1. 合理配置连接池大小。
  2. 设置连接超时和验证机制。
  3. 定期清理空闲连接。
  • 应用

在高并发的 Web 应用中,使用数据库连接池可以显著提高系统的性能和稳定性,避免频繁创建和销毁连接导致的资源浪费。

代码示例

java

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;public class ConnectionPoolExample {private static DataSource dataSource;static {HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");config.setUsername("root");config.setPassword("password");config.setMinimumIdle(5);config.setMaximumPoolSize(20);config.setIdleTimeout(30000);config.setConnectionTimeout(2000);dataSource = new HikariDataSource(config);}public static Connection getConnection() throws SQLException {return dataSource.getConnection();}public static void main(String[] args) {try (Connection connection = getConnection()) {System.out.println("Connection obtained successfully: " + connection);} catch (SQLException e) {e.printStackTrace();}}
}

 

3. 数据库增删改查基本语句, 建表建索引

 

  1. 建表:创建一个新的表结构,定义表的列名、数据类型和约束条件。
  2. 建索引:在指定的列上创建索引,提高查询效率。
  3. 插入数据:向表中插入新的记录。
  4. 查询数据:从表中检索符合条件的记录。
  5. 更新数据:修改表中已有的记录。
  6. 删除数据:从表中删除符合条件的记录。
  • 定义

建表是在数据库中创建一个新的数据存储结构;建索引是为了提高数据查询的速度;增删改查操作是对数据库中数据进行基本的增、删、改、查操作。

  • 要点
  1. 建表时要合理定义列的数据类型和约束条件。
  2. 建索引时要选择合适的列,避免过多的索引影响插入、更新和删除操作的性能。
  3. 增删改查语句要注意条件的准确性。
  • 应用

在开发一个简单的学生管理系统时,可使用这些基本语句对学生信息进行管理。

代码示例

sql

-- 建表
CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT
);-- 建索引
CREATE INDEX idx_name ON students (name);-- 插入数据
INSERT INTO students (id, name, age) VALUES (1, 'John', 20);-- 查询数据
SELECT * FROM students WHERE age > 18;-- 更新数据
UPDATE students SET age = 21 WHERE id = 1;-- 删除数据
DELETE FROM students WHERE id = 1;

 

4. 分组排序

 

分组排序是先对数据进行分组,然后在每个分组内进行排序。例如,统计每个班级的学生成绩,并按成绩从高到低排序。

  • 定义

分组排序是一种数据处理方式,通过 GROUP BY 子句将数据按照指定的列进行分组,再使用 ORDER BY 子句对分组后的结果进行排序。

  • 要点
  1. GROUP BY 子句后面的列名必须在 SELECT 列表中出现。
  2. ORDER BY 子句可以指定排序的方向(ASC 或 DESC)。
  • 应用

在统计分析中,可对销售数据按地区分组,然后在每个地区内按销售额排序,以便分析不同地区的销售情况。

代码示例

sql

-- 创建示例表
CREATE TABLE scores (class VARCHAR(20),student_name VARCHAR(50),score INT
);-- 插入示例数据
INSERT INTO scores (class, student_name, score) VALUES
('Class A', 'Alice', 85),
('Class A', 'Bob', 90),
('Class B', 'Charlie', 78),
('Class B', 'David', 88);-- 分组排序查询
SELECT class, student_name, score
FROM scores
GROUP BY class
ORDER BY class, score DESC;

 

5. SQL 语句的 5 个连接概念

 

  1. 内连接(Inner Join):只返回两个表中连接字段匹配的记录。
  2. 左连接(Left Join):返回左表中的所有记录,以及右表中连接字段匹配的记录。若右表中没有匹配的记录,则用 NULL 填充。
  3. 右连接(Right Join):返回右表中的所有记录,以及左表中连接字段匹配的记录。若左表中没有匹配的记录,则用 NULL 填充。
  4. 全连接(Full Outer Join):返回两个表中的所有记录,无论是否匹配。若没有匹配的记录,则用 NULL 填充。在某些数据库中,可能需要使用 UNION 来模拟全连接。
  5. 交叉连接(Cross Join):返回两个表的笛卡尔积,即左表中的每一条记录都与右表中的每一条记录组合。
  • 定义

不同的连接方式根据连接条件和匹配规则,从两个表中选取不同的记录组合,以满足不同的查询需求。

  • 要点
  1. 理解不同连接方式的匹配规则。
  2. 根据业务需求选择合适的连接方式。
  • 应用

在电商系统中,可使用内连接查询订单和商品的关联信息;使用左连接查询所有用户及其订单信息,即使某些用户没有订单。

代码示例

sql

-- 创建表 A
CREATE TABLE tableA (id INT,name VARCHAR(50),PRIMARY KEY (id)
);-- 创建表 B
CREATE TABLE tableB (id INT,price DECIMAL(10, 2),PRIMARY KEY (id)
);-- 插入示例数据
INSERT INTO tableA (id, name) VALUES (1, 'Item A');
INSERT INTO tableA (id, name) VALUES (2, 'Item B');
INSERT INTO tableB (id, price) VALUES (2, 10.00);
INSERT INTO tableB (id, price) VALUES (3, 20.00);-- 内连接
SELECT * FROM tableA
INNER JOIN tableB ON tableA.id = tableB.id;-- 左连接
SELECT * FROM tableA
LEFT JOIN tableB ON tableA.id = tableB.id;-- 右连接
SELECT * FROM tableA
RIGHT JOIN tableB ON tableA.id = tableB.id;-- 全连接(MySQL 中模拟)
SELECT * FROM tableA
LEFT JOIN tableB ON tableA.id = tableB.id
UNION
SELECT * FROM tableA
RIGHT JOIN tableB ON tableA.id = tableB.id;-- 交叉连接
SELECT * FROM tableA
CROSS JOIN tableB;

 

6. 数据库优化和架构

 

  • 数据库优化
  1. 索引优化:合理创建索引,避免过多或不必要的索引。
  2. 查询优化:优化 SQL 语句,避免全表扫描,使用合适的连接方式和过滤条件。
  3. 表结构优化:合理设计表结构,避免数据冗余,采用合适的数据类型。
  4. 数据库参数调整:根据数据库的硬件配置和应用程序的需求,调整数据库的参数,如内存分配、并发连接数等。
  • 数据库架构
  1. 垂直拆分:将一个大表按照列拆分成多个小表,减少单个表的字段数量,提高查询效率。
  2. 水平拆分:将一个大表按照行拆分成多个小表,分散数据存储,提高并发处理能力。
  3. 读写分离:将读操作和写操作分离到不同的数据库服务器上,提高系统的并发性能。
  4. 分布式数据库:采用分布式数据库架构,将数据分散存储在多个节点上,提高系统的可扩展性和容错性。
  • 定义

数据库优化是通过一系列技术手段提高数据库的性能和响应速度;数据库架构设计是根据应用程序的需求和数据特点,选择合适的架构模式,提高系统的可扩展性、并发性能和容错性。

  • 要点
  1. 综合考虑数据库的性能、可扩展性和容错性。
  2. 根据业务需求选择合适的优化和架构方案。
  • 应用

在大型电商系统中,可采用读写分离和水平拆分的架构,提高系统的并发处理能力和可扩展性;同时进行数据库优化,提高查询性能。

代码示例(读写分离)

java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class ReadWriteSeparationExample {private static final String WRITE_URL = "jdbc:mysql://master:3306/mydb";private static final String READ_URL = "jdbc:mysql://slave:3306/mydb";private static final String USER = "root";private static final String PASSWORD = "password";public static void main(String[] args) {// 写操作try (Connection writeConnection = DriverManager.getConnection(WRITE_URL, USER, PASSWORD);Statement writeStatement = writeConnection.createStatement()) {String insertQuery = "INSERT INTO users (name) VALUES ('John')";writeStatement.executeUpdate(insertQuery);System.out.println("Write operation completed.");} catch (Exception e) {e.printStackTrace();}// 读操作try (Connection readConnection = DriverManager.getConnection(READ_URL, USER, PASSWORD);Statement readStatement = readConnection.createStatement()) {String selectQuery = "SELECT * FROM users";ResultSet resultSet = readStatement.executeQuery(selectQuery);while (resultSet.next()) {System.out.println("Name: " + resultSet.getString("name"));}} catch (Exception e) {e.printStackTrace();}}
}

 

7. 数据库读写分离

 

数据库读写分离是将数据库的读操作和写操作分离到不同的数据库服务器上。通常有一个主数据库(Master)负责处理写操作,多个从数据库(Slave)负责处理读操作。应用程序进行写操作时,将请求发送到主数据库;进行读操作时,将请求发送到从数据库。

  • 定义

数据库读写分离是一种数据库架构设计模式,通过将读操作和写操作分离,提高系统的并发性能和响应速度。

  • 要点
  1. 确保主从数据库之间的数据同步。
  2. 合理分配读请求到从数据库。
  3. 处理主从数据库之间的延迟问题。
  • 应用

在高并发的 Web 应用中,如新闻网站、社交媒体平台等,使用数据库读写分离可以显著提高系统的性能和吞吐量。

8. 数据库跨库 join

数据库跨库 join 是在不同的数据库实例之间进行表的连接操作。实现方式有以下几种:

  1. 应用层实现:在应用程序中分别从两个数据库中查询数据,然后在应用程序中进行连接操作。
  2. 数据库中间件:使用数据库中间件(如 MyCat、ShardingSphere 等)来实现跨库 join。中间件可以将跨库 join 请求进行解析和优化,然后将请求发送到相应的数据库实例,最后将结果合并返回给应用程序。
  • 定义

数据库跨库 join 是一种在多个数据库实例之间进行数据关联查询的技术,用于解决数据分散存储在不同数据库中的查询需求。

  • 要点
  1. 考虑网络开销和性能问题。
  2. 选择合适的实现方式,根据业务需求和数据库规模来决定。
  • 应用

在企业级应用中,不同部门的数据可能存储在不同的数据库中,需要进行跨库 join 来进行综合分析。

代码示例(应用层实现)

java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class CrossDatabaseJoinExample {private static final String DB1_URL = "jdbc:mysql://db1:3306/db1";private static final String DB2_URL = "jdbc:mysql://db2:3306/db2";private static final String USER = "root";private static final String PASSWORD = "password";public static void main(String[] args) {List<Map<String, Object>> result = new ArrayList<>();try (Connection conn1 = DriverManager.getConnection(DB1_URL, USER, PASSWORD);Statement stmt1 = conn1.createStatement();Connection conn2 = DriverManager.getConnection(DB2_URL, USER, PASSWORD);Statement stmt2 = conn2.createStatement()) {// 从第一个数据库查询数据ResultSet rs1 = stmt1.executeQuery("SELECT id, name FROM table1");List<Map<String, Object>> data1 = new ArrayList<>();while (rs1.next()) {Map<String, Object> row = new HashMap<>();row.put("id", rs1.getInt("id"));row.put("name", rs1.getString("name"));data1.add(row);}// 从第二个数据库查询数据ResultSet rs2 = stmt2.executeQuery("SELECT id, price FROM table2");List<Map<String, Object>> data2 = new ArrayList<>();while (rs2.next()) {Map<String, Object> row = new HashMap<>();row.put("id", rs2.getInt("id"));row.put("price", rs2.getDouble("price"));data2.add(row);}// 在应用层进行连接操作for (Map<String, Object> row1 : data1) {for (Map<String, Object> row2 : data2) {if (row1.get("id").equals(row2.get("id"))) {Map<String, Object> joinedRow = new HashMap<>(row1);joinedRow.putAll(row2);result.add(joinedRow);}}}// 输出结果for (Map<String, Object> row : result) {System.out.println(row);}} catch (Exception e) {e.printStackTrace();}}
}

 

9. 数据库限流 and 熔断

  • 数据库限流

数据库限流是对数据库的访问请求进行限制,防止过多的请求压垮数据库。常见的限流算法有令牌桶算法和漏桶算法。可通过配置数据库中间件或应用程序的限流策略来实现。

  • 数据库熔断

数据库熔断是当数据库出现故障或响应时间过长时,自动切断对数据库的访问请求,避免应用程序一直等待或重试,保护整个系统的稳定性。可通过在应用程序中实现熔断机制,当数据库的错误率或响应时间超过阈值时,触发熔断。

  • 定义

数据库限流是通过控制数据库访问请求的速率,保证数据库在合理的负载范围内运行;数据库熔断是在数据库出现异常时,采取快速失败的策略,避免对整个系统造成影响。

  • 要点
  1. 合理设置限流阈值和熔断阈值。
  2. 实现限流和熔断的监控和报警机制。
  • 应用

在微服务架构中,数据库限流和熔断可以保证各个服务的稳定性,避免一个服务的故障影响到整个系统。

代码示例(使用 Resilience4j 实现熔断)

java

import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;
import java.time.Duration;
import java.util.function.Supplier;public class DatabaseCircuitBreakerExample {public static void main(String[] args) {// 配置熔断规则CircuitBreakerConfig config = CircuitBreakerConfig.custom().failureRateThreshold(50).waitDurationInOpenState(Duration.ofMillis(1000)).ringBufferSizeInHalfOpenState(10).ringBufferSizeInClosedState(100).build();CircuitBreakerRegistry registry = CircuitBreakerRegistry.of(config);CircuitBreaker circuitBreaker = registry.circuitBreaker("databaseCircuitBreaker");// 模拟数据库操作Supplier<String> databaseOperation = () -> {// 模拟数据库故障if (Math.random() < 0.6) {throw new RuntimeException("Database error");}return "Database operation successful";};// 使用熔断包装操作Supplier<String> decoratedSupplier = CircuitBreaker.decorateSupplier(circuitBreaker, databaseOperation);try {for (int i = 0; i < 10; i++) {String result = decoratedSupplier.get();System.out.println(result);}} catch (Exception e) {System.out.println("Circuit breaker is open: " + e.getMessage());}}
}

友情提示:本文已经整理成文档,可以到如下链接免积分下载阅读

https://download.csdn.net/download/ylfhpy/90568130

相关文章:

Java面试黄金宝典35

1. A 和 B 两个表做等值连接 (Inner join) 怎么优化 索引优化&#xff1a;在连接字段上创建索引&#xff0c;让数据库在进行等值连接时&#xff0c;能够快速定位匹配的记录&#xff0c;减少全表扫描的开销。例如&#xff0c;若 A 表和 B 表通过 id 字段进行连接&#xff0c;可在…...

openssl-1.0.1e.tar.gz编译安装步骤

下载与验证 openssl-1.0.1e.tar.gz下载链接&#xff1a;https://pan.quark.cn/s/d682551565e8 校验文件完整性&#xff08;示例&#xff09;&#xff1a; # 检查 SHA256 哈希值 sha256sum openssl-1.0.1e.tar.gz # 对比官方发布的哈希值&#xff08;需从 OpenSSL 官网获取&a…...

供应链业务-供应链全局观(二)

概述 我们在供应链业务知识分享的第一篇供应链业务-供应链全局观&#xff08;一&#xff09;中大致聊了以下三点&#xff1a; 1、供应链的本质&#xff1a;环环相扣的增值网络。供应链是从供应商的供应商到客户的客户之间&#xff0c;通过采购、生产、运输、仓储、销售等环节…...

在 Flutter 中Navigator.push 用于实现页面之间的导航

在 Flutter 中&#xff0c;Navigator.push 是一个非常重要的方法&#xff0c;用于实现页面之间的导航。通过 Navigator.push&#xff0c;你可以将一个新的页面&#xff08;路由&#xff09;推送到导航栈中&#xff0c;从而显示新的内容。 以下是一个详细的教程&#xff0c;帮助…...

安永启用AI驱动SAP云ERP系统

安永&#xff08;EY&#xff09;宣布与 SAP 和微软展开战略合作&#xff0c;正式启动将其内部业务系统升级为基于 SAP S/4HANA Cloud 私有版的现代化 ERP 系统&#xff0c;并部署在 Microsoft Azure 云平台上。此次转型不仅涉及系统更新&#xff0c;还将通过引入人工智能&#…...

Augment Code:下一代AI编程助手,能否超越GitHub Copilot?

1. 背景介绍 近日&#xff0c;AI编程助手公司 Augment Code 宣布完成 2.27亿美元B轮融资&#xff0c;估值接近 9.77亿美元&#xff0c;距离独角兽企业仅一步之遥。本轮融资由 Sutter Hill Ventures、Index Ventures、Innovation Endeavors、Lightspeed Venture Partners 和 Me…...

图像处理之《直方图规定化和低失真数据隐藏的可逆对比度增强》论文阅读

全文目录 一、文章摘要二、直方图规定化三、提出的方法A.峰值和零点的选择B.数据序列扩展C. V L D E \mathrm{VLD_E} VLDE​: 带有扩展的极低失真D.提出的RCE-HS方案四、实现细节五、汇报PPT一、文章摘要 本文研究可逆对比度增强(RCE)。图像增强是通过直方图规定化实现的,直方…...

状态模式~

状态模式 在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同状态下也将具有不同的行为. 状态模式(state pattern)的定义: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 状态模式就是用于解决系统…...

Latex入门之超详细的Latex环境配置教程

最近在学习Latex&#xff0c;顺便给大家分享一下Latex环境配置的心得。Latex作为一种高质量的排版系统&#xff0c;广泛应用于学术论文、书籍和报告的排版中。对于初学者来说&#xff0c;配置Latex环境可能是个挑战&#xff0c;但只要按照本文的步骤来&#xff0c;其实并不难。…...

[WUSTCTF2020]CV Maker1

进来是个华丽的界面&#xff0c;我们先跟随这个网页创造一个用户 发现了一个上传端口&#xff0c;尝试上传一个php文件并抓包 直接上传进不去&#xff0c;加个GIF89A uploads/d41d8cd98f00b204e9800998ecf8427e.php 传入 并且报告了 上传路径&#xff0c;然后使用蚁剑连接...

第1课:React开发环境搭建与第一个组件

第1课&#xff1a;React开发环境搭建与第一个组件 学习目标 搭建React开发环境创建第一个React项目了解项目基本结构编写并运行第一个React组件 一、环境准备 1. 安装Node.js React开发需要Node.js环境&#xff0c;它包含了npm&#xff08;Node Package Manager&#xff0…...

go垃圾回收机制

Go语言的垃圾回收&#xff08;GC&#xff09;机制旨在高效管理内存&#xff0c;同时最小化对程序性能的影响。其核心设计结合了并发标记清除、三色标记法和写屏障技术&#xff0c;显著减少了停顿时间&#xff08;Stop-The-World, STW&#xff09;。以下是Go垃圾回收机制的关键特…...

【GPT入门】第 34 课:深度剖析 ReAct Agent 工作原理及代码实现

【GPT入门】第 34 课&#xff1a;深度剖析 ReAct Agent 工作原理及代码实现 1. React Agent概述2. React Agent工作原理、关键特点、应用场景3. langchain的ReAct Agent代码实现3.1 Openai1.x 代码实现3.2 Openai 0.x的实现3.3 新旧版API异同比较 1. React Agent概述 定义与基…...

MySQL介绍及使用

1. 安装、启动、配置 MySQL 1. 安装 MySQL 更新软件包索引 sudo apt update 安装 MySQL 服务器 sudo apt install mysql-server 安装过程中可能会提示你设置 root 用户密码。如果没有提示&#xff0c;可以跳过&#xff0c;后续可以手动设置。 2. 配置 MySQL 运行安全脚本…...

九、重学C++—类和函数

上一章节&#xff1a; 八、重学C—动态多态&#xff08;运行期&#xff09;-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147004745?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp/cppClassAndFunc.cpp CuiQingCheng/cppstudy - 码云 - 开源中国…...

C++·包装器

目录 function 包装各种可调用对象 包装类成员函数 应用举例 bind 一般形式 arg_list 调整参数顺序 调整参数个数&#xff08;绑死&#xff09; 应用举例 小知识 function 包含在<functional>头文件中&#xff0c;是一个类模版&#xff0c;但本质还是仿函数。…...

Linux动态监控进程利器:top命令详解

动态监控进程利器&#xff1a;top命令详解 在Linux系统的日常管理中&#xff0c;实时监控进程状态和资源使用情况是一项至关重要的任务。top命令作为Linux系统自带的强大工具&#xff0c;以其动态更新的特性&#xff0c;成为了系统管理员和开发者的得力助手。本文将全面解析to…...

家庭路由器wifi设置LAN2LAN和LAN2WAN

一、LAN2LAN 方式&#xff1a;桥接模式&#xff0c;主路由器的LAN口接入子路由器的LAN口 子路由器先重置登录密码&#xff08;知道密码可以不重置&#xff09;&#xff0c;登录后台 1、设置为动态IP模式 2、找到LAN口设置 1&#xff09;ip设置和主路由器在一个网段上&#…...

Python实现NOA星雀优化算法优化LightGBM分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在机器学习领域&#xff0c;分类问题是许多实际应用场景的核心任务之一&#xff0c;例如信用评估、…...

面试顺序优化:基于Matlab的高效决策方案

内容摘要 本文围绕面试顺序问题&#xff0c;通过建立数学模型并利用Matlab编程求解&#xff0c;寻找使面试总时长最短的面试顺序安排。详细介绍问题分析、模型构建及Matlab代码实现过程&#xff0c;为类似的时间优化问题提供参考&#xff0c;助力提升流程效率。 关键词&#x…...

【暑期实习之战】2024年美团秋招技术岗第一批笔试(练习)

选择题 6. 在MySQL中可以用来执行预处理语句的是() A execute B prepare C deallocate D using prepare:用于预编译SQL语句(为执行做准备),但并非执行动作本身。execute:专门用于执行已通过 PREPARE 预处理的语句,是运行预编译查询的关键步骤。✔deallocate prepare:…...

VLAN详解

VLAN&#xff08;虚拟局域网&#xff09;详解 1. 基本概念 VLAN&#xff08;Virtual Local Area Network&#xff09;是一种通过逻辑划分而非物理连接实现的局域网技术&#xff0c;允许在同一物理网络基础设施上创建多个独立的广播域。 2. 核心功能 功能说明广播域隔离不同V…...

[leetcode]1786. 从第一个节点出发到最后一个节点的受限路径数(Dijkstra+记忆化搜索/dp)

题目链接 题意 给定一个无向连通图&#xff0c;edges{u,v,w} 表示 u u u和 v v v之间有一条无向边&#xff0c;边权为 w w w n n n个点 [ 1 , n ] [1,n] [1,n] 每个点到 n n n的最短路为 d i s [ i ] dis[i] dis[i] 定义受限路径: 从起点 1 1 1到 n n n&#xff0c;路径上的…...

Ubuntu挂载HDD迁移存储PostgreSQL数据

关联博客&#xff1a;windows通用网线连接ubuntu实现ssh登录、桌面控制、文件共享 背景&#xff1a; 在个人ubuntu机器上安装了pgsql&#xff0c;新建了一张表插入了2000w数据用于模拟大批量数据分页查询用&#xff0c;但是发现查询也不慢&#xff08;在公司测试环境查询1700…...

设计模式简述(五)建造者模式

建造者模式 描述基本要素协调类使用 描述 建造者模式属于创造型设计模式。 通常用于构建一系列复杂对象&#xff0c;这些对象有一定的共性。 我们可以通过不同的建造者&#xff0c;组装不同的对象 与工厂模式的区别&#xff0c;建造者模式更侧重与基于基础构件组装而非直接创…...

ARXML文件解析-2

目录 1 摘要2 常见ARXML文件注意事项以及常见问题2.1 注意事项2.2 常见问题2.3 答疑 3 ARXML解读/编辑指南3.1 解读ARXML文件的步骤3.2 编辑ARXML文件的方法3.3 验证与调试 4 总结 1 摘要 本文主要对ARXML文件的注意事项、常见问题以及解读与编辑进行详细介绍。 上文回顾&…...

Docker设置代理

目录 前言创建代理文件重载守护进程并重启Docker检查代理验证 前言 拉取flowable/flowable-ui失败&#xff0c;用DaoCloud源也没拉下来&#xff0c;不知道是不是没同步。索性想用代理拉镜像。在此记录一下。 创建代理文件 创建docker代理配置 sudo mkdir -p /etc/systemd/s…...

ASP.NET Core Web API 参数传递方式

文章目录 前言一、参数传递方式路由参数&#xff08;Route Parameters&#xff09;查询字符串参数&#xff08;Query String Parameters&#xff09;请求体参数&#xff08;Request Body&#xff09;表单数据&#xff08;Form Data&#xff09;请求头参数&#xff08;Header Pa…...

火语言RPA--PgSQL-导入数据表格

【组件功能】&#xff1a;导入特定的表格数据到包含同样字段的数据表 将表格对象数据通过数据库操作对象导入到指定数据库。 配置预览 配置说明 源表格 表格来源有“来自表格对象”和“来自表达式”2种&#xff0c;表达式支持DataTable类型变量。 对象 对应来自表格对象&…...

Spring Cloud 网关及配置管理教学

一、课程目标 深入理解 Spring Cloud 中网关和配置管理的核心概念、原理及应用场景。熟练掌握 Spring Cloud Gateway 的配置与开发&#xff0c;能够实现请求路由、登录校验、用户信息传递等功能。学会使用 Nacos 进行配置管理&#xff0c;包括共享配置、配置热更新和动态路由的…...

202520 | 微服务

微服务 VS 单体架构 单体架构&#xff08;Monolithic Architecture&#xff09;和微服务架构&#xff08;Microservices Architecture&#xff09;是两种主流的软件设计模式&#xff0c;它们在开发、部署、扩展和维护等方面有显著差异。以下是两者的详细对比&#xff1a; 1. 定…...

32信号和槽_信号和槽存在的意义(2)

① 一个学生,可以选择多门课程来学习 一门课程,也可以被多个同学来选择 ② 张三这个同学,可以选 语文和数学 . 李四这个同学可以选 语文 和 英语 语文这门课程,既可以被张三选择,也可以被李四选择~~ ③ 引入第三张表作为关联表 ④一个信号,可以 connect 到多个槽函数上 一个槽…...

Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?

一、确定 MySQL 安装路径&#xff1a; 如果你是使用 Homebrew 安装的 MySQL&#xff0c;通常安装路径是 /usr/local/mysql/bin 。 如果你是通过官方 DMG 安装包安装的 MySQL&#xff0c;默认安装路径可能是 /usr/local/mysql/bin 。你可以在终端中使用以下命令来查找 MySQL 的…...

Django REST Framework系列教程(9)——过滤与排序

目录 前情回顾 方法一: 重写get_queryset方法 方法二: 使用django-filter 安装django-filter 自定义FilterSet类 方法三: 使用SearchFilter类 自定义SearchFilter类 排序OrderingFilter类 在前面的DRF系列教程中&#xff0c;我们以博客为例介绍了序列化器(Serializer),…...

工业级主题系统程序设计

一、架构优化方案 #mermaid-svg-gB72o6CBc2UMgkrv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gB72o6CBc2UMgkrv .error-icon{fill:#552222;}#mermaid-svg-gB72o6CBc2UMgkrv .error-text{fill:#552222;stroke:#5…...

Java 逐梦力扣之旅_[204. 计数质数]

题目: 204. 计数质数 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2&#xff1a; 输入&#xff1a;n 0 输出&…...

[3.3] 阻塞与非阻塞通信 理论+代码

文章目录 1. 阻塞通信的发生和解决2. 点对点通信应用程序案例 - 随机步行&#xff08;Random Walk&#xff09; 1. 阻塞通信的发生和解决 MPI的p2p中包括两种模式&#xff1a; a. 阻塞通信&#xff08;Blocking&#xff09; MPI_Send 和 MPI_Recv 在返回前&#xff0c;必须满…...

node_modules\deasync: Command failed.

运行&#xff1a;“yarn install” 时报错 PS D:\WebPro\hainan-mini-program> yarn install yarn install v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... warning " > babel-loader8.2.2" has un…...

二十种中药果实识别分类系统,Python/resnet18/pytorch

二十种中药果实识别分类系统,Python/resnet18/pytorch 基于pytorch训练, resnet18网络&#xff0c;可用于训练其他分类问题&#xff0c;也可自己重新训练 20类中药材具体包括&#xff1a;(1) 补骨脂&#xff0c;(2) 草豆蔻&#xff0c;(3) 川楝子&#xff0c;(4) 地肤子&…...

C++·异常

目录 概念 使用 异常的抛出和捕获 栈展开 catch匹配 继承体系例子 异常重新抛出 异常安全问题 例&#xff1a; 异常规范 小知识 概念 异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理&#xff0c; 异常使得我们能够将问题的…...

C 语言高级编程指南:回调函数与设计模式

C 语言高级编程指南&#xff1a;回调函数与设计模式 目录 回调函数详解C语言中的设计模式高级回调函数应用内存管理与安全多线程环境下的设计模式 回调函数详解 1. 什么是回调函数&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是一个通过函数指针调用的…...

SeaTunnel系列之:Apache SeaTunnel编译和安装

Apache SeaTunnel编译 Prepare编译克隆源代码本地安装子项目从源代码构建 SeaTunnel构建子模块安装 JetBrains IDEA Scala 插件安装 JetBrains IDEA Lombok 插件代码风格运行简单示例不仅如此 安装下载 SeaTunnel 发布包下载连接器插件从源代码构建 SeaTunnel 运行 SeaTunnel 在…...

zk基础—5.Curator的使用与剖析二

大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curator实现分布式Barrier 6.基于Curator实现分布式计数器 7.基于Curator实现zk的节点和子节点监听机制 8.基于Curator创…...

bge-m3+deepseek-v2-16b+离线语音能力实现离线文档向量化问答语音版

ollama run deepseek-v2:16b ollama pull bge-m3 1、离线听写效果的大幅度提升。50M 1.3G&#xff08;每次初始化都会很慢&#xff09;---优化到首次初始化使用0延迟响应。 2、文档问答历史问题处理与优化&#xff0c;文档问答离线策略讨论与参数暴露。 3、离线大模型答复中断…...

[leetcode]3123. 最短路径中的边(Dijkstra+反向搜索找边)

题目链接 题意 给定n个点的无向图 给定一个edges{u,v,w}数组 表示u到v有一条边权为w的无向边 返回一个bool数组ans&#xff0c;ans[i]1表示edges[i]在任意一条0到n-1的最短路中 思路 先Dijkstra找出最短路再从n-1出发 反向搜索 当前点i&#xff0c;邻接点j&#xff0c;边权…...

构建macOS命令速查手册:基于Flask的轻量级Web应用实践

构建macOS命令速查手册&#xff1a;基于Flask的轻量级Web应用实践 一、项目概述 本文介绍一个基于Flask框架开发的macOS命令速查Web应用。该应用通过结构化的命令数据存储和响应式前端设计&#xff0c;为用户提供便捷的命令查询体验&#xff0c;具备以下特点&#xff1a; 六…...

中国移动启动数字乡村“五新升级”:年底前,行政村5G覆盖达95%

大湾区经济网品牌观察报道&#xff0c;近日&#xff0c;在国家全面推进乡村振兴的战略背景下&#xff0c;中国移动近日发布数字乡村升级行动计划&#xff0c;以“AI大模型数智化平台”为核心引擎&#xff0c;围绕“五新升级”构建“两个新型”信息服务体系。 一、数字基建筑基&…...

借助mcpo在open-webui中使用mcp

open-webui前几天发布了0.6版本&#xff0c;我立即进行了升级。新版本中一个重要功能是通过mcpo方式支持了mcp server。本文将介绍mcpo是什么&#xff0c;以及如何在open-webui中使用它。同时&#xff0c;我也会分享几个在接入过程中遇到的问题及解决方案。 首先来介绍mcpo&…...

Mysql的备份还原

MySQL日志 日志类型 MySQL有几个不同的日志文件&#xff0c;可以帮助你找出mysqld内部发生的事情&#xff1a; 日志文件记入文件中的信息类型错误日志记录启动、运行或停止时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的语句。主要用…...

测试:正交法设计测试用例

目录 一、什么是正交法 二、利用正交表设计测试用例 正交法设计测试用例的步骤 一、什么是正交法 正交法的目的是为了减少测试用例的数量&#xff0c;让尽可能少的用例覆盖两两组合。认识正交表。 最简单的正交表是L4(2^3)&#xff0c;含意如下&#xff1a; “L”代表正…...