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

支付中心的熔断降级要怎么做

下面我会把支付中心在流量骤增 / 下游通道故障时的熔断与降级策略拆成(1)原则与常见策略,(2) 业务级降级/路由策略,(3) 具体落地组件(行业实践与参考),以及(4)可直接落地的 Java 示例(使用 Resilience4j + fallback + 速率限制 + 隔离)。

1) 基本原则(5 条行业共识)

  1. 快失败(Fail Fast)+ 超时控制:对外请求设置严格超时,避免长期占用连接池与线程。超时是触发熔断的第一层防线。

  2. 熔断(Circuit Breaker)防止级联失败:当某个下游(例如收单行/网关)短时间连续失败率过高时,打开熔断,短期内不再请求该通道,防止雪崩。

  3. 限流 / Bulkhead(舱壁)隔离:用速率限制保护系统边界,并用 bulkhead 限制单一通道或功能占用的并发资源,防止单点耗尽全局资源。

  4. 优雅降级(Graceful Degradation)与回退策略:出现问题时,提供降级路径 — 切换备用通道、异步入队重试、允许人工介入或返回降级响应(比如“稍后付款”或“先下单后支付”)。行业实践强调“可用性优先于完美”以保持业务连续性。

  5. 可观察性 + 自动与人工干预:熔断/降级必须有完善的监控(错误率、延迟、成功率)、告警和审计,能自动恢复也能人工关闭/强制路由。

(以上是支付行业常见的鲁棒性原则与设计思想。)


2) 支付中心常用的熔断 / 降级策略清单(具体操作层面)

按优先级与可落地性列出常用策略,支付场景会经常复合使用:

  1. 按业务粒度熔断

    • 按通道(acquirer/gateway)单独熔断。

    • 按商户维度或商户+通道组合熔断(避免单个大商户影响全系统)。

  2. 失败计数与失败率阈值

    • 常见策略:在滑动窗口(例如 30s)内如果失败率 > X% 且失败次数 > N,则打开熔断。打开一段时间(例如 30s、1min)后进入试探(半开)状态。

  3. 限流 + 排队(优先级队列)

    • 对外流量先经过速率限制;对请求超出速率的,按策略返回“busy / retry-after”或进入后端排队(异步处理)。

  4. 路由退化

    • 首选路由:主收单行 → 次选路由:备用收单行 / 备用支付提供商。

    • 如果所有通道都降级,采用异步挂起(入队)+ 用户通知(“稍后补单/人工处理”)。

  5. 局部降级(功能降级)

    • 例如:在高错误率下,关闭非核心功能(风控慢校验、某些非必要告警、可选的 fraud-score 查询),以保证核心的支付快速返回或被异步处理。

  6. 自动回退与半开探测

    • 熔断打开到时间窗口后,允许少量请求探测,下游恢复后,关闭熔断。探测流量与算法需谨慎(逐步放量)。

  7. 灰度 / 人工干预开关

    • 支持运营人员强制切换路由、强制关闭/打开熔断开关、调整阈值。

这些组合在 Stripe、PayPal、各大卡组织/网关的运维文件与公开文章里作为最佳实践被反复提及。


3) 行业实现/组件参考(哪些工具/库常被用)

  • 熔断器库:Resilience4j(现在常用)、以前的 Hystrix(已进入 maintenance)— 用于熔断、限流、重试、超时、bulkhead。

  • API 网关/速率限制:Kong、Envoy、NGINX、Traefik 等做第一层速率限制与黑白名单。

  • 消息队列:Kafka/RabbitMQ 做异步退单/补单、排队与降峰。

  • 监控/告警:Prometheus/Grafana、Datadog、Sentry,用来监控熔断器状态、错误率与业务指标。

  • CDN/边缘限流:对公网接口,做 WAF/边缘限流防止攻击(恶意流量触发的假故障)。
    Stripe / PayPal / 大型支付公司都强调:组合使用 超时 + 重试 + 熔断 + 备用路由 + 可观察性


