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

Dubbo(94)如何在金融系统中应用Dubbo?

在金融系统中应用Dubbo,可以通过以下步骤实现:

  1. 项目结构设计:规划项目的模块结构,通常包括服务接口模块、各个服务提供者模块(如账户服务、交易服务、风控服务等)、服务消费者模块(如前端应用、后台管理系统等)。
  2. 服务接口定义:定义各个服务的接口,确保服务提供者和消费者能够共享相同的接口。
  3. 服务提供者实现:实现各个服务接口,并配置Dubbo提供服务。
  4. 服务消费者调用:在服务消费者中引用服务接口,并通过Dubbo调用远程服务。
  5. 服务注册与发现:配置注册中心(如Zookeeper)以实现服务注册与发现。
  6. 配置管理:管理项目的配置文件,确保服务提供者和消费者能够正确连接到注册中心并发现彼此。
  7. 测试与部署:测试服务的调用,确保服务能够正常工作,并将服务部署到生产环境。

以下是一个详细的示例,展示如何在金融系统中应用Dubbo。

1. 项目结构设计

我们将创建一个包含多个模块的项目:dubbo-apiaccount-servicetransaction-servicerisk-servicefrontend-application

financial-system
├── dubbo-api
│   └── src/main/java/com/example/dubbo/api
│       ├── AccountService.java
│       ├── TransactionService.java
│       └── RiskService.java
├── account-service
│   └── src/main/java/com/example/account
│       ├── service
│       │   └── AccountServiceImpl.java
│       ├── config
│       │   └── DubboProviderConfig.java
│       └── AccountServiceApplication.java
├── transaction-service
│   └── src/main/java/com/example/transaction
│       ├── service
│       │   └── TransactionServiceImpl.java
│       ├── config
│       │   └── DubboProviderConfig.java
│       └── TransactionServiceApplication.java
├── risk-service
│   └── src/main/java/com/example/risk
│       ├── service
│       │   └── RiskServiceImpl.java
│       ├── config
│       │   └── DubboProviderConfig.java
│       └── RiskServiceApplication.java
├── frontend-application
│   └── src/main/java/com/example/frontend
│       ├── controller
│       │   └── FinancialController.java
│       ├── config
│       │   └── DubboConsumerConfig.java
│       └── FrontendApplication.java
└── pom.xml

2. 服务接口定义

2.1 创建 dubbo-api 模块

创建 dubbo-api 模块的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3.org/POM/4.0.0 http://www.w3.org/2001/04/xmldsig-more#"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.7.8</version></dependency></dependencies>
</project>
2.2 定义服务接口

dubbo-api/src/main/java/com/example/dubbo/api 目录下创建 AccountServiceTransactionServiceRiskService 接口:

package com.example.dubbo.api;public interface AccountService {String getAccount(String accountId);
}public interface TransactionService {String processTransaction(String accountId, double amount);
}public interface RiskService {String assessRisk(String accountId, double amount);
}

3. 服务提供者实现

3.1 创建 account-service 模块

创建 account-service 模块的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3.org/POM/4.0.0 http://www.w3.org/2001/04/xmldsig-more#"><parent><groupId>com.example</groupId><artifactId>financial-system</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><artifactId>account-service</artifactId><dependencies><dependency><groupId>com.example</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency></dependencies>
</project>
3.2 实现账户服务接口

account-service/src/main/java/com/example/account/service 目录下创建 AccountServiceImpl 类:

package com.example.account.service;import com.example.dubbo.api.AccountService;
import org.apache.dubbo.config.annotation.DubboService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;@DubboService
public class AccountServiceImpl implements AccountService {private static final Logger logger = LoggerFactory.getLogger(AccountServiceImpl.class);@Overridepublic String getAccount(String accountId) {logger.info("Fetching account with ID: {}", accountId);return "Account: " + accountId;}
}
3.3 配置Dubbo服务

account-service/src/main/java/com/example/account/config 目录下创建 DubboProviderConfig 类:

package com.example.account.config;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableDubbo(scanBasePackages = "com.example.account.service")
public class DubboProviderConfig {
}
3.4 创建启动类

account-service/src/main/java/com/example/account 目录下创建 AccountServiceApplication 类:

package com.example.account;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class AccountServiceApplication {public static void main(String[] args) {SpringApplication.run(AccountServiceApplication.class, args);}
}
3.5 配置文件

account-service/src/main/resources 目录下创建 application.yml 配置文件:

spring:application:name: account-servicemain:web-application-type: nonedubbo:application:name: account-serviceregistry:address: zookeeper://localhost:2181protocol:name: dubboport: 20880scan:base-packages: com.example.account.servicelogging:level:com.example.account: INFOfile:name: logs/account-service.log
3.6 创建 transaction-service 模块

创建 transaction-service 模块的 pom.xml 文件,类似于 account-service 模块。

3.7 实现交易服务接口

transaction-service/src/main/java/com/example/transaction/service 目录下创建 TransactionServiceImpl 类:

package com.example.transaction.service;import com.example.dubbo.api.TransactionService;
import com.example.dubbo.api.RiskService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;@DubboService
public class TransactionServiceImpl implements TransactionService {private static final Logger logger = LoggerFactory.getLogger(TransactionServiceImpl.class);@DubboReferenceprivate RiskService riskService;@Overridepublic String processTransaction(String accountId, double amount) {String riskAssessment = riskService.assessRisk(accountId, amount);String transaction = "Transaction processed for account " + accountId + " with amount " + amount + ". Risk assessment: " + riskAssessment;logger.info(transaction);return transaction;}
}
3.8 配置Dubbo服务和启动类

transaction-service 模块中配置Dubbo服务和启动类,类似于 account-service 模块。

3.9 创建 risk-service 模块

创建 risk-service 模块的 pom.xml 文件,类似于 account-service 模块。

3.10 实现风控服务接口

risk-service/src/main/java/com/example/risk/service 目录下创建 RiskServiceImpl 类:

package com.example.risk.service;import com.example.dubbo.api.RiskService;
import org.apache.dubbo.config.annotation.DubboService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;@DubboService
public class RiskServiceImpl implements RiskService {private static final Logger logger = LoggerFactory.getLogger(RiskServiceImpl.class);@Overridepublic String assessRisk(String accountId, double amount) {String risk = "Low";if (amount > 10000) {risk = "High";}logger.info("Risk assessment for account {}: {}", accountId, risk);return risk;}
}
3.11 配置Dubbo服务和启动类

risk-service 模块中配置Dubbo服务和启动类,类似于 account-service 模块。

4. 服务消费者调用

4.1 创建 frontend-application 模块

创建 frontend-application 模块的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3.org/POM/4.0.0 http://www.w3.org/2001/04/xmldsig-more#"><parent><groupId>com.example</groupId><artifactId>financial-system</artifactId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><artifactId>frontend-application</artifactId><dependencies><dependency><groupId>com.example</groupId><artifactId>dubbo-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency></dependencies>
</project>
4.2 创建控制器

frontend-application/src/main/java/com/example/frontend/controller 目录下创建 FinancialController 类:

package com.example.frontend.controller;import com.example.dubbo.api.TransactionService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class FinancialController {private static final Logger logger = LoggerFactory.getLogger(FinancialController.class);@DubboReferenceprivate TransactionService transactionService;@GetMapping("/processTransaction")public String processTransaction(@RequestParam String accountId, @RequestParam double amount) {logger.info("Processing transaction for account ID: {} and amount: {}", accountId, amount);return transactionService.processTransaction(accountId, amount);}
}
4.3 配置Dubbo消费

frontend-application/src/main/java/com/example/frontend/config 目录下创建 DubboConsumerConfig 类:

package com.example.frontend.config;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableDubbo(scanBasePackages = "com.example.frontend.controller")
public class DubboConsumerConfig {
}
4.4 创建启动类

frontend-application/src/main/java/com/example/frontend 目录下创建 FrontendApplication 类:

package com.example.frontend;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class FrontendApplication {public static void main(String[] args) {SpringApplication.run(FrontendApplication.class, args);}
}
4.5 配置文件

frontend-application/src/main/resources 目录下创建 application.yml 配置文件:

