基于python3.7利用Motor来异步读写Mongodb提高效率by Liu Yue/2019-09-06 标签: python3.7 异步 基于 利用 Mongodb 读写 Motor 提高效率 如果使用Python做大型海量数据批量任务时,并且backend用mongodb做数据储存时,常常面临大量读写数据库的情况。尤其是大量更新任务,由于不能批量操作,我们知道pymongo是同步任务机制,相当耗时。 如果采用多线程、多进程的方案确实有效,但编写麻烦、消耗系统资源大(pymongo还不允许fork线程中共用连接)。这里主要瓶颈在于IO,使用单线程异步操作就会效果很好。 M......了解更多
基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)by Liu Yue/2019-09-04 标签: 基于 redis Docker 搭建 模式 compose Sentinel 哨兵 集群 可用 我们知道,Redis的集群方案大致有三种:1)redis cluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。 sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。 ......了解更多
使用flex弹性布局来为微信小程序写自适应页面by Liu Yue/2019-09-03 标签: 页面 布局 适应 使用 微信 程序 flex 弹性 我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + position属性 + float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的float坍塌问题,另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。 于是,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局......了解更多
在centos7.6上利用docker-compose统一管理容器和服务by Liu Yue/2019-09-02 标签: 利用 服务 Centos7.6 Docker compose 统一 管理 容器 众所周知,一个大型的Docker容器组成的微服务应用中,容器的数量是非常巨大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦。docker-compose的出现正是为了解决这个问题。 docker-compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器。在配置文件中,所......了解更多
关于Python3异步非阻塞Web框架Tornado:真实的异步和虚假的异步by Liu Yue/2019-09-01 标签: 关于 异步 Tornado 虚假 真实 我们知道Tornado 优秀的大并发处理能力得益于它的 web server 从底层开始就自己实现了一整套基于 epoll 的单线程异步架构,其他 web 框架比如Django或者Flask的自带 server 基本是基于 wsgi 写的简单服务器,并没有自己实现底层结构。而tornado.ioloop 就是 tornado web server 最底层的实现。 ioloop 的实现基于 epoll ,......了解更多
使用python3和高性能全文检索引擎Redisearch进行交互by Liu Yue/2019-08-30 标签: 引擎 使用 进行 python3 全文检索 Redisearch 交互 高性能 上一篇介绍了一款高性能全文检索引擎Redisearch,它不仅性能强劲,部署也方便,这里介绍一下如何用python客户端和它进行交互。使用redisearch-python:https://github.com/RediSearch/redisearch-py 首先,安装 pip3 install redisearch ......了解更多
平民版的Elasticsearch?使用Redisearch实现的全文检索功能服务by Liu Yue/2019-08-29 标签: 使用 功能 实现 服务 全文检索 Redisearch “检索”是很多产品中无法绕开的一个功能模块,当数据量小的时候可以使用模糊查询等操作凑合一下,但是当面临海量数据和高并发的时候,业界常用 elasticsearch 和 lucene 等方案,但是elasticsearch对运行时内存有着最低限额,其运行时大小推荐 2G 以上的内存空间,并且需要额外的磁盘空间做持久化存储。 其实mongoDB 内置的正则匹配搜索文本以及自带的 text 索引和 searc......了解更多
9012年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了by Liu Yue/2019-08-27 标签: 一个 框架 一下 http 接口 9012 Thrift RPC 拯救 传统 需要 这样 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多、系统与系统交互较少的情况下使用它,http接口的优点就是简单、直接、开发方便,门槛低,利用现成的http协议进行传输。 但是事情往往有两面,如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手4次挥手,减少了网络开销;其次就是......了解更多
使用基于mpvue的框架开发微信小程序(搭建环境)by Liu Yue/2019-08-26 标签: 框架 使用 基于 开发 环境 搭建 mpvue 微信 程序 美团很早就开源了mpvue这个项目,如此看来,美团可不仅仅是一家团购网站,真正的技术驱动型企业,使得我们多了一种用来开发微信小程序的框架选项。由于mpvue框架是完全基于Vue框架的(重写了其runtime和compiler),因此在用法上面是高度和Vue一致的(某些功能由于受限于小程序环境本身的原因而不能使用,但是瑕不掩瑜),这给使用过Vue开发Web应用的前端开发者提供了极低的门槛来开发小程序。 搭......了解更多
在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务by Liu Yue/2019-08-22 标签: 使用 Tornado5.1 nginx 部署 服务 vue Centos7.6 js2.6 Supervisor 项目 分离 反向 代理 前后 统一 管理 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广,无论是单页应用,还是混合式开发app,亦或是微信小程序开发,样样得心应手,tornado最近的风头有点被新锐框架sanic抢走了,但是作为老牌的异步非阻塞框架,其内置了支持epoll/kqueue 等高效网络库,而具备了处理高并发的能力并且开发效率也不低,这一次tornado作为承载后端压力的角色。 ......了解更多
在Centos7.6上部署Docker环境以及安装docker-composeby Liu Yue/2019-08-21 标签: 安装 环境 部署 以及 Centos7.6 Docker compose 毫无疑问,Docker目前是现阶段最为火爆的容器技术了,它在业务解耦和拆分业务层面有着不可忽视的作用,而使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具,这里记录一下如何在centos7.6上部署Docker以及docker-compose。 #升级yum sudo yum update #卸载旧版本docker sudo yum remo......了解更多
利用基于Python的Pelican打造一个自己的个人纯静态网站by Liu Yue/2019-08-08 标签: Python 一个 静态 打造 基于 利用 自己 网站 Pelican 个人 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域的同仁。 之前我曾经写过两篇相似的文章用来快速搭建个人网站,一款基于go lang:利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统另外一款基于node.js:使用Hexo建立一个轻量、简易、高逼格......了解更多
python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务by Liu Yue/2019-07-31 标签: 实现 python3.7 Tornado5.1 Celery3.1 Rabbitmq3.7 16 异步 队列 任务 在之前的一篇文章中提到了用Django+Celery+Redis实现了异步任务队列,只不过消息中间件使用了redis,redis作为消息中间件可谓是差强人意,功能和性能上都不如Rabbitmq,所以本次使用tornado框架结合celery,同时消息中间件使用Rabbitmq来实现异步发邮件,并且使用flower来监控任务队列。 首先安装rabbitmq Mac os直接运行brew......了解更多
用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwtby Liu Yue/2019-07-16 标签: Authentication Basic Auth Oauth2 jwt 认证 进化 用户 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP中,基本认证(Basic access authentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。 虽然基本认证非常容易实现,但该方案创建在以下的假设的基础上,......了解更多
python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)by Liu Yue/2019-07-12 标签: Python 遇到 性能 问题 文件 面试 10g 50g 1t 花式 读取 最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什么姿势读它? 所有人都知道,用python读文件有一套”标准流程“: def retrun_count(fname): """计算文件有多少行 """ count = 0 with open(......了解更多
使用python将word文档和pdf电子书进行格式互转(兼容Windows/Linux)by Liu Yue/2019-07-10 标签: Python 使用 文档 进行 Linux Windows 互转 word pdf 兼容 格式 电子书 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些word文档批量转换pdf是最好的解决方案。 由于windows系统对于word文档有天然的兼容性优势,所以转换起来很简单,普遍上是通过comtypes模块。 pip3 install comtypes from comtypes.client impor......了解更多
彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)by Liu Yue/2019-07-02 标签: 应用 session cookie sessionStorage localStorage 弄清楚 面试 场景 彻底 区别 客户端状态保持是一个老生常谈的问题了,归根结底追踪浏览器的用户身份及其相关数据无非就是以下四种方式:session,cookie,sessionStorage,localStorage 首先cookie和session: Cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏......了解更多
搞清楚系统到底怎样支撑高并发以及架构图的绘制(面试向)by Liu Yue/2019-07-02 标签: 系统 并发 以及 面试 架构图 搞清楚 绘制 怎样 到底 支撑 大多数人面试的时候经常会被问到:你简历上有高负载高并发的经验,那到底你的系统是怎样设计的? 如果没有过相关的项目经验,大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实,就算没有相关的经验,只要事先编好话术,搞清楚架构图,回答此类问题也还是可以滴水不漏的。 首先,在脑子里虚拟一个大用户量背景下的场景,如果我们手......了解更多
使用Hexo建立一个轻量、简易、高逼格的博客by Liu Yue/2019-06-25 标签: 一个 使用 博客 轻量 Hexo 高逼格 简易 建立 在之前的一篇文章中,介绍了如何使用Hugo在三分钟之内建立一个简单的个人博客系统,它是基于go lang的,其实,市面上还有一款类似的静态页生成器,就是Hexo 读音/hækso/ ,它是基于node.js的,和Hugo一样,Hexo 正常来说,不需要部署到我们的服务器上,我们的服务器上保存的,其实是基于在hexo通过markdown编写的文章,然后hexo帮我们生成静态的html页面,然后,将生成的html上传到我们的服务器。简而言之:hexo是个静态页面生成......了解更多
python3的单元测试模块mock与性能测试模块cProfileby Liu Yue/2019-06-14 标签: 性能 模块 测试 python3 单元测试 mock cProfile 我们知道写完了代码需要自己跑一跑进行测试,一个写好的程序如果连测试都没有就上到生产环境是不敢想象的,这么做的人不是太自信就是太无知。 传统测试无非就是自己运行一下程序查看结果,或者前后端服务进行联调,这里要说的是走正规流程的单元测试,那到底什么是单元测试呢?顾名思义,只测试当前单元的程序或者代码,也可以理解当前模块的代码块,单元测试假设所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部......了解更多