Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。可以加入与其他语言的对比。
python自省是python具有的一种能力,使程序员面向对象的语言所写的程序在运行时,能够获得对象的类python型。python是一种解释型语言,为程序员提供了极大的灵活性和控制力。
PEP8是一种编程规范,内容是一些古纳与如何让你的程序更具可读性的建议
pickle模块读入任何python对象,将它们转换成字符串,然后使用dump函数将其转储到一个文件中----这个过程叫做picking。反之从存储的字符串文件中提取原始python对象的过程,叫做unpickling
python装饰器是python中的特有变动,可以使修改函数变得更容易
在python中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作–这就是命名空间。它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象
它们是可以轻松创建字典和列表的语法结构
这是一个常被用于代码中的单个表达式的匿名函数
pass是一个在python中不会被执行的语句,在复杂语句中,如果一个地方需要暂时被留白,它常常被用于占位符
在python中,unittest是python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等的功能
构造器是实现迭代器的一种机制。它功能的实现依赖于yield表达式,除此之外它跟普通的函数没有两样
python中文档字符串被称为docstring,它在python中的作用是为函数、模块和类注释生成文档
python中的序列索引可以是正也可以是负。如果是正索引,0是序列中的第一个索引,1是第二个索引,(-1)是最后一个索引,(-2)是倒数第二个索引
在python中,模块是搭建程序的一种方式。每一个python代码文件都是一个模块,并可以引用其他的模块,比如对象和属性
在python中,为了解决内存泄露问题,采用了对象引用计数,并基于引用计数实现自动垃圾回收
CSRF 是伪造客户端请求的一种攻击,CSRF 的英文全程是Cross Site Request Forgery,字面上的意思是跨站点伪造请求
适当地加入非前导空格,适当的空行以及一致的命名
python是一种解释性语言,它的源代码 可以直接运行。python解释器会将源代码转换成中间语言,之后再执行
如果要在python中拷贝一个对象,大多时候你可以用copy.copy()或者copy.deepcopy()。但并不是所有的对象都可以被拷贝
在python中,对象赋值实际上是对象的引用。浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变,而深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
使用函数os.remove(‘file’)
可以使用自带函数str()将一个数字转换成字符串。如果你想要八进制或者十六进制数,可以用oct()或hex()
python的内存管理是由私有heap空间管理的。所有的python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才能对它进行操作。为python的heap空间分配内存是由python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员使用。python有自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用
以list作为参数将tuple类初始化,将返回tuple类型
以tuple作为参数将list类初始化,将返回List类型
在python中用于生成随机数的模块是random,在使用前需要导入import:
如果要给全局变量在一个函数里赋值,必须使用global语句。global VarName的表达式会告诉python,VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了
首先遍历链表,寻找是否有相同地址,借此判断链表中是否有环。如果程序进入死循环,则需要一块空间来存储指针,遍历新指针时将其和存储的旧指针对比,若有相同指针,则该链表有环,否则将这个新指针存下来后继续往下读取,直到遇见NULL,这说明这个链表没有环
常用的有以下这几种方法:os.path.walk(),os.walk(),listdir
分表可以通过三种方式:mysql集群、自定义规则和merge存储引擎。
分区有四类:
RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区
LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择
HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含Mysq中有效的、产生非负整数值的任何表达式
KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供自身的哈希函数。必须有一列或多列包含整数值
开源,即开放源代码。开源诞生于软件行业,它不仅仅代表软件源代码的开放,本身即意味着自由、共享和充分利用资源。开源是一种精神,是一种文化,如今已经成为软件业发展的大势所趋
MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起。MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义有些许不同
如下是死锁产生的四个必要条件:
互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占用资源的进程用毕释放
请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放
不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放
环路等待条件:指在发生死锁时,必然存在一个进程–资源的环形链,即进程集合{P0,P1,P2,…,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,…,Pn正在等待已被P0占用的资源
程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行
产生Sql注入,下面是防止办法:
XSS漏洞难以检测,但是为了WEB安全仍需要尽力避免
针对反射型和存储型XSS,需要服务端和前端共同预防,针对用户输入的数据做解析和转义,对于前端开发而言,则是善于使用escape,针对data URI内容做正则判断,禁止用户输入非显示信息
对于DOM XSS,由于造成XSS的原因在于用户输入,因此在前端,需要特别注意用户输入源,并对可能造成的XSS的操作需要进行字串转义
密钥的生成是通过使用全局配置完成的:对于不可能输出密钥是
对于中间人的攻击。可以采用如下防范手段:
进行代码管理,可举例告知如何使用git,(或是其他工具)进行追踪
数组在python中叫做列表。列表可以修改,而元组不可以修改,如果元组仅有一个元素,则要在元素后加上逗号。元组和列表的查询方式一样。元组只可读不可修改,如果程序中的数据不允许修改可用元组
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法
也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数
‘单下划线’开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量
‘双下划线’开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问这个数据
Import 方法改变了类,new方法,但是只是把所有实例对象共享属性,每次产生一个新对象。算作伪单例,共享属性方法实例化了许多个相同属性。所以,装饰器方法最为实用