博舍

编程语言介绍 人工智能常用的编程语言有哪些

编程语言介绍

有些小伙伴想学软件开发,想从事软件工程相关的工作,如果是这样,那么您就要学习编程语言。此篇内容不是要教会您一门编程语言,而是给您整体介绍一下目前都有哪些编程语言。此篇内容适合想从事软件开发相关行业学生、入门人等,也可以作为已经精通了一门编程语言的开发者的总结学习,同样可以作为非计算机软件专业的人员进行了解学习。

1、编程语言有哪些

您可能会听说过C、Java、Python等编程语言,那么编程语言到底有哪些呢?下面我为您列出20种编程语言,先看看他们的名字,它们有C、Java、Python、C++、C#、VisualBasic、JavaScript、PHP、R、SQL、Go、Swift、Perl、Assemblylanguage、Ruby、MATLAB、Groovy、Rust、Objective-C、Dart。这里列的20种编程语言也是TIOBE网(https://www.tiobe.com)公布的2020年9月排名前20的语言,编程语言是和计算机交流的工具,这一点和我们人类用的汉语、西班牙语、英语、阿拉伯语等等是类似的。

人类语言大概有4000-8000种,德国出版的《语言学及语言交际工具问题手册》提供的数字是5561种。那么编程语言全世界有多少呢?据估计,编程语言的数量不少于2500种。和人类语言发展变化缓慢又持久不同,编程语言发展的很快,说不定在我们写这些文字同时就又有几门语言诞生了。编程语言这么多,我们如何来认识它们呢?怎么对它们进行分类呢?

2、如何分类看众多编程语言

说起分类,这里有个角度问题,从不同的角度可以有不同分法。打个比喻有一班学生,你可以按照性别把他们分成男生和女生,也可以按照学习成绩分成优等生、中等生和差等生。

计算机语言的分类也可以从多个角度,如果按照发展阶段分,可以分为低级语言和高级语言,低级语言又可以分为机器语言和汇编语言。

机器语言:计算机的基础是二进制,和计算机底层硬件交流,二进制是最直接的方式,机器语言就是用二进制代码表示计算机能够识别的指令,然后输入到计算机,使得计算机能够执行成员编写的编写的二进制程序。由于二进制计算机能够直接执行,因此机器语言执行速度很快,这是它的有点。但是不同型号的计算机指令系统不一样,这样机器语言编写的程序不通用,用机器语言编写程序由于都是二进制,因此晦涩难懂,对编程人员要求也很高,早期用机器语言编写程序是一件十分专业和繁琐的工作,程序也都是些0和1组成的指令代码,很难理解,也很容易出错,随着时间的发展出现了汇编语言。

汇编语言:汇编语言很好的克服了机器语言的弱点,它是用一些比较容易记忆的英文单词或缩写代替了机器语言的二进制指令,比如用add表示加法指令,mov代表移动指令等等,其实就是把进制指令和具有含义的英文字母组合对应了起来,这样无论是编写、阅读、修改和bug修复汇编语言编程的程序都变得容易了很多。

当计算机的硬件不能直接识别这些英文符号等组成汇编程序,汇编程序需要转换成计算机能直接识别的二进制代码,这时候需要一个专门的程序来进行转换,转换的过程称为汇编。汇编语言其实只是为机器语言提供了助记码,汇编指令和机器语言基本上也是对应的,因此它的执行速度和机器语言相当,但是汇编语言编写的程序依然冗长,不适合大型程序的开发,随着时代的发展出现了高级语言。

高级语言:高级语言是相对低级语言说的,我们平常说的成员一般指的就是用高级语言编写程序的人,采用高级语言也是目前开发程序的主要方式。低级语言没有摆脱计算机硬件的束缚,高级语言希望编写的程序具有移植性,也就是编写的程序可以在不同指令的计算机上运行,因此和汇编有点类似,高级语言编写的程序也需要一个转换过程,这个过程称为编译。

现有的高级语言有很多了,如前面提到的C、Java等等,通过编译器或解释器进行中间转换,使得高级语言编程的程序可以在不同的计算机上运行。如果您不能理解编译,您可以想象一下您到国外四处旅游,同时带了一个超级翻译,这个您无论到达哪个地方都可以和当地人们进行交流了。

以上是从发展阶段分的,平常我们说编程语言一般指的是高级语言,高级语言内也可从不同角度对他们进行划分。如可以从应用领域分为通用高级语言和专用高级语言,从语言特点可以分为面向过程的语言和面向对象的语言,从编译的时机上可以分为编译性语言和解释性语言,另外还有分成动态语言和静态语言,等等。如果您没有深入的学习过编程语言,这些分类恐怕是很难理解的了的。

3、编程语言的发展史

1946年,世界上第一台计算机ENIAC诞生于美国宾夕法尼亚大学,虽然具有划时代意义,但是现在看来非常笨拙,使用的输入方式是穿孔卡片,就是在一卡片上打一些孔,编程需要把机器指令码以打孔的形式打到卡片上,有孔地方代表1,没孔的地方代表0,对应的就是计算机能直接理解的二进制机器语言。然后把这些卡片输入到计算机,让计算机根据这些指令进行运算。卡片发展以后,就出现了纸带,这样可以把程序编写的长一些了。

(来源:网络)

汇编语言出现以后,编程工作就成了书写汇编指令了。这种符号语言使得计算机语言取得了很大的进步,当然现在看来还是相当复杂的,但为高级计算机语言发展奠定了方向,是向更高级语言进化的桥梁。

早期的高级语言更多是为了进行科学计算,如FORTRAN语言,后来计算机越来越倾向于解决复杂的应用问题,计算机语言也开始变得越来越通用,如C、Java等都孕育而生了,高级语言更接近于人们思维习惯,更容易学习和使用,因此得到了很大的发展。

高级语言那么多,这里给大家列一个主要的几门高级语言发展的大致脉络,供读者参考。

几种语言发展脉络图

4、如何学习编程语言

对于想学软件工程的初学者来说,可能最关心的是如何掌握这些语言。语言这么多,全部完全掌握不现实也不可能,但是高级语言很多是有相通性的,特别是用的最广的几门高级语言,掌握一两门语言后,再想学习的新的语言是非常简单的。因此,学习语言一定要掌握编程语言的核心思想。

这里给您一个一般的软件工程专业大学生学习编程语言的过程,供阅读者参考。一般情况下,刚入门的同学都会学习一门面向过程的编程语言,如C语言等,C语言也是目前大学开设的最广泛的高级编程语言。学习完C语言后,一般还要学习一门面向的对象的语言,如C++、Java、Python等,面向对象的基本思想会在这些语言的学习过程中逐渐被理解。如果您已经深入的理解了一到两门语言以后,您就会发现制约您在软件行业发展的可能不是语言本身,而是更多基础知识、算法和工程方法。好比您学英语,词汇背了不少,八大语法也掌握了,可是就是写不出好的文章。不过,随着自身积累和实践经验的不断增加,您会逐渐成为软件方面的专业人才的。

5、小结

本部分介绍了一些计算机编程语言,介绍了计算机语言的分类,了解了编程语言的发展历史。通过这些使得读者能够认识计算机语言,同时针对初学者给出了学习编程语言的建议,希望读者通过阅读对计算机语言有一个整体的认识。

 

人工智能项目的开发流程概述

人工智能作为当下最热门的行业之一,不管是高考的专业选择中,还是各行各业的工作中,基本都会听到人工智能这个词,主要原因就是社会上各行各业对人工智能的需求越来越大了。在国内,从2015年开始,人工智能技术就已经逐渐渗透到了各行各业了。那么实现人工智能的过程是怎么样的呢?我们所看到的人工智能产品到底是怎么一步步走到我们眼前的呢?接下来我们就以人工智能领域最为火热的深度学习为例,详细分析一下人工智能项目的研发流程。

1、数据处理-AI的粮食加工

人工智能项目研发的首要阶段就是数据处理,既然是数据处理,那么需要有数据才能处理。数据作为人工智能项目的首要材料之一,是不可或缺的,怎么获得良好的数据,是处理好数据的第一步,没有质量保证的数据,无论如何处理,也很难达到数据处理结果的要求。

数据的要求一般是根据项目最终的要求而定的,比如拿图像视觉方向的项目来说,模型所需要的当然就是图像数据了,那么什么样的图像数据才算是比较好的数据,有利于模型的学习呢?一般来说图像数据对于现实物体的还原度越高越好,一般可以从图像的色彩三要素和图像像素的值来判断。

数据的还原度从根本上影响了模型最终输出的效果,但是如果拿到的原始数据质量就不是很好的时候,就只能想办法对原始数据做一些处理,以期望数据的质量更好一些。但是话说回来,数据处理只是治标不治本,也就是说如果数据的质量真的不怎么好,那么无论如何处理也是很难达到使用的效果的。

