我只是搬运工

一.XML和JSON的区别

1.数据体积

  JSON相对于XML来讲,数据体积小,传递的速度更快一点

2.数据交互方面

  JSON与javascript的交互更加方便,更容易解析处理,更好的数据交互。

3.数据描述方面

  JSON对数据的描述比XML较差

4.传输速度方面

  JSON的速度要远远的快鱼XML

二.对webpack的理解

  webpack是一个模块打包工具,你可以用webpack来管理你的模块依赖,并编译出模块所需要的静态文件,它能够很好的管理、打包web开发中所用到的HTML、CSS、Javascript以及图片和字体等。让开发更有效。

  对于不同的资源,webpack有不同的加载器,webpack模块打包器会分析模块间的依赖关系,最后生成了优化且合并后的静态资源。

  webpack两大特色:

    1>.code splitting(代码自动完成)

    2>.loader可以处理各种类型的静态文件,并且支持串联操作

  webpack是一commonJS的形式来书写脚本的,但对AMD、CMD的支持也很全面,方便旧项目进行代码迁移。

  webpack具有requireJS和browserify的功能,但仍有很多自己的新特性:

    1>.对commonJS、AMD、ES6的语法做了兼容

    2>.对js、css、图片等资源文件都支持打包。

    3>.串联式模块加载器以及插件机制,让其具有更好的灵活性和扩展性,例如提供独一CoffeeScript、Es6的支持。

    4>.有独立的配置文件webpack.config.js

    5>.可以将代码切割成不同的chunk,实现按需加载,降低了初始化时间

    6>.支持SourceUrls和SourceMaps,易于调试。

    7>.具有强大的Plugin接口,大多是内部插件,使用灵活。

    8>.webpack使用异步IO并具有多级缓存,这使得webpack很快且在增量编译上更加快。

三.TCP的三次握手

  为了准确的传输数据,TCP协议采用了三次握手策略,用TCP协议吧数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否发送成功。握手过程中使用了TCP的标志:SYN和ACK。

  发送端会首先发送一个带有SYN标志的数据包给对方。接收端收到后,回传一个带有SYN、ACK标志的数据包以示传达确认信息。

  最后发送端再回传一个ACK的标志的数据包,带表“握手”结束。

  若在握手过程中某个阶段莫名中断,TCP协议会在次以相同的顺序发送相同的数据包。

四.对作用域链的理解

  作用域链的作用是保证执行环境里有访问权限的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不允许的。

  也可以说作用域链是多个作用域嵌套,所形成的由内到外的上下结构,称之为作用域链。

  作用域是一块代码所在的区域可以称之为作用域。

  作用:隔离变量,不同作用域中的同名变量不会产生冲突

  分类:全局作用域,在JS代码开始编写时候产生

     函数作用域:在函数定义的时候就生成

     动态一个上下文对象时,必须在具体作用域内

  作用域的作用:

    最大的用处就是变量隔离,不同作用域下的变量不会冲突

五.闭包

  定义:包含被引用变量(函数)的对象

  产生:1>.嵌套函数

     2>.内部子函数引用外部函数的变量,产生闭包

  作用:使其引用的变量长期在内存中,延长生命周期

  缺点:如果不释放产生的闭包,会导致内存泄漏

  应用:循环遍历加监听,jQuery中也有闭包

  例如:

function fun1(){
      var a = 1;
      function fun2(){
         a++;
        console.log(a)
      }
      return fun2;
}
var p = fun1();
p();  //第一次调用输出2 //第二次调用输出3,说明a没有被释放,还在内存中。

六.渐进增强和优雅降级

  渐进增强:针对低版本浏览器进行构建页面,保证基础功能,然后在针对高版本浏览器进行效果、交互等改进和追加功能,来提高用户体验

  优雅降级:一开始构建完整的功能,然后针对低版本浏览器进行兼容

七.Ajax(异步的JavaScript和XML)是一种不刷新浏览器就可以实现页面局部刷新的与服务器通讯的技术。

