输入
cin
结束条件:[enter],[space],[tab]
处理方法:cin遇到缓冲区中的[enter],[space],[tab]会结束当前输入,并舍弃[enter],[space],[tab],继续下一项输入,当有连续[space],[enter,[tab]会全部舍弃
1 |
|
1 | # define MaxSize 50 |
1 | # define InitSize 100 |
AJAX(Asynchronouse JavaScript And XML)
异步JavaScript
和XML
。过在后台与服务器进行少量数据交换,Ajax
可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用Ajax
)如果需要更新内容,必须重载整个网页页面。因为传统的在传输数据格式方面,使用的是XML
语法。因此叫做AJAX
,其实现在数据交互基本上都是使用JSON
。使用AJAX
加载的数据,即使使用了JS
,将数据渲染到了浏览器中,在右键->查看网页源代码还是不能看到通过ajax
加载的数据,只能看到使用这个url
加载的html
代码。
使用//获取整个页面中的元素,然后写标签名,然后在写谓词进行提取。比如:
1 | //div[@class='abc'] |
表达式 | 描述 | 示例 | 结果 |
---|---|---|---|
nodename | 选取此节点的所有子节点 | bookstroe | 选取bookstore下的所有子节点 |
/ | 如果是在最前面,代表从根节点选取。 否则选择某节点下的某个节点 |
/bookstore | 选取根元素下所有的bookstore节点 |
// | 从全局节点中选择节点,随便在哪个位置 | //book | 从全局节点中找到所有的book节点 |
@ | 选取某个节点的属性 | //book[@price] | 选择所有拥有price属性的book节点 |
. | 当前节点 | ./a | 选取当前节点下的a标签 |
scrapy
框架scrapy
:pip install scrapy
pypiwin32
,防止报错。pip install scrapy
。报Visual C++ 14.0 is required
错误的话,安装Visual C++ Build Tools
,Visual C++ Build Tools 2015下载地址,下载链接在网页的中间位置scapy startproject [项目名称]
scapy genspider [爬虫名字] [爬取的域名]
。注意:爬虫的名字不能和项目名字一样。1 | select ... from .... |
执行顺序:
1 | 1 from |
MySql从5.7版本开始默认开启only_full_group_by
规则,规则核心原则如下,没有遵循原则的sql会被认为是不合法的sql
order by
后面的列必须是在select
后面存在的select
、having
或order by
后面存在的非聚合列必须全部在group by
中存在以下,基于 InnoDB
count()是一个聚合函数,对于返回的结果集,会逐行判断,若返回的不是 NULL,就会加 1,否则不加。
因此,count(*)、count(主键 id)和count(1)都表示返回满足条件的结果集的总行数;而count(字段),则表示返回满足条件的数据行里面,参数“字段”不为 NULL 的总个数。
分析性能,考虑以下几个原则:
count(*)
是例外,并不会把全部字段取出来,而是专门做了优化,不取值。count(*)
肯定不是null
,按行累加。按照效率排序的话
1 | count(字段) < count(主键 id) < count(1) ≈ count(*) |
所以我建议你,尽量使用count(*)