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

根据返回字段名进行查询数据的方法

在Java后端开发中,根据前端返回的字段名动态查询数据库是一种常见的需求。这种需求通常通过使用反射和动态SQL来实现。下面是一个完整的代码示例,它展示了如何根据前端返回的字段名动态查询数据库中的数据。

一、根据前端返回的字段名动态查询数据库中的数据示例

1.准备工作

(1)数据库设置:
  • 假设我们有一个名为users的表,结构如下:

    CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255),email VARCHAR(255),age INT
    );
    
  • 插入一些测试数据:

    INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 30);
    INSERT INTO users (name, email, age) VALUES ('Bob', 'bob@example.com', 25);
    
(2)依赖库:
  • 使用MySQL作为数据库。
  • 使用JDBC进行数据库连接。
  • 使用Spring Boot简化配置和依赖管理(但示例中不涉及复杂的Spring框架功能,只关注核心逻辑)。

2.核心代码

(1)数据库连接配置

首先,在src/main/resources目录下创建一个application.properties文件,配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_database_username
spring.datasource.password=your_database_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
(2) 动态查询工具类

创建一个工具类DynamicQueryUtil,用于根据字段名生成动态SQL并执行查询:

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class DynamicQueryUtil {@Value("${spring.datasource.url}")private String url;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;public List<Map<String, Object>> queryByFields(List<String> fields, String tableName) {List<Map<String, Object>> results = new ArrayList<>();String sql = "SELECT " + String.join(", ", fields) + " FROM " + tableName;try (Connection conn = DriverManager.getConnection(url, username, password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql)) {while (rs.next()) {Map<String, Object> row = new HashMap<>();for (String field : fields) {row.put(field, rs.getObject(field));}results.add(row);}} catch (SQLException e) {e.printStackTrace();}return results;}
}
(3)控制器类

创建一个控制器类UserController,用于接收前端请求并调用动态查询工具类:

import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate DynamicQueryUtil dynamicQueryUtil;@GetMapping("/query")public List<Map<String, Object>> queryUsers(@RequestParam List<String> fields) {return dynamicQueryUtil.queryByFields(fields, "users");}
}
(4)启动类

创建一个Spring Boot启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DynamicQueryApplication {public static void main(String[] args) {SpringApplication.run(DynamicQueryApplication.class, args);}
}

3.运行示例

(1)启动Spring Boot应用。

(2)使用浏览器或Postman等工具发送GET请求到http://localhost:8080/api/users/query?fields=name,email

(3)响应结果应类似于:

[{"name": "Alice","email": "alice@example.com"},{"name": "Bob","email": "bob@example.com"}
]

4.注意事项

(1)安全性:在实际应用中,需要对前端传入的字段名和表名进行校验,防止SQL注入攻击。

(2)性能:频繁拼接SQL字符串并创建连接可能对性能有影响,应考虑使用连接池和缓存机制。

(3)扩展性:可以使用更高级的ORM框架(如MyBatis或Hibernate)来简化数据库操作,并增强安全性和性能。

二、更详细的代码示例

下面是一个更详细的代码示例,它包含了完整的Spring Boot项目结构,并详细解释了每一步。这个示例将展示如何创建一个简单的Spring Boot应用,该应用能够根据前端请求的字段名动态地查询数据库中的数据。

1.项目结构

dynamic-query-example
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── dynamicquery
│   │   │               ├── DynamicQueryApplication.java
│   │   │               ├── controller
│   │   │               │   └── UserController.java
│   │   │               ├── service
│   │   │               │   └── UserService.java
│   │   │               ├── service.impl
│   │   │               │   └── UserServiceImpl.java
│   │   │               ├── util
│   │   │               │   └── DynamicQueryUtil.java
│   │   │               └── model
│   │   │                   └── User.java
│   │   ├── resources
│   │   │   ├── application.properties
│   │   │   └── data.sql  (可选,用于初始化数据库)
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── dynamicquery
│                       └── DynamicQueryApplicationTests.java
└── pom.xml

2.pom.xml

首先,确保我们的pom.xml包含了必要的依赖项,如Spring Boot Starter Web和MySQL Connector。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>dynamic-query-example</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>dynamic-query-example</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

3.application.properties