所以最好的办法就是采集和使用场景匹配度最高的数据,比如让工作人员到现场实地采集数据。这个做法是非常有必要的,不要光看现在顶会论文上的哪些指标,人家是在做学术研究的,大家使用的数据集都是一样的,比如coco,voc等等,只有使用同样的数据集才能分出大家谁的模型比较好,比如最近比较火热的YOLOX也是在COCO数据集做的测试,和以前各版本的YOLO做的比较。

比如说最近的某某模型增加了Attention后,发现accuracy、flops、mAp都提升了不少,又一次SOTA了,等过了一段时间作者针对不同的任务对模型又做了一些Finetune,结果比以前还更好。但实际上这些学术界看似超越之前的研究成果在实际工程应用中却没有想象中的那么美好,因为时间工程中,不可能出现两个不同的项目使用同样的数据集的情况。

在实际工程中,在采集数据的过程中,稍微不注意的一些细节就将模型的优势抵消了。比如采集数据的时候,是从互联网上爬下来的数据,那么数据的质量可能就不会太好,如果实际工作环境是室内或室外固定的场景,那么最好是到实地去采集不同时间、日期、天气情况下的数据,如果采集到好的数据资源,那么就算使用一个一般的模型,也能得到较好的结果。反之,如果训练数据和实际应用场景的数据差异过大,那么就算使用当前的SOTA模型,也很难达到预期的效果。

当然,再好的数据,采集回来后还是要做处理的,最直接的就是打标签,标签的设置确定了模型最终要学习的目标是什么。如果采集的数据数量不够,那么还需要做一些相应的数据增强来扩充数据量。

2、模型设计-AI的灵魂熔炉

如果数据是材料,那么模型就是容器,好的材料配上好的丹炉,才有产出好的丹药的可能。模型的发展是深度学习技术发展中较为重要的一环,无论是早期的卷积神经网络模型LeNet,还是后来的AlexNet,以及后面陆续出现的VggNet、GoogLeNet、SqueezeNet、ResNet、DenseNet、DarkNet、MobileNet、ShuffleNet、EfficientNet,又或者是这两年异军突起的Transformer模型,以及CNN和Transformer的结合体,都有一个共同特点,那就是这些模型的发展都朝着一个共同的目标前进,这个目标就是更高的mAp值、更高的训练效率、更快的推理速度、更大的平台适应性。

可以从模型的发展历程中看出,深度学习的知识体系更新迭代非常之快,想要保持在技术知识上的前沿性,就需要不断的学习新知识。如果在企业工作,那么还需要将这些新的知识融入到工程应用当中,产生一定的实际价值。

如果单从神经网络模型的发展来看,似乎想要在行业中出头,只能依靠不断的学习新知识,但是很明显,这样的成本太高,一般的企业从业人员不可能每天都有很充裕的时间来学习的,所以工程界和学术界对于新技术的关注度还是有些差异的,毕竟一个纯粹的学术研究,一个是落地的实际应用。

在学术界,模型的轻微提升,就可以发表一篇论文,甚至可以发表在顶会期刊上面,因为学术研究的就是在固定条件下的模型性能和效率。而工程界的条件不可能像学术界那样固定,每个具体的项目要求都不一样的,而且不同项目的数据也是大相径庭,这样就会造成同样的模型,在不同条件下会出现不同的结果,由于工程界实际项目的变量太多,将学术界影响结果的不确定性条件扩大了,需要解决的问题自然也就增加了。

在学术界做研究的时候,有部分条件是人为固定的,只需要在模型的设计训练上提高效果即可,而到了工程界就变成了所有的条件都具有了不确定性,比如设备、数据、平台、外部环境等这些变量对于最终结果的影响,一点都不亚于模型对于结果的影响。所以在工程界,当影响结果的这些变量在发生变化的时候,会出现使用较弱的模型效果却超出较好模型效果的情况,其原因就是模型上提升不足以抵消其他变量带来的负面影响。

好的丹炉虽具有炼出好丹药的可能,但是如果丹炉放置的位置不好,经常刮风下雨、伴随地震海啸,那么这个丹炉的优势就不如放在一个稳定地面上的丹炉的效果了,更不用说所使用的材料出了问题了。当然学术界和工程界是互相促进发展的,学术界的技术研究为工程界实际应用做技术方向指导,而工程界反过来监督验证学术界的研究成果是否有效。