八.创建Ajax的过程

  1>.创建XMLHttpRequest对象,也就是创建一个异步调用对象。

  2>.创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

  3>.设置响应HTTP请求变化的函数。

  4>.发送HTTP请求

  5>.获取异步调用返回的数据

  6>.使用javascript和DOM实现局部刷新

    Ajax的原理:

    通过XMLHttpRequest对象,也就是创建一个异步调用对象

    底层是ajax引擎发送http请求

    服务器接收到请求,然后返回响应数据

九.对前段模块化的认识

  AMD是Require在推广过程中对模块定义的规范产出

  CMD是SeaJs在推广过程中对模块定义的规范产出

  AMD是提前执行,推荐的风格通过返回一个对象作为模块对象。

  CMD是延迟执行,CommonJs的风格通过对module.exports或exports的属性赋值来达到暴露模块对象的目的。

十.代码层面的优化

  少用全局变量

  用innerHTML来代替DOM操作,减少DOM操作次数,优化javascript性能

  用setTimeout来避免页面失去响应

  避免全局查询

  避免空的src属性,空的src会重新加载当前页面,影响加载速度

  尽量使用css3动画,开启硬件加速

  适当使用Touch事件来代替click事件

  可以使用transform:translateZ(0)来开始硬件加速

  尽量不适用float,float在渲染时候计算量比较大

十一. 

  jQuery将一些原型属性和方法封装在了jquery.proptype中,为了缩短命名,又赋值给了jquery.fn,这是很形象的写法。

  有一些数组或对象的方法经常能用到,jquery将其保存为局部变量以提高访问速度;jQuery的链式调用也节约许多代码,提高了代码效率。

  jQuery是一个封装好的js函数库

  特点:HTML元素选取、元素操作、事件处理、CSS操作、JS动画效果、链式调用、浏览器兼容性好、Ajax封装、易扩展插件

  jQuery定义的一个全局函数,$()执行返回的是一个对象,即jQuery核心对象

  作为一般函数使用,参数不同,内部做的工作不同。参数可以使:函数,相当于绑定window.onload事件监听回调;选择器字符串,会查找所有满足条件的DOM元素数组,并返回jQuery对象

  html标签:生成相对应的dom元素对象,并封装为jQuery对象返回;参数为dom元素,将dom元素封装成jQuery对象返回

  jQuery作为对象使用:1>.隐式遍历,2>.去除字符串两边的空格.trim() 3>.判断数据类型 .type()4>.判断是否是数组5>.判断是否是函数6>.解析字符串

    方法:$.each()  $.trim()  $.type()  $type()  $isarray()  $ifFunction()  $parseJSON()

  jQuery的选择器:基本选择器、层次选择器、过滤选择器、表单选择器

  jQuery对象的使用:attr()用来操作值不为true、false的属性,读取只返回一个,写的时候操作全部

           prop()用来操作值为trtue、false的属性

           addClass()添加class

           removeClass删除class

  jQuery事件处理:

    三个阶段:捕获、执行、冒泡

      on(eventName,  function(){  })添加事件监听

      xxx.click(function(){  })具体某个事件监听、

      off([eventName])移除所有指定事件监听

      hover(function(){  }, function(){  })鼠标离开和移入效果

      event:

        得到坐标: clientX()/page()

        阻止冒泡:event.stopPropagation()

        阻止默认行为:event.pareventDefault()

  事件委派:

    将当前的子元素打得监听事件添加到父元素上

    优势:减少事件监听,新增的子元素直接拥有添加效果

    实现:delegate()例如:$(‘ul‘).delegate(‘li‘, function(){  });这里的this指的是li

  jQuery的动画:

    1>.fadeIn、fadeOut()动画结束后还可以接回调

    2>.slideDown()、slideUp()、

    3>.show()、hide()

    4.animate()

  扩展jQuery的工具方法

  $.extend(object)

    例子:$.extend({

      deleteTirm: function(str){

        return str.replace(/^\s+/, ‘‘);

      }

})

    deleteTirm(str);直接调用就可以

  扩展对象的方法:

    $.fn.extend({

      checkAll: function(){

        this.prop(‘checked‘, true);全选

      }

    })

    $(function(){ 

      $(‘#checkedAllBtn‘).click(function(){

      $(‘[name=items]‘).checkAll(); //调用上面创建的checkAll();

      })

    });

