自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

某嫌疑犯

拼搏到无能为力,坚持到感动自己

  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 【 1024 】技术无罪帖

技术无罪帖。。。我爱党爱人民爱中国绝壁稳如狗。。。进来绝对不让你后悔所做一切都是为了帮助室友。。。[成功甩锅/滑稽]主要解决的问题主要解决了室友迫切的需求解决了网站验证码的输入解决了IP切换解决了在本地的文件分类问题知道你们进来只想要代码。。。 行吧。代码就都在这了。main()函数里面,贴上去了,是抓一个分类的代码。分类的函...

2018-06-12 15:04:49 492

原创 二叉树的遍历

1,二叉树二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)2,二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0) 性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0) 性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为...

2018-06-06 16:11:07 238

原创 关于树

树的术语节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树中,最大的节点的度称为树的度;叶节点或终端节点:度为零的节点;父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;兄弟节点:具有相同父节点的节点互称为兄弟节点;节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类...

2018-06-04 21:28:45 232

原创 二分法查找

搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找概念:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查...

2018-06-04 16:20:47 277

原创 归并排序

归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。假设目前有一个序列为: [5,6,3,7,9,1] 它要先不断拆分,知道不能进行拆分为止,则拆分结果应该为: ...

2018-06-04 16:06:41 153

原创 快速排序

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤为:找到一个元素,然后确定其在这个序列中的位置,保证它左侧元素都小于它,右侧元素...

2018-06-04 15:48:57 133

原创 希尔排序

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 —–百科希尔排序过程希尔排序...

2018-06-04 15:35:05 227

原创 插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序图示 假设最左侧有一个已排序好的序列。一开始是为空 然后从待排序的序列中总是从最左侧选出一个元素跟最左侧那个序...

2018-06-04 15:03:40 176

原创 选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。举个栗子:有列表 [ 4,5,1,3,6]首先假定第一个元素最小,即 4 最小,然后在[5,1,3,6]中迭代,判断其中有没有比 第一...

2018-06-01 21:48:55 120

原创 冒泡排序

所谓冒泡,就是每一次只比较相邻的两位,比较大小,在一轮迭代完成之后,得出最大或最小的一个数据。经过多次循环的迭代比较,排列出由大到小或由小到大的有序序列。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(此为升序,降序相反),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最...

2018-06-01 20:39:25 169

原创 堆栈与队列

1,栈栈(stack)又叫堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶top)进行加入数据(push)和输出数据(pop)的运算。保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。 由于栈数据结构只允许在一端进行操作,因而按照先进后出或者后进先出(LIFO, Last In First Out)的操作顺序...

2018-06-01 17:49:15 2270 1

原创 链表

为什么需要链表上篇顺序表讲了它的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。 而链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。...

2018-06-01 17:09:02 157

原创 顺序表

1,what is 顺序表        顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采

2018-05-29 21:29:57 526

原创 算法效率与复杂度

1,what is 算法算法的五大特性输入: 算法具有0个或多个输入输出: 算法至少有1个或多个输出有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成确定性:算法中的每一步都有确定的含义,不会出现二义性可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成我举个栗子:如果 a+b+c=100,且 a^2+b^2=c...

2018-05-29 20:57:13 2943

原创 Python核心编程之Re正则表达式

正则表达式不只有在Python里面有,基本上所有的语言都会用到。 Re(Regular Expression)用来匹配字符串文本,个人觉得非常好用。 只要记住一些常用的表达式,其他的不懂是时候可以进行查找,毕竟只re只是个工具啦。1,Python操作示例在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re #coding=utf-8 ...

2018-05-24 21:29:23 4177

原创 网络编程-TCP通信

UDP通信就是那种,不管你要不要,我就是要发。发出去了算我赢,管你收不收的到的那种。 而TCP就不是了,他比较负责一点。一定要你确实需要,而且保证自己能够完整发给你的那种。 当然,最著名的说法不就是TCP的三次握手四次挥手了。1,tcp服务器一个简单的TCP服务器需要下面流程:socket创建一个套接字bind绑定ip和portlisten使套接字变为可以被动链接acc...