spring:application:name: frontend-applicationdubbo:application:name: frontend-applicationregistry:address: zookeeper://localhost:2181protocol:name: dubboscan:base-packages: com.example.frontend.controllerlogging:level:com.example.frontend: INFOfile:name: logs/frontend-application.log

5. 根项目的 pom.xml

在根项目 financial-system 中创建 pom.xml 文件,定义模块和依赖管理:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3.org/POM/4.0.0 http://www.w3.org/2001/04/xmldsig-more#"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>financial-system</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>dubbo-api</module><module>account-service</module><module>transaction-service</module><module>risk-service</module><module>frontend-application</module></modules><dependencyManagement><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>2.7.8</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency></dependencies></dependencyManagement><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.4.RELEASE</version></plugin></plugins></pluginManagement></build>
</project>

6. 启动Zookeeper

确保Zookeeper在本地运行,默认端口为 2181。可以通过下载Zookeeper并运行以下命令启动Zookeeper:

bin/zkServer.sh start

7. 启动服务提供者和消费者

  1. 启动账户服务:运行 AccountServiceApplication 类。
  2. 启动交易服务:运行 TransactionServiceApplication 类。
  3. 启动风控服务:运行 RiskServiceApplication 类。
  4. 启动前端应用:运行 FrontendApplication 类。

8. 测试服务

访问前端应用的交易处理接口:

curl http://localhost:8080/processTransaction?accountId=12345&amount=5000

9. 总结

通过以上步骤,我们设计并实现了一个金融系统中的Dubbo服务,包含服务接口定义、各个服务提供者实现、服务消费者调用、服务注册与发现、配置管理等功能。这样可以确保服务能够在金融系统的微服务架构中正常工作,并且能够应对不同的业务需求。

相关文章:

Dubbo(94)如何在金融系统中应用Dubbo?

在金融系统中应用Dubbo&#xff0c;可以通过以下步骤实现&#xff1a; 项目结构设计&#xff1a;规划项目的模块结构&#xff0c;通常包括服务接口模块、各个服务提供者模块&#xff08;如账户服务、交易服务、风控服务等&#xff09;、服务消费者模块&#xff08;如前端应用、…...

Linux:web服务

一、nginx的安装及启用 1、为主机配置IP和搭建软件仓库 &#xff08;1&#xff09;IP的配置 &#xff08;2&#xff09;搭建软件仓库 2、 web服务的安装与启用 &#xff08;1&#xff09;nginx的端口 更改nginx端口号 效果 &#xff08;2&#xff09; 默认发布目录 修改默认发…...

process terminated with status -1073741515

使用CodeBlocks25.03编译wxWidgets3.2.8程序时提示process terminated with status -1073741515 后来自己重新编译生成了一下wxWidgets3.2.8源码&#xff0c;问题得以解决。...

2025信息安全网络安全意识培训资料汇编(24份)

最新整理&#xff1a;2025信息安全网络安全意识培训资料汇编&#xff0c;共24份资料&#xff0c;供学习参考。 互联网信息安全意识培训.pptx100个网络安全风险防范知识.pptx亚信信息安全意识培训.pptx网络安全法规及意识培训.pptx网络安全意识与案例分析.pptx绿盟-安全意识培训…...

线程概念与控制

Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部 的控制序列”&#xff0c;一切进程至少都有一个执行线程&#xff0c;线程在进程内部运行&#xff0c;本质是在进程地址空间内…...

【SpringAI+阿里云百炼】AI对话4个Demo

基于SpringAI和阿里云百炼平台&#xff0c;实现了四个AI对话的小Demo 小团团对话机器人哄哄模拟器培训班智能客服仿ChatPDF 笔记如下:语雀知识笔记《SpringAI》...

Redis-----认识NoSQL

文章目录 前言一、SQL的结构化与NoSQL非结构化1.SQL2.NoSQL 二、关系型数据库SQL与非关系型数据库NoSQL1.SQL2.NoSQL 三、SQL查询与NoSQL查询1.SQL2.NoSQL 四、事务的区别1.SQL2.NoSQL 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&#xff…...

驱动开发硬核特训 · Day 27(下篇):深入掌握 Common Clock Framework 架构与实战开发

