long8:05访谈数据库,诉求json数据深入分析
分类:long8

  按此措施,对“剩余的数额”继续扩充下一趟,则一定能够分明这几个多余数量的最大值放在剩余地点的最右面。

逻辑图

long8 1

web服务器

传统的c/s架构,请求的过程是
客户端 > 服务器 
服务器 > 客户端
服务器就是:1.接收请求 2.处理请求 3.返回响应

web框架层

HTTP的动态数据交给web框架,例如django遵循MTV模式处理请求。
HTTp协议使用url定位资源,urls.py将路由请求交给views视图处理,然后返回一个结果,完成一次请求。
web框架使用者只需要处理业务的逻辑即可。

假若将叁遍通讯转化为“对话”的经过

Nginx:hello wsgi,作者刚收到三个呼吁,你筹划下然后让django来管理啊

WSGI:好的nginx,小编当即安装意况变量,然后把恳求提交django

Django:多谢WSGI,作者管理完央浼立时给你响应结果

WSGI:好的,作者在等着

Django:解决啦,麻烦wsgi吧响应结果传递给nginx

WSGI:太棒了,nginx,响应结果请收好,已经依照必要传递给你了

nginx:好滴。我把响应交给顾客。合营欢乐

前一段时间一直纠缠unity连接数据库央浼数据,浪费了重重时辰。后来改用http诉求,顺遂得到数量,然后就起头于剖判数据,就有了那篇小说

数据库连串

先是选择三个关全面据库。目前附近使用的关周全据库也就这么二种:

二、 配置redis:

配置消息在/etc/redis/redis.conf下,展开sudo vi /etc/redis/redis.conf。

主干配置选项:

绑定ip:bind 127.0.0.1

端口号:port 6379

是还是不是以守护进度运维:daemonize yes  必得改为yes

数据库文件:dbfilename dump.db  

数据库文件存储路线:dir /var/lib/redis  可改可不改,改的话提前创建好文件夹

日记文件:logfile /var/log/redis/redis-server.log  必定要改,提前创立好文件夹

数据库,默认有16个:database 16

主从复制:slaveof

配备小结:首要退换两块:1,守护进程;2.日志文件路线

 

supervisor

supervisor 是依靠 python 的天职管理工科具,用来机关运维各类后台义务,当然你也能一贯动用 nohup 命令使职务自动后台运维,但假诺要重启任务,每便都本人手动 kill 掉任务进程,那样很麻烦,况且只要程序不当产生进程退出的话,系统也无计可施活动重载职责。

此处邓超(Deng Chao)要陈设基于virtualenv的supervisor

鉴于supervisor在python3下不能够利用,因而只好用python2去下载!!!!!!

#注意此时已经退出虚拟环境了!!!!!
yum install python-setuptools
easy_install supervisor

通过命令生成supervisor的配支文件

echo_supervisord_conf > /etc/supervisord.conf

然后再/etc/supervisord.conf末尾增添上如下代码!!!!!!

[program:my]
#command=/opt/venv/bin/uwsgi --ini  /etc/uwsgi_nginx.ini  #这里是结合virtualenv的命令 和supervisor的精髓!!!!
command= /home/venv/bin/uwsgi --uwsgi 0.0.0.0:8000 --chdir /opt/mysite --home=/home/venv --module mysite.wsgi
#--home指的是虚拟环境目录  --module找到 mysite/wsgi.py

directory=/opt/mysite
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

最终运转supervisor,完结uWSGI运转django,nginx反向代理

supervisord -c /etc/supervisord.conf #启动supervisor
supervisorctl -c /etxc/supervisord.conf restart my  #重启my项目
supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]

 重新加载supervisor

一、添加好配置文件后

二、更新新的配置到supervisord    

supervisorctl update
三、重新启动配置中的所有程序

supervisorctl reload
四、启动某个进程(program_name=你配置中写的程序名称)

supervisorctl start program_name
五、查看正在守候的进程

supervisorctl
六、停止某一进程 (program_name=你配置中写的程序名称)

pervisorctl stop program_name
七、重启某一进程 (program_name=你配置中写的程序名称)

supervisorctl restart program_name
八、停止全部进程

supervisorctl stop all
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.Networking;
 5 using LitJson;
 6 using System.IO;
 7 using System.Net;
 8 
 9 
