精华内容
下载资源
问答
  • 毕业论文格式四大坑:页眉,页脚,图表目录参考文献 整理了一下毕业论文格式上的一些坑和参考文章,简单易上手。 页眉页脚:毕业论文的页眉、页脚以及参考文献插入经验分享 图表目录:如何word中插入图表目录 ...

    毕业论文格式四大坑:页眉,页脚,图表目录,参考文献

    整理了一下毕业论文格式上的一些坑和参考文章,简单易上手。
    页眉页脚:毕业论文的页眉、页脚以及参考文献插入经验分享
    图表目录:如何在word中插入图表目录
    参考文献:论文如何引用参考文献

    注意的地方:
    1.自动生成图表目录时不同章节的会自动隔一行,只要把光标放在该行delete一下就行
    2.正文前的页会自动生成页眉,出现一条横线。参考word论文页眉的横线怎么删除去掉

    展开全文
  • 文章目录一、介绍二、使用三、异步解决方案区别:四、使用场景参考文献 一、介绍 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同 回顾下上文提到的解决异步的手段: 回调函数 ...

    故心故心故心故心小故冲啊



    在这里插入图片描述

    一、介绍

    Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同

    回顾下上文提到的解决异步的手段:

    • 回调函数
    • promise

    那么,上文我们提到promsie已经是一种比较流行的解决异步方案,那么为什么还出现Generator?甚至async/await呢?

    该问题我们留在后面再进行分析,下面先认识下Generator

    Generator函数
    执行 Generator 函数会返回一个遍历器对象,可以依次遍历 Generator 函数内部的每一个状态

    形式上,Generator函数是一个普通函数,但是有两个特征:

    • function关键字与函数名之间有一个星号
    • 函数体内部使用yield表达式,定义不同的内部状态

    二、使用

    Generator 函数会返回一个遍历器对象,即具有Symbol.iterator属性,并且返回给自己

    function* gen(){
      // some code
    }
    
    var g = gen();
    
    g[Symbol.iterator]() === g
    // true
    

    通过yield关键字可以暂停generator函数返回的遍历器对象的状态

    function* helloWorldGenerator() {
      yield 'hello';
      yield 'world';
      return 'ending';
    }
    var hw = helloWorldGenerator();
    

    上述存在三个状态:hello、world、return

    通过next方法才会遍历到下一个内部状态,其运行逻辑如下:

    • 遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的value属性值。
    • 下一次调用next方法时,再继续往下执行,直到遇到下一个yield表达式
    • 如果没有再遇到新的yield表达式,就一直运行到函数结束,直到return语句为止,并将return语句后面的表达式的值,作为返回的对象的value属性值。
    • 如果该函数没有return语句,则返回的对象的value属性值为undefined
    hw.next()
    // { value: 'hello', done: false }
    
    hw.next()
    // { value: 'world', done: false }
    
    hw.next()
    // { value: 'ending', done: true }
    
    hw.next()
    // { value: undefined, done: true }
    

    done用来判断是否存在下个状态,value对应状态值

    yield表达式本身没有返回值,或者说总是返回undefined

    通过调用next方法可以带一个参数,该参数就会被当作上一个yield表达式的返回值

    function* foo(x) {
      var y = 2 * (yield (x + 1));
      var z = yield (y / 3);
      return (x + y + z);
    }
    
    var a = foo(5);
    a.next() // Object{value:6, done:false}
    a.next() // Object{value:NaN, done:false}
    a.next() // Object{value:NaN, done:true}
    
    var b = foo(5);
    b.next() // { value:6, done:false }
    b.next(12) // { value:8, done:false }
    b.next(13) // { value:42, done:true }
    

    正因为Generator函数返回Iterator对象,因此我们还可以通过for…of进行遍历

    function* foo() {
      yield 1;
      yield 2;
      yield 3;
      yield 4;
      yield 5;
      return 6;
    }
    
    for (let v of foo()) {
      console.log(v);
    }
    // 1 2 3 4 5
    

    原生对象没有遍历接口,通过Generator函数为它加上这个接口,就能使用for…of进行遍历了

    function* objectEntries(obj) {
      let propKeys = Reflect.ownKeys(obj);
    
      for (let propKey of propKeys) {
        yield [propKey, obj[propKey]];
      }
    }
    
    let jane = { first: 'Jane', last: 'Doe' };
    
    for (let [key, value] of objectEntries(jane)) {
      console.log(`${key}: ${value}`);
    }
    // first: Jane
    // last: Doe
    

    三、异步解决方案

    回顾之前展开异步解决的方案:

    • 回调函数
    • Promise 对象
    • generator 函数
    • async/await
      这里通过文件读取案例,将几种解决异步的方案进行一个比较:

    回调函数
    所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,再调用这个函数

    fs.readFile('/etc/fstab', function (err, data) {
      if (err) throw err;
      console.log(data);
      fs.readFile('/etc/shells', function (err, data) {
        if (err) throw err;
        console.log(data);
      });
    });
    

    readFile函数的第三个参数,就是回调函数,等到操作系统返回了/etc/passwd这个文件以后,回调函数才会执行

    Promise
    Promise就是为了解决回调地狱而产生的,将回调函数的嵌套,改成链式调用

    const fs = require('fs');
    
    const readFile = function (fileName) {
      return new Promise(function (resolve, reject) {
        fs.readFile(fileName, function(error, data) {
          if (error) return reject(error);
          resolve(data);
        });
      });
    };
    
    
    readFile('/etc/fstab').then(data =>{
        console.log(data)
        return readFile('/etc/shells')
    }).then(data => {
        console.log(data)
    })
    

    这种链式操作形式,使异步任务的两段执行更清楚了,但是也存在了很明显的问题,代码变得冗杂了,语义化并不强

    generator
    yield表达式可以暂停函数执行,next方法用于恢复函数执行,这使得Generator函数非常适合将异步任务同步化

    const gen = function* () {
      const f1 = yield readFile('/etc/fstab');
      const f2 = yield readFile('/etc/shells');
      console.log(f1.toString());
      console.log(f2.toString());
    };
    

    async/await
    将上面Generator函数改成async/await形式,更为简洁,语义化更强了

    const asyncReadFile = async function () {
      const f1 = await readFile('/etc/fstab');
      const f2 = await readFile('/etc/shells');
      console.log(f1.toString());
      console.log(f2.toString());
    };
    

    区别:

    通过上述代码进行分析,将promise、Generator、async/await进行比较:

    • promise和async/await是专门用于处理异步操作的

    • Generator并不是为异步而设计出来的,它还有其他功能(对象迭代、控制输出、部署Interator接口…)

    • promise编写代码相比Generator、async更为复杂化,且可读性也稍差

    • Generator、async需要与promise对象搭配处理异步情况

    • async实质是Generator的语法糖,相当于会自动执行Generator函数

    • async使用上更为简洁,将异步代码以同步的形式进行编写,是处理异步编程的最终方案

    四、使用场景

    Generator是异步解决的一种方案,最大特点则是将异步操作同步化表达出来

    function* loadUI() {
      showLoadingScreen();
      yield loadUIDataAsynchronously();
      hideLoadingScreen();
    }
    var loader = loadUI();
    // 加载UI
    loader.next()
    
    // 卸载UI
    loader.next()
    

    包括redux-saga中间件也充分利用了Generator特性

    import { call, put, takeEvery, takeLatest } from 'redux-saga/effects'
    import Api from '...'
    
    function* fetchUser(action) {
       try {
          const user = yield call(Api.fetchUser, action.payload.userId);
          yield put({type: "USER_FETCH_SUCCEEDED", user: user});
       } catch (e) {
          yield put({type: "USER_FETCH_FAILED", message: e.message});
       }
    }
    
    function* mySaga() {
      yield takeEvery("USER_FETCH_REQUESTED", fetchUser);
    }
    
    function* mySaga() {
      yield takeLatest("USER_FETCH_REQUESTED", fetchUser);
    }
    
    export default mySaga;
    

    还能利用Generator函数,在对象上实现Iterator接口

    function* iterEntries(obj) {
      let keys = Object.keys(obj);
      for (let i=0; i < keys.length; i++) {
        let key = keys[i];
        yield [key, obj[key]];
      }
    }
    
    let myObj = { foo: 3, bar: 7 };
    
    for (let [key, value] of iterEntries(myObj)) {
      console.log(key, value);
    }
    
    // foo 3
    // bar 7
    

    参考文献

    https://es6.ruanyifeng.com/#docs/generator-async

    展开全文
  • 最近用elsiver模板写论文的时候,编译完发现参考文献部分没有出现References的字样,解决方法如下: 首先我使用的模板是从CTAN上下载的:地址 可以看到里面并没有elsarticle.cls文件,这大概就是出现这个问题的...

    最近在用elsevier模板写论文的时候,编译完发现参考文献部分没有出现References的字样,解决方法如下:

    首先我使用的模板是从CTAN上下载的:地址
    可以看到里面并没有elsarticle.cls文件,这大概就是出现这个问题的原因。

    怎么解决呢?
    查阅了网上的资料后,发现非常简单,步骤如下:
    1.打开终端
    2.目录切换到模板文件夹
    3.编译.ins文件,代码如下:

    latex elsarticle.ins
    

    运行完就得到.cls文件了。把它放在.tex文件同一个目录下就能解决上述问题了。

    展开全文
  • 情况一(自身文件编码问题)情况二(客户端编码问题) 情况三:读取外部文件时,出现乱码三、编码怎么转换四、参考文献和文件索引    讨论python编码之前,我先了解了几种编码的由来。 一、编码类型 1、...

    目录

    一、编码类型
    二、为什么要转码?
    情况一(自身文件编码问题)
    情况二(客户端编码问题) 
    情况三:读取外部文件时,出现乱码
    三、编码怎么转换
    四、参考文献和文件索引 

     

    在讨论python编码之前,我先了解了几种编码的由来。

    一、编码类型

    1、ascci码

    ascci码由美国人发明,用1个字节(byte)存储英文和字符,前期用了128个,后来新加了其他欧洲国家的符号,128~255这一段。
    256个字符,基本上就是键盘上的所有字符。

    2、unicode

    2个byte,65535。因为后来发现还有其他国家的语言,而256个字符太少。

    3、utf-8

    UTF-8是Unicode的实现方式之一。
    UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
    UTF-8的编码规则很简单,只有二条:

    • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
    • 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

    下表总结了编码规则,字母x表示可用编码的位。


    Unicode符号范围         |       UTF-8编码方式
    (十六进制)                    |       (二进制)
    --------------------+---------------------------------------------
    0000 0000-0000 007F | 0xxxxxxx
    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

     

    4、GBK

    GBK全称《汉字内码扩展规范》(GBK即“国标)就是国家制定的标准。

    其实GBK在就是将每个汉字对应一个数字编码,http://www.mytju.com/classCode/tools/encode_gb2312.asp 这个网址可以查看到具体的编码对应关系:

    比如:中国  二字,对应的各种编码如下。

     

     

    二、为什么要转码?

    在python程序运行过程中,如果遇到编码不一致(就好像中国人和美国人在一起,如果语言不通的话,就无法沟通。),就需要进行转码。相当于需要有一个翻译。

    在运行Python程序的过程中,会涉及到三个方面的编码:

    1. Python程序文件本身的编码(test.py文件的编码)--自身文件

    2. Python程序运行时环境的编码(比如securecrt,类似mysql客户端连接时的编码)--客户端
    3. Python程序读取外部文件的编码(引用外部文件的编码)--外部文件

    下面对于以上三种情况为什么需要转码分别进行说明:

    情况一(自身文件编码问题)

    python2默认编码为ascii,如果我们写的代码里面有非ascii字符,比如中文字符,py程序就会不认识。

    就相当于两个人都用普通话在沟通,其中某一个人突然蹦出一句家乡话,另外一个人突然就懵逼了,同样,python也懵逼了。

    记得刚开始接触python时,就碰到了经典错误,然后网上各种找资料,后来照着网上前辈们的设置,也没有深究其原理。

    经典错误范例:

    1

    2

    3

    #!/usr/bin/env python

     

    print '你好 大鸟'

    运行时会报错:

    SyntaxError: Non-ASCII character '\xe4' in file t.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

    错误原因:python2默认的编码为ascii,python3默认编码为utf-8,而文件里面包含了非ASCII字符,所以他肯定不认识,就报错了。

    可以通过sys模块查看默认编码:

    1

    2

    >>> sys.getdefaultencoding()

    'ascii'

    怎么解决?

    针对情况一解决方法:(目的都是将默认编码修改成utf-8,这样,程序既可以认识ascii,又可以认识utf-8了)

    1

    2

    3

    4

    解决方法一:

    import sys

    reload(sys)

    sys.setdefaultencoding('utf-8')

    1

    2

    解决方法二:

    #coding:utf8

    1

    2

    解决方法三:

    #-*- coding:utf-8 -*-

      

     

    情况二(客户端编码问题) 

    我们在使用mysql时,如果客户端设置为latin,而服务端为utf-8,查询内容有中文时,就会出现乱码。同样,我们在使用python时,secureCRT也是客户端,服务端就是我们连接的服务器。

    范例:

    1、客户端设置secureCRT编码为UTF-8

     

    2、服务端测试

     

    3、设置客户端为非utf-8时,就会出现乱码

     

    结果如下:

    而且从步骤2中也可以看出,python自动识别变量a='中国test'为utf-8的编码,如果客户端(secureCRT)和服务端(python)编码不一致时,就会出现乱码。

    情况二解决办法:设置客户端的编码格式和服务端一致!

     

    情况三:读取外部文件时,出现乱码

    比较典型的就是:当我们从windows上编辑一个文件,上传到linux上时,会惊奇的发现^M符号。这个就是因为windows和linux的回车换行符不一致导致的,此时如果是python文件时,python也会报错。

     

    我们在linux先查看时会有特殊符号:

    这时,如果我们需要去掉^M,需要使用dos2unix工具转换一下,去掉windows上的格式。

     

    三、编码怎么转换

    unicode为桥梁,utf-8和gbk互转需要经过unicode这个翻译,不然他们二者是无法直接沟通。

     

    操作范例:

    1、查看默认编码,python遇到中文字符,会识别他是utf-8编码,chardet模块可以识别编码格式,但是也不是100%,下面他识别出myname为utf-8的概率为75%。

    2、将utf-8转为unicode编码

    utf-8转为unicode编码是,需要指定他本身是什么格式的编码,类似于加密。查看myname_unicode变量时,发现他是unicode编码格式了。

    3、将unicode编码转为utf-8

    具体转换操作如下:

     

     例子:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    >>> a=u'中国'  #unicode编码格式的字符串

    >>> a_utf8=a.encode('utf-8')  #将unicode转成utf-8编码格式

    >>> a_utf8

    '\xe4\xb8\xad\xe5\x9b\xbd'

    >>> a_unicode=a_utf8.decode('utf-8'#从utf8编码格式转回unicode编码格式

    >>> a_unicode

    u'\u4e2d\u56fd'

    >>> a

    u'\u4e2d\u56fd'

    >>>

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    >>> b_gbk=a_unicode.encode('gbk')  #将上面unicode格式的转成gbk编码格式

    >>> b_gbk

    '\xd6\xd0\xb9\xfa'

    >>> b_unicode=b_gbk.decode('gbk'#转回unicode编码格式

    >>> b_unicode   #最后发现,a_unicode、b_unicode和原始的unicode编码的a都相等。

    u'\u4e2d\u56fd'

    >>> a_unicode

    u'\u4e2d\u56fd'

    >>> a

    u'\u4e2d\u56fd'

    >>>

     

    a.encode(* *):将a 编码 为 * *编码格式的字符串或unicode对象

    a.decode(* *):将a 解码 为 unicode编码格式的字符串或unicode对象

     另外:

    Python将字符串格式的unicode编码转换成unicode编码,如:\u53eb\u6211,需要转换成中文时有两种方式

    1.使用eval:

    eval("u"+"\'"+unicodestr+"\'")

    2.使用decode:

    str1 = '\u4f60\u597d'  
    print str1.decode('unicode_escape')  
    你好 

    unicodestr.decode('unicode_escape')  # 将转义字符\u读取出来

    四、参考文献和文件索引 

    1、汉字对应表:http://www.chi2ko.com/tool/CJK.htm

    2、阮一峰的网站

    展开全文
  • 选中所有的尾注文本,点“格式︱字体”,改为“隐藏文字”,切换到普通视图,选择“视图︱脚注”,此时所有的尾注出现在窗口的下端,在“尾注”下拉列表框中选择“尾注分割符”,将默认的横线删除。同样的方法删除...
  • 算法导论(part2)

    2010-09-09 22:54:12
    第一个循环不变式出现在第2章中;整本书中循环不变式共用到了数十次。 ·很多概率分析都进行了重新编写。特别地,我们在十多处用到了“指示器随机变量”(indicator random variable)技术,它简化了概率分析,在随机...
  • 算法导论(part1)

    2010-09-09 22:51:05
    第一个循环不变式出现在第2章中;整本书中循环不变式共用到了数十次。 ·很多概率分析都进行了重新编写。特别地,我们在十多处用到了“指示器随机变量”(indicator random variable)技术,它简化了概率分析,在随机...
  • (1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。 (2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在...
  • 《MATLAB 神经网络 43 个案例分析》 王小川等著 阅读人群:编程 最近几年比赛中,智能算法越来越多地出现在本科生的比赛中了,如果你想 14 在国赛或者美赛中使用一些新鲜的算法,那么还是学习这本书中的一些...
  •  本书结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,也是各层次C程序员的优秀实践指南。 作者简介 Steve Summit,著名的C语言专家。Usenet C FAQ的创始人和维护者,有近30年的C编程经验。...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有...
  • * 目录 * 1. 前言 * 2. 声明和初始化 o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 64 位类型是什么样的? o 2.3 怎样定义和声明全局变量和函数最好? o 2.4 extern 函数声明中是什么意思? o ...
  •  本书结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,也是各层次C程序员的优秀实践指南。 作者简介 Steve Summit,著名的C语言专家。Usenet C FAQ的创始人和维护者,有近30年的C编程经验。...
  • 为什么这些问题如此频繁地出现? 60 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 60 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 60 5.17 说真的...
  • 参考文献 403 索引 405 编辑手记 409 设计手记:属于DBA的记事簿 411 序言  推荐序  2.0时代的DBA专家圈子  看了Eygle发来的《Oracle DBA手记》的手稿,感到这本书的写作思路很有些新意。随着数据库技术自动化...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    利用随机函数一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    《你必须知道的495个C语言问题》结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,也是各层次C程序员的优秀实践指南。 -----------------------------------------------------------------------...
  • 除了作为入门教程之外,本文还试图成为可以日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说,这个目标还是完成得不错的——你看,我自己也没能把所有的东西记下来,不是吗? 恢复格式 文本格式约定...
  • 1.9 参考文献 16 第2章 c++概览 19 2.1 为什么是c++ 19 2.2 程序设计范型 19 2.3 过程式程序设计 20 2.3.1 变量和算术 21 2.3.2 检测和循环 22 2.3.3 指针和数组 23 2.4 模块程序设计 23 2.4.1 分别编译 24...
  • 1.9 参考文献 16 第2章 c++概览 19 2.1 为什么是c++ 19 2.2 程序设计范型 19 2.3 过程式程序设计 20 2.3.1 变量和算术 21 2.3.2 检测和循环 22 2.3.3 指针和数组 23 2.4 模块程序设计 23 2.4.1 分别编译 24...
  •  可能遇到的问题有,数据交互过程中,出现由于属性名的差距导致的数据交互失败。由于Css属性设置的问题,导致界面不完整等等。设计的算法都是自己编写的,可能存在不是最优算法的情况。 二、设计正文 1 需求...
  • C++程序设计语言(特别版)--源代码

    热门讨论 2012-04-23 07:33:51
    1.9 参考文献 16 第2章 c++概览 19 2.1 为什么是c++ 19 2.2 程序设计范型 19 2.3 过程式程序设计 20 2.3.1 变量和算术 21 2.3.2 检测和循环 22 2.3.3 指针和数组 23 2.4 模块程序设计 23 2.4.1 分别编译 24...
  • 数据库课程设计(基于B/S)

    热门讨论 2008-12-28 15:28:06
    五、应收集的资料及主要参考文献 [1] 王 珊、陈 虹编著,数据库系统原理教程,清华大学出版社,2003. [1] 金银秋主编,数据库原理与设计,科学出版社,2000. [2] 李建中 王珊,数据库系统原理,电子工业出版社,1998...
  • 目录 引言 框架 明确定义 问题定位 指标拆解 原因分析 例题 参考文献 引言 数据分析面试题中,常常会出现这样的问题: 机票的成交转化率下降了,怎么分析。 航班公司觉得...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

参考文献怎么出现在目录