Python日志原理及实践
原理
一次简单的日志记录
1 | import logging |
output
1 | warning division by zero |
logging.getLogger获取一个记录器, 一般以模块名称命名- 调用日志记录器的相应方法记录日志
1 | import logging |
output
1 | warning division by zero |
logging.getLogger 获取一个记录器, 一般以模块名称命名SQLAlchemy core 是SQLAlchemy的核心部件,主要负责生成sql查询和具体的数据库操作,SQLAlchemy orm 就是构建在core之上的。
在不需要对象映射的时候,使用core而不是orm,可以降低数据库操作成本,提高性能。
1 | from sqlalchemy import create_engine |
1 | from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, Index |
ORM是指对象关系映射(英语:Object Relational Mapping),是一种程序设计技术,是数据库记录和程序对象之间的映射关系。
使用ORM可以简化数据库的操作,使数据操作更加面向对象,并且程序逻辑和具体数据库解耦。缺点是会有一定的性能损耗。
Python中的ORM主要有Django ORM,SQLAlchemy, peewee; 其中Django ORM只能和Django框架一起使用,SQLAlchemy功能比较全,peewee较为轻量。
SQLAlchemy还可以不使用其ORM,只使用SQLAlchemy core作为一个通用数据库连接器。
本文为整理以前的读书笔记
作者: 丹尼尔·夏克特 / Daniel L. Schacter
顾名思义,这是一本关于记忆的书,讲述了人脑记忆的机制。我们是如何储存,并提前记忆的。
阅读这本书,对理解记忆,寻找改善记忆的方式有很大帮助。
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP协议工作于客户端-服务端架构为上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

本文为整理以前的读书笔记
《在细雨中呼喊》是一本关于记忆的书,是余华发表于1991年的第一部长篇小说。
作者以第一人称讲述了一个家庭的欢乐和苦痛,孙光林、孙光明、孙光平兄弟三人的际遇,及他们所处的家庭和社会,常常让读者有种无力感,又带有些微的庆幸。
还是最深的体会就是,为人父母者永远不要将自己的懦弱施加到孩子身上。世间苦难重重,孩子本无意来此世上,还遭受无谓之伤害,实在无辜。
这事给我哥哥留下了深刻的印象,有一次他神情黯然地说:“当我们想成为城里人时,城里人却在想成为歌唱家。
你拼命去追求的目标,到头来不过是别人一直想舍弃的
孙光明在临死的前一天,还坐在门槛上向孙光平打听村里谁快要结婚了,他发誓这次要吃十颗水果糖。他说这话时鼻涕都流进了嘴巴。
无常啊无常,世间事常是如此,不管是如此简单的快乐,还是鲜花着锦的富贵,都不能长久
首先得说一下UML,统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代和规约语言。
UML涵盖了很多类型的图,主要都是应用于软件开发行业。
在UML系统开发中有三个主要的模型:
功能模型:从用户的角度展示系统的功能,包括用例图。
对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
而PlantUML是一个开源项目,除了支持快速绘制上面这些类型的图表之外,还支持很多图表,具体查看官方网站。
PlantUML通过编写文本的方式来定义UML图表,有点类似markdown,然后生成图表
从大学开始接触Python,到现在也差不多四年了,也算小有所成。期间也有很多人问我如何学习Python,也只是零散地回答,刚好最近要做个Python的分享,就将这一块东西整理一下。
本文作为Python学习的指路文章,是个人在Python学习过程中的经验总结。
阅读的时候不需要太细致,略读即可。
读完后,能够对Python学习的各方面有个大致的概念,在学习过程少踩一些坑,收获就很大了。
Python(音:派森),是一种强类型的动态语言,由吉多·范罗苏姆 创造,第一版发布于 1991 年。
Python的创始人为吉多·范罗苏姆。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团的爱好者。
有时想给windows的资源管理器增加一些自定义的功能,比如创建目录联接到某个目录。
给windows的资源管理器添加一个右键菜单,调用你想要运行的程序或脚本,理论上可以实现任意功能。
那么我们就开始py一个脚本吧, 创建目录联接到指定目录
1 | import os, sys, subprocess |
昨夜刚收到外祖父离世的消息, 顿时心里空落落的, 不知何处安放.
随着年岁渐长, 看着亲人离自己远去, 真是很难接受, 恨自己的无力, 不能为他们做些什么.
或许这就是佛家说的求不得吧, 不喜欢的事物它还是会来, 喜欢的事物也还是会走, 来或是不来都难以求得, 父亲那是也是这样.
死生事大, 无常迅速.
无法, 唯有精进.
Python2 vs Python3
| Name | Python2 | Python3 | Addtion Info |
|---|---|---|---|
| try | try except ValueError, e | try except ValueError as e | |
| exception | ValueError(‘aa’).message | - | python3中可用ValueError(‘aa’).args[0] 替代 |
__import__ |
__import__ |
__import__ |
推荐importlib.import_module替代,可移植性更好 |
| 关键字 | 函数 | ||
| unicode | unicode | str | python2默认的string是bytes, Python3中是unicode |
| bytes | str | bytes | |
| division | 1 / 2 | 1 // 2 | |
| division | 1 / 2.0 | 1 / 2 | |
| 不等于操作符 | <> | != | 这个操作费在Python3中已废弃,使用!=替代 |
| round | round(0.5) == 1.0 | round(0.5) == 0 | Python3内建的 round 是四舍六入五成双的机制 |
| xrange | xrange | range | |
| range | range(1,2) | list(range(1,2)) | |
| reduce | reduce | - | Python使用functools.reduce替代 |
| dict.keys | dict.keys() | list(dict.keys()) | python的dict遍历不保证顺序, 同一个字典py2和py3的遍历顺序可能不一样 |
| dict.iterkeys | dict.iterkeys() | dict.keys() | |
| dict.items | dict.items() | list(dict.items()) | |
| dict.iteritems | dict.iteritems() | dict.items() | |
| 内置库 | commands | - | 用subprocess替代 |
| 内置库 | sys.setdefaultencoding | - | |
| 内置库 | Queue | queue | |
| 内置库 | ConfigParser | configparser |
Python2
str('') 和 unicode(u'')'xxx'形式输入的字符,实际储存的值是xxx经过系统默认字符集encode过的字节串(bytes),如’\xe8\x86\x9c’u'xxx'形式输入的字符,实际储存的值是xxx对应的unicode码, 如u'\u819c'