【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- PostgreSQL金融风控分析之风险指标可视化监控实战
- 一、引言
- 二、案例背景
- 三、数据准备
- (一)数据来源与字段说明
- (二)数据清洗
- 四、风险指标计算
- (一)逾期率计算
- (二)不良贷款率计算
- (三)客户信用评分分布
- 五、风险指标可视化
- (一)可视化工具选择
- (二)可视化图表设计
- (三)仪表盘搭建
- 六、结论与建议
- (一)结论
- (二)建议
PostgreSQL金融风控分析之风险指标可视化监控实战
一、引言
在金融领域,风险控制是核心环节之一。
- 准确、及时地监控风险指标,对于金融机构做出明智决策、降低潜在损失至关重要。
- PostgreSQL作为一款强大的开源关系型数据库,具备高效的数据存储、处理和分析能力,能够为金融风控分析提供坚实的数据基础。
- 本文将结合实际案例,详细阐述如何
利用PostgreSQL进行金融风控分析中的风险指标可视化监控
,从数据清洗到可视化展示的全流程。
二、案例背景
某商业银行面临着日益复杂的金融风险环境,需要对贷款业务的风险进行全面监控。
- 该银行拥有大量的
客户数据、贷款数据、还款记录等,数据存储在PostgreSQL数据库中
。 - 我们的目标是通过对这些数据的分析,提取关键的风险指标,并进行可视化展示,以便管理层和风控人员能够直观地了解风险状况,及时采取应对措施。
三、数据准备
(一)数据来源与字段说明
数据主要来源于银行的贷款业务系统,包括以下几个关键表:
-
- 客户信息表(customer_info):包含客户ID(customer_id)、姓名(customer_name)、年龄(age)、性别(gender)、职业(occupation)、信用评级(credit_rating)等字段。
-
- 贷款申请表(loan_application):包含贷款申请ID(application_id)、客户ID(customer_id)、贷款金额(loan_amount)、贷款期限(loan_term)、申请日期(application_date)、贷款类型(loan_type)等字段。
-
- 还款记录表(repayment_record):包含还款记录ID(record_id)、贷款申请ID(application_id)、还款日期(repayment_date)、应还金额(due_amount)、实际还款金额(actual_repayment_amount)、是否逾期(is_overdue)等字段。
- 建表语句及测试数据构造
-- 创建客户信息表 CREATE TABLE IF NOT EXISTS customer_info (customer_id SERIAL PRIMARY KEY,customer_name VARCHAR(50) NOT NULL,age SMALLINT CHECK (age BETWEEN 18 AND 70),gender VARCHAR(1) CHECK (gender IN ('M', 'F')),occupation VARCHAR(30),credit_rating VARCHAR(10) CHECK (credit_rating IN ('优秀', '良好', '中等', '较差')) );-- 创建贷款申请表 CREATE TABLE IF NOT EXISTS loan_application (application_id SERIAL PRIMARY KEY,customer_id INT NOT NULL REFERENCES customer_info(customer_id),loan_amount DECIMAL(12,2) CHECK (loan_amount > 0),loan_term SMALLINT CHECK (loan_term BETWEEN 6 AND 120), -- 贷款期限(月)application_date DATE,loan_type VARCHAR(10) CHECK (loan_type IN ('信用贷款', '抵押贷款', '担保贷款')) );-- 创建还款记录表(修正:添加due_date应还日期字段) CREATE TABLE IF NOT EXISTS repayment_record (record_id SERIAL PRIMARY KEY,application_id INT NOT NULL REFERENCES loan_application(application_id),due_date DATE NOT NULL, -- 新增:应还日期(关键字段)repayment_date DATE, -- 实际还款日期due_amount DECIMAL(12,2) CHECK (due_amount > 0), -- 应还金额actual_repayment_amount DECIMAL(12,2) CHECK (actual_repayment_amount >= 0), -- 实际还款金额is_overdue BOOLEAN -- 是否逾期(实际还款日期 > 应还日期) );-- 插入100条客户信息(使用随机函数生成) INSERT INTO customer_info (customer_name, age, gender, occupation, credit_rating) SELECT '客户' || g.id,floor(random() * 53 + 18)::SMALLINT, -- 18-70岁随机CASE WHEN random() > 0.5 THEN 'M' ELSE 'F' END,(ARRAY['教师','医生','程序员','公务员','自由职业','企业主','设计师','销售','工程师','学生'])[floor(random()*10)+1],(ARRAY['优秀','良好','中等','较差'])[floor(random()*4)+1] FROM generate_series(1,100) AS g(id);-- 插入300条贷款申请记录(每个客户1-3条) INSERT INTO loan_application (customer_id, loan_amount, loan_term, application_date, loan_type) SELECT (random() * 100 + 1)::INT, -- 随机关联客户ID(1-100)floor(random() * 495000 + 5000)::DECIMAL(12,2), -- 5000-500000元随机金额floor(random() * 115 + 6)::SMALLINT, -- 6-120期随机期限(current_date - (random() * 1825)::INT)::DATE, -- 最近5年随机申请日期(1825天≈5年)(ARRAY['信用贷款','抵押贷款','担保贷款'])[floor(random()*3)+1] FROM generate_series(1,300);-- 还款记录表数据(修正:通过子查询解决别名引用) INSERT INTO repayment_record (application_id, due_date, repayment_date, due_amount, actual_repayment_amount, is_overdue) WITH temp_data AS (SELECT la.application_id,la.application_date + (g.id * 30)::INT AS due_date,CASE WHEN random() > 0.3 THEN la.application_date + (g.id * 30)::INT + (random() * 15)::INT -- 30%逾期(+0-15天)ELSE la.application_date + (g.id * 30)::INT - (random() * 5)::INT -- 70%正常(-0-5天)END AS repayment_date,la.monthly_due AS due_amount,CASE WHEN random() > 0.05 THEN la.monthly_due -- 95%正常还款ELSE floor(random() * la.monthly_due)::DECIMAL(12,2) -- 5%部分还款END AS actual_repayment_amountFROM (SELECT application_id,application_date,loan_term,loan_amount / loan_term AS monthly_dueFROM loan_application) laCROSS JOIN generate_series(1,4) AS g(id) ) SELECT application_id,due_date,repayment_date,due_amount,actual_repayment_amount,(repayment_date > due_date) AS is_overdue -- 现在可以安全引用repayment_date别名 FROM temp_data LIMIT 1200;
(二)数据清洗
-
- 缺失值处理:通过SQL查询检查各表中的缺失值情况。
- 对于客户信息表中的信用评级字段,若存在缺失值,根据客户的其他信息(如职业、收入等)进行合理填充,或者将其标记为未知类别。
- 对于贷款申请表中的贷款期限字段,若存在缺失值,由于该字段是关键信息,无法通过其他字段推断,因此删除相应的缺失记录。
-- 检查客户信息表信用评级缺失值
SELECT COUNT(*) FROM customer_info WHERE credit_rating IS NULL;-- 填充信用评级缺失值(示例,实际需根据业务规则)
UPDATE customer_info SET credit_rating = 'medium' WHERE credit_rating IS NULL AND occupation = 'employee';-- 删除贷款申请表中贷款期限缺失的记录
DELETE FROM loan_application WHERE loan_term IS NULL;
-
- 异常值处理:对于贷款金额字段,通过统计分析确定合理的范围,将明显超出正常范围的异常值视为错误数据并进行修正或删除。
- 例如,贷款金额不能为负数,若存在负数记录,检查是否为输入错误,若是则进行修正,否则删除。
-- 检查贷款金额异常值(负数)
SELECT * FROM loan_application WHERE loan_amount < 0;-- 删除贷款金额为负数的异常记录
DELETE FROM loan_application WHERE loan_amount < 0;
-
- 数据一致性检查:确保各表之间的数据关联正确,例如贷款申请表中的客户ID必须存在于客户信息表中,还款记录表中的贷款申请ID必须存在于贷款申请表中。
- 通过外键约束或SQL查询进行检查,对于不匹配的数据进行修正或删除。
-- 检查贷款申请表中客户ID不存在于客户信息表的记录
SELECT la.* FROM loan_application la LEFT JOIN customer_info ci ON la.customer_id = ci.customer_id WHERE ci.customer_id IS NULL;-- 删除不匹配的贷款申请记录
DELETE FROM loan_application WHERE customer_id NOT IN (SELECT customer_id FROM customer_info);
四、风险指标计算
(一)逾期率计算
逾期率是衡量贷款风险的重要指标之一,它表示逾期还款的贷款占总贷款的比例。
- 计算公式为:
逾期率 = 逾期贷款笔数 / 总贷款笔数 × 100%。
在PostgreSQL中,通过以下SQL语句计算各贷款类型的逾期率:
SELECT loan_type, COUNT(CASE WHEN is_overdue = 'yes' THEN 1 END) AS overdue_loans,COUNT(*) AS total_loans,ROUND(COUNT(CASE WHEN is_overdue = 'yes' THEN 1 END) * 100.0 / COUNT(*), 2) AS overdue_rate
FROM loan_application la
JOIN repayment_record rr ON la.application_id = rr.application_id
GROUP BY loan_type;
计算结果如下表所示:
(二)不良贷款率计算
不良贷款率是指不良贷款(通常指逾期90天以上的贷款)占总贷款的比例。
- 计算公式为:
不良贷款率 = 不良贷款笔数 / 总贷款笔数 × 100%。
首先,需要确定逾期90天以上的贷款记录。
- 通过计算还款日期与应还日期的时间差,判断是否逾期90天以上。
- 在PostgreSQL中,使用
AGE
函数计算时间差:
SELECT rr.record_id, la.application_id, la.loan_type, AGE(rr.repayment_date, due_date) AS days_overdue
FROM repayment_record rr
JOIN loan_application la ON rr.application_id = la.application_id;
- 然后,计算不良贷款率:
SELECT loan_type, COUNT(CASE WHEN days_overdue > '90 days' THEN 1 END) AS bad_loans,COUNT(*) AS total_loans,ROUND(COUNT(CASE WHEN days_overdue > '90 days' THEN 1 END) * 100.0 / COUNT(*), 2) AS bad_loan_rate
FROM (SELECT rr.record_id, la.application_id, la.loan_type, AGE(rr.repayment_date, due_date) AS days_overdueFROM repayment_record rrJOIN loan_application la ON rr.application_id = la.application_id
) AS subquery
GROUP BY loan_type;
计算结果如下表所示:
(三)客户信用评分分布
客户信用评级是评估客户信用风险的重要依据。
- 通过统计不同信用评级的客户数量及其占比,了解客户的信用状况分布。
SELECT credit_rating, COUNT(*) AS customer_count,ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM customer_info), 2) AS percentage
FROM customer_info
GROUP BY credit_rating
ORDER BY credit_rating;
结果如下表:
五、风险指标可视化
(一)可视化工具选择
为了实现风险指标的可视化监控,我们选择使用Tableau作为可视化工具。
- Tableau具有强大的数据可视化能力,能够快速将PostgreSQL中的数据转化为直观、交互式的图表和仪表盘,方便用户进行数据分析和监控。
(二)可视化图表设计
-
- 逾期率对比柱状图:以
贷款类型为横轴,逾期率为纵轴,绘制柱状图
,直观展示不同贷款类型的逾期率差异。
- 通过颜色区分不同的贷款类型,使图表更加清晰易读。
- 逾期率对比柱状图:以
-
- 不良贷款率趋势线图:按
时间维度(如月份)统计不良贷款率,绘制趋势线图
,观察不良贷款率的变化趋势。
- 可以设置预警线,当不良贷款率超过预警线时,发出警示信号。
- 不良贷款率趋势线图:按
-
- 客户信用评分饼图:
以信用评级为分类,绘制饼图,展示不同信用评级客户的占比情况
。
- 通过标签显示具体的占比数据,方便用户快速了解客户信用分布。
- 客户信用评分饼图:
(三)仪表盘搭建
将上述可视化图表整合到一个仪表盘上,形成风险指标可视化监控界面。
- 仪表盘可以包含筛选器,允许用户根据不同的条件(如时间范围、贷款类型等)进行数据筛选,查看相应的风险指标。
- 同时,设置交互功能,当用户点击某个图表中的数据时,其他相关图表会进行联动更新,以便更深入地分析数据。
六、结论与建议
(一)结论
通过利用PostgreSQL进行金融风控分析中的风险指标可视化监控,我们能够有效地对贷款业务的风险进行评估和监控。
- 从
数据清洗到风险指标计算,再到可视化展示,整个流程实现了数据的高效处理和分析,为金融机构提供了直观、准确的风险信息
。 - 通过对不同贷款类型的逾期率、不良贷款率以及客户信用评分分布的分析,我们可以发现信用贷款的风险相对较高,需要重点关注和加强风控措施。
(二)建议
-
- 针对信用贷款的高风险特点,进一步优化信用评估模型,加强对信用评级较低客户的审核和监控,提高信用贷款的准入门槛。
-
定期更新和维护风险指标可视化仪表盘,确保数据的及时性和准确性
。同时,根据业务需求和市场变化,不断优化可视化图表和指标体系,提高监控的有效性。
-
- 结合其他数据分析方法和技术,如
机器学习算法,对客户的信用风险进行更精准的预测和评估
,为风险控制提供更科学的依据。
- 结合其他数据分析方法和技术,如
通过以上实战案例,我们展示了如何利用PostgreSQL和Tableau实现金融风控分析中的风险指标可视化监控。
- 这一流程不仅适用于商业银行的贷款业务风险监控,也可以为其他金融领域的风险分析提供参考和借鉴。
- 在实际应用中,需要根据具体的业务需求和数据特点,灵活调整分析方法和可视化方案,以实现更好的风险控制效果。
以上是完整的金融风控分析案例中风险指标可视化监控内容。
- 你可以和我说说对文章内容、结构等方面的看法,若有其他修改或补充需求,也请告知我。
相关文章:
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL金融风控分析之风险指标可视化监控实战一、引言二、案例背景三、数据准备(一)数据来源与字段说明(二)数据清洗 四、…...
【AI提示词】贝叶斯分析专家
提示说明 一名专业的贝叶斯推断专家,具备统计建模、数据分析和不确定性决策方面的专长。 提示词 # Role: 贝叶斯分析专家## Profile - language: 中文 - description: 一名专业的贝叶斯推断专家,具备统计建模、数据分析和不确定性决策方面的专长 - ba…...
星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡
星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡 引言:物联网监控的模板革命 在万物互联的时代,设备监控已成为保障物联网系统稳定运行的核心环节。传统的标准化监控方案正面临着设备类型爆炸式增长带来的…...
#跟着若城学鸿蒙#HarmonyOS NEXT学习之Blank组件详解
一、组件介绍 Blank(空白)组件是HarmonyOS NEXT中一个简单但非常实用的UI组件,它主要用于在布局中创建空白区域,帮助开发者更灵活地控制界面元素之间的间距和布局结构。虽然Blank组件本身不显示任何内容,但它在界面设…...
《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
1 docker 简介 1.1 Docker 的优点 Docker 是一款开放平台,用于应用程序的开发、交付与运行,能将应用和基础架构分离,实现软件快速交付 ,还能以统一方式管理应用和基础架构,缩短代码从编写到上线的时间。其核心优势如…...
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库
准备工作 请依照这篇文章搭建环境 OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——环境配置_openharmony交叉编译-CSDN博客 下载 wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.9.tar.xz 解压 tar -xf mkdir ./out cd ./out Cmake命…...
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
⭐️个人主页:小羊 ⭐️所属专栏:LeetCode 热题 100 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 二叉树的中序遍历二叉树的最大深度翻转二叉树对称二叉树二叉树的直径二叉树的层序遍历将有序数组转换为二叉搜索树验…...
中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世
中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世 引言CodeBuddy环境准备VSCodeCodeBuddyNode.js下载安装 游戏开发Craft模型一句话生成数独游戏游戏体验 EdgeOne PagesMCPPages MCP Server配置 MCP Server 游戏源码总结 引言 在正文开始之前,先引…...
【蓝桥杯嵌入式】【复盘】第13届国赛真题
1. 前言 最近在准备16届的蓝桥杯嵌入式赛道的国赛,打算出一个系列的博客,记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点,如果有错误或者遗漏欢迎各位大佬斧正。 本系列博客会分为以下两大类: 1.1. 单独模块的讲…...
Docker疑难杂症解决指南
Docker疑难杂症解决指南 Docker作为容器化技术的代表,广泛应用于开发、测试和部署环境中。然而,在使用过程中,用户可能会遇到各种问题。以下是一些常见的Docker疑难杂症及其解决方法。 容器无法启动 容器无法启动是常见问题之一࿰…...
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
一、顺序结构 安装软件命令: sudo apt-get install (软件名) 安装格式化对齐:sudo apt-get install clang-format 内存泄漏检测工具: sudo apt-get install valgrind 编译后,使用命令 valgrind ./a.out 即可看内…...
MySQL 8.0 OCP 1Z0-908 题目解析(2)
题目005 Choose two. Which two actions can obtain information about deadlocks? □ A) Run the SHOW ENGINE INNODB MUTEX command from the mysql client. □ B) Enable the innodb_status_output_locks global parameter. □ C) Enable the innodb_print_all_deadlock…...
短板效应--双指针
1.根据题意取决于最小的高,那么 若当移动最小高的一端,mv可能会变 但若移动较大的一端,v一定会变小就没有意义了,所以我们只需要每次移动一端,直到lr就行 2.原理就是与左右端点有关且每次只要移动一端就行 #include…...
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
一、腾讯云CodeBuddy产品全景解读 1. 什么是腾讯云代码助手? 官方定义: Tencent Cloud CodeBuddy是由腾讯自研的AI编程辅助工具,基于混元大模型DeepSeek双引擎,提供: ✅ 智能代码补全(支持200语言&#x…...
【Linux】简单设计libc库
📝前言: 经过之间两篇文章,【Linux】基础IO(一)和【Linux】基础IO(二)的学些,我们对文件的基础IO已经有了一定的理解。 这篇文章我们来简单设计一下libc库,来复习一下文…...
3335. 字符串转换后的长度 I
3335. 字符串转换后的长度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大质数mod 10**97# 创建一个长度为26的数组cnt,对应26个小写字母cnt [0]*26# 计算出s中26个字符分别有多少个for ch in s:cnt[ord(ch)-ord(a)] 1f…...
《医院网络安全运营能力成熟度评估指南》(试行版)研究解读
引言 随着数字化转型的不断深入,医院信息化建设已从单点应用走向全面系统集成,信息系统已成为支撑医院业务运行和管理决策的基础设施。然而,信息化发展也带来了日益复杂的网络安全挑战,从传统的边界防护到如今的全方位安全威胁,医院网络安全建设面临着前所未有的压力。20…...
鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)
【高心星出品】 文章目录 项目简介:项目运行效果图:主要功能:使用的技能点:开发环境: 项目简介: 这是一个基于鸿蒙系统(HarmonyOS)开发的天气应用,采用 ArkTS 语言开发&…...
软考软件测评师——计算机网络
目录 第一部分 核心知识点解析 1. IPv4地址规范 2. 层次化网络架构 3. 网络设备解析 4. URL结构规范 5. 关键网络命令 6. SNMP配置要求 第二部分 历年真题精析 2020年真题 2016年真题 2015年真题 高频考点总结 第一部分 核心知识点解析 1. IPv4地址规范 特殊地址说…...
Node.js 中的 URL 模块
一、URL 模块基础 1. 模块导入方式 // Node.js 方式 const url require(url);// ES 模块方式 (Node.js 14 或启用 ESM) import * as url from url; 2. 核心功能 解析 URL 字符串 格式化 URL 对象 URL 处理工具方法 WHATWG URL 标准实现 二、URL 解析与构建 1. 传统解…...
JavaWeb 前端开发
JavaWeb前端 初识 HTMLCSS 入门程序 什么是HTML HTML是由标签构成的 什么是CSS HTML快速入门 标签可以是大写,也可以是小写,也可以是大小写混用。 属性值也可以使用单引号,但一般使用双引号。 HTML的语法结构比较松散,不严谨…...
设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析
目录 一、策略模式:AI大模型的动态决策引擎 1.1 核心原理与工业级实现 1.2 AI时代的技术演进 二、模板方法模式:AI流水线的标准化基石 2.1 多模态处理框架设计 三、策略与模板方法的协同创新 3.1 电商推荐系统实践 四、前沿趋势与挑战 4.1 量子计算增强模式 五、伦理…...
2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局
2. 盒模型/布局模块 - 响应式产品展示页 案例:电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…...
H5S 视频监控AWS S3 对象存储
本文介绍一下如何使用S3对象存储作为H5S 存储空间进行录像存储 然后创建一个对象存储,本文以minio 为例(实际项目亲测天翼云): 首先安装 s3fs 如果是redhat系列,使用如下命令 sudo yum install epel-release sudo yum install s3fs-fuse …...
Visual Studio 2022 跨网络远程调试
🚀 Visual Studio 2022 跨网络远程调试实践指南 在本地开发软件时,Visual Studio 的调试器是我们最依赖的工具之一。但是当目标程序运行在远程设备上,例如测试服务器、工控设备或嵌入式终端,如何实现 跨网络远程调试 成为了开发中…...
最短路与拓扑(1)
1、找最长良序字符串 #include<bits/stdc.h> using namespace std; const int N105; int dis[N]; int vis[N]; int edge[N][N]; int n,m; int vnum;void dij(int u, int v) {// 初始化距离数组和访问标记for(int i0; i<vnum; i) {vis[i] 0;dis[i] edge[u][i];}// D…...
【前缀和】和为 K 的子数组(medium)
【前缀和】和为 K 的子数组 题目描述算法原理和细节问题代码 题目描述 和为 K 的子数组 给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。 示例 1: 输入:nums [1,1,1], k 2 输出: 2 解释: 此题 [1,1] 与 [1,1] 为两种不同的…...
深入理解 JVM:StackOverFlow、OOM 与 GC overhead limit exceeded 的本质剖析及 Stack 与 Heap 的差异
摘要 在 Java 开发过程中,内存管理相关的问题一直是开发者需要重点关注的领域。StackOverFlow、OutOfMemory(OOM)和GC overhead limit exceeded是常见的运行时错误,而理解Stack(栈)和Heap(堆&a…...
汽车功能安全--TC3xx MBIST设计要点
英飞凌针对硬件潜伏故障的自测,提供了四种机制:PBIST、LBIST、MONBIST和MBIST。 LBIST和MONBIST我们已经聊过了,今天就快速介绍下MBIST。 MBIST,全程Memory Built-in Self Test,用于检测SRAM数据单元的完整性。 在2…...
blazor与硬件通信实现案例
在网页接入硬件交互通信方案这篇博客中,曾经提到了网页中接入各种硬件操作的方法,即通过Windows Service作为指令的中转,并建立websocket通信连接,进而实现接入硬件的各种操作。这篇博客就以实际的案例来讲解具体怎么实现。 一、建立Windows Service项目 比如我就建立了一…...
思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
5月10日,广州思迈特软件有限公司(以下简称“思迈特软件”)与天阳宏业科技股份有限公司(以下简称“天阳科技”)在北京正式签署战略合作协议。思迈特软件董事长吴华夫、CEO姚诗成,天阳科技董事长兼总裁欧阳建…...
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
在上一篇中,我们理解了微服务架构的核心理念以及Spring Cloud为我们提供的强大工具集。我们提到,微服务架构的一个核心挑战在于,服务实例的网络位置是动态的,服务之间需要一种机制来互相定位。 想象一下,你开了一家新…...
Linux之初见进程
1. 冯诺依曼体系结构 冯诺依曼体系结构是计算机的基本设计原则之一,也被认为是现代计算机的基础。它由美国数学家约翰冯诺伊曼在20世纪40年代后期提出。冯诺依曼体系结构包括存储程序概念、将数据和指令存储在同一存储器中、按照顺序执行指令等关键特征。 具体来说…...
Docker入门教程:常用命令与基础概念
目录 简介常用命令Docker 常用命令汇总docker run 命令格式与参数解析 简介 Docker 是一个客户端-服务器(client-server)架构的应用程序,其中包含两个主要组件:Docker 客户端和 Docker 守护进程(也称为 Docker Daemon…...
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
内核深入学习3——ARM32/ARM64在Linux内核中的实现(2) 今天我们来讨论的是一个硬核的内容,也是一个老生常谈的话题——那就是分析ARM32和ARM64体系架构下的Linux内存区域示意图的内容。对于ARM64的部分,我们早就知道一个基本的…...
vim 练习题
文章目录 前言:学习了vim基础命令,上机实操下吧命令模式练习插入模式练习末行模式练习视图模式练习高级操作练习 总结 前言:学习了vim基础命令,上机实操下吧 命令模式练习 打开任意文本文件,使用gg跳转到首行&#x…...
CSS3 选择器完全指南:从基础到高级的元素定位技术
CSS3选择器完全指南:从基础到高级的元素定位技术 一、基本选择器:精准定位的基石 (一)元素选择器 通过元素标签名直接匹配页面元素,语法简洁直观: p { color: #333; } /* 选择所有<p>元素 */ div…...
从SAM看交互式分割与可提示分割的区别与联系:Interactive Segmentation Promptable Segmentation
SAM的火爆也带来了一项新的任务:Promptable Segmentation,并且作者在文中对比了交互式分割Interactive Segmentation,并且在训练过程中也参考了交互式分割的训练方法,那么可提示分割与交互式分割有什么区别? 个人观点…...
k8s初始化时候,报错无法通过 CRI(容器运行时接口)与 containerd 通信
报错主要信息处 [reset] Unmounting mounted directories in “/var/lib/kubelet” W0513 11:34:19.818023 27124 cleanupnode.go:134] [reset] Failed to evaluate the “/var/lib/kubelet” directory. Skipping its unmount and cleanup: lstat /var/lib/kubelet: no such f…...
k8s之k8s集群部署
一、kubernetes基础环境搭建 1.安装虚拟机 2. 基础环境配置 2.1 关闭防火墙 更改主机名 #系统更新 sudo dnf update -y # 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # 临时关闭 SELinux sudo setenforce 0 # 永久关闭 SELinux sudo sed -i…...
百度智能云千帆携手联想,共创MCP生态宇宙
5月7日,2025联想创新科技大会(Tech World)在上海世博中心举行,本届大会以“让AI成为创新生产力”为主题。会上,联想集团董事长兼CEO杨元庆展示了包括覆盖全场景的超级智能体矩阵,包括个人超级智能体、企业超…...
黑白浮生项目测试报告
文章目录 一、项目背景二、项目功能三、测试计划1. 功能测试1.1 注册页面1.1.1 正常注册1.1.2 异常注册 1.2 登录页面1.2.1 正常登录1.2.2 异常登录 1.3 游戏大厅页面1.3.1 开始匹配1.3.2 取消匹配 1.4 游戏房间页面1.4.1 落子1.4.2 游戏结束 2. 自动化测试2.1 创建浏览器驱动类…...
《操作系统真象还原》第十四章(2)——文件描述符、文件操作基础函数
文章目录 前言文件描述符简介文件描述符原理文件描述符实现修改thread.h修改thread.c 文件操作相关的基础函数inode操作相关函数文件相关函数编写file.h编写file.c 目录相关函数完善fs/dir.h编写fs/dir.c 路径解析相关函数实现文件检索功能修改fs.h继续完善fs.c makefile 结语 …...
k8s v1.26 实战csi-nfs 部署
一 前言 使用自开发的一键k8s基础环境部署后,存储需要解决,就是测试环境故选择nfs比较简单,翻阅很多网上资料感觉都不是很全面,结合网上资料折腾了一天,总算是完成了csi-nfs部署。其实之前也部署过,经过一…...
测试集群的功能-执行wordcount程序
具体的操作步骤如下: 确保hadoop是正确运行的。hdfs和yarn都正常启动了。在集群根目录下创建wcinput目录,并在它的下面上传两个文本文件word1.txt, word2.txt,其中保存了要测试的单词信息。在任意一台设备中,进入到hadoop的主目录…...
聊一聊Electron中Chromium多进程架构
Chromium 多进程架构概述 Chromium 的多进程架构是其核心设计之一,旨在提高浏览器的稳定性、安全性和性能。Chromium 将不同的功能模块分配到独立的进程中,每个进程相互隔离,避免了单进程架构中一个模块的崩溃导致整个浏览器崩溃的问题。 在…...
虹科技术 | 简化汽车零部件测试:LIN/CAN总线设备的按键触发功能实现
汽车零部件测试领域对操作的便捷性要求越来越高,虹科Baby-LIN-RC系列产品为这一需求提供了完美的解决方案。从基础的按键设置到高级的Shift键应用,本文将一步步引导您了解虹科Baby-LIN-RC系列产品的智能控制之道。 虹科Baby-LIN-3-RC 想象一下࿰…...
前端开发避坑指南:React 代理配置常见问题与解决方案
前端开发避坑指南:React 代理配置常见问题与解决方案 一、为什么需要配置代理?二、使用 create-react-app 默认配置代理三、使用 http-proxy-middleware 配置复杂代理四、高级代理配置五、生产环境中的代理配置一、为什么需要配置代理? React 应用在开发过程中经常需要与后端…...
43、Server.UrlEncode、HttpUtility.UrlDecode的区别?
Server.UrlEncode 和 HttpUtility.UrlDecode 是 .NET 中用于处理 URL 编码/解码的两个不同方法,主要区别在于所属命名空间、使用场景和具体行为。以下是详细对比: 1. 所属类库与命名空间 Server.UrlEncode 属于 System.Web.HttpServerUtility 类。通常…...
Azure 应用的托管身份与服务主体
Microsoft Entra ID -- 前称 Azure Active Directory -- 提供强大的身份验证和授权功能。托管身份和服务主体通过限制凭据暴露的风险来帮助确保对 Azure 资源的访问安全。 托管身份为Azure原生应用程序自动管理身份,而服务主体则非常适合需要访问Azure资源的外部应…...