大会预告|乘云数字邀请您参加「第二届 eBPF 开发者大会」

ebpf深入理解和应用介绍 1. ebpf概述 1.1 ebpf发展历史 BPF,及伯克利包过滤器Berkeley Packet Filter,最初构想提出于 1992 年,其目的是为了提供一种过滤包的方法,并且要避免从内核空间到用户空间的无用的数据包复制行为。它最初是由从用户空间注入到内核的一个简单的字节码构成,它在那个位置利用一个校验器进行检查 —— 以避免内核崩溃或者安全问题 —— 并附着到一个套接字上,接着在每个接... 阅读详情

冬去春来,草长莺飞,「第二届 eBPF 开发者大会」即将到来。本次大会将于 2024 年 4 月 13 日,在陕西省西安市线下举办,由西安邮电大学主办,在西安邮电大学(东区)逸夫教学楼召开。

会议介绍

大会以「发挥 eBPF 技术力量,提升计算机系统可观测性和性能」为主题,议题涵盖 eBPF 技术及发展、eBPF 可观测性及应用、eBPF 网络安全应用、软件性能工程等方面,汇聚诸多知名高校、企业和开源社区的专家学者,共计 30 余场精彩报告,为大家提供全方位的技术视野和深度研讨空间。

除权威讲师精彩演讲和技术分享外,本次会议特别准备了 eBPF 项目集市、现场演示和经验交流讨论,让您能够在与行业领袖紧密互动的同时,开拓思维、解决实际问题。

作为以 eBPF 技术为研究和应用的技术团队,DataBuff 利用 eBPF 技术实现自动化、一体化式的可观测性。在本次会议上乘云数字 CEO 向成钢,将在分会场三「eBPF 的可观测性及其他应用」主题报告厅,为 eBPF 开发者和技术爱好者们带来《eBPF 在一体化可观测平台中的应用》主题演讲。

向成钢

中国人民大学硕士,乘云数字 CEO,在邮电科学技术研究院和华为技术工作超过 10 年,参与多个国家“863”项目研发。

演讲主题

《eBPF 在一体化可观测平台中的应用》

主题介绍

DataBuff 基于 eBPF 技术实现的自动化、一体化的可观测能力已在金融、电力、通信、媒体等领域上百家公司落地。本次分享将介绍 eBPF 技术的革命性和局限性,以及 eBPF 之于可观测性。也将介绍 DataBuff 是如何实现高度自动化、智能化、无侵入、全栈式的云原生可观测,以及通过内生 AIOps 实现智能运维。

若您没有时间线下参与,期待与您本月 13 日下午 13:30 在 优快云 线上直播间相见,直播地址如下:

eBPF的可观测性及其他应用(分会场3)- 第二届eBPF开发者大会-优快云直播

大会详细信息

eBPF 技术:从入门到精通 eBPF(Extended Berkeley Packet Filter)是一种允许在 Linux 内核中运行沙盒化程序的技术。它充当内核内部的一个轻量级、沙盒化的虚拟机(VM),开发者可以在其中运行经过验证的 BPF 字节码,利用特定的内核资源。虽然其名称源自早期的伯克利数据包过滤器(BPF),但 eBPF 的能力已远超最初的数据包过滤范畴,成为一项通用的内核扩展技术。如今,eBPF 通常被视为一个独立术语,而最初的 BPF 有时被称为 cBPF(经典 BPF)以作区分。 阅读详情

相关推荐

技术博客生存手记:个体写作者的可信赖交付实践

技术博客本质是建立专业信任的数字载体,其核心不在流量获取,而在稳定、精准、可验证的内容交付能力。它依托于严谨的技术验证机制(如多环境实测、版本锚定、错误复现)、结构化的问题解决范式(从报错出发的‘问题树’模型),以及工程级的发布纪律(周更节奏、性能约束、可访问性设计)。这类实践显著提升读者决策效率与知识复用率,广泛应用于开发者技术沉淀、中小团队知识管理、开源项目文档增强等场景。Fish Li 的独立博客十年实践,正是这一逻辑在无算法扶持、无商业资源条件下的真实印证。

395

eBPF介绍

本文主要是对eBPF进行介绍,带大家了解eBPF是什么、通过eBPF可以做些什么事情。1.BPF起源BPF源头起源于一篇1992年的论文,这篇论文主要提出一种新的网络数据包的过滤的框架,如...

宋宝华 1万+

IT职业教育八大结构性顽疾深度剖析

IT职业教育作为连接技术人才供需的关键桥梁,其核心价值在于能力转化实效性。然而当前行业普遍存在课程内容滞后于企业真实技术栈、讲师教学能力与工程实践脱节、就业数据口径失真、项目实训缺乏需求模糊性与协作真实性等系统性问题。这些问题本质源于教育生长周期与资本交付周期的冲突、信息不对称被制度化为竞争优势、以及缺乏第三方能力认证与效果审计机制。面向零基础转行者、教培从业者及机构决策者,本文聚焦课程实效性、讲师能力模型、企业用人反馈机制等关键维度,揭示‘3个月速成’幻象背后的11.3个月真实成长规律,为理性选择与系统改

