记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}" {%if group.id==gr.id %}selected='selected'{% endif %}>{{group.name}}</option> 正确的做法 <option value="{{group.id}}" {%ifequal group…
在软件开发领域中,人们经常会用到这一个概念——“设计模式”(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础>(1991年,Design Patterns - Elements of Reusable Object-Oriented Software)中,它提出了23种设计模式.迭代器模式就是其中的一种,在各种编程语言中都得到了广泛的应用. 本文将谈谈 Python 中的迭代器模式,主要内容:什么是迭代器模式…
python celery多worker.多队列.定时任务  …
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以读取 r+叫做读写模式,可读可写,默认读光标从0也就是开头开始读取,但是写内容是从末尾开始写的 w+叫做写读模式,先清空之前内容,在从开头写入内容,默认光标在写入内容的结尾 a+叫做追加写读模式,可读可写,在末尾追加内容,,默认光标位置从原先内容末尾开始 二.对文件某一行进行修改的操作 1.创建一个…
一.python打开文件可以有多种模式,读模式.写模式.追加模式,同时读写的模式等等,这里主要介绍同时进行读写的模式r+ python通过open方法打开文件 file_handler = open(filename,mode) mode的模式有以下几种 r 以读方式打开文件,可读取文件信息. w 以写方式打开文件,可向文件写入信息.如文件存在,则清空该文件,再写入新内容 a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建 r+ 以读写方式打开文件,可对文件进…
写在前面 select/poll与epoll select/poll模型工作机理 select/poll模型的局限 epoll模型工作机理 epoll的局限 golang中的epoll golang源码中的sysmon函数 小结 参考 写在前面 上一篇文章并发模型:Actors与CSP简单介绍了Actors和CSP两种并发模型.如果认真推敲会发现,无论是Actors还是CSP,直观上来说其实都是内存模型,那么高并发的CPU模型是怎么样的呢? 或者说:只有8颗CPU核的一台主机,同一时间至多运行8…
python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注点.分层设计中的层次(数据访问层.业务逻辑层和表示层等)即是关注点的例子.使用SoC原则能简化软件应用的开发和维护. 模型-视图-控制器( Model-View-Controller, MVC)模式是应用到面向对象编程的Soc原则.模式的名称来自用来切分软件应用的三个主要…
开发者可以通过三种方式配置日志记录: 调用配置方法的Python代码显式创建记录器.处理程序和格式化程序. 创建日志配置文件并使用fileConfig() 函数读取. 创建配置信息字典并将其传递给dictConfig()函数. 相对第一种,第二种使用配置文件方式更有优势,主要是配置和代码的分离,结构上更清晰,以及非开发者轻松修改日志记录属性的能力. 本文将介绍第二种使用配置文件方式记录Python程序日志,将Python程序日志分别打印到控制台和日志文件,日志文件按时间戳滚动迭代,且可以自动删除…
文章转载自:https://elasticstack.blog.csdn.net/article/details/112259500 日志记录实际上是每个应用程序都必须具备的功能.无论你选择基于哪种技术,都需要监视应用程序的运行状况和操作.随着应用程序扩展,这变得越来越困难,你需要查看不同的文件,文件夹甚至服务器来查找所需的信息.虽然你可以使用内置功能从应用程序本身编写 Python 日志,但应将这些日志集中在 Elastic Stack 之类的工具中. 借助 Elasticsearch 筛选大…
#master-worker模型: #coding:utf-8 import os import sys import socket import time import traceback import errno import signal class Worker(object): def __init__(self, sock): self.sock = sock def accept(self): client, addr = self.sock.accept() client.set…
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 可以看我的上篇文章 <python 简单搭建阻塞式单进程,多进程,多线程服务> 1 单进程服务器 - 非堵塞模式 服务端 : #coding=utf- from socket import * import time #用来存储所有的新连接的socket,这个是重点 g_socketList = [] def main(): serSocket = socket(AF…
###tornado+websocket+多进程实现: 1.index.html <!DOCTYPE HTML> <html> <head> <style> body { margin: 0px; padding: 20px; } #received { width: 500px; height: 400px; border: 1px solid #dedede; overflow-y:scroll;} #sent { width: 500px; } <…
首先先提一下上一篇<如何猜出Y combinator>中用的方法太复杂了.其实在Lambda演算中实现递归的思想很简单,就是函数把自己作为第一个参数传入函数,然后后面就是简单的Lambda变换提取出Y combinator了.好,接下来是本篇的正文: ------------------------------------------------------------------------------------ 昨天fengidri给我演示了yield的用法,让我大受启发——可以用yie…
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制能干些什么? (1)读写分离 (2)容灾恢复 Redis配置主从复制(1主2从) 知识注意: (1)配从(库)不配主(库) (2)从库配置:slaveof 主库IP 主库端口 (3)info replication查看当前redis节点信息(是主还是从等等) redis配置1主2从 开始配置: 这里…
========== ==多进程== ========== 要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识. Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊.普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回. 子进程永远返回0,而父进程返回子进程的ID.这样做的理由是,一个父进程可以fork出很多子进程,…
一. 单例模式(Singleton) 所谓单例模式,也就是说不管什么时候都要确保只有一个对象实例存在.很多情况下,整个系统中只需要存在一个对象,所有的信息都从这个对象获取,比如系统的配置对象,或者是线程池.这些场景下,就非常适合使用单例模式. 总结起来,就是说不管初始化一个对象多少次,真正干活的对象只会生成一次并且在首次生成. 用Python 实现单例模式的方法有很多,先来看第一种方式. # !/usr/bin/python3 # -*- coding:utf-8 -*- class singl…
随笔仅用于学习交流,转载时请注明出处,http://www.cnblogs.com/CaDevil/p/5958770.html 该随笔是记录我的第一个python程序,一个爬去指定图片站点的所有图集,现在还是一个非常简陋的单线程程序.下一步是改写成多线程,虽然python多线程被诋毁得一塌糊涂.同时加上异常处理. 近来练习python程序,仿照别人的爬虫写一个自己的爬虫来练练手.在编写的过程中遇到各种问题,中文编码.请求不到html等问题.撰写该随笔的目的是将所遇到的问题记录下来,并提供相应的…
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open for extension ,but close for modification. 所谓开放封闭原则就是软件实体应该对扩展开放,而对修改封闭.开放封闭原则是所有面向对象原则的核心. 软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现. 对扩展开放,意味着有新…
执行模式 执行模式可以让你在多个主机上执行多个任务. 执行策略: 默认fabric是单个有序地执行方法,其行为如下: 1. 创建一系列任务,通过fab任务执行要执行的任务: 2. 根据主机列表定义,去执行每一个任务: 3. 没有主机定义的任务,将在本地执行一次. 如: from fabric.api import run, env env.hosts = ['host1', 'host2'] def taskA(): run('ls') def taskB(): run('whoami') #…
文件操作之前需要文件保证文件存在,并且将文件open os.mknod("test.txt")        创建空文件 fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件 open(name[, mode[, buffering]]) -> file object Open a file using the file() tyoe, returns a file object. This is the pref…
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记录一下: ? >>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代表从1到5,间隔2(不包含5) [1, 3] >>> range(5) #代表从0到5(不包含5) [0, 1, 2,…
完成一项任务往往有多种方式,我们将其称之为策略. 比如,超市做活动,如果你的购物积分满1000,就可以按兑换现金抵用券10元,如果购买同一商品满10件,就可以打9折,如果如果购买的金额超过500,就可以享受满减50元的优惠.这是三个不同的促销策略. 再比如,联系朋友.同学,可以打电话,也可以发短信,可以发微信,也可以发邮件,这是四个不同的联系策略. 再比如,去外出旅游,我们可以选择火车,也可以选择公共汽车,可以选择飞机,也可以选择自驾游.这又是四个不同的出行策略. 以上这些真实场景,都有策略选择…
# coding = utf-8 from abc import ABCMeta, abstractmethod # 简单工厂模式 class Animal(metaclass=ABCMeta): @abstractmethod def do_say(self): pass class Dog(Animal): def do_say(self): print('Bhow Bhow!!!') class Cat(Animal): def do_say(self): print('Meow Meow…
def mone_sorted(itera): new_itera = [] while itera: min_value = min(itera) new_itera.append(min_value) itera.remove(min_value) return new_itera if __name__ == "__main__": lst = [2, 3, 1, 5, 4] print(mone_sorted(lst)) 函数内部使用了选择排序的思想 1 编写函数,模拟内置函数…
1. 定义 对一系列算法进行封装,为所有算法定义一个抽象的算法接口,可以平滑的进行算法切换 2. 策略模式的UML图 3.代码实现 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from abc import ABCMeta, abstractmethod class Context(object): def setStrategy(self, strategy): self.__strategy = strategy def operation(s…
用Python学习一下设计模式,如果很枯燥的话,就强行能使用的就用一下.设计模式参考Python与设计模式-途索 1. 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点. import threading import time class Singleton(object): '''抽象单例''' def __new__(self, *args, **kw): if not hasattr(self,'_instance'): self._instance = super()._…
本文摘自:https://zhuanlan.zhihu.com/p/32043593 本篇将会涉及: logging的各个模块化组件 构建一个组件化的日志器 logging的模块组件化 在上一篇文章中,我们介绍了Python的内置模块logging的使用,通过短短的几行代码我们就实现了一个日志记录器.. import logging logging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%…
本文摘自:https://zhuanlan.zhihu.com/p/31893724 本篇涉及: logging模块的调用: 保存log日志为文件: 调整输入日志等级: 修改日志消息格式: 前言 在使用Python编写程序的过程中,我们经常使用print()函数打印一些信息到控制台,方便的查看结果和一些调试信息,以判断程序的运行是否正常. print()确实是方便和易用,但是也有一些缺点,比如打印出来的信息不能保存,再次运行程序时,之前打印出来的结果就被清空了. 而对于一些后台运行的程序,或者出…
这种模式,就是将一个最终对象分级分层建造出来. 在软件发布过程中,不同的JAVA,PYTHON,NODE.JS,ZIP压缩包, 就可以使用不同的阶段来使用建造者模式的. from enum import Enum import time PizzaProgress = Enum('PizzaProgress', 'queued preparation baking ready') PizzaDough = Enum('PizzaDough', 'thin thick') PizzaSauce =…
闲来无事,记录一下曾经以及深刻的面试题 记录一下我记忆比较深的面试题,以后若用到python相关还能细细把玩 搜狐面试题: 一.写一个缓存优化策略 解答:这个题主要考察对lru_cache的理解,所以只需要用一下functools里面的lru_cache装饰器就可以 二.怎么在15M的内存中打印出来8G的数据 解答:这个主要考察生成器的使用,需要迭代的方式读取数据就可以 代码简单,就不书写了 知乎面试题 在15M的内存中有一个1-1000万的元素的列表,然后这个列表是无序的,在这些1-1000万…