自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 线上服务OOM问题排查

背景简介风控服务有两个node,通过 SLB(负载均衡)对外提供服务。其中 node2 比 node1 多了一个 scheduled task:定时统计数据,由于很多数据库只有在运行时才知道,所以有个动态连接数据库模块问题描述node2 服务异常,日志报错:java.lang.OutOfMemoryError: Java heap space(对外风控服务正常,因为node1服务正常,负载均衡服务会自动剔除异常节点)排查过程由于 JVM的启动参数没有显示指定...

2020-10-29 18:13:21 1388

原创 幂等性

1. 什么是幂等如果一个操作执行任意多次所产生的影响,均与执行一次的影响相同,我们就称其为幂等。2. 幂等的重要性系统的API 具备幂等性非常重要。举一个简单的例子。比如,在一次付款的交易中,正常流程是这样:客户端向支付平台发送付款请求; 支付平台收到付款请求,处理转账操作成功后,返回一个回执消息表示交易完成; 客户端收到回执消息,知道付款成功了。服务间的调用可能会有三个状态:成功,失败,超时。前两者都是明确的状态,而超时则是完全不知道是什么状态。如果发出付..

2020-08-24 21:21:47 898

原创 Java JDK动态代理 CGLib动态代理

代理(proxy):就是一个“中介”。现在对象A可以直接调用对象B。需求来了:在调用B的前后打印日志。静态代理创建一个新类(发生在编译时),来作为旧类的代理,从而增加功能。增加新功能的代码无法复用。public class Hello{ public void sayHello(){ System.out.println("Hello"); }...

2018-12-25 15:55:37 265

转载 浅析Python3中的bytes和str类型

转自:https://www.cnblogs.com/chownjy/p/6625299.htmlPython 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数...

2018-10-31 09:47:01 344

原创 IO模型、IO多路复用、select poll epoll

基础知识 同步、异步 进程的阻塞 理解 IO操作Unix下可用的5种I/O模型 同步阻塞 IO 同步非阻塞 IO IO 多路复用 异步 IO 5中IO模型的比较 IO多路复用的理解select poll epoll的区别基础知识高性能架构设计主要有两方面:1.提高单服务器...

2018-08-17 18:06:31 1437

原创 部署Django项目Nginx+uwsgi

部署方式:Nginx代理+uwsgi应用服务操作系统:CentOS7Django项目:https://github.com/zelinhehe/mysite.git为例: 1. 安装 Python3.6 获取安装包wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgztar -xzvf Python...

2018-07-20 15:31:15 230

原创 分而治之的思想

分治分治(Divide and Conquer)是一种算法范式,也是一种解决问题的思想。步骤如下:1.分解(Divide):将问题分解为同一类型的子问题;2.治理(Conquer):递归地解决子问题;3.合并(Combine):合并子问题的答案,得出原问题的答案。任何一个可以用计算机求解的问题,所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,所需的计算时间也越少...

2018-07-20 09:17:16 2558

转载 Django通过 Celery添加异步任务

转自异步任务的重要性大家在做web项目的时候经常会遇到一些耗时的操作, 比如: 发送邮件、发送短信、生成pdf。这些操作在某些情况下需要立即返回结果给用户,但是可以在后台异步执行。比如用户邮箱注册的时候, 在发送邮件的时候可以先把”已经发送激活邮件到邮箱”返回给用户, 同时把邮件发送任务提交到异步处理线程中。现在介绍一款python写的专门用于处理异步任务的框架–celery。当然...

2018-05-18 16:21:50 2128

转载 Django从请求到返回都经历了什么

转自从runserver说起ruserver是使用django自己的web server,主要用于开发和调试中, 部署到线上环境一般使用nginx+uwsgi模式manage.py 探秘看一下manager.py的源码,你会发现上面的命令其实是通过Django的execute_from_command_line方法执行了内部实现的runserver命令,那么现在看一下runs...

2018-05-18 16:19:45 888

转载 Python装饰器的函数式编程

        Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西。虽然好像,他们要干的事都很相似——都是想要对一个已有的模块做一些“修饰工作”,所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有...

2018-04-11 14:41:49 249

原创 OpenID与OAuth

先说区别区别OpenID 和 OAuth 都可以用来认证身份,但是他们之间到底有哪些不同?OpenID — authentication 证明、鉴定、证实 ——“用户是谁”OAuth — authorization 授权、认可、批准——“用户能做什么”OpenID用户希望访问其在http://example.com的账户http://example.com (Relying Party) ...

2018-04-04 11:53:34 1050 1

转载 python -m

python -m xxx.py作用是:把xxx.py文件当做模块启动但是我一直不明白当做模块启动到底有什么用。python xxx.py和python -m xxx.py有什么区别!自问自答:python xxx.pypython -m xxx.py这是两种加载py文件的方式:1叫做直接运行2把模块当作脚本来启动(注意:但是__name__的值为'main' )不同的加载py文件的方式,主要是影...

2018-03-20 20:30:27 7666

原创 Django中修改字段时注意的一个问题

问题:Django 1.7.8表 Users 和 Tenant 做了多对多关联。django 会自动创建一个表 users_tenants(user_id与tenant_id的对应)class Users(models.Model):tenants = models.ManyToManyField(Tenant)在执行 user.tenants.add(tenant)时,报下面的问题:ERROR:...

2018-02-23 15:30:50 1255

原创 virtualenv 创建隔离的 Python环境

virtualenvvirtualenv 是一个工具。用来创建隔离的 Python环境。一、安装# pip install  virtualenv二、创建python虚拟环境    命令:virtualenv [虚拟环境名称]。    # virtualenv env1    执行后,在本地会生成一个与虚拟环境同名的文件夹。    使用--python参数指

2018-01-24 17:30:08 447

原创 apidoc: Inline Documentation for RESTful web APIs

apidoc:Inline Documentation for RESTful web APIs安装 apidoc的过程记录:$ npm install apidoc -gThe program 'npm' is currently not installed. You can install it by typing:sudo apt-get install npm缺

2018-01-13 21:12:20 383

原创 Python的GIL锁

要想把N核CPU的核心全部跑满,就必须启动N个死循环线程。用 Python 启动与CPU核心数量相同的N个线程,在4核CPU上可以监控到CPU占用率仅有102%,也就是仅使用了一核。但是用C、C++或Java来改写相同的死循环,直接可以把全部核心跑满,4核就跑到400%,8核就跑到800%。为什么Python不行呢?因为Python的线程虽然是真正的线程,但解释器执行代码时

2018-01-13 21:02:29 1767

原创 Python中的ThreadingLocal

一旦在主线程实例化了一个local,它会一直活在主线程中,并且又主线程启动的子线程调用这个local实例时,它的值将会保存在相应的子线程中。1.local_data具有全局访问权,主线程,子线程都能访问它。2.但是 local_data的值却是线程隔离的,值只与各当前线程有关。#! coding:utf8import threading# 创建全局ThreadLocal对象:l

2018-01-13 20:58:50 475

原创 什么是序列化与反序列化

在OSI七层协议模型中展现层的主要功能:1.把 应用层的对象 转换成一段连续的二进制序列。——序列化2.把二进制序列转换成应用层的对象。——反序列化概念:序列化: 将数据结构或对象 转换成二进制序列 的过程反序列化:将二进制序列 转换成数据结构或对象 的过程 数据结构和对象二进制串(内存中的

2018-01-03 15:49:00 547

原创 Python的 enumerate zip map reduce filter

enumerate功能:遍历一个序列的元素以及其索引号例子:>>> list(enumerate('abc'))[(0, 'a'), (1, 'b'), (2, 'c')]>>> >>> for index, element in enumerate('abc'):... print index, element... 0 a1 b2 czip输入:序列组。输

2017-12-18 18:47:25 249

原创 字符编码 ASCII Unicode UTF-8

字符编码:ASCII 编码:最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,比如大写字母A的编码是65,小写字母z的编码是122。Unicode 编码: 把所有语言都统一到一套编码里,这样就不会再有乱码问题了。ASCII编码是1个字节,而Unicode编码通常是2个字节。(如果要用到非常偏僻的字符,就需要4个字节)

2017-12-18 10:59:58 257

原创 python 限制函数执行时间,自己实现 timeout

# coding=utf-8import signalimport timedef set_timeout(num, callback): def wrap(func): def handle(signum, frame): # 收到信号 SIGALRM 后的回调函数,第一个参数是信号的数字,第二个参数是the interrupted stack frame.

2017-08-24 15:03:28 22061 2

原创 Python 装饰器 decorator

高阶函数可以把 函数 作为参数,也可以返回一个函数。那么,是否可以使用高阶函数,接受一个原函数,对其包装,然后返回一个新函数?

2017-08-09 11:53:22 299

原创 Python 需要单例模式吗

Python真的需要去实现单例模式吗?——不需要。因为,python有模块(module),最pythonic的单例典范。模块在一个应用程序中只有一份,本身就是单例的,将你所需要的属性和方法,直接暴露在模块中变成模块的全局变量和方法即可!# some module.pyclass SingletonClass: pass# 在别处我们想用这个实例都直接使用 modul...

2017-08-09 11:22:41 677

原创 对 MVC、MTV 和 MVVM的理解总结

MVC(Model View Controller 模型-视图-控制器)是一种Web架构的模式。特点:把业务逻辑、模型数据、用户界面分离开来,让开发者将数据与表现解耦。MVC三要素:Model(数据模型)。是对客观事物的抽象。比如知乎Live,Live就是一个模型,可以用Live类来表示。而一个模型通常还带有很多的和业务相关的

2017-03-16 15:36:01 5587

原创 django template context_processors 模板全局变量

iaasms/settings.py老版本的 DjangoTEMPLATE_DIRS = (    os.path.join(BASE_DIR, 'iaasms/render/templates'),)TEMPLATE_CONTEXT_PROCESSORS= (    'django.contrib.auth.context_processors.auth',

2016-12-29 14:37:37 5441

原创 Django的分页 Paginator

>>> from django.core.paginator import Paginator>>> objects = ['john', 'paul', 'george', 'ringo']>>> p = Paginator(objects, 2)>>> p.count4>>> p.num_pages2>>> p.page_range[1, 2]>>> pag

2016-12-27 19:16:16 482

原创 对django的QuerySets(查询集)的理解

查询集 是惰性执行的 —— 创建查询集不会带来任何数据库的访问。你可以将过滤器保持一整天,直到查询集 需要求值时,Django 才会真正运行这个查询。看下这个例子:>>> q = Entry.objects.filter(headline__startswith="What")>>> q = q.filter(pub_date__lte=datetime.date.today())>>

2016-12-27 19:06:53 6474

原创 用wget下载整个网站,或者特定目录全部文件

需要下载某个目录下面的所有文件。命令如下wget -c -r -np -k -L -p http://docs.openstack.org/liberty/install-guide-rdo/在下载时。有用到外部域名的图片或连接。如果需要同时下载就要用-H参数。wget -np -nH -r –span-hosts www.xianren.org/pub

2016-12-07 17:41:23 19181 1

原创 linux 解压 .gz .bz2 .zip .rar .tar

compress [-rcv] 文件或目录uncompress 文件.Zgzip [-cv] 文件gzip -d 文件.gzzcat 文件.gzbzip [-cv] 文件bzip -d 文件.bz2        -k 保留原文件(... -c ... > ...)bzcat 文件.bz2tar -cvf 目录文件.tar 目录文件

2016-12-07 17:38:50 875

原创 django 使用session

setting.py在 INSTALLED_APPS 中加入 online。在 MIDDLEWARE_CLASSES 中注释掉 'django.middleware.csrf.CsrfViewMiddleware'。设置数据库:DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 't

2016-12-07 17:18:23 7779

原创 Python 迭代器 生成器

迭代器(Iterator)可以直接作用于for循环的对象,统称为可迭代对象:Iterable。可以被next()函数调用并不断返回下一个值的对象,称为迭代器:Iterator。Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不

2016-11-11 22:52:41 409

原创 Celery:分布式任务队列 简单上手

此文介绍 Celery 的基本用法。适合上手。内容纲要:0.概念。1.选择并安装 Broker(消息传送)。2.安装 Celery,并写一个任务。3.运行 woker,并调用任务。4.保存结果。好,开始吧。概念Celery 是基于消息传递的异步任务队列。它专注于实时操作,也支持调度。执行单元,称为Task,并发执行,在一个或多个w

2016-10-19 15:56:05 1488

原创 Django 使用celery做异步任务处理

celery 分布式任务框架,处理异步的安装sudo apt-get/yum install rabbitmq-server(使用redis:redis-server/yum install redis)pip install celery django-celery运行python manage.py makemigrations  python

2016-10-18 16:15:56 1167

原创 多任务操作数据库时:2006, 'MySQL server has gone away'

from django.db import connectionconnection.close()

2016-10-18 16:06:37 481

原创 Django QuerySet 多表联查/条件选取/合并

多表联查class A(models.Model):aname = models.CharField()class B(models.Model):bname = models.ForeignKey(A)B.objects.filter(bname__aname__contains='searchtitle') # 是两个 '_' 。

2016-10-17 22:27:11 19581

原创 Django QuerySet的基本API

基本操作新建对象>>> a = Person(name='name1', age=1)>>> a.save()>>> a = Person.objects.create(name='name4', age=4)>>> Person.objects.get_or_create(name='name1', age=1)(, False) # 已存在>

2016-10-17 17:52:21 550

原创 jira的安装部署

CentOS-7-x86_64JDK:jdk-8u73-linux-x64.gzMySQL:jira software:bc-atlassian-jira-software-7.0.5-jira-7.0.5.zip一、安装JDK1、解压JDK[root@linuxidc jira]# tar -zxf jdk-7u60-ea-bin-b15-linux-x64-

2016-07-21 17:01:33 3697

原创 LVS的介绍与配置

对用硬件和软件方法实现高可伸缩、高可用网络服务的需求不断增长,这种需求可以归结以下几点:可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降低服务质量。高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须是每天24小时每星期7天可用的。可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。

2016-07-19 15:10:18 2132

原创 test OpenStack API

一、CURL二、API三、SDK

2016-07-18 19:12:14 701

原创 CentOS7云镜像:注入实例的root密码

默认OpenStack的Dashboard修改虚拟机的密码的功能是关闭的,你需要enable。1.配置 can_set_password :[root@controller ~]# vim /etc/openstack-dashboard/local_settings......OPENSTACK_HYPERVISOR_FEATURES = {    'can_set_mo

2016-07-18 19:08:38 6181

高质量C编程指南-林锐

字数不算太多,但内容都是精华。对人的启发很大,无论是C/C++编程的新手还是老手,很有读的必要。

2015-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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