API管理基础知识集锦

云服务总线API管理模块功能梳理 随着技术的不断发展,系统间的交互越来越依赖API。本文档主要介绍SMC控制台中的API管理模块,并梳理总结其模块功能。 阅读详情

原文:The Basics Of API Management
作者:Kin Lane
翻译:Vincent

译者注:作者在本文中将API管理的一些基础知识整合成了综合列表,这些列表是由一位API管理大神提炼出来的,可以说是API管理的不同组件了。以下为译文。

我正在开发一套基础的API管理策略。这套管理策略涉及到的每一个方面,都倾注了我的毕生之所学。这么多年过去了,我已经将API管理的许多方面单独分离出来,形成了一组核心元素,这些元素也反映了API管理是如何一步一步发展成为数字商品的。总的来说,这有助于我去认真思考API操作的每个方面,而且也能将我平日里面所学习到的内容应用到我正在从事的项目,这样我就可以对API管理做进一步的提炼。

API管理是我所有研究领域中存在时间最久的。正是它启发了我对于其他方面的研究,而且同时它也是API经济里面相对比较成熟的了。我正在研究的这个项目给了我一个机会,让我去思考API管理究竟是什么,应该拆分为哪些不同的关注领域。我已经把API管理的精髓给提炼出来,大概包括以下几个方面:

  • Portal - 是一个单独的URL,可以用来查找关于API的所有信息,将该服务启动运行起来,并使用所有的可用资源。

  • On-Boarding - 只需要考虑如何让新开发人员在portal主页上登陆,以实现API的第一次调用,接下来就是在生产应用实现调用。

  • Accounts - 允许API使用者注册一个帐户,用于个人或企业访问API资源。

  • Applications - 允许每个帐户持有人注册一个或多个应用程序,这些应用程序将使用API资源。

  • Authentication - 为API使用者提供一种或多种方式进行身份验证,从而能够访问API资源。

  • Services - 定义在一个或多个API路径上提供哪些服务,从而提供对各种业务服务的HTTP访问。

  • Logging - 对API的每个调用都通过API管理层记录,以及DNS、web服务器、文件系统和数据库级别。

  • Analysis - 了解API是如何被使用的,以及应用程序如何将API资源用于使用,识别所有API的使用模式。

  • Usage - 对所有帐户和它们的应用程序进行量化使用,然后向所有API使用者报告、计费和协调使用。

  • APIs - API访问帐户、身份验证、服务、日志记录、分析和使用API资源。

还有一些与API管理捆绑在一起的比较常见的元素,这些元素也反映了API管理的核心是什么——API的业务。哪些人拥有哪些权限,他们又使用了哪些权限,将这些信息都记录下来。API管理中还有许多其他方面也需要考虑,但我已经将它们作为一些单独的模块了。这些元素包括:

  • Documentation - 静态或交互式文档,用于所有可用的API路径、参数、头,以及API请求和响应表面积的其他细节。

  • Support - 自助服务,或直接支持通道,API消费者在此过程中使用这些通道来获得帮助。

  • SDKs - 用于web、移动或其他类型应用程序的SDKs、示例、库和其他支持代码元素。

  • Road Map - 当涉及到API时,交流未来的内容。

  • Issues - 有关API的可用性的任何公开问题的通知。

  • Change Log - 关于更改API的历史。

这些领域也对API管理做了补充,但应该超越API操作的日常管理方面。我还考虑了身份验证、日志记录和分析,而不仅仅是API管理,因为这三个领域都应该不仅仅涵盖API,但是它们仍然与API管理的核心部分紧密相连。在我的定义中,API管理在很大程度上是关于管理资源的消耗,而不是API操作的其他方面。这不仅仅是我的定义,而是我所看到的API管理的商品化,就像我们在Amazon Web服务上看到的那样。

AWS API Gateway实际上是关于帐户、应用程序、身份验证以及服务的。日志、分析等都是由AWS CloudWatch提供的。对于正在研究的这个特定项目,我使用了GitHub和Jekyll作为Portal,并分别使用自定义交付、使用和支持api。进一步缩小我对API管理的定义。我想说,AWS在API管理方面表现得很好,与AWS API Gateway和AWS CloudWatch之间的关注点分离。如果你将AWS Cognito应用于身份验证,那么你可以将另一个应用程序分离出来。我没有看到任何可行的解决方案来处理使用、计费和API管理的业务和货币化方面。

我正在从事的API项目已经使用了AWS作为操作后端,因此我也有机会去更好的了解API管理中的活动件在AWS平台中是怎么一回事。在AWS平台里面认真研究一下API管理如何解耦是非常意义的,因为它们是商品化的主要参与者,而且也在日益趋于成熟。一旦完成了AWS以后,谷歌和Azure将是接下来的目标,这些也都是定义API管理未来的主要参与者。