配置数据库连接信息。

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_database_username
spring.datasource.password=your_database_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

4.数据模型 User.java

定义一个简单的User类,它对应数据库中的users表。

package com.example.dynamicquery.model;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private String email;private Integer age;// Getters and Setters
}

5.动态查询工具类 DynamicQueryUtil.java

这个类将负责根据字段名生成SQL并执行查询。注意,这个示例中我们不会直接使用它,而是用JPA来演示更现代的方法。但为了完整性,我还是提供了这个类的代码。

java复制代码// ... (省略了DynamicQueryUtil类的代码,因为它在这个示例中不会被直接使用)

注意:在实际应用中,我们应该使用JPA的EntityManager或Spring Data JPA的JpaRepository来执行动态查询,而不是直接使用JDBC。下面的UserServiceImpl类将展示如何使用JPA来实现动态查询。

6. 服务接口 UserService.java

定义一个服务接口。

package com.example.dynamicquery.service;import java.util.List;
import java.util.Map;public interface UserService {List<Map<String, Object>> findUsersByFields(List<String> fields);
}

7.服务实现类 UserServiceImpl.java

首先,我们假设 User 类已经存在,并且包含了 idnameemail, 和 age 属性,以及相应的getter和setter方法。这里我们不会完整地展示 User 类,因为它通常很简单,只是包含一些基本的字段和JPA注解。

接下来,我们完善 User_ 类,使其能够作为JPA元模型的模拟。在实际项目中,我们会使用JPA提供的元模型生成器来自动生成这些类。

以下是完整的 UserServiceImpl.java 代码,包括一个简化的 User 类定义和完善的 User_ 类:

package com.example.dynamicquery.model;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private String email;private Integer age;// Getters and Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}---package com.example.dynamicquery.service.impl;import com.example.dynamicquery.model.User;
import com.example.dynamicquery.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.*;
import java.util.*;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate EntityManager entityManager;@Overridepublic List<Map<String, Object>> findUsersByFields(List<String> fields) {if (fields == null || fields.isEmpty()) {throw new IllegalArgumentException("Fields list cannot be null or empty");}CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery<Object[]> cq = cb.createQuery(Object[].class);Root<User> user = cq.from(User.class);List<Selection<?>> selections = new ArrayList<>();for (String field : fields) {switch (field) {case "id":selections.add(user.get("id"));break;case "name":selections.add(user.get("name"));break;case "email":selections.add(user.get("email"));break;case "age":selections.add(user.get("age"));break;default:throw new IllegalArgumentException("Unknown field: " + field);}}cq.select(cb.array(selections.toArray(new Selection[0])));TypedQuery<Object[]> query = entityManager.createQuery(cq);List<Object[]> results = query.getResultList();List<Map<String, Object>> userList = new ArrayList<>();for (Object[] result : results) {Map<String, Object> userMap = new HashMap<>();for (int i = 0; i < fields.size(); i++) {userMap.put(fields.get(i), result[i]);}userList.add(userMap);}return userList;}// 静态内部类用于模拟JPA的元模型(Metamodel),实际项目中应使用自动生成的元模型// 注意:在实际项目中,我们不需要手动编写这个类,JPA提供者会自动为我们生成。// 这里只是为了演示目的而包含它。private static class User_ {// 这些字段是模拟的,实际中应由JPA工具自动生成public static final SingularAttribute<User, Long> id = mockAttribute("id");public static final SingularAttribute<User, String> name = mockAttribute("name");public static final SingularAttribute<User, String> email = mockAttribute("email");public static final SingularAttribute<User, Integer> age = mockAttribute("age");// 模拟方法,实际中不存在private static <T, X> SingularAttribute<T, X> mockAttribute(String name) {return null; // 实际返回的是由JPA提供者生成的SingularAttribute实例}}// 注意:上面的mockAttribute方法是为了编译通过而添加的,实际代码中应该移除。// 在实际项目中,我们应该直接使用JPA提供的元模型类,而不是这个模拟的User_类。// 由于这个示例是为了演示动态查询,我们保留了User_类,但在实际应用中应忽略它。
}

重要说明

(1)在实际项目中,我们应该使用JPA提供者(如Hibernate)自动生成的元模型类,而不是上面的 User_ 类。这些类通常位于与实体类相同的包中,并且以 _ 后缀命名(例如,User_)。

(2)上面的 mockAttribute 方法是为了编译通过而添加的,实际代码中应该移除。这个方法在实际项目中不存在,因为它只是模拟了JPA元模型的行为。

(3)在调用 user.get(...) 时,我们直接使用了字符串属性名(例如 "id""name" 等)。在实际项目中,我们应该使用JPA元模型类中的静态字段来引用这些属性,以提高类型安全性和重构能力。例如,我们应该使用 User_.id 而不是 "id"。但是,由于我们在这个示例中模拟了元模型,所以我们直接使用了字符串。

(4)在实际项目中,我们可能还需要处理一些额外的边界情况,比如字段名的大小写敏感性、空值处理等。

(5)考虑到性能和安全性,动态查询应该谨慎使用,并确保传入的字段名是经过验证和授权的。

三、内置的http.server模块来创建一个基本的HTTP服务器

这里将以Python语言编写一个简单的Web服务器为例,使用内置的http.server模块来创建一个基本的HTTP服务器。这个示例将展示如何启动一个服务器,并在特定端口上监听请求,然后返回一个简单的HTML响应。

1.代码示例

# 导入必要的模块
from http.server import SimpleHTTPRequestHandler, HTTPServer# 定义一个自定义的请求处理器类,继承自SimpleHTTPRequestHandler
class MyRequestHandler(SimpleHTTPRequestHandler):def do_GET(self):# 设置响应状态码self.send_response(200)# 设置响应头self.send_header('Content-type', 'text/html')self.end_headers()# 准备响应体response_body = """<!DOCTYPE html><html><head><title>Simple Web Server</title></head><body><h1>Hello, World!</h1><p>This is a simple web server running on Python.</p></body></html>"""# 发送响应体self.wfile.write(response_body.encode('utf-8'))# 定义服务器的地址和端口
server_address = ('', 8080)# 创建HTTP服务器对象,传入服务器地址和请求处理器类
httpd = HTTPServer(server_address, MyRequestHandler)# 打印服务器启动信息
print("Starting httpd server on port 8080...")# 启动服务器,开始监听请求
httpd.serve_forever()

2.代码说明:

(1)导入模块:首先,我们导入了SimpleHTTPRequestHandlerHTTPServer模块,这两个模块是Python标准库中用于创建HTTP服务器的。

(2)定义请求处理器:我们创建了一个名为MyRequestHandler的类,继承自SimpleHTTPRequestHandler。在这个类中,我们重写了do_GET方法,用于处理GET请求。

(3)设置响应:在do_GET方法中,我们首先设置了响应的状态码(200表示成功),然后设置了响应头(指定内容类型为HTML),最后准备了响应体(一个简单的HTML页面)。

(4)启动服务器:我们定义了服务器的地址和端口(这里监听所有接口的8080端口),然后创建了HTTPServer对象,并传入服务器地址和我们自定义的请求处理器类。最后,调用serve_forever方法启动服务器,使其开始监听请求。

3.运行代码:

将上述代码保存为一个Python文件(例如simple_server.py),然后在命令行中运行该文件:

bash复制代码python simple_server.py

服务器启动后,我们可以在浏览器中访问http://localhost:8080,我们将看到一个简单的HTML页面,显示“Hello, World!”和一条消息说明这是一个简单的Web服务器。

这个示例展示了如何使用Python标准库中的模块创建一个基本的Web服务器,并处理HTTP GET请求。根据需要,我们可以进一步扩展这个示例,添加更多的请求处理方法,处理POST请求,或者从请求中获取参数等。

相关文章:

根据返回字段名进行查询数据的方法

在Java后端开发中&#xff0c;根据前端返回的字段名动态查询数据库是一种常见的需求。这种需求通常通过使用反射和动态SQL来实现。下面是一个完整的代码示例&#xff0c;它展示了如何根据前端返回的字段名动态查询数据库中的数据。 一、根据前端返回的字段名动态查询数据库中的…...

使用ENSP实现静态路由

一、双路由器静态路由 1.项目拓扑 2.项目实现 (1)路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为192.168.1.1/24 ip ad…...

SpringBoot3+Vue3开发图书馆管理系统