3、训练优化-AI的学习成长

模型训练是最考验算法工程师的实战经验的,比如选择什么样的主干模型,进行怎么样的微调,以及选择什么样的损失函数和优化方法,是否进行多阶段训练,或者对图像数据进行多尺度训练等。此外还包括进行多大batch的采样,如何提高训练的速度,而这些都和具体的设备类型相关。

一般来说,有经验的训练人员,在训练模型的时候,不会一开始就输入大量的数据,而是做小批量的数据的训练,目的是先通过小批量数据来检验模型的好坏,然后再根据检验情况进行下一步的操作。很少会出现直接一上来就使用大批量的数据训练模型的情况,因为这样的做法有点像豪赌,一旦模型出现了问题,那么前面辛辛苦苦花费的大量时间将会毫无成果,一切都要重新再来,这种大量的试错时间成本在真实项目开发当中是有可能造成项目延期的。

一般模型训练开始之前先使用少量的数据快速的训练出一个过拟合的结果,用来验证模型是否合适。在实际工作中过拟合往往是不好的表现,但是我们可以使用它来做一些有意义的事情,比如用过拟合来验证模型是否合理,过拟合往往意味着参数过大,或者数据过少,导致模型测试的时候泛化能力太差,但是却能够告诉我们,模型本身是没有问题的,问题就在于训练过度,或者数据集过少。既然都过拟合了,说明模型的参数是足够多的,而且也得到了正确的结果,这正是我们想要的,至于过拟合,可以通过增加更多的数据来解决。

如果模型有问题,那么想要得到一个过拟合的结果都是不可能的。如果在前期先训练一个过拟合模型,那么将能够大大的加强我们工程当中的容错率,哪怕训练出了问题,再调整模型也不会浪费太多的时间,甚至可以再来一次,训练一个新的模型,因为过拟合模型的训练本来就花不了太长时间。

如果太过自信,模型训练一开始就把全部数据加载进去,那么模型的训练有可能会是几个星期甚至更长的时间,然而一旦出现错误,那么浪费的时间就太长了,有可能会导致项目的工期延误。最好的办法就是使用少量数据训练过拟合的结果来不断测测试模型的正确性,当确定模型没有问题了,再加载大批量的数据训练。

4、评估验证-AI的监理指导

模型评估是和模型训练伴随而行的,可以说训练一开始,评估也随之开始。训练和评估如同部队上的司令员和政委,一个负责攻城掠地,一个负责监督指导。可以对比一下电视剧《亮剑》里的李云龙和赵刚,李云龙的职务是团长,负责指挥前线士兵冲锋陷阵,赵刚的职务是政委,负责后勤和监督政策的执行。在剧里李云龙和赵刚经常吵架,因为李云龙的目标是如何打胜仗,而赵刚的目标不光要打胜仗,还要负责部队整体的思想工作,监督政策的执行,防止一些冒险的做法。

对比模型训练和模型评估,两者的关系也是如此。模型训练只负责如何把模型训练好,至于要训练到什么程度才算合适,需要模型评估说了算。所以在开始一项任务的时候,模型训练和模型评估是同时进行的,正常情况下,模型训练一次,则评估一次,但是我们认为模型训练的前几次是不需要评估的,因为模型训练的前期,参数还没有学习到正确的数值。

根据经验,一般模型在训练到一定的次数之后,再启动模型验证部分,相比模型训练一开始就启动模型评估,这样的操作可以在保证模型有效评估的前提下加快模型训练速度,因为模型在训练到后期的时候,只凭经验是很难确定模型是否已经训练到合适的程度的。有了评估验证的过程,就可以根据验证的结果来判断模型是否需要继续训练了。

如果没有模型评估,那么模型训练就只能凭运气了,有时候模型训练结束后,可能模型并没有训练到位,这种情况还比较容易处理,可以接着继续训练。但是如果模型训练过度了,就不太好处理了,一般来说模型训练过度之后的副作用就是过拟合,过拟合情况相信大家都比较清楚,模型过拟合之后会导致泛化能力大大的降低,这肯定不是我们想要看到的。

模型评估一般可以通过验证集和训练集的损失或精度的差距来做判断,看模型训练是否已经到位,需要停止训练。模型训练只管训练是否有效,是否是否能够持续快速的降低模型输出与目标直接的差距。模型评估要监督模型训练何时应该停止,不需要继续训练。

