python数据类型、字符编码、文件处理
介绍:
1.什么是数据?
例:x=10,10是我们要存储的数据
2.为何数据要分不同的类型?
数据是用来表示状态的,不同的状态用不同的类型的数据去表示
1.数据类型
1.数字(整形,长整形,浮点型,复数)
整形int
#一:基本使用
1 用途
用途:年龄,等级,qq号等
2 定义方式
age=18 #age=int(18)
3 常用操作+内置的方法
+ - * / 等
#二:该类型总结
存一个值or存多个值
只能存一个值
没有顺序(只能存一个值)
可变or不可变(值改变id不变叫可变类型)
!!!不可变:值变,id就变。不可变==可hash
例:x=
print(id(x))
x=
print(id(x))
不可变==可hash
print(hash11)可以正常hash
补充:列表(值改了但是id不变为可变类型)为可变类型==不可hash
例l=[,,]
print(id(l))
[]=
print(id(l))
浮点型float
1 用途
身高,体重,工资,体制参数等
2 定义方式
salary=3.1 #salary=float(3.1)
3 常用操作+内置的方法
#二:该类型总结
1 存一个值or存多个值
只能存一个值
2 没有顺序,只能存一个值
3 可变or不可变
!!!不可变:值变,id就变。不可变==可hash
了解:
长整型long
在python2中有,python3中没有
long(表示数字的长度过长)
例:
x=3L print(type(x))
y=123123123123123 print(type(y))
复数complex
x=1+2j(j这个地方为什么定义其他的字符报错)
1代表实数
2代表虚数
print(x.real)查看实数
print(x.imag)查看虚数
print(type(x))
字符串floor
字符串
#一:基本使用
用途
姓名,性别,住址等描述性数据
定义方式
在单引号\双引号\三引号内,由一串字符组成
例:
msg='hello world'
这个字符串中的单个字符可以取出来,单个取出来的也叫字符串
#优先掌握的操作:
#、按索引取值(正向取+反向取) :只能取,不能修改
print(msg[],type(msg[]))取出hello world的第一个值
print(msg[-])取出最后一个值
不可以改字符串中的值
#、切片(顾头不顾尾,步长)
print(msg[:])#>=<
print(msg[:])#>=<
print(msg[::])#>=<
print(msg[::])#>=< #隔一个取一个(顾头不顾尾)
print(msg[:])从开头到结尾
print(msg[:])指的是从6开头到1,这没有可以取的东西了
print(msg[::-])这个首先是倒序取值,这样的就是指的倒着从6到1,就可以取出来了
print(msg[-::-])倒着取,这个0可以不加
#、长度len
按着字符串中的一个个字符算的
print(msg.__len__())python内部调用的功能
print(len(msg))#就是msg.__len__()
#、成员运算in和not in
msg='hello world'
print(’llo’ in msg)#判断这个llo子字符串在不在这个msg字符串中
print(llo not in msg)#这里的not in是取反的意思
#、移除空白strip
password=' alex3714 '#如果多输入几个空格
print(password.strip())#取出多余的空格
password=input('>>>:').strip#可以这样写,input接收用户输入的内容都存为字符串
password='alex 3714 '
print(password.strip())
#、切分split
user_info='root:x:0:0:/root:/bin/bash'
user_info.split(self,sep(sep指的是分隔符),maxsplit这里面有三个参数,现在可以忽略掉self这个参数,只有两个)
res=user_info.split(':')
print(res[])#这样可以取出root这个值 file_path='c:\\a\\b\\c\\d.txt'#双\\指的是windows中的目录
print(file_path.split('\\',))这个取出的是以第一个\\为分隔符
print(file_path.rsplit('\\',))这个是从右边以第一个\\为分隔符
#7、循环
#把每个字符都打印出来
msg='hello world'
n=#来个索引等于0,根据索引取值
size=len(msg)
while n<size:
print(msg[n])
n+=
第二种方式:
不依赖索引
for i in msg:
print(i)
第三种方式:用for的索引方式取值
msg='hello world'
n=
for i in range(,):#range范围,顾头不顾尾,这个地方还可以指定步长
while n<i:
print(msg[n])
n+=
第四种方式:
msg='hello world'
n=
for i in range(,len(msg)):#len取出长度,如果range(这里面只写一个3,指的就是从0到3)
print(msg[i])
#二:该类型总结
1 存一个值or存多个值
只能存一个值
2 有序(能按照索引取值)
3 可变or不可变
!!!不可变:值变,id就变。不可变==可hash
需要掌握的
#、strip,lstrip,rstrip
print('***alex***'.strip('*'))
print('***alex***'.ltrip('*'))
print('***alex***'.rtrip('*'))
#、lower,upper
print('ALEX'.lower())#都改成小写
print('aaa'.upper())#都改成大写
#、startswith,endswith
msg='alex is SB'
print(msg.startswith('alex'))#以alex开头
print(msg.startswith('a'))#a开头
print(msg.endswith('SB'))#以SB结尾
#、format的三种玩法(格式赋值)
print('my name is %s my age is %s' $('alex',))
'my name is {} my age is {}'.format('alex',)按照顺序传值
print('my name is {name} my age is {age}'.format(age=,name='alex')#不依赖于位置(常用)
print('{0} {1} {0}'.format('alex',))
#、split,rsplit(把一个字符串切成一个列表)
info='root:x:0:0'
l=info.split(':')
print(l)
#、join(把一个列表按照分隔符变成一个字符串)
':'.join(l)
print(':'.join(l))
反例:
l=[,,]
print(':'.join(l))#只有在列表中的元素全是字符串类型,才能用join拼接
#、replace(取代)(有三个参数old老的值,new要改成什么值,count改几次)
msg='alex say my name is alex,alex have on tesla'
msg=msg.replace('alex','SB',)#字符串是不可变类型,压根不能改,要改的话只能存成一个新的值,加上1就代表只改第一个
print(msg) #、isdigit(判断字符串内是不是纯数字)
age=input('>>>:').strip()
print(age.isdigit())#用户如果输入的是123或其他的数字返回值为True,否则False
age=int(age)有一个猜年龄的程序,age用int只能把字符串中的数字转成整形才能做if判断和数字的比较
age=input('>>>:').strip()
if age.isdigit():
age=int(age)
else:
print('必须输入数字') age=int(age)
了解
#、find,rfind,index,rindex,count
msg='hello world'
print(msg.find('wo'))#返回值为6,就是说能找到第一个字符串的索引(默认从左边开始找,rfind就是从右边找)
print(msg.find('SB'))#没有SB,所以返回-
print(msg.index('SB'))#这个的返回值就会报错
print(msg.count('l'))#统计l这个字符串就是3个
print(msg.count('SB'))#返回值为0 #、center,ljust,rjust,zfill(跟打印效果有关)
print('egon'.center(,*))#30为指定宽度,*为填充的字符串,egon集中显示
print('egon'.ljust(,*))#左对齐
print('egon'.rjust(,*))#右对齐
print('egon'.zfill())#以0为填充符,默认往右对其
#、expandtabs跟tab有关
print('hello\tworld'.expandtabs())
#、captalize,swapcase,title
print('i am egon'.capitalize())#首字母大写
print('i am egon'.title())#每一个单词首字母大写
print('i am egon'.swapcase())#大小写反转 #、is数字系列
#在python3中
#isdigit能判断bytes,unicode
print(num1.isdigit())#
num1=b'' #bytes
num2=u'' #unicode,python3中无需加u就是unicode#返回值True
num3='四' #中文数字#返回值False
num4='Ⅳ' #罗马数字#返回值False #isnumeric能判断unicode
print(num2.isdecimal())True
print(num3.isdecimal())False
print(num4.isdecimal())False #isnumeric来判断unicode,中文,罗马
print(num2.isnumeric())True
print(num3.isnumeric())True
print(num4.isnumeric())True
#、is其他
print('===>')
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成 print(name.isidentifier())#字符串包含关键字
print(name.islower())#全都是小写字母用
print(name.isupper())#判断大写
print(name.isspace())#判断是不是空格
print(name.istitle())#判断是不是标题(首字母大写是标题)
列表list
#作用:多个装备,多个爱好,多门课程,多个女朋友等 #定义:[]内可以有多个任意类型的值,逗号分隔
# my_girl_friends=['alex','wupeiqi','yuanhao',,] #本质my_girl_friends=list([...])
# print(list('hello'))#list会产生一个列表
# print(int(''))
# print(str())#优先掌握的操作:
#、按索引存取值(正向存取+反向存取):即可存也可以取
#、切片(顾头不顾尾,步长)
#、长度
my_girl_friends=['alex','wupeiqi','yuanhao',,]
print(len(my_girl_friends))
#、成员运算in和not in
print('wupeiqi' in my_girl_friends)
#、追加
my_girl_friends[]=#IndexError: list assignment index out of range
对用的索引只能取出值或者修改值,不能追加
my_girl_friends.append()
print(my_girl_friends)
#、删除
del my_girl_friends[]
pirnt(my_girl_friends)
#单纯的删除
my_girl_friends.remove('yuanhao')
#列表中删除并想拿到结果:取走
res=my_girl_friends.pop()#pop()括号中如果没有值就从末尾去删
print(res) my_girl_friends=['alex','wupeiqi','yuanhao',,]
print(my_girl_friends.pop())#拿走alex
print(my_girl_friends.pop())#拿走wupeiqi
print(my_girl_friends.pop())#拿走yuanhao
#、循环
my_girl_friends=['alex','wupeiqi','yuanhao',,]
i=
while i<len(my_girl_friends):
print(my_girl_friends)
i+=
第二种方法:
for item in my_girl_friends:
print(item) 例子:1到10,不打印出7,用for
for item in range():
if item==:
pass
continue
print(item)
else:(上面只要不被break打断就执行else)
print('>>>:')
掌握的方法:
my_girl_friends=['alex','wupeiqi','yuanhao',,]
my_girl_friends.insert(,'egon')#指定索引
print(my_girl_friends) my_girl_friends.clear()#清空掉
print(my_girl_friends) l=my_girl_friends.copy()#拷贝一个列表
print(l) my_girl_friends.count('yuanhao')#统计个数 my_girl_friends.extend()#往列表中加值
# l=['egon1','egon2']
# my_girl_friends.extend(l)
# my_girl_friends.extend('hello')
# print(my_girl_friends) print(my_girl_friends.index('wupeiqi'))#取出索引值 print(my_girl_friend.reverse())#把值翻转输出 #排序sort
l=[,,,,]
l.sort()
print(l) 倒着排序
l.sort(reverse=True)
print(l) l=[,,,,,'a']#不行,因为数字和字符串不能比较大小 x='helloworld'
y='z'
print(y>x)#这个是根据abcd来比较的,因为z在h的后面
#二:该类型总结
1 存一个值or存多个值
可以存多个值,值都可以是任意类型
2 有序
3 可变or不可变
!!!可变:值变,id不变。可变==不可hash
元组tuple
#作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读 #定义:与列表类型比,只不过[]换成()
age=(,,,,)本质age=tuple((,,,,))
print(type(age))
验证元组不可变:#元组没有变取决于id
age=(,,,,)
age[]=#报错,提示不支持修改
t=(,,['a','b'])
t[]=='xxx'#代表把元组中的元素改掉了,但是元组是不能改的,但是可以改元素内部的值
t[][]='A'
print(t)
这个地方只是把表中的a改成了A但是id没有变 #优先掌握的操作:
#、按索引取值(正向取+反向取):只能取
#、切片(顾头不顾尾,步长)
age=(,,,,)
print(age[:])
print(age) #、长度
print(len(age))
#、成员运算in和not in
print( in age)
#、循环
for item in age:
print(item) 掌握
age=(,,,,)
print(age.index())#找索引
print(age.count())#找个数
#二:该类型总结
1 存一个值or存多个值
可以存多个值,值都可以是什么类型
2 有序
3 可变or不可变
!!!不可变:值变,id就变。不可变==可hash
字典dict
#作用:存多个值,key-value存取,取值速度快 #定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型
定义字典方式info={'name':'egon','age':,'sex':'male'} #本质info=dict({....})
或
了解
info=dict(name='egon',age=,sex='male')
或
info=dict([['name','egon'],('age',),('sex','male')])
或
info={}.fromkeys(('name','age','sex'),None)#快速产生空字典
info={}.fromkeys('hello',None)
print(info)
#优先掌握的操作:
#、按key存取值:可存可取
d={'name':'egon'}
print(d['name']) d=['age']=#存数据
print(d)
#、长度len
info={'name':'egon','age':,'sex':'male'}
print(len(info)) #、成员运算in和not in
info={'name':'egon','age':,'sex':'male'}
print('name' in info) #、删除
info={'name':'egon','age':,'sex':'male'}
print(info.pop('name'))#对于列表如果不加索引默认是从右边删除,但是字典是无序的,pop必须要传key
print(info) print(info.popitem())#item就是一个元素,在字典key:value算是一个元素,所以出来的即有key也有value
print(info)#最右边的那个值就拿出来了
#、键keys(),值values(),键值对items()了解
print(info.keys())#输出的值像是以列表的形式取出
但是print(info.keys()[])#没法取出值,所以不是列表
这个key的值可以用来做for循环,for循环不依赖索引
for key in info.keys():
print(key) print(list(info.keys()))#这个是真正的裂变加[],可以取值 print(list(info.keys())) print(info.items())#转成真正的列表print(list(info.items())) #、循环
info={'name':'egon','age':,'sex':'male'}
for k in info:
print(k,info[k]) 其他需要掌握的方法
info={'name':'egon','age':,'sex':'male'}
print(info['hobbies'])#不存在的key,就会报错
print(info.get('hobbies'))#不会报错,返回none
print(info.get('hobbies','没有'))#这个的返回值就是‘没有’ info.pop('name1','xxx')
print(info.pop('name1','xxx'))#这个的返回值就是‘xxx’,跟get差不对 info.update
info={'name':'egon','age':,'sex':'male'}
d={'x':,'y',,'name':'EGON'}
info.update(d)#原来的字典没有我给你加上,如果有就更新刚给赋的值
print(info) info.setdefault()
info={'name':'egon','sex':'male'}
value=info.setdefault('age',)#字典中新增一个key:value这个元素,增进去会有个返回值,返回值是曾进去的value
print(value) info={'name':'egon','age',,'sex':'male'}
value=info.setdefault('age',)#字典中如果不存在我就把这个key:value加进去,并且返回值是value,如果有这个就不覆盖,返回原来有的值
print(value)
print(info) info={'name':'egon'}
info['hobbies']=[]
info['hobbies'].append('music')
info['hobbies'].append('read')
print(info) info={'name':'egon','hobbies':['music']}
if 'hobbies' not in info:
info['hobbies']=[]
else:
info['hobbies'.append('read')]
用setdefault实现
info={'name':'egon','hobbies':['music']}
hobbies_list=info.setdefault('hobbies',[])
print(hobbis_list)
hobbies_list.append('read')
hobbies_list.append('play')
print(info)
#二:该类型总结
存一个值or存多个值
可以存多个值,值都可以是任意类型,key必须是不可变类型 无序 可变or不可变
!!!可变:值变,id不变。可变==不可hash
集合引入
# pythons=['egon','axx','ysb','wxx']
# linuxs=['egon','oldboy','oldgirl','smallboy','smallgirl']
#
# python_linux=[]
#
# for student in pythons:
# if student in linuxs:
# python_linux.append(student)
#
# print(python_linux)
集合set
#作用:关系运算,去重
#定义集合:{}内用逗号分割每个元素都必须是不可变类型,元素不能重复,无序
# s={,'a',[,]} #TypeError: unhashable type: 'list',不可哈希就是可变类型,可变就不能当字典元素
# s={,,,} #s=set({,,,})
# print(s,type(s))
注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 #优先掌握的操作:
#、长度len
# s={,,,} #s=set({,,,})
# print(len(s)) #、成员运算in和not in
# names={'egon','alex'}
# print('egon' in names) #、|合集
pythons={'egon','axx','ysb','wxx'}
linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'} #、&交集:同时报名两门课程的学生
# print(pythons & linuxs)
# print(pythons.intersection(linuxs)) #、|合集:老男孩所有的学生
# print(pythons | linuxs)
# print(pythons.union(linuxs)) #、^对称差集:没有同时报名两门课程
# print(pythons ^ linuxs)
# print(pythons.symmetric_difference(linuxs)) #7.1 -差集:只报名python课程的学生
# print(pythons - linuxs)
# print(pythons.difference(linuxs)) #7.2 -差集:只报名linux课程的学生
# print(linuxs-pythons) # 父集:>,>=,子集:<,<=
# s1={,,}
# s2={,,}
# print(s1 >= s2)
# print(s1.issuperset(s2))#s1是s2它爹
# print(s2.issubset(s1))#判断S2是S1它儿子 # linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'}
# for student in linuxs:
# print(student) #了解的知识点
# s1={,,}
# s2={,,}
# print(s1-s2)
# print(s1.difference(s2))
# s1.difference_update(s2) #s1=s1.difference(s2)
# print(s1) # s2={,,,,,'a'}
# print(s2.pop()) # s2.add('b')
# print(s2) # s2.discard('b')
# s2.remove('b') #删除的元素不存在则报错
# print(s2) # s1={,,,,,'a'}
# s2={'b','c',}
# print(s1.isdisjoint(s2)) #两个集合没有共同部分时,返回值为True # s2={,,,,,'a'}
# s2.update({,,})
# print(s2) 去重:
# l=['a','b',,'a','a']#s=set()print(s)set指的是去掉重复的
# print(list(set(l)))# # print(set('hello'))#一个个输出,没有顺序
# print(set({'a':,'b':,'c':}))##for循环字典得到的就是Key s1={,,}
s2={,,}
print(s1-s2)#s1并不变
print(s1.difference(s2))
print(s1.defference_update(s2))#减完了以后并更新相当于赋值操作s1=s1.difference(s2)
print(s1)
了解的知识点:
s1={,,,,,'a'}
print(s1.pop())#删的意思,随机删
s1.add('b')#只能添加不可变类型进去
print(s1.add('b'))
s1.discard(s1)#明确指出删除的值#
s1.remove('b')#如果用这个删除集合中没有的字符串会报错,discard就不会报错 s1={,,,,,'a'}
s2={'b','c'}
print(s1.isdisjoint(s2))#两个集合没有共同部分时,返回值为True s1={,,,,,'a'}
s2.update({,,})#add只能加一个值,update可以加多个值
print(s2)
数据类型总结:
按存储空间的占用分(从低到高)
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按存值个数区分
标量/原子类型 | 数字,字符串 |
容器类型 | 列表,元组,字典 |
按可变不可变区分
可变 | 列表,字典,集合 |
不可变 | 数字,字符串,元组 |
按访问顺序区分
直接访问 | 数字 |
顺序访问(序列类型) | 字符串,列表,元组 |
key值访问(映射类型) | 字典 |
字符编码:
字符编码总结:
1.存取文件不乱码的法则:用什么编码存的,用什么编码读
2.unicode----------encode-------->转成其他编码gbk,叫做encode
gbk-------->decode----------->unicode
3. python3解释器默认使用的字符编码是utf-8
python2解释器默认使用的字符编码 ascii
4.python2的str就是python3的bytes
python2的unicode就是python3的str
文件处理:
f=open( 'a.txt','rt',encoding='utf-8')#r默认就是rt文本模式#是操作系统打开这个文件,windows默认编码是gbk,而我存的是utf-8存的,所以我们要加上encoding='utf-8',告诉操作系统用utf-8打开,就不会报错了
data=f.read()#对出文件内容
print(data)
f.close()#关闭文件,回收的是操作系统的资源
如果这个时候在f.read(),就看不到了,因为文件关闭,操作系统已经回收了资源,所以看不到
with open( 'a.txt','rt',encoding='utf-8') as f:#文件打开的值给f
pass#执行完这个子代码后with会自动执行f.close()操作,避免忘记close()操作
f=open( 'a.txt','rt',encoding='utf-8')
data=f.read()
print('==1=>',data1)
data2=f.read()#这个意思是光标从文件的开始已经到了结尾,如果在print下面的2就为空了
print(==2=>,data2)
print(f.readline())#代表的是每次读一行
print(f.readline())#这个跟上面的输出结果会有空格(换行),想取消print换行就 print(f.readline(),end='')
print(f.readlines())#这个也是吧文件中的内容都读出来,但是会把文件内容放到列表中去
只限文件小的时候,因为如果文件过大,一下就会读到内存中去
写操作
f=open( 'a.txt','w',encoding='utf-8')#如果用r并且没有a.txt这个文件,那么就会报错,用w的话不会报错,没有这个文件就会造出这个文件出来,如果文件存在,还用w,就是相当于有创建了个文件,并把文件原来的文件覆盖掉了
f=open( 'a.txt','w',encoding='utf-8')
f.write('1111\n')
f.write('2222\n')#还可以f.write('111\n222\n')
f.close()
f.writelines(['哈哈哈\n','你好','alex'])#可以通过列表或元组形式写到里面去
python数据类型、字符编码、文件处理的更多相关文章
- python第二周数据类型 字符编码 文件处理
第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...
- Python常见字符编码间的转换
主要内容: 1.Unicode 和 UTF-8的爱恨纠葛 2.字符在硬盘上的存储 3.编码的转换 4.验证编码是否转换正确 5.Python bytes类型 前 ...
- Python基础-字符编码与转码
***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...
- Python的字符编码
Python的字符编码 1. Python字符编码简介 1. 1 ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...
- python 3字符编码
python 3字符编码 官方链接:http://legacy.python.org/dev/peps/pep-0263/ 在Python2中默认是ascii编码,Python3是utf-8编码 在p ...
- Python 的字符编码
配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...
- 转:Python常见字符编码及其之间的转换
参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...
- Python常用字符编码(转)
Python常用字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...
- Python之字符编码与文件操作
目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...
- what's the python之字符编码与文件处理
用文本编辑器打开一个文件就是把一个文件读入了内存中 ,所以打开文件的操作也是在内存中的,断电即消失,所以若要保存其内容就必须点击保存让其存入硬盘中 python解释器执行py文件的原理 : 第一阶段: ...
随机推荐
- Jquery | 外部插入节点
after(content) : //在 span 元素外部的后面 插入 "<span><b>Write Less Do More</b><span ...
- 094 Binary Tree Inorder Traversal 中序遍历二叉树
给定一个二叉树,返回其中序遍历.例如:给定二叉树 [1,null,2,3], 1 \ 2 / 3返回 [1,3,2].说明: 递归算法很简单,你可以通过迭代算法完成吗?详见 ...
- mysql自己编写启停脚本
一.场景 在实际生产环境中要求相对较高的企业对于root权限管控相对比较高,故而很多软件并非安装在root用户下(当然root用户权限也可管理,但正常情况下root权限并不会给业务使用方,而会给一个普 ...
- php设计模式学习之单例模式
某些应用程序资源是独占的,因为有且只有一个此类型的资源.例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关闭时,它是一种开销,在获取单个页面的过程中更 ...
- jupyter notebook dead kernel问题解决
背景: 我在刚安装好的tensorflow环境下启动jupyter notebook,无论是浏览器还是控制台,提示都是关于dead kernel.然后就查嘛,更新大发好. 但是我在控制台里按照其他人说 ...
- C++使用ADO连接数据库及其实例
读写数据库的技术很多,现在多用ADO.ADO以COM方式提供,所以它的很多行为遵循COM规范.首先,要引入ADO的COM文件,它的位置一般在"C:/Program Files/Common ...
- Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则
1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestControl ...
- AmazeUI 保存浏览器数据 永久性
//保存永久缓存数据function SaveAmuiStore(ItemName, ItemData){ if (window.localStorage) { var store = $.AMUI. ...
- Brackets前端开发编辑器
http://www.cnblogs.com/xiazdong/p/3550148.html http://blog.csdn.net/shinesun001/article/details/5348 ...
- tar打包压缩命令
1. tar命令 用法: tar [选项...] [FILE]... GNU ‘tar’将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件. 示例 tar -cf archiv ...