1 项目介绍 图书馆管理系统&#xff0c;管理图书、用户、借书、还书、实时监测归还是否逾期&#xff0c;逾期未归还会生成违规记录。违规状态不可借阅图书。需缴纳罚金&#xff0c;消除违规记录。可动态设置图书最多累计借阅数量上限和最长借阅天数上限&#xff0c;当用户满足…...

常见的 git 提交备注类型

在 Git 提交中&#xff0c;常见的提交备注&#xff08;commit message&#xff09;遵循一定的约定&#xff0c;这有助于代码管理、版本控制以及团队协作。fix 和 feat 是常见的提交类型&#xff0c;下面是这两个的含义&#xff0c;以及其他常见的提交类型。 常见的 Git 提交备…...

Redis 的代理类注入失败,连不上 redis

在测试 redis 是否成功连接时&#xff0c;发现 bean 没有被创建成功&#xff0c;导致报错 根据报错提示&#xff0c;需要我们添加依赖&#xff1a; <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>&l…...

Hook 技术:修改 Android 系统属性,提升应用调试和定制化能力

Hook 技术&#xff1a;修改 Android 系统属性&#xff0c;提升应用调试和定制化能力 我知道很多小伙伴&#xff0c;尤其是玩 Android 的开发者&#xff0c;都会有这种需求&#xff1a; 想修改设备的 系统属性&#xff0c;比如 设备型号、API 版本、屏幕分辨率 或 密度&#x…...

Excel如何把两列数据合并成一列,4种方法

Excel如何把两列数据合并成一列,4种方法 参考链接:https://baijiahao.baidu.com/s?id=1786337572531105925&wfr=spider&for=pc 在Excel中,有时候需要把两列或者多列数据合并到一列中,下面介绍4种常见方法,并且提示一些使用注意事项,总有一种方法符合你的要求:…...

英文版本-带EXCEL函数的数据分析

一、问题&#xff1a; 二、表格内容 三、分析结果 四、具体的操作步骤&#xff1a; 销售工作表公式设计与数据验证 类别&#xff08;Category&#xff09;列公式&#xff1a; 在Category列&#xff08;假设为D列&#xff09;&#xff0c;根据ProductCode在Catalogue工作表中查找…...

LangChain入门

LangChain入门 &#xff5c; 豆包MarsCode AI 刷题 本篇文章为《LangChain 实战课》前三节课的总结性文章&#xff0c;主要内容包含内容梳理与总结&#xff0c;学习记录&#xff0c;以及一些思考。 01开篇词&#xff5c;带你亲证AI应用开发的“奇点”时刻 内容 这篇文章介绍…...

STM32-- 串口介绍

rs485、rs232、rs422 rs485使用&#xff1a; max3485&#xff1a;3.3v左右驱动 max485&#xff1a;5v左右驱动&#xff0c;不过有时候3.3v驱动也可以使用&#xff0c;具体有什么问题或者通过电路规避问题还没有了解过。 rs485和rs422有相同的地方&#xff0c;485满足422的规…...

【Python TensorFlow】进阶指南(续篇三)

在前几篇文章中&#xff0c;我们探讨了TensorFlow的高级功能&#xff0c;包括模型优化、分布式训练、模型解释等多个方面。本文将进一步深入探讨一些更具体和实用的主题&#xff0c;如模型持续优化的具体方法、异步训练的实际应用、在线学习的实现细节、模型服务化的最佳实践、…...

仓颉——申请内测、环境搭建、编译测试

2024年6月21日&#xff0c;华为仓颉正式公开发布。 不少同学看过仓颉白皮书后&#xff0c;都在找SDK从哪下载&#xff0c;HelloWorld怎么跑。仓颉公众号也及时发布了内测的方式&#xff0c;我也亲自走了一遍整个流程&#xff0c; 一&#xff0c;申请内测 关注“仓颉编程语言…...

C语言教程指针笔记整理(二)

https://www.bilibili.com/video/BV1cx4y1d7Ut?spm_id_from333.788.videopod.episodes&vd_sourcee8984989cddeb3ef7b7e9fd89098dbe8&p107 本篇为贺宏宏老师C语言教程指针部分笔记整理 //8-19 一维数组和二维数组 // int arr[4] [][][][] //含义&#xff1a; //1.arr…...

3.无重复字符的最长子串 python