节。 在本篇内容中&#xff0c;我们将围绕 Linux 内核中的时钟子系统核心架构 —— Common Clock Framework&#xff08;简称 CCF&#xff09;展开深入讲解&#xff0c;目标是帮助你全面理解其设计理念、主要数据结构、注册流程、驱动实现方式&#xff0c;以及如何基于 NXP i.M…...

Qt基础知识记录(终篇)

写在前面 博主的项目所需知识已经差不多学完了&#xff0c;后续如果还需要再学习那就继续学&#xff0c;毕竟程序员就是摸着石头过河的&#xff0c;碰壁乃是常有的事情。博主的项目服务器是用MySQL存储数据的&#xff0c;所以博主学习一下Qt如何连接MySQL及从MySQL中存取数据 博…...

LeetCode刷题链表

文章目录 链表总结 常用技巧两数相加题解代码 两两交换链表中的节点题解代码 重排链表题解代码 合并k个升序链表题解代码 K个一组翻转链表题解代码 链表总结 常用技巧 画图 直观 形象 便于理解引入虚拟头节点&#xff0c;便于处理边界情况&#xff0c;方便我们对链表进行…...

transfomer网络构建

目录 整体架构 详细模块分析 Transformer 算法的演进 代码讲解 1. 导入必要的库 2. InputEmbeddings 类 3. PositionalEncoding 类 4. LayerNormalization 类 5. FeedForwardBlock 类 6. MultiHeadAttentionBlock 类 7. ResidualConnection 类 8. EncoderBlock 类 9. Encoder 类…...

【mathematica】常见命令

mathematica官方文档 下载安装 安装激活教程 基本用法 输入、画图、基本运算、方程组求解、公式导出、 笔记本新建&#xff1a; 文件-新建-笔记本 输入&#xff1a; 直接在界面输入定义的变量、式子或者方程组即可 输出&#xff08;计算&#xff09; ENTER : 换行ENTER SHIF…...

photoshop学习笔记2

第一章 第01节-界面的重要性(学习方法) 第02节-文件的打开新建及储存 第03节-移动工具(图层概念) 学习目标&#xff1a; 1.了解图层概念 2.认识工具属性 3.掌握工具使用 图层的概念 移动工具 移动工具就是用来移动图层内容的。是否可以用来移动组…...

从软件到硬件:三大主流架构的特点与优劣详解

常见的架构包括软件架构、企业架构、硬件架构等&#xff0c;以下是对这几种常见架构的分析&#xff1a; 一、软件架构 1.分层架构 描述&#xff1a;分层架构是一种经典的软件架构模式&#xff0c;将软件系统按照功能划分为不同的层次&#xff0c;一般包括表现层&#xff08;…...

网狐旗舰大联盟组件源码私测笔记:结构分层、UI重构与本地实操全流程

作为一套衍生于传统网狐架构的源码版本&#xff0c;大联盟这套源码组件可谓是在经典基础上进行了深度重塑。与老版死板的框架风格不同&#xff0c;它不仅对界面做了大刀阔斧的重构&#xff0c;还在组件层级的组织上做了优化。本文将基于一整套源码进行深度解析&#xff0c;强调…...

Oracle OCP认证考试考点详解083系列07

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 31. 第31题&#xff1a; 题目 解析及答案&#xff1a; 从 Oracle 19c 开始&#xff0c;数据库配置助手&#xff08;DBCA&#xff09;在克…...

Qt .pro配置msvc相关命令(二)

目录 1. 指定编译器版本 2. 设置编译器选项 3. 设置链接器选项 4. 定义预处理器宏 5. 指定包含目录和库目录 6. 配置生成目标 7. 配置调试和发布模式 8. 指定生成文件的目录 9. 使用特定的 MSVC 功能 10. 条件编译 在 Qt 中&#xff0c;.pro 文件是项目配置文件&…...

Debezium Binlog解析与事件转换流程详解

Debezium Binlog解析与事件转换流程详解 1. Binlog解析整体流程 #mermaid-svg-2ghVgmGOnV4elpya {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2ghVgmGOnV4elpya .error-icon{fill:#552222;}#mermaid-svg-2ghVgmG…...