5、测试调整-AI的战前试炼

模型测试是项目交付前的最后一次试验,测试的目的就是和项目方给出的指标做对比,比如精度、速度等指标。所以作为项目交付前的最后一次测试实验,一定要按照项目方提出的指标要求做测试,测试的数据最好是从项目方实际的工作场景中采集,如果条件不允许,那么测试数据一定要最大可能的接近项目方实际工作场景的数据,只有这样才有可能在项目交付后不会出现算法指标上的问题。

测试数据不仅从质量上要接近真实场景的数据,而且在数量上也要达到一定的量级,测试的结果才会更加接近真实场景下的结果。根据大数定律,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。所以当数据的数量达到一定的量级,也就意味着测试的结果也会越多,最终所有测试结果的期望也就越接近真实结果。

在实际场景下的大规模数据测试中,如果出现测试结果和项目方给出的指标相差太远,当然这里所说的是模型测试出来的指标比项目方给出的指标要低。那么就需要对模型或者样本数据做调整之后再训练,或者重新训练模型。

如果模型在训练和验证的时候各项指标都没有问题,但是在测试的时候,却出现了指标急速下降的情况,一般出现这种情况,大部分原因都是由于测试数据与训练数据、验证数据差距太大造成的,也就是说训练集和验证集的数据差距不大,属于相似的数据场景分布,很有可能是从互联网获得的数据,而测试集的数据很有可能来自真实场景下采集到的数据,因此测测试集与训练集、验证集之间就会有很大的差距,而数据差距则是造成测试集的结果急速下降的主要原因,解决方案就是替换训练集和验证集的数据,最好也是从真实场景中采集。

当训练集、验证集、测试集都来自于统一场景下的数据的时候,不仅测试结果能够达到满意的效果,而且往往在部署之后,也不会出现算法指标上的问题。

6、部署实施-AI的落地成型

模型部署是模型在实际项目中的落地应用,模型部署包括了各种不同的编程语言的部署,比如常见的C/C++、JAVA、Python,以及其他语言,各种语言由于其自身的特性,在部署的时候部署方法也不大一样,比如按照某些定义而言,C/C++属于编译型语言,Python属于解释型语言,总之两者的程序执行过程的差异导致它们在部署的时候要考虑跨平台性的问题。

粗略的来说,由于C/C++的编译特性,它会将原生的程序代码生成一个可执行的二进制文件,这个过程称为编译过程,这个二进制文件相当于一个中间文件,执行这个中间文件的效率要比执行原生代码的速度快的多,这也是为什么很多算法程序使用python来开发,但是在推理部署的时候却要换成C++,其主要原因之一就是C++生成的中间程序能够加快推理速度,另外在安全性上也是比python要超出不少的,因为C++的打包程序是很难被反编译的,而python在这点上就要逊色不少。

另外,C/C++在不同的系统平台下生成的中间程序,在执行的时候只能在当前的系统平台上运行,一旦放到其他系统平台上就运行不了了,比如在Windows平台上生成的中间程序,只能在Windows平台上运行,在Linux平台或者其他平台上是运行不了,如果需要在其他平台上运行,则需要在对应的平台上重新编译才行。

而python就不一样了,解释型语言的特性使它具有跨平台的方便性,在一个平台上编写的语言可以放在其他任何平台上运行。但是由于解释型语言的特点,python程序的运行速度是没有C/C++的速度快的,所以如果是实现自己的算法想法,那么python无疑是最好的选择,但是如果要部署在工程应用上C/C++则更具有优势一些。

从部署的设备上来说,大概可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IOT端(传感器、板卡:Android),各种部署的方法也是大同小异,拿英伟达的JetSonnano系列来说,部署方法非常简单,只要你买回来按照上面的说明部署,基本都能够成功的部署上的。

这里简单说一下在pytorch框架下的部署,在pytorch框架下部署基本可以分为三种方法,第一种是使用指定的编程语言(C/C++/JAVA)调用Libtorch在对应的平台(Windows/Linux)编写程序,然后直接部署。

第二种方法是先使用python在任意平台编写模型(跨平台),然后使用torch.jit.trace()将python文件转成c++文件,最后使用save()方法打包成.pt文件,然后使用C/C++/JAVA或其他语言在其他平台上调用。

第三种将python模型转换成onnx,再转成caffe,tensorflow等其他框架的模型。