无重复字符的最长子串 题目描述示例 1:示例 2:示例 3:提示&#xff1a;题目链接 解题思路Python 实现详细解释 题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长 子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子…...

NIST 发布后量子密码学转型战略草案

美国国家标准与技术研究所 (NIST) 发布了其初步战略草案&#xff0c;即内部报告 (IR) 8547&#xff0c;标题为“向后量子密码标准过渡”。 该草案概述了 NIST 从当前易受量子计算攻击的加密算法迁移到抗量子替代算法的战略。该草案于 2024 年 11 月 12 日发布&#xff0c;开放…...

高危,Laravel参数注入漏洞安全风险通告

今日&#xff0c;亚信安全CERT监控到安全社区研究人员发布安全通告&#xff0c;披露了Laravel 参数注入漏洞(CVE-2024-52301)。在受影响的版本中&#xff0c;Application.php 文件的 detectEnvironment 函数直接使用了 $_SERVER[argv]&#xff0c;但没有检查运行环境是否为 CLI…...

【漏洞复现】|智互联SRM智联云采系统quickReceiptDetail SQL注入漏洞

漏洞描述 智互联(深圳)科技有限公司SRM智联云采系统针对企业供应链管理难题&#xff0c;及智能化转型升级需求&#xff0c;智联云采依托人工智能、物联网、大数据、云等技术&#xff0c;通过软硬件系统化方案&#xff0c;帮助企业实现供应商关系管理和采购线上化、移动化、智能…...

【Visual Studio系列教程】如何在 VS 上编程?

上一篇博客中&#xff0c;我们介绍了《什么是 Visual Studio&#xff1f;》。本文&#xff0c;我们来看第2篇《如何在 VS 上编程&#xff1f;》。阅读本文大约10 分钟。我们会向文件中添加代码&#xff0c;了解 Visual Studio 编写、导航和了解代码的简便方法。 本文假定&…...

Pytest-Bdd-Playwright 系列教程(12):步骤参数 parsers参数解析

Pytest-Bdd-Playwright 系列教程&#xff08;12&#xff09;&#xff1a;步骤参数 & parsers参数解析 前言一、什么是步骤参数&#xff1f;二、pytest-bdd 的步骤参数用法2.1 简单字符串解析2.2 自定义正则表达式解析2.3 参数类型转换 三、案例&#xff1a;基于 pytest-bdd…...

java 增强型for循环 详解

Java 增强型 for 循环&#xff08;Enhanced for Loop&#xff09;详解 增强型 for 循环&#xff08;也称为 “for-each” 循环&#xff09;是 Java 从 JDK 5 开始引入的一种便捷循环语法&#xff0c;旨在简化对数组或集合类的迭代操作。 1. 基本语法 语法格式 for (类型 变量…...

RUST学习教程-安装教程

文章目录 参考文档安装教程更新卸载 参考文档 https://course.rs/first-try/installation.html 安装教程 Linux或者mac安装教程 curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh安装完成&#xff0c;当出现command not found的时候&#xff0c;需要source一下…...

第十六届蓝桥杯模拟赛(第一期)-c++/c

c/c蓝桥杯模拟赛题解&#xff0c;非常详细 质因数 1、填空题 【问题描述】 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问 2024 有多少个质因数。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提…...

使用uniapp编写APP的文件上传

使用uniapp插件文件选择、文件上传组件&#xff08;图片&#xff0c;视频&#xff0c;文件等&#xff09; - DCloud 插件市场 实用效果&#xff1a; 缺陷是只能一个一个单独上传...

Go语言从入门到精通

go相关命令 //对go源码进行编译&#xff0c;生成.exe文件 go build go文件名//直接运行go源码&#xff08;生成.exe文件执行后&#xff0c;又删除.exe文件&#xff09; go run go文件名go中的package和import /*package&#xff1a;用来声明这个文件是属于哪个包的*/ package…...

捉虫记录02-Nacos访问失败

目录 一、问题 二、排查 三、解决方案 一、问题 在访问nacos的时候出现以下问题&#xff1a; 二、排查 先用docker logs nacos来查找报错信息 docker logs nacos 看问题报错就是数据源问题&#xff0c;nacos没能连接上mysql 三、解决方案 第一步 docker restart mysql …...

