用python3写一个小程序

学习了python的8大要素之后,我们来写一个小程序把:执行的效果如图2016-06-23 23-13-34屏幕截图

以下是源代码:

[code lang=”python”]
###########################################################
# File Name: bigdigits.py
# Author:Zhixiang
# mail:zhixiang_uestc@126.com
# Created Time:2016年06月23日 星期四 19时16分29秒
##########################################################
#!/bin/python3
import sys
Zero =["******",
"* *",
"* *",
"* *",
"* *",
"* *",
"******"]
One =[" * ",
"** ",
" * ",
" * ",
" * ",
" * ",
"***"]
Two =[" *** ",
"* *",
"* * ",
" * ",
" * ",
"* ",
"*****"]
Three=["******",
" *",
" *",
"******",
" *",
" *",
"******"]
Four=[" * ",
" ** ",
" * * ",
" * * ",
"******",
" * ",
" * "]
Five=["*****",
"* ",
"* ",
"*****",
" *",
" *",
"*****"]
Six=["******",
"* ",
"* ",
"******",
"* *",
"* *",
"******"]
Seven=["******",
" *",
" * ",
" * ",
" * ",
" * ",
"* "]
Eight=["******",
"* *",
"* *",
"******",
"* *",
"* *",
"******"]
Nine=["******",
"* *",
"* *",
"******",
" *",
" *",
"******"]
#每个数字本身又是一个列表
Digits=[Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine]
try:
digits=sys.argv[1]
print(digits)
row =0
while row <7:
line = ""
column = 0
while column < len(digits):
number = int(digits[column])
digit = Digits[number]
line += digit[row] + " "
column += 1
#内循环拼接每个数的第一行像素到变量line中,每次添加空格,然后逐行打印,直至7行
print(line)
row +=1
except IndexError:
print("usag:bigdigits.py <number> ")
except ValueError as err:
print(err,"in",digits)

[/code]

MemCache缓存软件解读

Memcache缓存软件说明

