随笔分类 - 编程语言层面
摘要:一、prometheus基本原理介绍 prometheus是基于metric采样的监控,可以自定义监控指标,如:服务每秒请求数、请求失败数、请求执行时间等,每经过一个时间间隔,数据都会从运行的服务中流出,存储到一个时间序列数据库中,之后可通过PromQL语法查询。 主要特点: 多维数据模型,时间序列
阅读全文
摘要:golang程序的CPU及内存使用情况性能分析 1.runtime.MemStats查看内存占用情况 //读取当前内存信息的方法 func printMemStats() { //定义一个 runtime.MemStats对象 var ms runtime.MemStats //通过对象的属性 查询
阅读全文
摘要:sync.Map: Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 syn
阅读全文
摘要:golang的GC,1.8通过混合写⼊屏障, 使得STW降到了sub ms。go语言中程序代码执行和垃圾回收是并发执行的。 当前Go GC特征 :三色标记,并发标记和清扫,非分代,非紧缩,混合写屏障。三色标记:1. 将所有对象放在白色集合中2. 从rootset遍历可达对象,将可达对象放在灰色集合中
阅读全文
摘要:在Python的圈子里常流行一句话:"动态一时爽,重构火葬场",我们知道Python写起来很方便,但在重构或者对某部分代码修改时, 可能会造成"牵一发而动全身",所以对于Python项目,特别是大型项目来说单元测试来保证代码质量是非常有必要的。 单元测试(Unit Testing) 1. 针对程序模
阅读全文
摘要:目前国内比较流行的第三方支付主要有支付宝和微信支付,博主最近研究了下如何用Python接入支付宝支付,这里我以Tornado作为web框架,接入支付宝构造支付接口。 使用Tornado异步接入支付宝支付流程: 1. 进入蚂蚁金服开放平台填写开发者信息、应用信息 2. 配置RSA256密钥,生成支付宝
阅读全文
摘要:从源码可以看出,authenticated的作用:当current_user不存在时,它会调用get_login_url方法从settings里面去取login_url,从而获取user返回,当user未登录时,它会调用redirect重定向,返回301。 请求接口的时候在headers里面带上to
阅读全文
摘要:Python3.5后 Tornado官方建议使用async和await的方式实现异步程序,尝试了下使用Tornado和协程爬取博客园的文章并使用peewee_async异步写入MySQL数据库。 一. 博客园文章抓取测试: 这里我以我自己的一篇文章详情作为测试url,https://www.cnbl
阅读全文
摘要:create_task(coro):创建一个task,将协程注册到事件循环中 add_done_callback(callback):task在返回结果前执行回调函数,它的参数是接受一个方法callback,如果这个方法需要传参数可使用partial 在这个事件循环中,call_soon最先执行,接
阅读全文
摘要:1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtualenv15.1.0 uwsgi版本:uwsgi2.0.17.1 安装并进入项目虚拟环境: 2.项
阅读全文
摘要:yield 通过yield返回的是一个生成器,yield既可以产出值又可以生成值,yield可以用next()来启动生成器,同时可以用send向生成器传递值;在初次启动生成器时,需调用next()或send(None)来激活生成器,一个yield对应一个send或next(),当send或next(
阅读全文
摘要:python中ThreadPoolExecutor(线程池)与ProcessPoolExecutor(进程池)都是concurrent.futures模块下的,主线程(或进程)中可以获取某一个线程(进程)执行的状态或者某一个任务执行的状态及返回值。 通过submit返回的是一个future对象,它是
阅读全文
摘要:线程执行 join与setDaemon 子线程在主线程运行结束后,会继续执行完,如果给子线程设置为守护线程(setDaemon=True),主线程运行结束子线程即结束; 如果join()线程,那么主线程会等待子线程执行完再执行。 线程同步 当线程间共享全局变量,多个线程对该变量执行不同的操作时,该变
阅读全文
摘要:GIL(global interpreter lock)全局解释器锁 python中GIL使得同一个时刻只有一个线程在一个cpu上执行,无法将多个线程映射到多个cpu上执行,但GIL并不会一直占有,它会在适当的时候释放 分别运行三次的结果: 可以看到count并不是一个固定值,说明GIL会在某个时刻
阅读全文
摘要:1.形式上的异同点: 在形式上,Python中:实例方法必须有self,类方法用@classmethod装饰必须有cls,静态方法用@staticmethod装饰不必加cls或self,如下代码所示: 执行结果: 从执行结果可以看出,实例方法必须实例化后调用不可用类点方法直接调用,静态方法和类方法既
阅读全文
摘要:元类(metaclass) 简单地说,元类就是一个能创建类的类,而类class 是由type创建的,class可以创建对象 type与object的关系详见:python中type和object 1.type动态创建类: 从type源码可以看出,type接受3个参数,第一个是要创建的类名,第二个参数
阅读全文
摘要:抽象类中只能有抽象方法,子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。 Python2 这里以NotImplementedError的形式实现了抽象类和抽象方法,如果子类不实现该方法会抛出异常 Python3 在Python3中引入了abc模块,通过@abc.abstractmet
阅读全文
摘要:type 所有类是type生成的 在python中是一切皆对象的,类其实也是对象,首先type生成了<class 'int'>这个对象,<class 'int'>又生成了1这个对象,type --> int --> 1 同样,type生成了<class 'str'>这个对象,<class 'type
阅读全文
摘要:对于系统资源的操作,如:文件操作、数据库操作等,我们往往打开文件、连接数据库后忘了将其close掉,这时就可能会引发异常,因此我们常用的做法是: 这段代码的确能解决实际问题,但是看起来有些繁琐冗余,因此Python引入了内置的with模块来简单优雅地解决此类问题。 执行__enter__方法 执行w
阅读全文
摘要:MRO即Method Resolution Order 方法解析顺序,它的提出主要是为了解决Python中多继承时,当父类存在同名函数时,二义性的问题 下面先看一个例子: B和C继承D A继承B和C 这是一个简单的多继承,下面看Python3中的输出结果: 执行结果是 A ->B ->C ->D 在
阅读全文