xiang_fu的博客 464

eBPF技术

eBPF 全称 extended Berkeley Packet Filter,中文意思是 ​​扩展的伯克利包过滤器​​。一般来说,要向内核添加新功能,需要修改内核源代码或者编写 ​​内核模块​​ 来实现。而 eBPF 允许程序在不修改内核源代码,或添加额外的内核模块情况下运行。从 eBPF 的名字看,好像是专门为过滤网络包而创造的。其实,eBPF 是从 BPF(也称为 cBPF:classic Berkeley Packet Filter)发展而来的,BPF 是专门为过滤网络数据包而创造的。

qq_42944740的博客 6658

LightGBM参数调优实战:从基础到高级技巧

本文深入探讨了LightGBM参数调优的实战技巧。文章从理解其Leaf-wise生长策略的核心逻辑出发,系统性地介绍了分层调参策略:首先调整控制模型结构的参数(如num_leaves),其次优化学习能力参数(如learning_rate),最后通过正则化与随机化参数提升泛化能力。文中还提供了从建立基线到最终微调的完整实战流程与高级避坑指南,帮助读者高效提升模型性能。

i8j9k0l1的博客 262

eBPF学习记录(一)eBPF介绍

一、什么是eBPF eBPF, 从它的全称“扩展的伯克利数据包过滤器 (Extended Berkeley Packet Filter)” 来看,它是一种数据包过滤技术,是从 BPF (Berkeley Packet Filter) 技术扩展而来的。BPF 提供了一种在内核事件和用户程序事件发生时安全注入代码的机制,这就让非内核开发人员也可以对内核进行控制。随着内核的发展,BPF 逐步从最初的数据包过滤扩展到了网络、内核、安全、跟踪等,而且它的功能特性还在快速发展中,这种扩展后的 BPF 被简称为 eBPF

jianjian的博客 1万+

基于51单片机+SYN6288语音播报

51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成

weixin_47457689的博客 3万+

互联网摸鱼日报(2023-02-13)

周鸿祎:搭不上ChatGPT的企业会被淘汰;中芯国际去年净利润121亿;动视暴雪CEO称腾讯和字节是最好的公司 | AI一周资讯GitHub宣布裁员10%,办公室全关,全体远程办公;微软必应集成ChatGPT后下载量猛增10倍;谷歌出师不利市值蒸发超万亿 | Q资讯智己LS7上市定向“卷”配置,盲订订单已破万ChatGPT竟有9岁小孩心智?斯坦福教授逆天发现,AI统治人类还远吗汽车行业三大愚蠢创新:电子后视镜、单踏板模式、异型方向盘5G RedCap超越4G还需十年?奥特曼:ChatGPT之父的彪悍人生华为

weixin_43849685的博客 590

基于Apache SeaTunnel构建CDC数据同步管道

Apache SeaTunnel是一个数据集成开发平台,其发展经历了几个重要阶段:ETL时代(90年代):面向结构化数据库的数据同步,用于构建数据仓库。MPP和分布式技术流行:使用技术如Hive进行数据仓库的构建。此阶段主要使用mapreduce程序进行数据搬运和转换。数据湖技术流行:重视数据集成,强调先同步数据至数据湖仓储,再进行业务面向的转换和设计。CDC,即变更数据捕获,是一种捕获数据库变更事件(如插入、更新、删除)的技术。

weixin_54625990的博客 2172

CMU电竞产业夜:6个问题揭示电竞技术真实能力图谱

电子竞技已从亚文化走向高门槛工程化产业,其核心技术不再局限于游戏开发或直播运营,而是融合实时网络工程、赛事规则建模、边缘AI推理与可交互观赛协议的交叉体系。理解电竞,首先要破除‘重内容轻基建’‘重热爱轻验证’的认知误区——真正的技术价值体现在对95分位网络抖动的建模能力、将BP规则转化为可执行代码的解析能力、以及在毫秒级信号冲突中预判观众注意力的能力。这些能力广泛应用于职业赛事制作、选手数据产品化、AI辅助解说及低延迟观赛系统等场景。本文基于卡内基梅隆大学(CMU)Esports Industry Nigh

weixin_30369041的博客 370

Qt(C++)使用QChart动态显示3个设备的温度变化曲线

Qt的QChart是一个用于绘制图表和可视化数据的类。提供了一个灵活的、可扩展的、跨平台的图表绘制解决方案,可以用于各种应用程序,如数据分析、科学计算、金融交易等。

1917

ebpf简介

@TOC[] 什么是eBPF eBPF 是什么呢? 从它的全称“扩展的伯克利数据包过滤器 (Extended Berkeley Packet Filter)” 来看,它是一种数据包过滤技术,是从 BPF (Berkeley Packet Filter) 技术扩展而来的。顾名思义BPF来源于伯克利大学, 最早应用于网络数据包过滤器,它比当时最先进的抓包技术快20倍,其主要得利于它的两个设计: 内核态引入一个新的虚拟机,所有指令都在内核虚拟机中运行。 用户态使用 BPF 字节码来定义过滤表达式,然后传递给内核

