自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 虚拟化与容器化关系

以 Docker 为代表的容器技术一度被认为是虚拟化技术的替代品,然而这两种技术之间并不是不可调和的。作者分别列举了容器技术以及虚拟化技术的优缺点,并提出将两者结合取长补短的解决方案。容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。为了能达到这种效果,容器技术使用了一系列的系统级别的机制诸如利用Linux na

2016-08-31 18:15:53 7299

原创 云计算,虚拟化技术

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。通过各种互补的服务提供了基础设施即服务(IaaS)的解决

2016-08-31 18:09:36 3305

原创 OpenStack简介

OpenStack简介  OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集。其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。  以下是OpenStack的重要构成部分:Nova - 计算服务Swift - 对象存储服务Glance - 镜像服务Keystone - 

2016-08-31 18:09:01 913

原创 ubuntu设置 SSH 通过密钥登录

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公

2016-08-31 17:06:33 48757 5

原创 Django模板语言

模板系统基础Django模板是一个string文本,它用来分离一个文档的展现和数据模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现通常模板用来输出HTML,但是Django模板也能生成其它基于文本的形式让我们来看看一个简单的模板例子:[java] view plain copy  Ordering not

2016-08-30 16:15:34 1702

原创 jQuery学习笔记

1. jQuery 是如何工作的1.1. 开始使用jQueryjQuery 本身只有一个 js 文件,所以,要使用它,就和使用其它的 js 文件一样,直接将它引入就可以使用了。type="text/javascript" src="jquery-1.8.3.js">但是,要注意一点,因为 jQuery 大部分功能需要根据文档的 DOM 模型

2016-08-30 14:42:55 1106

原创 pyenv版本管理

pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等安装 $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'ex

2016-08-30 14:28:22 768

原创 Curl发送get/post

Curl是Linux下一个很强大的http命令行工具,其功能十分强大。一、CURL对HTTP的常规访问1. 访问网站$ curl http://www.linuxidc.com回车之后,www.linuxidc.com 的html 显示在屏幕上了 2. 保存页面用curl option: -o$ curl -o page.html http:

2016-08-30 14:17:01 399

原创 The little redis book中文版

\thispagestyle{empty} \changepage{}{}{}{-0.5cm}{}{2cm}{}{}{} \\clearpage \changepage{}{}{}{0.5cm}{}{-2cm}{}{}{}关于此书许可证《The Little Redis Book》是经由Attribution-NonCommercial 3.0 Unported l

2016-08-30 11:21:15 2416

原创 浅谈 Gevent 与 Tornado

还是前几月的时候,几乎在同一时间,自己接触到了 Gevent 和 Tornado 这两个已经不新的东西,那时那个 思绪混乱啊!似乎都支持异步,似乎都是无阻塞(non-blocking),性能似乎都好到个不行 (猛击)。知道两者虽是单线程, 但基于无阻塞的特性,战斗力那个是嗖嗖地上涨,运用得当的话,hold住上K个连接不是问题。虽然很感兴趣,虽然完全没弄清楚两者内里的实质,但为了完成工作,略略了解了...

2016-08-30 10:05:59 2602 1

原创 使用django-compressor压缩静态文件

在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速度。django-compressor的作用就是将静态文件压缩合并成一个文件,不仅减少了网站的请求次数,还能节省网络带宽。本文分为两部分,第一部分介绍settings文件相关配置对静态文件的影响,然后再讨论Compressor的如何使用。如果你对s

2016-08-29 17:27:46 3027 1

原创 nginx服务器访问优化

使用CDN对于公有的静态资源,比如jquery.min.js、highlight.min.js等文件全部使用CDN,提高网站的访问速度。合并静态文件整个网站的css和js文件总共超过10个,如果等浏览器全部加载完这些文件大概需要3秒以上,如果是比较的网络环境体验可能更糟糕。因此在部署的时候把多个CSS文件合并成一个,JS合并的一个文件,使用的工具是Django-Compre

2016-08-29 17:22:06 543

