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

基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台

0 引言
地震观测是地球物理观测的重点,是地震学和
地球物理学发展的基础 [1] 。地震数据采集器主要功
能是将地震计采集的地震波模拟信号转换为数字信
号并进行记录或传输 [2] ,为地震学提供大量的基础
数据。本文将介绍基FPGA+ARM的地震数据采集器软
件设计。
1 研究背景
系统架构。本设计采用STM32MP157作为主控
制单元,运行在Linux环境中。ADC采集模块将地震
计产生的三分量地震模拟信号通过采样转换成数字
信号。FPGA 主要负责数据采集、数据传输和对ADC
参数控制,采集GPS模块接收的IRIG-B码,向ARM转
发PPS秒脉冲授时,FPGA和ARM之间SPI总线进行数
据交互,Linux驱动和应用层都运行在ARM上,主要
接收数据、数据处理、数据存储和数据传输,外接
EMMC用于储存数据,网口连接远程客户端。串口用
于帮助开发人员对开发板进行调试,DS18b20获取
环境温度。系统整体设计结构图如图1所示。
2 Linux平台构建
本设计采用虚拟机Linux系统方式开发,安
装Ubantu18.04操作系统,在vscode上编写驱动
和Linux应用程序代码,构建交叉编译器,移植
U-boot,裁剪官方Linux内核,使用Buildroot构
建根文件系统。STM32MP157移植5.4.31版本Linux
操作系统。开发测试过程中,板子使用串口连接
PC端MobaXterm调试,设置U-boot参数让设备树、
内核镜像均通过TFTP方式加载,从PC端虚拟机中
Ubantu的NFS共享目录加载根文件系统,测试时驱
动均以.ko模块的形式加载到内核。完成所有测试
之后,将驱动Linux内核,设备树、内核镜像、根
文件系统烧写进核心板内部EMMC中。
3 系统软件设计
软件包括FPGA软件、ARM软件和客户端软件。
ARM软件包括驱动层和应用层,驱动有两层。(1)
与寄存器交互的底层驱动。(2)业务驱动层,主要
进行数据处理,编写系统调用接口,并在驱动中申
请为Linux系统/dev目录下的一个设备文件,Linux
应用程序通过系统调用联系驱动层,数据存储EMMC
中。通过网络与客户端建立连接,接收客户端数据
请求。客户端上位机软件主要用于显示波形、设置
参数和下达控制指令。软件结构如图2。
3.1 FPGA软件
FPGA芯片选用Intel Altera公司Cyclone系列
的EP4CE10F17C8N,在ISE软件使用Verilog语言编
程。FPGA采集AD芯片ADS1281的地震波数字信号,
ADS1281完成一次模数转换后,DADY引脚电平拉
低,FPGA可读取数据,实际采集有效位数为24 位。
GPS模块上电后会接收IRIG-B时间串码,一帧100 个
码元,每个码元周期10 ms [3]
FPGA采集IRIG-B码并将除P码外89 个有效0或1
码元编码成4 个32 位SPI帧发送给ARM。FPGA发送AD
采样数据和编码后的IRIG-B码给ARM。同时FPGA将
GPS接受的PPS秒脉冲转发给ARM。另一路SPI中FPGA
从,ARM为主,用于接收ARM发送的控制信号,控制
AD采样的量程和电源。
FPGA在本设计中另外一个作用是,在GPS信号
丢失的情况下仍可为其他设备授时,FPGA采用外界
晶振模拟PPS秒脉冲并发送至ARM。在有GPS信号的
条件下,FPGA会对晶振每秒产生的时钟计数,实际
计数值可能与晶振理论频率值存在偏差记录偏差,
每10 s一个循环周期,计算循环周期内累加总偏差
值为T,求周期平均偏差T0=T/10 [4] 。当丢失GPS信
号后,FPGA将启用晶振结合T0来模拟精准度较高的
PPS秒脉冲为ARM授时。
3.2 底层驱动
串行外设接口SPI是一种高速的、全双工、同
步的通信总线 [5] 。本设计中FPGA与MP157使用SPI
总线传输协议完成数据传输,其中一路SPI中,
FPGA为主,MP157为从,因为是单主从结构,所以
SCLK、MOSI和CS片选三线可以完成数据传输任务。
因Linux开源代码中暂无ST芯片原厂的SPI从
机驱动,故需编写其驱动代码。将SPI从机驱动
建立在Platform虚拟总线平台上,实现驱动和设
备的分离。使用OF匹配表方式匹配设备和驱动,
匹配成功,执行probe函数。probe函数首先使用
spi_alloc_salve向内核申请SPI从机,然后通过
platform_get_resource函数从平台获取内存空间
作为SPI相关寄存器的映射,通过devm_ioremap_
resource函数返回这段内存的虚拟地址,程序通过
虚拟地址访问寄存器。虚拟地址和物理地址之间的
转换是通过MMU来完成 [6] 。接着对SPI寄存器进行初
始化,设置SPI一帧为32 位,CPOL和CPHA均为0,通
信方式为只接收,片选设置为SS PAD输入决定,硬
件片选。不使用片选进行时钟和数据同步会导致数
据移位问题。
FPGA与MP157通过SPI总线传输大量数据,使用
DMA传输减轻CPU负担。为避免出现cache与内存数
据不一致的问题,使用一致性DMA映射方式。使用
dma_alloc_cohernet函数申请DMA缓冲区,然后进
行DMA参数配置。dmaengine_perp_dma_cyclic绑定
回调函数。之后启动DMA的异步传输,等待数据到
来。另一路SPI,ARM作为主机,FPGA作为从机接收
控制信号。向Linux 内核注册成功spi_driver 以
后就可以使用SPI 核心层提供的API 函数来对设备
进行读写操作了。
3.3 业务驱动
MP157通过SPI总线从FGPA得到三通道原始数
据和IRIG-B码,数据量到达DMA缓冲区一半时,启
用DMA回调函数,在回调函数中启用tasklet中断下
半部中处理数据。接收到的三个通道的4 000Hz原
始数据放在三个环形缓冲队列,存放过去10 s钟的
数据。解析IRIG-B码可以得到当前的年、月、日、
时、分、秒等时间信息,计算出时间戳 [7] 。同时
FPGA会向MP157转发GPS模块的PPS秒脉冲信号,结
合解析的时间信息为数据打上时间标签。
在边缘端设备对原始数据进行FIR级联滤波降
采样处理,压缩数据量,降低网络频带要求。由于
滤波采用的是级联结构,减少资源的使用和计算
量,只设置2倍和5倍降采样滤波器,阶数分别为
N=72和N=24,从4 000 Hz先2倍降采样到2 000 Hz,
再5倍降采样到400 Hz,直到50 Hz,共5级。FIR软
件滤波器框图如图3所示。
原始数据和每一级的滤波数据均由环形缓冲区
存储,每一级保留10 s内数据,分为10个数据块,
如4 kHz原始数据的缓冲区偏移地址为0~4 000范
围内存放时间戳为1704377760s的采集数据,经过
滤波器2倍下采样将数据存放在2 kHz缓冲区偏移地
址为0~2 000范围内,每一级如此。当需要读取某
一分辨率的指定绝对秒时间内的数据的起始地址,
只需要找到绝对秒时间在原始数据缓冲区中块号即
可。采样率越低的数据,由于经过级数多,存在
数据延迟产生的问题。本设计使用多线程协同的
方式解决问题,它的核心思想是让每一级滤波用
kthread_create分配一个内核线程,每个线程分配
合理的时间,设定时间内即使没有完成新数据的滤
波工作,仍结束此次调度,进入等待队列,开始处
理下一级滤波器的滤波内核线程。
在应用程序和驱动交互中,驱动程序抽象为设
备文件的形式,在Linux下通过udev来实现设备文
件的创建与删除,应用程序对/dev目录下的设备文
件与驱动程序交互。业务驱动定义并实现其file_
operation结构体,ioctl接口传递采样设置参
数,定义lseek接口的whence参数设置缓冲区读指
针,read接口定义参数length读取样点数,并通过
copy_to_user返回给应用程序相应数据。
3.4 Linux应用程序
Linux应用程序使用C语言编写,驱动层设备文
件通过系统调用,每200 ms非阻塞的方式获取最新
数据,存储到外接的EMMC中,存放200 天的数据,
Linux操作系统提供相应的EMMC设备驱动和文件系
统方便用户对EMMC做读写操作。SSH服务可以让远
程客户端与开发板建立网络连接进行数据交互。
3.5 客户端软件
远程客户端采用有固定IP地址的PC机,用户交
互界面使用PyQt5平台实现。主要负责波形显示,也
可以向数据采集器下达控制指令,如采样率设置,
ADC量程设置,远程触发采集设置,以及电路电源,
通道开关功能。
4 结语
本文介绍了基于FPGA+ARM的地震数据采集器软
件设计方案。介绍FPGA软件、底层硬件驱动、业务
层驱动、Linux应用层到客户端一整套的软件设计逻
辑,系统实现数据从采集、处理、传输到显示,研
究成果对数据采集软件设计具有一定参考价值。

