温故知新,高级复读机

数据采集部分 分析页面 找一个歌手的主页进去,发现分四个标签:热门作品、所有专辑、相关MV和艺人介绍,没有全部歌曲的页面,不过既然有全部专辑,也就相当于有了所有歌曲,可以通过遍历所有专辑来获得每个专辑中的歌曲,再合并成一个大列表,这样就能间接的取到全部的歌曲id 得到歌曲id以后,通过请求每个歌曲url取到页面,然后进行主要数据的提取,评论部分可以拎出来单做,歌词的获取需要处理(要点击展开...

传输层的任务 传输层的协议为应用进程提供端到端的通信服务,它提供面向连接的数据流支持、可靠性、流量控制、多路复用等服务 该层的协议大多是 客户端/服务端(C/S) 形式,客户端发起请求,服务端提供服务处理请求;在UNIX系统中服务端程序叫守护进程,通过端口号识别,如HTTP的守护进程是httpd,端口号为80,ssh的是sshd,端口号为22;系统中有一种超级守护进程inetd,它负责收到...

IP地址 IP通过将数据包发送给最终的目标计算机,让世界上任何两台计算机之间进行通信,IP地址就像是通信过程中的基石 IP(Internet Protocol):网际协议 IP地址(IPv4)由32位正整数表示,在计算机内部用二进制处理,8位一组,用.隔开分成四组,再转换成十进制数,可以有4294967296个地址(43亿个,2^32) 组成与分类 IP地址由网络地址(网络标识)和...

过期时间 Redis 允许你指定 key 的存活时间,该命令基于key,和key所对应的数据结构无关 指定秒数后删除 expire <key> <seconds> 指定时间戳后删除 expireat <key> <timestamp> 查看 key 存活时间 ttl <key> 删除已过期的 key persist...

基本特性 基于内存的,可持久化的,键值对方式的存储,数据保存在内存中,速度快,根据不同场景使用 命令操作 通过标识数字定位,默认开始标识是0,命令结束后会响应OK,并修改提示符后缀 选择数据库:select [标识数字] key 定义如何标识数据块,key 名一般用符号分割;value 表示 key 的实际数据,当作字节数组看待 添加数据:set <key> <va...

OSI模型 由国际标准化组织(ISO)提出,试图使各种计算机在世界范围内互连为网络的标准框架,该模型将通信协议中必要的功能分成了七层,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务,上下层之间进行交互时所遵循的约定叫接口,同一层之间的交互所遵循的约定叫做协议 OSI参考模型中用协议定义了每层的作用,协议的具体内容为规范,但它只是模型,并没有对协议和接...

开源数据库 一般提到常用的开源数据库总会想到 MySQL 与 PostgreSQL,它们都是免费、开源、强大、且功能丰富的数据库。 MySQL 首度出现在1994年,它最初是由 MySQL AB 开发的,然后在 2008 年以 10 亿美金卖给了 Sun 公司,Sun 公司又在 2010 年被 Oracle 收购,Oracle 支持 MySQL 的多个版本:Standard、Enterpr...

想把Web应用放在服务器上跑,需要进行服务器部署,其中用到这三个东西: Gunicorn:高性能的Web服务器,在实际生产环境下,flask自带的web服务器难以满足,所以要把Web应用跑在这上面 Nginx:也是一个Web服务器,相当于一个中间人,可以进行反向代理、负载均衡等 Supervisor:Linux/Unix下的一个进程管理工具(守护程序),负责监听、启动、重启一个...

树是n(n>=0)个结点的有限集,n=0时称为空树,在任意一颗非空树中: 有且只有一个特定的称为根(Root)的结点 当n > 1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2…Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree) 结点拥有的子树称为结点的度(Degree),度为0的结点称为叶结点(Leaf)或终端结点,度不...

串是由零个或多个字符组成的有限序列,又名叫字符串;零个字符的串称为空串(null string,也用Φ表示),只包含空格的串称为空格串,串中的子序列称作子串 串的比较:以ASCII码为字符集;比较对应位置的值和长短 存储结构 顺序存储结构:用普通方式实现会产生很多问题,因此要做变化:串值的存储空间可在程序执行过程中动态分配而得 链式存储结构:一个结点可以存放一个或多个字符,若末尾结点未满则用...

栈 栈是限定仅在表尾进行插入和操作的线性表;允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称后进先出的线性表(即LIFO结构) 栈是特殊的线性表(限制了这个线性表的插入和删除位置),有前驱和后继关系,线性表的表尾是指栈顶,栈顶是固定的 栈的插入(push)操作叫进栈(压栈、入栈),删除(pop)操作叫出栈(弹栈) 顺序栈(栈的顺序存储结构) ...

在本文中的顺序存储结构、链式存储结构等都是对线性表而言的 线性表(Linear List):零个或多个数据元素的有限序列,元素的个数定义为线性表的长度,无元素时称为空表;每个元素的位置称为位序(类似下标),某元素的前一个元素称作直接先驱元素,后一个元素称作直接后继元素 顺序存储结构: 用一段地址连续的存储单元依次存储线性表的数据元素,在C中用一维数组来实现(Python中可以用列表...

数据结构概述 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合 数据:描述客观事物的符号,能被计算机识别并操作的对象,能输入到计算机中进行处理的符号集合 数据元素:组成数据的基本单位,通常作为整体处理,也称为记录(着眼点) 数据项:一个数据元素可以由若干个数据项组成(最小单位,不能再分割) 数据对象:性质相同(即相同数量和类型的数据项)的数据元素的集合,是数...

Python有四种可调用对象:函数(BIF、UDF、lambda)、方法、类、一些类实例, 它们的别名也是可调用的 内建函数(Build-in Func):用C/C++编写, 在第一(内建)名称空间里,属于_builtin_模块并作为__builtins__模块导入 ​ ​ 类型为builtin_function_or_method 用...

类是一种数据结构, 可用来定义对象, 对象再把数据值和行为融合在一起, 编程形式上的现实世界的抽象实体 实例是类的一个具体信息(真正实物),创建一个实例的过程称作实例化 当创建一个类时, 实际也就创建了一个自己的数据类型(2.2以后类型和类进行了统一) 新式类和旧式类最大的不同:有没有从祖先类派生 (即新式类必须继承至少一个父类(object是默认父类), 旧式类不指定父类) 类的...

模块:指自我包含并且有组织的代码片段, 一个文件被看作是一个独立模块 路径搜索: 在文件系统‘预定义区域’(就是搜索路径)中查找<modulename>.py文件 默认搜索路径两种方法: a)PYTHONPATH环境变量 b)sys.path(由每个独立路径组成的list) 可进行修改 查看当前导入的模块和源sys.modules, 它返回的是一个字典, 模...

函数是对程序逻辑进行结构化或过程化的一种编程方法(标题行相当于函数声明, 代码块相当于函数定义) 元祖语法上不需要一定带上圆括号, 所以在return中看起来像是在返回多个对象(对象返回数目:0:None, 1:object, >1:tuple) 特性: 可以把参数放进一个元祖(非关键字参数)或字典(关键字参数)中, 比显式地把参数放表面要好得多 ​ 函数调用的...

异常:因为程序出现了错误而在正常控制流以外采取的行为,行为阶段: 触发异常-检测(采取措施) 常见异常: NameError ZeroDivisionError SyntaxError IndexError ​ ​ KeyError IOError AttributeError try-except*-[else]:一般用法, 若无异常进else try-f...

文件对象不仅可以访问普通磁盘文件,也可以访问任何其他抽象层面上的文件(类文件对象,如URL) 文件只是连续的字节序列,数据的传输经常会用到字节流,字节流可能是由单个字节或大块数据组成 open()函数提供初始化I/O操作的通用接口,成功会返回一个文件对象(句柄),否则报错 open(fname, mode[rwabU], buffering[num]) ...

关键字: if else elif while for break continue pass 悬挂else问题:在C中else与最近的if搭配,就会容易产生问题,而python中因为强制缩进,不会有这问题 elif过多时可以用序列和成员关系符进行简化(利用字典实现更优雅) 使用映射对象的一个最大好处是它的搜索操作比类似if-elif-else语句或for循环这样的序列查询...

序列类型 序列的每一个元素可以通过指定一个偏移量(切片)的方式得到 标准序列类型操作符:成员[not] in、重复*、连接+、下标访问[x] 用+连接字符串不如用join()方法,后者更节约内存;连接列表用extend()方法更省 在序列中可以用None作为索引值,显示所有 一旦一个Python的对象被建立,我们就不能更改其身份或类型(用操作符操作时实际是创建了浅拷贝...

数字类型 整型: 标准整型、长整型(删除线表示在python3中已去掉) 双精度浮点型:占8个字节,带小数点和e(科学计数法可选) 复数 特殊:布尔值(只有True或False,相当于1和0) 长整型类型是标准整型类型的超集,能表达的数值与内存大小相关(远大于其它语言的长整型) 操作数自动转换为同类型的内...

python基础 在python中,对象是通过引用传递的 多元赋值时两边的对象都是元祖(省略了括号): 查看关键字模块: keyword; 列出所有:keyword.kwlist 专用下划线标识符: _xxx 不用import导入/类中的私有变量名 _xxx_ 系统定义名字 doc:访问在各种声明中第一个没有赋值的...

1.过程作为参数 以过程为参数或是以过程为返回值的过程,这类过程称为高阶过程 先从两个过程入手,第一个是计算从a到b的各整数之和: (define (sum-integers a b) (if (> a b) 0 (+ a (sum-integers (+ a 1) b)))) 第二个是计算给定范围内的整数的立方之和: # 前提函数 (define ...

素数的检测 有两种方法来实现,第一种是寻找因子,思路是:用从2开始的连续整数(在这里自称为检查数)去检查它们是否整除n,根据这个定义过程: (define (smallest-divisor n) (find-divisor n 2)) (define (find-divisor n test-divisor) (cond ((> (square test-divis...

1.增长的阶 是用来描述不同的计算过程在消耗计算资源的速率上的差异 令n是一个参数,作为问题规模的一个度量 令R(n)是一个计算过程在处理规模n的问题时所需要的资源量 我们称R(n)具有θ(f(n))的增长阶,记为: R(n) = θ(f(n)) 如果存在与n无关的整数k1和k2,使得:k1f(n) <= R(n) <= k2f(n) 对于足够大的n,值R...

1.线性的递归和迭代 先从阶乘的问题入手,计算n的阶乘(n!),也就是: n!=n*[(n-1)*(n-2)*(n-3)*...3*2*1] = n*(n-1)! 通过n=n*(n-1)!和1!=1,可以将其定义为一个过程: (define (factorial n) (if (= n 1) 1 (* n (factorial (-n 1)))...

1.实例:采用牛顿法求平方根 计算机的过程和常规的数学函数很相似,但它们之间有个重要差异:过程必须是有效可行的 我们可以把求平方根问题描述为:√ ̄x = y, y>=0而且y²=x ,但是它并没有描述一个计算过程 函数与过程之间的矛盾,是描述一件事情的特征与描述如何去做这件事之间的普遍性差异的一个具体反映,即说明性知识与行动性知识之间的差异 计算思路:牛顿法(逐步逼近方法...

0.”三机制”和”两要素” 一个强有力的程序设计语言为了能够将简单认识组合起来成更复杂认识,为此,提供了三种机制: 基本表达形式 (用于表示语言所关心的最简单的个体) 组合的方法 (通过它们可以从较简单的东西出发构造出复合的元素) 抽象的方法 (通过它们可以为复合对象命名,并将它们当作单元去操作) 在程序设计中,我们需要处理两类要素:过程和数据 非形式地说 数据是一种我...

1.python中一切皆对象 首先从概念上看“在python中, 函数本身也是对象” 当执行: alist = [1, 2, 3] 时,你就创建了一个列表对象,并且用alist这个变量引用它。 也可以自己定义一个类: class House(object): def __init__(self, area, city): self.area = area ...

介绍&使用 MySQL是基于客户端—服务器(C/S)的DBMS,因为它开源、高性能、可靠、方便使用,用的人很多 不同环境下安装的方式也不同,我是在docker中,方便省事,安装就不多说了,网上一堆教程 安好之后会自带一个MySQL的命令行客户端,正常是在命令行下输入: mysql -u 用户 -p -h 主机名 -P端口号 在docker下则需要先进mysql的容器运行ba...

安装 Flask主要有两个依赖:Werkzeug(负责路由、调试、WSGI)和Jinja2(负责模板) 先搭虚拟环境 虚拟环境是python解释器的一个私有副本(就像开小号),在这个环境中你可以随意造次,并且不会影响系统中的全局Python解释器,我是Win环境,需要有pip,然后在Powershell(cmd也可)里敲命令安装 Linux下: $ sudo agt-get install...