- 博客(36)
- 资源 (5)
- 收藏
- 关注
转载 《算法与数据结构》学习笔记19---二叉树(1)
前言开始新旅途。ps:内容仅做为本人的学习笔记。正文树(Tree)二话不说先上图。这里面每个元素叫作“节点”;用来连线相邻节点之间的关系,叫作“父子关系”。A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。B、C、D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有父节点的节点叫作根节点,也就是图中的节点 E。我们把没有子节点的节点叫作叶子节点或者...
2019-02-28 11:59:46
245
转载 《算法与数据结构》学习笔记18---哈希算法
前言 啊,继续学习之旅。 前面几篇提到“散列表”“散列函数”,这里又讲到“哈希算法”,是不是有点一头雾水?实际上,不管是“散列”还是“哈希”,这都是中文翻译的差别,英文其实就是“Hash”。所以,常听到有人把“散列表”叫作“哈希表”“Hash 表”,把“哈希算法”叫作“Hash 算法”或者“散列算法”。正文什么是哈希算法? 将任意长度的二进制值串映射为固定长度的二进制值...
2019-02-26 09:25:55
276
转载 《算法与数据结构》学习笔记17---散列表(3)
前言 有没有发现,有两种数据结构,散列表和链表,经常会被放在一起使用。 在链表篇中,提了到如何用链表来实现 LRU 缓存淘汰算法,但是链表实现的 LRU 缓存淘汰算法的时间复杂度是 O(n),通过散列表可以将这个时间复杂度降低到 O(1)。在跳表篇,提到 Redis 的有序集合是使用跳表来实现的,跳表可以看作一种改进版的链表。Redis 有序集合不仅使用了跳表,还用到了散列表。...
2019-02-25 09:45:31
249
转载 《算法与数据结构》学习笔记16---散列表(2)
前言 散列表续集。 散列表的查询效率并不能笼统地说成是 O(1)。它跟散列函数、装载因子、散列冲突等都有关系。如果散列函数设计得不好,或者装载因子过高,都可能导致散列冲突发生的概率升高,查询效率下降。 在极端情况下,有些恶意的攻击者,还有可能通过精心构造的数据,使得所有的数据经过散列函数之后,都散列到同一个槽里。如果使用的是基于链表的冲突解决方法,那这个时候,散列表就会退化...
2019-02-22 09:43:33
268
转载 《算法与数据结构》学习笔记15---散列表(1)
前言 关于散列表内容的学习笔记分三篇来记录。正文 散列表,Hash Table,也叫哈希表或Hash表。散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。散列思想例一: 假如有 89 名选手参加学校运动会。为了方便记录成绩,每个选手胸前都会贴上自己的参赛号码。这 89 名选手的编号依次...
2019-02-21 09:13:55
236
转载 《算法与数据结构》学习笔记14---跳表
前言 上篇说到,二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。那么对于链表,只需要对它进行一些改造就可以支持类似“二分”的查找算法。改造之后的数据结构叫做 跳表(Skip list)。 跳表是一种动态数据结构,可以支持快速的插入、删除、查找操作。写起来也不复杂,甚至可以替代 红黑树(Red-black tree)正文跳表 对于一个单链表来讲,即便链表中存...
2019-02-20 09:24:59
183
转载 《算法与数据结构》学习笔记13---二分查找
前言 此内容为本人学习笔记。正文 针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。二分查找是一种非常简单易懂的快速查找算法,生活中到处可见。比如说,有一个猜字游戏。一人随机写一个 0 到 99 之间的数字,然后另一人来猜第一个人写的是什么。猜的过程中,每猜一次,就会告诉第二个人猜的大了还是小了,直到猜出结果为止。假设只有 10 个订单,...
2019-02-19 09:41:32
232
转载 《算法与数据结构》学习笔记12---排序优化
如何实现一个通用的、高性能的排序函数?如何选择合适的排序算法?之前讲的几种排序算法:时间复杂度是稳定排序吗是原地排序吗冒泡排序O(n2)是是插入排序O(n2)是是选择排序O(n2)否是快速排序O(nlogn)否是归并排序O(nlogn)是否计数排序O(n+k) k是数据范围是否桶排序O(n)是...
2019-02-18 09:36:58
174
转载 《算法与数据结构》学习笔记11---线性排序
开篇 本篇主要介绍三种时间复杂度为O(n)的排序算法:桶排序、计数排序、基数排序。因为这些排序算法的时间复杂度是线性的,所以叫做线性排序(Linear sort)。之所以能做到线性的时间复杂度,主要是因为这三个算法是非基于比较的排序算法,都不涉及元素之间的比较操作桶排序(Bucket sort) 核心思想:将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序...
2019-02-17 16:21:22
225
转载 《算法与数据结构》学习笔记10---排序(下)
前言 本内容来源于个人的学习笔记 。 上一篇主要 是冒泡排序、插入排序、选择排序。本篇的主要内容为归并排序和快速排序。正文归并排序 核心思想:如果要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起。 归并排序和快速排序都用到了分治的思想。分治,就是分而治之,将一个大问题分解成小的问题来解决。小的子问题解决了,大...
2019-02-16 10:03:20
209
转载 《算法与数据结构》学习笔记9---排序
前言 本内容为自己的学习笔记,来源于极客时间课程。 排序,排序,万恶的排序啊。正文如何分析一个“排序算法”?排序算法的执行效率最好情况、最坏情况、平均情况时间复杂度 我们在分析排序算法的时间复杂度时,要分别给出最好情况、最坏情况、平均情况下的时间复杂度。除此之外,你还要说出最好、最坏时间复杂度对应的要排序的原始数据是什么样的。 为什么要区分这三种时间复...
2019-02-15 09:15:53
199
转载 《算法与数据结构》学习笔记8---递归
前言 本内容为本人学习笔记,课程来自极客时间数据结构与算法。正文 递归是一种应用广泛的算法,在许多的数据结构和算法的实现中都用到了它,比如深度优先搜索、前序中序后序二叉树的遍历等。举一个感觉有点傻的例子,假如要去电影院看电影,因为各种原因不知道自己现在在第几排,于是你就问前面一排的人他是第几排,你只要在他的数字上加一就知道自己在哪一排了。但是,前面的人也看不清啊,所以他也问他前面...
2019-02-14 10:43:54
348
转载 《算法与数据结构》学习笔记7---队列
前言 本内容源自个人学习笔记,课程内容来处极客时间。正文队列,先进先出。 栈的两个基本操作:入栈push()、出栈pop() 队列的基本操作:入队enqueue() 放一个数据到队列尾部、出队dequeue() 从队列头部取一个元素 用数组实现的队列叫做顺序队列,用链表实现的队列叫链式队列。 作为一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具...
2019-02-13 10:52:42
192
转载 《算法与数据结构》学习笔记5---链表(下)
前言 本篇主要介绍写链接代码的一些方法。正文理解指针或引用的含义 看懂链表并不难,难的是将链表与指针混在一起。有些语言有“指针”的概念,如C,有些没有,取代指针的是“引用”,如JAVA、PYTHON。不管是“指针”还是“引用”,其实都是存储所指对象的内存地址。 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址...
2019-02-12 09:51:06
174
转载 《算法与数据结构》学习笔记4---链表(上)
前言本次分两篇来记录链表的内容。正文相比数组,链表是一种稍微复杂一点的数据结构。这两个非常基础、非常常用的数据结构,常常将会放到一块儿来比较。两者有什么区别:从底层的存储结构上来看:从下图中我们看到,数组需要一块连续的内存空间来存储,对内存的要求比较高。如果申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。而...
2019-02-12 09:49:04
226
1
转载 《算法与数据结构》学习笔记3---数组
前言 之前两篇介绍了关于时间、空间复杂度的相关内容,本篇则对数组进行介绍。正文 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。线性表 线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。链表、队列、栈也是线性表结构。有线性表当然就有非线性表,如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表...
2019-02-10 16:37:46
210
转载 《算法与数据结构》学习笔记2---时间复杂度与空间复杂度(下)
前言上一篇介绍了时间复杂度和空间复杂度的概念,这一篇关注最好情况时间复杂度、最坏情况时间复杂度、平均情况时间复杂度、均摊时间复杂度。正文最好情况时间复杂度:在最理想的情况下,执行代码的时间复杂度。最情况坏时间复杂度:在最糟糕的情况下,执行代码的时间复杂度。例:// n表示数组 array 的长度int find(int[] ,int n, int x) { int i = 0...
2019-02-06 17:04:30
194
转载 《算法与数据结构》学习笔记1---时间复杂度与空间复杂度(上)
前言 数据结构和算法的重要性相信学计算机的人都知道,一直以来算法和数据结构就是我的心病,相信和大家一样 这门课要说学吧,太难,自己啃不下来。但是不学吧,感觉又好像怎么着似的,弄的人心理不舒服。今在某软件上花重金买了一门《数据结构和算法》课,鼓起勇气认真的学习一次算法和数据结构,希望能对自己有所帮助。正文 数据结构和算法本身解决的是“快”和“省”的问题,即如何让自己写的程序运行的更...
2019-02-03 18:21:12
262
原创 西山小菜鸟之Scrapy学习笔记---下载文件和图片(下载360图片)
前言 本文中如有错误,请指正。背景 前面介绍了Scrapy 下载文件、图片的理论知识,并且例举了一个下载文件的例子,本篇则以360图片的艺术分类 http://image.so.com/z?ch=art 为例,对下载图片进行实践。码上行动 首先打开360图片的网页,并且打开Network,清除之前的加载记录。 然后慢慢向下滑直到第一次加载更多内容,点开Netw...
2019-01-09 09:07:58
232
原创 Python学习笔记---多进程爬虫
前言本文中如有错误,请指正。本文的正文部分来自书籍《从零开始学python网络爬虫》。背景 刚开始学习爬虫的时候学习python的urllib库,那时会简单的下载一些网页啊,一些图片。后来学习的爬虫框架scrapy,几乎只要是写爬虫的程序就是用框架写的,但是慢慢感觉,有些内容用框架来写程序显得太重了,不是那么的方便,于是又开始学习第三方库requests和lxml。 当掉的数量...
2019-01-07 14:36:46
265
原创 Python学习笔记----csv文件读写
前方 本文中如有错误请指正。背景工作中总会遇到各种各样的问题,虽然现在操作txt文件较多,但是总少不了要读写csv,感觉总是把csv文件转成txt多少会有一些不便,因此打算学习一下读写csv的操作,并写出来作为日后的复习笔记。所谓CSV(逗号分隔值)格式是电子表格和数据库最常用的导入和导出格式。csv模块实现了以CSV格式读取和写入表格数据的类。csv模块reader和writer对...
2018-12-28 14:22:35
348
原创 西山小菜鸟之Scrapy学习笔记---下载文件和图片(下载matplotlib网站文件)
前言 本文中如有错误,请指正。背景 在上一篇文章中,给大家介绍了Scrapy下载文件和图片的理论内容(https://blog.youkuaiyun.com/xue605826153/article/details/85252026), 本篇以matplotlib网站为例具体介绍下载文件的方法。如图,下载每一个例子的源代码。码上行动 首先进行页面 https://matplot...
2018-12-26 14:55:00
193
转载 西山小菜鸟之Scrapy学习笔记----下载文件和图片(理论部分)
前言 本文中如有错误请指正。内容摘自书《精通Scrapy网络爬虫》背景 从网页中爬取信息是爬虫最典型的一种应用,除此之外 ,下载文件也是实际应用中很常见的一种需求,例如使用爬虫爬取网站中的图片、视频、WORD文档、PDF文件、压缩包等。理论 Scrapy 框架内部提供了两个Item Pipeline,专门用于下载文件和图片:FilesPipelineImagesP...
2018-12-25 19:25:24
183
原创 西山小菜鸟之Scrapy学习笔记---爬取弹窗信息的一种方法(JS加载的信息)
前言 本文中如有错误,请指正。背景 在日常爬取信息时我们可能会遇到网页信息无法爬取,网页源码中没有这些内容,他是由JS加载的。一方面,我们可以通过前面介绍的splash渲染网页。另一方面,对于一些由JS加载的网页,我们还可以通过在Network下寻找特定的请求链接,这些链接可以返回我们需要的内容。可能说了这么多,有些朋友没有明白我在说啥,那么请接着看正文。我说 我们可能...
2018-12-18 22:28:57
1076
原创 西山小菜鸟之Scrapy学习笔记----(番外篇)微信公众号永久链接
前言本文中如有错误请指正。本文学习了静觅的个人博客 https://cuiqingcai.com/4652.html我说前一阵子由于需要,要把从搜狗微信上爬下来的微信公众号文章的临时链接转变为永久链接。一直在网上百度,但天公不做美,一直找不到比较满意的方法。通过百度我找到几种方法:使用微信客户端打开要转换的链接(通过聊天窗口把链接发出去),点击右上角的三点,弹框中的复制链接 即为永久...
2018-12-15 12:50:53
370
原创 西山小菜鸟之Scrapy学习笔记---scrapy request payload
前言本文中如有错误,望指正。背景 最近在爬取某网站时发现之前学习中没有遇到过的情况,虽然都是发送post请求,但是原来的表单数据Form data变为了request payload(如图)。仍然使用了原来的FormRequest方法,但是不管用。理论学习 目前常见的HTTP请求中主要的方式为GET和POST方式。GET请求GET请求时,参数主要放在url里面,形式...
2018-12-04 23:01:18
762
原创 西山小菜鸟之Scrapy学习笔记---scrapy发送post请求
前言 本文中如有错误,请指正,谢谢!背景 默认情况下,scrapy.Request都是采用GET请求,但是我们也会遇到需要发送post请求的时候,如爬取专利网的专利信息时(http://epub.sipo.gov.cn/) 。 因此,我们需要发送post请求,也不是scrapy.Request默认的GET请求。码上分析 使用FormRequest(url,fo...
2018-11-30 22:47:22
580
原创 西山小菜鸟之Scrapy学习笔记---LinkExtractor
前言 本文中如有错误,望指正。背景 日常爬取一个网站时,想要爬取的数据分布在多个页面中,每个页面包含一部分数据以及到其它页面的链接,提取页面中数据的方法想必大家都有了解,最最最直接的就是xpath了,提取链接的方法则有Selector和LinkExtractor两种方法 。理论 接着上面所说,提取链接的方法则有Selector和LinkExtractor两种方法 :...
2018-11-22 22:45:39
372
转载 西山小菜鸟之Scrapy学习笔记---在Scrapy中使用代理
前言本文中如有错误,请各位指正。背景 在爬取各大网页信息时,通过会遇到各种各样的反爬措施:很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常的访客,那么它就可能就会禁止此IP的访问(有兴趣的小伙伴可以试试天眼查这个网站)。所以我们需要设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取,同时也不会暴露自己。 虽然网上...
2018-11-20 23:09:52
225
转载 西山小菜鸟之Scrapy学习笔记---splash简介
前言 本文主要介绍scrapy-splash的理论知识。文中如有不正确的地方望大家指正。本文的主要内容出自书:《精通Scrapy网络爬虫》《虫术——Python绝技》背景 近几年随着前端技术和手机端App的飞速发展,互联网架构也发生了巨大的变化,尤其是一些前端框架的大面积应用,过去基于纯后端的Web结构已经明显过时了。越来越多的网站采用前后端分离的架构。 ...
2018-11-14 23:35:11
752
原创 西山小菜鸟之Scrapy学习笔记---splash渲染
前言本文主要以http://www.ccgp.gov.cn/cr/list为例,介绍Scrapy-splash的简单使用。 本文中若存在不详细的地方欢迎各位大神网友提问,若有错误的地方,希望大家指正。谢谢!!
2018-11-12 23:07:10
229
原创 西山小菜鸟之Scrapy学习笔记---爬取企查查网公司的裁判文书信息
前方本文接着上文,爬取企查查的公司裁判文书信息。企查查 本文中若存在不详细的地方欢迎各位大神网友提问,若有错误的地方,希望大家指正。谢谢!!
2018-11-10 22:13:10
1431
原创 西山小菜鸟之Scrapy学习笔记---爬取企查查网站公司基本信息
前言本文主要采取cookie登录的方式爬取企查查网站的公司的基本信息,后期会继续发布关于爬取企查查网站上的公司的裁判文书信息。链接为:企查查 本文中若存在不详细的地方欢迎各位大神网友提问,若有错误的地方,希望大家指正。谢谢!!
2018-11-10 21:32:29
4906
14
原创 西山小菜鸟之Scrapy学习笔记---爬取链家网楼盘信息
前言 本文以链家网北京地区为例,介绍自己爬取链家全国楼盘信息。链接如下:链家新房-北京。本文中若存在不详细的地方欢迎各位大神网友提问,若有错误的地方,希望大家指正。谢谢!!
2018-11-10 17:33:25
684
原创 仅此 先写一写我的博客初衷
我的博客初衷 第一次接触博客还是在研究生一年级的时候,那时候的我对于博客啊,程序啊还完完全全的是一个新人,对这些的了解只是停留在字面意思上,虽然总想着去了解一些,但总是由于懒而放弃了。 由于发表学术论文需要对算法进行认真,“万般无奈”之下只能自己在网上查资料写程序,慢慢的接触了许多人写的博客。所谓万千世界无奇不有,博客的内容和质量也有差异,写博客的目的也各不相同。在这里仍要感谢...
2018-11-04 22:03:49
165
stegdetect-0.4-for-Windows
2017-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人