python之路: 基础篇
一、Python |
1、python是怎么来的
是在1989年吉多·范罗苏姆,在圣诞节的时候闲着无聊自己用C语言开发的,一个脚本解释程序,作为ABC语言的一种继承。
2、有哪些公司在用
Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事
3、python作用
数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。
4、有哪些版本
Cpython(基于C语言实现)、Jyhton(基于java语言的实现)、IronPython(基于C#语言的实现)、PyPy(比较特殊基于python实现)其他的有RubyPython(基于ruby语言的实现)、Brython
5、与其他语言的优缺点与其他语言的优缺点
C、Java、php、python
5-1、在速度上的区别:
C语言直接编译成机器语言,所以比较快。python需要编译成字节码,在从字符语言编译成机器语言,所以运行速度比
较慢。其他语言也是一样,相比python都需要先转成字符语言在编译成机器语言,方可使用。
5-2、功能上
更多功能和类库(内置、开源、自己写)
6、中文解释码
-*- coding:utf-8 -*-
coding:utf-8
7、为了不用python 脚本的方式需要编码声明
#!/usr/bin/env python
注释:“#”单行注释,多行注释“""" """”
模块:
1、import sys
使用了argv模块,sys.argv 用来捕获执行执行python脚本时传入的参数,倒入之后会生成pyc,python执行主要看文件的和pyc是否一样如果一样优先级是pyc,不一样是文件
2、import getpass模块 输入密码不显示,隐藏所输入的内容
pwd = getpass.getpass("请输入密码:")
二、变量 |
变量就是在内存中开辟一块空间并给这块空间赋一个名称就是变量名
变量的作用:昵称,其代指内存里某个地址中保存的内容
字节码:
1、变量规则
1、变量名:大小写字母、数字、下划线 数字不能作为起始 不能作为python内置的关键字
2、这些关键词不能声明变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
3、变量的第一个字符不能是数字
2、流程控制和缩进
外层变量,可以被内层变量使用
内层变量,无法被外层变量使用
在字符串里,name1 = ”字符串“ name2 = name1
name1改变,name2不变.字符串的特性一旦修改,重新创建。赋同一个值给两个不同的变量就是开辟两个不同的空间,
只是python的优化把两个变量值和在一起了,如果超过这个赋值池,就会开辟两块空间体现。数字池是-5到257
python执行过程:加载内存、此法分析、语法分析、编译---》》 字节码
语法:
输入输出
输入:raw_input
输出:print
输入不显示:getpass模块
三、循环 |
"=="是两个值之间的对比,
流程控制
if elif....elif....else:
if else:
四、数值 |
两部分:
1、单值
数字
整型(int)(32位:取值范围为-2**31~2**31-1,即-2147483648~2147483647。64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807)
长整型(long)(Python没有限制长整数数值的大小)
浮点型(float)(浮点数用来处理实数,即带有小数的数字)
复数(complex)( 复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。注:Python中存在小数字池:-5 ~ 257)
注:python中存在小数字池:-5~257
布尔值(bool) True、false 1 0
字符串(str)
2、集合
列表
元祖
字典
哈希表
字符串格式化
字符串是%s;整数是%d;浮点数是%f
两种格式
>>> name = "i am %s %d" %("alex",)
或
>>> name = "i am %s %d" #占位符%s、%d
>>> name %("wulaoer",13) #按照占位符的顺序
'i am alex 13'
##################################################################################################
>>> name = "i am {0},age{1}"
>>> name.format("wulaoer",14)
'i am wulaoer,age14'
符号:'' "" """ 前两种是单行 后一个是多行,三个引号可以做字符串也可以做注释。
1、切片
>>> name = "wulaoer"
>>> print name[:] #下标识从0开始的
wulaoer>>> print name[:] #最后一个不显示
wu
>>> print name[-] #最后一个
r
>>> print name[:-] #从最后一个开始
wulaoe>>> print name[:-] #左边显示右边不显示
wu>>> print len(name) #多少个字符
移除空白
>>> name = "wulaoer"
>>> print name
wulaoer
>>> print name.lstrip() #去掉左边空格
wulaoer
>>> name = "wulaoer"
>>> print name.rstrip() #去掉右边空格
wulaoer
>>> print name.strip() #去掉两边的空格
wulaoer
2、索引:
索引 (-1),
查看元素的个数len()
>>> shopping_list = ['Iphone', 'Mac', 'Bike','Coffee','Car','Clothes','Food','Gi
ft']
>>> shopping_list
['Iphone', 'Mac', 'Bike', 'Coffee', 'Car', 'Clothes', 'Food', 'Gift']
>>> len(shopping_list)
以下是索引实例:
>>> shopping_list = ['Iphone', 'Mac', 'Bike','Coffee','Car','Clothes','Food','Gift'] #创建一个列表
>>> shopping_list
['Iphone', 'Mac', 'Bike', 'Coffee', 'Car', 'Clothes', 'Food', 'Gift'] #显示列表
>>> shopping_list[0] #输出列表的第一个元素
'Iphone'
>>> shopping_list[2] #输出列表的第二个元素,是从0开始的
'Bike'
3、字符串(str)
重新开辟空间
4、列表(list)
修改后内存地址不变
1 >>> name = ['wulaoer','hello','word']
>>> name_list = ['wulaoer','hello','word']
>>> name_list
['wulaoer', 'hello', 'word']
>>> name_list.append('day') #添加
>>> name_list
['wulaoer', 'hello', 'word', 'day']
=============================================================
>>> del name_list[] #删除,
>>> del name_list[:] #删除索引0到3,不包括3
或
>>> name_list
['wulaoer', 'hello', 'word', 'day']
>>> name_list.remove('wulaoer') #删除wulaoer,如果有多个wulaoer,那会删除从左边开始第一个wulaoer。
>>> name_list
['hello', 'word', 'day']
=============================================================
>>> name_list.insert(,"wulaoer") #插入
>>> name_list
['hello', 'word', 'wulaoer', 'day']
>>> name_list[] = 'world' #修改
>>> name_list
['wulaoer', 'hello', 'wulaoer', 'world']
========================================================
>>> '_'.join(name_list) #连接根据单引号的符号连接两个元素之间的
'wulaoer_hello_wulaoer_world'
列表的增删改:只是对于列表的最小单元
'_'.join(列表)
>>> name_list
['wulaoer', 'hello', 'wulaoer', 'world']
>>> name_list.index('wulaoer') #返回列表的索引值,如果有多个返回第一个值
>>> name_list.index('world')
=============================================================
>>> name_list.count('wulaoer') #统计索引值
>>> name_list.count('world')
>>> name_city = ['henan', 'hebei', 'wubei']
>>> name_list.extend(name_city) #合并两个表
>>> name_list
['wulaoer', 'hello', 'wulaoer', 'world', 'henan', 'hebei', 'wubei']
=============================================================
>>> name_list
['wulaoer', 'hello', 'wulaoer', 'world', 'henan', 'hebei', 'wubei']
>>> name_list.sort() #将列表排序,根据26个字符的顺序
>>> name_list
['wulaoer', 'wulaoer', 'hebei', 'hello', 'henan', 'world', 'wubei']
=============================================================
>>> name_list.reverse() #将列表反转排序
>>> name_list
['wubei', 'world', 'henan', 'hello', 'hebei', 'wulaoer', 'wulaoer']
=============================================================
>>> for i in name_list: #遍历列表
... print i
...
wubei
world
henan
hello
hebei
wulaoer
wulaoer
五、元组(tuple) |
元组是另外一种序列表,一旦初始化不允许修改,在表示只有一个元素的元组里,也要价格“,”避免误解成数学计算意义
注:元祖不可修改,列表可以修改
1、循环
for ele in 列表
continue #本次循环不再继续
break #跳出循环
while 条件
六、字典(Dict) |
dict,字典是使用键值对(key-value)的形式存储数据,key是唯一的,所以可以定位到数据。相对应的就是value
字典特点:
1、key-value格式,key是唯一的
2、字典是无序的相比列表
3、查询速度很快,是基于hash表的原理实现的,根据关键字(Key value)而直接访问在内存存储位置的数据结构。
字典和列表的区别:字典是通过key来定位相应的value,避免浪费空间不会对数据位置记录。列表是通过索引来定位相应元素,所以列表有序
person.keys() #所有keys
person.values() #所有values
person.items() #所有元素,仅for循环时,使用,将元素赋值给keys
person.items()
for k,v in person.items()
print k
print v
print '============='
dict语法:
1 >>> class_name = {
'name':'toy',
'job':'IT',
'age':,
}
或者
>>> class_name = {'name':'toy', 'job':'IT', 'age':,}
>>> class_name
{'age': , 'job': 'IT', 'name': 'toy'}
=============================================================
>>> class_name['age'] #查看key为age的value
>>> class_name['age'] = #将key的value改为“”
>>> class_name
{'age': , 'job': 'IT', 'name': 'toy'}
=============================================================
>>> class_name['company'] = 'AUTOHOME' #在dict中查找key为“company”,将其改成“AUTOHOME”,如果没有就创建一条
>>> class_name
{'age': , 'job': 'IT', 'company': 'AUTOHOME', 'name': 'toy'}
=============================================================
>>> class_name.pop('company') #删除key为“company”的数据
'AUTOHOME'
>>> class_name
{'age': , 'job': 'IT', 'name': 'toy'}
>>> class_name.popitem( ) #随机删除一条数据,dict为空时用此法会报错
('age', )
>>> class_name
{'job': 'IT', 'name': 'toy'}
>>> class_name.items() #将dict的key和value转换成列表的形式显示
[('job', 'IT'), ('name', 'toy')]
=============================================================
>>> class_name['age'] #查找一个不存在的key
Traceback (most recent call last):
File "<stdin>", line , in <module>
KeyError: 'age'
>>> class_name.has_key('name') #判断dict里是否有一个’name‘的key,有True,否则False
True
>>> class_name.has_key('gae')
False
>>> class_name.get('age') #查找key,如果存在则返回其value,否则None
>>> class_name.get('name')
'toy'
=============================================================
>>> class_name
{'job': 'IT', 'name': 'toy'}
>>> class_name.clear() #清空dict
>>> class_name
{}
=============================================================
>>> class_name =class_name.fromkeys(['a', 'b', 'c', 'd'],'helo') #根据列表来创建dict里的key,后面的“helo”是默认的value,如果不指定的话则为None
>>> class_name
{'a': 'helo', 'c': 'helo', 'b': 'helo', 'd': 'helo'}
>>> class_name.setdefault('e','helo') #找一个key为’e‘的记录,如果不存在,就重新穿件key为“e”,vlaue为“helo”,如果存在直接返回这个key的value
'helo'
>>> class_name.setdefault('c','h') #dict的key里有“c”,直接返回“c”的value。
'helo'
>>> class_name
{'a': 'helo', 'c': 'helo', 'b': 'helo', 'e': 'helo', 'd': 'helo'}
=============================================================
>>> dict2 = {'f':'test', 'g':'test', 'h':'test'} #创建一个新的dict
>>> class_name.update(dict2) #用新的dict去更新class_name,如果dict中的key值和class_name中的key值冲突,dict的key值会覆盖掉class_name的key值,不存在会创建相应记录
>>> class_name
{'a': 'helo', 'c': 'helo', 'b': 'helo', 'e': 'helo', 'd': 'helo', 'g': 'test', 'f': 'test', 'h': 'test'}
七、遍历 dict |
遍历dict和遍历列表差不多,只是dict是key-value结构,同时打印key和value,需要这样写:
1 =============================================================
2 class_name = {
3 'name': 'tom',
4 'age': 19,
5 'job': 'IT'
6 }
7 for item in class_name:
8 print item,class_name[item] #打印key和value
9 输出key和value
job IT
age 19
name tom
或者
for key,val in class_name.items(): #同时打印key和value
print key,val
=============================================================
for item in class_name:
print item #只会打印key
job
age
name
默认是把字典转换成一个大列表,并把没对key-value值转换成元组,所以每次循环时赋2个变量进去,因为循环的数据格式如下:[('name','tom'),('age','19'),('job','IT')]
因此每循环一次,就是把相应元组中的2个值赋值key,val这两个变量打印。
八、深浅 copy |
dict里套接dict,value可以是一个列表,也可以是任何数据类型。但是key不可以,必须保证key的唯一性。
>>> staff_contacts = {
... :{'name':'tom', 'age':, 'job':'IT', 'phone':},
... :{'name':'Bob', 'age':, 'job':'PHP', 'phone':},
... :{'name':'Com', 'age':, 'job':'IOS', 'phone':},
... }
>>> staff_contacts
{: {'job': 'IT', 'phone': , 'age': , 'name': 'tom'}, : {'job': 'IOS'
, 'phone': , 'age': , 'name': 'Com'}, : {'job': 'PHP', 'phone': ,
'age': , 'name': 'Bob'}}
=============================================================
>>> contacts2 = staff_contacts
>>> staff_contacts[]['age'] =
>>> print 'staff_contacts:',staff_contacts[]
staff_contacts: {'job': 'IT', 'phone': , 'age': , 'name': 'tom'}
>>> print 'contacts2:', contacts2[]
contacts2: {'job': 'IT', 'phone': , 'age': , 'name': 'tom'}
>>> print 'id of staff_contacts:',id(staff_contacts[]) #查看两个dict的内存地址
id of staff_contacts:
>>> print 'id of contacts2:',id(contacts2[])
id of contacts2:
#第一个dict复制给另外一个dict的时候,修改其中一个dict,另外一个dict也跟着修改,而且两个dict的内存地址一样。对于字符串、数字等一些简单的数据类型,python会重新开辟一块空间,但是对于dict、list、tuple以及下面的set集合,python会像软链接一样,无论是修改原来的dict还是现在的dict,都是修改的同份数据,所以才会出现上面的情况,这样做的目的是为了节约内存。
如果要想让copy出来的数据不跟着改变,就需要用copy语句
>>> contacts2 = staff_contacts.copy()
用帮助来查看这个语法的解释:
>>> help(staff_contacts.copy)
Help on built-in function copy:
copy(...)
D.copy() -> a shallow copy of D
a shallow copy就是浅copy的意思
>>> staff_contacts = {
...
... :{'name':'wulaoer','age':,'department':'IT','phone':},
... :'nothing'
... } #重新建一个dict
>>> contacts2 = staff_contacts.copy() #浅copy
>>> staff_contacts[]['age'] = #修改dict的两个值
>>> staff_contacts[] = 'change this by original dict'
>>> contacts2
{: {'department': 'IT', 'phone': , 'age': , 'name': 'wulaoer'}, : 'n
othing'}
>>> staff_contacts
{: {'department': 'IT', 'phone': , 'age': , 'name': 'wulaoer'}, : 'c
hange this by original dict'}
#注经过浅copy之后,3333已经是两个数据已经独立了,而age还是共享内存数据,这个就是浅copy
九、深 copy |
深copy就是不管下面有多少层都copy了
语法
>>> import copy
>>> contacts2 = copy.deepcopy(staff_contacts)
>>> contacts2
{: {'department': 'IT', 'phone': , 'age': , 'name': 'wulaoer'}, : 'c
hange this by original dict'}
>>> staff_contacts
{: {'department': 'IT', 'phone': , 'age': , 'name': 'wulaoer'}, : 'c
hange this by original dict'}
#深copy之后所有的值都会copy过来。
十、集合 set |
python的set是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。集合对象还支持union(联合)、intersection(交)、difference(差)和sysmmetric difference(对称差集)等数学运算。
sets支持 x in set, len(set),和 for x in set.作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing,slicing,或其他类序列(sequence-like)的操作
基本语法
1 >>> s = set([,,,]) #数字集合
>>> t = set("Hello") #字符集合
集合是无序的,与列表和元祖不同,也不能数字进行索引,集合的元素不能重复
>>> t
set(['H', 'e', 'l', 'o']) #这里只出现了一个“I”
集合支持一系列标准操作,包括并集、交集、差集和对称差集,
>>> a = t | s #t和s的并集
>>> a
set([, 'e', , 'H', , 'l', 'o', ])
>>> b = t & s #t和s的交集
>>> b
set([])
>>> c = t -s #求差集(项在t中,但不在s中)
>>> c
set(['H', 'e', 'l', 'o'])
>>> d = t ^ s #对称差集(项在t或s中,但不会同时出现在二者中)
>>> d
set([, 'e', , , , 'l', 'o', 'H'])
>>> t.add('x') #添加
>>> t
set(['H', 'e', 'l', 'o', 'x'])
>>> s.update([,,]) #添加多项
>>> t.remove('H') #删除,如果不存在报错KeyError
>>> t
set(['e', 'l', 'o', 'x'])
>>> len(s) set的长度
#######################################################
x in s #测试x是否是s的成员 #
x not in s #测试x是否不是s的成员 #
#######################################################
>>> s.discard() #如果在set “s”中存在元素5,则删除
>>> s
set([, , , , ])
>>> s.pop() #删除并且返回set “s”中一个不确定的元素,如果为空则报错KeyError
>>> s
set([, , , ])
>>> s.clear() #删除set “s”中的所有元素
>>> s
set([])
>>> s.issubset(t) s<= t #测试是否s中的每个元素都在t中
True
>>> s.issuperset(t) s>= t #测试是否t中的每个元素都在s中
False
>>> s.union(t) #返回一个新的set包含s和t中的每一个元素
set(['x', 'e', 'l', 'o'])
>>> s | t
set(['x', 'e', 'l', 'o'])
>>> s.intersection(t) #返回一个新的set包含s和t中的公共元素
set([])
>>> s&t
set([])
>>> s.difference(t) #返回一个新的set包含s中有但是t中没有的元素
set([])
>>> s - t
set([])
>>> s.symmetric_difference(t) #返回一个新的set包含s和t中不重复的元素
set(['x', 'e', 'l', 'o'])
>>> s ^ t
set(['x', 'e', 'l', 'o'])
>>> s.copy() #返回set “s”的一个浅复制
set([])
十一、文件操作 |
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以读写文件就是请求系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)
以读取的模式打开一个文件对象,使用open内置的open()函数,传入文件名和标识符:
>>> f = open('E:/python/test.txt', 'r')
标识符'r'表示读,这样,就打开了一个文件,如果不存在就提示
>>> f = open('test.tx', 'r') #不存在有一个IOError错误说不存在这个文件
Traceback (most recent call last):
File "<stdin>", line , in <module>
IOError: [Errno ] No such file or directory: 'test.tx'
>>> f.read() #正确打开后要掉用read()方法可以一次读取文件所有内容,python把内容读到内存,
'hello word'
>>> f.close() #是关闭文件,使用完毕后必须关闭文件,因为文件对像会占用操作系统的资源,并且操作系统在同一时间打开的文件数量是有限的:
如果总是忘记关闭文件可以使用python引用的with语句来自动调用close()
with open('path/to/file',) as f:
print f.read()
这样代码更简洁,并且不必调用f.close()方法,这里的open()和file()是一样的,属于别名关系。
如果文件过大可以使用read(size),每次最多读取size个字节的内容,readline()可以每次读取一会内容,调用readlines()一次读取所有内容并按行返回list。
如果文件小可以多次使用read(size)
如果是配置文件用readlins()最方便
for line in f.readlines():
print(line.strip()) #把末尾的‘\n’删除
1、写文件
对文件进行操作的语法
#-*-coding:utf--*-
f = file('MyNewfile.txt,''w') #'w'代表以写模式创建一个新文件
f.write('This is frist line\n') #往文件里写内容
f.write('second line\n')
f.close()
#上面的写是指重新建一个文件,如果有MyNewfile.txt这个文件会把原来的文件冲掉
2、追加
f = file('MyNewfile.txt','a') #追加模式打开文件,如果a追加的文件不存在就会新建一个
f.write('This is third line,added in append mode\n')
f.close()
3、修改内容
#找到文件
文件路径
#打开文件
file open
#文件操作
r读 w写 a追加 r+读写 w+读写打开
file_obj.read() #将所有读入内存
file_obj.readlines() [行,] #以列表的形式显示出来
for line in file_obj.xreadlines():
print line
for line in file_obj:
#每次循环,只读一行
4、文件关闭
1 file_obj.close()
python之路: 基础篇的更多相关文章
- python之路基础篇
基础篇 1.Python基础之初识python 2.Python数据类型之字符串 3.Python数据类型之列表 4.Python数据类型之元祖 5.Python数据类型之字典 6.Python Se ...
- python之路——基础篇(2)模块
模块:os.sys.time.logging.json/pickle.hashlib.random.re 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 1.定义模块 将一系列功能函数或 ...
- [资料分享]Python视频教程(基础篇、进阶篇、项目篇)
Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- 深度学习入门者的Python快速教程 - 基础篇
5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...
- python学习之路基础篇(第五篇)
前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = ...
- Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作
目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...
- Python学习笔记——基础篇【第六周】——面向对象
Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 同时可参考链接: http:// ...
- Python学习笔记——基础篇【第七周】———类的静态方法 类方法及属性
新式类和经典类的区别 python2.7 新式类——广度优先 经典类——深度优先 python3.0 新式类——广度优先 经典类——广度优先 广度优先才是正常的思维,所以python 3.0中已经修复 ...
- python之路第二篇(基础篇)
入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...
随机推荐
- style控制打印分页
[转载地址:http://www.cnblogs.com/JustinYoung/articles/710734.html]page-break-before和page-break-after CSS ...
- icon大小
ldpi mdpi hdpi xhdpi xxhdpi
- redis 进阶
1.一定要设置最大缓存大小并设置缓存策略 如果不设置最大缓存,在新添加数据时,如果超过最大内存回事redis崩溃! 设置方式:maxmemory 1GB 使用redis-cli登录后,使用info命令 ...
- linux的学习系列 4---文件权限和访问模式
为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限: 所有者权限:文件所有者能够进行的操作 组权限:文件所属用户组能够进行的操作 外部权限(其他权限):其他用户 ...
- 门面模式(Facade)解析
门面模式使用一个门面类来包装一些复杂的类,对外提供一个简单的访问方法. 见如下代码: class CPU { public void startup() { System.out.println(&q ...
- [Eclispe] NDK内建include路径修改
[Eclispe] NDK内建include路径修改 编辑 jni/android.mk 中 LOCAL_C_INCLUDES 变量后,该变量值将被列入项目属性的内建include头文件包含路径,无法 ...
- 动画——animation(2)
日常中,我们使用的动画来源有两个方面—— 第一个,自己去定义. 通过@keyframes去定义即可,格式如下: @keyframe animatename{ 0%{ //这里面写初始的对象的css样式 ...
- EDA 事件驱动框架
事件代表过去发生的事件,事件既是技术架构概念,也是业务概念.以事件为驱动的编程模型称为事件驱动架构EDA. EDA是一种以事件为媒介,实现组件或服务之间最大松耦合的方式.传统面向接口编程是以接口为媒介 ...
- Linux设置某软件开机自动启动的方法
方法一 将启动命令写到系统启动时会自动调用的脚本中 echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d ...
- Android中在布局中写ViewPager无法渲染出来的问题
今天刚刚使用Android Studio,在写ViewPager时,首先按F4把Dependencies添加一个V4包,然后写ViewPager,如下: <android.support.v4. ...