上篇文章中,我们介绍了Kick Start中一道简单的交互式问题——Number Gussing作为入门引导,这是2019年的Round A中的问题,相信大家对于题目已经有了一定的了解。接下来的这篇文章我们将会介绍一下2018年Round A的三道题,希望大家通过文章能够熟悉Kick Start的题目。
2018年Round A中包含三道题目,分别为23分,29分和48分,总分达到51分即可通过比赛。下面详细介绍每道题目。
Read more
M3U8流视频数据爬虫详解四:TS视频文件保护
视频网站的数据爬取和反爬永远都是一对矛盾的关系。然而从难易程度上来讲,相对于数据爬取,数据反爬要容易的多。因为数据爬取的技术进步都是被动的。对于一个没有做任何数据防护的数据源来说,写一个简单的数据爬取脚本就可以轻而易举的拿到数据。然而,当目标站点实施一个简单的反爬取策略,例如加一个session检查或者cookie检查,当前的爬虫脚本就立刻失效了。查原因就需要花时间分析,花时间攻克等。因此,相对于实施一个反爬策略,要攻克一个反爬策略,至少要多花2倍以上的时间。接下来我们将讨论几种视频网站的反爬策略以及对应的爬取方案。
Redis服务器CPU占用率100%问题分析和解决方案
Redis是非常高性能的内存型数据库,在我们整个分布式系统中扮演着非常重要的角色。从用户会话管理到任务调度管理,都离不开Redis服务。然而,高性能并不表示可以滥用,本文将分享一个实际案列,讲述工程师是如何错误使用Redis查询语句,导致Redis服务器CPU占用率达到100%。并且通过这个实际案例,同时给大家演示当遇到此类问题时,应该如何一步一步地排查并最终找到问题的根结和正确的解决方案。
Read more
谷歌Kick Start线上编程第一课
谷歌的校招活动已经开始了。如果对Google的校招途径不是很了解的话,大家可千万不要错过这个千载难逢的机会。一般来说,可以参与谷歌校招的途径有两种:一种是个人发送简历给谷歌校招邮箱;另外一种方式就是通过参加Google官方的Kick Start线上编程测试。有些朋友可能觉得线上编程测试会很难,而且参加的人会很多,获得面试的机会渺茫。其实此言差矣,相对于直接发送简历给谷歌校招邮箱,参加Kick Start线上测试可以算是非常高效且成功率更高的途径。并且,谷歌官方也是非常鼓励大家参加Kick Start线上编程测试。本文不对Kick Start和谷歌校招做过多的介绍了,有兴趣的朋友建议微信扫描文末二维码加老船长微信获得更多相关谷歌校招的内容。
谷歌Kick Start线上编程需要讲的内容非常多。关于Kick Start线上编程系列课程,计划将包括10篇文章以上,主要是介绍和讲解历年历届的Kick Start线上真题和解题思路,为大家排忧解惑。本文是整个系列的第一篇,希望对大家有所帮助。
Read more
使用MYSQL分区提升检索速度
随着数据量的增加,MYSQL中的检索速度会越来越慢。之前我们使用了很多方法来提高MYSQL的检索速度,比如通过使用ORDER BY语句提升搜索速度,增加新的索引字段提升搜索速度。最终实现了从800万条数据当中通过时间条件搜索只需要耗时200毫秒的成绩。然而,对于这样的速度,我们还是不够满意的。为了优化检索速度,我们将对数据进行分区处理。
Read more
提升MongoDB查询速度测试
之前几周写过一个关于提升MYSQL查询速度的文章。这次,我们来讨论以下如何有效的提升MongoDB的查询速度。首先,我们在MongoDB中有一个数据集合(可以理解为表,但是又不能叫表,具体MongoDB和MySQL的区别还请大家搜索以下)有将近100万条数据,大概3GB左右大小。数据集合中的每一条数据的数据格式大致相同,可能会有略微多或者少几个字段。该数据集合使用了默认的_id作为索引字段。然而,由于业务需求,我们发现在使用不同的条件进行搜索时,存在严重的性能问题(由于服务器只有8G内存,我们的MongoDB只是用约4G内存,也是有点残忍的)。
国内网站备案
在国内开始网站是需要备案的,并且需要在工信部和当地的互联网安全综合服务网备案。否则即使购买了域名和主机,并且成功绑定,也会在30天内被主机服务提供商暂停服务。因此,想要在国内通过网站服务,备案工作是不能马虎的。很多朋友也咨询过备案的流程是在太繁琐了,非常麻烦;是否有可以不需要备案又可以提供网站服务的途径?
如果不想备案,那么只有在国外买域名和主机。虽然国内是可以访问绝大多数国外网站的,但是由于主机在国外,速度可能就比较慢了。因此,如果各位朋友的网站服务是针对国内用户的,个人建议还是在国内购买域名和主机服务,并且老老实实把备案工作做好。当然如果有朋友真的希望购买国外服务,以下是船长使用过的比较好的服务商:
M3U8流视频数据爬虫详解三:M3U8视频网络数据爬虫实现
本文是《M3U8流视频数据爬虫详解》系列教程中的第三篇。前两篇《M3U8视频文件详解》和《M3U8视频网络数据分析与爬虫设计》分别介绍了M3U8文件的基础知识。并且通过详细案例,介绍和讲解了使用Chrome开发者工具分析页面数据,并从数据记录中找到了最关键的数据文件和访问方法。最后,根据页面分析结果,我们给出了一套具体的M3U8视频爬虫设计思路。在本文中,我们将在上一篇的基础上,以实际案例,根据爬虫设计思路,实现一套具体的M3U8视频爬虫程序。
M3U8流视频数据爬虫详解二:M3U8视频网络数据分析与爬虫设计
在开始写M3U8流视频数据爬虫教程的时候,本打算只写一篇文章。在文章《M3U8流视频数据爬虫详解一:M3U8视频文件详解》中,我们详细描述了M3U文件的定义和M3U8文件的详细结构,并且给出了实际样例。在写作和编辑后期,我们逐步发现有很多细节还是不能省略的。但是如果教程太长,就不利于读者对于内容的理解和吸收。最后决定把“M3U8流视频数据爬虫”分为三个部分完成。第一部分就是之前的《M3U8视频文件详解》。第二部分就是本文,将主要覆盖Chrome浏览器分析工具介绍,流视频数据源的网页分析,爬虫设计。本系列教程的最终目标是,读者经过学习以后,能够独立地从数据源分析到完成数据爬虫程序编写。
Read more
Scrapy Cluster中重定向被错误去重
Scrapy Cluster在默认情况下,会自动去重已经爬取过的URL。因此,如果一个URL被爬取过以后,会在一段时间内,系统中又碰到这个URL,就会把它过滤掉。大家可以在localsettings.py文件中设置DUPEFILTER_TIMEOUT,单位为秒。默认为600秒。也就是说,一个URL被爬取以后,默认情况下,600秒内都会被过滤掉,除非新的Request对象中设置了dont_filter参数为True。那么,在Scrapy Cluster系统中是如何实现URL的去重功能的呢?另外,在Scrapy Cluster中重定向的URL又是如何被错误去重的呢?
Read more