Programming

Computer Languages


Programming: L.A(N).M.P(P) | CyberSecurity | SQL | Front-end | JavaScript | MCU | AI | HPC

A computer language is a method of communication with a computer. Types of computer languages include:

Programming language, a formal language designed to communicate instructions to a machine, particularly a computer[1]
General-purpose language, a programming language that is broadly applicable across application domains, and lacks specialized features for a particular domain
Command language, a language used to control the tasks of the computer itself, such as starting other programs
Machine language or machine code, a set of instructions executed directly by a computer's central processing unit
Markup language, a grammar for annotating a document in a way that is syntactically distinguishable from the text, such as HTML
Style sheet language, a computer language that expresses the presentation of structured documents, such as CSS
Configuration language, a language used to write configuration files
Construction language, a general category that includes configuration languages, toolkit languages, and programming languages
Query language, a language used to make queries in databases and information systems
Modeling language, a formal language used to express information or knowledge, often for use in computer system design
Hardware description language, used to model integrated circuits
Simulation language, a language used to describe simulations


Focue: Tide | Unity

AMDCMD、CommonJs、ES6的对比

他们都是用于在模块化定义中使用的,AMD、CMD、CommonJs是ES5中提供的模块化编程的方案,import/export是ES6中定义新增的

彻底弄懂 |


The scientific study of language is called linguistics.


各种语言都有着自己的风格及特点,比如PHP的最明显的特点就是容易上手,新手们可以快速入门,
而java的特点就是框架比较多,在安全方面做的比较到位,适合做大型的web服务应用,写一些抓取脚本什么的,php会更好一点,
当然大部分事情用java的,php也是可以搞定,只不过有些方面php更合适,有些方面java更合适罢了,比如用php去抓取一个网页的内容,
php用一个函数可以搞定,而java至少需要写5行代码以上。不同计算机语言有着不同的擅长领域,
因此在一个公司你就会发现好多牛人不只是会一种计算机语言,都是同时会多种的,需要使用php时他可以,
需要用java时他也可以,需要用c时他仍然可以,有时候需要长刀,有时候却需要短刀,尺有所短寸有所长嘛,
大家要多多发现各自语言的特性,并在适当的场合恰如其分的使用它们。一门语言学精,固然重要,
对于新手来说,首要就是照住一门语言先达到精通程度,然后就可以考虑了解一下其他的计算机语言,
这样的话才对自己的发展是有利的,当一门语言精通后不考虑其他语言的发展势必是会碰到天花板的。

好多人都有一种错误的思想,计算机语言用的用的完美就是一切了,
比如说java的反射,多线程,多态,继承,各种设计模式了,你都通通理解并精通,那么你就很牛了,在编程界就无所不知了,
当然不是,这些不是一切呀,大家要深刻的明白,计算机语言不是一切,计算机语言只是一种工具而已,计算机语言只是一种手段,而不是目的,
我们的目的是用计算机语言进行编程,制造出满足用户的各种各样的产品,为用户服务,不论再牛逼的计算机语言,
如果只是看着很酷,达不到这个目的那就是华而不实的。因此我们要纠正一下原来固有的思想,我们以后要多思考一下,
我们怎么利用计算机语言来制造出更好的产品,这才是关键所在!

程序员的本职工作就是编码,实现功能,而编码有分为编码思想和编码能力。随着工作经验的增加,大家的编码能力可能都差不多了,而程序员之间的差距往往是差在编码思想上。

编码思想和编码能力这是一个程序员的"硬技能"。还需要有一些"软技能"的加持,比如撰写文档能力,时间管理能力,表达沟通能力.



编程语言的排名

TIOBE,是一家软件测试评价公司。公司每个月都会根据统计搜索引擎搜索编程语言的数量来对各种编程语言进行排名,发布TIOBE Index。2020年10月的指数就比较特别,因为Python直逼自开榜以来就稳居亚军的Java(冠军是C),它们之间的差距小于1.3%。而到了2020年11月的排名结果出来,Python已经荣登榜眼了。