十二. prototype原型

  函数的prototype属性

    每个函数都有一个prototype属性,指向一个对象(原型对象)

    原型对象中都有一个constructor属性,他指向函数对象

    object原型:

      object对象的方法都定义在Object的原型对象上

      object的原型对象的原型为null

  给函数原型添加属性(方法)

    函数的实例对象会自动拥有该函数原型中的属性

      

Date.prototype.Format = function(fmt){ //author: meizz
  var o = {
    "M+" : this.getMonth()+1,                 //月份
    "d+" : this.getDate(),                    //日
    "h+" : this.getHours(),                   //小时
    "m+" : this.getMinutes(),                 //分
    "s+" : this.getSeconds(),                 //秒
    "q+" : Math.floor((this.getMonth()+3)/3), //季度
    "S"  : this.getMilliseconds()             //毫秒
  };
  if(/(y+)/.test(fmt))
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)
    if(new RegExp("("+ k +")").test(fmt))
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  return fmt;
};

  Object的原型对象是整个原型链的尽头,object.prototype--------最后返回null

  实例对象可以调用原型 对象的方法,原型对象是实例对象的父对象

   显式原型和隐式原型

    每个函数在定义时候就拥有prototype,即为显式原型,并且每个实例对象都有一个隐式原型__prop__,他的值为构造函数的prototype的值。

  原型链:访问一个对象的属性时,现在基本属性中查找,如果没有,会沿着__prop__这条链向上找,一直找到为止,这条链即为原型链。

十三.执行上下文和执行上下文栈

  执行上下文也称为上下文环境,本质是一个对象,由JS引擎自动创建,看不见,只能直接使用其属性

  1.JS引擎在执行全局代码前会将window作为全局上下文对象,将一些变量初始化赋值,放在上下文对象里,将它们设置为全局变量

  2.JS引擎在执行函数体之前先创建对应的上下文对象,然后初始化赋值一些局部变量,将它们设置为上下文对象

  上下文栈:

    在js代码执行的过程中,JS引擎会用一个栈结构容器来管理所创建的上下文对象,

    栈:后进先出,入口和出口是同一个口,用来 存放上下文对象

作用域和执行上下文的区别:

  除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义的时候创建,不是在调用时

  全局上下文是在全局作用域确定后,js代码执行之前创建

  函数上下文是在函数调用时,函数代码执行前创建。

  *:作用域是静态的,只要函数定义了,就一直会存在,

     上下文是动态的,在调用时,代码执行前生成,一旦函数执行完毕,上下文会立即消失

this:

  this本质上任何函数在执行时都是通过某个对象调用的,this就是代表调用函数的当前对象

    在函数定义是this还没有确定,只有在执行的时候才确定,如果当调用函数时没有明确指定当前对象,那么this指的就是window;函数执行完毕,上下文消失。

十四.对象创建的模式

  1.构造函数

    var person = new Object();

    person.name = "bajie";

    person.age = 12;

  2.对象字面量模式

    var person = {

      name = "bajie",

      age= 12

    }

  3.工厂模式

    function createPerson(name, age){

      var p = new Object();

      p.name = name;

      p.age = age;

    }

    var person  = createPerson("bajie", 12)

时间: 2024-12-19 18:13:03

我只是搬运工的相关文章

超级搬运工

前我们往屏幕输出了一个Hello,费了老大的劲.有没有什么更简单的方法呢?当然有啦. 我们把所有的文字对应的Ascll码统一放到一块内存里面.再把这些东西统一搬进去显存里面. mov cx,10ES:B800DI:0 DS:07C0SI:8 rep movsb byte ptr [ES:DI],byte ptr [DS:SI] 超级搬运工:1.要搬的东西的在哪里.2.把东西搬到哪里去.3.每一次可以搬多少东西,需要搬多少次.4.从上往下搬,还是从下往上搬. movsb  32位  16位 8位寄

【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition

论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locnet可以很容易与现有的detection系统结合,但我困惑的是(1)它们的训练的方法,这点论文中没有明确的提到,而仅仅说用迭代的方法进行(2)到底两者的融合后两个网络的结构是怎样呢?可以看做一个多任务的系统,还是存在两个网络呢? 检测方法 输入的候选bounding box(使用selective s

【搬运工】一点小收集

1.几种基础算法. 2.数学之美. 3.贝叶斯方法. 转自互联网,链接背后都是故事,水深,都是鱼. 敬意且谨以自勉,长途漫漫,任重道远. 以上. [搬运工]一点小收集,布布扣,bubuko.com

文字搬运工

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>文字搬运工</title> <style type="text/css"> #box{ width: 750px; border: 5px solid #fff; margin: 0 auto; font-size: 20px;

csu 1976: 搬运工小明

1976: 搬运工小明 Submit Page   Summary   Time Limit: 2 Sec     Memory Limit: 128 Mb     Submitted: 94     Solved: 27 Description 作为老人的小明非常忧伤,因为他马上要被流放到本部去了,住进全左家垅最有历史感的11舍真是一件非常荣幸的事情.搬行李是个体力活,小明发现自己的行李太多啦,所以他决定去买很多个袋子来装走.到了超市的小明发现,不同大小的袋子居然价格一样???虽然买最大的自然

【搬运工】Android Studio 新建项目代码[1]Basic Activity,带FloatingButton、Menu

MainActivity.java package com.cela.one.cela1; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.

我的Android笔记--Intent上(我是文档的搬运工)

我是文档的搬运工. Intent,意图,它是一个消息传递对象.对于意图最常见的就是从一个Activity跳转到另一个Activity,或者启动一个服务.发送一个广播等等. 它分为显式意图和隐式意图,下面是API指南给的解释. 显式 Intent :按名称(完全限定类名)指定要启动的组件.通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名.例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件. 隐式 Inten

mutex----我是搬运工

看吕大的书,其中对mutex的介绍让人心动,因此我做一次搬运工. mutex与latch区别: mutex latch 没有等待队列,没有持有队列,抢占机制 使用队列 spin255次,在spin 期间无法获得,转入睡眠,自己醒来 spin 2000次,在spin 期间无法获得,转入睡眠,等待唤醒 使用引用计数器 (reference count),在64 位中占用 8字节,其实前4为 SID,后4 为引用计数器,如果引用计数器为 0,说明mutex 为独占模式 在latch池中,每一个 lat

AutoMapper搬运工之自定义类型转换

前言 最近还挺忙,还有点累,一直都没更新了,实在是懒呀.正题之前先说点别的,最近公司要扩张了,需要大量开发,领导说推荐有钱可以拿,如此好机会,我就趁机做个广告.ShippingRen.com招募.NET高级开发,坐标上海,有兴趣的给我留言,或者加我qq:1029183866,加的时候请说明博客园看到. 另外在说说这几天,工作忙是不可避免,业余也在准备自己的网站www.capqueen.com(目前还在备案中),准备用目前会的技术从无到有建立一个CMS(博客),到时候也会发一些文章和大家分享.最近

数据搬运工DSS~介绍

DSS介绍 DSS是为了实现异地数据同步而开发的一套.net平台的应用程序,它寄宿到windows服务上,由多个客户端和一个服务端组成,其中客户端用来收集数据(数据源端),服务端用来将数据写入指定数据库(数据目的端),整个数据传输的过程采用socket来实现,数据量单次在200K左右,保证了传输的性能:在服务端通过仓储大叔的CacheQueue队列组件来解决高并发的问题,队列为了便于后台维护,采用了文件存储的方式. DSS系统架构图 DSS数据一致性的设计 DSS解决方案图 DSS为每个客户端配