相关文章:

基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台

0 引言 地震观测是地球物理观测的重点,是地震学和 地球物理学发展的基础 [1] 。地震数据采集器主要功 能是将地震计采集的地震波模拟信号转换为数字信 号并进行记录或传输 [2] ,为地震学提供大量的基础 数据。本文将介绍基FPGAARM的地震数据采集器软…...

NO.95十六届蓝桥杯备战|图论基础-单源最短路|负环|BF判断负环|SPFA判断负环|邮递员送信|采购特价产品|拉近距离|最短路计数(C++)

P3385 【模板】负环 - 洛谷 如果图中存在负环&#xff0c;那么有可能不存在最短路。 BF算法判断负环 执⾏n轮松弛操作&#xff0c;如果第n轮还存在松弛操作&#xff0c;那么就有负环。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…...

Linux 网络管理深度指南:从基础到高阶的网卡、端口与路由实战

一、网卡管理&#xff1a;构建网络连接的基石 1.1 现代网络工具链解析 在当代Linux系统中&#xff0c;iproute2套件已全面取代传统的net-tools&#xff0c;其优势体现在&#xff1a; 推荐组合命令&#xff1a; ip -c addr show | grep "inet " # 彩色显示有效IP…...

《重构全球贸易体系用户指南》解读

文章目录 背景核心矛盾与理论框架美元的“特里芬难题”核心矛盾目标理论框架 政策工具箱的协同运作机制关税体系的精准打击汇率政策的混合干预安全工具的复合运用 实施路径与全球秩序重构阶段性目标 风险传导与反制效应内部失衡加剧外部反制升级系统性风险 范式突破与理论再思考…...