[iframe frameborder=”no” border=”0″ marginwidth=”0″ marginheight=”0″ width=600 height=86 src=”http://music.163.com/outchain/player?type=2&id=22551663&auto=0&height=66″][/iframe]

memcached

MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。

另外,说一下MemCache和MemCached的区别:

1、MemCache是项目的名称

2、MemCached是MemCache服务器端可以执行文件的名称

MemCache的官方网站为http://memcached.org/

Memcached服务的工作步骤如下:

  1. 程序首先检查客户端请求的数据在Memcached服务中的缓存中是否存在,如果存在,直接把请求的数据返回,不再请求后端数据库。
  2. 如果请求的数据在Memcached缓存中不存在,则程序会去Memcached后端的数据库服务。
  3. 把从数据库中取到的数据返回给客户端。
  4. 同时把新取到的数据库的数据缓存一份到Memcached服务缓存中,下次同样的请求就直接从Memcached服务缓存返回数据,从而减轻数据库的访问压力。

Memcached缓存PHP扩展插件安装

Memcache分为服务器端软件和客户端插件两部分,本文是Memcached客户端PHP的扩展插件(memcached-2.2.7.tgz)在php环境中的安装,用于访问Memcached服务器端数据。

PHP的Memcached扩展插件的下载地址为:http://pecl.php.net/get/memcache-2.2.7.tgz。

安装过程如下:

[code lang=”bash”]

cd /home/jian/tools/

wget http://pecl.php.net/get/memcache-2.2.7.tgz

tar -zxvf memcache-2.2.7.tgz

cd memcache-2.2.7/

/application/php/bin/phpize

./configure –enable-memcache –with-php-config=/application/php/bin/php-config

make

make install

ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/

#若该文件夹下生成了memcache.so模块,表示memcache扩展插件成功安装

[/code]

memcached缓存应用:

 

 

 

 

 

 

 

memcached分布式原理

memcached不相互通信,那么memcached是如何实现分布式的呢?memcached的分布式实现主要依赖客户端的实现:

如上图所示,我们看下缓存的存储的一般流程:

当数据到达客户端,客户端实现的算法就会根据“键”来决定保存的memcached服务器,服务器选定后,命令他保存数据。取的时候也一样,客户端根据“键”选择服务器,使用保存时候的相同算法就能保证选中和存的时候相同的服务器。

 

Python的8个关键要素

一张图介绍python

要素1:数据类型

要素2:对象引用

要素3:组合数据类型

要素4:逻辑操作符

  • 身份操作符
  • 比较操作符
  • 成员操作符
  • 逻辑运算符:and、or与not

要素5: 控制流语句

在Python中,一块代码,也就是说一条或多条语句组成的序列,称为suite.由于Python中的某些语法要求存在一个suite,Python就提供了关键字pass,pass实际上是一条空语句,不进行任何操作。

  • if语句
  • while语句
  • for…in语句
  • 基本的异常处理

使用try和except语句来捕获异常

try:
block
except [exception,[data…]]:
block

try:
block
except [exception,[data…]]:
block
else:
block

该种异常处理语法的规则是:

·   执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。

·   如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。

·   如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。

·   如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

·   如果没有发生异常,则执行else块代码。

要素6:算数运算符

  • 基本四则数学运算符
  • 增强赋值操作符

要素7:输入/输出

code:

 

[sourcecode autolinks=”false” language=”python”]
###########################################################
# File Name: input.py
# Author:Zhixiang
# mail:zhixiang_uestc@126.com
# Created Time:2016年06月22日 星期三 21时13分06秒
##########################################################
#!/bin/python3
print("Type integers,each followed by Enter;or just Enter to finish")
total = 0;
count = 0;
while True:
line = input("integer:")
if line:
try:
number = int(line)
except ValueError as err:
print(err)
continue
total += number
count += 1
else:
break
if count:
print("count=",count,"total=",total,"mean=",total/count)
[/sourcecode]

注意: 与大多数其他程序设计语言不同的是,Python使用缩排来标识其块结构。由于suite是使用缩排指明的,
因此很自然地带来一个问题是:使用哪种缩排?Python风格指南建议的是每层缩排4个空格,并且只有空格 没有制表符。

在使用vim编辑Python代码时可以在vimrc中加入如下参数,设置tab键=4个空格:

[code lang=”bash”]

set ts=4
set expandtab

[/code]

要素8:函数的创建与调用

 

 

PHP.ini 配置文件的重要参数优化参考

opensource

1  、比较重要的安全参数优化如下:

第338行设置为safe_mode = On               #开启安全模式

第435行设置为expose_php = Off             #关闭版本信息

第538行设置为display_errors = Off          #错误信息控制,测试的时候开启

第 521 行默认为 error_reporting = E_ALL & ~E_DEPRECATED #报错的级别

第559行设置为log_errors = On                    #打开log曰志

第 643 行设置为 error_log = /app/logs/php_errors.log     #log 日志得路径(需 log_errors 为 On 才能生效)

第703行设置为register_globals = Off                   #关闭全局变量(默认即为关闭,万万不能开启)

第756行设置为magic_quotes_gpc = On              #防止SQL注入

第902行设置为allow_url_fopen = Off                 #打开远程打开(禁止)

第854行设置为cgi.fix_pathinfo=0                        #防止Nginx文件类型错误解析漏洞

2、更具具体业务可修改的参数如下:

第444行  max_execution_time = 30            #单个脚本最大运行时间,单位是秒

第454行  max_input_time = 60                    #单个脚本等待输入的最长时间

第 465行  memory_limit = 128M                  #单个脚本最大使用内存,单位为K或M(128M稍大可以适当调小)

第891行    upload_max_filesize = 2M          #上传文件最大许可

第894行    max_file_upload = 20                  #可以通过单个请求上载的最大文件数

注:第一列数字为默认 php.ini 文件相关参数对应的行号。