前端学习<四>JavaScript基础——01-编程语言和JavaScript简介

计算机语言

概念

计算机语言:人与计算机之间通信的语言。它是人与计算机之间传递信息的媒介,它通过特定的语法规则和语义约定,将人类可理解的指令转化为计算机可以执行的机器指令。

计算机程序:就是计算机所执行的一系列的指令集合,程序全部都是用我们所掌握的语言来编写的,如果我们要控制计算机,就需要通过计算机语言向计算机发出指令。

计算机语言的分类

计算机语言的种类非常多,总的来说可以分成三大类:机器语言、汇编语言和高级语言。他们之间的转换过程如下:

计算机最终所执行的都是机器语言,它是由“0”和“1”组成的二进制数,二进制是计算机语言的基础。

计算机语言的范围比编程语言的范围更广,后者是前者的子集。比如:

  • HTML 是标记语言,CSS 是样式语言,这两个是属于计算机语言;但不属于编程语言,因为它们编写出来的不是程序,只是简单的标记和样式。

  • JavaScript 是属于编程语言,当然也属于计算机语言

计算机语言的分类如下:

image-20231001002948987

从机器语言到汇编语言,再到高级语言,这些语言的发展越来越高级,编写方式越来越接近人的思维。我们来具体看看这三种计算机语言的发展历史。

机器语言

计算机的存储单元只有0和1两种状态。

将数字0和1按照一定的规律组成的编码称为机器码,也称为二进制编码或者机器指令或者计算机指令。用这些机器指令所编写的程序称为机器语言

机器语言的优点是可以直接被计算机识别、直接操作硬件、不需要经过编译解析、程序的执行效率很高;缺点是可读性差、可维护性差、出错概率高。

现如今,几乎没有人用这种方式编程。

汇编语言

对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性和维护性的问题,就诞生了汇编语言。

汇编语言:是二进制指令的文本形式,与指令是一一对应的关系,比如,加法指令00000011写成汇编语言就是 ADD;汇编语言使用助记符(Mnemonics)来代替和表示特定低级机器语言的操作。

汇编语言经过汇编器,可翻译成机器语言,进而被 CPU 直接执行,所以汇编语言是最底层的低级语言。

不同的硬件系统有不同的汇编语言语法。换而言之,每一种特定的汇编语言和其特定的机器语言指令集是一一对应的。汇编语言的常见的应用场景有:操作系统内核、驱动程序、单片机程序等。

举例:用汇编语言写一个简单的加法程序“3+5=8”,加数和结果分别存在内存单元NUM1、NUM2、NUM3中。

代码实现:

 data segmentnum1 db 3num2 db 5num3 db ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov al,num1add al,num2mov num3,almov ax,4c00hint 21hcode endsend start

高级语言

高级语言更接近人的思维方式。

优点是可读性好、易于理解;上手门槛低,无需熟悉硬件知识即可进行编程入门的学习;很多高级语言可跨平台兼容,具备可移植性,在不同的机器上运行。

缺点是无法直接被计算机硬件识别,需要通过编译器翻译为机器语言后,才能在计算机上运行。

编译器的作用,就是将高级语言写好的程序,翻译成一条条机器指令。

编程语言

概念

编程:让计算机为解决特定的问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。

编程语言:是一种用于编写计算机程序的形式化语言。它定义了一套语法和规则,用来描述计算机程序的结构和逻辑,并精确定义了在不同情况下需要执行的行为。编程语言通过编写程序代码,将人类的思想和需求转化为计算机可以理解和执行的指令。不同的编程语言有不同的特点和用途,这些特点至少有:

  • 数据结构和算法、数据处理

  • 流程控制(if语句、循环语句等)

  • 引用机制和重用机制

  • 设计思想

不同的编程语言有不同的语法,需要遵守。常见的编程语言有 C 语言、C++、Java、JavaScript、Python 等。

如今通用的编程语言大致可以分成两类:高级语言和汇编语言

  • 高级语言:主要是相对于低级语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,比如:C 语言、C++、Java、C#、PHP、JavaScript、Python、Objective-C、Swift、Go 语言等。

  • 汇编语言:与机器语言实质是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,容易识别和记忆。

编程语言的发展

从汇编语言发展到现在,编程语言层出不穷,具体数目已无法考证,比较流行的有超过200种以上。

