Pingfan's Blog

Pingfan's Blog

The quieter you become, the more you are able to hear.

python日志记录模块
为什么要记录日志 它可以让你更好的理解程序的运行流程,甚至帮你发现你在开发时没有考虑到的细节。 持续监控程序的运行,存储用户名、IP等信息。 如果程序出错,在出错之前所有的信息都会被记录下来,效果堪比调试。 可以通过日志数据分析应用的性能,如瓶颈在哪;也可以利用它做市场优化。 日志模块python在标准库里提供了日志记录功能。大部分python的三方库都使用了这个模块 总共有五个级别,从低到高分别为: DEBUG INFO WARNING ERROR CRITICAL 例如: import logging logging.debug('This is a debu...
理解linux命令 - nohup
在Linux中有许多命令我们会经常用,比如ls、cd……但还有些命令为了处理特殊场景,Nohup就是这样的命令,你不需要每天都频繁使用它。但当你遇到需求的时候,它特别有用。 什么是Nohup? Nohup是No hangups的简称,它加在别的命令的前面,告诉linux系统不要将这个命令停止运行——它就像一个辅助工具。被修饰的命令会一直运行到结束。它的使用语法非常简单,像下面这样: nohup sh your-script.sh & 看到最后面的&了吗?它将这条命令放到后面运行,还给你terminal让你可以继续运行别的命令。 你在命令行中运行的几乎所有命令都可以用no...
理解linux命令 - 2>&1
最新遇到过几次类似2>&1这种命令,例如ls foo > /dev/null 2>&1, 本文解释一下其原理。 I/O重定向(redirection)重定向就是将一条命令的输出重定向到其他位置,例如,我们使用cat来查看一下文件,它的输出被打印到屏幕上: $ cat foo.txt foo bar baz 我们可以将这个输出重定向到其他地方,例如output.txt: $ cat foo.txt > output.txt $ cat output.txt foo bar baz 第一条cat命令执行完后,我们没有在屏幕上看到输出,因为我们将标准输...
python的@functools.wraps
前言如果你经常与python的装饰器打交道,会发现有的代码里经常会有这样一行@wraps(xxx) from functools import wraps def logged(func): @wraps(func) def with_logging(*args, **kwargs): print func.__name__ + " was called" return func(*args, **kwargs) return with_logging @logged def f(x): "&q...
python的装饰器
翻译自:https://www.programiz.com/python-programming/decorator 装饰器接收一个函数,为其加入一些功能并返回它。它又叫作元类编程,因为一部分程序在运行时尝试修改另外一部分程序。 简单说来,装饰器像一个包裹,不用更改这个函数自身,改变原函数代码的功能(增强了它原来的功能)。就像一包月饼卖10块钱,我们给它套上精致华丽骚气而浮夸的包装盒,瞬间能卖上千了有木有,但月饼还是原来的月饼,并没有任何改变。 前置知识我们必须习惯,在python中,任何东西都是对象。名字只是指向这些对象的一个标识。函数也不例外,它们也是带有属性的对象,不同的...
python中的@property
@property是python中的getter和setter,它使python的面向对象编程更加简单。 本文译自:https://www.programiz.com/python-programming/property 一个例子创建一个摄氏度的类,这个类中可以存储temperature,也可以将其转换成华氏温度: class Celsius: def __init__(self, temperature = 0): self.temperature = temperature def to_fahrenheit(self): ...
python的PIL
英文原文:https://realpython.com/python-gil/ Python全局解释器锁(Python Global Interpreter Lock or GIL),是为了在任何时刻只能让一个线程拿到python解释器的执行,即只有一个线程可以运行。这对于运行单线程程序的机器没什么影响,但对于多线程程序简直就是灾难。你电脑是多核的?对不起,不可以运行多线程。所以GIL是Python一个臭名昭著的特性。 GIL为python解决了哪些问题python的内存管理使用计数引用,python中的每个对象都会有一个计数器,来表示有几个引用指向该对象。当这个计数器为0时,对象占...
某次腾讯校招笔试解析
1 小Q怼序列题目描述小Q有一个长度为n并包含1~n的整数序列。 在最开始,序列是升序排列,即1在序列首部,n在序列尾部。 小Q将会对序列进行m次操作,第i次操作,小Q会把xi从序列中取出来并放到序列首部。 小Q想知道m次操作后,序列变成什么样。 输入描述 输入包括m+1行 第一行包括两个整数n,m(1 <= n, m <= 100000) 接下来m行,每行一个正整数xi,表示小Q每次操作的数。 输出描述输出一行,即m次操作之后的序列,以空格分割,行末无空格。 示例1输入 5 44314 输出 4 1 3 2 5 分析: 问题可转化为:有一个数组arr[1, 2,...
数据库的锁
什么是数据库的锁,举例说明一下数据库的锁用来锁住数据库中的某些数据,使得当前只能有一个用户/会话可以更新数据。所以,数据库的锁用来防止同时有一个或多个用户更新同一块数据。当数据被锁起来,这意味着另一个数据库会话在锁释放之前不能更新这块被锁起来的数据。 画重点: 锁住数据库中的某些数据,使得当前只能有一个用户/会话可以更新数据 用来防止同时有一个或多个用户更新同一块数据 另一个数据库会话在锁释放之前不能更新这块被锁起来的数据 当另一个会话尝试更新某块被锁起来的数据,会怎样处理假如会话A尝试访问被会话B锁起来的数据,会话A会发生什么?会话A会被置于lock wait 状态,并且会话A接...
理解MySQL的索引
在Web应用中,如果出现性能问题,原因极有可能是数据库索引没有设置或者没有设置好。这篇文章希望能帮助大家更好的理解数据库索引。 什么是索引每当你运行一句where查询,数据库都会遍历一遍该表,找到符合条件的行。例如查询班里名叫张三的性别: select sex from class where name="张三" 数据库会把该班级表中所有学生都遍历一遍。当表的规模扩大后,每一次查询都要遍历更多的数据。 索引就是为了解决这个问题,它把某列的数据取出来,按顺序(如字母顺序)存储到别的位置。如果该列数据是浮点数,就会按值的大小存储,如果是日期类型,那就按日期大小存储。 建立...
avatar
平凡
Nothing is true, everything is permitted.
FRIENDS
friendA friendB