从开源镜像站下载Android系统源码

国内可以用来下载Andorid源码的开源镜像站有: 科大开源镜像站 清华开源镜像站 Tips: 不同地区(或不同运营商)的网络,从这两个镜像站下载代码的速度……

阅读全文

Raspberry Pi 使用科大镜像源

科大开源镜像站提供了raspbian的软件包镜像,国内的用户可以选择改用科大镜像站作为更新源。

科大镜像站官方已经提供了一份帮助文档,用于指导用户如何使用科大镜像更新raspbian。 但这份文档是基于 wheezy 的,最新的jessie版可以参考本文。

具体做法

修改之前,最好先备份原始的配置文件。例如,使用如下命令将两个源配置文件拷贝到HOME目录。

cp /etc/apt/sources.list ~
cp /etc/apt/sources.d/raspi.list ~

或者直接在原来配置文件的基础上修改,但将原有的配置全部注释掉(使用#注释)。

修改 source.list

更新后的/etc/apt/sources.list

#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

# use ustc mirror:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi

实际修改是,将mirrordirector.raspbian.org替换为mirrors.ustc.edu.cn/raspbian/

……

阅读全文

Raspberry Pi 3 无显示器 安装指南

本文记录了——在没有显示器、键盘的条件下,如何通过网线为树梅派(后面简称pi)安装系统。

实验环境如下图。

raspberrypi-rj45-laptop

下载系统镜像

官网的下载页面可以找到pi的系统镜像。

官方首推新手使用的是NOOBS和raspbian,而NOOBS和Raspbian都提供了完整版和Lite版。

NOOBS的完整版是包含了Raspbian,可以离线安装raspbian。Lite版仅有一个系统安装程序,需要连接网络才能安装具体的操作系统。

Raspbian的完整版是一个完整的桌面镜像,Lite版预装的软件包要少一些(联网后可以继续安装)。

我下载的是RASPBIAN JESSIE

下载完成后解压zip文件,将会得到一个img文件。

……

阅读全文

NGINX的并发模型

Apache 的并发模型

Apache 的早期版本的并发模型是 one process per connection,也是早期Unix服务端的主流模型: 主进程accept阻塞在listen fd上,有新的HTTP请求到来时(accept返回connection fd),主进程fork一个服务进程, 专门为该连接服务,HTTP会话结束退出此进程。

Apache 后来的版本,改用one thread per connection,改用单独一个线程为客户端连接提供服务。 这个模式和之前版本的一样,listen fd和connection fd用的都是阻塞模式。

使用阻塞模式的好处是,逻辑清晰,编程模型简单。process per connection的好处还有可以保证客户端连接的稳定性 (据说早期Unix的某些版本上多进程模型并不稳定),同时也保证了安全性(即使客户端通过hack手段在connection上拿到了shell也只能控制服务进程)。

Tomcat 使用的并发模型也是 one thread per connection。开发环境下,在servlet或jsp代码中上打断点, 在有超过一个浏览器访问有断点的servlet时,能够看到Tomcat为每个连接创建了一个线程。

这种模型下,单个服务器的服务能力主要受到内存的限制,因为每创建一个进程/线程都要消耗一定数量的内存(MB级别)。

NGINX 的并发模型

NIGNX 支持 single 模式 和 master + worker 模式。

NGINX master + worker 模式

NGINX通常工作在master + worker模式下,master和worker都是单线程的进程,用户可以通过增加worker进程数实现提高多核CPU的利用率。 同时,这种每个进程仅有一个线程的模型,使得不需要时刻考虑数据的保护问题(如果是多线程则需要考虑)。

来自Andrew Alexeev的一张图: NGINX architecture

master 进程

NGINX的master进程,负责解析配置文件,并启动其他角色的进程,如启动worker,cache manager。

启动完成其他进程之后,master进程仅起监视作用(相当与monitor角色),后面用户可以通过singaller角色的nginx向master发命令, master再通知它创建起来的其他进程。

worker 进程

worker进程是实际服务客户的进程。包括接受新连接(accept),相应连接上的消息(read/write).

singaller 进程

singaller进程仅仅是一个向master进程发送信号的工具进程。 通过向master发生特定消息,能够让: * master/worker完成当前服务后,正常退出。 * master进程重新加载配置文件,或者重启worker。 * 重新打开log 文件。

cache manager

可以做 HTTP、文件缓存,即对同一个静态文件的请求进行缓存。

……

阅读全文

docker 入门指南

本文是实践官方“Get Started”的一个记录,由于我的桌面系统是Debian 8,本文的操作仅确保在 Debian 8 上正确。 指南链接(Linux版): https://docs.docker.com/linux/

安装 Docker

官方脚本安装

如果没有 curl ,先安装 curl

sudo apt-get update
sudo apt-get install curl

用curl下载安装脚本并运行:

curl -fsSL https://get.docker.com/ | sh

安装成功后会提示你,使用如下命令:

sudo usermod -aG docker xu

将当前用户(xu)加到docker组,此后运行docker可以不加sudo。另外,让当前用户的组别改变需要重新登录(先log out再log in)。

验证

bash

docker run -i -t debian docker

可以用docker创建一个交互的bash会话,在新的会话中运行ps -ef:

xu@debian:~$ docker run -i -t debian bash
root@d99cc11447c7:/#
root@d99cc11447c7:/#
root@d99cc11447c7:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  2 15:32 ?        00:00:00 bash
root         8     1  0 15:32 ?        00:00:00 ps -ef

可以看到,仅有两个进程,而且pid都非常小。这说明,这个会话环境已经与外界隔离了。

……

阅读全文

NGINX 源码安装

NIGNX 是由 Igor Sysoev 开发的一个 Web 服务器。 官网:http://nginx.org/

下载页面: http://nginx.org/en/download.html

下载 NGINX

以 1.8.1 版本为例:

wget http://nginx.org/download/nginx-1.8.1.tar.gz

下载依赖库

NGINX必须依赖zlib和pcre, (若想让nginx支持HTTPS协议,还需OpenSSL)

NGINX 使用zlib进行gzip编/解码(压缩/解压缩), zlib: http://zlib.net/

下载 zlib-1.2.8:

wget http://zlib.net/zlib-1.2.8.tar.gz

NGINX 使用pcre作正则表达式匹配, pcre: http://pcre.org/

ftp: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

下载 pcre-8.38:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

解压

tar xzvf nginx-1.8.1.tar.gz

tar xzvf zlib-1.2.8.tar.gz

tar xzvf pcre-8.38.tar.gz

编译

cd nginx-1.8.1/

./configure --with-pcre=../pcre-8.38 --with-zlib=../zlib-1.2.8

安装

sudo make install
……

阅读全文