poll

Django教程:第一个Django应用程序(1部分)

微笑、不失礼 提交于 2019-11-29 02:22:15
请看实例。本教程中将创建一个基本的投票应用。 它由两部分组成:查看投票的结果和投票的公共网站;添加、修改和删除投票的管理站点。 请先确认 Django 已经安装并检查版本号: # python -c "import django ;print( django .get_version())" 1.5.1 本教程基于 Django 1.5.* 和Python 2.x。 寻求帮助: django -users或# django onirc.freenode.net 创建project # django -admin.py startproject mysite 这将在当前目录创建 mysite 目录。注意需要避免使用 python 保留字或 Django 组件名作为project名称。尤其注意不要使用如: django (与 Django 本身会冲突) 或者 test (与 Python 内置的包名会冲突). Project创建的文件如下: # ls -R mysite mysite: manage.py mysite mysite/mysite: __init__.py settings.py urls.py wsgi.py l 外层 mysite根目录是你project容器。对 Django 该目录名并不重要; 你可以重命名。 l manage.py: 可让你以各种方式与

Django教程:第一个Django应用程序(1部分)

自作多情 提交于 2019-11-29 02:21:59
Django 教程:第一个 Django 应用程序(1部分) 请看实例。本教程中将创建一个基本的投票应用。 它由两部分组成:查看投票的结果和投票的公共网站;添加、修改和删除投票的管理站点。 请先确认 Django 已经安装并检查版本号: # python -c "import django ;print( django .get_version())" 1.5.1 本教程基于 Django 1.5.* 和Python 2.x。 寻求帮助: django -users或# django onirc.freenode.net 创建project # django -admin.py startproject mysite 这将在当前目录创建 mysite 目录。注意需要避免使用 python 保留字或 Django 组件名作为project名称。尤其注意不要使用如: django (与 Django 本身会冲突) 或者 test (与 Python 内置的包名会冲突). Project创建的文件如下: # ls -R mysite mysite: manage.py mysite mysite/mysite: __init__.py settings.py urls.py wsgi.py l 外层 mysite根目录是你project容器。对 Django 该目录名并不重要;

Django入门:第一个Django应用

老子叫甜甜 提交于 2019-11-29 02:21:37
对Django这个 框架 感 兴趣 好久了,却一直懒于 研究 学习 ,现在跟随官网的 教程 跑一遍,学学Django同时也 继续 学学 Python 。 在开始之前, 我们 先把Python和Django这个框架安装好。 官网: https://www.djangoproject.com/ 下载 :http://www.djangoproject. com /download/1.3/tarball/ 由于兼容性 问题 ,Django并不支持Python3+,只支持版本2.4到2.7,所以如果你的 系统 (本人使用的是SUSE Linux Enterprise Server 10 SP3,以下都是以这个系统为例)没有安装Python,或者版本不 符合 ,那么就先要安装一个合适的版本,我使用的是2.7.2版本: 1 wget http://www.python.org/ ftp /python/2.7.2/Python-2.7.2. tar .bz2 2 tar jxvf Python-2.7.2. tar .bz2 3 cd Python-2.7.2 4 ./configure 5 make && make install 下载完后运行python setup.py install进行安装: 1 wget http://media.djangoproject.com

django实例:创建你的第一个应用投票系统(2)数据库的安装

北慕城南 提交于 2019-11-29 02:21:21
在上一篇中 django实例:创建你的第一个应用投票系统(一) 已经介绍基本的功能,并已经启动服务了。这一节介绍数据库相关的东东。 首页打开mysite/settings.py配置文件, 设置数据库 打到DATABASES ENGINE:这个是所要使用的数据库类型,如 postgresql、sqlite、mysql等。如下设置: django.db.backends.mysql NAME:数据库的名称或者如果你使用的是sqlite的话就是sqlite的路径。 USER :数据库的用户名 PASSWORD :数据库密码 HOST:数据库地址 设置应用APP 找到INSTALLED_APPS 在这里你看到的这些是django默认的应用 django.contrib.auth – 用户认证应用 django.contrib.contenttypes – 内容类型应用 django.contrib.sessions – session管理应用 django.contrib.sites – 管理多个站点的应用 django.contrib.messages – 消息处理 django.contrib.staticfiles – 静态文件应用 下面再介绍一个命令: syncdb 这个命令会根据安装的app应用生成相应的数据库表结构、索引等信息。执行方式如下: python manage.py

AttributeError: module 'select' has no attribute 'epoll'

岁酱吖の 提交于 2019-11-28 22:53:38
AttributeError: module 'select' has no attribute 'epoll'   今天乌班图镜像莫名其妙损坏了,只好用Windows写并发TCP服务器的代码。运行后,结果发现epoll属性不存在!!!!我想着在linux下跑的好好的代码怎么在Windows就出现epoll属性不存在的错误呢?   首先肯定排除拼写错误。点进select模块,crtl+f查找关键词后再三确认没有,epoll()这个函数。   那会不会是系统的原因呢,马上拿起官方手册看看   果真epoll()只试用于Linux 2.5+,并不支持其他系统。epoll机制是Linux内核的一种内核微调机制,为了处理大量文件描述符而诞生。 来源: https://www.cnblogs.com/levylovepage/p/11432111.html

网络IO

