中企动力 > 头条 > 数据库网站开发教程

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

数据库网站开发教程

如何使用Python开发技术搭建网站 企业视频课程

img

杭雨筠

关注

众所周知,Python的主要就业方向之一是Web网站工程师,那么你知道如何使用Python搭建一个网站吗?Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,因此使用Python搭建网站非常方便,你可以直接使用Django。

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。Django的安装流程如下:

安装Django:

1)下载django安装包,如(Django-1.6.11)

--解压并和Python安装目录放在同一个根目录(放在python目录下也行,如,C:\My_softwares\Python27 -->C:\My_softwares\Python27\Django-1.6.11)

--通过【powershell】(或者cmd)进入Django目录,执行【python setup.py install】,然后开始安装,Django将要被安装到Python的Lib下site-packages.

2)配置环境变量(操作与配置python的环境变量类似):

-- C:\My_softwares\Python27\Lib\site-packages\django

-- C:\My_softwares\Python27\Scripts(注:django安装完成后,该目标下生成【django-admin.py】用于后续网站的建立)

--添加完成后就可以使用【django-admin.py】提供的命令创建新工程了。

3)检验django是否搭建完成:

--【ctrl + R】 -->输入【powershell(或者cmd)】-->输入【python】

--输入【import django】-->输入【django.VERSION】-->是否显示对应的版本(如:1, 6, 11, 'final', 0)。

在安装好Django之后,你就可以创建网站了。除此之外,你还可以使用tornado或者Quixote搭建网站。不过想要熟练使用框架需要一定的基础,而这些参加正规专业的Python培训学习就可以更好掌握。

JAVA高开发——超强、超详细Redis数据库入门教程 推广视频课程

img

碧珊

关注

这篇文章主要介绍了超强、超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下

redis是什么

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)

目前,Vmware在资助着redis项目的开发和维护。

redis的作者何许人也

开门见山,先看照片:

Salvatore Sanfilippo

是不是出乎了你的意料,嗯,高手总会有些地方与众不同的。

这位便是redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。

他使用的网名是antirez,如果你有兴趣,可以去他的博客逛逛,地址是antirez,当然也可以去follow他的github,地址是http://github/antirez。

谁在使用redis

Blizzard、digg、stackoverflow、github、flickr ...

学会安装redis

从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后进入redis-X.Y.Z文件夹后直接make即可,安装非常简单。

make成功后会在src文件夹下产生一些二进制可执行文件,包括redis-server、redis-cli等等:

$ find . -type f -executable

./redis-benchmark //用于进行redis性能测试的工具

./redis-check-dump //用于修复出问题的dump.rdb文件

./redis-cli //redis的客户端

./redis-server //redis的服务端

./redis-check-aof //用于修复出问题的AOF文件

./redis-sentinel //用于集群管理

学会启动redis

启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:

./redis-server ../redis.conf

默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

有关作者为什么选择6379作为默认端口,还有一段有趣的典故,英语好的同学可以看看作者这篇博文中的解释。

使用redis客户端

我们直接看一个例子:

//这样来启动redis客户端了

$ ./redis-cli

//用set指令来设置key、value

127.0.0.1:6379> set name "roc"

OK

//来获取name的值

127.0.0.1:6379> get name

"roc"

//通过客户端来关闭redis服务端

127.0.0.1:6379> shutdown

127.0.0.1:6379>

redis数据结构 – 简介

redis是一种高级的key:value存储系统,其中value支持五种数据类型:

字符串(strings)

字符串列表(lists)

字符串集合(sets)

有序字符串集合(sorted sets)

哈希(hashes)

而关于key,有几个点要提醒大家:

key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;

key也不要太短,太短的话,key的可读性会降低;

在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

redis数据结构 – strings

有人说,如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了。这说明strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。

我们来看一个最简单的例子:

set mystr "hello world!" //设置字符串类型

get mystr //读取字符串类型

字符串类型的用法就是这么简单,因为是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储。

另外,我们还可以通过字符串类型进行数值操作:

127.0.0.1:6379> set mynum "2"

OK

127.0.0.1:6379> get mynum

"2"

127.0.0.1:6379> incr mynum

(integer) 3

127.0.0.1:6379> get mynum

"3"

看,在遇到数值操作时,redis会将字符串类型转换成数值。

由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果,假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

redis数据结构 – lists

