- 博客(61)
- 资源 (7)
- 收藏
- 关注
原创 etcd源码分析之put流程及部分channel的作用
引用一张关系图说明etcd各模块的关系下面绘制了etcdctl put key value的时序图来解析代码流程
2020-04-11 17:03:12
493
原创 python中参数*和**的使用方法
python中的参数传递,python传递的形参有这两种样式,*和**一、*的这种用法是传递一个元组,python中的元组是一个括弧包含的数据,如(1,2,3,4)eg1:test(*args): print args[0],args[1],args,argument=(1,2,3,4,5,6,7,8)test(*argument)这时候的输出为:1,2,(1,2,3,4,5,6,7,8),...
2018-04-10 22:38:15
2718
原创 ansible简介,语法介绍,yaml语法介绍
1. Playbook简介Ansible 的任务配置文件被称之为“playbook”,我们可以称之为“剧本”。每一出剧本(playbook)中都包含一系列的任务,这每个任务在ansible中又被称为一出“戏剧”(play)。一个剧本(playbook)中包含多出戏剧(play),这很容易理解。Playbook采用一种可读性很高的且容易被人类阅读的语法的YAML语法编写,YAML: "YAML Ai...
2018-04-01 21:06:58
1328
原创 ansible入门指南,登录其他宿主机,使用playbook创建文件
自己玩了一下ansible,在项目里面只看别人在写ansible playbook,自己并没有动手做过,这里开始自己尝试这里采用的连接方式是ssh,每次都是使用主机地址、用户名、和密码登录宿主机,还有一种方式是使用公钥\私钥的方式,这个后续再介绍准备工作:在VirtualBox上开启两个宿主机,我使用的是桥接网络,因为要安装一些东西,他们的IP为192.168.3.10和192.168.3.11在...
2018-04-01 20:57:19
3811
原创 VirtualBox - 自动调整屏幕大小,设置虚机自适应显示器
在VirtualBox中安装了Ubuntu后,Ubuntu的屏幕调整不太好,操作起来非常不方便,需要安装Vbox的增强功能。我使用的VirtualBox是5.0.24版本,具体操作如下:1, 在 设备--》 安装增强功能这时会自动加载VBOXADDITIONS的虚拟光盘2, 运行这个文件,需要管理员权限,下面是运行结果3.运行结束后reboot虚机,这样屏幕分辨率会随着屏幕大小自动调整,非常方便...
2018-03-13 23:33:54
39106
5
原创 python装饰器,一种更容易理解的方式
装饰器的策略可以这样来概括,它是对原有函数封闭性的保持,又对原有函数进行扩展;就是说对你原有的代码不做修改,保证其功能模块不发生改变,在原有函数的基础上,再加一层,对原有函数进行扩展;假如说有这样一件事情:def printout(num): print "This is a Test"上面是输出一个字符串,但是我们现在想在print之前进行一次判断,最简单的做法是:def printout...
2018-03-11 22:44:20
309
原创 python实现单粒模式,模块方法/装饰器方法/__new__方法
我们首先理解一下什么叫做单例模式。就是说,系统环境里面有一个类,无论在系统的什么地方,只要想实例化,就只能得到一个实例,实例化后对实例的任何操作,也只和第一个实例相关。另外一个层面,单例模式同样避免了重复实例化的内存浪费,如果使用得当,能够大大节约系统资源。 下面就说一下python里面实现实例的几种方法,里面有几个和我之前讲过的知识点相关,这里mark一下:使用模块使用魔法方法 __new__使...
2018-03-11 16:17:44
306
原创 python的取值技巧
python中常用的数据类型是字典,字典的取值就是通过当前对象然后加上对于的key值就得到了对应的value;x={"key1":"value1"}python对字典的取值有以下三种:1. y = x["key1"]这样得到的值y为value1,但是这样有一个坏处,假如取一个不存在的key就会抛出异常,如x["error"],这时候就会抛出AttributeError2. y
2018-01-25 22:54:23
3987
原创 python的字典去重
字典的key值判断或者去除重复的key和value,下面介绍list和set两种方法:x={"a":"1","b":"2","c":"3","a":"1","b":"2","c":"3"}或者x={"a":"1","b":"2","c":"3","a":"11","b":"22","c":"33"}都是一样的;首先看list方法:y=list(x)就是["a","b","c"],这样得
2018-01-25 22:45:13
26499
原创 python动态绑定的特性
python作为一种脚本语言,无需编译,解释执行,在使用python的过程中运用了动态绑定的这一特性,故此总结一下;先看一段代码:dynamic.pyclass People(object): def test(self): print "this is a function in class"def test(): print "this is a test funct
2018-01-17 22:19:14
427
原创 MySql关键字汇总
select ... from 查找distinct 合并相同的项limit /limit ... offset 限制输出order by 排序order by ... desc 排序,降序where/ where ... between ... and ... 条件判断输出where ... and 多条件,同时符合where ... or
2017-12-24 09:53:03
2472
原创 python自定义模块和模块引入
到现在才知道怎么把自己写的模块加入到查找路径中,方便在使用过程中解释器能索引到自定义的模块进入python环境中,首先引入sys模块:import sys然后使用sys.path查询现有python解释器所查找的模块路径书写自己的模块放置到一个文件夹下然后使用sys.path.append("my_model_path"),my_model_path就是自定义模块所存放的路径这
2017-12-17 20:18:43
2156
原创 RabbitMQ消息通信,生产者发送消息给指定的消费者的消息队列
上一篇文章描述了,通过使用广播式的通信方式,让生产者把消息广播给每一个消费者,本节我们介绍另外一个方式,生产者可以指定消费者,把消息发送给它:client.py#!/usr/bin/env pythonimport pikaimport sysconnection = pika.BlockingConnection(pika.ConnectionParameters(host='l
2017-11-10 21:37:25
12988
原创 RabbitMQ消息通信,一个生产者和多个消费者,广播式消息通信
上一则我们说到了一个对多个的RabbitMQ消息队列通信的实现方法,生产者发送的消息只能被一个消费者接收并处理,上则请阅读:http://blog.youkuaiyun.com/u012631731/article/details/78450389本则说的是广播式的消息通信方法实现,所有的消费者都可以收到生产者发送的消息还是直接上代码吧,有描述直接在代码里面注释:client.py#!
2017-11-05 21:50:44
14036
原创 RabbitMQ消息通信,一个生产者和多个消费者
上一则文章讲解了RabbitMQ的安装和简单一对一消息通信实现方法,具体可参考上一篇文章:http://blog.youkuaiyun.com/u012631731/article/details/72887588这则文章讲述一个生产者和多个消费者的消息通信。直接上源码,在源码里面进行注释讲述吧client.py#!/usr/bin/env pythonimport pikaimp
2017-11-05 17:06:20
19488
原创 使用virtualenv搭建Python下的Flask开发环境,ubu测试有效
Flask 依赖两个外部库:Werkzeug 和 Jinja2 。不过使用virtualenv就可以搞定这一切。下面重点介绍一下环境搭建的步骤:如果你在 Mac OS X 或 Linux 下,下面两条命令可能会适用:$ sudo easy_install virtualenv或更好的:$ sudo pip install virtualenv上述的命令会在你的系统中安装 v
2017-11-01 23:06:56
410
原创 使用python下的Flask应用
Flask是一个使用 Python 编写的轻量级 Web 应用框架。在学习过程中进行一些总结:1.一个最小的Flask应用 flask_test1.py:from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'i
2017-11-01 22:34:59
464
转载 angular jit and aot
为什么需要编译Angular应用中包含的组件、HTML模板(比如:@Directive、@Component、@NgModule、@Pipe)很多都是JS VM无法解析的,所以在浏览器渲染应用之前,组件和模板必须要被Angular编译器转换为可以执行的JavaScript。angular2编译模式在 Angular 2 中有两种编译模式:JIT - Just-In-Time AOT -
2017-10-22 09:30:22
617
原创 openstack创建虚拟机流程,从界面任务发起,到nova等组件处理,到虚机创建完成
这个图是经典的记录了openstack创建虚拟机的详细流程,总共28个步骤。1.客户端使用自己的用户名密码请求认证。2.keystone通过查询在keystone的数据库user表中保存了user的相关信息,包括password加密后的hash值,并返回一个token_id(令牌),和serviceCatalog(一些服务的endpoint地址,cinder、glance-api后
2017-10-21 20:51:43
2092
原创 openstack的RPC消息通信,oslo.messagin实现
openstack的RPC消息通信,提供了同步call和异步cast的两种调用方法,对每一组消息通信建立一个消息通道。oslo.messaging是应用于python的库,为微服务直接或者server和client直接建立消息通信网络。环境搭建:1.linux操作系统运行环境2.安装pip,可以使用源码安装,地址为https://pypi.python.org/pypi/pip/,
2017-10-21 20:21:39
599
原创 Python下使用sqlalchemy关联MySQL数据库,建立主外键关联关系,实现相互约束和级联删除
主外键是关系型数据库提供的一直关联表的一种方法,这里的级联关系提供了至少两个功能。第一:Machine表中的id字段为其主键,Car表中的machine_id为外键,这样就对Car中的machine_id字段进行了约束,使得machine_id字段的值必须是Machine表中id中的其中一个;第二:提供了两个表数据的级联删除功能,relation中的cascade和ondelete等属性值
2017-09-06 21:28:45
1873
原创 python使用sqlalchemy中间件对MYSQL数据库进行创建、查询、删除操作
首先安装sqlalchemy,安装方法有两种:通过官网下载源码进行安装;使用pip install sqlachemly1.建立操作数据库接口模块api.py,描述:在接口模块中首先创建一个engine,这里关联的是mysql数据库,也可以是其他类型的数据库然后定义了几个访问数据库的接口函数,提供对数据库的添加、删除、查询操作from sqlalchemy import cre
2017-09-05 22:03:16
2883
原创 python下使用alembic管理MYSQL数据库
本文介绍一下,alembic管理mysql的使用方法,首先需要安装一下模块,这里以ubutun为例进行阐述:1.首先安装setuptools,这个是pip安装需要的依赖:apt-get install steuptools2.然后安装pip,建议下载源码包安装,比较方便,地址为https://pypi.python.org/pypi/pip/,解压后进入文件目录执行python step.
2017-08-20 15:45:51
2253
原创 mysql常用操作汇总(五)
数据结构:1.汇总函数:avg(), count(), max(), min(), sum()select avg(price), count(price), max(price), min(price), sum(price) from shopping;2.数据分组:mysql提供了数据分组的方法,group by对列数据进行分组统计select pri
2017-07-23 16:07:56
302
原创 mysql常用操作汇总(四)
数据拼接:1.select concat ( id, '(', name,')') from shopping;2.使用别名,生成新的key和value:select concat ( id, '(', name,')') as id_name from shopping;3.使用算术计算,返回新的key和计算结果:(支持的算术计算包含加(+)减(-)乘(*)除(/
2017-07-21 21:28:43
316
原创 mysql常用操作汇总(三)
使用where过滤数据select name,id,price from shopping where id='3';MYSQL支持的其他操作符:对于多个约束条件可以使用and或or进行连接,and和与相通,or与或相通:select name,id,price from shopping where id='4' and price='444';and
2017-07-20 21:25:50
294
原创 网页存储之localStorage和sessionStorage
localStorage和sessionStorage都可以作为网页存储数据的方法。它们都是key-value的键值对方式存储,它们的不同点在于,localStorage会一直存储在网页提供的数据库中,而sessionStorage在会话结束时(页面关闭时)数据就会被清空。分别在浏览器中执行:localStorage.setItem('hello', 'Lucy');session
2017-07-19 21:17:14
458
原创 myslq常用操作汇总(二)
排序检索数据按照某一列数据进行排序:select name,id from shopping order by id;按照多列数据进行排序: select name,id from shopping order by id,name;(这个排序是有一定的顺序,id在前就先按照id排序,如果id每一项都是唯一的,这个后面的排序规则就没用了)按照降序进行排序:select
2017-07-19 20:59:35
358
原创 mysql常用操作汇总(一)
登录:mysql -u root -p显示所有数据库:show databases;进入workerspace数据库:use workerspace;查询数据库下面的所有表:show tables;查询表结构:(下面三种方式都可以)desc shopping;describe shopping;select columns fro
2017-07-19 20:49:33
362
原创 display中block、inline、inlinke-block的区别和使用方法
display:blockblock元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。block元素可以设置margin和padding属性。display:inlineinline元素不会独占一行,多个相邻的行内元素会排列
2017-07-16 17:43:47
1140
原创 python中==和is的区别,a==b和a is b
在python的条件判断中有这两个表达式:a==b和a is b,现在咱们来分析一下他们的不同,以下咱们通过真实的例子来说明吧:上面这个事例说明,对于一个普通变量,数值相同,它在内存中所占据的位置也相同,python认为它们是同一个变量下面我们再来看一个例子:上面的例子说明了,对一个对象来说,它们分别占据了内容空间的一个位置,但是如果我们把a,b之间通过赋值操作呢,
2017-07-03 21:16:24
5040
原创 ajax消息通信,单文件上传和多文件上传的前后端实现
尝试了两种文件上传的方式,使用的是jquery的ajax请求发起上传,先介绍一下后端的实现:后端使用nodejs,使用的是express框架,定义的请求规则是post一个ajax请求到http://127.0.0.1:3200/uploadfile,代码中对跨域访问做了处理:router.all('/uploadfile', function (req, res) { res.h
2017-06-28 22:36:28
2041
原创 nodejs中for循环和异步调用的那些坑
在nodejs中for循环中是不能嵌套使用异步调用的,就像下面的:我们定义一个post请求,用于接受前端发送来的文件,然后使用for循环对目录下的一些文件依次做一些异步调用事情(使用fs的stat)router.post('/uploadfile', function (req, res) { upload(req, res, function (err) {
2017-06-26 22:24:44
10208
3
原创 教你如何使用webpack打包你的项目
webpack是前端开发中比较常用的打包工具之一,另外还有gulp,grunt。之前没有涉及过打包这块,这里介绍一下使用webpack打包的流程。
2017-06-25 14:37:06
86428
3
原创 jquery节点判断,筛选参数可以是类名,DOM元素
1. hasClass()可以判断一个DOM节点是否包含某个类,如$("button").hasClass("myclass");真实的使用场景可以是这样的:$("button").click(function(){ if ( $(this).hasClass("protected") ){ //do somethings }});2. has
2017-06-21 22:30:32
956
Node.js实战
2018-01-22
Linux内核设计与实现(第三版中文高清带目录)
2018-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人