stateflow中的函数

最近开始使用STATEFLOW,感觉功能比较强大,在嵌入式的应用中应该缺少不了,先将用到的仔细总结一下。还有一点,积极拥抱ai,学会使用AI的强大功能来学习。 在 Stateflow 中,不同类型的函数和状态适用于不同的建模需求。以下是 图形函数(Graphical Function)、Simulink 函…...

41.[前端开发-JavaScript高级]Day06-原型关系图-ES6类的使用-ES6转ES5

JavaScript ES6实现继承 1 原型继承关系图 原型继承关系 创建对象的内存表现 2 class方式定义类 认识class定义类 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&qu…...

Flutter学习四:Flutter开发基础(一)Widget

Widget 简介 0 引言 本文是对 Flutter Widget 相关知识的学习和总结。 1 Widget 概念 1.1 Widget 基础 Widget 字面意思&#xff1a;控件、组件、部件、微件、插件、小工具widget 的功能是"描述一个UI元素的配置信息"&#xff0c;所谓的配置信息就是 Widget 接收…...

Dify智能体平台源码二次开发笔记(6) - 优化知识库pdf文档的识别

目录 前言 新增PdfNewExtractor类 替换ExtractProcessor类 最终结果 前言 dify的1.1.3版本知识库pdf解析实现使用pypdfium2提取文本&#xff0c;主要存在以下问题&#xff1a; 1. 文本提取能力有限&#xff0c;对表格和图片支持不足 2. 缺乏专门的中文处理优化 3. 没有文档结…...