redis的另一个重要的数据结构叫做lists,翻译成中文叫做“列表”。

首先要明确一点,redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

虽然lists有这样的优势,但同样有其弊端,那就是,链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。我们来看几个例子:

//新建一个list叫做mylist,并在列表头部插入元素"1"

127.0.0.1:6379> lpush mylist "1"

//返回当前mylist中的元素个数

(integer) 1

//在mylist右侧插入元素"2"

127.0.0.1:6379> rpush mylist "2"

(integer) 2

//在mylist左侧插入元素"0"

127.0.0.1:6379> lpush mylist "0"

(integer) 3

//列出mylist中从编号0到编号1的元素

127.0.0.1:6379> lrange mylist 0 1

1) "0"

2) "1"

//列出mylist中从编号0到倒数第一个元素

127.0.0.1:6379> lrange mylist 0 -1

1) "0"

2) "1"

3) "2"

lists的应用相当广泛,随便举几个例子:

我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。

利用LRANGE还可以很方便的实现分页的功能。

在博客系统中,每片博文的评论也可以存入一个单独的list中。

redis数据结构 – 集合

redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

//向集合myset中加入一个新元素"one"

127.0.0.1:6379> sadd myset "one"

(integer) 1

127.0.0.1:6379> sadd myset "two"

(integer) 1

//列出集合myset中的所有元素

127.0.0.1:6379> smembers myset

1) "one"

2) "two"

//判断元素1是否在集合myset中,返回1表示存在

127.0.0.1:6379> sismember myset "one"

(integer) 1

//判断元素3是否在集合myset中,返回0表示不存在

127.0.0.1:6379> sismember myset "three"

(integer) 0

//新建一个新的集合yourset

127.0.0.1:6379> sadd yourset "1"

(integer) 1

127.0.0.1:6379> sadd yourset "2"

(integer) 1

127.0.0.1:6379> smembers yourset

1) "1"

2) "2"

//对两个集合求并集

127.0.0.1:6379> sunion myset yourset

1) "1"

2) "one"

3) "2"

4) "two"

对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

redis数据结构 – 有序集合

redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

老规矩,我们来看几个生动的例子:

//新增一个有序集合myzset,并加入一个元素baidu,给它赋予的序号是1:

127.0.0.1:6379> zadd myzset 1 baidu

(integer) 1

//向myzset中新增一个元素360,赋予它的序号是3

127.0.0.1:6379> zadd myzset 3 360

(integer) 1

//向myzset中新增一个元素google,赋予它的序号是2

127.0.0.1:6379> zadd myzset 2 google

(integer) 1

//列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。

127.0.0.1:6379> zrange myzset 0 -1 withscores

1) "baidu"

2) "1"

3) "google"

4) "2"

5) "360"

6) "3"

//只列出myzset的元素

127.0.0.1:6379> zrange myzset 0 -1

1) "baidu"

2) "google"

3) "360"

redis数据结构 – 哈希

最后要给大家介绍的是hashes,即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

我们来看一个例子:

//建立哈希,并赋值

127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34

OK

//列出哈希的内容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "antirez"

3) "password"

4) "P1pp0"

5) "age"

6) "34"

//更改哈希中的某一个值

127.0.0.1:6379> HSET user:001 password 12345

(integer) 0

//再次列出哈希的内容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "antirez"

3) "password"

4) "12345"

5) "age"

6) "34"

有关hashes的操作,同样很丰富,需要时,大家可以从这里查询。

聊聊redis持久化 – 两种方式

redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;

AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。

聊聊redis持久化 – RDB

RDB方式,是将redis某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。

redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份,因为快照文件总是完整可用的。

对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能。

如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

虽然RDB有不少优点,但它的缺点也是不容忽视的。如果你对数据的完整性非常敏感,那么RDB方式就不太适合你,因为即使你每5分钟都持久化一次,当redis故障时,仍然会有近5分钟的数据丢失。所以,redis还提供了另一种持久化方式,那就是AOF。

聊聊redis持久化 – AOF

AOF,英文是Append Only File,即只允许追加不允许改写的文件。

如前面介绍的,AOF方式是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍,就这么简单。

我们通过配置redis.conf中的appendonly yes就可以打开AOF功能。如果有写操作(如SET等),redis就会被追加到AOF文件的末尾。

