首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Python核心技术与实战——十|面向对象的案例分析
】的更多相关文章
Python核心技术与实战——十|面向对象的案例分析
今天通过面向对象来对照一个案例分析一下,主要模拟敏捷开发过程中的迭代开发流程,巩固面向对象的程序设计思想. 我们从一个最简单的搜索做起,一步步的对其进行优化,首先我们要知道一个搜索引擎的构造:搜索器.索引器.检索器和用户接口四个部分.搜索器,就是俗话说的爬虫,它在互联网上大量爬去各类网站上的内容,送给索引器.索引器拿到网页和内容后会对内容进行处理,形成索引,存储于内部的数据库等待检索.用户接口就是网页和App前端界面.用户同通过接口想搜索引擎发出询问,询问解析后送达检索器:检索器搞笑检索后,再将…
Python核心技术与实战——十九|一起看看Python全局解释器锁GIL
我们在前面的几节课里讲了Python的并发编程的特性,也了解了多线程编程.事实上,Python的多线程有一个非常重要的话题——GIL(Global Interpreter Lock).我们今天就来讲一讲这个GIL. 一个不解之谜 我们先来看一看这个例子: def CountDown(n): while n>0: n -= 1 现在,我们假设有个很大的数字n=100000000,我们来试试单线程的情况下 执行这个函数,然后看看怎么执行的 import time def main(): start_…
Python核心技术与实战——十六|Python协程
我们在上一章将生成器的时候最后写了,在Python2中生成器还扮演了一个重要的角色——实现Python的协程.那什么是协程呢? 协程 协程是实现并发编程的一种方式.提到并发,肯很多人都会想到多线程/多进程模型,这就是解决并发问题的经典模型之一.在最初的互联网世界中,多线程/多进程就在服务器并发中起到举足轻重的作用. 但是随着互联网的发展,慢慢很多场合都会遇到C10K瓶颈,也就是同时连接到服务器的客户达到1W,于是,很多代码就跑崩溃,因为进程的上下文切换占用了大量的资源,线程也顶不住如此巨大的压力…
Python核心技术与实战——十四|Python中装饰器的使用
我在以前的帖子里讲了装饰器的用法,这里我们来具体讲一讲Python中的装饰器,这里,我们从前面讲的函数,闭包为切入点,引出装饰器的概念.表达和基本使用方法.其次,我们结合一些实际工程中的例子,以便能再次理解. 一.函数与装饰器 函数的核心 第一点,在Python中,函数是“一等公民”(first-class citizen)(在有些资料例如流畅的Python中被叫做一等对象),函数也是对象,我们可以把函数赋予变量,比如下面的代码 def fun(message): print('Get a me…
Python核心技术与实战——九|面向对象
在搞清了各种数据类型.赋值判断.循环以后如果是从C++.Java语言入手的,就会有一个深坑要过:OOP(object oriented programming):公私有保护.多重继承.多态派生.纯函数.抽象类.友元函数等等等等一堆专有名词等着你呢!还好还好!Python是一门相对友好一点的语言,他在创立之初就鼓励命令交互式的轻量级编程.理论上,Python的命令式语言是图灵完备的,也就是说命令式语言,理论上可以左到任何其他任何语言能做到的所有事情,甚至进一步,仅仅以靠汇编语言的MOV指令,就能实…
Python核心技术与实战——十八|Python并发编程之Asyncio
我们在上一章学习了Python并发编程的一种实现方法——多线程.今天,我们趁热打铁,看看Python并发编程的另一种实现方式——Asyncio.和前面协程的那章不太一样,这节课我们更加注重原理的理解. 通过上节课的学习,我们知道在进行I/O操作的时候,使用多线程与普通的单线程比较,效率有了很大的提高,既然这样,为什么还要Asyncio呢? 虽然多线程有诸多优点并且应用广泛,但是也存在一定的局限性: ※多线程运行过程很容易被打断,因此有可能出现race condition的情况 ※线程的切换存在一…
Python核心技术与实战——十五|深入了解迭代器和生成器
我们在前面应该写过类似的代码 for i in [1,2,3,4,5]: print(i) for in 语句看起来很直观,很便于理解,比起C++或Java早起的 ; i<n;i++) printf("d\n",a[i]) 是不是简洁清晰的多.但是我们有没有想过Python在处理for in语句的时候,具体发生了什么吗?什么样的对象可以被for in用来枚举呢? 所以,这一节我们就深入到Python的容器类型实现底层看一看,了解一下迭代器和生成器. 前面用过的容器.可迭代对象和迭…
Python核心技术与实战——十二|Python的比较与拷贝
我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = b = a == b 或者是将一个对象进行拷贝 l1 = [,,,,] l2 = l1 l3 = list(l1) 那么现在试一下下面的代码:先创建个列表l1,再把这个列表进行一份拷贝至l2,最后把l1添加一个元素,看l2会发生什么变化? >>> l1 = [,,,,] >>> l2 = l1 >>> l1.append() >>> l2 [, , , , ,…
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的<云数据库十大经典案例分析>的分享整理而成.罗龙九以MySQL数据库为例,分析了自RDS成立至今,用户在使用RDS过程中最常见的问题,包括:索引.SQL优化.锁.延迟.参数优化.连接数.CPU.Iops.磁盘.内存等.罗龙九通过对十大经典案例的总结,还原问题原貌,给出分析问题的思路,旨在帮助用户在使用…
Python核心技术与实战——六|异常处理
和其他语言一样,Python中的异常处理是很重要的机制和代码规范. 一.错误与异常 通常来说程序中的错误分为两种,一种是语法错误,另一种是异常.首先要了解错误和异常的区别和联系. 语法错误比较容易理解,就是写的代码不符合变成规范,无法被识别或执行,就像这样 >>> print(name) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameErro…