精华内容
下载资源
问答
  • 代码的执行原理

    千次阅读 2020-07-18 10:38:12
    介绍了代码的基本执行原理代码执行的步骤以及执行上下文的工作方式。 希望这些对大家有所帮助。由于是自己学习的总结,所以有不对的地方欢迎指正。

    代码的执行原理

    一、代码段

    什么是代码段:一个script标签就是一个代码段。
    

    JS代码在执行时,是一个代码段一个代码段执行。

    二、代码执行的步骤

    • JS代码在执行时分两个阶段:
    • 1)预编译
    • 2)代码执行
      每一个阶段做的事情是不一样的。
    先了解一下定义变量和声明变量:
        通过var定义变量:var a = 110;   定义 = 声明+赋值
        f();:使用function声明了一个函数;函数名是f  函数值是{};定义了一个函数f()
        通过var声明变量:var a = 110;  说的声明仅仅是说var a   后面是赋值
    

    1)预编译: 提升
    把加var的变量进行提升:变量声明会提升,变量的赋值是不会提升。
    提升是提升到代码段最前面
    把使用function声明的函数进行提升 提升的是整个函数

    2)代码的执行:一行一行执行

    eg:console.log(a); var a = 110; console.log(a);

    • 输出:undefiend 和 110;

    执行步骤: 1)提升:因为a是var进行声明的,所以要进行提升。提升只是提升了声明并没有提升变量的值,所以现在a是undefiend。
    2)执行:第一行代码得到的是a的提升值,所以是undefiend,第二行将值110赋值给了a,所以当前a为number数据类型,值为110。因此第三行代码将a的值110输出。

    三、初步了解执行上下文( Execute Context)

    执行上下文( Execute Context):

    为了方便,以后我们统一将执行上下文简称为:EC

    • EC的作用:给代码提供数据

    代码分两类:

    • 全局代码 函数外面的代码叫全局代码
    • 函数代码 一个函数就是一个局部代码
    • 全局执行上下文:
      全局代码在执行时时,就会产生全局的EC。 EC(G)
      例如:全局执行上下文
    • 局部执行上下文:
      函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。在这里插入图片描述
    • EC栈:
      栈:杯子
      每产生一个EC就会放到杯子中,说白了,就是杯子中放鸡蛋。
      栈:先放进去的后出来
      在这里插入图片描述

    执行上下文详解

    我们知道,当代码执行的时候随之就产生了一个叫执行上下文的东西,也就是他使我们得到了最后的数据。
    但是,执行上下文是怎么执行的呢?让我们一起探究一下吧!
    

    我们知道,当代码进行执行的时候,必然要遵守的规则,于是他必然要经过预编译然后执行。
    (何为预编译前面已经介绍,就不在讲解了。)
    要用到的相关名称:ECStack:(Execute context stack):执行上下文栈
    EC(G)(Execute context (globle):存放全局变量的执行上下文:包含:var 定义的全局变量,引用数据类型)
    **EC(f)😗*函数f执行时产生的执行上下文
    GO(globle object):存放全局对象
    VO(varibale object):var创建的全局变量对象和引用数据类型对象
    AO:var创建的局部数据对象(如果对数据对象不熟悉,可以访问:JS中的数据类型及转换)

    注意:数据在EC(G)中,就一定在GO中,反之不一定

    具体步骤如下:

    • 1、在预编译的时候就产生了一个叫ECStack的大容器,他的里面放了EC(G)。EC(G)中有个VO用来存放提升的数据(提升了的变量的声明)。
    • 2、提升完毕,开始一步步执行代码。
      1)执行代码,给VO里面的变量进行赋值
      2)当调用函数的时候就会产生一个EC(f),每调用一次就产生一个EC(f),步骤:先对函数进行形参的赋值,然后看有没有提升,如果有提升,将其保存在AO中,然后进行执行,如果里面还有函数重复当前步骤。
      看几个例子了解一下吧!在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • Simulink 自动代码生成原理

    千次阅读 2018-06-12 22:05:50
    典型的 Simulink 用户通常都是,用Simulink设计好算法后,做到生成源代码这一步。然后把生成的算法的.c .h 源代码拷贝到自己的工程目录下(比如 CCS或者CodeWarrior 或者 VC ),去做编译。 但是也有部分人希望把编译...

    如下图,Simulink模型会先变成一个文本式的 .rtw 模型描述文件,然后再变成 .c,.h,最后编译为最终目标文件。

    image

    典型的 Simulink 用户通常都是,用Simulink设计好算法后,做到生成源代码这一步。然后把生成的算法的.c .h 源代码拷贝到自己的工程目录下(比如 CCS或者CodeWarrior 或者 VC ),去做编译。

    但是也有部分人希望把编译下载的工作也集成到 MATLAB/Simulink 里面来,实现“一键编译下载”。这样对于开发人员来说就方便很多,但是后面就增加了很多的基础工作需要去做,比如自定义编译过程,以及将底层驱动集成到 Simulink 环境中去。

    展开全文
  • 自己实现的编译原理的词法分析器,是自己的实验作业,用Vs2017实现,可以直接运行,代码注释丰富,希望与大家交流学习!欢迎大家下载!
  • R语言igraph包编写网络分析代码原理和代码例子,怎么在中国知网上搜索相关的论文呢。表示自己查不到,有详细的技术路线更好
  • ARM Cortex-M底层技术(二)启动代码原理分析

    千次阅读 多人点赞 2018-03-10 16:13:47
    ARM Cortex-M底层技术(二)Cortex-M启动代码原理分析写在前面的话: 近些年来ARM Cortex-M阵营各厂商(ST、NXP、ATMEL、Freescale……)发布新产品的节奏越来越快,以及微控制器应用普及程度的加深,越来越多的...

    ARM Cortex-M底层技术(二)Cortex-M启动代码原理分析

    写在前面的话:

        近些年来ARM Cortex-M阵营各厂商(ST、NXP、ATMEL、Freescale……)发布新产品的节奏越来越快,以及微控制器应用普及程度的加深,越来越多的开发者把更多精力投注在应用层开发上,花在对底层技术上的时间越来越少。小编我希望借助我之前对底层的一些积累,可以帮到大家快速的建立对Cortex-M系列处理器(M0/M0+/M3/M4/M7以及新的M23/M33)的底层技术:芯片内核、编译器/开发环境底层、底层软件、调试技术等的快速积累,可以帮助大家更好、更快、更可靠的开发产品。

    Cortex-M启动代码原理分析

            这里以NXP的LPC54608的启动代码startup_LPC54608.s文件为例,分析其启动代码原理。
            选用LPC54608原因,没什么特别原因,手边刚好有这货的板子,而且这颗片子刚发布不久,功能还蛮全的,LCDC、Ethernet、USB-HOST、外部总线……神马的很多外设都有,所有Cortex-M系列的MCU启动代码都大同小异,基本上搞定一个其他的都可以以此类推,当然搞懂启动代码没太大意思,之后我们可以动手一起写一个自己版本的启动代码。你会发现当你要自己写启动代码时,我们会遇到一系列底层的问题,不动手实干一下是不知道的。不废话了,开始吹NB~
            ARM Cortex-M系列MCU的启动代码(使用汇编语言编程则不需要)主要做3件事情:
            1、初始化并正确放置异常/中断向量表;
            2、分散加载;
            3、初始化C语言运行环境(初始化堆栈以及C Library、浮点等)。
            startup_LPC54608.s启动代码的简要说明大致如下(代码中省略若干雷同部分):


        上面我们能看到的启动代码主要是完成了 初始化并正确放置异常/中断向量表的工作,C Library初始化以及分散加载的工作是在__main()中完成的,__main()中的代码我们是看不到的,在Keil的根目录下我们可以找到对应的文件,但是我们看不到源码,但是我们可以通过跟踪汇编代码大概看到__main()中的代码。比如这样~
            1、__main()中运行的具体代码会根据不同的工程配置以及用户程序的不同有细微改变;
            2、Keil版本的变更也会导致__main()中运行代码发生改变,但很细微;
            以Keil5.24版本为例我大概抓了一下__main中内容如以下两图所示,这里__main中代码流程的不同主要是由是否勾选了MicroLib来决定的。
            
             microlib 是缺省 C 库的备选库。它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。这些应用程序不在操作系统中运行。 microlib 进行了高度优化以使代码变得很小。它的功能比缺省 C 库少,并且根本不具备某些 ISOC 特性。某些库函数的运行速度也比较慢,例如, memcpy()
     

    microlib是缺省C库的备选库。它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。这些应用程序不在操作系统中运行。microlib进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢,例如,memcpy()

    microlib与缺省C库之间的主要差异是:

        l  microlib不符合ISO C库标准。不支持某些ISO特性,并且其他特性具有的功能也较少;

        l  microlib不符合IEEE 754二进制浮点算法标准;

        l  microlib进行了高度优化以使代码变得很小;

        l  无法对区域设置进行配置。缺省C区域设置是唯一可用的区域设置;

        l  不能将main()声明为使用参数,并且不能返回内容;

        l  不支持stdio,但未缓冲的stdinstdoutstderr除外;

        l  microlibC99函数提供有限的支持;

        l  microlib不支持操作系统函数;

        l  microlib不支持与位置无关的代码;

        l  microlib不提供互斥锁来防止非线程安全的代码;

        l  microlib不支持宽字符或多字节字符串;

        l  stdlib不同,microlib不支持可选择的单或双区内存模型。microlib只提供双区内存模型,即单独的堆栈和堆区。

            启动流程1(使用标准库,不使用Microlib)如下图:
            
             启动流程2(使用Microlib)如下图
        
            到这里,关于启动代码的话题并没有讨论完,接下来:
            1、关于分散加载我以后会专门写几篇关于分散加载的文章;
            2、下一步我也会写一篇文章来简要介绍下启动代码的用处以及用法;

    展开全文
  • 基于用户的协同过滤推荐算法实现原理及实现代码

    万次阅读 多人点赞 2019-11-09 09:35:39
    基于用户的协同过滤推荐算法基于用户的协同过滤推荐算法实现原理及实现代码一、基于用户的协同过滤推荐算法实现原理二、基于用户的协同过滤推荐算法实现代码 基于用户的协同过滤推荐算法实现原理及实现代码 一、...

    基于用户的协同过滤推荐算法实现原理及实现代码

    一、基于用户的协同过滤推荐算法实现原理

    传统的基于用户(User-Based)的协同过滤推荐算法实现原理分四个步骤:
    1.根据用户历史行为信息构建用户-项目评分矩阵,用户历史行为信息包括项目评分、浏览历史、收藏历史、喜好标签等,本文以单一的项目评分为例,后期介绍其他行为信息和混合行为信息,用户-项目评分矩阵如表1所示:

    项目1项目2项目3
    用户A105
    用户B340
    用户C032

    注:用户A对项目1的评分是1分,用户A对项目2没有评分。
    2. 根据用户-项目评分矩阵计算用户之间的相似度。计算相似度常用的方法有余弦算法、修正余弦算法、皮尔森算法等等(后期我们会将相似度算法展开讲解,这里以余弦算法为例)。余弦算法公式如图1所示:
    在这里插入图片描述
    注:r_u表示用户u的评分集合(也就是矩阵中的一行评分数据),在这里插入图片描述表示用户v的评分集合,i表示项目,在这里插入图片描述 表示用户u对项目1的评分乘以用户v对项目1的评分加上用户u对项目2的评分乘以用户v对项目2的评分……先相加再相乘直到最后一个项目, 在这里插入图片描述表示用户u对项目1的评分的平方加上用户u对项目2的评分的平方加上……先平方再相加直到最后一个项目然后得到的值取平方根,平方根乘以用户v的平方根。
    3. 根据用户之间的相似度得到目标用户的最近邻居KNN。KNN的筛选常用的有两种方式,一种是设置相似度阀值(给定一个相似度的下限,大于下限的相似度为最近邻居),一种是根据与目标用户相似度的高低来选择前N个最近邻居(本次以前N个为例,后期会详细对比讲解两者)。相似度排序可用经典冒泡排序法。
    4. 预测项目评分并进行推荐。最常用的预测公式如图2所示:
    在这里插入图片描述
    注:该公式实际上是相似度和评分的加权平均数。 在这里插入图片描述表示用户u对项目i的预测评分,n是最近邻集合,v是任意一个最近邻居,在这里插入图片描述 表示最近邻v和目标用户u的相似度乘以最近邻v对项目i的评分。得到预测评分后按照评分高低进行降序推荐。
    5. 结论。以上步骤是最简单,最传统的基于用户的协同过滤推荐算法的实现原理,但是在实现过程中还是有很多注意细节。

    二、基于用户的协同过滤推荐算法实现代码

    本文我们介绍两种实现代码,都是java语言开发,单机版(本地测试),数据集使用movielens的ml-100k,943*1682,80000条数据。
    第一种,自定义实现:
    1、项目目录,如图3所示:
    在这里插入图片描述
    2、运行结果
    在这里插入图片描述
    第二种,使用mahout api接口实现:
    mahout是一个算法包,实现了很多协同过滤推荐算法接口,传统的基于用户的协同过滤推荐算法调用步骤很固定,运行结果如下:
    在这里插入图片描述
    在这里插入图片描述

    附件:基于用户的协同过滤推荐算法实现代码java语言开发

    展开全文
  • 一个简单的编辑器 编译原理课设 对简单的程序进行语义分析并将中间代码生成
  • 编译原理课程词法分析器,语法分析器(递归实现),中间代码生成;
  • REC概述 我们到pikachu上 他让我们在这里,输入目标IP地址! ...我们输入一下这个网址 ...出来了什么不得了的东西,这就是一个远程代码执行漏洞 这个网页的后台同样也没有对输入做任何处理
  • SVN工作原理(帮助实现代码管理)

    千次阅读 2016-04-26 15:08:32
    svn工作原理:在svn服务器上每个源代码文件都有一个版本(1、2、3),假设服务器上的代码文件原始版本是1,张三下载下来,修改后这个版本自动+1,变成了2,他把这个2上传到服务器。李四之前也下载了版本为1的这个...
  • 《编译原理及实现》附录代码 第二版 孙悦红主编,代码是从课本附录扫描识别出来的,然后经过纠错,调试,最终能成功运行,do语句功能未实现,保持课本源代码模样,需要的同学可联系我。
  • UEFI原理与编程源代码

    热门讨论 2015-05-31 17:35:17
    UEFI原理与编程源代码 资源是从华章出版社官网下载的
  • 编译原理及实践附录源代码

    热门讨论 2012-12-05 22:30:17
    编译原理及实践 附录 源代码 本书英文名:Compiler Construction: Principles and Practice 作者:Kenneth C.Louden 电子书中文版下载地址:http://download.csdn.net/detail/bbeikke/4794677 电子书英文版下载地址:...
  • 卡尔曼滤波原理及应用-MATLAB仿真
  • 在线代码编辑器   在线编辑各种文本形式的源代码,如js,html,php等,要支持语法高亮,即时输入即时高亮。  我的初步想法是用一个 contenteditable>来实现,就是类似于常见的在线网页编辑器,但是因为仅仅是...
  • 原理:利用Freemarker技术,通过java加载Freemarker模板,将前台输入的参数填入模板里面,通过FileZip压缩一个zip包,然后自动下载下来 1.预先定义好模板   2.界面输入相关参数   3....
  • 深度学习原理详解及Python代码实现

    千人学习 2019-12-07 21:14:52
    【为什么要学习这门课程】 深度学习框架如TensorFlow和Pytorch掩盖了深度学习底层实现方法,那能否能用Python代码从零实现来学习深度学习原理呢? 本课程就为大家提供了这个可能,有助于深刻理解深度学习原理。 左手...
  • 浅析代码优化——编译器优化原理

    千次阅读 2016-08-25 14:57:06
    开篇 相信有过编码经验的人都知道,程序的正常运行,只是最基本的要求。更多的,还要考虑程序的性能,运行效率,组织结构,和重用性等等。 今天将简单的讨论一下如何优化程序性能。 要写出高效的程序,可能多数初学...
  • 声明 GAN是近年深度学习领域的利刃,革新的GAN总给人以惊叹的表现。...(从原理代码(100%可运行,超详细),一个博客就够了) DCGAN原理 DCGAN全称Deep Convolutional Generative Adversarial Netwo...
  • 购买课程后,添加小助手微信(微信号:csdnxy68)回复【唐宇迪】 进入学习群,获取唐宇迪老师答疑 Python机器学习实训营(原理推导+代码复现+实验分析)课程旨在帮助同学们在机器学习领域打下坚实基础。课程注重算法...
  • 代码生成工具原理解析

    万次阅读 2013-06-06 23:02:26
    前几天在论坛看到jeecg,是个代码自动生成框架,感觉挺有意思的,就花了点时间研究了下。 代码都能自动生成,可能大家会觉得这肯定是个很复杂的东西,其实非也,我给大家稍微点一下 ,相信大家就能明白其中的...
  • 编译原理代码生成

    万次阅读 2017-12-18 16:13:41
    前面提到了经过了词法分析->语法分析->语义分析->中间代码优化,最后的阶段...之所以将编译原理分成这种多阶段多模块的组织形式,本质的考虑其实只有两个方面: 一、代码复用:尽可能在不增加程序员工作量的前提下,增
  • JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); // ...... // 在其他实例都已经准备完毕后, 构建编译任务, 其他实例的构建见如下 Boolean result = compiler.getTask(null, manager, collector, ...
  • OSGi原理与最佳实践(完整版PDF附源代码)

    千次下载 热门讨论 2013-03-14 22:59:42
    OSGi原理与最佳实践(完整版PDF附源代码),改PDF是由纸质书扫描的,内容完整,附带的源代码和书本完全对应。国内OSGI中文第一书,作者是淘宝架构师,书中提及的示例很有代表性,文章也是深入浅出,相当值得拥有!是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,789,428
精华内容 715,771
关键字:

代码的原理