自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python类装饰器以及描述器作为装饰器

1. 类装饰器常见的装饰器一般以函数(方法)的方式实现,根据装饰器的原理,原函数或方法被装饰后能得到一个新的可调用对象,那么其实类也能实现这个功能,只要这个类(实例)是可调用的,即实现了__call__方法。# democlass Decorator: def __init__(self, func): self._func = func def __cal...

2018-11-19 23:27:59 449

原创 python类属性访问魔法方法

python类属性访问魔法方法本文主要讲述类(python3.6)属性访问的魔法方法: __get__, __getattr__, __getattribute__, ___set__, __setattr__(本文对类属性和实例属性不加严谨的表述)1. __getattr__, __setattr__先定义一个类:class Person(object): name = ''...

2018-11-18 17:14:39 1074

原创 uwsgi配置理解

最近使用uwsgi 部署了flask应用,出现了不少问题,仔细查阅了一下资料以及翻看了官方文档,就对自己了解到的做个总结~~一、http/http-socket/socketuwsgi开头当然少不了通信的接口。有3种方式:socket=127.0.0.1:8888http=0.0.0.0:8888http-socket=127.0.0.1:8888 三个方式看起来十分...

2018-08-18 15:49:01 22515 4

原创 python 强大的内置函数

python是一门十分简洁的语言,它是一门面向对象的语言,但不仅包括了方法,而且还内置一些十分高效而且灵活的函数。函数式编程只关心输入,然后返回输出,不会对一些产生一些中间状态产生。下面是一些十分有用的内置函数lambda:匿名函数,当需要实现一个简单的逻辑,lambda匿名函数可以让代码不需要跳转到其他位置的函数中去执行,减少了函数定义的一些代码,使代码更加简洁可读,而且避免了函数名的冲突。这个函

2018-02-05 20:25:34 452

原创 django 限制匿名用户访问以及重定向

在某些页面中,我们不希望匿名用户能够访问,例如个人页面等,这种页面只允许已经登录的用户去访问,在django中,我们也有比较多的方式去实现。最简单的,我们在viewz中去判断用户is_authenticated,但这种方法也相对比较笨拙,最理想的的我们当然不希望这个请求能够进入到我们view,在这之前就能够返回一个相关的response,而django其实已经给我们封装好了相关的函数与类。基于fbv

2018-02-05 17:13:37 2097

原创 django send mail邮件发送功能

我们知道python中smtplib模块用于邮件的功能,而django对这个这模块进行封装,使得它使用起来十分简单。 django.core.mail就是django邮件的核心模块。两个常用函数它提供了两个函数,使用起来十分的简单:def send_mail(subject, message, from_email, recipient_list, fail_silen

2018-02-02 00:41:46 1897

原创 django url配置篇

本文的view基于cbv模式,django为1.11,1.8到1.11下面的大部分内容使用。django解析url过程。一般情况下,django从setting中找到ROOT_URLCONF ,使用这个URLconf的作为根模块。加载这个模块,找到urlpatterns变量,这个变量必须是django.conf.urls.url对象的一个列表。遍历整个列表,通过正则表达式匹配到第一个view函

2018-01-31 01:33:46 2132

原创 django 自定义登录验证逻辑

本文的django view采用的是基于cbv的模式django中的登录功能主要涉及到django.contrib.auth这个包,它提供了2个重要的函数:authenticate和login。django.contrib.auth.authenticate这个函数接受的一个收集参数,但至少需要接受username和password这两个关键参数,它完成以下的事情: 从se

2018-01-30 22:15:57 3808

原创 python 各类排序方法

# _*_ encoding:utf-8 *_*class Solution: def insertsort(self, num_list): """ 插入排序 """ length = len(num_list) for i in range(1, length): tmp = num_li

2018-01-30 14:13:22 285

原创 python 连续子数组的最大和

剑指offer第42题:连续子数组的最大和题目:输入一个整形数组,数组里有正数也有负数,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。# _*_ encoding:utf-8 _*_class Solution: def find_greatest_sub_array(self, array): """ sum_

2018-01-29 23:08:13 2703

原创 django从请求到响应

django从请求到响应的过程1月30号进行修改,本文原本写着转载,到后来发现本文存在一些逻辑错误,又再参考了另外几篇文章,重新更新了一下文章,文末会附几篇参考文章的地址,有兴趣的读者可以点进去看。django启动我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行’runserver’的操作,而ruserver是使用django自带

2018-01-27 17:54:57 3493

原创 python 栈的压入、弹出序列

剑指offer第31题:栈的压入、弹出序列题目:输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否为栈的弹出序列。# _*_encoding:utf-8 _*_class Solution: def is_stack_push_list(self, list1, list2): length1 = len(list1) length2 = len

2018-01-25 13:00:29 1748

原创 django rest framework serializers小结

引言   serializers是什么?官网是这样的”Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other

2018-01-24 21:55:13 34713 11

原创 python 包含min函数的栈

剑指offer第30题:包含min函数的栈题目:定义栈的数据结构,实现一个能够获得最小值的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 这题如果用python的min函数,解决十分轻松,但可能不符合它的时间复杂度,我们自己实现栈,并完成min函数。# _*_encoding:utf-8 _*_class Stack: """ 用列表表示栈,符合先进

2018-01-24 11:59:00 834

原创 python 字符串的排列

剑指offer第38题:字符串的排列题目:输入一个字符串,打印出字符串的所有排列 基本思路:这个问题就是一个排列组合问题,使用python生成器可以很好的解决这个问题,将字符串进行迭代,每次迭代将一个字符加入到新的字符串当中,并且将这个字符的序列记录到元组state中,这个元组可以用来判断之前是否添加过某个字符! 拓展:八皇后问题也是这样的原理!# 献上代码# _*_ encoding:utf

2018-01-24 01:12:48 609

原创 django rest framework mixins小结

引言  本篇对drf中的mixins进行简要的分析总结。   mixins在drf中主要配合viewset共同使用,实现http方法与mixins的相关类与方法进行关联。关于viewset可以看我另外一篇博客,这里不过多介绍。from rest_framework import viewsets  在这个viewset中,只要有5类Minxin,他们与http方法对应如下:

2018-01-23 17:10:33 3862 1

原创 django rest framework通用view

引言  官方文档:http://www.django-rest-framework.org/  drf为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析。  首先,我们看一下主要的几种view以及他们之间的关系。    这其中,还涉及了mixins,主要也分为5类: 下面我们以课程(course)作为一个例子,对view进行一个总结。

2018-01-22 17:14:00 6833 4

原创 python 爬虫入门学习小结

爬虫的基本结构    一个简单的爬虫结构应该包括5要素:调度器,URL管理器,网页下载器,网页解析器以及输出应用,各个结构的交互过程如下图。 1,URL管理器:作用:管理待抓取的URL和已抓取的URL**集合**,防止重复抓取以及循环抓取。 实现方式: - 存放在内存:使用set( )的数据结构 - 存在在数据库当中 - 存放在缓存中:如redis,支持set( )的这种数据结构

2018-01-15 00:09:02 275

原创 python 合并两个排序的链表

剑指offer第25题:输入两个递增的链表,合并他们,并且输出的链表也是递增的# _*_ encoding:utf-8 _*_class ListNode: def __init__(self): self.value = None self.next_node = Noneclass Solution: def list_generate(self

2018-01-11 15:19:05 650

原创 python 链表中倒数第n个节点 & 翻转链表

剑指offer第22题:输入一个链表,输出链表中倒数第k个节点剑指offer第24题:输入一个链表,翻转它# _*_ encoding:utf-8 _*_class ListNode: def __init__(self): self.value = None self.next_node = Noneclass Solutio

2018-01-11 12:07:09 394

原创 python 奇数位于偶数前面

剑指offer第21题:将奇数位于偶数前面输入一个列表,调整顺序为所有奇数位于偶数前面# _*_encoding:utf-8 _*_class Solution: def reorder(self, lst): """ 把奇数放在偶数前面 """ length = len(lst) if not length:

2018-01-08 13:05:14 1831

原创 python 表示数值的字符串

剑指offer第20题:表示数值的字符串实现一个函数用来判断字符串是否表示数值,如:’+100’、’5e2’表示数值,而’12e’、’1.2.3’不是# _*_ encoding:utf-8 _*_import reclass Solution: def is_num(self, string): """ 判断string是否数字的字符串 ""

2018-01-08 12:50:53 806 2

原创 python 删除链表的节点

剑指offer第18题:题目一:在O(1)时间内删除链表节点(给点头节点与删除节点)题目二:删除连续重复节点# _*_coding:utf-8 _*_class ListNode: def __init__(self): self.value = None self.next_node = Noneclass Solution

2018-01-05 00:35:47 3826

原创 python 重建二叉树与二叉树下一个节点

本程序包括2个部分:1,剑指offer第7题:重建二叉树给定一个前序与中序遍历序列,重新构建二叉树,并且输出它根节点2,剑指offer第8题:二叉树的下一个节点给定一个树所有节点的父节点,左右节点,找出指定节点的在中序遍历序列中的下一个节点# _*_encoding:utf-8 _*_class TreeNode:"""建立二叉树节点的属性""" def __init__(self,

2017-12-06 21:41:10 416

原创 django 分页功能

django分页功能: django自带了paginator,功能有一定局限,使用django-pure-pagination功能更为强大 github传送门:https://github.com/jamespacileo/django-pure-pagination1)使用pip源安装:pip install django-pure-pagination2)在 INSTALLED_APPS设置

2017-11-26 23:27:12 457

原创 django 错误集合

本篇收集学习过程中出现一些错误的解决方法外键检查报错:1452, 'Cannot add or update a child row: a foreign key constraint fails解决方法: 在setting文件的databases中添加以下代码取消外键检查DATABASES = {'default': { 'ENGINE': 'django.db.backe

2017-11-26 22:14:45 315

原创 django 验证码(django-simple-captcha)

django-simple-captcha    django验证码可以使用django-simple-captcha第三方插件,这个插件使用起来十分简单。 github传送门: http://django-simple-captcha.readthedocs.io/en/latest/usage.html1,安装     先安装:用pip源安装 pip install django-simp

2017-11-20 00:39:27 2353

转载 CSRF攻击与防御

转载地址:http://www.phpddt.com/reprint/csrf.html 转载地址:http://www.cnblogs.com/phpstudy2015-6/p/6771239.html CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性。 攻击原理: 1. 用户C打开浏览器,访问受信任网站A,

2017-11-15 14:56:33 233

原创 linux日志服务(4): 日志轮替

日志轮替logrotate简介       logrotate是一个日志管理程序,用来把旧的日志文件删除(或者备份),并创建新的日志文件。有两种依据来进行日志的轮替:根据日志的大小,当文件大小达到某个阈值(设定),就进行轮替。根据其规定的天数来转储。在规定时间到了之后就进行日志文件的轮替。        logrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有

2017-11-15 14:14:02 1025 1

原创 linux日志服务(3): syslog配置文件

syslog配置文件基本语法:Rsyslog针对各种服务与信息记录在某些文件的配置文件就是/etc/rsyslog.conf,这个文件规定了什么服务的什么等级信息以及需要被记录在哪里(设备或文件)。基本语法:服务名称syslogd本身有设置一些服务,主要有下面这些。 服务类型 说明 auth(authpriv) 主要与认证有关的机制,例如:login,ssh,su等需要帐号/密码

2017-11-15 12:50:52 3881

原创 linux日志服务(2): syslog日志整体框架原理

在上篇中说到,Unix/Linux系统产生日志文件的方式有两种,除了少部分软件开发商自定义写入的之外, 大部分日志还是通过linux统一管理日志syslog服务写入的。syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理。在Linux中,常见的syslog服务器端程序是rsyslog

2017-11-15 10:04:05 5620

原创 linux日志服务(1):简介

日志简介日志文件是记录系统获得信息的几个文件,例如何时、何地、何人做了什么操作。 换句话说:记录系统在什么时候由哪个进程做了什么样的行为,发生了何种事件等。日志文件在许多方面发挥着重要的作用,如解决系统方面的错误,解决网络服务的问题,过往事件记录等等。Linux中的日志产生方式主要分为两种:由软件开发商自行定义写入的日志文件与相关格式,例如WWW软件apache;由linux本身的日志文件管理

2017-11-15 09:38:15 561

原创 python 求两个数列的交集、并集与差集

求两个数列的交集、并集与差集def set_handlers(list1, list2): res1 = [] # 交集 res2 = list(set(list1+list2)) #并集 res3 = [] # 差集 for i in list2: if i in list1: res1.append(i) #list1、2

2017-11-15 09:07:40 2688

原创 python 判断闰年

python 判断闰年先看看原理:def isLeapYear(year): if not year%4 and year%100 or not year%400: return True return False

2017-11-08 09:42:06 3915

原创 python 单链表逆置

python 单链表逆置def reverseNode(node): p = node cur = node.next while cur: tmp = cur.next cur.next = p p = cur cur = tmp空间复杂度O(1),时间复杂度O(n)

2017-11-08 08:57:34 1635

原创 python 两个数列和的最小差值

两个数列和的最小差值题目: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使a的和与b的和之间的差最小。def get_MinDvalue(a,b): # combinations是一个生成器(迭代器),每次从a+b中取出n个数返回一个列表,并且会列举出所有种情况 # 这个列表的和与sum(a+b)/2差值的绝对值的最小...

2017-11-07 12:33:34 4200 1

原创 python 获取字符串中出现次数最多的字母

获取字符串中出现次数最多的字母给定一个包含不同的英文字母和标点符号的文本,找出其中出现最多的字母,不区分大小写,并返回一个小写字母,若存在相同次数的字母,则返回字母表中最先出现的那个。采用内置函数maximport stringclass Solution: def getMostWord(self,wordstr): #将字符串小写化 wordstr =

2017-11-06 14:20:08 16410

原创 python 列表的中位数

找出列表的中位数class Solution: def medianFind(self,lst): #先将列表进行排序 lst.sort() half = len(lst)//2 #得到中间序列,~half为负索引,列表元素可能为偶数,需要获取中间两个数 #转化成float,中位数可能为浮点数类型,如测试用例

2017-11-06 14:05:35 8164

原创 python 最大公约数与最小公倍数

1.最大公约数:#使用辗转相除法求最大公约数def gcd(a,b): # a作为除数 必须大于b a, b = (a, b) if a >=b else (b, a) while b: a,b = b,a%b return a#等价于:def gcd(a,b): a, b = (a, b) if a >=b e...

2017-11-03 15:45:51 10922 6

原创 python 反向输出字符串

python 反向输出字符串方法一:采用列表reversed函数class Solution(object): def reverse_string(self, s): if len(s) > 1: reversed_s = ''.join(reversed(s)) return reversed_s ...

2017-11-03 14:57:07 9297

空空如也

空空如也

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

TA关注的人

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