比如在1958年发明的 Lisp 语言,历史悠久(是世界上第二个发明出来的语言,只比 FORTRAN 语言晚一年),现在仍然非常流行,是人工智能领域最受欢迎的编程语言。《黑客与画家》这本书的作者也十分推崇 Lisp 语言。

编译型语言 VS 解释型语言

翻译器

计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所编写的高级语言翻译成机器语言,计算机才能执行程序。为此,我们需要一个翻译器。程序语言翻译成机器语言的工具,被称为翻译器

由此可见,所谓的“翻译”,指的是将人类所编写的源代码转换(翻译)为机器能够执行的指令,这也被称为二进制化。

翻译器翻译的方式有两种:一种是编译,另一种是解释。两种方式之间的区别在于翻译的时机不同。

  • 编译器:在代码执行之前,事前把所有的代码一次性翻译好,生成中间代码文件,然后整体执行。

  • 解释器:边翻译,边执行(在代码执行时进行及时翻译,并立即执行)。当编译器以解释的方式运行时,也称之为解释器。

对应的语言,称之为“编译型语言”、“解释型语言”。

1、编译型语言

  • 定义:需要事先通过编译器把所有的代码一次性翻译(编译/转换)好,然后整体执行。比如 exe 文件。

  • 优点:执行效率高,运行更快。

  • 不足:移植性不好,不跨平台;编译之后如果需要修改就需要整个模块重新编译。

  • 编译型语言举例:C、C++

比如,C 语言的代码文件是.c后缀,翻译之后文件是.obj后缀,系统执行的是 obj 文件;再比如, java 语言的代码文件是.java后缀,翻译之后的文件是.class后缀。(但是,Java 语言不是严格的 编译型语言,这个稍后讲)

以 C 语言的hello.c来举例:

 #include <stdio.h>int main(int argc, char const *argv[]){printf("Hello world!");return 0;}

对于以上 C 语言代码,main 是程序入口,实现的功能是打印字符串hello world到屏幕上,编译和执行过程如下:

  1. C 语言代码经过预处理(比如依赖处理、宏替换)。以上方代码示例,#include<stdio.h>会在预处理阶段被替换。

  2. 编译:编译器会把 C 语言翻译成汇编程序。一条 C 语言通常被编译为多条汇编代码,同时编译器会对程序进行优化,生成目标汇编程序。旁征博

  3. 汇编语言通过汇编器再汇编成目标程序hello.o

  4. 链接:程序中往往包含一些共享目标文件,如示例代码中的printf()函数位于静态库,需要经过链接器进行链接。

20211030-0031-2

(上方图片来源:JavaScript 基础-基本概念 )

20211030-0026-2

(上方图片来源:编译型语言 )

2、解释型语言

  • 定义:在运行过程中(runtime)通过解释器边翻译边执行,也就是逐行翻译。不需要事先一次性翻译,而是在运行时,边翻译变执行(翻译一行,执行一行)。

  • 优点:移植性好,跨平台。

  • 缺点:运行速度不如编译型语言。

  • 解释型语言举例:JavaScript、PHP、Python。

为什么 JS 是解释型语言呢?这和浏览器的工作原理有关。浏览器中有一个专门的“JS 解析器”可以让 JS 边解析边执行。

由于少了事先编译这一步骤,所以解释型语言开发起来尤为方便,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了 JIT 技术,使得运行速度得以改善。

Java 语言

Java 语言是属于半编译半解释型语言。翻译过程:

(1)编译:.java代码文件先通过 javac 命令编译成.class文件。

(2)执行:.class文件再通过 jvm 虚拟机,解释执行。有了 jvm 的存在, java 就可以跨平台了。

JavaScript 的历史和发展

JavaScript 的历史

1、JavaScript 诞生于1995 年,是由网景公司(Netscape)的员工 Brendan Eich(兰登 • 艾奇,1961 年~)发明,最初命名为 LiveScript。1995 年 12 月与 SUN 公司合作,因市场宣传需要,为了蹭 Java 的热度,改名为 JavaScript。