软件测试面试题集锦 文章目录一、基础知识1、什么是软件测试,软件测试的目的是啥?2、什么是测试计划?都包括啥?什么是测试方案,什么是测试策略?测试方案包含哪些内容?测试用例设计方法有哪些?测试用例内容有哪些?3、测试用例为什么需要分级,如何分级别?测试用例需要哪些人来评审?评审的目的是什么?好的测试用例关键点是什么?不能发现BUG的测试用例不是好的测试用例吗?4、测试分为哪几个阶段?5、软件测试类型都有哪些?你进行过哪些测试,擅长什么?6、软件缺陷等级划分7、缺陷生命周期8、测试生命周期9、为什么要进行交叉测试?10、α、β测 阅读详情

相关推荐

Houdini API实用演示集锦

Houdini 是一款由 SideFX 开发的强大软件,广泛应用于视觉特效、动态图形、游戏开发及影视制作等多个领域。它以其非线性工作流、节点基础的环境以及高度的灵活性,受到业内从业者的青睐。Houdini API是一组编程接口,它允许开发者在不同的应用程序和环境中集成Houdini的功能。Houdini API的定义广泛,它不仅仅局限于软件内部脚本环境,而是一套可以与多种编程语言集成的接口。

weixin_36427956的博客 1044

day10

1.什么是接口 API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数 可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会受到该数据范围内的返回参数 2.什么是接口测试 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互 一般我们用的...

m0_62041335的博客 897

K8飞刀:Kubernetes集群管理与操作工具集锦

在现代的云计算和容器化时代,Kubernetes(通常简称为K8s)已成为容器编排的首选平台。它的出现极大地简化了容器化应用的部署、扩展和管理。在第一章中,我们将探讨Kubernetes的核心概念、架构以及如何通过集群管理实现业务需求。本章的目标是为读者提供Kubernetes的入门知识,为后续章节中更深层次的技术探讨打下坚实的基础。在Kubernetes的世界里,一切皆资源。资源对象是集群中的实体,每个实体都拥有特定的配置和状态。

weixin_42376614的博客 910

项目API借口的根路径怎样设置

这里发送请求的是前端,前端通过axios,发送数据给后端,后端利用Mybatis进行数据交互,这个根路径不可能是前端的根路径,前端的根路径只能是这样的:这个根路径必须写在后端才行。比如:请求根路径:https://www.escook.cn/

weixin_54048131的博客 987

基于Kotlin的足球集锦App开发实战项目

前面一切看起来都很美好,但如果忽略权限申请、异常捕获和性能监控,最终上线可能还是会翻车。

weixin_42348783的博客 1142

本地AI语音生成与配音工作台Pandrator:从TTS到RVC的完整实践指南

