编程中存在的一些常见误区!Erlang

erlang 专栏收录该内容
¥59.90 ¥99.00
82篇文章

编程是一项广泛应用于现代社会的技能,但在人们的心中可能存在一些误解。本文将探讨编程中的一些常见误区,特别是与Erlang语言相关的误区。我们将解释这些误区,并提供相应的源代码示例来帮助读者更好地理解。

误区一:编程只是一种技术活动

事实是,编程不仅仅是一种技术活动,更是一门艺术。编程是一种创造性的过程,程序员可以通过代码表达自己的想法和创意。编写高效、简洁和可读的代码需要一定的技术和经验,但同时也需要艺术家的眼光和创造力。

误区二:编程语言只是工具

编程语言确实是编程的工具,但不同的编程语言具有不同的特点和适用场景。人们常常认为一种编程语言可以解决所有问题,这是不准确的。每种编程语言都有其优势和限制。因此,选择适合特定任务的编程语言是很重要的。

误区三:编程是孤独的工作

尽管编程有时需要独立工作,但实际上,编程也是一项具有团队合作的活动。在大型软件项目中,通常需要多个程序员协同工作,彼此之间进行交流和合作。团队合作可以提高代码的质量、减少错误,并加快开发速度。

误区四:Erlang只适用于并发编程

Erlang是一种函数式编程语言,以其在并发和分布式系统中的优秀表现而闻名。然而,Erlang并不仅限于并发编程。它也可以用于编写普通的应用程序,具有良好的可扩展性和容错性。下面是一个简单的Erlang程序示例:

-module(
Actor模型:分布式系统高可用与弹性设计的核心范式 Actor模型是一种面向并发与容错的分布式计算模式,其核心在于将计算单元抽象为封装状态、异步通信、自主决策的轻量智能体。它通过消除共享内存和竞态条件,从根本上规避传统多线程编程的复杂性;依托消息驱动与监督策略,实现故障隔离与快速恢复。该模型在高可用服务、实时消息系统、物联网设备管理等场景中展现出显著技术价值——不追求单点极致性能,而保障大规模协同下的稳定性与可伸缩性。本文深入解析Actor的设计哲学、关键机制及主流框架(如Akka、Orleans、Erlang/OTP)的工程选型逻辑,聚焦分布式计算模式与高 阅读详情

相关推荐

效应类型系统:为智能体系统构建可靠并发编程的数学基石

在并发编程与多智能体系统开发中,管理副作用和交互行为是核心挑战。效应类型系统作为一种先进的类型理论,其原理在于将程序执行时可能产生的“效果”(如状态变更、消息发送、资源访问)提升为一等公民,并通过静态类型系统进行声明、组合与检查。这项技术的核心价值在于,它能在编译期而非运行时,提前发现并发错误、资源竞争和死锁风险,从而大幅提升复杂系统的可靠性与可预测性。其应用场景广泛,尤其适用于自动驾驶协同、分布式机器人集群、游戏AI以及高可靠微服务架构等对确定性要求极高的领域。本文以智能体系统为切入点,深入探讨了如何通过

weixin_30432579的博客 371

编程语言选择指南:从生态密度到职业路径,少走一年弯路

编程语言是软件世界的通用语言,而选择哪门语言不能只看排行榜热度。真正决定价值的是生态密度——PyPI上百万级的包、云原生领域Go的强势地位、深度学习生态中Python的统治力,都体现了语言背后的技术版图。理解语言的分工原理(前端JavaScript、企业级Java、系统级C++),才能从业务场景和职业目标反推学习路径。无论是AI方向的Python+深度学习,还是后端方向的Go+云原生,把握生态演进规律比追逐新语言更可靠。结合2025年最新趋势,解构六种主流语言的真实定位与职业前景,帮助开发者从入门到职业选手

weixin_34416649的博客 251

WebAssembly时代五大生产级编程语言实战指南

WebAssembly正推动Web开发从‘生成JavaScript’迈向‘定义运行时’的新阶段。作为一种具备垃圾回收、多线程与强类型互操作能力的底层虚拟机,Wasm使前端首次获得接近原生的确定性执行能力。在此背景下,Rust、AssemblyScript、Zig、Gleam和Hare等语言凭借WebAssembly原生支持、编译期确定性、零依赖部署等关键特性,突破传统JS生态边界,广泛应用于实时渲染、边缘计算、协作文档、车载系统等高要求场景。它们不再仅是语法替代品,而是面向不同性能层级与工程约束的运行时选型

weixin_30596023的博客 431

2026年13款主流性能测试工具选型指南与JMeter高并发实战

性能测试是保障系统稳定性的关键环节,其核心在于通过模拟真实负载评估系统吞吐量、响应时间与错误率。在微服务与云原生架构下,压测工具选型需综合考虑协议支持、并发能力及团队技术栈。合理的工具组合能有效定位瓶颈,支撑容量规划与持续性能验证。从开发阶段的接口基准测试到生产环境的全链路压测,不同场景对工具提出差异化需求。本文系统梳理JMeter、k6、Locust等13款主流压测工具的适用场景与实战技巧,并深入解析JMeter分布式压测、参数化及结果分析方法,助力团队构建高效的性能测试体系。

weixin_34161064的博客 296

从iPhone看芯片分类:CPU、GPU、NPU、SoC与ASIC的协同之道

芯片是现代电子设备的核心计算单元,其本质是在硅基材料上集成的微型电路系统,通过执行指令来处理数据和控制操作。从原理上看,芯片按照功能定位可分为通用处理器和专用处理器,通用处理器如CPU擅长逻辑控制和顺序任务,而GPU则专精于大规模并行计算,这构成了异构计算的基础架构。在技术价值层面,芯片的专用化设计(如ASIC)能极大提升特定任务(如图像处理、AI推理)的能效和性能,而SoC(系统级芯片)通过高度集成CPU、GPU、NPU、ISP等模块,实现了小型化、低功耗和高速内部通信,这正是移动设备高性能的基石。应用场

weixin_34406086的博客 421

GSM与DCS深度辨析:从移动通信到工业控制的核心差异与系统思维

在通信与自动化领域,多址接入和分布式系统是两大基础技术概念。多址接入技术(如TDMA、CDMA)通过划分信道资源实现多用户共享,是蜂窝移动通信的基石。分布式系统则将计算与控制任务分散到多个节点,通过协同工作提升整体可靠性与效率,这是工业自动化的核心设计哲学。这些技术的价值在于,它们分别解决了大规模用户连接与复杂过程可靠控制的关键难题。在应用场景上,前者广泛应用于公众移动网络,后者则主导着流程工业。本文聚焦于GSM(全球移动通信系统)与DCS(集散控制系统),它们正是这两大技术路线的典型代表。GSM作为2G主

weixin_30709061的博客 337

C++与Java性能深度对比:何时必须选择C++?

在编程语言选型中,性能是核心考量因素之一。从原理上看,静态编译型语言与基于虚拟机的语言在运行时模型上存在根本差异,这直接影响了内存管理、执行效率和资源控制能力。静态编译通过编译器进行深度优化,生成原生机器码,追求极致的执行速度和确定性;而虚拟机则通过即时编译(JIT)在运行时进行动态优化,牺牲部分启动时间和内存开销以换取跨平台性和开发效率。这种差异的技术价值在于,前者适用于对延迟、资源有严苛要求的场景,后者则擅长快速迭代和复杂业务逻辑开发。在应用场景上,计算密集型任务、嵌入式系统、高频交易等对性能确定性要求

weixin_30588675的博客 362

2026年十三款主流性能测试工具选型指南:从JMeter到k6的深度对比

性能测试是保障系统稳定性的关键环节,其核心在于通过模拟真实负载验证服务在并发场景下的响应能力与吞吐量。压测工具作为落地手段,需具备协议适配、脚本编排、分布式发压及结果分析等能力。在微服务与云原生架构下,工具选型直接影响测试效率与瓶颈定位精度。面对全链路压测、CI/CD集成及容器化部署等场景,团队需结合协议支持、脚本可维护性与技能栈匹配度综合评估。本文围绕JMeter、LoadRunner、k6、Locust等十三款主流工具展开横向拆解,并融入JMeter分布式压测与k6云原生脚本实践,为测试人员提供选型参考

weixin_34184158的博客 349

C++多线程死锁深度解析:从原理到实战排查与预防

在多线程编程中,死锁是一个经典且棘手的并发问题,它源于操作系统调度、锁机制与程序逻辑的复杂交互。其核心原理通常被概括为互斥、持有并等待、不可剥夺和循环等待四个必要条件,理解这些条件在硬件与软件层面的具体表现是诊断和解决问题的关键。从技术价值看,有效管理死锁能显著提升程序的可靠性与性能,避免服务无响应等线上事故。在C++工程实践中,死锁常出现在锁顺序不一致、持有锁时调用未知代码、单线程重复锁定非递归锁等典型场景。通过结合GDB调试、ThreadSanitizer等动态检测工具,以及采用std::scoped_

weixin_30797199的博客 513

拆解贝壳找房2023校招测试卷:考点分析与备考路径

软件测试是保障互联网产品质量的核心环节,尤其在房产交易这类重业务、重数据的平台,测试工程师不仅需要扎实的计算机基础,更要对业务流程和风险有敏锐的感知。从功能验证到系统稳定性,从手工用例设计到自动化框架应用,测试岗位的能力模型正在向复合型转变。对于校招候选人而言,理解测试用例的边界条件、掌握Linux与SQL的实战排查技能、了解性能与安全测试的基本原理,都是进入大厂的基础门槛。与此同时,移动端自动化、持续集成等工程实践能力,正在成为区分候选人的关键加分项。本文以贝壳找房2023届校招测试类试卷为切入点,梳理了

weixin_34409357的博客 489

【滚雪球学数学建模】第19.1节·排队论与随机服务系统!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1260

【滚雪球学数学建模】第1节·建模入门+三步法+案例

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 6412

Cygwin安装教程

简介 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在W...

Errol's Blog 13万+

2026年数学建模国赛C题利器:层次分析法与主成分分析在统计建模中的应用

本文系统探讨了层次分析法(AHP)与主成分分析(PCA)在数学建模竞赛,特别是全国大学生数学建模竞赛C题中的联合应用策略。通过理论阐述、方法对比和案例实践,本文揭示了两种方法从“数据降维”到“决策评价”的完整分析链条,提出了“PCA+AHP”协同框架,并通过实际算例验证了该框架在解决复杂评价类问题中的有效性和优越性。研究表明,将PCA的客观降维能力与AHP的主观决策优势有机结合,能够显著提升统计建模的科学性、合理性和解释力,是应对日益复杂的竞赛题目的重要方法论工具。关键词:层次分析法;主成分分析;数学建模。

YOLO 41

流体仿真软件:COMSOL Multiphysics二次开发_(3).流体仿真基础理论

流体仿真基础理论包括流体的基本性质、流体运动方程、边界条件、初始条件、湍流模型和网格生成等。在使用COMSOL Multiphysics进行流体仿真时,正确设置这些参数和条件是获得准确仿真结果的关键。通过实际应用案例,可以更好地理解如何在COMSOL中进行流体仿真,并提取和分析仿真结果。希望本文对流体仿真初学者和从业人员有所帮助。

kkchenjj的博客 1341

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2504

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 527

Chrome更新出现错误代码3: 0X80070422 -- system level的解决方案

本文主要介绍了Chrome更新出现错误代码3: 0X80070422 – system level的解决方案,希望能对使用Chrome的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

手把手入门YOLO到改进优化教程 | 【P1基础篇】YOLOv8网络架构原理

本节先来学习基础知识,以YOLOv8进行讲解入门, 拿YOLOv8入手掌握YOLO的底层逻辑 ,也可以基于此来轻松学习后面更新的YOLO系列 (大部分YOLO版本的核心思想一致,更新是基于旧版本做结构升级、优化策略,学习成本会越来越低)。

嵌入式阿齐Archie 2万+

第十届MathorCup高校数学建模挑战赛-B题:养老服务床位需求预测与运营模式研究

当养老床位数增加时存在的商机,提出了相应的养老服务床位的运营商业模式。就业的可能性,建立多目标规划模型,尽可能同时满足三方面的要求。务床位的需求、制定合理的养老服务床位发展规划,是构建和谐社会、幸福社会。问题一的床位需求与市场类型的分类结果,查找关于国内养老院的相关数据,探。求,又能持续发展养老事业,同时还能促进社会就业的养老服务床位运营的商业。养老服务床位数的增加能够带来的就业方面因素的影响,并对这些因素进行一个。你们的模型及其结论为科学依据,对政府管理部门针对养老床位规划提出合理的。

getusushu的博客 1139

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 如何选择适合的开源RPC框架?
下一篇: 全球及中国水软化盐行业消费规模及市场现状调研分析报告
普通网友
博客等级 码龄3年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值