发明这个语言的背景是这样的:1994 年网景公司发布历史上第一个比较成熟的浏览器(Navigator 0.9), 但是只能浏览不能交互。1995 年为了解决表单有效性验证就要与服务器进行多次地往返交互问题,网景公司录用 Brendan Eich(兰登 • 艾奇),他只用了 10 天就设计并研发出 一种网页脚本语言——LiveScript 语言的第一版。

由于 Sun 公司当时的 Java 语言特别火,所以为了傍大牌,就借势改名为 JavaScript。Java 和 JavaScript 的关系,就好比:雷锋和雷峰塔的关系、老婆和老婆饼的关系、北大和北大青鸟的关系。“北大青鸟”就是傍“北大”的大牌。

JavaScript 是 Sun 公司注册并授权给 Netscape 使用的商标。后来 Sun 公司被 Oracle 收购,JavaScript 版权归 Oracle 所有。

1996 年,微软为了抢占市场,推出了JScript在 IE3.0 中使用。

ECMAScript 标准

ECMAScript 是一种由 ECMA 组织制定和发布的脚本语言规范。

1996 年 11 月网景公司向 ECMA(European Computer Manufacturers Association,欧洲电脑制造商协会,属于国际标准化组织)提交了 JS的语言标准,将其成为国际标准,以此对抗微软。

  • ECMA 的技术委员负责制定和审核这个标准,成员由业内的大公司派出的工程师组成。该委员会定期开会,所有的邮件讨论和会议记录,都是公开的。

  • 1997年7月,ECMA 组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言规范称为 ECMAScript,这个版本就是 ECMAScript 1.0 版。简而言之,ECMA-262是一份标准文件,定义了 ECMAScript 这个语言规范。

  • JavaScript 成为了 ECMAScript最著名的实现之一。ECMAScript 和 JavaScript 的关系是,前者是后者的语法规范,后者是前者的一种实现。

  • 除此之外,ActionScript 和 JScript 也是遵守 ECMAScript 规范的语言。

  • ECMAScript 只用来标准化 JavaScript 这种语言的基本语法。与部署环境相关的标准则由其他标准规定,比如 DOM 的标准就是由 W3C组织(World Wide Web Consortium)制定的。

同时期还有其他的网页语言,比如 VBScript、JScript 等等,但是后来都被 JavaScript 打败了,所以现在的浏览器中,只运行一种脚本语言就是 JavaScript。JavaScript 是世界上用的最多的脚本语言

JavaScript 是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以 ECMA 组织,牵头制定了 JavaScript 的标准,取名为 ECMAScript。

简单来说,ECMAScript 不是一门语言,而是一个标准。ECMAScript 规定了 JS 的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套 JS 语法工业标准。

ECMAScript 在 2015 年 6 月,发布了 ECMAScript 6 版本(ES6),语言的能力更强,包含了很多新特性。

JavaScript语言是个大杂烩

Brendan Eich 这位天才只用了10天就设计出了 JS,但这门语言当时更像是一个大杂烩:

  • 基本语法:借鉴 C 语言和 Java 语言。

  • 数据类型和数据结构:借鉴 Java 语言,包括将值分成原始值和对象两大类。

  • 函数:借鉴 Scheme 语言和 Awk 语言,将函数当作第一等公民,并引入闭包。

  • 基于原型的继承机制:借鉴 Self 语言(Smalltalk 的一种变种)。

  • 正则表达式:借鉴 Perl 语言。

  • 字符串和数组处理:借鉴 Python 语言。