电脑程序运行的基本原理是什么?
什么是计算机语言?
为什么会存在那么多的计算机语言?
编程语言生成的程序代码是什么样的?
运行程序时会发生什么?



电脑程序运行的基本原理是什么?

感谢诺先生,没有他的发明,小编今天就不能够在电脑面前给大家科普了。接下来小编首先给大家分析一下开启计算机主机的那一瞬间,桌面蹦出来的画面是怎么回事。

在一台电脑里有很多程序。其中,计算机做任何事情之前必须存在和运行的最重要的程序是操作系统程序。对,没错。就是你每次开机时候看到的那个熟悉的画面,伴随着叮当叮当的音乐,世界首富比尔盖茨的微软公司就是靠发明这个windows系统发大财的。这是计算机的主要“系统程序”。此操作系统程序不仅控制硬件部件,还控制其他软件(许多应用程序),还可让计算机用户与计算机本身进行互动(比如通过键盘,触摸屏,语音激活等等)。实在是万能之神啊。


什么是计算机语言?

与人类语言的复杂多变一样,现在世界上已经有200种以上的计算机语言了。当然其中也有很多几乎很少使用的语言,实际经常用到的语言只有20到30种。尽管如此,一个人要掌握太多计算机语言的话还是比较难的。

在那么多的程序设计语言中,学习哪个才好?下面是最常用的语言,程序猿们的本事可不仅仅是直立行走那么简单,掌握这些工具中的大部分,并且精通其中的一两种,才是一只合格的现代程序猿。


人类语言是指,人类用特定的格式和词汇来向他人发出指令,表达意愿,进行交流。不同种类语言的词汇和格式不尽相同,但可以达到相同的交流目的。

同样,我们也可以用“语言”来控制电脑,让电脑为我们做事情,这种语言叫做编程语言(Programming Language)。我们先简单介绍一下常用编程语言。 编程语言也有固定的格式和词汇,我们必须学会使用,才能在此基础上编写程序控制电脑。常用的编程语言有C语言,C ++,Java,C#,Python,PHP,JavaScript,Go语言,Objective-C,Swift等等,每种语言都有自己的优点。


计算机是如何听懂编程语言的呢?实际上,如果没有编译器(一种专门程序)的存在,计算机是无法理解编程语言的。编译器用来将编程语言编写的指令转换为机器语言。打个比方,人类有自己的人类语言,计算机也有自己的语言系统。它们使用只包含1和0的二进制代码,1表示“on”,0表示“off”。编程语言更容易被人类所学习和掌握,而编译器编译出的计算机语言则更容易让计算机接受。


程序猿使用编程语言编写的程序代码,编译器可以理解,编译器会将源代码转换为二进制代码(目标代码),然后汇编程序帮助这个目标代码转换为低级指令,指示机器执行,最后重新获取结果。

为什么要有编译器的存在呢?

简单的回答是,虽然编程语言已经编写代码告诉计算机该怎么做了,但计算机只能理解两种不同类型的数据:开和关。实际上,一台电脑实际上只是一个开/关(晶体管)的集合。计算机所做的任何事情背后的真相只不过是无数晶体管的开闭组合。

二进制码就是作为1和0的表示的组合,其中每个数字表示一个晶体管。二进制代码分为字节组,8位数组表示8个晶体管。例如,11101001。现代计算机包含数百万甚至数十亿个晶体管,这意味着无法想象的大量组合。

于是这里出现了一个问题,为了能够编写一个计算机程序,打出数十亿的1和0将需要超人的脑力和精力,编一个小程序可能需要一两年的工作。编程语言和编译器中,前者对人友好,后者对机器友好,两者通力合作,才能将人类的想法快捷而准确的传达给计算机。


为什么会存在那么多的计算机语言?

数百种不同的编程语言使我们有可能创建计算机软件,应用程序和网站。而无需编写二进制代码,他们让我们相对容易的编写,阅读和理解代码。同时,每种语言都带有自己特殊的编译器程序,它负责翻译我们编写的二进制代码,让机器明白我们的意图。