SpringBoot接口防抖(防重复提交)

目录 一.流程分析&#xff1a; 二.案例代码详解&#xff1a; 前提条件&#xff1a; 1.自定义注解&#xff1a; 2.编写异常类&#xff1a; 3.创建key生成器&#xff1a; 4.自定义AOP切面&#xff1a; 5.Controller&#xff1a; 三.Redission分布式解决方案&#xff1a;…...

HTML02:网页基本信息

网页的基本信息 DOCTYPE声明 < title 标签 < meat 标签 <!-- DOCTYPE:告诉浏览器&#xff0c;我们要使用什么规格 --> <!DOCTYPE html> <!-- head标签代表网页头部 --> <html lang"en"> <head><!-- meta描述性标签&#…...

uniswap v4 hooks标志位

hooks的代码位置在这&#xff0c;它是是组织校验&#xff0c;调用用户创建钩子的类库。 首先看其中定义的常量&#xff1a; uint160 internal constant ALL_HOOK_MASK uint160((1 << 14) - 1);uint160 internal constant BEFORE_INITIALIZE_FLAG 1 << 13;uint16…...

YOLOv7细节解读

RepVGG 推理加速 背景与动机&#xff1a;在模型的骨干网络&#xff08;backbone&#xff09;优化中&#xff0c;VGG 因结构简单&#xff0c;在显存利用上有优势&#xff08;单一路径&#xff0c;仅需一倍显存&#xff09;&#xff0c;但被多分支结构的 ResNet 超越。然而&#…...

nt!MiSessionAddProcess函数分析和nt!MmSessionSpace全局变量的关系

第一部分&#xff1a; 1: kd> g Breakpoint 42 hit nt!MiSessionAddProcess: 80ab2fbe 55 push ebp 1: kd> kc # 00 nt!MiSessionAddProcess 01 nt!MmCreateProcessAddressSpace 02 nt!PspCreateProcess 03 nt!NtCreateProcessEx 04 nt!_KiSystemServic…...

情绪ABC——AI与思维模型【93】

一、定义 情绪ABC思维模型是一种心理学上的理论&#xff0c;它认为人们的情绪和行为反应&#xff08;C&#xff0c;Consequence&#xff09;并非直接由激发事件&#xff08;A&#xff0c;Activating event&#xff09;引起&#xff0c;而是由个体对激发事件的认知和评价所产生…...

基于k8s系统的API网关-kong网关

1. 为什么需要 API 网关 API网关是一个服务器&#xff0c;是系统的唯一入口。API网关封装了系统内部架构&#xff0c;为每个客户端提供一个定制的API。它可能还具有其它职责&#xff0c;如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点…...

8.2 GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析

GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析 GitHub Sentinel 高级功能实现:PDF 报告生成技术详解 关键词:PDF 报告生成, ReportLab 实战, 结构化数据转换, 容器化字体配置, 企业级报告模板 1. 需求分析与技术选型 PDF 报告生成需要满足以下技术要求…...

一周学会Pandas2 Python数据处理与分析-Pandas2复杂数据查询操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 前面我们学了.loc[]等几个简单的数据筛选操作&#xff0c;但实际业务需求往 往需要按照一定的条件甚至复杂的组合条件…...

四年级数学知识边界总结思考-下册

目录 一、背景二、过程1.四则运算小学四年级课本下册《四则运算》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、作用与意义****四、总结** 2.运算律小学四年级课本下《运算律》知识点、由来、作用与意义解析**一、核心知识点****二、历史由来****三、…...

Git从入门到精通-第四章-更新仓库

目录 检查当前文件状态 追踪新文件 暂存已修改的文件&#xff08;git add作用总结&#xff09; 简化输出状态 忽略文件 查看已暂存和未暂存的修改 git diff 提交更新 git commit 跳过使用暂存区 前言&#xff1a;在工作区和Git仓库间设置暂存区的意义 1. ​精准控制…...

RPG8.增加武器

1.创建一个Actor的c类 2.创建武器WeaponBase的子类&#xff0c;给玩家的武器 3.进入WeaponBase&#xff0c;只留下构造函数&#xff0c;并且将bCanEventTick改为false&#xff0c;增加组件。 #pragma once#include "CoreMinimal.h" #include "GameFramework/Ac…...

