装饰器本质上是一个Python
函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
阳明的博客
大家好,我叫阳明,前小米高级开发工程师,现在回到家乡成都,独立开发者一枚,一个有着产品思维的工程师,现在也在努力将自己的产品思维体系化,全栈工程师,现阶段专注 Kubernetes 和 AIGC,创建了「k8s技术圈」社区、「优点知识」知识付费网站以及「快课星球」AI全栈开发学习网站。我可以提供企业容器化方面的知识培训和咨询工作,感兴趣的可以通过微信 gitops 和我联系。
用awk做基本运算
awk
是非常强大的文本处理工具,之前经常见到脚本里面有使用,但是没有自己完完整整来写过awk命令。正好今天公司里有一个非常的大的日志文件需要分析。需求是将日志文件中记录的耗时时间评价值、最大值、最小值计算出来。日志的格式如下:
[2016-03-30 00:02:02,475] [17243] [140344433927936] [MainThread] [tasks.py:733] DEBUG [upload to oss] upload file /data/image5/user_upload_image/20160330/00/1458483897397580_101183475_1459267295740.jpg to oss cost time 28 ms
Nginx中如何设置301跳转
网站中带www
和不带都可以访问,但是这样却会不利于网站SEO
的,会分权,所以需要将二者的访问合并到一起,这特别在网站架设之初就应该好好规划。
有很多的第三方DNS解析服务,提供了直接的显示跳转的服务,比如dnspod
,但是最近我在使用的过程中发现该服务非常的不稳定,导致网站经常性的访问不了。所以就打算自己来做,方法很简单,就是301跳转
,301是永久跳转,302是临时性跳转。
用python处理csv文件
CSV
通常是纯文本文件。可以用Sublime Text
或者EXCEL
打开,python
提供了一个非常强大的处理csv文件的库csv。
一般情况,如果csv文件不是很复杂则可以直接输出文件中每行的数据,代码如下:
import csv
def read_csv_file(path):
with open(path, 'rb') as f: # r表示读取,b表示读取的文件
reader = csv.reader(f)
for row in reader:
print row
f.close()
自定义django admin后台的action
提到强大的django
,最能引起大家共鸣的可能是其自带的admin
了,提供了默认的强大的功能,而且我们还能根据自己的需求进行定制。django admin
的列表页自带了一个批量删除所选对象的action,我们还可以添加自定义的功能action来实现其他功能,比如批量标记将文章标记为已发布。如下代码:
django下url函数的用法
Django下有一个比较隐含的函数url,在django/conf/urls/defaults
模块中,虽然只有短短的10行代码,但功能却很了得。起初初学Django
,并没有发现它,Templates的链接地址都是根据urlpatterns
定义的地址,拼凑成地址字符串,很难看,而且Templates里拼凑成的地址,随着页面的增加而不断增加,一旦在urlpatterns
里的某个地址改变了名称,那眼泪可是哗哗的,有多少的拼凑的地址就得改动多少处!这时发现了url函数,这下可都好了,不管urlpatterns
里的某个地址叫法怎么改变,Templates
里的地址都不用修改了。
比如没有采用url函数的时候:urlpatterns
里定义了资讯的首页地址,
urlpatterns = patterns('',
(r'^article$','news_index' ),
)
django国际化问题
最近准备用用django的国际化功能,用的django1.6.5版本,按照网上说的教程始终不生效,最终只能去看官方文档,不得不说还是官方文档靠谱啊,下面记录了下django1.6+启用国际化的相关步骤。
django自定义标签之inclusion_tag的用法
django
提供了强大的自定义标签、自定义过滤器等强大功能,今天首先介绍一下自定义标签的inclusion_tags
的用法。
Memcached的一些坑!!!
我们的网站用django
跑了很久了,一直没出现什么大的问题,突然一天晚上网站访问超级慢,出现大量的502
错误码,难不成用户量猛增么,要是这样就好了。请教了很多运维高手帮忙排查问题、代码也回滚到上一个正常运行的版本了,但依然负载一会高一会低。
捣腾了一天,最后定位到我们的代码有问题,有几个经常访问的API缓存了15分钟,经过分析发现其中一个API始终缓存不上,但在本地和测试环境都是没有问题的,这真是搞死人啊。后面发现这个API的请求的数据非常之大,接近2M了。而Memcache有很多限制,其中就有value值大小的限制,终于找到问题了,泪牛满面啊……