JavaScript编程知识总结

JavaScript编程知识总结:

解释型语言和编译型语言

计算机语言概念

计算机只能识别机器语言,而我们平常遇到的编程语言一般都是高级语言;计算机是不能直接识别的,所以需要编译器对高级语言进行解释成机器语言。这样计算机才能执行高级语言的指令;

  1. 解释型语言:在程序运行时进行代码解释,它不需要编译。有专门的解释器,所以只要有相应的解释器可以在任何系统上运行,也就是跨平台性;例如解释型Java,我们每一次保存代码,都要翻译一次,所以效率比较低;
  2. 编译型语言:直接将目标源代码一次性编译成机器可以执行的(.exe .dll .ocx),也就是以后要运行就不需要重新编译了,直接执行就OK;不像解释型语言,一条条解释执行源代码。所以编译型语言执行效率高,同时编译型语言但是不能跨平台。例如Delphi,C++,ASM,C是直接编译成exe文件并且自带条件编译功能。
堆栈基本了解:

“堆栈”:堆(stack)栈(heap)是一种数据结构;它们是两个不同的概念;堆(heap)是没有具体结构,数据随意存放(也就是无序的);栈(stack)有具体结构的,数据是按照相应的顺序存放,而且数据大小确定的;栈的执行方式是先进后出,后进先出;类似于叠积木,从上面叠加积木,也只能从上面拿走积木;
在内存中一般会分配堆(heap)和栈(stack)两种存储空间,用来存储相应的数据;根据“栈具有结构性,数据大小确定性,数据排序有序性;堆没有结构,数据大小不确定,数据顺序随意”可知存储数据的规则;基本类型的数据局部变量一般存放在栈中;对于对象,数组之类的数据内容存放在堆中,数据地址存放在栈中,栈具有结构性,所以寻址效率快;
在JavaScript中,基本类型的变量直接存储在栈(stack)中;(说明:JavaScript中的全局变量其实也是数据window对象的局部变量);Array,Object类型数据存储在堆中,数据地址存放在栈中;

JavaScript垃圾回收机制:

在JavaScript中有自动回收机制,对于函数内的局部变量,如果函数执行完毕(脱离了该函数内的执行环境),就会回收内存;对于全局变量,主要观察是否有其他程序对全局变量的引用,如果没有引用,就会回收内容;也可以通过初始化null来进行回收内容;设置null是为了解除引用不是自动回收该值所占用的内存,而是让值脱离执行环境,以便GC(Garbage Collection)垃圾回收机制下次运行时将其回收;

JavaScript单线程机制:

单线程特点就决定了JavaScript对主线程上(严格来说就是一个线程,没有主次之分)的任务的操作模式是一对一的形式,也就是一次只能执行一个任务;该特点的优点就是执行环境简单,容易实现,对于DOM对象操作简单性,一致性(例如有两个线程同时操作同一个DOM对象,那么以哪个线程里的操作为准呢?);缺点就是如果在主线程遇到耗时任务会导致堵塞后续需要等待执行的程序,也就会造成浏览器假死和崩溃的问题;对于耗时操作怎么办?异步操作和HTML5的worker特性;

JavaScript异步任务执行机制:

在JavaScript中,遇到需要执行的异步任务,先将该异步任务挂起,放到任务队列(队列的特性:有序的,先进先出)里面,然后执行完行主线程内的任务;执行完主线程的任务后,系统才会去读取任务队列面的异步任务;任务队列里面的异步任务执行顺序,再不考虑时间的情况下(setTimeout()和setInterval()定时初始值为0),执行顺序是先进先出;代码如下:

以上代码可知:Promise异步对象先执行,然后再执行setTimeout()定时任务里面的回调函数;注意并不是代码在上面的先执行顺序来定的,根据程序所在的执行环境有关;在任务队列中是先进先出,程序自上而下执行,所以Promise对象属于后
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4)主线程不断重复上面的第三步。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值