后记:目前人工智能项目的开发流程相对来说还没有形成标准,各种方法都有,以上流程只是根据当前大部分人工智能项目的开发经验而总结,难免有遗漏之处,欢迎各位大牛们前来指正,做为一名炼丹学徒,这条路才刚刚开始,希望各位行业同仁共勉!

关注微信公众号:深度人工智能学院,获取更多人工智能方面的知识!

        

        官方公众号                          官方微信号

常见的编程语言有哪些

计算机编程语言有:C语言(绘图能力强,具有可移植性)、java(通用性、高效性)、c++(支持多重编程范式)、php(超文本预处理语言)、c#语言等。

微服务项目中常用的7种语言:

Java

C#

Go

Typescript

Python

Haskell

Ballerina

网络安全编程的前10种语言:

C/C++

Python

Java

JavaScript

PHP

SQL

Go

Ruby

PowerShell

PowerShell与BashShell

支持PLC编程的5大电气语言

梯形图Delete(LD)

指令表Delete(IL)

功能模块图Delete(FBD)

顺序功能流程图Delete(SFC)

结构化文本Delete(ST)

工业机器人语言编程

硬件描述语言(HDLs)

Assembly

MATLAB

C#/.NET

Java

Python

C/C++

web3编程语言包括

Solidity

Vyper

Go

Huff

Rust

Move

Cairo

Haskell

十个黑客常用的编程语言

Python

C语言

Java

Perl

C++

Bash

Go语言

SQL

PHP

Ruby

每种程序语言都有它的优势和劣势,选择编程语言呢,主要考虑几个要点。

1、构建编写网页推荐:HTML、CSS、PHP

2、开发app推荐:Java、C++

3、制作视频游戏推荐:Python、Java

4、对数据进行管理推荐:C#、PHP、Python

5、进行偏硬件的编程推荐:C

6、进行科学计算推荐:Python

当然,我们在实际开发的时候需要我们综合考虑产品需求,在程序运行速度指标、硬件要求、开发周期等方面进行权衡,最终确定编程所需语言。

自学加油站

自学JavaEE快速通关路径(依次向下顺序学习即可)JavaSE基础-打好JavaSE基础才能成为开发高手Java基础:

Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)JavaWeb-能制作中小型网站&企业管理系统Javaweb:新版JavaWeb基础教程,Javaweb从入门到企业实战完整版MySQL数据库: MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括Java开发框架-Java企业级服务端开发技能Maven:Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具mavenGit:Git全套教程,完整的git项目管理工具教程,一套精通gitSSM框架:2022新版SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术MybatisPlus:MybatisPlus深入浅出教程,快速上手mybatisplusSpringBoot:SpringBoot2全套视频教程,springboot零基础到项目实战(springboot2完整版)传智健康:Java项目《传智健康》,完整的企业级医疗行业项目(基于SSM+Zookeeper+Dubbo+SpringSecurity技术栈)瑞吉外卖:Java项目实战《瑞吉外卖》,轻松掌握springboot+mybatisplus开发核心技术的真java实战项目中间件&微服务框架-中级程序员的热门技术Springcloud:SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务Dubbo:Dubbo快速入门,Java分布式框架dubbo教程Zookeeper:Zookeeper视频教程,快速入门zookeeper技术RabbitMQ:RabbitMQ全套教程,rabbitmq消息中间件到实战RocketMQ:RocketMQ系统精讲,电商分布式消息中间件,硬核揭秘双十一Docker:Docker容器化技术,从零学会Docker教程Redis:Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目MongoDB:MongoDB基础入门到高级进阶,一套搞定mongodb搜索技术:java中级教程-ELK高级搜索,深度详解ElasticStack技术栈项目实战-企业级项目开发,掌握行业3年开发经验人力资源:Java项目SaaS移动办公完整版《iHRM人力资源管理系统》,跨行业SaaS办公整合性解决方案好客租房:Java项目《好客租房》,Java企业级解决方案(Spring全家桶+分布式解决方案+微信授权+爬虫解决方案等)权限管理一体化解决方案:Java品达通用权限项目,基于SpringCloudSpringBoot的微服务框架的权限管理解决方案

 

其他学习路线:

「2022版全学科学习路线图」助力高效学习-Java、前端、python大数据开发、人工智能、UI/UE设计、新媒体学习路线、产品经理学习路线、软件测试学习路线。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