那么,为什么我们有这么多语言呐?

这是因为不同的语言被设计为用于不同的目的,一些可用于Web开发,一些用于编写桌面软件,其他用于解决科学和数字问题等。此外,编程语言也可以是低级或高级的。低级语言更接近计算机所理解的二进制代码,而高级语言更容易编程,因为它们接近人类的语言和思维模式,设计简单易于编写。几乎所有的主流编程语言都是高级语言。

编程语言生成的程序代码是什么样的?

程序是一种用特定编码语言编写的文本文件。程序文件中的代码称为源代码。每个编码语言都有自己的文件扩展名,用于识别用该语言编写的代码文件。例如,Python是'.py'。要编写程序,可以在纯文本编辑器(如记事本)中编写代码,并将文件保存到计算机。

如何运行一个程序,并实际得到它来执行命令?编码语言之间有所不同。一些语言保存到计算机后可以生成可以直接运行的单独二进制文件,而其他语言的程序由某些软件间接运行。例如,JavaScript程序文件将通过Chrome浏览器等运行。PHP程序文件将由像LAMP这样的Web服务器运行。

以hello.py文件为例,Python语言附带一个命令行,它将显示程序的输出文本“Hello,world!”。如果要将代码输入命令行并按enter键,程序将运行并且命令将被执行。是不是成就感油然而生啊。


运行程序时会发生什么?

电脑实际上并不了解“Hello,world!”这个短语,不知道如何在屏幕上显示。它只能理解开关。所以要真正运行一个命令,如打印“Hello,world!”,它必须将程序中的所有代码翻译成一系列可以理解的代码。

首先,源代码被翻译成汇编语言。汇编代码被翻译成机器语言。机器语言直接作为二进制代码执行。我们再来理解一些细节。编码语言首先必须将其源代码转换为汇编语言,一种使用单词和数字来表示二进制模式的超低级语言。根据编程语言不同,这可以用解释器(程序被逐行翻译)或编译器(程序整体翻译)来完成。

然后,编码语言将汇编代码发送到计算机的汇编器,该汇编器将其转换为计算机可以直接理解并直接作为二进制代码执行的机器语言。


结论

像二进制代码(计算机的母语)一样简单和原始的东西可以创建计算机软件这样复杂的东西,这是不是很令人惊奇呢?屏幕,操作系统,照片,视频,互联网,微信,在线银行帐户和本网站,所有这些都可以从1和0构建。编码语言存在的全部原因是为了简化所有这一切,这是人类智慧成就的象征。

最后,最重要的是,有一个循序渐进的行动计划,从学习编码开始,你就将进入一个全新的世界。加油吧,少年。




主流操作系统的开发语言

WIN9X是纯粹的汇编写的,由于代码量太巨大,所以漏洞很多,稳定性能很差。基于NT的windows(WIN2K,XP,2003,VISTA),主要用C写的(少量与硬件交互的代码因为C无法实现所以用汇编写的);其中WINDOWS2000大概有20余万行代码,其中80%是用C编写的;部分汇编,底层接口都是用汇编编写的,还有部分是用c++编写的。
Linux、Unix内核基本上是用C完成的,少量与硬件交互的代码因为C无法实现,所以用汇编写的,没有使用C++代码。但是,现在的Linux有些高级特性也采用C++写的。Linux、Unix平台上的很多GNU软件也全部都是用C写出来的。

综合上面的, 我们可以看出, 不管是windows还是Linux/Unix,其操作系统的核心都是使用大量的C语言和一些汇编语言写成的。


其发展脉络是这样的:

因为计算机值能识别二进制的机器码,所以, 最开始的程序都是使用机器码来写的(打孔机就是证明),难度很大。

