精华内容
下载资源
问答
  •  每一个渴望学习C++语言初学者都希望能够有一本全面,实用,同时又是生动有趣入门。这本入门可以告诉这些初学者,整个C++世界有哪些内容构成,应该按照怎样路径进行学习探索,用C++进行程序设计应该...
  • 第1章首先介绍了JavaScript以及各种JavaScript库的作用和对比。然后介绍了jQuery以及jQuery的优势,接下来介绍了配置jQuery环境,编写简单的jQuery代码和jQuery代码的风格。最后对jQuery对象和DOM对象的相互转换,...
  • 点进行细致讲解,因此本书更多是作为一本导引、工具、手册或者学习大纲,给 读者以宏观上学习指导。和原《算法艺术与信息学竞赛》相比,本书特点有: ² 大量知识讲解。 ² 更多循序渐进习题。 ² 重要...
  •  2.1.3 系统调用和信号相互作用  2.1.4 pause和suspend函数  2.2 信号量  2.2.1 进程间互斥  2.2.2 信号量结构和信号量操作函数 . 2.2.3 应用示例  2.3 消息队列  2.3.1 消息...
  • 本书所用 IDL 程序和数据文件.......................................................................... 13 安装程序和数据文件...........................................................................
  • 今天看一本关于爬虫的书,直到了关于robots.txt约定。 Robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看。 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在...

    今天看一本关于爬虫的书,直到了关于robots.txt的约定。

    Robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
    当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
    robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。

    目前所有的搜索引擎都遵循robots.txt的规则。

    一.robots.txt的语法

    User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符

    Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录   

    Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录   

    Disallow: /ABC/ 这里定义是禁止爬寻ABC整个目录    

    Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。   

    Disallow: /*?* 禁止访问网站中所有的动态页面   

    Disallow: /jpg$ 禁止抓取网页所有的.jpg格式的图片   

    Disallow:/ab/adc.html 禁止爬去ab文件夹下面的adc.html文件。   

    User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符   

    Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录   

    Allow: /tmp 这里定义是允许爬寻tmp的整个目录   

    Allow: .htm$ 仅允许访问以".htm"为后缀的URL。   

    Allow: .gif$ 允许抓取网页和gif格式图片robots.txt文件用法举例   

    例1. 禁止所有搜索引擎访问网站的任何部分   User-agent: *   Disallow: /

    例2. 禁止某个搜索引擎的访问      User-agent: BadBot   Disallow: /

     

    二.用robots.txt的好处

     

    1. 用robots屏蔽网站重复页

    很多网站一个内容提供多种浏览版本,虽然很方便用户却对蜘蛛造成了困难,因为它分不清那个是主,那个是次,一旦让它认为你在恶意重复,兄弟你就惨了

    User-agent: *

    Disallow: /sitemap/ 《禁止蜘蛛抓取 文本网页》

    2. 用robots保护网站安全

    很多人纳闷了,robots怎么还和网站安全有关系了?其实关系还很大,不少低级黑客就是通过搜索默认后台登陆,以达到入侵网站的目标

    User-agent: *

    Disallow: /admin/ 《禁止蜘蛛抓取admin目录下所有文件》

    3. 防止盗链

    一般盗链也就几个人,可是一旦被搜索引擎“盗链”那家伙你100M宽带也吃不消,如果你做的不是图片网站,又不想被搜索引擎“盗链”你的网站图片

    User-agent: *

    Disallow: .jpg$

    4. 提交网站地图

    现在做优化的都知道做网站地图了,可是却没几个会提交的,绝大多数人是干脆在网页上加个链接,其实robots是支持这个功能的

    Sitemap: http://www.010wangzhanyouhua.com/sitemaps/sitemaps_1.xml

    5. 禁止某二级域名的抓取

    一些网站会对VIP会员提供一些特殊服务,却又不想这个服务被搜索引擎检索到

    User-agent: *

    Disallow: /

    展开全文
  • 3.3.1 C语句的作用和分类 3.3.2 最基本的语句——赋值语句 3.4 数据的输入输出 3.4.1 输入输出举例 3.4.2 有关数据输入输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出 ...
  • 本书深入浅出,全面地介绍了计算机算法。对每一个算法分析既易于理解又十分有趣,并保持了数学严谨性。本书设计目标全面,适用于多种用途。...本书在读者职业生涯,也是一本案头数学参考或工程实践手册。
  • 我将提供有关该组件的作用及其重要性的背景知识,然后介绍如何在GCP上实现该组件。 我将通过引用其他云提供商提供的类似服务来结束每章。 到本书结尾,您将知道如何使用GCP为数据工程团队建立完整的技术体系。 ...
  • grunt_cookbook 这是一本食谱,可用于安装 grunt 并从 Chef 中运行 grunt 任务。... 提供 install_grunt_prereq 配方目前通过包含 nodejs 说明书中的配方起作用。 为此提供一个方法与要求用户确保 nodejs 和
  • 索引,就跟我们书本的目录一样,如果一本书没有目录,那么你要找某一个知识点,那自然是相当费劲。数据库索引就是扮演这样角色,索引会告诉你对应数据存放磁盘地址,就好比目录上面页数。那么数据库...

    导读

    最近很多小伙伴都参与了面试更换了工作,校招也已经开始了。最近面试了几个实习生,感觉基础能力都不大行,数据库在程序员的面试中占有举足轻重的一个作用。今天我们来讲一讲数据库的索引是什么?

    94bcd0727a63b0672d45d7bca3acdc8a.png

    索引,就跟我们的书本的目录一样,如果一本书没有目录,那么你要找某一个知识点,那自然是相当费劲的。数据库的索引就是扮演这样的角色,索引会告诉你对应的数据存放的磁盘地址,就好比目录上面的页数。那么数据库的“目录”究竟长什么样子呢?

    常见的数据库索引有下面三种类型,第一是哈希表,哈希表相信大家都已经不陌生了,我们可以将数据库的索引字段后哈希并保存下来。只要哈希算法设计得合理,我们可以非常快地找到对应数据的一个存放地址,然后到对应的存放地址就可以快速地找到数据。那么,哈希索引有什么缺点呢?首先是哈希表比较适合在内存中使用,但是如果要落盘,就比较麻烦了,特别是哈希表扩容的时候,磁盘的很多数据都会修改。第二,哈希表没办法进行一个区间的筛选。

    第二种则是数组索引,与上述的哈希表类似,但又有所不同。与哈希索引类似,数组索引的效率也是非常高的,在一个有序数组里面去查找元素,我们只要进行二分查找即可。但是数组索引的问题也是非常地明显,那便是插入非常的麻烦,你插入一个新的元素,就要把后面所有的元素都往后移动一下。所以,数组索引我们一般只有静态数据才会使用。

    有序数组都讲了,那么接下来肯定就是二叉树了,我们说的二叉树当然是二叉排序树,二叉排序树相对与数组,比较大的优点是方便插入。但是同时也存在这么一个问题,因为索引的数据可能存在磁盘,那么如果索引的数据超过1000条的时候,就有可能要经过10次才能够找到最终的数据,而磁盘IO的瓶颈在于寻道跟旋转,效率必然会降低。所以,我们要尽量地减少在磁盘中寻道跟旋转的次数,所以多叉树就被广泛应用在数据库索引当中了。而在多叉树中,比较常被使用的,便是B+树。

    程序员经典面试题,为什么数据库索引多用B+树

    现在你知道了为什么数据索引有哪些,以及为什么B+树被广泛应用的道理了吧。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。

    展开全文
  • CSS Mouldes已启用以支持ID和类本地作用域(完成) 通过对状态和道具进行React来动态创建表单(完成) 注意:Axios用于将HTTP请求发送到服务器 为了开始我项目,我提供了一些简单步骤: 脚步 下载或提取此...
  • 文章目录一、概念和历史二、hellospring三、IOC创建对象方式四、Spring配置五、set注入–...另外一本书《Expert One-on-One J2EE Development without EJB》,更进一步阐述了在不使用EJB开发JAVA EE企业级应用一些
  • 并根据书中的实例 巩固一下 多层感知机系列文章链接已 放至文章开头 文章目录动手学深度学习 多层感知机() 核心概念与原理前言 前言 本文介绍多层感知机基本概念和我理解, 尽量以通俗易懂方式介绍 以下...

    动手学深度学习 图像分类实例-多层感知机(一) 核心概念与激活函数的作用

    动手学深度学习 多层感知机系列:


    拜年期间 没有电脑 就在亲戚家无聊的时候随手翻了翻《DIVE INTO DEEP LEARNING》
    复习多层感知机的时候发现这本书讲的蛮好的, 弥补了之前以为自己懂了的一些漏洞, 于是便决定回家记录下来。
    并根据书中的实例 巩固一下 多层感知机系列文章的链接已
    放至文章开头


    前言

    本文介绍多层感知机的基本概念和我的理解,
    尽量以通俗易懂的方式介绍


    以下是本篇文章正文内容

    正文

    之前写了一个softmax做图像分类系列的文章,其主要使用的是单层神经网络
    然而深度学习主要关注的是多层模型, 所以书本以多层感知机为例, 介绍多层神经网络的概念

    先看看单层神经网络和多层神经网络的对比

    单层神经网络

    在这里插入图片描述
    其公式如下
    在这里插入图片描述
    写成向量的形式
    o(i)=x(i)W+bo^{(i)}=x^{(i)}W+b

    多层神经网络

    这里以两层为例
    比起单层神经网络,它多包含了一层隐藏层,该层中有5个隐藏单元
    在这里插入图片描述
    假设隐藏层的输出为HH
    则该多层感知机的公式为
    H=XWh+bhH=XW_h+b_h
    O=HWo+boO=HW_o+b_o
    也就是将隐藏层的输入直接作为输出层的输出, 这样如果联立上面的式子
    在这里插入图片描述
    虽然加入了隐藏层,但是却依然等易于一个单层神经网络 而且不难发现,无论加多少个隐藏层,它的本质还是和单层神经网络等价。

    激活函数的重要性

    对于上述问题, 解决办法就是对每层的输出增加一个非线性变化, 也就是使用我们常说的激活函数
    对于各种激活函数的介绍可以看我这篇文章

    Pytorch(四) 几种简单激励函数的绘制与介绍

    多层感知机

    因此多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。
    多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本文之前定义的符号,多层感知机按以下方式计算输出
    在这里插入图片描述
    其中φ表示激活函数。这样一来,就不会产生之前的问题了,这也突出了激活函数的重要。

    • 在分类问题中,我们可以对输出O做softmax运算,并使用softmax回归中的交叉熵损失函数。
    • 在回归问题中,我们将输出层的输出个数设为1,并将输出O直接提供给线性回归中使用的平方损失函数。

    引用资料来源

    本文内容来自吴振宇博士的Github项目
    对中文版《动手学深度学习》中的代码进行整理,并用Pytorch实现
    【深度学习】李沐《动手学深度学习》的PyTorch实现已完成

    展开全文
  • 依稀记得看过其他一些博主写文章,谈到学习JS基础,要有系统去学习,作为小白我,自学,也不知道啥是有系统学习,那我干脆,直接把这基础经典书的目录给背了下来。 还是有些些用,至少脑子里是知道哪些...

     

    (本文源自“JS高级程序设计”第5章读后梳理)

    这一章主要讲的是JavaScript中的原生引用类型,包含的内容为:

    (注,和“JS基础——作用域、原型、闭包初探(上)”中的内容一样,这些都是JS中十分基础的知识,要十分熟悉的记忆在脑子里面。)

    依稀记得看过的其他一些博主写的文章,谈到学习JS基础,要有系统的去学习,作为小白的我,自学,也不知道啥是有系统的学习,那我干脆,直接把这本基础经典书的目录给背了下来。

    还是有些些用,至少脑子里是知道哪些内容在哪里。 X)

    应该没有人比我的方法更笨了。。。

    接着说正题:

    引用类型是JavaScript中的一种将数据和方法组织起来的数据结构。

    不能把它们叫做类,虽然JavaScript是面向对象的编程语言,但是JavaScript中是没有类和接口这些基本结构的,所以对引用类型的称呼更准确的是“对象定义”,因为它定义了同一类对象应该具有的属性和方法。

    应用类型的值就是它的一个实例,可以通过new操作符+构造函数来创建。


    这一章我们通过目录的的顺序来讲:Object、Array、Date、RegExp、Function、基本包装函数、单体内置对象。


    一、Object类型

    Object类型有三个关键点:

    1. 创建Object实例的第一种创建方式:
      var person = new Object();
    2. 创建Object实例的第二种方式:对象字面量

      var person = {
          name:"dingding",
          job:"software engineer",
          age:29
      };
    3. 方括号访问符:(这个不重要)

      就是通过方括号访问实例中的变量。假如有变量名是“first name”,这种玩意,不可能通过点运算符去访问,这个时候就需要通过这个方括号访问。(这是我不是很明白,有什么变量能定义为first name的形式?不应该是驼峰写法——firstName吗?)
      //如果实例中有一个变量名字长成了first name这个样子
      var name = person.first name;//显然,这是不可能的
      var name = person["first name"];//正解

    二、Array类型

    Array类型一些基本的创建方式这里就不详细的描述了,着重的还是去记忆一些Array类型的方法:

    检测数组、转换方法、栈方法、队列方法、重排序方法、操作方法、位置方法、迭代方法、归并方法。

    总共九个小的专题,一个一个的来:

    1. 检测数组:Array.isArray(value),检测value是不是一个数组;
    2. 转换方法:toString()、toLocaleString()、valueOf()、join()
      1. 前两个的作用就不说了。
      2. valueOf()返回数组本身。
      3. join(),将数组转换为字符串,以传入join()的字符为间隔。如果没有传入任何值,或者“undefined”,就按照默认的方式转换(和toString()相同)——以逗号为间隔。
    3. 栈方法:push()、pop()
      1. 栈方法,“后进先出”,就像一个“没有出口的盒子”,一个一个的把数据放进去,后放进去的先拿出来。
      2. push(),将数据放入数组的最后一位,可以一次性push()多个数据,返回push()后数组长度
      3. pop(),将数据从栈中弹出,一次只能弹出一个,返回弹出的数据
    4. 队列方法:shift()、unshift()
      1. 队列,“先进先出”,就把它想象成普通的排队好了,排在前面的先出去。
      2. shift(),将数组第一个数据弹出,一次一个,返回弹出的数据。搭配push()使用。
      3. unshift(),将数据推入数组第一位,一个可多个,返回数组长度,搭配pop()使用。
    5. 重排序方法:reverse()、sort()
      1. reverse(),将数组的数据,倒叙排列。
      2. sort()将数组升序排列——即从小到达,注意这里的从小到达,是字符的序号,而不是数字的大小。
        var arr =[1,3,5,15,25];
        arr.sort();//[1,15,25,3,5],是按照字符序号升序,而不是数字

        想要通过数字的大小排列,我们就需要给sort()方法传入一个compare()方法:

        var arr = [1,3,15,5,25];
        
        function compare(value1,value2){
            if(value1 < value2){
                return -1;
            }else if(value1 > value2){
                return 1;
            }else{
                return 0;
            }
        }
        
        arr.sort(compare);//[1,3,5,15,25]

         

    6. 操作方法:concat()、slice()、splice()
      1. concat(),可接受多个参数,创建数组的副本,将数据添加到数组的末尾,返回数组。
      2. slice(),接受两个参数,截取,两个参数分表表示开始截取位置,和结束截取位置。
        1. 返回原数组截取段的副本,结束截取位置的值不包含,可以这么记忆——数组中的[index1,index2)。
        2. 如果两个参数中有负数,表示的就是数组的长度加上该负数的结果。
      3. splice(),这个方法会直接在数组上操作,操作后,原数组会发生变化,不同于前两个方法。接收参数的方式很灵活,但可以理解为接收三段参数
        1. 第一个参数表示截取开始位置;
        2. 第二个参数表示,要删除的项数,会删除掉包括第一个位置的数据哦
        3. 第三个参数及以后的参数,都表示要插入到第一个参数位置及之后的数据。
        4. 当第二参数为0的时候,可以通过第三个参数实现插入数据;当第二个参数不为0的时候,可以实现替换数据。
        5. splice()函数返回截取出来的数组。
    7. 位置方法:indexOf()、lastIndexOf()
      1. 查找位置,传入两个参数,第一位是要找到数据,第二位开始查找的位置;
      2. indexOf()从前往后找,lastIndexOf()从后往前找;
      3. 返回索引值。
    8. 迭代方法:every()、some()、filter()、map()、forEach()
      1. 这些方法都需要传入一个匿名函数,匿名函数有接收三个参数:
        function(item,index,array){
            //需要进行的操作
        
        }
      2. every(),对数组中的每一个项,进行一个操作,如果数组每一个项在匿名函数中都return true,那么every()函数返回true,反之,返回false。

        var arr = [1,2,3,4,5];
        
        //要所有的项都满足>2,那么every()才会返回true
        //这里every()返回false
        var val = arr.every(function(item,index,array){
            item>2;
        });
      3. some(),与上面every()的操作相同,但是如果数组中有一个符合条件,就返回true。所以上面如果调用的是some()就返回true。

      4. filter(),返回满足条件的值组成的数组。

        var arr = [1,2,3,4];
        
        var val = arr.filter(function(item,index,array){
            return item>2;
        });//返回一个数组,为[3,4,5]
      5. map(),对数组的每一项进行一个操作,返回经过操作后的数组值 所组成的数组。

        var arr = [1,2,3,4,5];
        
        var val = arr.map(function(item,index,array){
            retrun item*2;
        });//返回一个数组,[2,4,6,8,10]
      6. forEach(),对数组的每一项运行一个操作,没有返回值。

        var arr = [1,2,3,4];
        
        var val = arr.forEach(function(item,index,array){
            //执行某些操作,然后返回这个数组
        
        });
    9. 归并方法:reduce()、reduceRight()

      1. 对数组进行迭代,并归并为一个值;

      2. reduce(),从前到后归并;reduceRight(),从后到前归并。

      3. 需要向reduce()、reduceRight()中传递一个匿名函数,匿名函数包含四个参数——前一项,当前项,索引,数组。看代码:

        var arr = [1,2,3,4,5];
        
        var val1 = arr.reduce(function(prev,cur,index,array){
            //需要进行的操作
            return prev + cur;
        });//返回整个数组项相加的结果

    三、Date类型

    继承的方法,日期格式化方法,日期/时间组件方法

    其他的都不细说了,简单的记一下两个关键点:

    1. 日期的格式化书写方式:
      1. 6/13/2020
      2. january 12,2020
      3. Tue January 12 2020 00:00:00 GMT-0700
      4. 2020-01-12-T00:00:00
    2. 加时间戳
      //获取代码运行到此处的时间点
      var timeBegin = +new Date();
      ...
      var timeEnd = +new Date();
      
      //获取代码运行到此处的时间点
      var timeBegin = Date.now();
      ...
      var timeEnd = Date.now();

       

    四、RegExp类型

    有助于理解RegExp的是一种方式是记住三种的东西: 

    RegExp实例中是我们要应用的正则表达式,在目标字符串(String)上面应用我们的模式(pattern),然后得到我们的匹配项(match)。


    正则表达式,两种创建方式:字面量、RegExp实例

    RegExp字面量这样创建:

    //这里的pattern就是我们要用到的正则表达式字面量,
    //flag有三个值:i,g,m,分别表示忽略大小写,对整个字符串应用,对多行应用
    var expression = /pattern/flag;

    RegExp实例像这样创建:

    //pattern就是要应用的模式,flag的取值也是i,g,m
    var expression = new RegExp("pattern","flag");

    注意在模式中使用的元字符都需要转义:{ [ ( * + \ . ^ | ? $ ) ] }

    RegExp实例属性,RegExp实例方法、RegExp构造函数,可以用这个图来概括:

     

    1. exec()传入目标字符串,然后返回一个数组,数组中的内容为图中所示;
    2. test()传入目标字符串,如果目标字符串上有符合调用者——RegExp实例(或者看做是pattern)的匹配项,则返回true;没有,则返回false。
    3. toString()、toLocaleString(),返回正则表达式的字面量。
    4. valueOf(),返回正则表达式本身。
    5. 长属性名都可以用相应的短属性名来代替。只不过这些短属性名大都不是有效的ES标识符,因此必须通过方括号语法来访问:
      var text = "this has been a short summer";
      var pattern = /(.)hort/g;
      
      if(pattern.test(text)){
          alert(RegExp.$_);    //this has been a short summer
          alert(RegExp["$&"]); //short
          alert(RegExp["$+"]); //s
          alert(RegExp["$`"]); //this has been a 
          alert(RegExp["$'"]); //summer
          alert(RegExp["$*"]); //false
          
          alert(RegExp.$1);    //s
      }
    6. 第一个捕获组访问符的简写形式:$1,第二捕获组访问符简写形式为:$2。。。。

    五、Function类型

    按顺序介绍:没有重载(深入理解)、函数声明与函数表达式、作为值的函数、函数内部属性、函数属性和方法

    在这之前我们要知道创建Function类型实例的三种方式:

    1. 函数声明:
      function addNum(num1,num2){
          //要执行的函数体
      
      }
    2. 函数表达式:

      var addNum = function(){
          //要执行的内容
      
      }
    3. 利用new创建实例:(不推荐这种方式,会导致解析两次代码,解析ES代码,第二次解析传入构造函数中的字符串)

      //接收三个参数,最后一个参数为再实例中进行的操作
      //不推荐这种使用方式是因为创建的过程中,需要
      var addNum = new Function("num1","num2","return num1+num2");

    开始一个一个的介绍:

    1. 没有重载:前面讲到过,因为函数的接收参数是通过一个数组接受的,虽然定义函数的时候可以定义一定数量要求的参数,比如要求传入两个参数,但是在实际调用的时候时,可以传入一个参数、两个参数、三个参数、四个参数,甚至更多。
      1. 这个时候函数是没有函数签名的,真正的重载是做不到的。
      2. 在ES5中,函数名,其实是一个指向堆内存中一个函数体,后面重写的同名函数,会将前面的同名函数覆盖掉。
    2. 函数声明与函数表达式:具体的形式前面都讲到了,这里助于一个点就是:
      1. 函数声明提升:function declaration hoisting,在对函数求值时,JavaScript引擎在第一遍声明函数并将它们放到源代码树的顶部。
        //由于addNum()是通过函数声明创建的,所以addNum()会被放到顶部,
        //所以先调用,或声明,也可以得到正确的答案
        alert(addNum(1,3));//4
        
        function addNum(num1,num2){
            return num1+num2;
        }
    3. 作为值的函数:即一个函数作为另一个函数的值,被return,这里我们在闭包再重点讲解。。。

      function compare(propertyName){
          return function(object1,object2){
              name1 = object1[propertyName];
              name2 = object2[propertyName];
              
              if(name1 < name2){
                  return -1;
              }else if(name1 > name2){
                  return 1;
              }else{
                  return 0;
              }
          }
      }
    4. 函数的内部属性:arguments.callee,this,caller。

      1. arguments.callee,取得当前函数的引用,可以应用于递归函数的解耦,这个属性在严格模式不能使用。

      2. this,表示当前函数的执行环境对象;

      3. caller表示调用当前函数的函数的引用。

        function outer(){
            inner();
        }
        
        function inner(){
            alert(inner.caller);
        }
        
        outer();

        这里调用outer(),会调用inner()函数,inner函数内部又会通过caller,将调用inner的函数(也就是outer())的函数体给通过警告框展示出来。
        注意:这样可能会导致outer()的函数体内容泄漏。
        在严格模式下,不允许向caller属性赋值。

    5. 函数属性和方法

      1. 内部属性:length,prototype。
        length就是定义函数的定义的参数个数;
        prototype,原型,在后面将原型的时候,再细说。

      2. 内部方法:apply(),call(),bind()。

        1. apply(),接收两个参数,调用者要运行的环境(也就是调用者的this值),和 传入调用者的参数数组(可以是Array实例,也可以是arguments对象)。

        2. call(),接收两个参数,和apply类似,只是第二参数传入时,必须逐个列举出来。

        3. bind(),这个方法会创建一个实例,然后将调用者的this值绑定为传入bind()的参数。

        4. 这些方法的实现细节不在这里细讲,但需要去搞清楚。

        5. 这些方法的优点,会在后面讲到——函数绑定、函数柯里化。。

    六、基本包装类

    ES中的三种特殊的引用类型:Boolean、Number、String。

    它们三个是基本类型,但在创建以后,ES会在后台创建一个对应的基本包装类,以便我们能够调用响应的方法。

    就是说,这三种类型本来时基本类型,但在创建后,后台会为它们创建一个对应的对象,方便调用关于它们的一些方法,来操作它们。

    1. Boolean:没啥可说的,,因为建议永远不要使用Boolean对象
    2. Number:同样不建议直接实例化Number,和Boolean一样。三个方法,有兴趣了解的童鞋自己看书哦。
      1. toFixed(),将数字保留小数位,保留的位数由传入函数的参数值决定;
      2. toExpronential(),将数字保留位数,但是这是指数,同样,保留位数由传入函数的参数数值决定;
      3. toPrecision(),将数字保留位数,至于是小数还是指数,由引擎“自己看着办”。
    3. String:记住这么一些方法就好了。。这里都不将这些方法了,大家可以自行看书了解。。
      1. 字符方法:charAt()、charCodeAt()。
      2. 字符串操作方法:concat()、slice()、substring()、substr()。
      3. 字符位置方法:indexOf()、lastIndexOf()。
      4. trim()。
      5. toLowerCase()、toUpperCase()。
      6. 模式方法:match()、search()、replace()、split()。
      7. localeCompare()。
      8. fromCharCode()。
      9. HTML方法。

    七、单体内置对象

    ES中对内置对象的定义是:不依赖于宿主环境的对象,这些对象在ES程序执行之前就已经存在了。

    意思是说开发人员不必显示的实例化内置对象,因为它们已经实例化了。

    Object、Array、String等都是内置对象。

    这里介绍两个ES定义的单体内置对象:Global和Math。

    1. Global对象:终极“兜底”对象,不属于任何其他对象的属性和方法,最终都是它的属性和方法。
      1. 我现在还不知道怎么用它这个东西,先知道有这么个东西存在,到以后在下去细致的了解吧。。。
      2. 记住三个方法:
        1. encodeURIComponent(),对uri的某一段进行编码,把uri的所有没标准字符进行编码转换;
          对应的就是decodeURIComponent(),
        2. encodeURI(),对整个uri进行编码。与上面这个方法的区别就是:
          encodeURI()不会对本身属于URI的特殊字符进行编码,如冒号、正斜杠、问号、井字号而encideURIComponent()会对发现的所有非标准字符进行编码
          一般来说,使用encodeURIComponent()方法的时候要比使用encodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是基础URI进行编码。
        3. eval()方法,ES中最强大的一个方法,这个方法就像是一个完整的ES解析器。
          1. 只接受一个参数,即要执行的ES字符串。
          2. 具体的大家自行看书。
    2. Math对象,记住几个方法:
      1. ceil(),向上舍入;
      2. floor(),向下舍入;
      3. round(),“四舍五入”;
      4. random(),随机数,范围[0,1)。
    展开全文
  • 活动目录的配置以及域控制器在网络中的作用已经有了个大致的了解了。当然,我写的都是一些关于操作上的文章,至于原理性的东西建议大家自己到网上搜一下或者到书店里去买几微软的官方教材看一下,因为原理性的...
  • 著名编程图书作家Ivor Horton引导学习Visual C++ 2013这C++语言畅销遵循Ivor Horton一贯畅销风格。Horton非常详尽地介绍了标准C++语言和Visual C++。  《Visual C++ 2013入门经典(第7版)》根据Visual C++ ...
  • JSP是当前网络编程主流语言,在现代企事业单位网络应用程序开发起到了重要作用系统是根据实际需求而设计,通过用户ID密码论证解决方案,对实际应用领域进行深入调查分析,已经基本上成功地实现了...
  • 索引是对数据库表中一列或者多列值进行排序一种数据结构,如果把数据库中表比作一本书,索引就是这本书的目录,通过目录可以快速查找到书中指定内容位置 索引也是一张表,该表中存储着索引值和这个值...
  • 《算法竞赛入门经典(第2版)》是一本算法竞赛入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12 章,包括程序设计入门、循环结构程序设计、数组和...
  • 更通俗说,数据库索引好比是一本书前面的目录,能加快数据库查询速度。上述SQL语句,在没有索引情况下,数据库会遍历全部200条数据后选择符合条件;而有了相应索引之后,数据库会直接在索引查找符合条件...
  • MySQL中的索引

    千次阅读 2020-06-28 01:09:53
    索引是对数据库表中一列或者多列值进行排序一种数据结构,如果把数据库中表比作一本书,索引就是这本书的目录,通过目录可以快速查找到书中指定内容位置。 索引也是一张表,该表中存储着索引值和这个值...
  • 对应上面两个文件,在目录中显示如下 怎么改呢?很简单,就是你先打开个你以前写过项目,进去看看你电脑能轻松打开项目这两个版本号分别是多少,然后再用记事本打开从网上下载下来对应文件,修改版本号为...
  • 读秀书签获取软件

    2018-04-28 16:29:45
    读秀书签获取软件,书签的作用就是在读过的内容处做个记好,以便下次再读,这里给您...如果一本书真的对你有价值,而PDF里面本身没有目录页,或者即使有目录也是图片,没有链接的话,值得对你经常要参考的PDF做一个书签。
  • 而要写作这样一本书,仅仅靠我个人知识和力量,显然十分有限,所以我想到了联合更多作者,共同来完成这样一本书。  我首先游说老杨(杨廷琨),他几年来在自己博客上积累了1500多篇高质量原创技术文章,而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 812
精华内容 324
关键字:

一本书中目录的作用