默认的AOF持久化策略是每秒钟fsync一次(fsync是指把缓存中的写指令记录到磁盘中),因为在这种情况下,redis仍然可以保持很好的处理性能,即使redis故障,也只会丢失最近1秒钟的数据。

如果在追加日志时,恰好遇到磁盘空间满、inode满或断电等情况导致日志写入不完整,也没有关系,redis提供了redis-check-aof工具,可以用来进行日志修复。

因为采用了追加方式,如果不做任何处理的话,AOF文件会变得越来越大,为此,redis提供了AOF文件重写(rewrite)机制,即当AOF文件的大小超过所设定的阈值时,redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。举个例子或许更形象,假如我们调用了100次INCR指令,在AOF文件中就要存储100条指令,但这明显是很低效的,完全可以把这100条指令合并成一条SET指令,这就是重写机制的原理。

在进行AOF重写时,仍然是采用先写临时文件,全部完成后再替换的流程,所以断电、磁盘满等问题都不会影响AOF文件的可用性,这点大家可以放心。

AOF方式的另一个好处,我们通过一个“场景再现”来说明。某同学在操作redis时,不小心执行了FLUSHALL,导致redis内存中的数据全部被清空了,这是很悲剧的事情。不过这也不是世界末日,只要redis配置了AOF持久化方式,且AOF文件还没有被重写(rewrite),我们就可以用最快的速度暂停redis并编辑AOF文件,将最后一行的FLUSHALL命令删除,然后重启redis,就可以恢复redis的所有数据到FLUSHALL之前的状态了。是不是很神奇,这就是AOF持久化方式的好处之一。但是如果AOF文件已经被重写了,那就无法通过这种方法来恢复数据了。

虽然优点多多,但AOF方式也同样存在缺陷,比如在同样数据规模的...

一分钟学会本地搭建WordPress站点_网站建设入门教程_小小课堂 流量视频课程

img

景谷梦

关注

学习SEO优化知识,离不开网站建设,在不购买域名和空间的情况下,本地搭建网站是最合适的方法了。

今天,小小课堂网为大家介绍的是快速在本地搭建WordPress站点。希望对大家有所帮助。

一、搭建WordPress环境

WordPress环境,即PHP、MySQL、Apache或IIS即可。建议初学者使用一键集成环境即可。Windows系统上的一键集成环境推荐wamp。

1、安装必要运行库

Visual C++ Redistributable for Visual Studio 2012安装包(如果服务器未安装VC2012,运行wamp会报错)。

也可以直接运行包含VC2012的常用运行库。

2、安装wamp

安装wamp,一键安装即可,全部下一步,即可完成。

3、运行WordPress环境

必须要保证,右下角图标变为绿色,才是正常工作状态。

二、安装WordPress站点

1、下载并解压WordPress压缩包

如果为安装WinRAR之类的解压缩软件,Windows自带的zip功能也可以将所有文件提取出来。

2、将解压出来的WordPress文件放入wamp

如下图所示,将文件复制到wamp下的www下。

3、进入WordPress安装界面

在浏览器地址栏输入“local”,即可进入WordPress的安装界面。

WordPress的安装界面如下图所示。点击“现在就开始!”。

4、填写数据库信息

wamp默认用户名为:root

wamp默认无密码。

数据库名为:test

其他可不做修改,如果是真实主机,则需要更改为真正的数据库主机、用户名和密码;此外,从安全角度考虑,数据库名和前缀名也是需要更改的。

5、开始安装WordPress

出现如下界面,证明WordPress现在已经可以连接数据库了。点击“现在安装”。

6、填写WordPress站点信息

填写“站点标题”、“用户名”、“密码”、“电子邮件地址”,如果网站不想被搜索引擎索引,那么勾选下面的那个选项。

7、提示WordPress安装成功

如出现如下图所示,则证明我们的WordPress安装成功。点击“登录”并输入密码。

8、WordPress后台

下图所示的界面就是WordPress的后台了。

9、WordPress网站首页

在浏览器中,再次输入“localhost”,则会进入网站的首页,输入“localhost/wp-admin/”则会进入WordPress后台。

以上就是小小课堂网为大家介绍的是本地搭建WordPress站点的相关教程。感谢您的观看。

关于WordPress的SEO,可以参考以往教程《SEO整站优化方案_WordPress_小小课堂网》

喜欢记得,点赞,打赏哦。小小课堂网,每天一个SEO、网站建设或网络推广教程,别忘了关注哦。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP