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

    千次阅读 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中,然后进行执行,如果里面还有函数重复当前步骤。
      看几个例子了解一下吧!在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • SVN工作原理(帮助实现代码管理)

    千次阅读 2016-04-26 15:08:32
    svn工作原理:在svn服务器上每个源代码文件都有一个版本(1、2、3),假设服务器上的代码文件原始版本是1,张三下载下来,修改后这个版本自动+1,变成了2,他把这个2上传到服务器。李四之前也下载了版本为1的这个...
    svn工作原理:在svn服务器上每个源代码文件都有一个版本(1、2、3),假设服务器上的代码文件原始版本是1,张三下载下来,修改后这个版本自动+1,变成了2,他把这个2上传到服务器。李四之前也下载了版本为1的这个文件,李四也修改,版本也是2,这时他要上传,服务器发现这个文件版本2在服务器上已经存在,发出警告:版本冲突了。如何解决?合并。
    

    1、配置服务器
    安装SubVersion ,svn-1.4.5-setup.exe
    创建电子仓库(SVN数据库) svnadmin create E:\Example\SVNROOT\TEST(如果用svn管理多个数据仓库,建议都放在svnroot下,需要提前建立SVNROOT目录)
    将SVNService.exe拷贝到SubVersion的安装目录中的\bin目录, 保证SVNService.exe和svnserve.exe在同一目录。( SubVersion本身是由命令行启动的, 它不能像Windows 服务一样随Windows启动,需要借SVNService来包装成Windows 服务)
    安装服务: SVNService -install -d -r <svnroot>, <svnroot>代表SubVersion服务的数据仓库目录(如果执行不成功,可以保存成bat文件,以管理员身份运行)。如果存在多个仓库,这里的svnroot指根目录
    启动服务,自动运行
    在电子仓库的conf目录中有三个文件,是关于访问权限控制的。分别作如下修改:
    svnserve.conf   
    anon-access = none 不允许匿名访问
    auth-access = write  授权访问赋予写权限
    password-db = passwd  指定用户口令文件
    authz-db = authz  指定用户权限文件
    authz
    [/]
    user1 = rw   用户user1具有读写权限
    user2 = rw   用户user2具有读写权限
    * =     其他帐户没有权限
    passwd          设置用户的口令
    [users]
    user1 = 123
    user2 = 123
    修改以上内容后,建立了user1、user2两个svn用户,口令都是123,具有读写权限
    记得重启svn服务

    2、创建版本库
    svn import -m "new" d:\layer2 file:///d:/svnroot/test

    3、客户端使用
    更新、提交、显示日志、保存版本至、比较差异、清理、改名、重新定位

    冲突解决方案:
    当提交文件遇到冲突时,有两种可能的方法:
    方法一、当冲突的内容不在同一行时,可以先更新文件,让系统自动合并,然后再提交。
    方法二、复制冲突的文件(a.bak)、从显示日志中比较最新版本和本地副本之间的差异,然后商量出折中方案,然后修改a.bak,删除那个冲突的文件,然后再更新这个文件,最后删除这个更新下来的文件,然后把a.bak改名,最后提交。

    技术团队角色划分:
    1、开发人员(程序员)
    2、需求分析人员:在开发人员和客户之间做桥梁

    3、测试人员













    展开全文
  • 动态数码管的工作原理代码实现

    千次阅读 2019-09-30 18:14:27
    数码管动态显示原理:动态显示的特点是将所有数码管的段选并联在一起,有位选控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余晖和...

    数码管动态显示原理:动态显示的特点是将所有数码管的段选并联在一起,有位选控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所有在选择限流电阻时应略小于静态显示电路中的。

    H74HC138D是一种三通道输入、八通道输出译码器,主要应用于消费类电子产品。

    动态点亮数码管的代码实现

    #include "reg52.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit LSA=P2^2;
    sbit LSB=P2^3;
    sbit LSC=P2^4;
    
    u8 code smgduan[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 
    0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; void delay(u16 i) { while(i--); } void DigDisplay() { u8 i; for(i=0; i<8; i++) { switch(i) { case(0): LSA=0; LSB=0; LSC=0; break; case(1): LSA=1; LSB=0; LSC=0; break; case(2): LSA=0; LSB=1; LSC=0; break; case(3): LSA=1; LSB=1; LSC=0; break; case(4): LSA=0; LSB=0; LSC=1; break; case(5): LSA=1; LSB=0; LSC=1; break; case(6): LSA=0; LSB=1; LSC=1; break; case(7): LSA=1; LSB=1; LSC=1; break; } P0=smgduan[i]; delay(100); P0=0x00; } } void main() { while(1) { DigDisplay(); } }

     

    转载于:https://www.cnblogs.com/czz0508/p/10474572.html

    展开全文
  • 静态代码扫描的原理

    千次阅读 2020-01-15 11:29:27
    静态代码扫描存在的价值 研发过程,发现BUG越晚,修复的成本越大 缺陷引入的大部分是在编码阶段,但发现的更多是在单元测试、集成测试、功能测试阶段 统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑...

    静态代码扫描存在的价值

    1. 研发过程,发现BUG越晚,修复的成本越大
    2. 缺陷引入的大部分是在编码阶段,但发现的更多是在单元测试、集成测试、功能测试阶段
    3. 统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的

    以上三点证明了,静态代码扫描在整个安全开发的流程中起着十分关键的作用,且实施这件事情的时间点需要尽量前移,因为扫描的节点左移能够大幅度的降低开发以及修复的成本,能够帮助开发人减轻开发和修复的负担,许多公司在推行静态代码扫描工具的时候会遇到大幅度的阻力,这方面阻力主要来自于开发人员,由于工具能力的有限性,会产生大量的误报,这就导致了开发人员很可能在做BUG确认的工作时花费了大量的无用时间。因此选择一款合适的静态代码分析工具变得尤为重要,合适的工具能够真正达到降低开发成本的效果。

    静态代码分析理论基础和主要技术

    静态代码分析原理分为两种:分析源代码编译后的中间文件(如Java的字节码);分析源文件。主要分析技术如下:

    • 缺陷模式匹配
      事先从代码分析经验中收集足够多的共性缺陷模式,将待分析代码与已有的共性缺陷模式进行匹配,从而完成软件安全分析。优点:简单方便;缺点:需要内置足够多的缺陷模式,容易产生误报。

    • 类型推断/类型推断
      类型推断技术是指通过对代码中运算对象类型进行推理,从而保证代码中每条语句都针对正确的类型执行。

    • 模型检查
      建立于有限状态自动机的概念基础上。将每条语句产生的影响抽象为有限状态自动机的一个状态,再通过分析有限状态机达到分析代码目的。
      校验程序并发等时序特性。

    • 数据流分析
      从程序代码中收集程序语义信息,抽象成控制流图,可以通过控制流图,不必真实的运行程序,可以分析发现程序运行时的行为。

    静态代码扫描工具

    1. Fortify SCA(Source Code Analysis)

    网址:http://www.fortify.net/

    Fortify Software公司是一家总部位于美国硅谷,致力于提供应用软件安全开发工具和管理方案的厂商。Fortify为应用软件开发组织、安全审计人员和应用 安全管理人员提供工具并确立最佳的应用软件安全实践和策略,帮助他们在软件开发生命周期中花最少的时间和成本去识别和修复软件源代码中的安全隐患。 Fortify SCA是Fortify360产品套装中的一部分,它使用fortify公司特有的X-Tier Dataflow™ analysis技术去检测软件安全问题。

    优点:全球最大的静态代码检测厂商,支持语言较多

    缺点:价格太过昂贵,性价比不高

    2. Checkmarx CxSuite

    网址:https://www.checkmarx.com/

    Checkmarx 是以色列的一家高科技软件公司。它的产品CheckmarxCxSuite专门设计为识别、跟踪和修复软件源代码上的技术和逻辑方面的安全风险。首创了以查询语言定位代码安全问题,其采用独特的词汇分析技术和CxQL专利查询技术来扫描和分析源代码中的安全漏洞和弱点。

    优点:可以利用CxQL 查询语言自定义规则

    缺点:输出报告不够美观、语言支持种类不全面,价格昂贵

    3. Coverity

    网址:https://scan.coverity.com/

    Coverity公司是由一流的斯坦福大学的科学家于2002年成立的,产品核心技术是1998年至2002年在斯坦福大学计算机系统实验室开发的,用于解决一个计算机科学领域最困难的问题,在2003年发布了第一个能够帮助Linux、FreeBSD等开源项目检测大量关键缺陷的系统,Coverity是唯一位列IDC前10名软件质量工具供应商的静态分析工具厂商,被第三方权威调查机构VDC评为静态源代码分析领域的领导者,市场占有率处于绝对领先地位。

    优点:可以检测二进制文件,分析能力较强

    缺点:价格昂贵

    4. 源伞科技Pinpoint

    网址:https://www.sourcebrella.com/

    源伞科技公司是香港科技大学安全实验室的众多博士创建的,产品集成了实验室多年的研究成果,在众多国际顶级学术会议上都发表了成果论文,在学术界有很大的影响。近几年源伞科技将静态代码检测产品Pinpoint成功商业化。目前产品已经比较成熟,能够方便的集成各种安全开发流程,操作界面流畅。能够直接扫描JAVA的二进制文件,在Java和c/c++两种语言上的分析能力十分强大,扫描速度普遍快于市面上现有的产品,且拥有众多国内一线互联网以及金融公司的安全开发实例经验,不仅能够输出工具产品,也能够提供安全开发的解决方案。在国内静态代码分析领域处于领先地位。

    优点:分析能力强,使用方便友好,价格透明亲民

    缺点:还未支持C#以及OC,目前支持C/C++,Java,Android,JS,PHP,Python,Golang,Sql

    为国产工具源伞Pinpoint打Call!!!

    展开全文
  • 51单片机串口通信原理讲解

    千次阅读 多人点赞 2019-10-24 23:54:50
    通信原理大致分为串行和并行两种方法,各有优缺点,也不再这里赘述了,使用到的是串行通信的方法,简单介绍一下串行通信的原理,上图 两个设备,一根互传线,每次传一组数据,总长度不一定8位,由51单片机内部设定...
  • 这份资料是详细的FDC2214的资料,包含了FDC2214详细的中文资料、代码原理图,下载即可用。
  • 舵机工作原理及STM32驱动代码

    千次阅读 2020-04-14 18:44:10
    舵机工作原理及STM32驱动代码 1.舵机接线 舵机上有三根线,分别为VCC(红色正极)、GND(棕褐色负极)、信号线(橙色信号线)。标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz)。VCC、GND需要另外接驱动给舵机...
  • 一文带你详解矩阵键盘工作原理

    万次阅读 多人点赞 2020-08-10 14:06:19
    本片文章将带你详细的学习矩阵键盘的原理以及代码编写。 矩阵键盘本质: 矩阵键盘本质是使用8个io口来进行16个按键的控制读取,可以减小io口的使用,用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线...
  • 编译原理代码生成

    万次阅读 2017-12-18 16:13:41
    前面提到了经过了词法分析->语法分析->语义分析->中间代码优化,最后的阶段便是在目标机器上运行的目标代码的生成了。目标代码生成阶段的任务是:将此前的中间...一、代码复用:尽可能在不增加程序员工作量的前提下,增
  • 计算机组成原理实验——寄存器堆实现

    千次阅读 多人点赞 2019-05-31 11:11:03
    这次要做的是用Verilog代码写一个寄存器堆,此寄存器堆共有32个寄存器,每个寄存器可存储32个二进制位。要求有一个写端口,两个读端口,本次实验设计为异步读同步写的寄存器堆,即读寄存器不需要时钟控制,但写...
  • Simulink 自动代码生成原理

    千次阅读 2018-06-12 22:05:50
    如下图,Simulink模型会先变成一个文本式的 .rtw 模型描述文件,然后再变成 .c,.h,最后编译为最终目标文件。 典型的 Simulink 用户通常都是,用Simulink设计好算法... 但是也有部分人希望把编译下载的工作也集成到...
  • 编码器的工作原理

    万次阅读 多人点赞 2019-11-12 09:03:37
    首先简述一下编码器的工作原理 编码器可按以下方式来分类。 1、按码盘的刻孔方式不同分类 (1)增量型:就是每转过单位的角度就发出一个脉冲信号(也有发正余弦信号, 编码器(图1) 然后对其进行细分,斩波出...
  • 课程注重算法原理讲解与数学公式推导并基于Python语言给出完整的代码实现,从零开始实现每一模块功能(非调用工具包)通过代码实例演示算法工作流程与实现方法,基于案例进行实验分析,算法涉及核心知识点全方位解读...
  • 编译原理代码优化

    万次阅读 多人点赞 2017-12-18 10:43:49
    前面介绍完了词法分析、语法分析和语义分析,以及各阶段如何利用符号表来实现代码合理性确认以及代码地址拉链式回填等工作。编译原理出于代码编译的模块化组装考虑,一般会在语义分析的阶段生成平台无关的中间代码,...
  • mybatis工作原理

    万次阅读 2018-09-07 12:36:30
    便于统 一管理和优化,并可重用 运行效率高 二、mybatis原理 下面是mybatis的一个原理图,看懂这个图对理解mybatis工作原理很重要: 上面的原理图看的不是很清晰,下面再详细介绍一下mybatis的主要成员: 1、...
  • JSP工作原理

    千次阅读 2019-03-04 14:01:10
    2. 如果页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为class文件(test.class文件);这种过程(编译)会耗费时间 3. JSP容器负责调用从JSP转换来的...
  • Git 实用技巧

    千人学习 2019-11-24 18:20:42
    从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作...
  • 浏览器工作原理和实践

    千次阅读 2019-08-31 18:18:51
    参透了浏览器的工作原理,可解决80%的前端难题. 帮助开发web前端项目. 3.学习 课程目录 开篇词 (1讲) 开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题 宏观视角...
  • MPU6050工作原理及STM32控制MPU6050

    万次阅读 多人点赞 2017-08-01 21:49:48
    要想知道MPU6050工作原理,得先了解下面俩个传感器:①陀螺仪传感器: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种方法读取...
  • kafka工作原理介绍

    万次阅读 多人点赞 2018-06-27 11:55:56
    两张图读懂kafka应用: Kafka 中的术语  broker:中间的kafka cluster,存储消息,是由多个server组成的集群。   topic:kafka给消息提供的分类方式。broker用来存储不同topic...小白也能看懂的简单明了kafka原理解析
  • 单片机工作原理

    千次阅读 2018-08-16 08:53:59
    上面这个过程涉及到的概念先解释一下:工作模式、FLASH、指令…… 有一个贴切的比喻可以帮助大家理解单片机执行命令的过程。单片机执行命令的过程和厨师炒菜的过过程很相似。下面贴出单片机指令流水线和厨师炒菜...
  • 硬盘的工作原理

    千次阅读 2018-09-27 13:39:04
    硬盘的工作原理 0.背景 近期(201804)接手个项目,是做一个语音播放器,读取SD卡里的文件,涉及到了文件系统及播放的技术,项目搞完了,但是对文件系统的了解也仅限于应用水平。想进一步学习下,但是看了几天资料...
  • 74HC595芯片工作原理分析 说明概要: (1).想要学会一个全新的芯片,需要去看八个地方,也就是八步奏。 1 .芯片概述 2 .电器特性 3 .引脚功能描述 4 .极限参数 5 .推荐参数 6 .时序图,真值表 7 .典型电路 8 .尺寸...
  • 代码雨实现原理代码分析

    万次阅读 多人点赞 2016-11-13 22:24:42
    闲来无事,好奇代码雨是怎么实现的,早就听说是利用链表,但自己却想不出实现的思路,花了两个晚上把代码看完了,分析都在代码里,先看下效果吧。 在贴代码之前先简单说下代码,方便读者加深理解。 代码雨所...
  • 单核CPU与多核CPU工作原理

    万次阅读 多人点赞 2018-06-21 16:43:43
    单核CPU与多核CPU工作原理今天要介绍一下单核CPU和单核(超时间轴)CPU以及多核CPU的工作原理 一.单核CPU起源:CPU的起源是1971年英特尔公司推出,由此正式宣告计算机的诞生,可以说是世界级的改变,并且严格准守冯...
  • Spring Security 工作原理概览

    万次阅读 多人点赞 2019-04-27 08:02:58
    Security 原理分析 SpringSecurity 过滤器链 SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤器链的各个进行说明: WebAsyncManagerIntegrationFilter:将 Security 上下文与 ...
  • 舵机工作原理及程序

    万次阅读 多人点赞 2017-10-13 15:21:42
    舵机的工作原理: 由pwm波进入内部电路产生一个偏置电压,触发电机通过减速齿轮带动电位器移动,使电压差为零时,电机停转,从而达到伺服的效果。 舵机PWM的协议都是相同的,但最新出现的舵机可能不一样 协议一般为:...
  • Selenium WebDriver的工作原理

    万次阅读 多人点赞 2018-05-08 22:33:54
    下面再从技术上解释下WebDriver的工作原理: 从技术上讲,也同样是上面的三个角色: 1. WebDriver API(基于Java、Python、C#等语言) 对于java语言来说,就是下载下来的selenium的Jar包,比如selenium-...
  • 服务器工作原理

    千次阅读 2016-05-31 23:21:42
    (2)单机程序工作原理 单机,即不连接到其他计算机的计算机,不在网络中。例如:两单机A、B,只在A上安装有程序X,若要在B上得到X的运行结果,则必须在B上安装一遍X,然后运行。若B类的计算机比较多,则需要逐一...
  • 网页的工作原理

    千次阅读 2019-04-04 09:49:37
    一、静态网页的工作原理如下: 请求-下载同时解析,先加载样式展现网页结构,JS函数需要自行驱动执行。(有的JS函数需要随页面加载也运行,如图表初始显示的数据,方法两个: 1、在图表源代码中有运用自动执行函数:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 824,761
精华内容 329,904
关键字:

代码工作原理