结合vsock与 grpc

基于TEE与联邦推理的边缘AI安全架构:从原理到实战 在边缘计算与人工智能深度融合的背景下,数据与模型的安全已成为核心挑战。传统的软件防护方案难以抵御拥有系统权限的攻击者,导致敏感信息在内存和存储中‘裸奔’。可信执行环境(TEE)作为一种硬件级安全技术,通过在CPU内部创建隔离的‘安全飞地’,为代码和数据提供了机密性与完整性保障,即使操作系统或虚拟机监控器被攻陷也能确保安全。其技术价值在于将安全信任根建立在硬件层面,从根本上缩小了软件攻击面。结合联邦学习在推理阶段的延伸——联邦推理,可以实现敏感计算任务的拆分与隔离,让核心模型权重与用户数据无需集中即可协同工作 阅读详情

vsock-rpc
grpc 完全可以采用 vsock的方式实现,这就是一个例子,所以只需要修改 listener 和 grpc.Dail 就好了

conn, err := grpc.Dial(
“”, // target 字符串留空
grpc.WithInsecure(),
grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
return vsock.Dial(cid, port, nil)
}),
)
if err != nil {
log.Fatalf(“Failed to connect: %v”, err)
}
defer conn.Close()

// 创建 gRPC 客户端
client := api.NewRpcClient(conn)

// 构造请求数据
request := &common.AddNumRequest{
	Num1: 5,
	Num2: 3,
}

// 调用 gRPC 服务
resp, err := client.AddNum(context.Background(), request)
if err != nil {
	log.Fatalf("Error calling AddNum: %v", err)
}

// 输出响应
fmt.Printf("Response from AddNum: %v\n", resp)

func (s *RPCServer) Start() error {
var (
err error
)
s.ctx, s.cancel = context.WithCancel(context.Background())

s.isShutdown = false

if err = s.RegisterHandler(); err != nil {
	return fmt.Errorf("register handler failed, %s", err.Error())
}
listener, err := vsock.Listen(5000, nil)
fmt.Println("rpc server starting listen on vsock port", 5000)
if err != nil {
	return fmt.Errorf("failed to listen on vsock port %d: %v", 5000, err)
}

go func() {
	err = s.grpcServer.Serve(listener)
	if err != nil {
		s.log.Errorf("gRPC Serve failed, %s", err.Error())
	}
}()

s.log.Infof("gRPC server listening on vsock port %d", 5000)

return nil

}

在这里插入图片描述

gRPC学习以及实践 相信大家都听过RPC、HTTP、Socket等协议,他们均可用于业务中来进行数据通信,又根据各自协议的特点,应用场景也比较多样、复杂,那大家是否听过或者了解gRPC呢?用来做什么呢?我们就来了解一下gRPC以及其用途。 介绍 用官方网站1一句话介绍介绍gRPC A high-performance, open source universal RPC framework. 即:高性能、开源的通用型RPC框架 说起RPC,人们常会和HTTP做对比,两者在底层数据传输时本质基本一致,即全部基于TCP实现安全 阅读详情

相关推荐

VMware Fusion 25H2u1:Apple Silicon原生虚拟化新范式

桌面虚拟化是macOS开发者构建跨平台开发环境的核心能力,其本质依赖于硬件辅助虚拟化(如ARMv8.3-A的VHE扩展)与操作系统Hypervisor框架的深度协同。在Apple Silicon时代,传统基于KEXT的虚拟化方案因macOS安全机制升级而频繁失效,导致‘安装失败’‘无法启动’等高频问题。VMware Fusion 25H2u1通过全面迁移到官方Hypervisor.framework、重构ARM64 UEFI固件、实现USB重定向与Metal图形翻译等关键技术,首次达成‘零KEXT、免SIP

weixin_33785108的博客 422

RSocket 与 gRPC性能对比

几乎每次我向观众介绍RSocket时,都会有人问这个问题:“ RSocket与gRPC相比如何?” 今天我们要找出答案。 搭建平台 插座 RSocket在应用程序网络上实现反应式语义。它是一种网络协议,可端对端实施反压力和其他反应流概念。 gRPC gRPC旨在解决多语言RPC问题。它包含两个部分:protobuf IDL和HTTP / 2网络协议。 苹果到苹果? 从设计和组件上,我们知道苹果与苹果的比较应该是RSocket与HTTP / 2。 但是,您将如何有效地比较两种协议?一种方法是

一支烟一朵花 3444

最简单的 gRPC 教程— 1 初识 gRPC