后来,使用机器码写了一个程序,该程序可以解释一些最简单字符指令,将这些字符指令转换成对应的机器码,然后在计算机上执行,这个就是汇编器的初始版本,利用这些简单的字符指令,大大简化了代码的编写,不用像以前那样必须写大量的机器码了,仅仅需要找到这些机器码对应的字符指令码就可以了,这些指令再被汇编器翻译成大量的机器码。利用这些简单的指令,可以做很多事情了,包括处理额外的一些字符指令,并将其转换成机器码这样的事情,这样一来, 我们就可以使用这些简单的字符指令写一个处理额外字符指令的程序,利用初始版本的汇编器翻译成机器码,就得到了一个扩展版本的汇编器,该版本的汇编器与初始版本的汇编器相比,能处理更多的额外字符指令,通过多次迭代,最终可以得到一个比较完备的汇编器(能处理所有的汇编指令)。 这就是汇编器的来历。

有了汇编器,我们就可以使用汇编指令来编写各种汇编程序了。

我们发现,汇编器本身的最初版本(只能处理简单的汇编指令)是使用二进制机器码编写的,剩下的大部分(能处理额外的大部分汇编指令)都是使用汇编语言本身编写的。

所以, 我们看到, 在所有的汇编程序的世界中, 除了汇编器本身是由机器码和汇编码写的以外,汇编代码还可以用来实现很多的其它功能,例如很多系统级别的工具软件,其中就包括各种和硬件打交道的驱动程序等等, 以及各种编译器,例如:C语言编译器 。类似的,C编译器的核心也是由汇编语言写成的,甚至还可以包括一些机器码,但是大部分还是通过迭代来使用C语言编写的,C编译器能处理的数据结构和语言规则比汇编语言更丰富,更高级了,更接近人的可读性了,这些数据结构和语言规则就是C语言标准了。这样一来,就有了更多的选择,既可以选择机器码,汇编,也可以选择C语言来写程序了。

这样,使用C语言作为主要的语言,外加汇编语言作为各种底层驱动或者与硬件有关的部分的代码的编写,就可以写成很多系统管理的程序,慢慢地, 把这些程序集成起来, 就写成了各种操作系统的核心,包括windos linux/unix 等。windos linux/unix 等的核心都是由c语言,汇编语言来写成的。

有了操作系统的核心以后,我们就可以使用已有的语言来开发各种操作系统管理软件了,将这些合起来,就形成了操作系统。

有了操作系统以后,我们就可以使用已有的语言,写成更加高级的语言的编译器和各种sdk工具,这样,就得到了一种新的高级语言了, 我们以后写代码的时候就可以使用这种高级语言了,这样,从更高的层次来写代码,就会简化了很多底层的细节,大大提高了效率,当然,还是那句话,高级语言由于需要经过各个编译器的层层转换处理,性能会比较的低一些,而且离底层也越来越远,失去了对底层的控制,也就意味着如果想要进行更加细致的控制就不可能了,因为你能使用的智能是高级语言的编译器所能支持的语言规范了,所以,有时候, 在某些特殊情况下,还是有必要使用底层语言来实现一些特殊的功能的。

当然,这些选择各有优缺点,需要根据自己所需要实现的功能更强调哪一方面来选择不同的语言。 越是底层,实现同样的功能,能使用的数据结构和语言规则就越少, 所需的代码量就越大,就越难以写,但是,由于需要的转换和处理就更少,而且离底层硬件越近,所以性能也越快,所以,除非特别强调性能或者需要访问底层(例如直接访问硬件等),大部分情况下,是采用高层的语言来编写程序,经过各级编译处理以后最后转换成机器码来执行的。

这样一来,我们就可以使用已有的语言开发更加高级别的编译器,从而支持更加高级别的语言了。