霸气de小男生 提交于 2019-11-28 21:36:27
大并发服务器框架 大并发服务器设计目标 高性能(High Performance). 要求编写出来的服务器能够最大限度发挥机器性能, 使得机器在满负荷的情况下能够处理尽可能多的并发请求, 对于大量并发请求能够及时快速做出响应 高可用(High Availability). 要求服务器7*24小时服务, 故障转移 伸缩性(Scalability). 服务器具有良好框架, 分层设计, 业务分离, 并且能够进行灵活部署 分布式: 负载均衡 分布式存储 分布式计算 C/S结构: 任何网络系统都可以抽象为C/S结构(客户端, 服务端) 网络I/O+服务器高性能编程技术+数据库 超出数据库连接数: 数据库并发连接数10个, 应用服务器这边有1000个并发请求, 将会有990个请求失败. 解决办法: 增加一个中间层DAL(数据库访问控制层), 一个队列进行排队 超出时限: 数据库并发连接数10个, 数据库1秒钟之内最能处理1000个请求, 应用服务器这边有10000个并发请求, 会出现0-10秒的等待. 如果系统规定响应时间5秒, 则该系统不能处理10000个并发请求, 这时数据库并发能力5000, 数据出现瓶颈. 数据库瓶颈缓解 提高数据库的并发能力 队列+连接池(DAL) 主要逻辑挪到应用服务器处理, 数据库只做辅助的业务处理. 在数据库上进行计算能力或处理处理逻辑不如操作系统效率高. --

HillCrest Sensor HAL

送分小仙女□ 提交于 2019-11-28 20:31:29
1. 抽象定义 Google为Sensor提供了统一的HAL接口,不同的硬件厂商需要根据该接口来实现并完成具体的硬件抽象层,Android中Sensor的HAL接口定义在:hardware/libhardware/include/hardware/sensors.h, 其中定义了几个数据类型: sensor_t - 包含传感器相关信息 sensors_module_t - 传感器硬件模块类型 sensors_event_t - 传感器事件 sensors_poll_device_t - 传感器抽象设备类型 HAL实现必须完成下面的函数接口: get_sensors_list - 返回所有传感器的列表 activate - 启动或停止传感器 batch - 设置传感器的参数,如采样率和最大报告延迟 setDelay - 仅用于 1.0 版本的 HAL,设置指定传感器的采样率 flush - 刷写指定传感器的 FIFO 并在完成后报告刷写完成事件 poll - 返回可用的传感器事件 1.1 sensor type sensor type的定义如下: [sensors-base.h] enum { SENSOR_TYPE_META_DATA = 0, SENSOR_TYPE_ACCELEROMETER = 1, SENSOR_TYPE_MAGNETIC_FIELD = 2, SENSOR

初探nodejs事件循环机制event loop

烈酒焚心 提交于 2019-11-28 18:22:57
nodejs的特点 nodejs 具有事件驱动和非阻塞I/O的特点。 事件驱动是指nodejs把每一个任务当成事件来处理。 非阻塞I/O是 指 nodejs遇到I/O任务时,会从线程池调度单独的线程处理I/O操作,不会阻塞主线程。 事件循环原理 Node.js 在主线程里维护了一个 事件队列, 当接到请求后,就将该请求作为一个事件放入这个队列中,然后继续接收其他请求。 当主线程空闲时(没有请求接入时),就开始循环事件队列,检查队列中是否有要处理的事件,这时要分两种情况:   如果是非 I/O 任务,就亲自处理,并通过回调函数返回到上层调用;   如果是 I/O 任务,就从 线程池 中拿出一个线程来处理这个事件,并指定回调函数,然后继续循环队列中的其他事件。 当线程中的 I/O 任务完成以后,就执行指定的回调函数,并把这个完成的事件放到事件队列的尾部,等待事件循环,当主线程再次循环到该事件时,就直接处理并返回给上层调用。 流程图 每次循环的六个阶段   timers阶段:这个阶段执行定时器队列中的回调,如 setTimeout() 和 setInterval() 。   I/O callbacks: 这个阶段执行几乎所有的回调。但是不包括close事件,定时器和 setImmediate() 的回调。   idle, prepare: 这个阶段仅在内部使用,可以不必理会。  

Epoll简介以及例子

∥☆過路亽.° 提交于 2019-11-28 13:48:04
第一部分:Epoll简介 问题 : S elect,Poll和Epoll的区别 答案 : Epoll和Select的区别 1. 遍历方式的区别 。select判断是否有事件发生是遍历的,而epoll是事件响应的,一旦句柄上有事件来了,就马上选出来。 2. 数目的区别。 select一般由一个内核参数(1024)限制了监听的句柄数,但是epoll通常受限于打开文件的数目,通常会打得多。 3. epoll自身,还有两种触发方式。 水平触发和边缘触发。边沿触发的效率更高(高了不少,但是编程的时候要小心处理每个时间,防止漏掉处理某些事件)。 Select select()系统调用提供一个机制来实现同步多元I/O: #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select ( int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); FD_CLR( int fd, fd_set *set); FD_ISSET( int fd, fd_set *set); FD_SET( int fd, fd_set *set); FD_ZERO(fd_set *set); 调用select()将阻塞

一个简单的epoll使用例子

对着背影说爱祢 提交于 2019-11-28 13:47:46
核心代码,所有代码在这里 下载 #include "unixnet.h" #include "chat.h" #include "sys/epoll.h" /** * 改进说明:使用epoll进行事件回调,多用户可以处于输入命令状态(不再阻塞在登陆处) */ int main (int argc, char *argv[]) { int listen_fd; socklen_t cli_len; struct sockaddr_in cli_addr,serv_addr; int ret,flags; int re_use_addr=1; char recv_buf[MAXLINE]; int i; //epoll 描述符 int efd; struct epoll_event event; struct epoll_event events[MAXUSERS]; //初始化槽位 for(i=0; i<MAXUSERS; i++) { chater[i].slot_status =SLOT_FREED ; chater[i].sock_fd =-1; chater[i].cmd .cmd_type =-1; } /*AF_INET指定ipv4,SOCK_STREAM制定流模式,0为tcp*/ listen_fd = socket(AF_INET,SOCK_STREAM,0); if