时光荏苒,2018年已经过半。
又到一年一度的”618”购物节,是时候来一波”买买买”。
如果你目前想改变下自己,为自己的未来奋斗。
可以少买一两件衣服,少买一两箱零食,腾出一两百块钱来买几本书。
当当,京东正好有图书满减活动。
当当网的优惠还是相当大的,满200减100,满400减200,等同打 5 折。
如果书籍满足满减要求,就能优惠。
我个人也是买了一些书籍,坚持持续学习。
我推荐一些个人觉得不错的书籍。这些书籍基本上要么已经购买了,要么已经囤在购物车中。
另外,大部分书籍都是图灵图书推荐过。
1.Python 编程入门比较适合零基础,想入门的小伙伴。书籍用到的都是 Python 3.x 版本
2.Python 开发进阶如果小伙伴已经把基础知识学得差不多了,想进一步提高自己的能力。可以阅读进阶书籍。同样,书籍用到的都是 Python 3.x 版本。
3.数据分析单独把数据分析拎出来说,是因为数据分析挺有分量的。
4.算法通过阅读代码方式来学习算法是一个枯燥,痛苦的过程。因为需要很强的想象能力。我们换一种方式来,通过图片形式来学习算法 ...
苔痕絮语
未读今天这波分享可以说是自己热血来潮。
起因是自己收到某个问答社区小秘的问题邀请。
问题是 《谁能给我推荐几本linux的书?从基础到进阶提高的linux书?》。
自己挺怀念大学那段折腾 Linux 的时光,所以就忍不住评论一波。
可曾没有想到,这一评论的阅读量有 1.5 W
有些网友想要鸟哥 Linux 的学习视频,私信我以及到公众号后台留言。
因此,就有今天这篇文章。
一是我分享下自己学习 Linux 的过程,希望各位小伙伴不要踩坑。
二是分享学习资料。
大学二年级,我课程中有一门专业课《操作系统》。
当时授课老师是我最喜欢的老师。他原先在北京理工大学讲课,后来到我们学校教书。
他不仅自己学识渊博,而且有丰富的教学经验,讲课方式生动。
所以同学们很喜欢上他的课,当然我也是不例外。
另外他姓龚,同学们觉得他和蔼可亲,就经常称呼他“老龚”。
我自己预习《操作系统》课程,真是看不下去。
书本内容真的是深奥难懂又枯燥无味。
后来上课,老师用以先实践后理论的方式来讲课,我们都听得入神。
我记得龚老师那时说过一句很经典的话:
《操作系统》主要是讲解 Linux 系统。而我们现在使用的 Win ...
Python编程
未读我们从网上爬取数据,最后一步会考虑如何存储数据。
如果数据量不大,往往不会选择存储到数据库,而是选择存储到文件中,例如文本文件、CSV 文件、xls 文件等。
因为文件具备携带方便、查阅直观。
Python 作为胶水语言,搞定这些当然不在话下。
但在写数据过程中,经常因数据源中带有中文汉字而报错。最让人头皮发麻的编码问题。
我先说下编码相关的知识。
编码方式有很多种:UTF-8, GBK, ASCII 等。
ASCII 码是美国在上个世纪 60 年代制定的一套字符编码。
主要是规范英语字符和二进制位之间的关系。
英语词汇组成简单,由 26 个字母构成。使用一个字节就能表示一个字母符号。外加各种符号,使用 128 个字符就满足编码要求。
不同国家有不同语言文字。
同时,文字组成部分的数量相比英语字母要多很多。
根据不完全统计,汉字的数量大约将近 10 万个,日常所使用的汉字有 3000 个。
显然,ASCII 编码无法满足需求。所以汉字采用 GBK 编码,使用两个字节表示一个汉字。
简体中文的编码方式是 GBK2312。
那 UTF-8 又是什么编码?
这要先说 Unicode 了。
...
技术真的是日新月异,Web 网站已经脱离之前的静态网站的体系,转而使用动态语言搭建的动态网站。
这也衍生出一个问题:该如何存储数据了?
数据库就应运而生,它的作用是提供存储数据的容器。
方便 web 网站进行存储、查询、更新等。
数据库种类也很多,有成熟且稳定的 MySql 数据库,有后起之秀的 MangoDB 数据库,也有新时代宠儿 Redis 数据库。
除此之外,还有其他一些数据库,例如 Sqlite、Oracle 等。
那么问题来了,面对多种类型的数据库,自己该如何选择?
或许你因个人比较喜欢 MySql 数据库,所以选择它。
也许你在网络上查了一下资料,发现别人都推荐使用 MangoDB,所以就选择它。
这两种想法都是不能正确地选择。
任何脱离业务来谈架构都是在瞎扯。
因此,要根据项目业务的场景需求来决定选择哪种数据库。
每种数据库都各有优缺点,而选取标准是选择最优,最适合。
我个人的理解是结合以下几个方面来考虑:
1.读写速度这存储数据方式往往决定读写的速度。
Mysql 无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。
Mo ...
Python爬虫实战
未读我爬取豆瓣影评,告诉你《复仇者联盟3》在讲什么?
《复仇者联盟3:无限战争》于 2018 年 5 月 11 日在中国大陆上映。截止 5 月 16 日,它累计票房达到 15.25 亿。这票房纪录已经超过了漫威系列单部电影的票房纪录。不得不说,漫威电影已经成为一种文化潮流。
复联 3 作为漫威 10 年一剑的收官之作。漫威确认下了很多功夫, 给我们奉献一部精彩绝伦的电影。
自己也利用周末时间去电影院观看。看完之后,个人觉得无论在打斗特效方面还是故事情节,都是给人愉悦的享受。
同时,电影还保持以往幽默搞笑的风格,经常能把观众逗得捧腹大笑。
如果还没有去观看的朋友,可以去电影院看看,确实值得一看。
本文通过 Python 制作网络爬虫,爬取豆瓣电影评论,并分析然后制作豆瓣影评的云图。
1.分析先通过影评网页确定爬取的内容。我要爬取的是用户名,是否看过,五星评论值,评论时间,有用数以及评论内容。
然后确定每页评论的 url 结构。
第二页 url 地址
第三页 url 地址:
最后发现其中的规律:除了首页,后面的每页 url 地址中只有 start= 的值逐页递增,其他 ...
Python编程
未读上篇文章中讲到 Django 如何启动以及配置 sessions 功能。sessions 功能用是跟踪用户的状态,经常结合 Cookie 功能实现自动登录功能。
所谓的“自动登录”指的是:我们登录一些网站,在不关闭浏览器以及距离上次登录时间不是很长的情况下。
无论我们在新的标签页打开网站,还是关闭页面重新打开网站,登录状态一直保持着。
本文内容有两个:一是利用 Django 实现自动登录功能,二是揭开“自动登录”的神秘面纱。
1.新建项目我为了将本系列所有文章的示例代码保持集中状态,所以直接在 Django_demo 项目中创建应用。
如果第一次看这文章,需要先创建项目(project),再创建应用(app)。
我新建的应用是 demo_session。
然后在 setting.py 中启动请用,并检查 sessions 组件是否启动。
因为需要 Cookie 功能,所以同样需要在 settings.py 增加一些配置。
12345678SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏 ...
Python编程
未读淘宝、天猫、京东等电商网站的出现,让我们足不出户就能购物。
在这些网站中,都有一个“购物车”的功能。当我们在不同商品页面将商品加入购物车,然后关闭浏览器。
等下次浏览该网站时,我们会依然发现购物车的商品还在。
这是怎么实现的了?类似这种场景,一般都是采用 Cookie + Session 方式来实现。
1.Cookie 机制HTTP 协议是无状态的。
所以服务器无法根据 HTTP 协议来辨别多个 HTTP 请求来自哪个用户。
在实际场景中,服务器经常需要追踪客户端的状态。为了解决这个问题, Cookie 技术应运而生。
cookie 一开始是服务器产生的一段随机字符串。
它的主要内容包括:名字,值,过期时间,路径与域等信息。
然后服务器将其发送给客户端。
在后续的请求中,cookie 会附在请求资源的 HTTP 请求头上,发送给服务器。
2.Session 机制如果不涉及用户登录等敏感信息时,Cookie 能够满足大部分的场景需求。
而客户端(如浏览器)会将 Cookie 是保存在硬盘中。
如果用户登录敏感信息保存到 cookie 中,会存在安全性问题。
因为当 HTTP 请求被黑客 ...
Python编程
未读当页面因需要展示的数据条目过多,导致无法在一个页面全部显示。
这时,页面经常会采用分页形式进行展示,然后每页显示 20 或者 50 等条数据。分页经常在网站上随处可见,
它大概是这样子:
这样的实现不仅提高了用户体验,还是减轻数据库读取数据的压力。
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能。本文就讲解如何使用 Paginator 实现分页功能。
1.PaginatorPaginator 类的作用是将我们需要分页的数据分割成若干份。
当我们实现化一个 Paginator 类的实例时,需要给 Paginator 传入两个参数。
第一个参数是数据源,可以是一个列表、元组、以及查询结果集 QuerySet。
第二个参数需要传入一个整数,表示每页显示数据条数。具体写法如下:
12345book_list = []for x in range(1, 26): # 一共 25 本书 book_list.append('Book ' + str(x))# 将数据按照规定每页显示 10 条, 进行分割paginator = Pagin ...
Python编程
未读接着上篇文章内容,本文分享自己对模型一些用法的总结。
1.模型的元数据Meta除了抽象模型,在模型中定义的字段都会成为表中的列。
如果我们需要给模型指定其他一些信息,例如排序方式、数据库表名等,就需要用到 Meta。Meta 是一个可选的类,具体用法如下:
1234567class Author(models.Model): name = models.CharField(max_length=40) email = models.EmailField() class Meta: managed = True db_table = 'author'
不知你是否对上述代码有影响。通过 Django 将数据库表反向生成模型时,Django 会默认带上 managed 和 db_table 信息。
我主要说下 Meta 一些重要的属性,其他属性你可以通过文档信息进行学习。
abstract: 如果 abstract = True,模型会指定为抽象模型。它相当于面向对象编程中的抽象基类。
proxy:如果设置了p ...
Python编程
未读前面有两篇文章简单介绍 Django 的模型,这一部分算是基础知识。
我自己近期也总做了下总结,将花大概两篇的篇幅来分享下模型的一些高级用法。
如果想熟悉 Django 的用法,我认为应该一开始要熟悉一些细节用法,后面再了解 Django 的实现原理。
而细节用法往往体现在一些差别用法,难以理解的知识点上。
1.复杂的字段类型经过前面的学习,我们知道模型的字段类型一方面是指定数据库表的列名称和数据类型,另一方面决定 HTML 中的表单标签类型。
1-1.整数类型的区别Django 的整数类型有三个,分别是 IntegerField、BigIntegerField 和 SmallIntegerField。
这三个字段区别在于取值范围。
IntegerField 在 Django 所有支持的数据库中,合法取值范围是 -2147483648 到 2147483647。
而 BigIntegerField 是一个 64 位整数,它允许的值范围是 -9223372036854775808 到 9223372036854775807。
所以在数据库迁移的时候,特别数据库中有 Sqlite 时,要 ...