语音合成(TTS)技术通过深度学习模型将文本转换为自然语音,其核心原理涉及声学建模与波形生成。这项技术不仅提升了人机交互体验,更在内容创作领域展现出巨大价值,广泛应用于有声书制作、视频配音、虚拟助手等场景。本文聚焦于一个集成了XTTS-v2、RVC等先进模型的本地化AI语音工作台——Pandrator,它通过模块化架构将语音合成、声音克隆、音频转录与翻译等流程无缝整合,为用户提供了一个图形化、可定制的完整解决方案。文章深入解析了其基于TTS与RVC(Retrieval-based Voice Convers

weixin_42676876的博客 341

小米HR:说说对API有多少的理解? 看了后,和面试官扯皮,吹牛逼!绰绰有余!

目录 什么是API? 什么是API测试 API测试的测试用例: API测试方法: 如何进行API测试 API测试的最佳做法: API测试检测到的错误类型 API测试工具 API测试的挑战 结论: 最后 什么是API? API(全称Application Programming Interface)是两个单独的软件系统之间的通信和数据交换。实现API的软件系统包含可以由另一个软件系统执行的功能/子例程。 什么是API测试 API测试是一种用于验证API(应用程序编程接口)的.

程序员-小枫的博客 3696

STM32F030F4P6 ADC多通道定时器触发DMA搬运

主函数中等待转换完成的标志位,然后打印出来。ADC回调函数中将数值赋值给变量。配置定时器1s读一次。

qq_24426625的博客 1359

VBA中API 函数集锦

VBA中API 函数集锦 去发现同类优质开源项目:https://gitcode.com/ VBA (Visual Basic for Applications) 是一种强大的编程语言,广泛应用于Office系列软件中。在VBA编程中,API函数的引入极大地扩展了其功能,使得VBA程序能够实现更加复杂和高效的自动化操作。 本资源文件为您精心整理了VBA中常用的API函数集锦,旨在帮助VBA爱好者更...

gitblog_06762的博客 407

手把手教你用89C52单片机驱动0.96寸OLED(IIC接口,附完整代码)

本文详细介绍了如何使用89C52单片机通过I2C接口驱动0.96寸OLED显示屏,包括硬件连接、I2C通信原理、SSD1306驱动芯片的初始化及显存管理技巧,并提供了完整的代码示例和常见问题排查方法,帮助电子爱好者快速掌握OLED显示技术。

weixin_30781433的博客 371

openclaw通俗入门系列6——记忆系统

记忆 = 智能体的笔记本,分长期(MEMORY.md)和每日(memory/日期.md)。只有写到文件里的才能记住!支持语义搜索(理解意思)+ 关键词搜索,还能自动在压缩前保存重要内容。

m0_60605453的博客 404

awesome:Modrinth API 应用集锦

awesome:Modrinth API 应用集锦 Modrinth API 作为 Minecraft 模组社区的重要工具,其强大的功能和灵活性为开发者提供了无限可能。本文将为您详细介绍一些优秀且开源的 Modrinth API 应用项目,帮助您更好地了解和使用这些工具。 项目介绍 Modrinth 是一个旨在为 Minecraft 模组提供托管服务的平台,其 API 使得开发者可以方便地集成 M...

gitblog_00299的博客 1789

【Qt图书管理系统】5.完整版源码及下载地址

Qt图书管理系统完整源码下载。

小鱼酱的博客 7003

VBA中API函数集锦:编程能力提升的利器

VBA中API函数集锦:编程能力提升的利器 去发现同类优质开源项目:https://gitcode.com/ VBA中API函数集锦:项目的核心功能/场景 VBA编程利器,API函数集锦,实现高级自动化操作 项目介绍 VBA(Visual Basic for Applications)作为Office系列软件的内置编程语言,为广大办公自动化爱好者提供了无限的可能。然而,VBA的内置函数有时可能无法...

gitblog_06747的博客 307

【硬件工程师面经整理2_电源篇】

硬件工程师面经整理_电源篇

LeeYLong的博客 2770

给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾

本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 17万+

Java笔试题集锦

Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显

肥肥的飞猫的专栏 812

国科大学习资料--高级软件工程-复习题概念解释答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题概念解释答案 1. 敏捷开发方法与Scrum方法 a.敏捷是一种强调轻量的过程方法论,它强调拥抱变化而不是与之对抗,通过有效的沟通发挥群体的智慧。敏捷方法采用迭代/增量开发的过程模型。敏捷宣言是:个体和交互高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。 虽然右边的也有价值,但是认为左边的更有价值。 b.Scrum(Schwaber和Beedle)是管理两个披萨规模(4-9人)的软件开发团队的方法,它高频率的短会

无名何许人的博客 1444

API网关文章集锦

1. 谈API网关的背景、架构以及落地方案

纯粹的果子 407

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

探索Kubernetes管理新境界:实用脚本集锦

探索Kubernetes管理新境界:实用脚本集锦 在日新月异的云原生时代,Kubernetes作为容器编排领域的佼佼者,其复杂的配置和管理需求成为了众多开发者面前的一道门槛。然而,今天我们要推荐的这个宝藏开源项目——Kubernetes Scripts,正是一套旨在简化Kubernetes操作的实用工具箱,为开发者们带来了全新的效率提升方案。 项目介绍 Kubernetes Scripts 是一个...

gitblog_00115的博客 1092

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android高级开发面试题及答案集锦:掌握核心知识,轻松应对面试挑战

Android高级开发面试题及答案集锦:掌握核心知识,轻松应对面试挑战 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今移动开发领域,Android开发因其广泛的应用和开源特性一直备受青睐。面对日益激烈的职场竞争,如何成为一名合格的Android高级开发工程师?《Android高级开发面试题及答案集锦》正是为了帮助开发者们准备面试、提升技能而诞生的资源库。这份资料...

gitblog_06727的博客 663

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

有用的API集锦

1.读取Assets目录下的资源文件: /** * 读取asserts目录下的文件 * @author barry.huang * @return 对应文件的内容 */ public static String readFileFromAssets(Context context, String fileName) { String

逆流的鱼的专栏 923

wince集锦

wince集锦 WinCE驱动开发问题精华集锦在mediaplayer全屏播放的时候,我可以用键盘上的某一个键调节声音大小,现在我想在屏幕上显示调节的结果就跟我们看电视一样能出来一些标记。当声音变大在屏幕上就增多,当声音变小的时候就减少 得到播放窗口的DC,然后在上面

springdia的专栏 3102

全网最全NXOpen西门子内部培训资料集锦:助力NXOpen学习者更进一步

全网最全NXOpen西门子内部培训资料集锦:助力NXOpen学习者更进一步 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 助力NXOpen学习者全面掌握二次开发技巧 项目介绍 在工业设计软件领域,NXOpen作为西门子的核心开发平台,其二次开发能力的重要性不言而喻。全网最全NXOpen西门子内部培训资料集锦,汇聚了网上最为全面、权威的NXOpen二次开发资料...

gitblog_06727的博客 978

Unity2020学习资源集锦:一站式掌握Unity开发技能

Unity2020学习资源集锦:一站式掌握Unity开发技能 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 Unity作为全球领先的游戏开发平台,以其强大的功能和易用性受到开发者的广泛应用。今天,我们将为大家推荐一个实用的开源项目——Unity 2020 学习资源集锦。这个项目旨在为初学者和进阶开发者提供一整套Unity 2020的学习资源,帮助大家快速上手和提升Un...

gitblog_06735的博客 418
上一篇: 最热门的3个基于Java的Blockchain库
下一篇: 软件创始人必须要知道的事情
csdn研发技术
博客等级 码龄9年 1381粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值