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

6、登录功能后端开发

6、登录功能后端开发

https://xiaoxueblog.com/ai/%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91.html

1、新建用户表SQL脚本

-- CREATE DATABASE aicloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 创建用户表
drop table if exists t_user;
CREATE TABLE `t_user`
(id          bigint      not null comment '主键 ID',`username`  VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',`password`  VARCHAR(200) NOT NULL DEFAULT '' COMMENT '密码',`photo`     VARCHAR(20)          DEFAULT NULL COMMENT '头像',`phone`     VARCHAR(20)          DEFAULT NULL COMMENT '手机',`status`    INT         NOT NULL DEFAULT '1' COMMENT '状态 1、启用 2、禁用',`use_count` INT         NOT NULL DEFAULT '0' COMMENT '每天可以使用大模型的次数',create_id   bigint               DEFAULT null comment '创建人ID',create_by   varchar(30)          DEFAULT null comment '创建人',create_time datetime             DEFAULT null comment '创建时间',update_by   varchar(30)          DEFAULT null comment '修改人',update_time datetime             DEFAULT null comment '修改时间',deleted     smallint             default 0 not null comment '删除 0、否 1、是',PRIMARY KEY (`id`)
) ENGINE = INNODBDEFAULT CHARSET = utf8mb4 COMMENT ='用户表';INSERT INTO t_user (id, username, password, photo, phone, status, use_count, create_id, create_by, create_time, update_by, update_time, deleted) VALUES (1, 'admin', '123456', null, null, 1, 0, null, null, null, null, null, 0);
--INSERT INTO t_user (id, username, password, photo, phone, status, use_count, create_id, create_by, create_time, update_by, update_time, deleted) VALUES (1, 'admin', '$2a$10$UceAABzbebzO5929OXo6auLgqaCOlfbQc6q.G4YqoVcerWPsGuIZa', null, null, 1, 0, null, null, null, null, null, 0);

2、BaseEntity

package com.xx.entities;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;import java.util.Date;/*** @Author: xueqimiao* @Date: 2024/11/13 15:55*/
@Setter
@Getter
public class BaseEntity {/*** 创建人ID*/@TableField(fill = FieldFill.INSERT)protected Long createId;/*** 创建人*/@TableField(fill = FieldFill.INSERT)protected String createBy;/*** 创建时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@TableField(fill = FieldFill.INSERT)protected Date createTime;/*** 修改人*/@TableField(fill = FieldFill.UPDATE)protected String updateBy;/*** 修改时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@TableField(fill = FieldFill.UPDATE)protected Date updateTime;/*** 删除 0、否 1、是*/@JsonIgnore@TableLogic(value = "0", delval = "1")private Integer deleted;
}

3、User

package com.xx.entities;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import java.io.Serializable;/*** 用户表** @TableName t_user*/
@TableName(value = "t_user")
@Data
public class User extends BaseEntity implements Serializable {@TableId@Schema(description = "")private Long id;@Schema(description = "用户名")private String username;@Schema(description = "密码")private String password;@Schema(description = "头像")private String photo;@Schema(description = "手机")private String phone;@Schema(description = "状态 1、启用 2、禁用")private Integer status;@Schema(description = "每天可以使用大模型的次数")private Integer useCount;
}
package com.xx.dto;import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import java.io.Serializable;/*** @Author: xueqimiao* @Date: 2025/3/5 14:34*/
@Data
public class LoginDTO implements Serializable {@Schema(description = "用户名")private String username;@Schema(description = "密码")private String password;
}
package com.xx.vo;import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import java.io.Serializable;/*** @Author: xueqimiao* @Date: 2025/3/5 14:38*/
@Data
public class LoginVO implements Serializable {@TableId@Schema(description = "")private Long id;@Schema(description = "用户名")private String username;@Schema(description = "密码")private String password;@Schema(description = "头像")private String photo;@Schema(description = "手机")private String phone;@Schema(description = "状态 1、启用 2、禁用")private Integer status;@Schema(description = "每天可以使用大模型的次数")private Integer useCount;
}

