自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pushiqiang的博客

python技术爱好者,python开发工程师,Patrick

转载 Docker 空间使用分析与清理

用户在使用 Docker 部署业务一段时间后,可能会发现宿主节点的磁盘容量持续增长,甚至将磁盘空间耗尽进而引发宿主机异常,进而对业务造成影响。 本文先对 Docker 的空间分析与清理进行说明,然后对容器的磁盘容量限制与使用建议做简要说明。 典型问题场景 用户发现 Docker 宿主机的磁盘空...

2020-05-08 14:23:59 38 0

原创 API网关介绍及选型(kong)

API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。 API网关方式的核心要点是,所有的客户端和消费端都通过统一的...

2019-07-13 09:47:46 691 0

转载 探讨select in 在postgresql的效率问题

这篇文章主要介绍了探讨select in 在postgresql的效率问题 的相关资料,需要的朋友可以参考下在知乎上看到这样一个问题:MySQL 查询 select * from table where id in (几百或几千个 id) 如何提高效率?修改电商网站,一个商品属性表,几十万条记录,...

2018-04-27 21:14:14 1829 0

原创 Django shell调试models输出的SQL语句

在settings.py里,配置如下logging: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { ...

2018-04-10 22:14:28 1884 0

原创 ubuntu16下快速安装k8s教程与应用示例(django)

安装Kubernetes是公认的对运维和DevOps而言最棘手的问题之一。因为Kubernetes可以在各种平台和操作系统上运行,所以在安装过程中需要考虑很多因素。 在这篇文章中,我将介绍一种新的、用于在裸机、虚拟机、公私有云上安装Kubernetes的轻量级工具——Rancher Kubern...

2018-04-10 20:56:05 1515 0

翻译 Dockerfile教程

ref: https://docs.docker.com/engine/reference/builder/#usage Dockerfile Docker可以通过读取Dockerfile指令自动生成镜像 。Dockerfile文件是一个文本文档,其中包含用户可以在命令行上调用以构建镜像的...

2018-02-27 21:39:39 3085 0

翻译 Centrifugo(实时消息服务器)介绍+demo

Centrifugo是一个。它与语言无关,可以与任何语言编写的应用程序后端(Python,Ruby,Perl,PHP,Javascript,Java,Objective-C等)结合使用。Centrifugo作为单独的服务运行,并保持从应用程序客户端(从Web浏览器或其他环境,如iOS或Androi...

2017-12-09 21:38:58 3743 0

原创 docker-compose教程(安装,使用, 快速入门)

教程基于ubuntu下最新的compose版本3 参考:https://docs.docker.com/compose/overview/ 1.Compose介绍 Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使...

2017-12-03 22:31:45 173019 12

原创 Ansible常用模块介绍

ansible 默认提供了很多模块来供我们使用。在 Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc -s 模块名 又可以查看该模块有哪些参数可以使用。 官网文档:http://docs.ansible...

2017-10-16 14:48:15 21438 7

翻译 非常好的Ansible入门教程(超简单)

Ansible是一个配置管理和配置工具,类似于Chef,Puppet或Salt。这是一款很简单也很容易入门的部署工具,它使用SSH连接到服务器并运行配置的任务,服务器上不用安装任何多余的软件,只需要开启ssh,所有工作都交给client端的ansible负责。 关于Ansible的一个好处是,将...

2017-09-28 17:19:31 60307 8

原创 (python解析js)selenium结合phantomjs抓取js生成的页面

有些网页是在加载时动态创建HTML内容,只要在js代码完全执行完后才会显示最终结果。如果用传统的方法抓取页面,就只能获得js代码执行之前页面上的内容。要解决这个问题有两种方法: 1.直接从js代码中抓取数据(执行js代码,解析js变量)。 2.用第三方库运行js,抓取运行后的最终html页...

2016-05-01 15:06:50 23753 8

原创 (python解析js)scrapy结合ghost抓取js生成的页面,以及js变量的解析

现在页面用ajax的越来越多, 好多代码是通过js执行结果显示在页面的(比如:http://news.sohu.com/scroll/,搜狐滚动新闻的列表是在页面请求时由后台一次性将数据渲染到前台js变量newsJason和arrNews里面的,然后再由js生成div和li,故要想或得结果必须要解...

2016-04-10 16:26:52 7739 1

转载 jinja2模板渲染移除空白(空格、制表符、换行符 等)

ref:https://www.kancloud.cn/manual/jinja2/70455 例如: {% if xxx %} # 空行 1 something... {% endif %} # 空行 2 # 空行 3 {% if xxx %} # 空行...

2020-02-29 21:37:07 369 0

原创 mysql树形结构查询子节点

查询所有子节点 需求: 在树形的节点关系下,比如菜单树或者文件目录树,要想获取某个节点的所有子节点,或者所有父类节点,在知道节点树最大层级的情况下 id, parent_id eg: 已知节点树深度不超过10, 查询所有子节点如下 select org.id as id, co...

2019-11-18 10:25:06 166 0

转载 Django单元测试类和测试数据回滚

Django单元测试每个测试用例中写入数据库的测试数据在用例执行完后都会被撤销,这是通过事务回滚或者manage.py flush实现的。 TestCase与TransactionTestCase都是继承自SimpleTestCase,两者主要的区别在于: TestCase在测试开始时,判断当前...

2019-09-26 16:38:39 150 0

原创 基于kong + oauth2 + acl的用户接入权限管理

需求说明 对admin进行分组管理,不同的用户有访问不同api(服务)的权限,类似django admin的用户组功能 由于认证系统是完全可信的内部系统,简单起见使用密码授权方式 在网关层做接入权限管控,而非后端应用的业务权限 启动kong # 启动kong使用的数据库postgres/...

2019-07-13 09:53:23 3001 3

原创 git cherry-pick & revert

git cherry-pick git cherry-pick : 将某个分支的某个或几个commit(s)提交到当前分支(操作的对象是commit) eg: git checkout B git cherry-pick 0771a0c107dbf4c 将上面A分支的com...

2019-05-31 11:09:13 760 0

原创 关于改变 django select_related的join连表方式(inner join/ left join)

关于改变 django select_related的join连表方式(inner join/ left join) django可以使用select_related预加载外键对象,但在没有指定 null=True的情况下,select_related会使用inner join连表查询,这样可能会...

2019-04-12 13:52:05 1245 2

原创 Django原生sql使用Paginator分页

使用Django肯定经常使用Paginator分页,很便捷。但是他可接受的分页对象必须是django orm的查询集或者list、tuple。当需要使用原生sql查询数据,分页就无法使用Paginator。 Paginator其实只需要实现两个方法count和__getitem__就可以自定义一...

2018-12-19 21:45:08 751 0

转载 Git push与pull的默认行为

一直以来对git push与git pull命令的默认行为感觉混乱,今天抽空总结下。 git push 通常对于一个本地的新建分支,例如git checkout -b develop, 在develop分支commit了代码之后,如果直接执行git push命令,develop分支将不会被pu...

2018-08-10 10:05:04 263 0

转载 Python黑魔法 --- 异步IO( asyncio) 协程

python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效的并发任务。Python的在3.4中引入了协程的概念,可是这个还是以生成器...

2018-08-07 20:50:10 310 0

转载 Python: 你不知道的 super

super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实现,比如: class Animal(object): def __init__(self, ...

2018-08-07 20:49:09 201 0

原创 关于python 装饰器

关于装饰器 无参装饰器 普通函数 def say_hello(*args, **kwargs): print 'hello world' 无参装饰器 def debug(func): ...

2018-07-25 23:11:21 203 0

原创 django orm跨关系查询(跨表,多层查询)

django orm跨关系查询(ManyToManyField,ForeignKey多层查询) Django提供了一种强大而直观的方式来“跟踪”查找中的关系,在后台自动用SQL JOIN处理。 要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段。 这个例子检索所...

2018-07-20 21:54:38 5696 0

转载 docker容器启动后马上退出解决方案

最近在看docker如何让容器在启动时直接运行某些进程,后来发现Dockerfile可以在容器启动的时候指定容器运行命令。 CMD指定,但是每个Dockerfile只能有一条CMD指令,如果指定了多条CMD指定,只有最后一条会被执行。 于是就想了一个办法,在写了一个脚本,在脚本里面启动多个进程...

2018-07-19 14:35:36 6571 1

转载 ZeroRPC应用

随着项目的发展,除了业务所在的WebService之外,有了内部系统的业务需求,涵盖客服财务统计报表等,在项目子系统篇中能看到详细的介绍。今天在这里要说的是系统间的桥梁:RPC(Remote Procedure Call) 其实这也不是什么新鲜的概念,上世纪70年代就提出过理论,80年代就实际应...

2018-07-16 21:54:47 726 0

转载 高并发的核心技术-幂等的实现方案

高并发的核心技术-幂等的实现方案 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该...

2018-06-25 09:44:36 306 0

转载 高性能Python-字典和集合

当数据没有明确的顺序时,集合(sets)和字典(dictionaries)都是理想的数据结构,一个Key唯一对应一个存储对象, Key可以是一个string,也可以是任意一个hashable的对象。字典和集合的插入和查询的时间复杂度是O(1),需要额外的内存开销来支持,但是实际上,插入和查询的时间...

2018-06-24 21:31:36 206 0

转载 linux下使用pyinstaller打包python脚本

最近给运维写一个系统维护的python脚本,但是被告知生产环境有很多服务器没有安装python解释器,于是在网上搜索多pyinstaller解决方案,本文简单记录之。 下载pyinstaller。 最新的pyinstaller版本为2.0版本,官方网站http://www.pyinstal...

2018-06-14 12:43:47 5343 0

原创 关于django的prefetch_related优化查询问题

prefetch_related 介绍参见 https://blog.csdn.net/pushiqiang/article/details/79560550 在使用中发现,在对内嵌子列表再次进行filter时,prefetch_related会失效 models.py定义如下: cla...

2018-06-13 14:06:43 430 0

转载 python使用pipeline批量读写redis

python使用pipeline批量读写redis 用了很久的redis了。随着业务的要求越来越高。对redis的读写速度要求也越来越高。正好最近有个需求(需要在秒级取值1000+的数据),如果对于传统的单词取值,循环取值,消耗实在是大,有小伙伴可能考虑到多线程,但这并不是最好的解决方案,这里考...

2018-05-24 22:07:02 9307 0

原创 使用Nginx代理s3,动态生成缩略图并缓存

使用Nginx代理s3,动态生成缩略图并缓存 通过 {domain}/{uri}?s={size}实现获取指定大小缩略图 原图:localhost/u/1523562/avatar 缩略图:localhost/u/1523562/avatar?s=200 缩略图:localhost/u/1...

2018-05-15 12:22:08 1430 0

转载 PostgreSQL两种分页方法查询时间比较

数据库中存了3000W条数据,两种分页查询测试时间--------------------------------------------------------第一种SELECT * FROM test_table WHERE i_id>1000 limit 100;Time: 0...

2018-04-27 21:16:51 1039 0

转载 cas跨域单点登录原理

相同域名下实现单点登录太简单,因为A系统和B系统域名相同,在访问A时候登录过,在访问B时,由于域名相同,浏览器会带上cookies,cookies里有票据信息,访问B自然就不用再登录了。       可是如果A系统和B系统域名不同,CAS是怎样做到已经在访问A系统时候登录过,在访问B系统时就不用再...

2018-04-27 21:14:31 504 1

转载 浅谈CSRF攻击方式

一.CSRF是什么?  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么?  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以...

2018-04-27 21:14:26 87 0

转载 代码这样写更优雅(Python 版)

Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行速度慢,代码读起来也费尽,给人一种拖泥带水的感觉,过段时间连自己也读不懂。《计算机程序的构造和解释...

2018-04-19 23:26:53 123 0

转载 程序员必知的 Python 陷阱与缺陷列表

我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式。如果一段代码直接出错,抛出了异常,我不认为这是陷阱。比如,Python程序员应该都遇到过的“UnboundLocalError”, 示例:Python12345678910111213141516171819&g...

2018-04-19 23:26:26 63 0

转载 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码

程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA。可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦我们项目组一值使用Python2.7,虽然我们也知道Python3的诸多好处,也曾经蠢蠢欲动过,但由于各种历史原因,以...

2018-04-12 22:22:34 55 0

转载 Kubernetes常用命令

1 查看类命令---# 查看集群信息kubectl cluster-info# 查看各组件信息kubectl -s http://localhost:8080 get componentstatuses# 查看pods所在的运行节点kubectl get pods -o wide# 查看pods定...

2018-04-12 22:18:43 274 0

转载 YAML 语言教程

编程免不了要写配置文件,怎么写配置也是一门学问。YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。本文介绍 YAML 的语法,以 JS-YAML 的实现为例。你可以去在线 Demo 验证下面的例子。一、简介YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便...

2018-03-29 20:34:57 181 1

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