安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!

在生死时速的紧急救援战场上&#xff0c;每一秒都至关重要&#xff01;随着科技的发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正在逐步渗透到医疗健康领域&#xff0c;改变着传统的医疗服务模式。 安宝特AR远程协助解决方案&#xff0c;凭借其先进的技术支持和创新…...

超详细:Redis分布式锁

如何基于 Redis 实现一个最简易的分布式锁&#xff1f; 不论是本地锁还是分布式锁&#xff0c;核心都在于“互斥”。 在 Redis 中&#xff0c; SETNX 命令是可以帮助我们实现互斥。SETNX 即 SET if Not eXists (对应 Java 中的 setIfAbsent 方法)&#xff0c;如果 key 不存在…...

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)

1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…...

MTK主板定制_联发科主板_MTK8766/MTK8768/MTK8788安卓主板方案

主流市场上的MTK主板通常采用联发科的多种芯片平台&#xff0c;如MT8766、MT6765、MT6762、MT8768和MT8788等。这些芯片基于64位Cortex-A73/A53架构&#xff0c;提供四核或八核配置&#xff0c;主频可达2.1GHz&#xff0c;赋予设备卓越的计算与处理能力。芯片采用12纳米制程工艺…...

k8s篇之控制器类型以及各自的适用场景

1. k8s中控制器介绍 在 Kubernetes 中,控制器(Controller)是集群中用于管理资源的关键组件。 它们的核心作用是确保集群中的资源状态符合用户的期望,并在需要时自动进行调整。 Kubernetes 提供了多种不同类型的控制器,每种控制器都有其独特的功能和应用场景。 2. 常见的…...

VideoCrafter模型部署教程

一、介绍 VideoCrafter是一个功能强大的AI视频编辑和生成工具&#xff0c;它结合了深度学习和机器学习技术&#xff0c;为用户提供了便捷的视频制作和编辑体验。 系统&#xff1a;Ubuntu22.04系统&#xff0c;显卡&#xff1a;4090&#xff0c;显存&#xff1a;24G 二、基础…...

mysql 与 mybatis 错误记录