2018-05-20 15:40:27 250

原创 网络编程 - UDP通信

1,UDP自我科普UDP — 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可...

2018-05-20 15:12:05 236

原创 网络编程 - socket简介

1,网络进程通信方式前面我提到的Python系统编程之进程中讲到过,在本地进程之间通信用到的是队列,而且是一台机器不同进程之间的通信,那么问题来了,网络进程中如何通信呢?2,网络中进程之间如何通信首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“...

2018-05-20 13:56:52 151

原创 Previous of 网络编程

1,网络通信概述使用网络能够把多方链接在一起,然后可以进行数据传递所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信,2,tcp/ip简介2.1 什么是协议 有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了 为了解决不同种族人之间的语言沟通障碍,现规定国际通用语言是英语,这就是一个规定,这就是协议。那么在计算机之...

2018-05-20 13:40:44 294

原创 Python系统编程之线程

前面讲过,如果我们电脑是单核的CPU,怎么才能有同时运行多个任务的感觉。那就是不停的切换各个任务去执行。那么我们怎么使用Python代码去实现呢?1,多线程-threadingpython的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用.1.1 使用threading模块单线程执行#coding=u...

2018-05-19 19:34:39 182

原创 Python系统编程之进程

1,何为进程?我们可以理解为:每一个任务都是一个进程。 打个比方,一在个视频,唱歌和跳舞这2件事情分别就是两个任务,如果是单个进程单个线程的话,理论上也就是在唱歌的时候不能跳舞,跳舞的时候不能唱歌,这是不是很尴尬。所以,我们一般来说,都希望能同时运行多个进程多个线程。线程我们暂且不讲,接下来讲下进程。2,进程跟CPU的关系一般来说,单核的CPU只有一个进程。但为什么我们也能看到单...

2018-05-19 16:34:43 213

原创 Python编码风格

练好的代码编写风格:促进团队合作减少bug处理提高可读性,降低维护成本有助于代码审查养成习惯,有助于程序员自身的成长pep8 编码规范pep8 官网规范地址:https://www.python.org/dev/peps/pep-0008/每级缩进用4个空格。# 对准左括号foo = long_function_name(var_one, var_two...

2018-05-19 14:08:04 382

原创 垃圾回收(三)-浅谈gc模块

Pdbpdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++)。 命令 简写命令 作用 break b 设置断点 continue c 继续执行程序 list l 查看当前行的代码段 step s 进入函数 return r 执行代码直到从当前函数返回 quit q...

2018-05-19 14:07:35 361

原创 垃圾回收(二)

1. Garbage collection(GC垃圾回收)即内存分配方面个人不中意C,什么都要实现弄好,自己某一个东西没考虑到就会出稀奇古怪的答案。不过一般现在的高级语言都是有自己的垃圾回收机制的。如JAVA,C#都有。 python里也同java一样采用了垃圾收集机制,不过不一样的是: python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略引用计数机制: pyt...

2018-05-19 14:07:16 152

原创 垃圾回收(一)

前面我们讲了,Python一切皆对象,一切皆引用,变量的引用等,我们都知道,Python内部有一个自动的垃圾回收机制,引用计数机制。那么它到底实现呢?1. 小整数对象池整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收。在一个 P...

2018-05-18 17:31:36 118

原创 函数的属性私有

在编写类中经常遇到那种写一个函数,然后返回一个值的情况,然而我们需要得到那个值需要通过类对象调用该方法来实现。如:class Money(object): def __init__(self): self.__money = 100 def money(self): return self.__money def set_mone...

2018-05-18 17:08:28 299

原创 私有化

没怎么学过Java,不过在Java中很容易就能看到各种私有变量。Python中有吗? 有的呢,下面就是变量是否为私有的区别:xx: 公有变量_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)xx:双前后下划线,用户名字空间的...

2018-05-18 16:48:02 197

原创 LEGB 规则

变量,作用域,命名空间 .etc 在其他语言中,like C/C++ ,有全局变量,局部变量,以及各变量的作用范围,都有特定的规范。 在Python中也一样,即LEGB。Python 使用 LEGB 的顺序来查找一个符号对应的对象locals -> enclosing function -> globals -> builtinslocals,当前所在命名空...

2018-05-18 16:21:47 375

原创 装饰器类型

例1:无参数的函数from time import ctime, sleepdef timefun(func): def wrappedfunc(): print("%s called at %s"%(func.__name__, ctime())) func() return wrappedfunc@timefundef foo(...

2018-05-18 16:08:40 216

原创 装饰器原理

装饰器,可以说就是对闭包的一种应用。1,功能需求如果我们需要在执行某一函数之前需要执行另外一个操作,比如验证你是否有权限访问。 首先了解:#### 第一波 ####def foo(): print('foo')foo #表示是函数foo() #表示执行foo函数#### 第二波 ####def foo(): print('foo')f...

2018-05-18 15:42:37 579

原创 闭包

1. 函数引用def test1(): print("--- in test1 func----")#调用函数test1()#引用函数ret = test1print(id(ret))print(id(test1))#通过引用调用函数ret()运行结果:--- in test1 func----140212571149040140212571149...

2018-05-18 15:10:08 113

原创 迭代器

迭代 是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。1. 可迭代对象以直接作用于 for 循环的数据类型有以下几种:一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;一类是 generator ,包括生成器和带 yield 的gene...

2018-05-18 14:43:16 180

原创 生成器

1. 什么是生成器最简单的理解就是,如果我们创建一个列表,它会在内存在创建一块对应大小的空间。当他容量需求很大时,系统可能无法一下子提供如此大的空间,而导致程序崩溃。而生成器就是,无论你需求多大,我在某一个时刻只产生你需要的大小的数据,需要的时候再去取。因此能够恨好的解决内存问题。 在Python中,这种一边循环一边计算的机制,称为生成器:generator。2. 创建生成器方法1要...

2018-05-18 14:37:03 136

原创 对对象动态特性进行限制 "__slots__"

继上一篇讲的Python一切皆对象,并可以对对象进行动态的赋值。有利有弊,那么我们怎么对其进行某些限制呢。__slots__动态语言:可以在运行的过程中,修改代码静态语言:编译时已经确定好代码,运行过程中不能修改如果我们想要限制实例的属性怎么办?比如,只允许对Person实例添加name和age属性。为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的...

2018-05-18 14:21:31 122

原创 python的动态特性

1. 动态语言的定义动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。例如JavaScript便是一个动态语言,除此之外如 PHP 、 Ruby 、 Python 等也都属于动态语言,而 C 、 C++ 等语言则不属于...

2018-05-17 09:11:36 1070

原创 元类

1. 类也是对象在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:>>> class ObjectCreator(object):… pass…>>> my_object = ObjectCreator()>>> print my_ob

2018-05-17 09:02:51 148

原创 vim编辑器常用操作跟指令

vi简介vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式: +...

2018-05-16 21:21:40 300

原创 Linux常用服务器构建-samba

1. 介绍Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,能够完成在windows、mac操作系统下访问linux系统下的共享文件2. 安装使用apt命令安装sambasudo apt-get install samba samba-common3. 配置3.1 创建存放共享文件的路径在home路径下操作:touch share...

2018-05-16 21:09:59 237

原创 Linux常用服务器构建-ssh和scp

1.SSHSSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是 UNIX 系统上的一个程序,...

2018-05-16 20:59:46 246

原创 Linux常用服务器构建-ftp服务器

ftp服务器FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”...

2018-05-16 20:53:18 203

Python数据分析

《Python数据分析》(Python Data Analysis)原书配套代码

2018-05-23

空空如也

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

TA关注的人

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