自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 收藏
  • 关注

原创 归并排序

归并排序归并排序的思想就是分治法,分两步走,第一步,将需要排序的数组分解为子序列,对子序列进行排序;第二步就是对有序子序列进行排序,合并成一个有序的序列。public static void sort(int[] arr) { //临时数组 int[] tempArr = new int[arr.length]; sort(arr, tempArr, 0, arr.length -...

2019-07-22 12:13:36 311

原创 约瑟夫环问题

什么是约瑟夫问题?所谓约瑟夫问题就是N个人围成一圈,从第一个人开始报数,报M的那个人出局;接着又是M+1那个人开始报数,从1开始报,后面报M的那个人出局;以此循环,直到最后只剩一个人,求这个人的初始下标或者初始排第几位?下图就是10个人,报3的出局的模型!很多的解答当中都提到了最笨的方式,利用链表来模拟,N个人看作是N个链表节点,节点1指向节点2,节点2指向节点3,……,节点N-1指向...

2019-07-22 11:59:41 497

原创 大数相关算法

在华为的机试的时候,碰到了大数的问题,所有的大数问题,无非就是相加相减相乘相除这四种,里面的区别就是大数的表示方式,一般我们采用字符数组的方式去保存大数,也有采用链表的。这两种方式中,字符数组的方式比较好理解一些,本文通过代码,来说明大数运算的集中情况,力争将这个问题讲清楚。大数相乘题目描述:输入两个不超过100位的大整数的乘积。输入:1234567 123输出:151851741...

2019-07-16 23:56:19 642

原创 多线程从入门到放弃

在前面《python多线程浅析》一文中,我比较笼统的写了关于多线程的一些东西,本文准备比较详细的介绍一下多线程,从最基础的创建多线程开始,探讨关于锁、通信机制、线程池等内容!单线程、多线程、多进程的对比首先,我们通过以下四个场景,来对比以下单线程、多线程、多进程处理能力的强弱!四个场景分别是CPU计算密集型、磁盘IO密集型、网络IO密集型、还有我们模拟的IO密集型。代码如下:impo...

2019-07-01 22:06:50 357

原创 协程进化史:从yield到await

在python2.5的时候,yield关键字可以在表达式中使用,而且生成器API中增加了send()方法,也就是从这个时候开始,生成器可以当作协程使用。在python3.3的时候,PEP380引入了yield from语句,使用它可以将复杂的生成器重构称小型嵌套生成器;而且从这个版本开始,生成器可以返回值,在此之前,在生成器中加入return语句会抛出SyntaxError。在python...

2019-06-28 00:15:42 1678

原创 阻塞/非阻塞、同步/异步到底是什么?

阻塞指的是程序在未得到所需资源时被挂起的状态!程序在等待某个操作完成期间,自身无法继续干别的事情,则称程序在该操作上是阻塞的。非阻塞就是程序在等待某个操作过程中,自身没有被阻塞,可以继续做另一件事,则称程序在该操作上是非阻塞的。同步就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。异...

2019-06-26 14:33:50 749

原创 从生成器到协程

本文希望能够通过生成器到协程的历程,从这个角度说明一下协程!递归我们以斐波拉契数列的运算来说明我们的生成器,对于斐波拉契数列,我们生成其第n个数。首先我们利用递归的方式实现。import timedef clock(func): def clocked(*args): t0 = time.perf_counter() result = fu...

2019-06-25 18:03:05 539

原创 python从闭包到装饰器

前面写过一篇《原来这就是python装饰器》,主要介绍蛇什么是装饰器,这一篇主要介绍装饰器所运用到的技术原理,最终说明装饰器的工作原理!python如何判断变量是不是局部变量?如下的例子:b = 6def f1(a): print(a) print(b) b = 9 print(b)if __name__ == "__main__": ...

2019-06-18 17:37:07 388 1

原创 python爬取微信制作照片墙

以前看到很多爬取自己微信制作照片墙的,觉得蛮有意思的,今天自己实现了一下。本人主要是用到wxpy以及PIL这两个库,其中wxpy这个库很好玩的样子,参考https://pypi.org/project/wxpy/0.3.9.8/!而PIL可以参考下面这个文章https://www.liaoxuefeng.com/wiki/897692888725344/966759628285152。废话不多...

2019-06-11 21:03:41 970

原创 python实现爬取猫眼并初步分析数据

本文通过爬取猫眼top100,利用Request请求库和4种内容提取方法:正则表达式、lxml+xpath、Beatutifulsoup+css选择器、Beatutifulsoup+find_all爬取网页内容,熟悉常用的这些提取方法。爬取目标从网页中提取出top100电影的电影名称、封面图片、排名、评分、演员、上映国家/地区、评分等信息,并保存为csv文本文件。 根据爬取结果,进行简单...

2019-06-11 00:36:46 2231 4

原创 python实现爬取东方财富网

在东方财富网上面有很多关于各个公司报表的信息,通过爬取上面的信息,我们可以分析其中数据,得到一些我们想要的结果!本文通过requests/json/re模块爬取该网站的数据,存储为csv文件。具体代码实现如下!import requestsimport reimport jsonimport csvimport osimport time# 设置文件保存本地文件夹下fil...

2019-06-10 13:56:27 7860 6

原创 pythonchallenge解法源码(6-10)

第六关import zipfilecomments = []num = '90052'suffix = '.txt'with zipfile.ZipFile('channel.zip') as zf: while True: try: zi = zf.getinfo(num + suffix) #获取zip文档中指定文件的信息 ...

2019-06-10 00:51:52 158

原创 pythonchallenge解法源码(1-5)

今天看到一个好玩的游戏,搜了一下,很早的一个项目了,想着这样去熟悉一下python的一些用法,下面把每一关的源码贴出来!第一关import stringtext = '''g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddg...

2019-06-09 00:10:26 271

原创 线程安全的那些事儿

在网络上看到关于线程安全的问题,在这里,我想结合操作系统中线程的概念,来说说这个问题!进程是资源分配的最小单位,线程是程序执行的最小单位!也就是说对于进程来说,它的内存空间有一块特殊的公共区域,通常称为堆,这个区域是所有进程内的线程共享的区域。这个区域共享,好处是数据的传输非常方便,坏处是会造成数据的不安全,因为所有线程都能用,这就引出了我们说的线程安全的问题。那么什么是线程安全?怎么去保...

2019-06-06 11:26:08 158

原创 抓取知乎学习Scrapy

每一篇讲解scrapy框架的文章,都会以这张图来说明,对于一个小白,第一次看到这张图的时候,肯定是懵逼的!先不管这张图,下面我以抓取知乎的实例,说明这个框架!通过以下命令,我们会建立一个scrapy框架的抓取知乎网页的工程:scrapy startproject zhihu这个时候就会生成以下这些文件!这个时候我们需要进入这个工程zhihu,输入以下命令,建立spider...

2019-06-05 23:37:44 218

原创 python爬虫实现博客数据爬取

本次抓取利用requests库请求网页,返回json数据,所以需要通过json来解析text数据;pyquery解析网页数据;数据最终保存在mongodb中。import requestsfrom urllib.parse import urlencodefrom pyquery import PyQuery as pqfrom pymongo import MongoClient...

2019-06-05 17:50:55 322

原创 MapReduce流程浅析

前言Hadoop是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce、分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper、Pig、Chukwa、Hive、Hbase、Mahout、flume等。这里,我们明确了MapReduce是一个分布式并行编程框架,它将复杂的、运行于大规模集群上的并行计算过程高度...

2019-06-01 17:00:32 861

原创 python爬虫实现豆瓣数据的爬取

本文利用urllib在python3.7的环境下实现豆瓣页面的爬取!用到的包有urllib与re两个模块,具体实现如下!import urllib.requestimport reimport sslurl = "https://read.douban.com/provider/all"def doubanread(url): ssl._create_default_...

2019-05-26 22:02:09 1966

原创 分布式文件系统HDFS原理篇

所谓分布式文件系统就是通过网络实现文件在多台主机上进行分布式存储的文件系统!它一般采用“客户端/服务器端”的模。分布式文件系统的结构如下图所示,分布式文件系统在物理结构上是由计算机集群的多个节点构成的。这些节点分为主节点(Namenode,也叫做名称节点)和从节点(Datanode,也叫做数据节点)。其中主节点负责文件和目录的创建、删除和重命名等,同时管理着从节点和文件块的映射关系,因此客...

2019-05-26 03:10:01 5564

原创 python网络编程基础

网络架构网络中我们采用客户端/服务器结构的方式,其中服务器就是为一个或多个客户端提供服务,它唯一的目的就是等待客户端的请求,并响应请求,然后等待更多的请求;而客户端因特定的请求而联系服务器,并发送数据,然后等待服务器的回应,最后完成请求或给出故障的原因。套接字网络编程的一个基本组件是套接字(socket)。最初它是为同一个主机上的应用程序所创建,也就是应用在进程间的通信上面。今天我们要...

2019-05-22 19:10:25 171

原创 python爬虫实现贴吧表情包的爬取

本文利用urllib在python3.7的环境下实现贴吧表情包的爬取!用到的包有urllib与re两个模块,具体实现如下!import urllib.requestimport reimport sslurl = "https://tieba.baidu.com/p/5059180075?red_tag=0069685467"def baidu(url): ssl._...

2019-05-18 23:04:02 440

原创 子网掩码的计算方法

一、利用子网数来计算在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。1)将子网数目转化为二进制来表示2)取得该二进制的位数,为 N3)取得该IP地址的类子网掩码,将其主机地址部分的的前N位置 1 即得出该IP地址划分子网的子网掩码。如欲将B类IP地址168.195.0.0划分成27个子网:1)27=110112)该二进制为五位数,N = 5...

2019-05-18 17:20:19 6389

原创 HTTPS原理解析

基本概念1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 ...

2019-05-18 17:18:31 180

原创 TCP与UDP的区别与联系

TCP协议TCP协议全称传输控制协议,就是对传输过程中的数据有一定的控制!我们来看看它的包头的样子!我们来分析分析每部分的含义和作用:源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.32位序号:4位首部长度: 表示该tcp报头有多少个4字节(32个bit)6位保留: 顾名思义, 先保留着, 以防万一6位标志位URG: 标识紧急指针是否有效AC...

2019-05-18 17:16:15 24821 5

原创 python lamdba表达式详解

简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。我们看下面这个例子!返回一个序列的平方。def f(x): return x*xlis = list(map(f,[y for y in range(10)]))print(lis)上面这个例子如果我们用lamdba来实现的话,只需要如下所示!...

2019-05-14 18:23:21 879

原创 列表与元组进阶篇

内置序列类型分类大部分书里面,我们的序列都是被分为可变序列和不可变序列,其中可变序列有list/bytearray/array.array/collections.deque/memoryview,而不可变序列有tuple/str/bytes。内置序列可以分为容器序列和扁平序列,其中容器序列是它们所包含的任意类型的对象是引用,而扁平序列里存放的是值;而且屏边序列是一段连续的内存空间。其实区...

2019-05-13 17:20:21 184

原创 python多线程浅析

线程与进程操作系统原理相关的书,基本都会提到一句很经典的话: "进程是资源分配的最小单位,线程则是CPU调度的最小单位"。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。进程和线程的区别主要有:1、进程之间是相互独立的,多进程中,同一个变量,各自有...

2019-05-10 19:07:12 262

原创 python的with语句浅析

with语句是在python2.5开始引进的一种与异常处理相关的功能。在讲with语句之前,先说说上下文管理器,因为使用上下文管理器最广泛的就是with语句了。基本概念上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持该协议的对象要实现这两个方法。上下文管理器(Context Manager):支持...

2019-05-09 23:37:24 229

原创 python元类浅析

一切皆对象在python中,一切皆对象,不管是数字、字符串、列表、元组、字典。都是对象。例如:i = 10s = "asd"nums = [1,2,3]dict = {"asd":"qwe"}tup = (2,4,6,8)print(type(i))print(type(s))print(type(nums))print(type(dict))print(type(t...

2019-05-09 17:13:00 123

原创 python数据规整化基础

这部分的数据规整化主要包括合并、重塑以及转化,其中的转换又包括清理。合并数据集pandas对象中的数据通过一些内置方法进行合并,pandas.merge可以根据一个或多个键将不同DataFrame中的行连接起来;pandas.concat可以沿着一条轴将多个对象堆叠到一起;实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。默认键连接...

2019-04-04 14:35:12 278

原创 Pandas基础篇

Pandas是基于NumPy构建的,让以NumPy为中心的应用变得更加简单。Pandas的数据结构主要有两个:Series和DataFrame。SeriesSeries是一种类似于一维数组的对象,它由数据和索引两部分构成,你可以把它理解成一种字典,同时它可以由字典创建而来。索引在左边,值在右边。如果没有指定索引,那么它的索引默认从0开始。我们可以分别用index和values来输出索引...

2019-04-02 23:55:07 191

原创 NumPy进阶篇

NumPy数据类型体系前面我们说过用dtype来指定数据的类型,有时我们会查看一个数组是属于哪一类,我们可以利用np.issubdtype函数来查看这个值是否属于这一类,而且还可以利用mro方法来查看其所有父类。test = np.ones(5,dtype=np.int32)print(np.issubdtype(test.dtype,np.signedinteger))print(...

2019-04-01 21:09:27 618

原创 NumPy基础篇

python的一个比较大的功能就是数据处理,我们耳熟能详三个工具包分别是NumPy、Pandas以及Matplotlib,其中NumPy用于提供高级的数值编程以及复杂的数据处理任务;Pandas用于数据读取以及数据预处理等工作;Matplotlib用于绘图,完成可视化的工作。我们现在从NumPy开始,介绍这几个工具的基本用法。NumPy的ndarray:一种多维数组对象NumPy最重要...

2019-04-01 14:23:01 385

原创 读书笔记:python以时间维度分析数据

在《利用python进行数据分析》这本书中,在第10章最后一个示例中,由于版本的问题,书上的代码已经不能很好的运行。故将自己的作图代码和需要注意的地方做一下记录。Pandas:0.24.2Python:3.7数据连接:https://github.com/wesm/pydata-bookimport matplotlib.pyplot as pltimport pandas a...

2019-03-29 16:11:02 905

原创 python内存管理和垃圾回收机制

python的垃圾回收是采用的引用计数算法,而且在引用计数的基础上辅以标记-清除和分代回收算法。以引用计数算法来跟踪和回收垃圾;以标记-清除来解决对象产生循环引用造成无法回收的问题;以分代回收以空间换时间来进一步提高垃圾回收!我们从它的内存分配开始,说说它的垃圾回收机制!内存分配器 在python中,当要分配内存空间时,不单纯使用malloc/free,而...

2019-03-21 16:21:37 733

原创 python面向对象入门

们大部分人的第一门编程语言是C,上课的时候老师告诉我们C是面向过程的语言。面向过程就是教计算机一步一步来,这种编程思维是我们比较容易接受的,或许这就是让我们入门学C的原因吧。后面我们有学到了Java、C++,我们知道它是面向对象的,今天,我们来说说另一个面向对象的语言--python!面向对象的语言有三个特性:封装、继承、多态!后面我们会一一介绍。创建类和对象面向对象编程方式有两个...

2019-03-20 15:51:49 135

原创 python中的异常处理

什么是异常?python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理(或捕获)时,程序将终止并显示一条错误信息。如何引发异常?python为我们提供了raise语句来引发异常,并将一个类(必须是Exception的子类)或实例作为参数。注意,我们几乎所有的异常类都是从Exception派生出来的。如何自定义异常类?其实就是和创建普通类,但是该类必须直接或...

2019-03-15 18:20:44 276

原创 原来这就是python装饰器

我们利用一个生活中的场景来进入装饰器的世界! 我们模拟银行存取款的过程,代码如下:def deposit(): print('存款中...')def withdraw(): print('取款中...')key = 1if key == 1: deposit()else: withdraw() ...

2019-03-15 13:19:39 282

原创 python函数参数类型与参数传递

参数传递参数的传递是通过自动将对象赋值给本地变量名来实现的。在函数运行时,函数头部的参数名是一个新的、本地的变量名,这个变量名是在函数的本地作用域内存在。参数的传递本质上就是python赋值的另一个实例而已。我们传递的参数分为可变类型和不可变类型。不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修...

2019-03-14 16:32:26 1607

原创 python多态与函数作用域

多态在python中,一切皆对象,包括函数也是对象。因为python是动态类型的语言,所以它的多态实现非常容易。比如下面这个例子,一个操作的意义取决于被操作对象的类型。def func(a,b): return a * btest1 = func(12,5)print(test1) #60test2 = func('ad',5)print(test2) #adadad...

2019-03-14 15:22:27 549

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除