gRPC 是 Google 开源的一个高性能的 RPC(Remote Procedure Call) 框架,它具有如下的优点: 提供高效的进程间通信。gRPC 没有使用 XML 或者 JSON 这种文本格式,而是采用了基于 protocol buffers 的二进制协议;同时,gRPC 采用了 HTTP/2 做为通信协议,从而能够快速的处理进程间通信。 简单且良好的服务接口和模式。gRPC 为程序开发提供了一种契约优先的方式,必须首先定义服务接口,才能处理实现细节。 支持多语言。gRPC 是语言中立的,.

roseduan 的个人博客 657

一文详解gRPC框架

一文详解gRPC框架

loseyourself94的博客 2899

Kata Container — Overview

目录 文章目录目录容器的安全需求Kata ContainerKata Container in Kubernetes 容器的安全需求 容器与容器之间隔离方面的安全风险,具体包括:进程隔离、文件系统隔离、进程间通信隔离等。虽然 Docker 通过 Namespaces 进行了文件系统资源的基本隔离,但仍有 /sys、/proc/sys、/proc/bus、/dev、time、syslog 等重要系统文件目录和命名空间信息未实现隔离,而是与宿主机共享相关资源。攻击者可能通过对宿主机内核进行攻击达到攻击其中某个容

烟云的计算 1755

用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码)

本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。

weixin_30301449的博客 516

高质量通信gRPC入门,有了它,谁还用Socket

1 含义 RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。 gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby

AI浩 3412

PLDM实战解析:传感器与效应器在智能监控系统中的应用

本文深入解析了PLDM(平台级数据模型)中传感器与效应器两大核心组件在智能监控系统中的应用。传感器负责感知硬件状态,分为数值型与状态型,提供精准的“体检报告”;效应器则负责执行控制指令,实现从监控到操作的闭环。文章通过实战案例,阐述了如何利用这些标准化组件构建高效、自动化的智能监控系统,并探讨了平台描述记录与事件机制等关键技术。

k6l7m8n9的博客 874

c++grpc详解

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C,PHP 和 C# 支持.gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等 特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

Nieweishan的博客 3229

Pspice开关电源仿真:从零实现反激式电源设计实战案例

通过Pspice仿真工具,手把手实现反激式开关电源的设计与优化,深入剖析关键参数设置与波形分析,帮助掌握Pspice在电源开发中的实际应用技巧。

weixin_35756690的博客 1153

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 455

鲲鹏云原生机密计算:tee-gp-proxy在云场景中的5大应用实践

前往项目官网免费下载:[https://ar.openeuler.org/ar/](https://ar.openeuler.org/ar/?utm_source=csdn_blog) 在当今云计算和边缘计算快速发展的时代,数据安全与隐私保护已成为企业数字化转型的核心关切。openEuler社区的tee-gp-proxy项目为鲲鹏机密计算提供了创新的解决方案,通过TrustZone技术实现了云环

gitblog_06840的博客 188

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 607

GrpConf 2025 笔记(一)

本节课中我们一起学习了gRPC过去十年的发展历程和广泛采用。我们探讨了其成功的关键因素,包括对云原生环境的卓越适应性、语言无关性以及对微服务架构的支持。我们还了解了gRPC在云原生演进方面的最新进展,例如无代理服务网格,以及它与Rust生态的集成。最后,我们看到了gRPC在人工智能和机器学习领域扮演的关键角色,它正成为高效数据管道和实时推理的基石。我们衷心希望您能度过充满激动人心话题和宝贵见解的美好一天。关于gRPC如何被使用以及它如何可能帮助您解决问题,还有很多值得学习的地方。祝您会议期间一切愉快。

龙哥盟 64

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

利用Android系统漏洞实现后台弹窗(外弹)

关键:从 Android 8.0(API 26)开始,禁止使用 context.sendBroadcast() 发送隐式广播(即没有指定 setPackage() 或明确组件的广播)。demo核心代码展示利用Android显示系统和广播系统的漏洞实现在后台弹窗的功能,支持最新Android15,16版本。核心功能都是在so层去做,大量使用了jni反调, 如果要上架到应用市场,需要对代码做进一步混淆,加固以应对市场安全扫描。3,开启虚拟显示窗口,这是个透明像素窗口。5,可开启一个线程,调用这个外弹窗口。

2018,再出发~ 1315

linux安卓 虚拟化,虚拟化  |  Android 开源项目  |  Android Open Source Project

通过一款名为“trout”的新产品,Android Automotive OS (AAOS) 现已支持在符合 VirtIO 标准的环境中作为客机虚拟机进行部署。trout 基于 Cuttlefish 虚拟参考平台,并以 trout 设备配置的形式提供。用户空间源代码位于开始使用您可以采用与其他基于 Cuttlefish 的映像相同的启动方式,通过 aosp_trout_x86) 和 arm64 (...

weixin_39850167的博客 1270

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

grpc用于服务器间应用通信,使用 gRPC 进行进程间通信

使用 gRPC 进行进程间通信09/16/2020本文内容客户端和服务之间的 gRPC 调用通常通过 TCP 套接字发送。 TCP 非常适用于网络中的通信。 但当客户端和服务在同一台计算机上时,进程间通信 (IPC) 的效率比 TCP 更高。 本文档介绍如何在 IPC 场景中将 gRPC 用于自定义传输。服务器配置Kestrel 支持自定义传输。 在 Program.cs 上配置 Kestrel:...

weixin_39651816的博客 1170

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

gRPC(三)基础:gRPC快速入门

gRPC 是一个强大的开源 RPC(远程过程调用)框架,用于构建可扩展且快速的 API。它允许客户端和服务器应用程序透明地通信并开发连接的系统。gRPC框架依赖HTTP/2、协议缓冲区和其他现代技术堆栈来确保最大的 API 安全性、性能和可扩展性。在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像是本地对象一样,更容易创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型。

林钟一的博客 2175

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

gRPC 内容介绍

gRPC概念和基本思想概念: gRPC是Googel基于HTTP/2以及protobuf的。gRPC通常有四种模式,unary,client streaming, server streaming 以及bidirectional streaming,但无论哪一种模式对底层的HTTP/2来说都是stream,所以总结来看,grpc仍是一套request+response的模型。基本思想: 定义一个服务

phantom_111的博客 7159

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

高扩展性AI应用架构指南:融合RAG检索、Agent编排与OpenAPI/RPC工具网关的设计模式

本文提出高扩展性AI应用的三层架构:RAG检索层(知识供给)、Agent编排层(决策推理)、工具网关层(能力执行)。通过检索策略路由实现智能分流,混合检索采用RRF融合算法提升精度;Agent层采用无状态设计与外部状态存储,支持水平扩展;工具网关层通过协议标准化与动态注册解耦系统。核心思想是各层独立演进,不相互牵制,实现从“能跑”到“可扩展”的工程跃迁。

2301_80078096的博客 180

罗克韦尔ACD工程归档离线变量树解析

本文实现纯C#(.NET 4.0,零依赖)逆向解析罗克韦尔RSLogix 5000工程归档文件(.acd),从二进制结构中提取并重建完整变量树。通过解析非ZIP格式的三段式容器、读取UTF-16编码的TagInfo.XML,依据类型展开规则(含预定义类型与隐藏成员)、统一命名映射及维度以XML为准,成功还原785个符号的离线变量树,并与在线browse逐项比对一致,验证了“.acd是权威元数据源”的核心结论。

qq_25814147的博客 213

C++ RPC 技术原理:从一次调用到百万连接的工程实现

本文深入剖析C++ RPC技术的底层原理,从一次远程调用的字节级流程出发,系统拆解序列化、帧协议、粘包处理、多路复用与可靠性保障等核心工程问题。强调真实约束下的设计取舍:字节序统一、零拷贝缓冲、增量解码、流控与版本兼容性。指出“百万连接”是工程目标而非指标,需结合内存、文件描述符与内核参数实测验证。框架差异本质在于如何在不可靠网络上模拟同步可靠调用,涵盖协议、传输、调用模型、可靠性、治理与可观测性六大维度,揭示高性能RPC的实现逻辑与陷阱规避。

liulilittle的博客 575

C++ 工程组件与基础设施(三)详解RPC服务的概念与安装,图片介绍Brpc服务器和客户端的搭建过程

本文深入解析RPC远程过程调用概念,横向对比gRPC、brpc等主流框架优劣势。重点剖析百度工业级框架brpc,讲解其单端口多协议、高并发异步机制与内置调试能力。最后提供完整的Linux依赖安装与源码编译指南,助你快速搭建实战环境。

小此方的博客 279

MCP本地服务集成避坑:从Stdio管道僵死到双向JSON-RPC稳健通信

本文剖析MCP服务端因调试日志污染Stdio管道导致客户端挂起的根因,指出console.log等非结构化输出会破坏JSON-RPC协议解析,引发通信僵死。提出双通道隔离方案:将业务通信严格限定于stdout,所有日志分流至stderr,并强制单行原子化传输与缓冲刷新。实践证明该架构可彻底消除解析崩溃与延迟问题,实现零延迟、高可靠的本地智能体通信,是MCP插件工程化的必选项。

艺杯羹的博客 481
上一篇: mac latex vscode 配置
下一篇: mac M芯片安装pytorch
黄昏贩卖机
博客等级 码龄6年 252粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值