4、UserMapper

package com.xx.mapper;import com.xx.entities.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;/*** @author* @description 针对表【t_user(用户表)】的数据库操作Mapper* @createDate 2024-10-05 16:13:06* @Entity com.entities.User*/
public interface UserMapper extends BaseMapper<User> {}

5、UserService

package com.xx.service;import com.xx.dto.LoginDTO;
import com.xx.entities.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xx.vo.LoginVO;/*** @author* @description 针对表【t_user(用户表)】的数据库操作Service* @createDate 2024-10-05 16:13:06*/
public interface UserService extends IService<User> {/*** 登录* @param loginDTO* @return*/LoginVO login(LoginDTO loginDTO);
}
package com.xx.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xx.dto.LoginDTO;
import com.xx.exception.BusinessException;
import com.xx.service.UserService;
import com.xx.entities.User;
import com.xx.mapper.UserMapper;
import com.xx.utils.ValidationUtil;
import com.xx.utils.ValueUtil;
import com.xx.vo.LoginVO;
import org.springframework.stereotype.Service;/*** @author* @description 针对表【t_user(用户表)】的数据库操作Service实现* @createDate 2024-10-05 16:13:06*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>implements UserService {@Overridepublic LoginVO login(LoginDTO loginDTO) {if(ValidationUtil.isEmpty(loginDTO)){throw new BusinessException("请求参数不能为空");}if(ValidationUtil.isEmpty(loginDTO.getUsername()) || ValidationUtil.isEmpty((loginDTO.getPassword()))){throw new BusinessException("用户名或者密码不能为空");}LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();queryWrapper.eq(User::getUsername,loginDTO.getUsername());User user = getOne(queryWrapper);if(ValidationUtil.isEmpty(user)){// 这里不要直接报出用户名不存在throw new BusinessException("用户名或者密码错误");}if(!user.getPassword().equals(loginDTO.getPassword())){throw new BusinessException("用户名或者密码错误");}return ValueUtil.copyFieldValue(user,LoginVO.class);}
}

6、UserController

package com.xx.controller;import com.xx.common.Result;
import com.xx.dto.LoginDTO;
import com.xx.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @auther xx* @create 2024-10-03 19:48*/
@RestController
@RequestMapping("/user")
@Tag(name = "用户管理")
public class UserController {@Resourceprivate UserService userService;@Operation(summary = "用户登录")@PostMapping(value = "/login")public Result login(@RequestBody LoginDTO loginDTO) {return Result.ok(userService.login(loginDTO));}
}

7、MybatisPlusConfig

package com.xx.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan(value = {"com.xx.mapper"})
public class MybatisPlusConfig {}

8、全局异常

package com.xx.config;import com.xx.common.Result;
import com.xx.exception.BusinessException;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** @Author: xueqimiao* @Date: 2025/3/5 14:48*/
@Slf4j
@RestControllerAdvice
public class GlobalExcHandler {@ExceptionHandler(BusinessException.class)@ResponseStatus(HttpStatus.OK)@ResponseBodypublic Result<String> businessException(BusinessException e, HttpServletRequest request) {log.error("系统异常", e);return Result.error(e.getMessage());}}

9、application.yml