【LaTeX】公式图表进阶操作

公式 解决不认识的符号 查资料&#xff1a;1&#xff09;知道符号样子&#xff1b;2&#xff09;知道符号含义 放大版括号 用来括住存在分式的式子&#xff0c;或者用来括住内部由有很多括号的式子。用法是在左右括号[]分别加上\left和\right \[ J_r\dfrac{i \hbar}{2m} \l…...

第二阶段:数据结构与函数

模块4&#xff1a;常用数据结构 (Organizing Lots of Data) 在前面的模块中&#xff0c;我们学习了如何使用变量来存储单个数据&#xff0c;比如一个数字、一个名字或一个布尔值。但很多时候&#xff0c;我们需要处理一组相关的数据&#xff0c;比如班级里所有学生的名字、一本…...

matlab中simulink的快捷使用方法

连接系统模块还有如下更有效的方式:单击起始模块。 按下 Ctrl键&#xff0c;并单击目标块。 图示为已经连接好的系统模块 旋转模块&#xff1a;选中模块后按图示点击即可...

Redux部分

在src文件夹下 的store文件夹下创建modules/user.js和index.js module/ user.js // 存储用户相关const { createSlice } require("reduxjs/toolkit");const userStore createSlice({name:"user",// 数据状态initialState:{token:},// 同步修改方法red…...

基于STM32F103C8T6的温湿度检测装置

一、系统方案设计 1、系统功能分析 本项目设计的是一款基于STM32F103C8T6的温室大棚检测系统低配版。由 STM32F103C8T6最小系统板&#xff0c;OLED显示屏&#xff0c;DHT11温湿度检测传感器&#xff0c;光敏电阻传感器组成&#xff0c; 可以实现如下功能&#xff1a; 使用D…...

设计模式 - 单例模式

一个类不管创建多少次对象&#xff0c;永远只能得到该类型一个对象的实力 常用到的&#xff0c;比如日志模块&#xff0c;数据库模块 饿汉式单例模式&#xff1a;还没有获取实例对象&#xff0c;实例对象就已经产生了 懒汉式单例模式&#xff1a;唯一的实例对象&#xff0c;…...

Linux驱动开发1 - Platform设备

背景 所有驱动开发都是基于全志T507&#xff08;Android 10&#xff09;进行开发&#xff0c;用于记录驱动开发过程。 简介 什么是platform驱动自己上网搜索了解。 在driver/linux/platform_device.h中定义了platform_driver结构体。 struct platform_driver {int (*probe…...

力扣-hot100(盛最多水的容器)

11. 盛最多水的容器 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xf…...

使用 PyTorch 构建 UNet 图像去噪模型:从数据加载到模型训练的完整流程

图像去噪是计算机视觉中的一个基础问题&#xff0c;在医学图像、遥感、夜间视觉等领域有广泛应用。本文将手把手带你用 PyTorch 构建一个 UNet 架构的图像去噪模型&#xff0c;包括数据预处理、网络搭建、PSNR 评估与模型保存的完整流程。 本项目已支持将数据增强版本保存为独立…...

从信号处理角度理解图像处理的滤波函数

目录 1、预备知识 1.1 什么是LTI系统? 1.1.1 首先来看什么是线性系统,前提我们要了解什么是齐次性和叠加性。...

集合框架--List集合详解

List集合 List 接口直接继承 Collection 接口&#xff0c;它定义为可以存储重复元素的集合&#xff0c;并且元素按照插入顺序有序排列&#xff0c;且可以通过索引访问指定位置的元素。常见的实现有&#xff1a;ArrayList、LinkedList。 Arraylist:有序、可重复、有索引 Linke…...