10 public class Connet : MonoBehaviour {
11 
12     //private ArrayList List = new ArrayList(5);
13     //private Rect rect = new Rect(10, 50, 150, 150);
14     //请求地址,写自己的请求地址就行
15     private string url = "http://xxxxxxxxx/ApiServlet?method=list";
16     //声明 JsonData     LitJson 提供的方法
17     JsonData itemdata;
18     //新建 List 存放数据
19     private List<Item> dataBase = new List<Item>();
20 
21     IEnumerator Start()
22     {
23         
24         WWW getData = new WWW(url);
25         yield return getData;
26         
27         if (getData.error != null)
28         {
29             Debug.Log(getData.error);
30         }
31         else
32         {
33             Debug.Log(getData.text);
34         }
35         //把请求到的数据转换成 JsonData array 类型,并存储到itemdata里
36         itemdata = JsonMapper.ToObject(getData.text);
37         //Debug.Log(itemdata);
38         //调用 ConstructItemDatabase() 函数
39         ConstructItemDatabase();
40         //测试数据
41         Debug.Log(dataBase[0].Name);
42     }
43     void ConstructItemDatabase()
44     {
45         //循环取数据
46         for (int i = 0; i < itemdata.Count; i++)
47         {
48             //把每个数据都添加到 dataBase 里  要和请求到的json数据对应
49             dataBase.Add(new Item((int)itemdata[i]["longId"], (int)itemdata[i]["intId"], itemdata[i]["item"].ToString()));
50         }
51     }
52 }
53 
54 //新建Item类
55 public class Item
56 {
57     //定义Item内的数据
58     //固定写法 XX{ get; set; }
59     public int ID { get; set; }
60     public int IntId { get; set; }
61     public string Name { get; set; }
62 
63     //接收上面的变量
64     public Item(int _longId, int _intId, string _name)
65     {
66         ID = _longId;
67         IntId = _intId;
68         Name = _name;
69     }
70 }

无需付费的开源数据库

  • MySQL:大家都在用,常常错不了;

  • PostgreSQL:学术气息有一点点重,其实挺不错,但人气未有MySQL高;

  • SQLite:嵌入式数据库,切合桌面和移动使用。

用作Python开荒程序猿,接纳哪个无需付费数据库呢?当然是MySQL。因为MySQL广泛率最高,出了错,能够很轻易找到消除措施。何况,围绕MySQL有第一次全国代表大会堆监察和控制和平运动维的工具,安装和选拔很有利。

一、安装redis:

1.下载:

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

 2.解压

tar -zxvf redis-3.2.8.tar.gz

 

3.复制,放到/usr/local目录下

sudo mv ./redis-3.2.8 /usr/local/redis

 

4.进入到redis目录下

cd /usr/local/redis/

 

5.生成

sudo make

 

6.测量检验,时间会相比长

sudo make test

 

7.设置,将redis的授命安装到usr/local/bin/目录中

sudo make install

 

8.设置成功后,进入usr/local/bin/目录中查看:

cd /usr/local/bin

 

 long8 2

9.将安插文件复制放到/etc/redis目录下:

sudo cp /usr/local/redis/redis.conf /etc/redis/redis.conf

 

 只怕刚最初etc下并未有redis目录,须求和睦手动创制三个redis文件夹。

以上在第6步的时候恐怕会遇见这么的标题:

You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1

 

消除办法:安装tcl 

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  
cd  /usr/local/tcl8.6.1/unix/  
sudo ./configure  
sudo make  
sudo make install 

 

  3,每便要比较的数目个数都比前一趟少四个,第一趟要比较n个(即相比n-1次);

点名布署文件运营命令

uwsgi --ini  /etc/uwsgi_nginx.ini

LitJson.dll下载地址

四、redis的数码操作:

1.redis的存款和储蓄格式为key-value格式。key是字符串类型,value的品种有5种:string、hash、list、set、zset。

2.redis中有关键的普遍的操作:

2.1翻看左右的键:keys *

2.2翻看某些键是还是不是存在,存在重返1一纸空文再次来到0:exists key1

2.3查看键的值对应的数据类型:type key1

2.4去除键值对:del key1 key2

2.5设置键的过期时间,若无一点点名默许平昔留存:expire key seconds

2.6查看键的灵光时间:ttl key1

2.7清空数据库:flushall

3.string类型的基本操作:

3.1保存

  • set key value  保存单个键值对
  • mset key1 value1 key2 value2  保存多少个键值对
  • setex key seconds value  设置键值和过期时间
  • append key value追加值

3.2获取

  • get key  获取单个
  • mget key1 key2  获取三个

3.3删除

  • del key

4 hash类型的基本操作:

4.1保存

hset key field value    #设置单个属性
hmset key field1 value1 field2 value2 ...    #设置多个属性

 

4.2获取

hkeys key    # 获取指定键的所有属性
hget key field    # 获取单个属性的值
hmget key field1 field2 ...    # 获取多个属性的值
hvals key    # 获取所有属性的值

 

4.3删除

del key    # 删除整个hash的键和值
hdel key field1 field2 ...    # 删除属性和属性对应的值

 

4.4关于hash类型的个人掌握:

能够将hash类型通晓为用来存款和储蓄对象:

long8 3

 

 5。list类型的基本操作:

5.1保存

lpush key value1 value2 ...    #从左侧依次插入数据
rpush key value1 value2 ...    #从右侧依次插入数据
linsert key before或after 现有元素 新元素    #从指定元素的前或后插入新元素

 

 5.2获取