qq_27749613的博客 1万+

OceanBase迁移平台OMS企业版部署

OceanBase迁移平台OMS企业版部署摘要: 本文档详细介绍了OceanBase迁移平台OMS企业版的部署流程,包含环境准备、OAT部署管理、MetaDB部署等关键步骤。

Sebastien23的博客 522

独家开源|RK3588 平台 YOLOv5 Android 源码级解析:NPU 量化、多线程与目标跟踪实战

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

m0_71589036的博客 193

万字干货,eBPF 经典入门指南

eBPF 源于BPF[1],本质上是处于内核中的一个高效与灵活的虚拟机组件,以一种安全的方式在许多内核 hook 点执行字节码。BPF最初的目的是用于高效网络报文过滤,经过重新设计,eBPF不再局限于网络协议栈,已经成为内核顶级的子系统,演进为一个通用执行引擎。开发者可基于 eBPF 开发性能分析工具、软件定义网络、安全等诸多场景。本文将介绍 eBPF 的前世今生,并构...

极客重生 5512

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一文带你系统学习Linux中的eBPF

eBPF(Extended Berkeley Packet Filter)是一个强大的 Linux 内核技术,它最初设计用于高效地过滤网络数据包,但随着功能的扩展,现在成为了内核性能调试、监控、安全审计以及网络流量管理等领域的核心工具。本文将详细介绍 eBPF 的工作原理、应用场景以及技术细节,帮助您深入理解其机制和应用潜力。

执剑人 2821

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 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")

eBPF 介绍

eBPF 介绍 Tcpdump 是Linux 平台常用的网络数据包抓取及分析工具,tcpdump 主要通过libpcap 实现,而libpcap 就是基于eBPF。 先介绍BPF(Berkeley Packet Filter),BPF 是基于寄存器虚拟机实现的,支持 JIT(Just-In-Time),比基于栈实现的性能高很多。它能载入用户态代码并且在内核环境下运行,内核提供 BPF 相关的接口,用户可以将代码编译成字节码,通过 BPF 接口加载到 BPF 虚拟机中,当然用户代码跑在内核环境中是有风险的

SHELLCODE_8BIT的博客 3247

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是革命性技术eBPF?为什么可观测性领域都得用它

如果有一种技术可以监控和采集任何应用信息,支持任何语言,并且应用完全无感知,零侵入,想想是不是很激动,那么这个技术是什么呢?就是eBPF,它应该是最近一两年非常热门的技术名词,我相信你或多或少都看到过,但可能不知道它能做什么,今天我们来讲讲这个革命性的技术eBPF,以及它在可观测领域的应用eBPF是什么?

dweizhao的专栏 1861

eBPF编程指南(一):eBPF初体验

EBPF是一种可以让程序员在内核态执行自己的程序的机制,但是,为了安全起见,无法像内核模块一样随意调用内核的函数,只能调用一些bpf提前定义好的函数。为了让内核执行程序员自己的代码,需要指定HOOK点,相当于当内核执行到某个地方时就会执行程序员的代码,这有点类似于ftrace。内核态代码:编译为.o文件,在内核态执行,将数据发送到队列用户态代码:将内核态代码的.o文件加载到内核,接收队列中的数据并分析。

追寻梦想的青春 3945

eBpf技术总结

eBPF (扩展的伯克利数据包过滤器) 是一项强大的网络和性能分析工具,其在内核中的实现为一个基于寄存器的虚拟机,使用自定义的 64 位 RISC 指令集,运行本地即时编译(JIT)的 “BPF 程序, 并能访问内核功能和内存的一个子集。

黑色幽默的专栏 2036

一文看懂eBPF|eBPF实现原理

eBPF,它的全称是“Extended Berkeley Packet Filter”。从名字看,你可能会觉奇怪,似乎它就是一个用来做网络数据包过滤的模块。其实这么想也没有错,eBPF 的概念最早源自于 BSD 操作系统中的 BPF(Berkeley Packet Filter),1992 伯克利实验室的一篇论文 “The BSD Packet Filter: A New Architecture for User-level Packet Capture”。

MayMatrix 的博客 2334

eBPF:现代Linux的强大内核扩展技术

eBPF最初是从BPF(Berkeley Packet Filter)发展而来的,BPF用于高效的数据包捕获和过滤。随着对更高性能和灵活性的需求,eBPF在2014年被引入Linux内核,它允许在内核中执行用户定义的程序,从而提供更广泛的功能集。

weixin_44867889的博客 1739

2024年最全eBPF学习 - 入门,2024年最新阿里牛逼

输出的格式可由来修改。

2401_84910962的博客 1741
下一篇: 看了这篇文章,不要告诉我你还不懂分布式链路
aiSRE工程狮
博客等级 码龄5年 423粉丝 92原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值