server:port: 8001spring:application:name: xx-ai-cloudai:openai:api-key:   # OpenAI API 密钥base-url: https://gitaigc.com  # OpenAI 基础 URLchat:options:model: gpt-3.5-turboimage:options:model: gpt-4-dalle
#      base-url: https://api.openai.com  # OpenAI 基础 URL# 以下是可选的配置,已经被注释掉# spring.ai.openai.base-url: https://api.openai.com# spring.ai.openai.api-key:# 生成文本(text-to-text)模型配置# spring.ai.openai.chat.options.model: gpt-3.5-turbo# spring.ai.openai.chat.options.temperature: 0.4# 生成图像(text-to-image)模型配置
#      spring.ai.openai.image.options.model: gpt-4-dalle
#      spring.ai.openai.image.options.model: gpt-3.5-turbo# ========================Redis 配置=====================
---
spring:data:redis:host: 127.0.0.1  # Redis 主机password: 123456  # Redis 密码port: 6379  # Redis 端口timeout: 1s  # Redis 连接超时# ========================SQL 初始化配置===================
---
spring:sql:init:mode: always  # 总是初始化数据库schema-locations: classpath:db/init.sql  # 初始化SQL文件位置# ========================数据库配置(Druid + MySQL 8)=======================
---
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource  # 数据源类型driver-class-name: com.mysql.cj.jdbc.Driver  # MySQL JDBC 驱动类名url: jdbc:mysql://127.0.0.1:3306/aicloud?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true  # 数据库连接 URLusername: root  # 数据库用户名password: mac_root  # 数据库密码druid:test-while-idle: false  # 配置 Druid 数据源的空闲连接检测# ========================MyBatis-Plus 配置===================
mybatis-plus:configuration:map-underscore-to-camel-case: true  # 将数据库表字段的下划线转为驼峰命名法mapper-locations: classpath:mapper/*.xml  # MyBatis 映射器文件的位置type-aliases-package: com.xx.entities  # MyBatis 类型别名包路径# ========================日志配置=======================
logging:level:com.xx: info  # 设置特定包的日志级别# ========================JSON 日期格式配置===================
---
spring:jackson:date-format: yyyy-MM-dd HH:mm:ss  # JSON 日期格式time-zone: GMT+8  # 设置时区为 GMT+8