需求分析---软件架构师武器库中的天眼系统

在软件架构中&#xff0c;需求分析决定了系统的核心设计方向。 然而&#xff0c;现实中的需求往往存在以下问题&#xff1a; 需求被二次加工&#xff1a;产品经理或业务方可能直接提供“解决方案”&#xff08;如“我们需要一个聊天功能”&#xff09;&#xff0c;而非原始需…...

Spring Cloud Gateway 的执行链路详解

Spring Cloud Gateway 的执行链路详解 &#x1f3af; 核心目标 明确 Spring Cloud Gateway 的请求处理全过程&#xff08;从接收到请求 → 到转发 → 到返回响应&#xff09;&#xff0c;方便你在合适的生命周期节点插入你的逻辑。 &#x1f9f1; 核心执行链路图&#xff08;执…...

Python----机器学习(基于PyTorch框架的逻辑回归)

逻辑回归是一种广泛使用的统计学习方法&#xff0c;主要用于处理二分类问题。它基于线性回归模型&#xff0c;通过Sigmoid函数将输出映射到[0, 1]范围内&#xff0c;表示实例属于正类别的概率。尽管逻辑回归适用于二分类任务&#xff0c;但在多分类问题中常使用Softmax函数&…...

工业数据治理范式革新:时序数据库 TDengine虚拟表技术解析

小T导读&#xff1a;在工业数字化过程中&#xff0c;数据如何从设备采集顺利“爬坡”到上层应用&#xff0c;一直是个难题。传统“单列模型”虽贴合设备协议&#xff0c;却让上层分析举步维艰。TDengine 用一种更聪明的方法打通了这条数据通路&#xff1a;不强求建模、不手动转…...

Linux的应用领域,Linux的介绍,VirtualBox和Ubuntu的安装,VMware的安装和打开虚拟机CentOS

目录 Linux的应用领域 Linux的介绍 Linux的介绍 Linux发行版 Unix和Linux的渊源 虚拟机和Linux的安装 VirtualBox和Ubuntu的安装 安装VirtualBox 安装Ubuntu 下载Ubuntu操作系统的镜像文件 创建虚拟机 虚拟机设置 启动虚拟机&#xff0c;安装Ubuntu系统 Ubuntu基…...

使用 Java 8 Stream实现List重复数据判断

