源码
https://blog.csdn.net/wuyuxing24/article/details/48758927
安装 sqlite3
要安装sqlite3,可以在终端提示符后运行下列命令:
sudo apt-get install sqlite3
检查版本
sqlite3 -version
#sqlite3 -version
3.11.0 2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5a8c282430a5f
SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说
没有独立的维护进程,所有的维护都来自于程序本身。
在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不存在的时候
连接对象会自动创建数据库文件;如果数据库文件已经存在,则连接对象不会再创建
数据库文件,而是直接打开该数据库文件。
连接对象可以是硬盘上面的数据库文件,也可以是建立在内存中的,在内存中的数据库
执行完任何操作后,都不需要提交事务的(commit)
创建在硬盘上面: conn = sqlite3.connect('c:\\test\\test.db')
创建在内存上面: conn = sqlite3.connect('"memory:')
https://www.cnblogs.com/hongten/p/hongten_python_sqlite3.html
redis
另外,ConnectionPool还支持通过URL来构建。URL的格式支持有如下3种:
redis://[:password]@host:port/db
rediss://[:password]@host:port/db
unix://[:password]@/path/to/socket.sock?db=db
这3种URL分别表示创建Redis TCP连接、Redis TCP+SSL连接、Redis UNIX socket连接。我们只需要构造上面任意一种URL即可,其中password部分如果有则可以写,没有则可以省略。下面再用URL连接演示一下:
url = ‘redis://:foobared@localhost:6379/0’
pool = ConnectionPool.from_url(url)
redis = StrictRedis(connection_pool=pool)
Python操作Redis,你要的都在这了!
https://cloud.tencent.com/developer/article/1151834
mysql
Ubuntu 安装mysql和简单操作
ubuntu上安装mysql非常简单只需要几条命令就可以完成。
1. sudo apt-get install mysql-server
2. apt-get isntall mysql-client
3. sudo apt-get install libmysqlclient-dev
安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功:
sudo netstat -tap | grep mysql
通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
登陆mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
http://www.cnblogs.com/zhuyp1015/p/3561470.html
线程池原理并用C语言实现
线程池的目的是为了减少线程创建、销毁所带来的代价,当有非常多的任务需要独立的线程去做时,可以使用线程池,从线程池中获取线程来处理一个个任务。
本文就来实现一个线程池。实现环境为Linux操作系统,采用C语言实现pthread线程的线程池。
线程分配设计:
线程池中的每个子线程都是等价的。我们用线程信号量来控制子线程和任务的分配问题。设置一个信号量来表示任务队列中的任务资源。每个子线程都会处于死循环中,每轮循环首先等待一个任务资源信号量,当等到之后,互斥地从任务队列中摘取一个任务结点,任务结点中记录着该任务所要执行的函数指针及其参数。之后子线程开始执行该任务。执行完之后释放一个信号量并进入下一轮循环。当没有信号量小于1时,子线程将会阻塞。
因此一个任务由哪一个线程来执行,这要看哪个线程能够获取到对应的信号量资源。
具体实现:
任务队列由双向链表构造,每个节点包含一个任务的函数指针和参数指针。
一般一个简单的线程池有下列组件:
线程池管理器(ThreadPoolManager):用于创建并管理线程池
工作线程(WorkThread): 线程池中线程
任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。
任务队列:用于存放没有处理的任务。提供一种缓冲机制。
我们知道应用程序创建一个对象,然后销毁对象是很耗费资源的。创建线程,销毁线程,也是如此。因此,我们就预先生成一些线程,等到我们使用的时候在进行调度,于是,一些"池化资源"技术就这样的产生了。
用C写一个web服务器(二) I/O多路复用之epoll
https://www.imooc.com/article/details/id/22260
int socket(int domain, int type, int protocol);
的第三个参数
这里指使用tcp协议
根据
include/winsock2.h文件
有以下定义
/*
- Protocols
/
#define IPPROTO_IP 0 / dummy for IP /
#define IPPROTO_ICMP 1 / control message protocol /
#define IPPROTO_IGMP 2 / internet group management protocol /
#define IPPROTO_GGP 3 / gateway^2 (deprecated) /
#define IPPROTO_TCP 6 / tcp /
#define IPPROTO_PUP 12 / pup /
#define IPPROTO_UDP 17 / user datagram protocol /
#define IPPROTO_IDP 22 / xns idp /
#define IPPROTO_ND 77 / UNOFFICIAL net disk proto /
#define IPPROTO_RAW 255 / raw IP packet */
#define IPPROTO_MAX 256
所以 参数protocol用来指定socket所使用的传输协议编号可以有以上几种
网络编程IPPROTO_IP和IPPROTO_TCP
socket函数:
int socket(int domain, int type, int protocol); 中的protocol 定义如下:
#define IPPROTO_IP 0 /* dummy for IP /
#define IPPROTO_ICMP 1 / control message protocol /
#define IPPROTO_IGMP 2 / internet group management protocol /
#define IPPROTO_GGP 3 / gateway^2 (deprecated) /
#define IPPROTO_TCP 6 / tcp /
#define IPPROTO_PUP 12 / pup /
#define IPPROTO_UDP 17 / user datagram protocol /
#define IPPROTO_IDP 22 / xns idp /
#define IPPROTO_ND 77 / UNOFFICIAL net disk proto /
#define IPPROTO_RAW 255 / raw IP packet */
#define IPPROTO_MAX 256
TCP/IP协议族把所有的TCP/IP系列协议归类到四个抽象层中
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU
具体结构如下:
HTTP等(应用层)
|
TCP/UDP (运输层)
|
IP(链路层)
|
接口层
book
02/05/2017 12:00上午 目录 Android编程权威指南(第1版)+(第2版)PDF+源码
02/11/2017 12:00上午 目录 Head First设计模式PDF高清完整中文版
02/16/2017 12:00上午 目录 Java 8实战(Java 8 in Action) 高清晰PDF中文完整版+随书源码
02/13/2017 12:00上午 目录 JavaEE开发的颠覆者 Spring Boot实战 PDF清晰完整版+随书源码
02/20/2017 12:00上午 目录 Java多线程设计模式(PDF清晰扫描版带完整书签)+源代码
02/12/2017 12:00上午 目录 Linux高性能服务器编程清晰PDF+源码
02/23/2017 12:00上午 目录 Redis入门指南(第2版)
02/21/2017 12:00上午 目录 TCP-IP高效编程:改善网络程序的44个技巧 PDF中文版带书签
02/01/2017 12:00上午 目录 Ubuntu 16.04下安装基于Faeanza蓝色图标主题
02/02/2017 12:00上午 目录 Ubuntu 16.04下安装蓝色图标主题Obsidian
02/15/2017 12:00上午 目录 第一行代码 Android(第2版)PDF高清晰完整版+源码
02/28/2017 12:00上午 目录 疯狂Java实战演义 高清晰PDF+光盘源码
02/11/2017 12:00上午 目录 基于Oracle的SQL优化(完整版) 崔华 PDF扫描版
02/01/2017 12:00上午 目录 剑指Offer 名企面试官精讲典型编程题清晰PDF+源码