<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Xlling的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Xlling</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Xlling]]></copyright><item><title><![CDATA[爬虫学习(一) ：学习框架的搭建]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/102613164</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/102613164</guid><author>Xlling</author><pubDate>Thu, 17 Oct 2019 20:56:59 +0800</pubDate><description><![CDATA[快速构建爬虫领域的整体认知
思维导图如下：

1、爬虫的本质

网络爬虫（又被称为网页蜘蛛，网络机器人，在FOAF社区中间，更经常的称为网页追逐者），是一种按照一定的规则，自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。


2、爬虫的基本流程

发起请求
获取响应的内容
解析内容
保存数据


3、关于数据的处理

Xpath
BeautifulS...]]></description><category></category></item><item><title><![CDATA[坦克大战之碰撞检测]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/88378254</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/88378254</guid><author>Xlling</author><pubDate>Sun, 10 Mar 2019 14:34:51 +0800</pubDate><description><![CDATA[描述问题：
图1

图2
当我们触发onkeydown事件时，长按箭头使得黑色色块（坦克）移动到距离蓝色色块（障碍物）很近的位置，再次触发onkeydown事件时，会出现图2穿墙的现象。

图3
黑色色块无法继续向前。
分析问题、解决问题：
问题一：
坦克会穿墙的问题，
解决一：
我们获取到黑色色块按照当前方向下一步的位置数据来判断，若可能会穿墙，就不继续执行，增加了getBox方法；
问题二：
...]]></description><category></category></item><item><title><![CDATA[坦克大战的性能优化]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84893699</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84893699</guid><author>Xlling</author><pubDate>Sat, 08 Dec 2018 16:03:41 +0800</pubDate><description><![CDATA[1、requestAnimationFrame
https://mp.youkuaiyun.com/mdeditor/84192545#
2、rotate
网上下载的图片资源(每张4KB，尺寸60*60)：
       
用键盘上下左右控制坦克时，相对应的炮筒朝向也要发生改变；
drawTank()的绘制过程是在raf中持续进行的，相当于每过17ms的时间就要加载一张图片，耗时严重。
想到通过将初始图片旋转...]]></description><category></category></item><item><title><![CDATA[非递归二叉树的遍历打印]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84821813</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84821813</guid><author>Xlling</author><pubDate>Sat, 08 Dec 2018 14:38:08 +0800</pubDate><description><![CDATA[题目描述：
请用非递归方式实现二叉树的先序、中序和后序的遍历打印。
给定一个二叉树的根结点root，请依次返回二叉树的先序，中序和后续遍历(二维数组的形式)。
先序
先序遍历的规则：根 左 右
先序遍历的结果：1 2 4 5 3 6 7
举例说明：

1、节点1入栈，弹出、打印；
2、将弹出的节点1的右孩子3先入栈，左孩子2后入栈；

3、2出栈，2的右、左孩子依次入栈

4、重复上述步骤，保证：...]]></description><category></category></item><item><title><![CDATA[完全二叉树计数]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84748861</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84748861</guid><author>Xlling</author><pubDate>Tue, 04 Dec 2018 09:35:02 +0800</pubDate><description><![CDATA[题目描述：
给定一棵完全二叉树的根节点root，返回这棵树的节点个数。如果完全二叉树的节点数为N，请实现时间复杂度低于O(N)的解法。
给定树的根结点root，请返回树的大小。
解题思路：
充分考虑到完全二叉树的性质
二分的思想：O(log n^2)

如上图所示：当root右子树的高度和root左子树的高度一致，左部分可以直接用公式计算：2^n - 1；右部分使用递归遍历计算总结点数；

如上图...]]></description><category></category></item><item><title><![CDATA[循环有序数组最小值练习题]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84643963</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84643963</guid><author>Xlling</author><pubDate>Fri, 30 Nov 2018 11:01:12 +0800</pubDate><description><![CDATA[题目描述：
对于一个有序循环数组arr，返回arr中的最小值。有序循环数组是指，有序数组左边任意长度的部分放到右边去，右边的部分拿到左边来。比如数组[1,2,3,3,4]，是有序循环数组，[4,1,2,3,3]也是。
给定数组arr及它的大小n，请返回最小值。
测试样例：
[4,1,2,3,3],5

返回：1

解题思路：
数组可能出现如下表示：
（1）、[1,2,3,4,5]		     re...]]></description><category></category></item><item><title><![CDATA[栈的逆序]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84313652</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84313652</guid><author>Xlling</author><pubDate>Wed, 21 Nov 2018 09:38:43 +0800</pubDate><description><![CDATA[题目描述：
实现一个栈的逆序，但是只能用递归函数和这个栈本身的pop操作来实现，而不能自己申请另外的数据结构。
给定一个整数数组A即为给定的栈，同时给定它的大小n，请返回逆序后的栈。
测试用例：
输入：[4,3,2,1],4
输出：[1,2,3,4]
解题思路：
1、移除栈底元素并返回；
2、栈重元素逆序的主方法；
图解：






代码：
class StackReverse {
public...]]></description><category></category></item><item><title><![CDATA[requestAnimationFrame]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84192545</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84192545</guid><author>Xlling</author><pubDate>Sat, 17 Nov 2018 20:43:22 +0800</pubDate><description><![CDATA[1、requestAnimationFrame 和 setInterval


编写动画最关键的步骤是：确定时间间隔。间隔过短，无法保证浏览器的渲染能力；间隔过长，无法保证动画效果平滑流畅；
setInterval()方法按照指定的时间间隔（30ms）执行函数；

var timer = null;
		timer = setInterval(function () {
			autoplay()...]]></description><category></category></item><item><title><![CDATA[JS键盘监听事件：onkeydown、onkeypress、onkeyup]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84144976</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84144976</guid><author>Xlling</author><pubDate>Fri, 16 Nov 2018 19:56:39 +0800</pubDate><description><![CDATA[1、都是监听键盘的行为，但是触发的时机不一样

onkeydown: 按下任意按键的时候触发的，onkeydown 触发的时候输入流正要进入系统，也就是说onkeydown事件一完，输入流就进入了系统，无法改变。所以通过onkeydown事件可以改变用户是按了哪个键；
onkeypress: 按下并放开任何字母数字键时触发的，onkeypress事件是在输入流进入系统后触发的，但输入流暂未被系统处...]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84023928</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84023928</guid><author>Xlling</author><pubDate>Tue, 13 Nov 2018 09:54:38 +0800</pubDate><description><![CDATA[题目描述：
对于一个int数组，请编写一个堆排序算法，对数组元素排序。
给定一个int数组A及数组的大小n，请返回排序后的数组。
测试用例：
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
解题思路：
手动过程：

将序列按照BFS构造成完全二叉树
将二叉树从下往上调整成最大堆
将根元素和最后位置的节点交换位置，确定最大元素
将少一个节点的二叉树从上往下调整成最大堆，
反复步骤3，4；...]]></description><category></category></item><item><title><![CDATA[坦克大战走过的坑]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/84023712</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/84023712</guid><author>Xlling</author><pubDate>Tue, 13 Nov 2018 09:42:41 +0800</pubDate><description><![CDATA[1、setInterval ——&amp;amp;amp;amp;gt; requestAnimationFrame
2、键盘监控事件onkeydown
onkeydown事件会在用户按下一个键盘按键时发生。
window.onkeydown = function(e){
	// 表示键盘监听所触发的事件，同时传入参数e
	var e = e || window.e;
	console.log(e.keycode);
	// 输...]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/83931946</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/83931946</guid><author>Xlling</author><pubDate>Sat, 10 Nov 2018 18:29:49 +0800</pubDate><description><![CDATA[题目描述：
对于一个int数组，请编写一个归并排序算法，对数组元素排序。
给定一个int数组A及数组的大小n，请返回排序后的数组。
测试用例：
输入：[1,2,3,5,2,3],6
输出：[1,2,2,3,3,5]
解题思路：
1、递归分解数组
【1，2，3，5，2，3】
【1，2，3】        【5，2，3】
【1，2】【3】    【5，2】【3】
【1】【2】【3】【5】【2】【3】
...]]></description><category></category></item><item><title><![CDATA[二叉树打印]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/83855987</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/83855987</guid><author>Xlling</author><pubDate>Thu, 08 Nov 2018 09:37:33 +0800</pubDate><description><![CDATA[题目描述：
有一棵二叉树，请设计一个算法，按照层次打印这棵二叉树。
给定二叉树的根结点root，请返回打印结果，结果按照每一层一个数组进行储存，所有数组的顺序按照层数从上往下，且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。
解题思路：
1、层级遍历：BFS

BFS代码熟悉，借助队列

2、换行输出：二维数组

每一行的数据存在一维数组里

数组的长度：在上一层节点弹出，这一层节...]]></description><category></category></item><item><title><![CDATA[PAT 1018 锤子剪刀布（20分）]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/83781369</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/83781369</guid><author>Xlling</author><pubDate>Tue, 06 Nov 2018 09:52:12 +0800</pubDate><description><![CDATA[题目描述：
大家应该都会玩“锤子剪刀布”的游戏：两人同时给出手势，胜负规则如图所示：

输入格式：
输入第 1 行给出正整数 N，即双方交锋的次数。随后 N 行，每行给出一次交锋的信息，即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”，第 1 个字母代表甲方，第 2 个代表乙方，中间有 1 个空格。
输出格式：
输出第 1、2 行分别给出甲、乙的胜、平、负次数，数字...]]></description><category></category></item><item><title><![CDATA[练习1]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/83621443</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/83621443</guid><author>Xlling</author><pubDate>Thu, 01 Nov 2018 15:39:18 +0800</pubDate><description><![CDATA[10-31的练习

题目描述：

在canvas画布中创建一个圆
保证圆匀速运动
运动时长为10s, 速度是50像素/s（可变）
在圆中心显示秒数

题目难点

平滑移动的动画效果`

代码展示：
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;
&amp;amp;lt;html lang=&amp;quot;en&amp;quot;&amp;amp;gt;
&amp;amp;lt;head&amp;amp;gt;
	&amp;amp;lt;!--]]></description><category></category></item><item><title><![CDATA[坦克大战计划书]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/83511654</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/83511654</guid><author>Xlling</author><pubDate>Mon, 29 Oct 2018 20:06:15 +0800</pubDate><description><![CDATA[游戏场景

单人游戏
游戏主界面的尺寸
我方坦克、电脑坦克、普通砖块、高级砖块图片的初始位置、大小


游戏对象

我方坦克

用户四个方向按键前进，每次移动多大像素
用户持续按键，持续时间多长，才能使得坦克连续运动
坦克四个方向的转换
坦克转换方向后的对齐问题，当无法精确地卡到空白处，无法前进
坦克遇到障碍物停止前进



电脑坦克

数量：3
不同的坦克有不同的运动轨迹，初始位置也不同
匀速一...]]></description><category></category></item><item><title><![CDATA[关于sublime text3——js智能提示插件]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/80354647</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/80354647</guid><author>Xlling</author><pubDate>Thu, 17 May 2018 18:09:30 +0800</pubDate><description><![CDATA[1、首先进入包管理器进入菜单栏sublime text-preferences-package control,输入install package ,即Package Contrl:Intall Package，回车，等待，进入包安装界面；2、安装sublime codeIntel包在选择框输入sublime codeIntel,回车，等待，安装成功3、修改default进入菜单栏sublime ...]]></description><category></category></item><item><title><![CDATA[18-3-25前端学习小记]]></title><link>https://blog.youkuaiyun.com/Xlling/article/details/79689251</link><guid>https://blog.youkuaiyun.com/Xlling/article/details/79689251</guid><author>Xlling</author><pubDate>Sun, 25 Mar 2018 20:28:06 +0800</pubDate><description><![CDATA[来自博主的一则消息：

最近一直在学习Bootstrap框架，下面介绍下我今天的学习成果

轮播图效果：

1、指示器 即下方的小圆点（现成）

2、左右的控制（现成）

3、滑块（重点改造）

  （1）img和background的区别

  img标签是写在html中的，background是写在css中的，虽然我们通常在head中引入css文件，但是css文件是在html加载完才执...]]></description><category></category></item></channel></rss>