4) 典型业务降级流程(落地 sequence)

  1. 请求到达 → API 网关限流检查。

  2. 调用前设置短 timeout(比如 2s)和幂等 token。

  3. 调用收单行/网关:使用 CircuitBreaker 包装。

    • 成功:返回。

    • 失败:按错误类型分流(超时、拒绝、4xx、5xx)。

  4. 若触发断路器(或网关速率被触发):立刻切换到备用通道(若有)或返回降级响应并把交易写入“待补单队列”。

  5. 补单组件异步重试,或人工介入(若需要)。

  6. 所有状态上报监控,并告警给运维/商户。


5) Java 示例(可直接落地):Resilience4j + Spring Boot 风格示例

下面是一个简化但可运行的示例,展示了如何把 超时 + 熔断 + 限流 + fallback + bulkhead 组合在对接下游收单行的调用上。

依赖(Maven)

 
<!-- resilience4j + spring-boot -->
<dependency><groupId>io.github.resilience4j</groupId><artifactId>resilience4j-spring-boot2</artifactId><version>1.7.1</version> <!-- 选择合适版本 -->
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.0</version>
</dependency>

配置(application.yml - 片段)

 
resilience4j:circuitbreaker:configs:default:registerHealthIndicator: trueslidingWindowType: TIME_BASEDslidingWindowSize: 30    # 秒minimumNumberOfCalls: 20permittedNumberOfCallsInHalfOpenState: 5failureRateThreshold: 50waitDurationInOpenState: 30stimelimiter:configs:default:timeoutDuration: 2sbulkhead:configs:default:maxConcurrentCalls: 50ratelimiter:configs:default:limitForPeriod: 200limitRefreshPeriod: 1s

Java 代码(示例 PaymentService)

 
 1 import io.github.resilience4j.bulkhead.annotation.Bulkhead;
 2 import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
 3 import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
 4 import io.github.resilience4j.timelimiter.annotation.TimeLimiter;
 5 import org.springframework.stereotype.Service;
 6 import org.springframework.web.client.RestTemplate;
 7 
 8 import java.util.concurrent.CompletableFuture;
 9 import java.util.concurrent.CompletionStage;
10 
11 @Service
12 public class PaymentService {
13 
14     private final RestTemplate rest = new RestTemplate();
15 
16     // name 对应配置中的 circuitbreaker.configs.default
17     @CircuitBreaker(name = "default", fallbackMethod = "fallbackToQueue")
18     @TimeLimiter(name = "default") // 限制调用时长(异步方式)
19     @Bulkhead(name = "default")    // 并发舱壁
20     @RateLimiter(name = "default")
21     public CompletionStage<PaymentResult> callAcquirer(String acquirerUrl, PaymentRequest req) {
22         // 采用 CompletableFuture 来配合 TimeLimiter 注解(异步)
23         return CompletableFuture.supplyAsync(() -> {
24             // 1) 快失败检查:简单本地校验、幂等 token
25             // 2) 发起同步 HTTP 调用(受 TimeLimiter 限制)
26             AcquirerResp resp = rest.postForObject(acquirerUrl, req, AcquirerResp.class);
27             if (resp == null || !resp.isSuccess()) {
28                 throw new RuntimeException("Acquirer failure: " + resp);
29             }
30             return new PaymentResult(true, resp.getTxnId());
31         });
32     }
33 
34     // fallback 方法签名必须与原方法兼容(加上 Throwable 可选)
35     public CompletionStage<PaymentResult> fallbackToQueue(String acquirerUrl, PaymentRequest req, Throwable t) {
36         // 1) 记录故障、埋点(日志/metrics)
37         // 2) 入队(Kafka): 表示降级为异步补单
38         enqueueForRetry(req);
39         // 3) 返回降级响应给上游(比如:支付处理中)
40         return CompletableFuture.completedFuture(new PaymentResult(false, null, "DEGRADED: queued for retry"));
41     }
42 
43     private void enqueueForRetry(PaymentRequest req) {
44         // 伪代码:将请求写入Kafka或DB的补单队列,供重试服务消费
45         // kafkaProducer.send("retry-topic", req);
46     }
47 
48     // DTO 简化
49     public static class PaymentRequest { /* fields: tradeNo, amount, merchantId, ... */ }
50     public static class AcquirerResp { boolean success; String txnId; public boolean isSuccess(){return success;} public String getTxnId(){return txnId;} }
51     public static class PaymentResult {
52         public boolean ok; public String txnId; public String message;
53         public PaymentResult(boolean ok, String txnId) { this.ok = ok; this.txnId = txnId; }
54         public PaymentResult(boolean ok, String txnId, String m) { this.ok = ok; this.txnId = txnId; this.message = m; }
55     }
56 }