例如C++编译器的核心就是使用C语言开发的,其中可能包括一些汇编代码,但是其完备版本仍然是经过多次迭代的C++来写成的。也就是说,C++编译器主要是由C++语言编写的,其初始版本(也就是核心)是由C语言外加一些汇编语言写成的。 这样,有了C++编译器,我们就可以有更多的语言选择了。 对于C++运行时环境,可以选择c语言或者汇编写,但是大部分还是由c++写成的。 当然, 开发C++编译器就像开发所有的编译器一样,各个不同的公司都可以来做这件事情, 这样就产生了很多种C++的编译器(就像有很多种汇编器和C语言编译器一样),比较著名的就有微软的Microsoft C++ Borland 公司的Borland C++等等。 这些c++编译器可能实现不同的C++语言的数据类型和语法,所以,后来。一个国际的标准机构就站出来制定了一个C++语言的标准,所有的编译器都实现这些标准,当然实际上,这些编译器除了实现C++标准以外,往往还会增加一些自己特殊的辅助功能, 也就是说,各个编译器都是可以用来编译符合规范的语言的,此外,这些不同的编译器可能还有各种不同的一些特色辅助功能,在编译代码的优化,性能方面可能还有一点点小的区别。 有了这些语言,我们就可以用它们来写各种程序了,包括这些语言的ide等。

类似的,我们现在有了汇编语言,C语言,C++语言, 就可以使用这些语言来开发各种其它的编译器了,例如Sun公司最开始就是完全使用C语言开发了java编译器javac 后来, 改成以就是使用c++开发javac的核心,外加java语言本身来开发了javac的其它大部分。

实际上也就是说,你可以使用任意的已有语言来开发新语言的编译器(一般是使用某种已有语言,至于选择哪种语言则根据需要可以随意选择,开发新编译器的核心部分,然后采用多层迭代的新语言来开发编译器的其它主要部分;当然,也可以完全使用已有语言来开发新的编译器),对于已有低级语言来说,新语言的编译器对低级语言的编译器来说,无非就是使用该低级语言写成的一个程序而已。所以, 我们不管看到什么高级语言,都会知道,该语言的编译器都是基于某种已有的低级语言加上该语言本身来写成的。然后,只要在操作系统上安装了该语言的编译器以及其所依赖的低级语言的编译器, 在该操作系统上就可以使用该新语言来开发各种程序, 包括更高级语言的编译器了。

例如: delphi的编译器是用的 C++编写的。PASCAL语言的编译器用C写的等等。

语言根据翻译的方式的不同,语言分为编译型语言和解释型语言,所有的脚本语言(例如:JAVASCRIPT,ASP,PHP,PERL等)都属于解释型语言,它由一个解释器(也叫解释引擎)来每次读入一句代码,翻译一句,执行一句,反复循环。而编译型语言则是将所有的代码一次性编译成可执行文件(exe),如何执行的。

参考:

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序。

 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

 解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。

 什么是脚本语言?

1.脚本语言(JavaScript,VBscript)介于HTMLC,C++,Java,C#等编程语言之间。

HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。

2.脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些.

3.与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。

注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。

4.脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在.

脚本语言不需要编译,可以直接用,由解释器来负责解释。

5.脚本语言一般都是以文本形式存在,类似于一种命令.

举个例子说,如果你建立了一个程序,aaa.exe,可以打开.aa为扩展名的文件.

你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言.

java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。下图说明了它是如何工作的:


可以把Java字节码看作运行在Java虚拟机(Java VM)上的机器代码指令。每中Java解释器,不管是Java开发工具还是可以运行Java小应用程序的Web浏览器,都是一种Java VM的实例。JavaVM也可以由硬件实现。

Java字节码使“写一次,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何Java VM上。例如,同一个Java程序可以运行在WindowsNTSolarisMacintosh上。

Java平台

 平台是程序运行的硬件或软件环境。Java平台与大多数其它平台不同之处在于它是运行于其它基于硬件平台的纯软件平台。大多数其它平台是硬件和操作系统的结合。

Java平台由两部分组成:

Java虚拟机(Java VM

Java应用程序界面(Java API

我们已经介绍了Java VM,它是Java平台的基础,可以移植到各种基于硬件的平台上。Java API是软件组件的集合,它们提供了很多有用的功能,如图

形用户界面(GUI)。Java API被分组为相关组件的库(包)。

 下图描述了一个运行在Java平台上的Java程序,如应用程序(application)或小应用程序(applet)。如图中显示的,JavaAPIVMJava程序从硬件依赖中分离出来。

作为一种独立于平台的环境,Java比本地代码慢一些。然而,聪明的编译器、很好地调制过的解释器和即时字节码编译器可以在不牺牲可移植性的条件下使Java的表现接近本地代码。

下面以java为例做详细说明。

然后,在OS核心的基础之上,使用C语言开发一些操作系统的工具(例如Linux/Unix下的很多GUN工具和很多的编译器)。 以Linux/Unix OS为例, 其核心都是使用汇编语言和C语言编写的,然后,基于核心,使用C语言,开发出了C++编译器和C++的运行时环境,有了C++编译器,就可以在该操作系统上使用C++语言来编写一些比较高级的工具软件了,例如,系统管理工具等。 开发出的这些C++代码经过

C++编译器编译以后, 在C++运行时环境中运行, 就可以提供系统管理工具给用户使用了。 同样, 用户自己也可以使用C++编写各种软件,然后类似的编译运行了。


高级语言的编译器可以用低级语言编写。C语言的编译器一般由汇编语言编写,汇编的只能由机器语言写

现代计算机系统内的编译器一般是这样写出来的,假定我们把这种语言成为L:

1)用低一级的语言L1编写一个最初版本的编译器CL2,用于编译高一级的语言L2(最低级的语言就是机器代码)

2)用最初版本的编译器CL2所支持的部分L2语言编写一个扩展版本的L2的编译器CL2

3)CL2编译CL2,得到优化版本的编译器。

4)迭代多次,得到完备版本的L2的编译器。

5)用最终版本的编译器编译所有的L2程序

对上述过程的解释:计算机的CPU只能处理二进制的机器码,内存中存放的也只能是二进制的符号,在最开始的时候,人们是使用机器码来写代码的(例如最初的打卡机),后来,用机器码写了一个程序,该程序能够读入一些简单的字符,并且将这些简单的字符经过处理后转换成二进制的机器码,放到计算机中去执行,这个就是最初的汇编器,它所能处理(翻译)的那些字符命令的集合就成为汇编语言; 有了这些基本的汇编字符指令,就可以使用这些指令来简化代码的编写了,例如:以前做同样的一个处理,用机器码需要写很多机器码,现在如果用等效的汇编指令写的话,值需要较少的指令,而且这些指令经过二进制的汇编器处理以后,就生成了一模一样的二进制机器码。

这样的话, 就可以利用这些仅有的指令,写一些汇编程序,实现一些功能了。利用这些汇编指令,我们可以写一些处理额外字符指令的汇编代码,这些代码结果二进制汇编器处理后,得到一个新的二进制程序,该程序将能够处理这些额外的字符指令,这就是一个扩展的汇编器,使用类似的迭代,就可以逐步完善汇编器的功能了。 所有的编译器都是如此的。

编译器说白了就是语言翻译,对于高级语言,你要想让它运行,那么必须有这种语言的编译器或解释器。

当汇编语言产生的时候,汇编器(用现在的观点来看,因为汇编器是一对一的,所以一般不称之为编译器了)是用机器语言写的。之后因为有了汇编器,那么就可以汇编语言来自举写更高一级语言的编译器了。

之后的编译器同理。


Linux Kernel的源代码有200多MB,编译以后大概有几十M,而整个的WindowsXP源代码有几个G呢,编译后大概有600M。


基于操作系统的软件的编写所使用的语言,那就很多了,不同的软件可能用不同的语言。

---------------------

作者:walkingmanc

来源:CSDN

原文:https://blog.csdn.net/walkingmanc/article/details/6367057

版权声明:本文为博主原创文章,转载请附上博文链接!



Last update: 2022-08-04|Pageview:1025
Research Blog: EC | EC_INFO | EC_WORK |


BypResearch