0%

简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker是基于Go语言实现的云开源项目

Docker 的核心理念是 Build, Ship, and Run Any App, Anywher,即一次封装,到处运行。

阅读全文 »

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

阅读全文 »

有些时候我们需要在不启动django的时候通过ORM操作数据,所以我们就需要配置离线脚本

1
2
3
4
5
6
7
8
9
10
11
12
import os
import sys
import django

# 获取项目的根目录
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 添加到系统环境变量
sys.path.append(base_dir)
# 加载项目的配置文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "项目.settings")
# 启动django
django.setup()

  1. 回调模式编码的复杂度高,
  2. 同步编码的并发性不高,
  3. 多线程编程需要线程间同步, 通过lock机制,会影响效率,

所以我们就需要采用同步的方式去编写异步的代码,

1
2
3
4
5
6
7
def get_url(url):
# 我们获取网页信息是耗时操作,我们需要在这里等待
html = get_html(url)# 所以我们希望在这里能跳出函数,去做一下别的事情,等获取到了数据再回来,
parse_html(html)

def get_next(url):
pass

这样我们也就不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

所以就有了协程

阅读全文 »