说明

  • TimeLimiter:给调用设置最大耗时(避免长时间阻塞),通常与 CompletableFuture 配合。

  • CircuitBreaker:当失败率高时会打开,进入 fallback。配置里 failureRateThresholdslidingWindowSizewaitDurationInOpenState 等是关键参数。

  • Bulkhead:限制并发调用数(隔离资源),避免单个通道占满线程池。

  • RateLimiter:每秒最大请求限制,防止流量激增。

  • fallbackToQueue:降级策略示例,把调用转换为异步补单(入队),并返回“已排队”的响应给上游,保持可用性。

这是工程中最常见的组合:超时 → 熔断 → 快速降级(入队或备用路由)


6) 一些工程细节与调优建议(落地要点)

  • 失败判定要业务化:不是所有 5xx/超时都应算失败(比如偶发的网络抖动需要重试),但风控类错误或签名错误应立即算失败并快速返回。不要仅用 HTTP 5xx 做断路器判断;用业务级错误码更可靠。System Dr.

  • 分维度熔断:按通道 + 商户 + 路由策略分别维护熔断器,避免一把尺子量死所有场景。

  • 幂等 / Trace:所有降级的请求必须保存幂等 token,异步补单要能幂等重试。

  • 探测与回退:熔断器半开探测流量必须限制比例(不是一次性放量),并记录成功率。

  • 容量规划:bulkhead 的并发大小与后端真实吞吐匹配,避免人为瓶颈。

  • 演练与黑盒测试:定期演练“通道故障”场景,验证降级流程、补单队列与人工流程。Stripe/PayPal 等也强调持续的可用性演练。Stripe


7) 总结(一句话)

支付中心的熔断与降级不是单一开关,而是一套组合拳:超时 + 重试(有节制) + 熔断 + 限流 + bulkhead + 备用路由/异步补单 + 完善的监控/告警/人工控制台,把“可用性”置于优先级最高位,同时保障资金与一致性(通过幂等、补单、对账) 。行业实践(Stripe/PayPal/大型支付平台)也都遵循类似原则。

 

参考:https://zhuanlan.zhihu.com/p/1915759201281642638

转发请注明出处:https://www.cnblogs.com/fnlingnzb-learner/p/19087065 

相关文章:

支付中心的熔断降级要怎么做

