Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)
一:算法回顾:
冒泡算法,也叫冒泡排序,其特点如下:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
使用python的冒泡排序完成一组无序队列的排序:
data = [10,4,33,21,54,3,8,11,5,22,2,2,2,1,17,13,6]
print(data,"原队列")
for j in range(1,len(data)-2): #大循环,列表队列总长度减2,因为下面比较的是根据元素的下标就向后推移了两个下标位
for i in range(len(data)-j): #每次小循环的次数减去大循环已经循环过的次数,因为大循环每循环一次就将将一个最大的元素放在了最右侧,次元素就不需要循环了
if data[i] > data[i+1]: #假入第一个元素大于第二个元素
tmp = data[i+1] #第一步先把第二个元素保存至一个临时变量
data[i+1] = data[i] #第二步把第二个元素的值等于前面一个较大的元素的值
data[i] = tmp #第三步把前一个元素等于后面较小元素的的临时变量,这样就完成了位置的替换
print(data,"冒泡排序后的队列")
[10, 4, 33, 21, 54, 3, 8, 11, 5, 22, 2, 2, 2, 1, 17, 13, 6] 原队列
[1, 2, 2, 2, 3, 4, 5, 6, 8, 10, 11, 13, 17, 21, 22, 33, 54] 冒泡排序后的队列
执行结果:
二分查找,使用递归函数完成:
def search(data,n): #定义函数传递两个参数,data是要查找的列表,n是首要查找的值
mid = int(len(data)/2) #取中间值
if len(data) >= 1 : #假如队列的长度大于等于1
if data[mid] > n: #大于等于之后判断中间值是否大于要查找的值,如果大于要查找的值
print("要查找的%s 在左侧" % data[mid]) #
search(data[:mid],n) #调用函数本身并将中间的值和要查找的值传递给函数,取队列的左半部分的元素
#print(mid)
elif data[mid] < n: #如果小于n
print("要查找的 %s在右侧" % data[mid])
search(data[mid:],n) #取队列的右半部分的元素值和要查找的值传递给函数
#print(mid)
else: #如果既不大于等于n也不小于n,就是找到了要查找的值
print("找到了%s" % n)
else: #如果没有找到
print("找不到了%s " % n) if __name__ == "__main__": #主程序执行
data = list(range(100000)) #生成列表
search(data,13560) #调用函数并将列表和要查找的值传递给函数
要查找的50000 在左侧
要查找的25000 在左侧
要查找的 12500在右侧
要查找的18750 在左侧
要查找的15625 在左侧
要查找的14062 在左侧
要查找的 13281在右侧
要查找的13671 在左侧
要查找的 13476在右侧
要查找的13573 在左侧
要查找的 13524在右侧
要查找的 13548在右侧
找到了13560
执行结果:
二:写一个简单的Web框架模块:
要求:有处理前端页面展现、后端提交和处理数据库请求的
过程:
1,创建一个Python Package叫shop,和directory最大区别是多了一个空的__init__文件,用于不同目录导入模块,在python3没有也可以,
2,在shop创建一个Python Package创建一个frontend,backend,config用于前端、后端和配置文件信息
3,在后端backend目录创建Python Package目录db和logic,负责数据库请求和逻辑请求处理
4,在config创建python文件settings,保存配置信息,如资源保存路径等
5,解耦,并行开发一个程序,相互可以通过接口调用,提高开发效率及代码利用率
6,在logic目录创建一个python文件handle,用户处理逻辑请求,内容如下:
def home():
print("welcome to home page") def movie():
print("welcome to movie page") def tv():
print("welcome to tv page")
7,在shop目录创建一个python文件叫index,在里面导入logic里面的handle模块,内容如下:
from backend.logic import handle #shop目录下
handle.home() #执行该模块的方法
handle.tv() #执行该模块的方法
测试:现在运行index程序是可以显示home和tv函数返回的数据
8.在db目录创建一个python文件叫sql_api,内容如下:
def select(table,column):
if table == "user":
user_info = {
"":["jack",28,"IT"],
"":["tom",24,"IT"],
"":["lyly",26,"IT"],
}
return user_info
9,在handle导入sql_api模块,内容如下:
from backend.db.sql_api import select #跨目录导入模块 def home():
print("welcome to home page")
q_data = select("user","abc") #执行导入模块的参数,并传递一个user的值,abc的值没有用到
print("query res: %s " % q_data) #输出select函数的执行结果
def movie(): print("welcome to movie page") def tv(): print("welcome to tv page")
10,测试--》执行index主程序,其会返回读取的数据信息,正常如下:
welcome to home page
query res: {'': ['jack', 28, 'IT'], '': ['tom', 24, 'IT'], '': ['lyly', 26, 'IT']}
welcome to tv page
11,增加数据库登录验证:
在config创建settings文件,保存配这和验证信息,内容如下:
DATABASE = {
"engine":"mysql",
"host":"localhost",
"port":"",
"user":"root",
"password":"",
}
12,编辑sql_api导入验证信息,内容如下:
from config import settings def db_auth(configs):
if configs.DATABASE["user"] == "root" and configs.DATABASE["password"] == "":
print("数据库认证通过")
return True
else:
print("数据库认证失败") def select(table,column): if db_auth(settings):
if table == "user":
user_info = {
"":["jack",28,"IT"],
"":["tom",24,"IT"],
"":["lyly",26,"IT"],
}
return user_info
13,测试,执行index主程序,会显示认证成功并返回查询到的数据库信息,如下:
welcome to home page
数据库认证通过
query res: {'': ['tom', 24, 'IT'], '': ['lyly', 26, 'IT'], '': ['jack', 28, 'IT']}
welcome to tv page
14,如果没有认证通过,会显示以下信息:
welcome to home page
数据库认证失败
query res: None
welcome to tv page
三:系统标准模块:
模块安装;
需要提前解决依赖关系:
yum install gcc
yum install python
-
devel
模块安装后会在sys.path定义的一目录当中,如:/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
通过操作系统 安装:yum,pip,apt-get
通过源码安装:下载源码,解压源码,进入目录,编译源码 python setup.py build,安装源码 python setup.py install
安装一个模块:
# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto # 下载安装 pycrypto
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
tar -xvf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py build
python setup.py install # 进入python环境,导入Crypto检查是否安装成功
系统模块介绍:
1、time模块:
import time
def procedure(n):
time.sleep(n) procedure(2)
print(time.clock(),"返回处理器时间") procedure(3)
print(time.process_time(),"返回处理器时间")
1.2828922892186587e-06 返回处理器时间
0.046800299999999996 返回处理器时间
执行结果:
import time
print(time.time(),"#返回当前系统时间戳")
print(time.ctime(),"#返回类似Mon Feb 22 17:27:01 2016的当前系统时间")
1456134311.3426776 #返回当前系统时间戳
Mon Feb 22 17:45:11 2016 #返回类似Mon Feb 22 17:27:01 2016的当前系统时间
执行结果;
import time
print(time.ctime(time.time()-86640),"将时间戳时间转换为字符串格式的时间")
print(time.gmtime(time.time()-86400),"#将时间戳转换成struct_time格式")
print(time.localtime(time.time()-86640),"#将时间戳转换成struct_time格式,但返回的是本地时间")
Sun Feb 21 17:30:24 2016 将时间戳时间转换为字符串格式的时间
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=21, tm_hour=9, tm_min=34, tm_sec=24, tm_wday=6, tm_yday=52, tm_isdst=0) #将时间戳转换成struct_time格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=21, tm_hour=17, tm_min=30, tm_sec=24, tm_wday=6, tm_yday=52, tm_isdst=0) #将时间戳转换成struct_time格式,但返回的是本地时间
执行结果:
import time
print(time.mktime(time.localtime()),"#与time.localtime()功能相反,将struct_time格式转回成时间戳格式")
#time.sleep(2) #休眠2秒
print(time.gmtime(),"time.gmtime()")
print(time.strftime("%Y"))
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()),"#将struct_time格式转成指定的字符串格式")
print(time.strptime("2016-02-22","%Y-%m-%d"),"#将字符串格式转换成struct_time格式")
1456134175.0 #与time.localtime()功能相反,将struct_time格式转回成时间戳格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=9, tm_min=42, tm_sec=55, tm_wday=0, tm_yday=53, tm_isdst=0) time.gmtime()
2016
2016-02-22 09:42:55 #将struct_time格式转成指定的字符串格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=53, tm_isdst=-1) #将字符串格式转换成struct_time格式
执行结果:
2.datetime 模块:
import time
import datetime
print(datetime.date.today(),"#输出格式 2016-02-22")
print(datetime.date.fromtimestamp(time.time()),"#2016-02-22 将时间戳转成日期格式") #2016-01-16 将时间戳转成日期格式
2016-02-22 #输出格式 2016-02-22
2016-02-22 #2016-02-22 将时间戳转成日期格式
执行结果:
import datetime
print(datetime.datetime.now(),"#输出当前的系统时间")
print(datetime.datetime.now().timetuple(),"##返回struct_time格式")
2016-02-22 19:22:18.422648 #输出当前的系统时间
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=19, tm_min=22, tm_sec=18, tm_wday=0, tm_yday=53, tm_isdst=-1) ##返回struct_time格式
执行结果:
import datetime
current_time = datetime.datetime.now()
print(current_time.replace(),"#当前时间")
print(current_time.replace(2020,12,20,13,14,15),"#时间替换,可以传递年月日和时间进行与当前的时间替换,传递的时间将当前的时间替换")
2016-02-22 19:31:20.832961 #当前时间
2020-12-20 13:14:15.832961 #时间替换,可以传递年月日和时间进行与当前的时间替换,传递的时间将当前的时间替换
执行结果:
import datetime
str_to_date = datetime.datetime.strptime("83/10/21 12:10:59", "%y/%m/%d %H:%M:%S") #将字符串转换成日期格式
print(str_to_date,"#将字符串转换成日期格式")
new_date = datetime.datetime.now() + datetime.timedelta(days=15) #比现在加10天
print(new_date,"#加15天")
new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天
print(new_date,"#减10天")
new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时
print(new_date,"#加10小时")
new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s
print(new_date,"#加120秒")
1983-10-21 12:10:59 #将字符串转换成日期格式
2016-03-08 19:37:40.022908 #加15天
2016-02-12 19:37:40.022937 #减10天
2016-02-22 09:37:40.022950 #加10小时
2016-02-22 19:39:40.022963 #加120秒
执行结果:
3、random模块,生成随机的验证码:
import random
print(random.random(),"#随机生成小数点以后17位")
print(random.randint(1,2),"#从1和2中随机生成")
print(random.randrange(1,10),"#从1和10中随机生成")
0.5986389820464493 #随机生成小数点以后16位
1 #从1和2中随机生成
3 #从1和10中随机生成
执行结果:
随机生成6位数的验证码:
import random
checkcode = ''
for i in range(6):
current = random.randrange(0,9)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
print(checkcode) 执行结果:
GRHC09
4、OS模块:提供对操作系统进行调用的接口
import os
print(os.getcwd(),"获取当前python脚本的工作路径")
os.chdir("test") #切换到目录,相当于shell的cd
print(os.getcwd(),与上次的目录不一样了吧")
print(os.curdir,"返回当前目录")
print(os.pardir,"获取当前目录的父目录字符串名:('..')")
/Users/zhangshijie/PycharmProjects/S12-Python3/day6 获取当前python脚本的工作路径
/Users/zhangshijie/PycharmProjects/S12-Python3/day6/test 改变当前脚本工作目录;相当于shell下cd,与上次的目录不一样了吧
. 返回当前目录
.. 获取当前目录的父目录字符串名:('..')
执行结果:
import os
os.mkdir("pymkdir") #创建目录
os.makedirs("1/2/3/4/5") #创建多级目录
os.rmdir("pymkdir") #删除单个目录
os.removedirs("1/2/3/4/5") #删除父目录是空目录的目录,直到上级不是空目录
os.mkfifo("test.txt") #Create a "fifo" (a POSIX named pipe)
os.remove("test.txt") #删除一个文件
os.rename("test.txt","test1.txt") #重命名
print(os.stat("test1.txt")) #获取文件信息
os.stat_result(st_mode=4516, st_ino=3847301, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1456143823, st_mtime=1456143823, st_ctime=1456143823)
执行结果:
import os
print(os.listdir(""),"列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印")
print(os.sep,"#输出操作系统特定的路径分隔符,win下为\\,Linux下为/")
print(os.linesep,"#输出当前平台使用的行终止符,win下为\t\n,Linux下为\n")
print(os.pathsep,"#输出用于分割文件路径的字符串")
[''] 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
/ #输出操作系统特定的路径分隔符,win下为\,Linux下为/
#输出当前平台使用的行终止符,win下为 ,Linux下为
: #输出用于分割文件路径的字符串
执行结果:
import os
print(os.name,"输出字符串指示当前使用平台。win->'nt'; Linux->'posix'")
a = os.name
if a == "posix":
print("当前系统为linux")
else:
print("当前系统为windows") os.system("pwd") #直接运行shell命令
print(os.environ,"获取系统环境变量")
print(os.path.abspath("test.py"),"返回test.py规范化的绝对路径")
posix 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
当前系统为linux
/Users/zhangshijie/PycharmProjects/S12-Python3/day6
environ({'PYTHONPATH': '/Users/zhangshijie/PycharmProjects/S12-Python3', 'XPC_FLAGS': '0x0', 'VERSIONER_PYTHON_VERSION': '2.7', 'PATH': '/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.jZ4mmjq5Wb/Listeners', 'PYTHONIOENCODING': 'UTF-8', 'HOME': '/Users/zhangshijie', 'TMPDIR': '/var/folders/n0/75hy61rn77s19fk821mn3x040000gn/T/', '__PYVENV_LAUNCHER__': '/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.jD2hlnKFAy/Render', 'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'LC_CTYPE': 'zh_CN.UTF-8', 'PYCHARM_HOSTED': '', 'LOGNAME': 'zhangshijie', 'XPC_SERVICE_NAME': 'com.jetbrains.pycharm.180832', 'PYTHONUNBUFFERED': '', '__CF_USER_TEXT_ENCODING': '0x1F5:0x19:0x34', 'SHELL': '/bin/bash', 'USER': 'zhangshijie'}) 获取系统环境变量
/Users/zhangshijie/PycharmProjects/S12-Python3/day6/test.py 返回test.py规范化的绝对路径
执行结果:
import os
print(os.path.split("/var/log/httpd/access.log"),"将路径和文件分割,以元组显示结果")
print(os.path.dirname("/var/log/httpd/access.log"),"返回path的目录。其实就是os.path.split(path)的第一个元素")
print(os.path.basename("/var/log/httpd/access.log"),"返回最后的文件名")
print(os.path.exists("/var/log/httpd/access.log"),"如果文件存在返回True,不存在返回False")
('/var/log/httpd', 'access.log') 将路径和文件分割,以元组显示结果
/var/log/httpd 返回path的目录。其实就是os.path.split(path)的第一个元素
access.log 返回最后的文件名
False 如果文件存在返回True,不存在返回False
执行结果:
import os
print(os.path.isabs("/tmp/ct.shutdown"),"判断是否绝对路径")
print(os.path.isfile("/tmp/ct.shutdown"),"判断是否一个已经存在的文件")
print(os.path.isdir("/tmp/ct.shutdown"),"判断是否一个已经存在的目录")
print(os.path.join("/tmp/0123","",""),"将多个目录合并成绝对路径")
True 判断是否绝对路径
True 判断是否一个已经存在的文件
False 判断是否一个已经存在的目录
/tmp/0123/123/234 将多个目录合并成绝对路径
执行结果:
import os
print(os.path.getatime("/etc/passwd"),"以时间戳返回path所指向的文件或者目录的最后存取时间")
print(os.path.getmtime("/etc/passwd"),"以时间戳返回path所指向的文件或者目录的最后修改时间")
print(os.popen("ls -l /").read()) #读取文件或执行命令并将结果返回
执行结果: 1456217043.0 以时间戳返回path所指向的文件或者目录的最后存取时间 1440397265.0 以时间戳返回path所指向的文件或者目录的最后修改时间
drwxrwxr-x+ 70 root admin 2380 Feb 20 19:43 Applications
drwxr-xr-x+ 61 root wheel 2074 Jan 7 18:09 Library
执行结果:
5.sys模块:用于提供对解释器相关的操作,sys模块提供了许多函数和变量来处理 Python 运行时环境的不同部分
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 多个目录之间只见调用模块的时候,尤其是深层次的模块调用浅层次的模块的时候要使用os.path.dirname(os.path.dirname(os.path.abspath(__file__)))这样的方法取得和浅层次文件同样的目录里面才可调用
sys.platform 返回操作系统平台名称
sys.stdout.write('please:') #返回并统计输出的字符个数
sys.stdin.readline()[2] #读取输入,并返回指定下标的元素
>>> a = sys.stdin.readline()
abcd
>>> a
'abcd\n'
>>> a = sys.stdin.readline()[:-1] #删除回车,即删除换行符\n
abcd
>>> a
'abcd'
6.hashlib模块:
在python3中用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法:
python2.7使用md5模块:
import md5
hash = md5.new()
hash.update('admin')
print hash.hexdigest()
执行结果:
21232f297a57a5a743894a0e4a801fc3
python3.5中使用hashlib模块:
import hashlib
m = hashlib.md5()
m.update(b"Hello")
m.update(b"It's me")
print(m.hexdigest()) m.update(b"xxx")
print(m.hexdigest()) hash = hashlib.sha512()
hash.update(b"xxx")
print(hash.hexdigest())
执行结果:
5ddeb47b2f925ad0bf249c52e342728a
5ecd493c71024e56b341b9f80eb119e3
9057ff1aa9509b2a0af624d687461d2bbeb07e2f37d953b1ce4a9dc921a7f19c45dc35d7c5363b373792add57d0d7dc41596e1c585d6ef7844cdf8ae87af443f
#python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
import hmac
h = hmac.new(b'passwprd')
h.update(b'password')
print(h.hexdigest()) 执行结果:
b6628c80a2b6954ddf9899e61bf30472
7.json和pickle模块:
pickle模块:只适用于python的特定数据类型,即pickle 是python独有的,支持python里面的字典,字符串,函数等格式,pickle保存的格式其他语言是无法读取的,
json dumps把数据类型转换成字符串,dump把数据类型转换成字符串并存储在文件中 ,loads把字符串转换成数据类型,load把文件打开从字符串转换成数据类型
pickle同理
pickle使用方法如下:
#将数据dump到文件
import pickle
data = [123123453454456,{"K1":""},{"K2":"K3"}]
with open("data.txt","wb") as file1:
pickle.dump(data,file1) #dunp是直接将文件dump到文件当中,和dumps方法不一样
file1.write(pickle.dumps(data)) #需要用二进制文件的写入方式打开文件,然后将序列化以后的数据写入到文件,和dump写入文件的方法不同 #从文件读取数据:
import pickle
f = open("data.txt","rb")
a = pickle.loads(f.readline()) print(a)
f.close() 执行结果:
[123123453454456, {'K1': ''}, {'K2': 'K3'}]
json:json是各种语言都支持的,json只支持字典格式,json是pyton与java等语言相互支持的。
import json
data = "123123453454456abcd"
with open("data.json","w") as f:
json.dump(data,f) #使用dump方法将data写入到打开的文件
#f.write(json.dumps(data)) #使用文件write的方法将json序列号后的数据写入文件
f.close() 读取json文件:
import json
readjson = json.load(open("data.json"))
print(readjson) 执行结果:
123123453454456abcd
Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)的更多相关文章
- CSIC_716_20191116【常用模块的用法 time ,datetime, random, os, sys, hashlib】
import time import datetime import os import sys import random import hashlib time模块 时间戳(Timestamp) ...
- Python常用模块(time, datetime, random, os, sys, hashlib)
time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...
- time,datetime,random,os,sys,hashlib,logging,configparser,re模块
#-----time模块----- print(help(time)) #打印time帮助文档 print(time.time()) #打印时间戳 1569824501.6265268 time.sl ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- python笔记-6(import导入、time/datetime/random/os/sys模块)
一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...
- python之常见模块(time,datetime,random,os,sys,json,pickle)
目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...
- 常用模块之 time,datetime,random,os,sys
time与datetime模块 先认识几个python中关于时间的名词: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“ty ...
- python基础语法11 内置模块time,datatime,random,os,sys,hashlib模块
time模块 在python的三种时间表现形式: 1.时间戳: 给电脑看的. - 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒. 2.格式化时间(Format Strin ...
- oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections
今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...
随机推荐
- HDU 4725 The Shortest Path in Nya Graph-【SPFA最短路】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题意:有N个点和N层..一层有X个点(0<=X<=N).两邻两层间有一条路花费C.还有M ...
- 【已解决】谁动了我的CurrentPrincipal?求助我在给Artech的wcf petshop增加授权机制的时候遇到的问题。
这个问题已解决,是绑定设置的问题,主要还是因为我自己没有深入理解WCF绑定的安全机制.在这篇博客里面我来说说怎么解决的. 下载了Artech的wcf petshop源码(博文链接)并调试运行成功后,打 ...
- Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器
Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...
- C# Best Practices - Define Fields Appropriately
Backing Fields private string description; private int productId; Features A variable in a class Hol ...
- Java排序之排序大综合
一.最近写了一些排序,于是和和大家分享一下:(默认都是从小到大排序) 二.冒泡排序 1.什么是冒泡排序:原理是临近的两个数比较大小,将较大的数往后移,这样遍历一趟数组以后,最大的数就排在的最后面(时间 ...
- js基础之冒号
js中冒号的作用有两种, 转自:http://www.kqiqi.com/knowledge/web-based/506.html 一.?: 操作符 a = expression ? b : c;如果 ...
- Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)
最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...
- 教你怎么用Mono Cecil - 动态注入 (注意代码的注释)
原文 教你怎么用Mono Cecil - 动态注入 (注意代码的注释) 使用 Mono Cecil 进行反编译:using Mono.Cecil; using Mono.Cecil.Cil; //.. ...
- Python web框架有哪些
简单易学的web.py, 大型的django:文档最完善.市场占有率最高.招聘职位最多. Tornado 具体看:http://feilong.me/2011/01/talk-about-python ...
- 2014 北京邀请赛ABDHJ题解
A. A Matrix 点击打开链接 构造,结论是从第一行開始往下产生一条曲线,使得这条区间最长且从上到下递减, #include <cstdio> #include <cstrin ...