由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。所以,Javascript语言实际上是两种语言风格的混合体:(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

十八世纪英国文学家约翰逊博士有一句名言说得好:“这个作品是好的,也是原创的,它的优秀之处并非原创,它的原创之处并不优秀。”(It is both good and original; but the part that is good is not original, and the part that is original is not good.)

后来,随着ES6语法的不断改进,JS语言越来越优秀。ECMA 和 ECMAScript 赋予了 JavaScript 新的能力和活力。

JavaScript 的发展:蒸蒸日上

2003 年之前,JavaScript 被认为“牛皮鲜”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是 JavaScript 开发的。所以很多浏览器就推出了屏蔽广告功能。

2004 年,JavaScript 命运开始改变。那一年,谷歌公司开始带头使用 Ajax 技术,Ajax 技术就是 JavaScript 的一个应用。并且,那时候人们逐渐开始提升用户体验了。Ajax 有一些应用场景。比如,当我们在搜索引擎框搜文字时,输入框下方的智能提示,可以通过 Ajax 实现。比如,当我们注册网易邮箱时,能够及时发现用户名是否被占用,而不用跳到另外一个页面。从 2005 年开始,几乎整个 B/S 开发界都在热情地追捧 Ajax。

2007 年乔布斯发布了第一款 iPhone,这一年开始,更多的用户使用移动设备上网。这一年,互联网开始标准化,按照 W3C 规则三层分离,JavaScript 越来越被重视。JavaScript 在移动页面中,也是不可或缺的

2010 年,人们更加了解HTML5 技术HTML5 推出了一个东西叫做 Canvas(画布),工程师可以在 Canvas 上进行游戏制作,利用的就是 JavaScript。

2011 年,Node.js 诞生,使 JavaScript 能够开发服务器端的程序。

如今,WebApp已经非常流行,也就是用网页技术开发手机应用。手机系统有 iOS、安卓。公司如果要开发一个“美团”App,就需要招聘四队人马:iOS 工程师 10 人、安卓工程师 12 人,前端工程师 8 人、后端工程师 16 人,共 50 人左右,开发成本巨大;而且如果要做需求迭代,就要改 3 个版本。现在,假设公司都用 web 技术,用 html+css+javascript 这一套技术就可以开发多种终端的页面。也易于迭代(网页如果改变,则所有的终端都会生效)。

有个故事是这么说的:

2040 年,某年轻产品经理说:有没有那么一个东西,不需要下载客户端,不需要限制品牌系统,无论是鸿蒙、安卓苹果,Linux 和 Windows 等等都能实现,无差别预览信息。用户也能在这里交流,如果我们开发出来这个,我们这个产品的前景一定十分宽广。

这时候一位 40 岁的老同志说:你说的这个是不是叫网页?

这是半个世纪前就有的。

虽然目前 WebApp(Web 应用)在功能和性能上的体验远不如 Native App(原生应用),但是“在原生 App 中内嵌一些 H5 页面”已经是一种趋势。

JavaScript 的发展,正在大放异彩,正如周爱民的《JavaScript 语言精髓与编程实战》中所描述的那样:

是 ECMA 赋予了 JavaScript 新的能力和活力。

在 2015 年 6 月,ES6 发布了。这个 ECMAScript 版本几乎集成了当时其他语言梦寐以求的所有明星特性,并优雅地、不留后患地解决了几乎所有的 JavaScript 遗留问题—当然,其中那些最大的、最本质的和核心的问题其实都已经在 ES5 推出时通过“严格模式(strict mode)”解决了。

ES6 提出了四大组件:Promise、类、模块、生成器/迭代器。这事实上是在并行语言、面向对象语言、结构化语言和函数式语言四个方向上的奠基工作。相对于这种重要性来说,其他类似于解构、展开、代理等看起来很炫很实用的特性,反倒是浮在表面的繁华了。

主流引擎厂商开始通过 ES6 释放出它们的能量,于是 JavaScript 在许多新的环境中被应用起来,大量的新技术得以推动,例如,WebAssembly、Ohm、Deeplearn.js、TensorFlow.js、GPU.js、GraphQL、NativeScript 等。有了 Babel 这类项目的强大助力,新规范得以“让少数人先用起来”,而标准的发布也一路披荆斩棘,以至于实现了“一年一更”。

JS的应用越来越广泛

JS正在越来越多的场景和环境中得到应用,具体包括:

  • Web端网页

  • H5页面(即移动端网页)

  • 小程序开发、公众号开发

  • 跨端开发:Taro、ReactNative、Weex 等框架

  • PC客户端/桌面应用开发:Electron 框架。比如 VS Code、Typora等软件就是基于 Electron 框架进行开发的。

  • 后端开发:Node.js

JavaScript语言的介绍

JavaScript 入门易学性

  • JavaScript 对初学者比较友好。可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序。

  • JavaScript 是有界面效果的(相比之下,C 语言只有白底黑字)。

  • JavaScript 的入门较简单(进阶不易)。比如,JS 是弱变量类型的语言,变量只需要用 var/let/const 来声明。而 Java 中变量的声明,要根据变量的类型来定义。

Java 中需要这样定义变量:

 int a;float a;double a;String a;boolean a;

而 JS 中,只需要用一种方式来定义:

 // ES5 写法var a;​// ES6 写法const b;let c;

JavaScript 既是前端语言,又是后端语言

当 JavaScript 运行在用户的终端网页,而不是运行在服务器上的时候,我们称之为“前端语言”。前端语言是服务于页面的显示和交互,不能直接操作数据库。

后端语言是运行在服务器上的,比如 Java、C++、PHP 等等,这些语言都能够操作数据库(对数据库进行“增删改查”),并在后台执行各种任务。

另外,Node.js 是用 JavaScript 开发的,我们也可以用 Node.js 技术进行服务器端编程。

JavaScript 的组成

JavaScript 基础分为三个部分:

  • ECMAScript:JavaScript 的语法标准。包括变量、表达式、运算符、函数、if 语句、for 语句等。

  • DOM:Document Object Model(文档对象模型),JS 操作页面上的元素(标签)的 API。比如让盒子移动、变色、改变大小、轮播图等等。

  • BOM:Browser Object Model(浏览器对象模型),JS 操作浏览器部分功能的 API。通过 BOM 可以操作浏览器窗口,比如弹框、控制浏览器跳转、获取浏览器分辨率等等。

通俗理解就是:ECMAScript 是 JS 的语法;DOM 和 BOM 是浏览器运行环境为 JS 提供的 API。

JavaScript 的特点

1、解释型语言。 2、遵守ECMAScript 标准。 3、单线程。

参考链接

  • 编程语言的一些概念

pl_history

  • 编程语言70年:谁是世界上最好的编程语言?

img

  • 汇编语言(转) | Xian Rong

赞赏作者

创作不易,你的赞赏和认可,是我更新的最大动力:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关联对象介绍

关联对象的作用 在分类里面&#xff0c;不可以直接为分类添加属性 在代理中&#xff0c;不可以直接为代理添加属性 在普通类中&#xff0c;property (assign, nonatomic) int age; 会做三件事&#xff1a; 生成age的成员变量生成age的get、set方法的声明生成age的get、set方…

使用 Docker 部署 Puter 云桌面系统

1&#xff09;Puter 介绍 :::info GitHub&#xff1a;https://github.com/HeyPuter/puter ::: Puter 是一个先进的开源桌面环境&#xff0c;运行在浏览器中&#xff0c;旨在具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境&#xff0c;也可以作为云存储服…

codeforces Edu 142 D. Fixed Prefix Permutations 【思维、字典树求LCP】

D. Fixed Prefix Permutations 题意 给定 n n n 个长度为 m m m 的排列 a 1 , a 2 , . . . a n a_1,a_2,...a_n a1​,a2​,...an​ 定义一个排列 p p p 的 价值 为 最大顺序长度 k k k&#xff1a; p 1 1 , p 2 2 , p 3 3 , . . . p k k p_1 1,p_2 2, p_3 3, ...…

在编程中使用中文到底该不该??

看到知乎上有个热门问题&#xff0c;为什么很多人反对中文在编程中的使用&#xff1f; 这个问题有几百万的浏览热度&#xff0c;其中排名第一的回答非常简洁&#xff0c;我深以为然&#xff1a; 在国内做开发&#xff0c;用中文写注释、写文档&#xff0c;是非常好的习惯&…

【适用于福彩3D和体彩排列3】012路直选代码对照表

在我的第6套算法中&#xff0c;我用自己搭建的AI模型&#xff0c;对012路直选进行了预测&#xff0c;但是由于没有对照表&#xff0c;导致很多朋友无法看懂预测结果。众所周知&#xff0c;对于012路直选&#xff0c;共计27种组合方式。我自己进行了组合分类&#xff0c;并赋予相…

LeetCode 209 长度最小的子数组(滑动窗口,双指针实现)

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&…

[C/C++] -- 二叉树

1.简介 二叉树是一种每个节点最多有两个子节点的树结构&#xff0c;通常包括&#xff1a;根节点、左子树、右子树。 满二叉树&#xff1a; 如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。深度为k&a…

创研杯赛事:激发英语热情,助力人才培养

2024 中国翻译协会年会期间&#xff0c;知名赛事活动平台赛氪承办的“AI 科技时代竞赛与就业”分论坛&#xff0c;于 3 月 30 日下午在长沙圆满落幕。其中值得瞩目的是&#xff0c;第三届”创研杯“大赛也在本次会议上进行了启动。 创研杯赛事由空中英语教室杂志社发起主办&am…

【解决问题】排查linux文件手动删除文件,但是文件标记为deleted,资源未释放

背景&#xff1a; 生产环境我们把程序生成的数据文件手动删除后&#xff0c;但是空间并没有释放&#xff0c;导致硬盘被占用&#xff0c;不够用 问题排查&#xff1a; 1.查看占用文件状态 使用命令&#xff1a; lsof | grep deleted 查看 文件已经删除了&#xff0c;但是都是…

C语言 | Leetcode C语言题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; char* longestPalindrome(char* s) {int lenstrlen(s),max0;int p0;for(int i0;i<len;i)//这种是判断奇数回文{int lefti-1,righti1;//left左边&#xff0c;right右边while(left>0&&right<len&&s[left]s[right]){/…

10.图像高斯滤波的原理与FPGA实现思路

1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波   高斯滤波(Gaussian filter)包含很多种&#xff0c;包括低通、高通、带通等&#xff0c;在图像上说的高斯滤波通常是指的高斯模糊(Gaussian Blur)&#xff0c;是一种高斯低通滤波。通常这个算法也可以用来模…

FME学习之旅---day19

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 如何使用 Esri 模板地理数据库 在学习之初&#xff0c;首先了解什么是Esri模板、如何使用Esri模板以及如何创建Esri模板 有两种类型的 Esri 模板&#xff1a;文件地理数据库 &#xff08;.gd…

环信IM集成教程——Web端UIKit快速集成与消息发送

写在前面&#xff1a; 千呼万唤始出来&#xff0c;环信Web端终于出UIKit了&#xff01;&#x1f389;&#x1f389;&#x1f389; 文档地址&#xff1a;https://doc.easemob.com/uikit/chatuikit/web/chatuikit_overview.html 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开…

DLL导出API注意事项

文章目录 问题原则示例一解决方案 示例二解决方法 参考 问题 在 windows 平台下&#xff0c;如果在动态库的接口中使用 std::string 或其它 std 容器&#xff0c;会导致崩溃或其它内存问题&#xff0c;所以一般要求动态库的接口必须是 C 语言实现。 原则 一个原则&#xff1a;…

专题三_二分查找(3)

目录 153. 寻找旋转排序数组中的最小值 解析 题解 LCR 173. 点名 解析 题解 153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int findMin(vector<int>& nums) …

【OpenCV】 基础入门(一)初识 Mat 类 | 通过 Mat 类显示图像

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

30-ORM:CURD神器GORM包介绍及实战

目前&#xff0c;GitHub上 star数最多的是GORM&#xff0c;它也是当前Go项目中使用最多的ORM。 GORM基础知识介绍 GORM是Go语言的ORM包&#xff0c;功能强大&#xff0c;调用方便。像腾讯、华为、阿里这样的大厂&#xff0c;都在使用GORM来构建企业级的应用。 功能全。使用O…

从零开始:Flutter应用上架iOS的完整流程解析

引言 &#x1f680; Flutter作为一种跨平台的移动应用程序开发框架&#xff0c;为开发者提供了便利&#xff0c;使他们能够通过单一的代码库构建出高性能、高保真度的应用程序&#xff0c;同时支持Android和iOS两个平台。然而&#xff0c;完成Flutter应用程序的开发只是第一步…

Linux安装Apache保姆级教程

文章目录 前言一、安装Apache1.安装Apache2.开启服务3.查看服务的状态4.网络请求测试5.将服务设置为自启 二、外部电脑访问Apache设置方法一&#xff1a;关闭防火墙方法二&#xff1a;添加防火墙端口&#xff08;Apache默认端口&#xff1a;80&#xff0c;如果修改了Apache端口…

边缘网关在智能制造工厂中的创新应用及其带来的显著成效-天拓四方

在数字化浪潮席卷之下&#xff0c;智能制造工厂正面临着前所未有的数据挑战与机遇。边缘网关&#xff0c;作为数据处理与传输的关键节点&#xff0c;在提升工厂运营效率、确保数据安全方面发挥着日益重要的作用。本文将通过一个具体案例&#xff0c;详细阐述边缘网关在智能制造…