原创 Python“隐藏”特性

本文整理自Stack Overflow上的热门问答hidden features of python,早期有人做过类似的整理,但是内容比较旧而且比较粗糙,因此笔者在原文基础上加入自己的一些理解,另外那些高质量的评论也引入进来了。总之,这是一篇用心之作,希望你可以喜欢。链式比较操作>>> x = 5>>> 1 10True>>> 10 20 False>>> x 10 10 1

2016-08-29 16:47:17 2025

原创 一次完整的HTTP请求

一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式。无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准来实现的话,那么它一定是通用的。HTTP请求格式HTTP请求格式主要有四部分组成,分

2016-08-29 16:37:27 1548

原创 python函数式编程-----序列处理函数:map(),filter(),reduce()

map(function, sequence[, ...]) → list创建一个新的列表,函数作用于原来列表中的每个元素>>> map( int, [ "10", "12", "14", 3.1415926, 5L ] )[10, 12, 14, 3, 5]这个函数等效下面这个定义:def map(function, sequence): return [fu

2016-08-29 16:29:39 537

原创 Gevent简介

介绍gevent 是一个python网络框架,对应Java的netty框架,使用greenlet提供异步API,基于libevent ,它为各种并发和网络相关的任务提供了整洁的API.快速基于libevent的event loop基于greenlet的轻量级执行单元重用python标准api(event,queue)协同的socket和ssl模块使用标准库和第三方模块写标准阻塞so

2016-08-29 16:18:04 4119

原创 python contextManager详解

contextlib.contextmanager(func)This function is a decorator that can be used to define a factory function for with statement context managers, without needing to create a class or separate __ent

2016-08-29 16:16:00 1761

原创 Linux进程间通信

详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果你的确对在Linux下编

2016-08-28 17:25:35 1058

原创 Python调用C/C++动态链接库

Python调用C/C++动态链接库的需求在自动化测试过程中,难免会遇到语言混合使用的情况,这不,我们也遇到了。初步决定采用Robot Framework作为自动化测试框架后,其支持Java和Python,而Python作为主流的语言,怎么能放弃使用它的机会^_^。 然而产品采用是古老90年代开发的C/S结构,因为古老,当时也没有考虑到对产品的测试进行自动化,Client端并没有预留CLI

2016-08-28 17:24:17 1102

原创 ajax中的跨域请求及原理

JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax

2016-08-25 15:36:17 7924

原创 分布式Web服务器架构

最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易

2016-08-25 12:58:32 383

原创 ngnix反向代理详解

1.1 反向代理初印象反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发。1.2 反向代

2016-08-25 11:39:00 3874

原创 python中and-or语法

一、and:在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。>>> 'a' and 'b''b'>>> '' and 'b'''>>> 'a' and 'b' and 'c''c'在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回

2016-08-25 09:01:25 5192

原创 正则表达式 - 语法

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一

2016-08-24 17:27:13 1262

原创 在Django中要求https连接

在对安全较高的网站中,我们要求连接必须使用ssl加密,除了在如nginx这样的HTTP服务器中做相关配置以外,可能还会涉及在Django中做安全连接的要求,即将用户的http连接重定向到https。有以下一些方法可以满足相关需求:一、中间件的使用:在Django中很容易编写自定义中间件以在请求到达视图之前被调用。下面是一个中间件的示例,其可以检测一个请求是否要求安全的连接,如果

2016-08-24 17:19:57 6502 1

原创 Django 数据库访问性能优化

1. 使用标准的数据库优化技术:在进行Django数据库访问性能优化之前,首先应该使用标准的数据库技术对其进行优化,比如给字段加索引,通过使用 django.db.models.Field.db_index 来给一个Django模型类的字段加索引,设置这个属性字段的Field.db_index=True。注:django对model中的fk和unique = True的字段

2016-08-24 17:16:59 5239 1

原创 软件工程中的高内聚低耦合

定义高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。概念耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息内聚性:又称块内联系。指模块的

2016-08-24 17:04:31 2670

原创 漫谈SOA(面向服务架构)

面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西。我简单的认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点。这里不再讨论这些服务定义服务与服务之间的通信协议(像WSDL等等),我并不认为这是服务化的本质所在。即使Java语言用RMI进行服务与服务之间的通信也仍然不违背服务化的宗旨。一.为什么需要面向服务架构        1.我觉得面向服务的根本好处是便于

2016-08-24 16:50:48 407

原创 django执行原生sql

django可直接执行自定义SQL,直接执行UPDATE, INSERT, DELETE,等操作流程如下:导入 form django.db import connection,transactiondjango.db.connection:代表默认的数据库连接django.db.transaction:代表默认数据库事务(transaction)connection.

2016-08-23 21:19:19 1365

原创 Linux下5种IO模型的小结

概述    接触网络编程,我们时常会与各种与IO相关的概念打交道:同步(Synchronous)、异步(ASynchronous)、阻塞(blocking)和非阻塞(non-blocking)。关于概念的区别看到一位朋友(链接)打了一个比较形象的比喻:你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能

2016-08-23 21:15:01 522

原创 使用redis做MySQL的缓存

1.脚本同步:自己写脚本将数据库数据写入到redis/memcached。这就涉及到实时数据变更的问题(mysql row binlog的实时分析),binlog增量订阅Alibaba 的canal ,以及缓存层数据 丢失/失效 后的数据同步恢复问题。2.业务层实现:先读取nosql缓存层,没有数据再读取mysql层,并写入数据到nosql。nosql层做好多节点分布式(一

2016-08-23 21:09:56 7929

原创 BTREE,B-TREE,B+TREE,B*TREE

B树       即二叉搜索树:       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;       如:              B树的搜索,从根结点开始,如果查询的关键字与结点的关

2016-08-23 21:03:50 349

原创 mysql索引总结----mysql 索引类型以及创建

关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTR

2016-08-23 21:02:51 825

原创 MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问

2016-08-23 21:01:18 952

原创 详解Python中的下划线

本文将讨论Python中下划线(_)字符的使用方法。我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已。单下划线(_)通常情况下,会在以下3种场景中使用:1、在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果。这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用。Python12345678910>>> _

2016-08-22 15:26:24 1295

原创 Python __getattribute__ vs __getattr__ 浅谈

相信大家看到这个标题的时候也会立马在脑海里面过一遍,觉得大多数时候我们并不太需要关注getattribute和getattr的一些细节(至少我自己吧:)),一般情况下消费我们自定义的类的时候,我们对类的结构都了解,不会刻意偏离,造成一些属性访问的错误。不过作为一个有好奇心有追求有气质的python宝宝,怎么可能不稍稍研究一下呢。好吧,其实是在github上读到一个开源项目sinaweibo

2016-08-22 14:55:57 1547

原创 12步轻松搞定python装饰器

搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数相关语法的一些特点。我没法让装饰器变得简单,但是通过一步步的剖析,我也许能够让你在理解装饰器的时候更自信一点。因为装饰器很复杂,这篇文章将会很长(自己都说很长,还敢这么多废话blablabla...前戏就不继续翻译直接省略了)1. 函数在python中,函数通过def关键字、函数名和可选的参数列表定义。

2016-08-22 14:51:34 372

原创 Docker Compose—简化复杂应用的利器

Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。1. 安装Docker和Compose12345678910# 当前最新的Docker是1.6.2,Compose为1.2.0curl -s https://get.docker.io/ubuntu/ | s

2016-08-19 16:02:32 367

原创 python中__future__模块

Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xx

2016-08-19 15:56:58 675

原创 python中__init__.py

一、__init__.py的作用:        在使用PyDev插件,在Eclipse创建package时,会自动在package所在的目录自动创建一个__init__.py文件,且文件内容为空。这个文件有什么有呢?        __init__.py的作用有如下几点:       1. 相当于class中的def __init__(self):函数,用来初始化模块。     

2016-08-19 15:54:36 1400

空空如也

空空如也

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

TA关注的人

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