10、登录页面

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Demo</title><!-- 请勿在项目正式环境中引用该 layui.css 地址 --><link href="/layui/css/layui.css" rel="stylesheet">
</head>
<body>
<style>.demo-login-container{width: 320px; margin: 21px auto 0;}.demo-login-other .layui-icon{position: relative; display: inline-block; margin: 0 2px; top: 2px; font-size: 26px;}
</style>
<form class="layui-form"><div class="demo-login-container"><div class="layui-form-item"><div class="layui-input-wrap"><div class="layui-input-prefix"><i class="layui-icon layui-icon-username"></i></div><input type="text" name="username" value="" lay-verify="required" placeholder="用户名" lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear"></div></div><div class="layui-form-item"><div class="layui-input-wrap"><div class="layui-input-prefix"><i class="layui-icon layui-icon-password"></i></div><input type="password" name="password" value="" lay-verify="required" placeholder="密   码" lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye"></div></div><div class="layui-form-item"><div class="layui-row"><div class="layui-col-xs7"><div class="layui-input-wrap"><div class="layui-input-prefix"><i class="layui-icon layui-icon-vercode"></i></div><input type="text" name="captcha" value="" lay-verify="required" placeholder="验证码" lay-reqtext="请填写验证码" autocomplete="off" class="layui-input" lay-affix="clear"></div></div><div class="layui-col-xs5"><div style="margin-left: 10px;"><img src="https://www.oschina.net/action/user/captcha" onclick="this.src='https://www.oschina.net/action/user/captcha?t='+ new Date().getTime();"></div></div></div></div><div class="layui-form-item"><input type="checkbox" name="remember" lay-skin="primary" title="记住密码"><a href="#forget" style="float: right; margin-top: 7px;">忘记密码?</a></div><div class="layui-form-item"><button class="layui-btn layui-btn-fluid" lay-submit lay-filter="demo-login">登录</button></div><div class="layui-form-item demo-login-other"><label>社交账号登录</label><span style="padding: 0 21px 0 6px;"><a href="javascript:;"><i class="layui-icon layui-icon-login-qq" style="color: #3492ed;"></i></a><a href="javascript:;"><i class="layui-icon layui-icon-login-wechat" style="color: #4daf29;"></i></a><a href="javascript:;"><i class="layui-icon layui-icon-login-weibo" style="color: #cf1900;"></i></a></span><a href="#reg">注册帐号</a></div></div>
</form><!-- 请勿在项目正式环境中引用该 layui.js 地址 -->
<script src="/layui/layui.js"></script>
<script>layui.use(function(){var form = layui.form;var layer = layui.layer;var jQuery = layui.$;// 提交事件form.on('submit(demo-login)', function (data) {var field = data.field; // 获取表单字段值// 此处可执行 Ajax 等操作jQuery.ajax({url: '/user/login',type: 'POST',contentType: 'application/json',data: JSON.stringify(field),success: function (result) {if (result.code == 200) {layer.msg("登录成功: "+result.result.username);} else {layer.msg("登录失败: "+result.code+"\t"+result.message);}}});return false; // 阻止默认 form 跳转});});
</script></body>
</html>

相关文章:

6、登录功能后端开发

6、登录功能后端开发 https://xiaoxueblog.com/ai/%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91.html 1、新建用户表SQL脚本 -- CREATE DATABASE aicloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 创建用户表 drop table if exi…...

「彻底卸载 Quay 容器仓库」:干净移除服务、镜像与配置的全流程指南

文章目录 &#x1f9f9; 第一步&#xff1a;停止并禁用 systemd 服务&#x1f6ae; 第二步&#xff1a;移除 Podman 容器与相关资源1. 删除 quay-app 容器2. 删除镜像&#xff08;如果你想彻底清理&#xff09;3. 删除挂载卷&#xff08;比如 SQLite 存储&#xff09; &#x1…...

C++从入门到实战(十五)String(上)介绍STL与String的关系,为什么有string类,String有什么用

C从入门到实战&#xff08;十五&#xff09;String&#xff08;上&#xff09; 前言一、STL与String的关系1. STL 是什么&#xff1f;2. String 是什么&#xff1f;3. String 与 STL 的关系 二、为什么有string类&#xff0c;有什么用1. 为什么需要 string 类&#xff1f;2. st…...

【Python 正则表达式】

Python 正则表达式通过 re 模块实现模式匹配&#xff0c;是文本处理的核心工具。以下是系统化指南&#xff0c;包含语法详解和实战案例&#xff1a; 一、正则基础语法 1. 元字符速查表 符号含义示例匹配结果.任意字符&#xff08;除换行符&#xff09;r"a.c"“abc”…...

【MySQL】第四弹——表的CRUD进阶(二)数据库设计

文章目录 &#x1f31f;范式&#x1f31f;表的设计&#x1f4ab;第一范式 1NF&#x1fa90;反例&#x1fa90;正例 &#x1f4ab;第二范式 2NF&#x1fa90;反例&#x1fa90;正例 &#x1f4ab;第三范式 3NF&#x1fa90;反例&#x1fa90;正例 &#x1f4ab;表的设计方法&…...

Unity基础学习(十五)核心系统——音效系统

目录 一、关于音频文件的导入相关 二、音频源组件Audio Source 三、Audio Listener的介绍 四、关于播放音乐的方式 五、麦克风输入相关 Microphone 类方法与属性总览​ 1. Start 方法​ ​2. End 方法​ ​3. IsRecording 方法​ ​4. GetPosition 方法​ ​5. devic…...

计算机视觉----常见卷积汇总

普通卷积   普通卷积大家应该都比较熟悉了&#xff0c;如果不熟悉的话&#xff0c;可以参考我之前的博客&#xff0c;或者去网上自行百度。这里主要想补充两个知识点。一&#xff1a;卷积核参数量怎么算&#xff1f; 二&#xff1a;如何高效的并行运算卷积滑窗&#xff1f; …...

【人工智能-agent】--Dify+Mysql+Echarts搭建了一个能“听懂”人话的数据可视化助手!

Echarts官网&#xff1a;https://echarts.apache.org/zh/index.html ECharts 是一个由百度团队开发的、基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型和强大的交互功能&#xff0c;能够帮助开发者轻松创建专业级的数据可视化应用。 核心特点 丰富的图…...

【专栏启动】开篇:为什么是 Django + Vue3?测试平台的技术选型与架构蓝图

【专栏启动】开篇&#xff1a;为什么是 Django Vue3&#xff1f;测试平台的技术选型与架构蓝图 前言一、为什么是 Django Vue3&#xff1f;二、测试平台的架构设计蓝图三、测试平台模块功能概述 结语 前言 一个高效、稳定、易用的测试平台&#xff0c;不仅能够帮助团队提升测…...

Rust 学习笔记:关于 Vector 的练习题

Rust 学习笔记&#xff1a;关于 Vector 的练习题 Rust 学习笔记&#xff1a;关于 Vector 的练习题哪个调用会报错&#xff1f;以下代码能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f;以下代码能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f;以下代码…...

Modbus TCP转Profinet网关:数字化工厂异构网络融合的核心枢纽

在现代工业生产中&#xff0c;随着智能制造和工业互联网的不断发展&#xff0c;数字化工厂成为了制造业升级的重要方向。数字化工厂的核心在于实现设备、数据和人的互联互通&#xff0c;而这其中&#xff0c;通信协议扮演着至关重要的角色。今天&#xff0c;我们就来探讨开疆智…...

精益数据分析(62/126):从客户访谈评分到市场规模估算——移情阶段的实战进阶

精益数据分析&#xff08;62/126&#xff09;&#xff1a;从客户访谈评分到市场规模估算——移情阶段的实战进阶 在创业的移情阶段&#xff0c;科学评估用户需求与市场潜力是决定产品方向的关键。今天&#xff0c;我们结合Cloud9 IDE的实战经验与《精益数据分析》的方法论&…...

各类开发教程资料推荐,Java / python /golang /js等

更多资源在文末&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447; 1. 入门首选&#xff08;易学且应用广&#xff09; Python 特点&#xff1a;语法简洁、易读&#xff0c;社区资源丰富。 用途&#…...

现代健康养生小贴士

在忙碌的现代生活中&#xff0c;掌握一些简单实用的健康养生技巧&#xff0c;能轻松为身体 “充电”&#xff0c;提升生活质量。以下从饮食、运动、作息等方面&#xff0c;为你带来科学易执行的养生建议。 一、饮食&#xff1a;吃对食物&#xff0c;为健康加分 早餐要吃好&am…...

每日一道leetcode(新学数据结构版)

208. 实现 Trie (前缀树) - 力扣&#xff08;LeetCode&#xff09; 题目 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动…...

ChromaDB 向量库优化技巧实战

chroma 一步步使用 安装 # 安装chromadb pip install chromadb,sentence_transformers# 不启动服务会出现sock.connect(sa)TimeoutError: timed out chroma run服务启动后&#xff0c;您将看到类似以下输出&#xff1a; 建立连接 部署完成后&#xff0c;需要建立与Chroma服…...

全国各地区经纬度数据(包含省、市、县)

全国各地区经纬度数据&#xff08;包含省、市、县&#xff09; 1、指标&#xff1a;行政区划代码、省份、城市、经度、纬度 2、来源&#xff1a;高德地图 3、用途&#xff1a;可用于空间相关研究 4、下载链接&#xff1a; 全国各地区经纬度数据&#xff08;包含省、市、县…...

记录一下seata后端数据库由mariadb10切换到mysql8遇到的SQLException问题

文章目录 前言一、问题记录二、参考帖子三、记录store.db.driverClassName 前言 记录一下seata后端数据库由mariadb10切换到mysql8遇到的SQLException问题。 一、问题记录 17:39:23.709 ERROR --- [ionPool-Create-1134013833] com.alibaba.druid.pool.DruidDataSource : …...

【Python 面向对象】

Python 的面向对象编程&#xff08;OOP&#xff09;通过类&#xff08;Class&#xff09;和对象&#xff08;Object&#xff09;实现代码结构化&#xff0c;支持封装、继承和多态三大特性。以下是系统化指南&#xff1a; 一、类与对象基础 1. 定义类 class Dog:# 类属性&…...

软考软件评测师——计算机组成与体系结构

目录 计算机寻址方式详解与对比分析 一、立即寻址 二、直接寻址 三、间接寻址 四、寄存器寻址 五、寄存器间接寻址 六、变址寻址 七、基址寻址 八、相对寻址 九、综合对比分析 计算机寻址方式详解与对比分析 一、立即寻址 核心概念 指令操作码后直接携带操作数值&a…...

宝元LNC数控数据采集方式、跨平台采集通讯方案介绍

文章目录 采集效果图通讯方案介绍技术名词解释技术细节小结 采集效果图 通讯方案介绍 老版本宝元&#xff1a;必须走TCP通讯&#xff0c;如LNC568A系列 今天主要介绍新版本的宝元&#xff0c;如采用M6800控制器的5800系列系统等 新版本宝元通讯方式&#xff1a; ①sdk通讯&…...

ZFile与Cpolar技术结合实现远程数据实时访问与集中管理的可行性分析

文章目录 前言1.关于ZFile2.本地部署ZFile3.ZFile本地访问测试4.ZFile的配置5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定ZFile公网地址 前言 在信息爆炸的年代&#xff0c;每个现代人都在数字浪潮中扮演着独特的角色。不论是商务精英、影像创作者还是学术达人&…...

JS手写代码篇---手写 Object.create

JS手写代码篇 在做手写题的时候&#xff0c;我们要思考两个问题 这个代码的作用是什么能够实现的效果是什么样子 1. 手写 Object.create 思路&#xff1a;创造一个对象&#xff0c;类似于Object.create()方法>将obj作为原型 // 手写 Object.create function create (ob…...

homeassistant安装

这里写自定义目录标题 homeassistant安装&#xff08;windows&#xff09;安装virtual boxhaos下载haos安装docker镜像地址更换安装File editor安装hacs安装Xiaomi Miot Auto问题排查 homeassistant安装&#xff08;windows&#xff09; 安装virtual box 百度搜索virtual box…...

Pythonnet - 实现.NET Core和Python进行混合编程

1 安装Pythonnet包 2...

C++23 新特性:ranges::contains 与 ranges::contains_subrange

文章目录 ranges::containsranges::contains_subrange编译器支持总结 C23 标准带来了许多令人兴奋的新特性&#xff0c;其中就包括了 ranges::contains 和 ranges::contains_subrange 这两个算法。这两个算法由提案 P2302R4 提出&#xff0c;它们为 C 程序员提供了更加丰富和…...

(C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)

目录 前言&#xff1a; 源代码&#xff1a; product.h product.c fileio.h fileio.c main.c 代码解析&#xff1a; 一、程序结构概述 二、product.c 函数详解 1. 初始化商品列表 Init_products 2. 添加商品 add_product 3. 显示商品 display_products 4. 修改商品 mo…...

Framebuffer显示bmp图片

代码&#xff1a; /* 标准输入输出头文件&#xff0c;提供文件操作和输入输出函数&#xff08;如printf&#xff09;*/ #include <stdio.h>/* 文件控制操作头文件&#xff0c;提供文件打开模式&#xff08;如O_RDWR&#xff09;和文件控制函数 */ #include <fcntl.h&…...

常用负载均衡技术有哪些?不同网络层面上的网络负载均衡技术

前言 负载均衡是一种策略&#xff0c;它能让多台服务器或多条链路共同承担一些繁重的计算或I/O任务&#xff0c;从而以较低成本消除网络瓶颈&#xff0c;提高网络的灵活性和可靠性。 在系统管理员发现网络性能不好时&#xff0c;可以通过网络负载均衡来分配资源&#xff0c;以…...

由于复制槽导致wal大量堆积的处理方案

文章目录 环境症状问题原因解决方案 环境 系统平台&#xff1a;N/A 版本&#xff1a;N/A 症状 数据库中的pg_wal占用大量空间&#xff0c;且不删除。 问题原因 复制槽占用早期的wal日志&#xff0c;导致wal归档后无法正常删除。 1. 排查复制槽情况&#xff1a; highgo# …...

用FileCodeBox打造私有文件传输:Ubuntu环境保姆级部署教程!

文章目录 前言1.Docker部署2.简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 在数字化浪潮席卷全球的当下&#xff0c;文件传输已成为现代职场的高频需求。当谈及资料交换场景时&#xff0c;许多用户往往抱怨传统工具存在界面复杂、功能卡顿、广告…...

从卡顿到丝滑:JavaScript性能优化实战秘籍

引言 在当今的 Web 开发领域&#xff0c;JavaScript 作为前端开发的核心语言&#xff0c;其性能表现对网页的加载速度、交互响应以及用户体验有着举足轻重的影响。随着 Web 应用的复杂度不断攀升&#xff0c;功能日益丰富&#xff0c;用户对于网页性能的期望也越来越高。从电商…...

win11平台下的docker-desktop中的volume位置问题

因为需要搞个本地的mysql数据库&#xff0c;而且本地安装的程序较多&#xff0c;不想再安mysql了&#xff0c;就想到使用docker来安装。而且因为数据巨大&#xff0c;所以想到直接使用转移data文件夹的方式。 各种查询&#xff0c;而且还使用ai查询&#xff0c;他们都提到&…...

掌握Multi-Agent实践(七):基于AgentScope分布式模式实现多智能体高效协作[并行加速大模型辅助搜索、分布式多用户协同辩论赛]

之前的案例都是运行在单台机器上以单进程形式运行,受限于 Python 的全局解释器锁,实际只能有效利用一个 CPU 的计算资源,并且无法支持多个用户从自己的电脑上接入同一个 Multi-Agent 应用进行交互。为了提高运行效率并支持多用户接入同一个应用中,AgentScope 提供了分布式…...

2023CCPC河南省赛暨河南邀请赛个人补题ABEFGHK

Dashboard - 2023 CCPC Henan Provincial Collegiate Programming Contest - Codeforces 过题难度&#xff1a;A H F G B K E 铜奖&#xff1a; 2 339 银奖&#xff1a; 3 318 金奖&#xff1a; 5 523 A: 直接模拟 // Code Start Here int t;cin >> t;while(t-…...

基于基金净值百分位的交易策略

策略来源&#xff1a;睿思量化小程序 基金净值百分位&#xff0c;是衡量当前基金净值在过去一段时间内的相对位置。以近一年为例&#xff0c;若某基金净值百分位为30%&#xff0c;意味着过去一年中有30%的时间基金净值低于当前值&#xff0c;70%的时间高于当前值。这一指标犹如…...

Ubuntu20.04下如何源码编译Carla,使用UE4源码开跑,踩坑集合

一、简介 作为一个从事算法研究的人员,无人驾驶仿真一直是比较重要的一部分,但是现在比较常见的算法验证都是在carla这个开源仿真平台上做的,所以我有二次开发carla的需求,今天就来讲讲编译CARLA。 网上的教材很多,但还是推荐大家看官网教程:Linux build - CARLA Simul…...

Windows 环境下 Docker Desktop 安装 + 汉化

一、WSL2Ubuntu20.04以及Docker Desktop安装 在开发过程中&#xff0c;Docker 是一款极为实用的工具。本教程专为 Windows 用户打造&#xff0c;将全面且细致地讲解 Docker Desktop 的安装与配置步骤&#xff0c;助您迅速入门并熟练掌握。同时&#xff0c;考虑到语言使用习惯&…...

HDMI信号采集器连OBS没有声音的问题

Windows中的设置 windows中可以按客服发来的视频做参考。 视频教程&#xff1a; https://jvod.300hu.com/vod/product/79b234d5-81f0-4255-8680-693de7b4b0d4/715859bc4d83490bb977d8bc0061bd5e.mp4 Linux中的设置 在linux中发现视频不太一样&#xff0c;设置完没有声音。…...

Remote Desktop安卓远程无法使用中文输入法

新版remote desktop包括windows app都无法使用中文输入法 下载旧版才能用8.8.1.56.294 感谢评论区大哥提供的方案...

maven报错 You have to use a classifier to attach supplemental artifacts

完整报错 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar (default-jar) on project **: You have to use a classifier to attach supplemental artifacts to the project instead of replacing them. -> [Help 1] 解决办法 修改…...

maven dependencyManagement标签作用

dependencyManagement作用 1. 确保多模块间依赖版本一致 在父 POM 中定义依赖的版本、作用域&#xff08;Scope&#xff09;、排除项&#xff08;Exclusions&#xff09;等&#xff0c;子模块引用这些依赖时无需指定版本 2.灵活覆盖 子模块可以按需覆盖父 POM 中定义的版…...

Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)

一、引言:为什么 Flink 运维监控如此重要? 在实时计算场景中,Flink 作业 724 小时运行,对性能、资源、故障感知、状态变化的实时监控非常关键。没有有效的运维可观测体系: 不知道任务是否在稳定运行 发生问题难以快速定位 无法感知背压、延迟、反压等状态 因此,构建完善…...

计算机视觉----基于锚点的车道线检测、从Line-CNN到CLRNet到CLRKDNet 本文所提算法Line-CNN 后续会更新以下全部算法

本文所提算法如下&#xff1a; 叙述按时间顺序 你也可以把本文当作快速阅读这几篇文献的一个途径 所有重要的部分我都已经标注并弄懂其原理 方便自己也是方便大家 Line-CNN&#xff1a;基于线提议单元的端到端交通线检测 摘要 交通线检测是一项基础且具有挑战性的任务。以往的…...

Spring MVC HttpMessageConverter 的作用是什么?

HttpMessageConverter (HTTP 消息转换器) 是 Spring MVC 框架中一个非常核心的组件&#xff0c;它的主要作用是在 HTTP 请求、响应体与 Java 对象之间进行双向转换。 核心作用&#xff1a; 读取请求体 (Request Body) 到 Java 对象&#xff1a; 当 Controller 方法的参数使用 …...

WebGL 3着色器和GLSL

我们之前提到过着色器和GLSL&#xff0c;但是没有涉及细节&#xff0c;你可能已经对此有所了解&#xff0c; 但以防万一&#xff0c;这里将详细讲解着色器和GLSL。 在工作原理中我们提到&#xff0c;WebGL每次绘制需要两个着色器&#xff0c; 一个顶点着色器和一个片段着色器&…...

Hugging Face 中 LeRobot 使用的入门指南

相关源文件 .github/ISSUE_TEMPLATE/bug-report.yml .github/PULL_REQUEST_TEMPLATE.md README.md examples/1_load_lerobot_dataset.py examples/2_evaluate_pretrained_policy.py examples/3_train_policy.py lerobot/scripts/eval.py lerobot/scripts/train.py 本页面提供 …...

从零开始学习three.js(18):一文详解three.js中的着色器Shader

在WebGL和Three.js的3D图形渲染中&#xff0c;着色器&#xff08;Shader&#xff09; 是实现复杂视觉效果的核心工具。通过编写自定义的着色器代码&#xff0c;开发者可以直接操作GPU&#xff0c;实现从基础颜色渲染到动态光照、粒子效果等高级图形技术。本文将深入解析Three.j…...

Trae - 国人Cursor的免费平替产品

前情提要&#xff1a;Cursor-零基础使用flutter完成贪吃蛇游戏-迄今为止世上最牛的AI编辑工具&#xff0c;不需要程序员也可以编程 Cursor 不是我的最佳选择 Cursor 是基于 VSCode 进化而来&#xff0c;虽然好用&#xff0c;但总结下来有几点点是我有所顾虑的。 第一&#x…...

【PmHub后端篇】PmHub中Seata分布式事务保障任务审批状态一致性

在分布式系统中&#xff0c;事务管理是保证数据一致性的关键。本文将深入探讨在PmHub系统中&#xff0c;如何利用Seata分布式事务来保证任务审批状态的一致性。分布式事务在面试中是常见的考点&#xff0c;网上教程多偏理论&#xff0c;而实际项目中的应用更为关键。 1 事务基…...