lrange key start stop    

 

 start、stop为要素的下标索引,从左边伊始,第贰个成分为0,-1标志最终三个因素。获取具备的因素:lrange key 0 -1

5.3删减钦命元素

lrem key count value

 

 将列表中前count次面世的值为value的因素移除。

count > 0: 原原本本移除

long8:05访谈数据库,诉求json数据深入分析。count < 0: 从尾到头移除

count = 0: 移除全体

 6.set类型的基本操作

特征:冬天汇聚、成分独一性不重复、没有改变操作

6.1充实元素

sadd key member1 member2 ...

 

 6.2获得成分

smembers key    # 返回所有元素

 

6.3刨除内定成分

srem key member1 member2 ...

 

 

 7.zset类型的数目操作

特色:有序集中、成分独一性不重复、没有改变操作、每一种成分都会波及三个double类型的权重,依据权重从小到大排列

7.1增加

zadd key score1 member1 score2 member2 ...

 

7.2获取

zrange key start stop  # 根据索引获取

zrangebyscore key min max  # 获取权重在min和max之间的数据
zscore key member  # 返回成员member的score值

 

7.3删除

zrem key member1 member2 ...    # 删除指定元素
zremrangebyscore key min max    #删除权重在指定范围的元素

  $a = array(9,3,5,8,2,7);  //下标为0,1,2,3,4,5

  django的静态文件与nginx配置

mysite/settings.py

STATIC_ROOT='/opt/nginx1-12/static'
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]

上述的参数STATIC_ROOT用在哪?

经过python3 manage.py collectstatic 搜集全体你利用的静态文件保留到STATIC_ROOT!

STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
# 把这些文件放到一起是为了用nginx等部署的时候更方便

 

 

参谋文书档案:

 uwsgi热加载:

假如大家看不懂,这里有贰个视频讲的要么万分详细的

付费的商用数据库:

  • Oracle:规范的高富帅;

  • long8,SQL Server:微软本人产品,Windows定制专款;

  • DB2:IBM的出品,听上去挺高等;

  • Sybase:曾经跟微软是好亲密的朋友,后来波及破裂,今后家道惨淡。

这一个数据库都是不开源而且付费的,最大的低价是花了钱出了难题能够找商家化解,不过在Web的社会风气里,平时供给安插数不胜数的数据库服务器,当然不可能把大把大把的银两扔给商家,所以,无论是谷歌、照片墙,照旧本国的BAT,无一例外都选用了无偿的开源数据库:

六、Django框架中session存款和储蓄到redis中的配置

默许意况下session是储存在数据库中的,然则当用session保存客商的状态时,客户频仍的拜望服务器,会叠合数据库的压力,也会下落顾客访谈的进度。为了消除那几个主题素材将session存款和储蓄到redis中。

率先种配备形式:(不应用Django中session暗中同意的储存形式,直接将session存款和储蓄的地点安排到redis中)

# 1.在虚拟环境中安装包
pip install django-redis-sessions==0.5.6

# 2.在Django项目的settings文件中增加下面的配置
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

 

 第两种配备情势:(先将Django中的缓存设置为redis,然后将session的蕴藏地点设置为Django的缓存中)

#1.先在虚拟环境中安装包
pip install django_redis

#2. 设置redis作为django的缓存设置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        # 把这里缓存你的redis服务器ip和port
        "LOCATION": "redis://172.16.179.142:6379/12",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 3.设置redis存储django的session信息
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

 

  1,借使数组的数码有n个;

小编们都清楚django是一个web框架,方便大家连忙支付web程序,http乞请的动态数据便是由web框架来提供管理的。

密码:1znp

使用MySQL

MySQL是Web世界中应用最广大的数据库服务器。SQLite的性状是轻量级、可放置,但不可能承受高并发访谈,符合桌面和活动接纳。而MySQL是为劳动器端设计的数据库,能接受高并发访谈,同期占用的内存也远远超过SQLite。

除此以外,MySQL内部有各个数据库引擎,最常用的斯特林发动机是协理数据库事务的InnoDB。

三、启动redis:

1.基于计划文件运行redis服务器

sudo redis-server /etc/redis/redis.conf 

 

2.启动redis客户端:

redis-cli

 

3.输入ping命令测量试验:

127.0.0.1:6379> ping
PONG

 

4.关闭redis服务器:

ps aux|grep redis    # 查看redis进程号
kill -9 pid redis进程号    # 关闭redis服务器

 

5.切换数据库:暗中认可有17个,通过0-15来标志,暗中同意是首先个数据库0号数据库。

select n

 

本文由long8发布于long8,转载请注明出处:long8:05访谈数据库,诉求json数据深入分析

上一篇:Selenium模拟顾客操作,搭建虚构主机步骤 下一篇:没有了
猜你喜欢
热门排行
精彩图文