DATE_FORMAT(FROM_UNIXTIME(start_time / 1000)只能传秒级时间戳&#xff0c;毫秒级时间戳group后不能select; tinyint(1)会被mybatis自动翻译为Boolean值&#xff0c;可以使用resultMap重新映射一下来解决&#xff0c;select使用了别名&#xff0c;在resultMap中映射column也必…...

本地git多用户ssh配置

仅作备份&#xff0c;不做解释 1. ~/.ssh/config Host jeadyx.gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_jeadyxHost jeady5.gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_…...

macbook外接2k/1080p显示器调试经验

准备工具 电脑 满足电脑和显示器要求的hdmi线或者转接头或者扩展坞 betterdisplay软件 Dell P2419H的最佳显示信息如下 飞利浦 245Es 2K的最佳显示比例如下 首选1152...

如何删除Kafka中的数据以及删除topic

如何删除Kafka数据已经以及删除topic呢&#xff1f; 1、删除数据 先启动Kafka实例 docker exec -it kafka-0 /bin/bash #进去容器 rm -rf /bitnami/kafka/data/* #删除数据 exit #退出如果删除失败&#xff0c;可能是数据不存在于/bitnami/kafka/data&#xff0c;使用 cd /o…...

wordpress二开-WordPress新增页面模板-说说微语

微语说说相当于一个简单的记事本&#xff0c;使用还是比较方便的。这个版本的说说微语CSS样式不兼容&#xff0c;可能有些主题无法适配&#xff0c;但是后台添加内容&#xff0c;前端显示的逻辑已经实现。可以当作Word press二开中自定义页面模板学习~ 一、后台添加说说微语模…...

Java学习笔记--数组常见算法:数组翻转,冒泡排序,二分查找

目录 一&#xff0c;数组翻转 二&#xff0c;冒泡排序 三&#xff0c;二分查找&#xff08;一尺之锤&#xff0c;日取其半&#xff0c;万世不竭&#xff09; 一&#xff0c;数组翻转 1.概述:数组对称索引位置上的元素互换&#xff0c;最大值数组序号是数组长度减一 创建跳板…...

使用 OpenAI 进行数据探索性分析(EDA)

探索性数据分析&#xff08;Exploratory Data Analysis, 简称 EDA&#xff09;是数据分析中不可或缺的环节&#xff0c;帮助分析师快速了解数据的分布、特征和潜在模式。传统的 EDA 通常需要手动编写代码或使用工具完成。现在&#xff0c;通过 OpenAI 的 GPT-4 模型&#xff0c…...

Jdk1.8新特性

新增的类以及常用的方法 在Java的java.util.concurrent包中&#xff0c;除了之前提到的并发工具类外&#xff0c;还有一些新增的类以及它们常用的方法。以下是一些例子&#xff1a; 新增的类 ‌CompletableFuture‌&#xff1a; CompletableFuture是Java 8中引入的一个类&a…...

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL&#xff08;丹摩智算&#xff09; 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…...

mock.js:定义、应用场景、安装、配置、使用

前言&#xff1a;什么是mock.js&#xff1f; 作为一个前端程序员&#xff0c;没有mockjs你不感觉很被动吗&#xff1f;你不感觉你的命脉被后端那个男人掌握了吗&#xff1f;所以&#xff0c;我命由我不由天&#xff01;学学mock.js吧&#xff01; mock.js 是一个用于生成随机…...

优化 MFC CGridCtrl 的表格布局与功能

在使用 MFC 的 CGridCtrl 控件创建表格时&#xff0c;遇到的一个典型问题是&#xff0c;当表格滚动条出现时&#xff0c;最后一列会显示空白。这篇博客将记录解决这一问题的详细过程&#xff0c;同时总结了 CGridCtrl 初始化及优化的关键步骤&#xff0c;帮助开发者快速搭建一个…...

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色,类似材质丢失

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色&#xff0c;类似材质丢失 Addressable Play Mode Script加载模式 选择 Use Existiing Build 1.Unity 切换到 PC 平台&#xff0c;执行 Addressable Build 运行&#xff0c;加载 bundle 内的预制体 显示正常 2.Unit…...

直播预告| 深入探索 DB-GPT GraphRAG 的设计解读与优化

前言 感谢DB-GPT的社区朋友持续关注我们的源码解读系列&#xff5e;在前几期的直播中&#xff0c;我们深入探讨了DB-GPT的架构设计、智能体工作流、Agent开发等话题&#xff0c;受到了热烈反响。 本期&#xff0c;我们邀请到了社区的老朋友&#xff0c;也是DB-GPT GraphRag的维…...

C语言:指针变量作为函数参数

在c语言中&#xff0c;函数的参数不仅可以是整数&#xff0c;小数、字符等具体的数据&#xff0c;还可以是指向他们的指针&#xff0c;用指针变量做函数&#xff0c;参数可以将函数外部的地址传递给函数内部&#xff0c;使得在函数内部可以操作函数外部的数据&#xff0c;并且这…...

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项&#xff08;曼哈顿距离&#xff09; 2.3.2…...

RecyclerView详解——(四)缓存复用机制

稍微看了下源码和部分文章&#xff0c;在此做个小小的总结 RecyclerView&#xff0c;意思为可回收的view&#xff0c;那么相对于listview&#xff0c;他的缓存复用肯定是一大优化。 具体而言&#xff0c;当一个列表项被移出屏幕后&#xff0c;RecyclerView并不会销毁其视图&a…...

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典&#xff0c;右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本&#xff0c;很灵活&#xff0c;这里先介绍第一个版本&#xff0c;也是原始版本 Shingling one-hot …...

速盾:CDN缓存的工作原理是什么?

CDN&#xff08;内容分发网络&#xff09;是一种将内容分发到全球不同地理位置的网络架构&#xff0c;以提供更快速、可靠的内容传输。其核心原理是利用缓存技术&#xff0c;将数据内容分布到离用户最近的边缘节点上。当用户请求内容时&#xff0c;CDN将根据用户的IP地址&#…...

使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变

作者&#xff1a;来自 Elastic Greg Crist Elasticsearch 推出了一项新功能&#xff1a;Elastic AI Assistant for Search。你可以将其视为 Elasticsearch 和 Kibana 开发人员的内置指南&#xff0c;旨在回答问题、引导你了解功能并让你的生活更轻松。在 Microsoft AI Services…...