import java.util.*; import java.util.stream.Collectors;public class DeduplicateStreamExample {static class ArchiveItem {// 字段定义与Getter/Setter省略&#xff08;需根据实际补充&#xff09;private String mATNR;private String lIFNR;private String suppSpecMod…...

GDAL:地理数据的万能瑞士军刀

目录 1. 什么是GDAL&#xff1f;2. 为什么需要GDAL&#xff1f;3. GDAL的主要功能3.1. 数据转换3.2. 数据裁剪和处理3.3. 读取和写入多种格式 4. 实际应用场景4.1 环境监测4.2 城市规划4.3 导航系统 5. 技术原理简单解释6. 如何使用GDAL&#xff1f;6.1 简单命令示例 7. 学习建…...

每日文献(十三)——Part two

今天从第三章节&#xff1a;“实现细节”开始介绍。 目录 三、实现细节 四、实验 五、总结贡献 六、致谢 三、实现细节 我们在多尺度图像上训练和测试区域建议和目标检测网络。这是在KITTI目标检测基准[13]上基于CNN的目标检测的趋势。例如&#xff0c;在[16]中&#xff…...

ArrayList 和 LinkedList 区别

ArrayList 和 LinkedList 是 Java 集合框架中两种常用的列表实现&#xff0c;它们在底层数据结构、性能特点和适用场景上有显著的区别。以下是它们的详细对比以及 ArrayList 的扩容机制。 1. ArrayList 和 LinkedList 的底层区别 (1) 底层数据结构 ArrayList&#xff1a; 基于…...

【iOS】UITableView性能优化

UITableView性能优化 前言优化从何入手优化的本质 CPU层级优化1. Cell的复用2. 尽量少定义Cell&#xff0c;善于使用hidden控制显示视图3. 提前计算并缓存高度UITableView的代理方法执行顺序Cell高度缓存高度数组 4. 异步绘制5. 滑动时按需加载6. 使用异步加载图片&#xff0c;…...

通过检索增强生成(RAG)和重排序提升大语言模型(LLM)的准确性

探索大语言模型&#xff08;LLM&#xff09;结合有效信息检索机制的优势。实现重排序方法&#xff0c;并将其整合到您自己的LLM流程中。 想象一下&#xff0c;一个大语言模型&#xff08;LLM&#xff09;不仅能提供相关答案&#xff0c;还能根据您的具体需求进行精细筛选、优先…...

IDEA202403常用快捷键【持续更新】

文章目录 一、全局搜索二、美化格式三、替换四、Git提交五、代码移动六、调试运行 在使用IDEA进行程序开发&#xff0c;快捷键会让这个过程更加酸爽&#xff0c;下面记录各种快捷键的功能。 一、全局搜索 快捷键功能说明Shift Shift全局搜索Ctrl N搜索Java类 二、美化格式 …...

硬件元件三极管:从基础到进阶的电子探秘

一、基础理论 1. PN结&#xff08;二极管&#xff09; PN 结是采用不同的掺杂工艺&#xff0c;将 P 型半导体与 N 型半导体紧密接触而形成的一个界面区域。也就是我们常说的二极管。&#xff08;P型带正电、N型带负电&#xff0c;电流由P流向N&#xff09; 形成过程&#xff1…...

4. k8s核心概念 pod deployment service

以下是 Kubernetes 的核心概念详解&#xff0c;涵盖 Pod、Service、Deployment 和 Node&#xff0c;以及它们之间的关系和实际应用场景&#xff1a; 1. Pod 定义与作用 • 最小部署单元&#xff1a;Pod 是 Kubernetes 中可创建和管理的最小计算单元&#xff0c;包含一个或多个…...

12.第二阶段x64游戏实战-远程调试

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;11.第二阶段x64游戏实战-框架代码细节优化 本次写的内容是关于调试、排错相关的…...

自然语言处理的进化:BERT模型深度剖析

自然语言处理&#xff08;NLP&#xff09;领域近年来取得了跨越式的发展&#xff0c;尤其是随着深度学习技术的应用&#xff0c;不少新兴模型应运而生。其中&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;作为一种革命性的…...

鸿蒙学习笔记(5)-HTTP请求数据

一、Http请求数据 http模块是鸿蒙内置的一个模块&#xff0c;提供了网络请求的能力。不需要再写比较原始的AJAS代码。 ps:在项目中如果要访问网络资源&#xff0c;不管是图片文件还是网络请求&#xff0c;必须给项目开放权限。 &#xff08;1&#xff09;网络连接方式 HTTP数…...

Golang 的 GMP 协程模型详解

Golang 的 GMP 协程模型详解 Golang 的并发模型基于 GMP&#xff08;Goroutine-M-Processor&#xff09; 机制&#xff0c;是其高并发能力的核心支撑。以下从原理、机制、优势、缺点和设计理念展开分析&#xff1a; 一、GMP 的组成与运作原理 Goroutine&#xff08;G&#xff…...

ReportLab 导出 PDF(页面布局)

ReportLab 导出 PDF&#xff08;文档创建&#xff09; ReportLab 导出 PDF&#xff08;页面布局&#xff09; ReportLab 导出 PDF&#xff08;图文表格) PLATYPUS - 页面布局和排版 1. 设计目标2. 开始3. Flowables3.1. Flowable.draw()3.2. Flowable.drawOn(canvas,x,y)3.3. F…...

Ubuntu 安装与配置 Docker

Ubuntu 安装与配置 Docker Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包在一个轻量级、可移植的容器中。它可以帮助开发者和运维人员快速构建、部署和管理应用程序&#xff0c;提升开发和运维效率。本文将介绍如何在 Ubuntu 系统上安装和配置…...

【数据结构与算法】LeetCode每日一题

此题跟27.移除数组中的指定值 类似&#xff0c;都是移除且双指针玩法&#xff0c;只不过判断条件发生了变化...

【HDFS入门】数据存储原理全解,从分块到复制的完整流程剖析

目录 1 HDFS架构概览 2 文件分块机制 2.1 为什么需要分块&#xff1f; 2.2 块大小配置 3 数据写入流程 4 数据复制机制 4.1 副本放置策略 4.2 复制流程 5 数据读取流程 6 一致性模型 7 容错机制 7.1 数据节点故障处理 7.2 校验和验证 8 总结 在大数据时代&#x…...

力扣热题100——普通数组(不普通)

普通数组但一点不普通&#xff01; 最大子数组和合并区间轮转数组除自身以外数组的乘积缺失的第一个正数 最大子数组和 这道题是非常经典的适用动态规划解决题目&#xff0c;但同时这里给出两种解法 动态规划、分治法 那么动态规划方法大家可以在我的另外一篇博客总结中看到&am…...

Ubuntu中snap

通过Snap可以安装众多的软件包。需要注意的是&#xff0c;snap是一种全新的软件包管理方式&#xff0c;它类似一个容器拥有一个应用程序所有的文件和库&#xff0c;各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题&#xff0c;使应用程序之…...

uniapp(Vue)开发微信小程序 之 保存图片到本地

一、保存图片到本地&#xff08;要拿到图片的 src&#xff09;&#xff1a; 查看隐私条约是否加上相册&#xff08;仅写入&#xff09;权限&#xff1a; 微信公众平台 -》 左下角头像 -》账号设置 -》 用户隐私保护指引 -》去完善 -》 相册&#xff08;仅写入&#xff09;权限 …...

TailwindCss快速上手

什么是Tailwind Css? 一个实用优先的 CSS 框架&#xff0c;可以直接在标记中组合以构建任何设计。 开始使用Tailwind Css 如何安装 下面是使用vite构建工具的方法 ①安装 Tailwind CSS: tailwindcss通过tailwindcss/vitenpm安装。 npm install tailwindcss tailwindcss…...

Gladinet CentreStack Triofox 远程RCE漏洞(CVE-2025-30406)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

ASP.NET WEB 手动推送 URL 到百度站长工具实例

下面是一个完整的 ASP.NET Web 应用程序示例,演示如何手动推送 URL 到百度站长工具。 1. 创建推送页面 (PushToBaidu.aspx) <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PushToBaidu.aspx.cs" Inherits="BaiduPushEx…...

【Ragflow】18.更好的推理框架:vLLM的docker部署方式

概述 看到不少人说“Ollama就图一乐,生产环境还得用vLLM”。 本文决定使用docker对vLLM进行部署,并解决模型配置中,IP地址的硬编码问题。 Ollama与vLLM风评比较 查询相关资料,Ollama与vLLM主要特点及对比情况如下[1]: Ollama:轻量级本地大模型部署工具,面向个人用户…...

智能 GitHub Copilot 副驾驶® 更新升级!

智能 GitHub Copilot 副驾驶 迎来重大升级&#xff01;现在&#xff0c;所有 VS Code 用户都能体验支持 Multi-Context Protocol&#xff08;MCP&#xff09;的全新 Agent Mode。此外&#xff0c;微软还推出了智能 GitHub Copilot 副驾驶 Pro 订阅计划&#xff0c;提供更强大的…...

什么是高防服务器

高防服务器是具备高强度防御能力、专门应对网络攻击(如DDoS、 CC攻击)的服务器类 型&#xff0c;通过流量清洗、多层防护等技术保障业务稳定运行。具备高强度防御能力和智能攻击识别技术&#xff0c;可保障业务在极端网络环境下稳定运行。其核心特点及技术原理如下&#xff1a…...