解析函数

前端面试题2019

泄露秘密 提交于 2019-11-30 07:17:39
1.var,let,const区别 (1)var存在变量提升,let和const不存在变量提升,所以只能在变量声明之后使用,否则会报错。 (2)const不可修改,声明时,直接初始化,var,let可修改,但是如果const指向的是一个引用值,只需要保证引用值的地址不改变即可。 (3)let和const都是块级作用域,var是函数级作用域。 (4)let,const都不允许在相同的作用域内声明同一变量。 2.事件冒泡、事件委托以及事件捕获? 事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行。冒泡的终点是window。 阻止事件冒泡在子级元素上面加上e.stopPropagation()阻止事件冒泡。 事件委托其实是使用了冒泡的原理,从点击的元素开始,以递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能。 还有一个好处就是可以处理动态插入dom中的元素,直接绑定的方式是不行的。 事件捕获是最外层的事件先被触发,最后才是我们点击的button事件被触发,这便是事件捕获。 阻止事件捕获的方式是e.stopPropagation()。 3.防抖: 理解:在车站上车,人员上满了车才发走重点是人员上满触发一次。 场景:实时搜索,拖拽。 实现: //每一次都要清空定时器,重新设置上计时器值

scrapy学习笔记(二)框架结构工作原理

淺唱寂寞╮ 提交于 2019-11-30 06:17:33
scrapy结构图: scrapy组件: ENGINE:引擎,框架的核心,其它所有组件在其控制下协同工作。 SCHEDULER:调度器,负责对SPIDER提交的下载请求进行调度。 DOWNLOADER:下载器,负责下载页面(发送HTTP请求/接收HTTP响应)。 SPIDER:爬虫,负责提取页面中的数据,并产生对新页面的下载请求。 MIDDLEWARE:中间件,负责对Request对象和Response对象进行处理。 ITEM PIPELINE:数据管道,负责对爬取到的数据进行处理。 对于用户来说,Spider是最核心的组件,Scrapy爬虫开发是围绕实现Spider展开的。 框架中的数据流: REQUEST:scrapy中的HTTP请求对象。 RESPONSE:scrapy中的HTTP响应对象。 ITEM:从页面中爬取的一项数据。 Request和Response是HTTP协议中的术语,即HTTP请求和HTTP响应,Scrapy框架中定义了相应的Request和Response类,这里的Item代表Spider从页面中爬取的一项数据。 scrapy大致工作流程: 当SPIDER要爬取某URL地址的页面时,需使用该URL构造一个Request对象,提交给ENGINE。 ENGINE将Request对象传给SCHEDULER,SCHEDULER对URL进行去重,按某种算法进行排队

Scrapy框架的基本组成及功能使用

本秂侑毒 提交于 2019-11-30 06:17:20
1.什么是scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。框架的本质就是集成各种功能、具有很强通用性的项目模板。 2.安装    Linux: pip3 install scrapy   Windows:===》见Twisted安装 a. pip3 install wheel b. 下载twisted http: / / www.lfd.uci.edu / ~gohlke / pythonlibs / #twisted c. 进入下载目录,执行 pip3 install Twisted‑ 17.1 . 0 ‑cp35‑cp35m‑win_amd64.whl d. pip3 install pywin32 e. pip3 install scrapy 3.基础使用===》相关命令都是在命令行执行   3.1.创建项目:scrapy startproject 项目名称   3.2.创建爬虫应用程序:       cd project_name(进入项目目录)       scrapy genspider 应用名称 爬取网页的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)       在步骤2执行完毕后,会在项目的spiders中生成一个应用名的py爬虫文件   3.3

几行Python代码快速解析、整理上万份数据文件

六眼飞鱼酱① 提交于 2019-11-30 05:45:48
在这个世界上,人们每天都在用 Python 完成着不同的工作。而文件操作,则是大家最常需要解决的任务之一。使用 Python,你可以轻松为他人生成精美的报表,也可以用短短几行代码快速解析、整理上万份数据文件。 当我们编写与文件相关的代码时,通常会关注这些事情: 我的代码是不是足够快?我的代码有没有事半功倍的完成任务? 在这篇文章中,我会与你分享与之相关的几个编程建议。我会向你推荐一个被低估的 Python 标准库模块、演示一个读取大文件的最佳方式、最后再分享我对函数设计的一点思考。 下面,让我们进入第一个“模块安利”时间吧。 **注意:**因为不同操作系统的文件系统大不相同,本文的主要编写环境为 Mac OS/Linux 系统,其中一些代码可能并不适用于 Windows 系统。 建议一:使用 pathlib 模块 如果你需要在 Python 里进行文件处理,那么标准库中的 os 和 os.path 兄弟俩一定是你无法避开的两个模块。在这两个模块里,有着非常多与文件路径处理、文件读写、文件状态查看相关的工具函数。 让我用一个例子来展示一下它们的使用场景。有一个目录里装了很多数据文件,但是它们的后缀名并不统一,既有 .txt ,又有 .csv 。我们需要把其中以 .txt 结尾的文件都修改为 .csv 后缀名。 我们可以写出这样一个函数: 在学习过程中有什么不懂得可以加我的

python3全局函数解析

余生颓废 提交于 2019-11-30 03:42:26
python的全局函数: import builtins dir(builtins) [ 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed',

Python3全局(内置)函数解析

泪湿孤枕 提交于 2019-11-30 03:37:34
---恢复内容开始--- 1、abs()    返回数字的绝对值 2、all()     用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果是返回True, 否则返回False   3、any()    用于判断给定的可迭代参数iterable是否全部为Flase,则返回False,如果有一                 个为True,则返回True 4、ascii()    返回一个表示对象的字符串,但是对于字符串中的非ASCLL字符则返回同国       repr()函数使用\x,\xu或\u编码的字符 5、bin()    返回一个整数int挥着长整数long int 的二进制表示 6、bool()    函数用于将给定参数转换为布尔类型,如果没有参数,返回False 7、bytearray()    方法返回一个新字节数组,这个数组里的元素是可变的,并且每个元素的                     值范围:0 <=x<256 8、bytes()    返回一个新的bytes对象,该对象是一个0<=x<256区间内的整数不可变序列,            它是bytearray的不可变版本 9、callable()    函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False

Hive部分函数解析

守給你的承諾、 提交于 2019-11-30 03:33:07
Hive部分函数解析 Hive里的exists ,in ,not exists ,not in 相关函数 表数据准备: 1.选择指定数据库 eg: use bg_database1; 2. 创建表 drop table demo0919 ; create table demo0919( name string ,age int ,sex int ) row format delimited fields terminated by '\001'; 3.插入表数据 insert overwrite table demo0919 values('zs',18,1); insert into table demo0919 values('ls',18,1); insert into table demo0919 values('nisa',19,0); insert into table demo0919 values('rina',22,0); insert into table demo0919 values('zhaoxi',25,1);   4. 根据原表 demo0919 再创建一张表 demo0919_1,用于比对数据。 create table demo0919_1 as select *from demo0919;    5.查看表数据 select *from

PHP的autoload机制的实现解析

扶醉桌前 提交于 2019-11-30 03:23:54
PHP的autoload机制的实现解析 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利 一、autoload机制概述 在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都 存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类, 只需要直接使用include/require将其包含进来即可。 下面是一个实际的例子: 复制代码 代码如下: /* Person.class.php */ <?php class Person { var $name, $age; function __construct ($name, $age) { $this->name = $name; $this->age = $age; } } ?> /* no_autoload.php */ <?php require_once ("Person.class.php"); $person = new Person("Altair", 6); var_dump ($person); 在这个例子中,no-autoload.php文件需要使用Person类,它使用了require_once将其包含

Day53 Django的请求生命周期以及路由层和视图层

雨燕双飞 提交于 2019-11-29 22:35:51
一.Django中数据库表与表之间建关系 以图书管理系统表为例 我们需要创建三张主要的表 1.书籍表 2.作者表 3.出版社表 4.书籍详细信息表 创建完成后思考这几张表之间的关系 书籍表 >>多对多>> 作者表书籍表 >>多对一>> 出版社表作者表 >>一对一>> 作者详细信息表 书籍表和作者表是多对多的关系,需要再创建一张关联他们的表 书籍表和出版社表是多对一,即出版社一对多书籍,我们需要在多的那一方创建一个外键 作者表和作者详细信息表是一对一的关系,我们需要在常用的那一方创建一个外键,并且标识唯一 在Django项目下的models.py文件中创建表,注意:库在Django中不能主动创建,需要我们先行创建 from django.db import models # Create your models here. # 书籍表 class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32) # 小数,总共八位,小数部分占2位 price = models.DecimalField(max_digits=8,decimal_places=2) # 书籍表和出版社表是多对一的关系,需要在书籍表中创建外键 publish =

Django框架-路由层

大兔子大兔子 提交于 2019-11-29 22:29:10
Django框架-路由层 一、URL配置(URLconf) 1、基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 2、参数说明 正则表达式:一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数:可选的要传递给视图函数的默认参数(字典形式) 别名:一个可选的name参数 二、关于正则表达式(来自官方文档) from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ] 注意事项: urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式