下面我会把支付中心在流量骤增 / 下游通道故障时的熔断与降级策略拆成(1)原则与常见策略,(2) 业务级降级/路由策略,(3) 具体落地组件(行业实践与参考),以及(4)可直接落地的 Java 示例(使用 Resilience4j + fallback + 速率限制 + 隔离)。 1) 基本原则(5 条行业共识…...

协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2…...

栈和队列总结

栈和队列理论C++中stack,queue 是容器么? 我们使用的stack,queue是属于那个版本的STL? 我们使用的STL中stack,queue是如何实现的? stack,queue 提供迭代器来遍历空间么?stack和queue是STL中的容器适配器,不是类似list,vector那样的容器; 容器适配器本质上是基于底层真…...

工业互联网认知实训台-一句话介绍

工业互联网认知实训台主要由传感器、PLC控制器、工业以太网设备、人机界面(HMI)、步进电机和伺服电机等设备组成。步进电机:通过电脉冲信号控制电机每步旋转固定角度,结构简单、成本低,适合精确定位,但效率较低且可能失步。实训台中使用PLC(如1212C系列)通过脉冲信号控…...

1

<meta name="description" content="加载中... 如白屏请[ 点击刷新页面 ]"> <meta property="og:description" content="加载中... 如白屏请[ 点击刷新页面 ]"> <meta http-equiv="Cache-Control" content=&…...

湾区杯 SilentMiner WP

攻击者的ip地址查看文件 /var/log/btmp 发现短时间内大量登录,可确定攻击者 ip 为 192.168.145.131 lastb -f /var/log/btmp192.168.145.131攻击者共进行多少次ssh口令爆破失败?根据 /var/log/btmp 文件计数 lastb -f btmp | grep 192.168.145.131 | wc -l也可以在 /var/log/…...

Python-课后题题目-1.1编程世界初探

1.1编程世界初探(单选题) 1.程序设计语言的主要目的是什么? A让计算机变得更便宜 B使人类能够以高效,清晰,结构化的方式表达计算机逻辑和数据操作 C取代数学和逻辑学 D仅用于编写游戏程序 2.机器语言是由什么组成的? A十进制数字 B英文字母 C二进制代码 D特殊符号 3.汇…...

Python-课后题题目-1.2初识python语言

1.2初识python语言(单选题)Python语言最初由谁创建? A.林纳斯托瓦兹 B.吉多范罗苏姆 C.詹姆斯高斯林 D.布雷丹艾奇 Python 0.9.0版本首次发布于哪一年? A.1989 B.1991 C.1994 D.2000 Python 1.0版本引入了以下哪项特性? A.异步编程 B.类型注释 C.循环和异常处理 D.垃圾回收…...

node和npm相关的记录

1 npm install --loglevel verbose 安装的啰嗦模式会打印日志2 3 npm config get registry 查看镜像源信息。 淘宝的镜像源已经关闭了。4 5 #windwos可以安装一个nvm,可以切换node和npm的版本。6 nvm下载地址 https://github.com/coreybutler/nvm-windows/releases7 8 nvm in…...

在Spring boot 中使用@master 设置主从数据库

基础配置 application.ymlspring:  datasource:     master:       url: jdbc:mysql://localhost:3306/master_db       username: root       password: 123456       driver-class-name: com.mysql.cj.jdbc.Driver …...

设计模式-装饰器模式 - MaC

装饰器模式是一种结构型设计模式,它允许在不修改原有对象结构的情况下,动态地给对象添加新的功能。装饰器模式通过创建一个包装对象(装饰器)来包裹真实的对象,从而在运行时扩展对象的功能。 装饰器模式包含以下角色:组件(Component):定义一个对象接口,可以给这些对象动…...

【API接口】最新可用河马短剧接口

最新可用红果短剧接口,支持短剧搜索、短剧详情解析、短剧播放链接解析功能,助您快速构建您的专属短剧客户端 使用之前您需要先去注册下key 申请地址: https://www.52api.cn 接口地址:https://www.52api.cn/api/hm_duanju 返回格式:application/json 请求方式:GET/POST 请…...

第 16 章反射(reflection)

第 16 章反射(reflection)第 16 章反射(reflection) 16.1 一个需求引出反射 16.1.1 请看下面的问题根据配置文件 re.properties 指定信息,创建Cat对象并调用方法hi classfullpath=com.hspedu.Cat method=hi思考:使用现有技术,你能做的吗?这样的需求在学习框架时特别多,即通…...

自我介绍+软工5问

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/join?id=CfDJ8G33EJ5dWE5OhU_7yPrjq1_EG2G2ljnyYNdPWrrB61TEPdvbX8B-02_mm2lbvSH0zHF0AFJBdSQazCWQtYhdASVnPbQZ7mm4BuFr16ksfoeASRJAr16ktj02s3Qx3JGS33oIuJz021Uout0lNo8pyB8 …...

电容器+动生电动势+自由落体模型

电容器电容为 \(C\),磁感应强度为 \(B\),导体棒长度为 \(L\),质量为 \(m\),重力加速度 \(g\)。 设关于时间 \(t\) 的函数 \(E(t),U(t),Q(t),I(t),v(t),a(t)\)。 \[\begin{cases} E(t)=BLv(t)\\ U(t)=E(t)\\ Q(t)=CU(t)\\ I(t)=Q(t)\\ F(t)=mg-BLI(t)\\ a(t)=v(t)=\dfrac{F(…...

引用(reference)

1.概念 引用是C++对C的一个重要扩充,引用表示给变量起个别名;//类似于linux中的硬链接文件 2.定义引用 数据类型 &引用名 = 引用的目标; 如: int &b = a; & 在C++有三种作用: (1)定义引用时,是引用标识符,表示定义的是一个引用 (2)按位与 & (3)其他任何场…...

设计模式-组合模式 - MaC

什么是组合模式? 组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表示"部分-整体"的层次关系。组合模式使得客户端对单个对象和组合对象的使用具有一致性。 组合模式包含以下角色:组件(Component):声明组合中对象的接口,适当情况下实现所有类共有…...

【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态

加载中... 如白屏请[点击刷新页面 ]...

tmux 使用教程

1. 什么是 tmux tmux 是一个 终端复用器(terminal multiplexer)。 它允许你在一个终端里运行多个会话(session)、窗口(window)、面板(pane),并且支持:断开与重连:即使 SSH 连接断开,任务仍然继续运行。 多窗口管理:一个终端里像“标签页”一样切换窗口。 分屏功能…...

引用类型

“引用”(reference)是c++的一种新的变量类型,是对C的一个重要补充。它的作用是为变量起一个别名。假如有一个变量a,想给它起一个别名,可以这样写: int a; int &b=a;这就表明了b是a的“引用”,即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上…...

CF1237C2

CF1237 C2. Balanced Removals (Harder) 题目描述 这是该问题的更难版本。在本版本中,\(n \le 50\,000\)。 在三维空间中有 \(n\) 个互不相同的点,编号从 \(1\) 到 \(n\)。第 \(i\) 个点的坐标为 \((x_i, y_i, z_i)\)。点的数量 \(n\) 是偶数。 你需要通过一系列 \(\frac{n}{…...

我好像是病了,这几天的黑眼圈越来越重,明明都是按时早睡,但就是睡不够,整天昏昏沉沉,今天甚至一不小心扭伤了腿,坐在队伍旁边,我居然又渐渐睡了过去,尽管周围很吵闹。 我可能是病了,我每天感到有着无数审视的目光向我投来,同伴的漠视,他人的讥讽,上位者的冷眼,我感…...

力扣215. 数组中的第K个最大元素

力扣215. 数组中的第K个最大元素 1.二叉最小堆法:维护一个size为k的最小堆,每次从堆中去除一个比item更小的元素,最后留下的便是最大的k个元素。(nlogn)1 class Solution {2 public:3 int findKthLargest(vector<int>& nums, int k) {4 priority_que…...

linux环境docker离线镜像elasticsearch-7.17.3镜像资源

中国移动云盘下载地址: https://caiyun.139.com/w/i/2pU90TqM2d73i 提取码:ydab 复制内容打开中国移动云盘手机APP,操作更方便 1、准备已安装docker的Linux环境,将文件放到任意目录解压 2、导入镜像命令:docker load -i elasticsearch-7.17.3.tar 3、运行镜像命令:docker…...

Python 降序排序:轻松搞定列表、字典和自定义对象

在 Python 中,降序排序是一个非常常见的需求。无论是对列表、字典还是自定义对象进行排序,Python 都提供了简单而强大的方法来实现降序排序。今天,就让我们一起学习如何在 Python 中实现降序排序,并分享一些实用的技巧和最佳实践。 一、列表的降序排序 (一)使用 sort() 方…...

第02周 预习、实验与作业:Java基础语法2、面向对象入门

集美大学课程实验报告-第02周 预习、实验与作业:Java基础语法2、面向对象入门项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 第02周 预习、实验与作业:Java基础语法2、面向对象入门上机实践日期上机实践时间 2学…...

part 4

这场感觉就T4比较有意义LCA 结论:三个点两两求 LCA,lca 的编号异或起来是答案(到三个点的距离总和最小的点),且该答案是以其中一点为根时另外两点的 LCA。 所以我们可以得到结论 点 \(p\) 和点 \(q\) 以 \(x\) 为根的 lca 深度是 \(dlca_{p,q} \oplus dlca_{p,x} \oplus d…...

systemctl的service脚本写法

Description=MedicTech Server # 服务描述,可以自定义 After=network.target network-online.target nss-lookup.target [Service] Type=simple # 服务类型,简单后台进程常用 simple User=root # 指定运行服务的用户,根据你的需求修改,非 root 用户更安全 ExecStart=/home/…...

9月份美联储的降息利好

美联储降息利好消息美国8月CPI与就业数据公布:通胀符合预期,失业金人数攀升,市场反应积极北京时间11日晚间,美国劳工统计局及相关机构公布多项关键经济数据,数据表现呈现分化,同时引发金融市场显著波动,具体如下:一、核心经济数据概览通胀数据(CPI):符合市场预期 美…...

口胡记录

我们都会拥有美好的未来——频率也大概就是一天两题的样子,因为我还要做到一周 VP 两场 CF Div2。 这对于一个暑假才开始复健,一年没训的人来说已经很困难了/fn/ll P9753 [CSP-S 2023] 消消乐 Description 给你一个字符串 \(s\),让你求出 \(s\) 的偶回文子串个数。 \(|s|\le…...

Day16内存分析及初始化

图中空白处是关于数组下标越界的报错,调用的数组长度超出被调用数组的长度时程序会报错package array;public class ArrayDemo2 {public static void main(String[] args) {//静态初始化:创建+赋值int [] a = {123,4566,756765,5676,421,442,};System.out.println(a[3]);//前面…...

leveldb源码分析 #1 Slice WriteBatch WriteBatchInternal 【work记录】

日期:2025.9.6(凌晨) 个人总结: perface 是这样的,本来是打算写完之后再整理的,但是感觉自己貌似会懒癌犯了,所以决定还是自己看了哪些内容就都发了吧。 如果自己真的会想整理的话,那就算之前写个过半成品应该也会有心去整理好好总结吧。 为了自己的数据库的水平可以再提…...

欧拉安装

因为 openEuler 22.03 LTS 使用的内核版本是 5.10,所以选择 5.x 内核的选项是最匹配的。...

2025实测:6款主流公众号编辑器大比拼,解决你的排版难题!

在新媒体运营的日常工作中,公众号排版是一项耗时又费力的任务。写作慢、排版耗时、跨平台排版不统一、跨平台发文琐碎、热点跟不动不及时、配图难/侵权风险等问题,常常困扰着我们这些新媒体人。为了找到一款好用的公众号编辑器,我亲测了多款市面上的主流产品。在本文中,我将…...

devc学C语言

之前用的是VS,现在开始用 devc,兼容性更强...

HarmonyOS 5.1手势事件详解

大家好,我是 V 哥。手势事件由绑定手势方法和绑定的手势组成,绑定的手势可以分为单一手势和组合手势两种类型,根据手势的复杂程度进行区分。本文跟着 V 哥一起来探讨手势事件处理。 想要考取鸿蒙认证的小伙伴,请加入V 哥班级获取辅导: https://developer.huawei.com/consu…...

Vue3项目中集成AI对话功能的实战经验分享

ai-suspended-ball-chat组件使用体验摘要 本文分享了Vue3项目中使用ai-suspended-ball-chat组件集成AI对话功能的实践经验。该组件提供悬浮球和独立面板两种模式,支持流式响应、图片上传、语音交互等功能,显著提升了用户体验。通过实际案例展示了在客服系统和代码助手场景中的…...

gulimall出现服务间调用org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose 问题

java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;A调用B模块出现上面这个问题,…...

Java02课前问题列表

Java02课前问题列表1.方法相关问题 public class Main {static void changeStr(String x) {x = "xyz";}static void changeArr(String[] strs) {for (int i = 0; i < strs.length; i++) {strs[i] = strs[i]+""+i;}}public static void main(String[] ar…...

达梦数据库安装和使用

1、达梦数据库安装地址 https://eco.dameng.com/document/dm/zh-cn/start/install-dm-windows-prepare.html 2、 点击下载3、4、 现在版本只需要点击exe文件56 点击【下一步】如图所示7、 接受授权协议8 如果没有key文件可跳过 如果有点击浏览找到key文件系统自动校验9建议典型…...

CSP 赛前周记

初赛前 - 第一周(末) 这学期的第一周,据说是本学期第二长的假期,故开始摸摸。 Day1 - 周五 晚上回来开了把信奥大联赛,发现比你谷月赛还烂,IOI 赛制,风格跟 CSP 三不沾,每周有时间打打玩玩吧(结果被打爆了,只有 230pts)。总结Day2 - 周六 由于作业多得一批,白天在疯…...

Day16对数组的基本认识

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

Ubuntu 界面变为 Mac

sudo apt install gnome-tweaks...

今日随笔

今天完成了社会实践调查作业...

Day16

数组的定义package array;public class ArrayDemo1 {//变量类型 变量名称 = 变量的值//数组类型 同上public static void main(String[] args) {int [] nums;//声明一个数组nums = new int [10];//创建一个数组int [] nums1 =new int [10];//两种写法都可,初学建议拆分避免…...

PVE9环境下飞牛OS安装vGPU驱动

1.安装过程# 切换root权限 sudo su -# 屏蔽nouveau echo "blacklist nouveau" >> /etc/modprobe.d/blacklist-nouveau.conf# 更新initramfs update-initramfs -u# 安装组件 apt update && apt install build-essential dkms linux-headers-generic lib…...

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化环境变量其它配置源

02020304 .NET Core核心基础组件04-配置系统、Json文件配置、选项方式读取、扁平化&环境变量&其它配置源 1. 配置系统入门(视频2-32)传统Web.config配置的缺点,之前DI讲过。 为了兼容,仍然可以使用web.config和ConfigurationManage类,但不推荐。 .NET中的配置系统…...

md格式

markdown # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题*斜体* **粗体** ***粗斜体*** ~~删除线~~ `print("hello world)` ==高亮== 一级标题 二级标题 三级标题 四级标题 斜体 粗体 粗斜体 删除线 print("hello world) 高亮>一层嵌套引用 >>二层嵌套…...

CSP-S模拟20

前言: 一场通过乱搞获得如下成绩的比赛。\(T1:\) 思路: 一场情况超级复杂(bushi)的大模拟(应该可以这么叫吧?)直接先这样这样,在那样那样,最后在叽里呱啦就好了。 嘿嘿,开个玩笑嘛。首先,我们知道一定至少从\(S\)跳到\(S\)到\(T\)的那条链上,这样我们可以就\(S\)跳…...

第7篇、Kafka Streams 与 Connect:企业级实时数据处理架构实践指南

Kafka Streams 与 Kafka Connect:企业级实时数据处理架构实践指南 技术背景与适用场景 在现代数据架构中,实时数据处理已成为企业数字化转型的核心能力。Apache Kafka作为分布式流处理平台,提供了两个关键组件:Kafka Streams:轻量级流处理库,支持有状态实时计算 Kafka Co…...