力扣1128题解

记录 2525.5.4 题目&#xff1a; 思路&#xff1a; 先将dominoes[i]的二元全部变为前大后小的形式&#xff0c;再遍历该数组&#xff0c;用数组来记录。 代码&#xff1a; class Solution {public int numEquivDominoPairs(int[][] dominoes) {int [] [] cnt new int [10…...

微服务框架选型

1 Thrift&#xff0c; gRPC&#xff0c; Dubbo&#xff0c;Spring Cloud性能对比 指标ThriftgRPCDubboSpring Cloud序列化速度最快 (Binary)快 (Protobuf)中等 (Hessian2)慢 (JSON/XML)网络吞吐量最高 (无HTTP开销)高 (HTTP/2)中等 (TCP)低 (HTTP/1.1)延迟<1ms1-3ms2-5ms10…...

DeepSeek-Prover-V2模型原理速览

文章目录 prerequisite&#xff1a;Lean4研究亮点通过子目标分解实现递归证明搜索基于子目标的定理证明中的课程学习 统一非形式化推理和形式化证明通过合成数据实现冷启动以推理为导向的强化学习 DeepSeek-Prover-V2 的训练细节专家迭代监督式微调 快速使用REF DeepSeek-Prove…...

网络编程,使用select()进行简单服务端与客户端通信

这里在Ubuntu环境下演示 一般流程 服务端常用函数&#xff1a; socket()&#xff1a;创建一个新的套接字。bind()&#xff1a;将套接字与特定的IP地址和端口绑定。listen()&#xff1a;使套接字开始监听传入的连接请求。accept()&#xff1a;接受一个传入的连接请求&#xff…...

QT数据库实验

一、实验目的和要求 1、掌握Qt中掌握绘图工具和图形界面设计&#xff1b;绘制常见的图形。 2、熟悉Qt界面设计中常用的控件。 3、了解滚动条、滑动条、进度条、旋转按钮控件的用法。 二、实验内容 1、设计一个绘图软件&#xff0c;完成图像的绘制操作。 2、建立按钮的信号…...

【PyTorch完全指南】从深度学习原理到工业级实践

目录 🌟 前言技术背景与价值当前技术痛点解决方案概述目标读者说明🔍 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比🛠 二、实战演示环境配置要求核心代码实现1. 基础Tensor操作2. 神经网络构建3. 训练循环实现运行结果验证⚡ 三、性能对比测试方法…...

Spring AI 实战:第七章、Spring AI Advisor机制之记忆大师

引言:当AI的记性比金鱼还差 你:我叫张三,很高兴认识你AI:很高兴认识你,张三! 如果你有任何问题或者需要帮助,请随时告诉我你:我叫什么AI:抱歉,我无法知道你的名字。不过你可以告诉我一些关于你的信息,如果你愿意分享的话!AI的内心OS:爱谁谁,我反正不知道 如上图所…...

工业AI质检:从传统算法到多模态大模型应用

工业AI质检:从传统算法到多模态大模型应用 引言 在制造业质量控制领域,传统人工检测的漏检率高达15%-20%,而基于规则算法的视觉检测系统仅能处理已知缺陷类型。随着多模态大模型技术的突破,工业质检正进入"认知智能"新阶段——系统不仅能识别缺陷,更能理解工艺…...

STM32智能垃圾桶:四种控制模式实战开发

简介 从零到一打造企业级智能垃圾桶系统,实现按键、语音、红外、蓝牙多模式控制。本项目采用STM32F103C8T6作为主控芯片,通过模块化设计整合多种控制方式,确保系统稳定、高效且易于维护。文章将提供完整硬件连接方案、代码实现细节及企业级开发技术,帮助开发者掌握智能垃圾…...

Python语句入门:从基础到实践

Python作为一门简洁优雅的编程语言&#xff0c;其语句结构清晰易懂&#xff0c;非常适合初学者学习。本文将全面介绍Python中的各种基本语句&#xff0c;帮助编程新手快速掌握Python编程基础。语句是计算机执行程序的最小单位。 一、Python语句概述 Python程序由一系列语句组…...

Kubernetes(k8s)学习笔记(五)--部署Ingress实现域名访问和负载均衡

Ingress是基于nginx&#xff0c;通过在k8s中部署ingress&#xff0c;可实现域名访问和pod节点间的负载均衡。 下面是实现过程&#xff1a; 一.准备一个ingress-controller.yaml文件 apiVersion: v1 kind: Namespace metadata:name: ingress-nginxlabels:app.kubernetes.io/n…...

数据库MySQL学习——day8(复习与巩固基础知识)

文章目录 1. 数据库基础概念复习2. 常用SQL命令复习2.1 SELECT 查询数据2.2 INSERT 插入数据2.3 UPDATE 更新数据2.4 DELETE 删除数据 3. 表操作复习3.1 创建表3.2 修改表3.3 删除表 4. 实践任务4.1 创建样例数据库和表4.2 插入和更新数据4.3 使用WHERE、ORDER BY、LIMIT进行查…...

【ArcGIS微课1000例】0144:沿线或多边形要素添加折点,将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。

文章目录 增密工具介绍举例1. 圆2. 椭圆3. 折线增密工具介绍 沿线或多边形要素添加折点。还可将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。 原理图如下所示: 用法: 通过距离参数对直线段进行增密。利用距离、最大偏转角或最大偏移偏差参数,通过增密操作对曲线段进行简化…...

python中的模块/库

python中的模块/库 什么是库/模块&#xff0c;通俗来讲是用来干啥的&#xff1f; 模块/库就是一个/多个.py的一个文件。通常是用来定义一些通用的方法&#xff0c;避免代码冗余。怎么python中自带的这些模块和库&#xff1f; 使用import进行导入&#xff0c;之后其中的内容就可…...

全面掌握 Jetpack Compose 的 State 体系:核心用法与最佳实践

Jetpack Compose 中的 State 类型全面解析 Jetpack Compose 提供了多种 State 类型来管理 UI 状态。以下是主要的 State 类型及其使用场景&#xff1a; 基础 State 类型 1. mutableStateOf 最基本的可观察状态&#xff0c;用于简单值的变化跟踪&#xff1a; var count by …...

Pyhton类方法添加装饰器案例解析

from functools import wrapsdef keep_alive(func):"""装饰器&#xff1a;为方法自动维护长连接"""wraps(func)def wrapper(self, *args, **kwargs):if not self.conn:self.conn ConnectHandler(**self.device_params)self.conn.enable()return…...

58认知干货:创业经验分享及企业形式的汇总

机会永远都是留给有眼光、能发现机会的人,而不是留给有准备的人!往往机会就在身边,普罗大众却无法发现,而真正适合创业的人,天然具备这方面的能力。 当然后天的补足也未尝不可:“故常有欲以观其微,常无欲以观其妙。””引用《道德经》 读懂这句话自然便会拥有对商业和…...

n8n 快速入门2:构建自动化工作流

n8n 快速入门2:构建自动化工作流 什么是n8n?项目目标准备工作步骤一:创建新工作流步骤二:添加触发节点步骤三:配置NASA节点与凭证1. 添加NASA节点2. 设置NASA API凭证3. 使用表达式设置时间范围步骤四:添加If条件节点1. 创建条件分支2. 测试条件逻辑步骤五:配置输出节点…...

TimSort算法解析

文章目录 1. 核心数据结构1.1 TimSort类定义1.2 关键概念&#xff1a;Run 2. TimSort解决的具体问题分析2.1 处理现实世界中的数据特性2.2 提高排序稳定性2.3 优化归并排序的空间复杂度2.4 处理特殊情况的鲁棒性2.5 适应性能力与算法自调整2.6 优化合并操作效率 3. TimSort核心…...

CATIA高效工作指南——曲面设计篇(一)

引言 在工业设计领域&#xff0c;CATIA的曲面建模与线束展开功能是构建复杂产品的核心技术。本文整合了​​曲面封闭性检查​​、​​无参数曲面创建​​、​​缝合优化策略​​等核心知识点&#xff0c;结合实战案例与高阶技巧&#xff0c;为工程师提供系统化的解决方案。 一…...