python在律师上作中的实例_python-基础面试题

深拷贝

1.对象A拷贝,生成对象B,且我们修改对象B(对象A)中的数据或方法,对象A(对象B)不会受影响,这就是深拷贝

2.对于可变与不可变类型

对于不可变类型,深拷贝会和浅拷贝一样,拷贝的是引用,不会创建新的内存地址

对于可变类型,深拷贝会拷贝每一层,新建内存地址进行储存

浅拷贝

1.对象A拷贝,生成对象B,且我们修改对象B(对象A)中的数据或方法,对象A(对象B)会受影响,这就是浅拷贝

2.(浅拷贝是对一个对象父级(最外层)的拷贝,并不会拷贝子级(内部))

对于不可变类型,浅拷贝仅仅是地址指向,不会开辟新空间

对于可变类型,浅拷贝只是引用原数据,会跟着原数据的改变而改变

可变与不可变数据类型

可变数据类型 :可以在原数据的基础上进行修改,修改后内存地址不变

常见的可变类型

列表(list)、字典(dictionary)、集合 (set)

不可变数据类型:不能在原数据基础上进行修改,重新赋值后内存地址改变

常见的不可变类型

字符串(str)、数字(number)、元组 (tuple)

垃圾回收机制

引用计数

当一个对象的引用被创建时,对象的引用计数加1,当一个对象的引用被移除时,对象的引用就是减1,当对象的引用计数为0时,就意味着对象已经不再被使用,可以将其内存释放掉

标记清除

标记清除 是 建立在引用计数技术基础之上

当引用计数为0的时候就给这个对象打上一个标签”可清除“,但是不会立马清除,而是会等到系统给程序分配的内存要用完之时,停下来将可清除标签的对象销毁然后继续。

分代回收

分代回收 是 建立在标记清除技术基础之上

分代回收共分为三个“代”:年轻代、中年代、老年代,他们对应的是3个链表,它们的垃圾收集频率与对象的存活时间的增大而减小

新创建的对象都会分配在年轻代,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到中年代去,

当中年代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到老年代去,

依此类推,老年代中的对象是存活时间最久的对象,甚至是存活于整个系统的生命周期内

同时,分代回收是建立在标记清除技术基础之上。分代回收同样作为Python的辅助垃圾收集技术处理那些容器对象.

TCP/UDP

TCP

TCP 文件的上传下载(发送邮件、网盘、缓存电影)

1. 可靠、慢、全双工通信

2. 建立连接的时候 : 三次握手

3. 断开连接的时候 : 四次挥手

4. 在建立起连接之后

- 发送的每一条信息都有回执 *

- 为了保证数据的完整性,还有重传机制

5. 长连接 :会一直占用双方的端口

6. IO(input,output)操作,输入和输出是相对内存来说的

- write / send -----> 输出output

- read / recv ------> 输入input

7. 能够传递的数据长度几乎没有限制

TCP三次握手

TCP三次握手

第一次握手:建立连接时,客户端发送SYN包到服务端,并进入SYN_SENT状态,等待服务器确认。

SYN:同步序列编号

第二次握手:服务器收到SYN包,必须确认客户的SYN包,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入,ESTABLISHED(TCP连接成功)状态,完成三次握手。

TCP四次挥手

第一次挥手:首先客户端向服务端发送断开请求

(客户端发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认。其中终止标志位FIN=1,序列号seq=u)

第二次挥手:服务端向客户端进行回复

(服务器收到这个FIN,它发送一个ACK,确认ack为收到的序号加一)

第三次挥手:服务端向客户端断开请求

(关闭服务器到客户端的连接,发送一个FIN给客户端)

第四次挥手:客户端收到消息后进行回复

(客户端收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加一。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭)

UDP

- 1.无连接的 速度快

- 2.可能会丢消息

- 3.能够传递的数据的长度是有限的,是根据数据传递设备的设置有关系

UDP 即时通信类的(qq、微信、飞秋)

TCP/UDP的区别和优缺点

UDP是面向无线连接的通讯协议,UDP数据包括目标端口和源端口信合

优点:UDP传递速度快、操作简单、系统资源占用较少,由于通讯不需要连接,可以实现广播发送

缺点:UDP传输数据前并不与对方建立连接,对接受的数据不用发送确认信号,发送端不清楚数据是否成功发送,也不会重复发送,不可靠

TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手,关闭连接

优点:TCP在数据传递时,有确认、窗口、重传、阻塞等等控制机制,能保证数据正确性,较为可靠

缺点:TCP相对于UDP速度慢一些,对系统资源占用较多

HTTP发送请求的流程

1.1 浏览器根据域名解析IP地址

1.2 浏览器与WEB服务器建立一个TCP连接

TCP的3次握手。

1.3 浏览器给WEB服务器发送一个HTTP请求

一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。其中有get和post请求 说一下两个请求的应用场景

1.4 服务器端响应HTTP请求,浏览器得到HTML代码

1.5 浏览器解析HTML代码,并请求HTML代码中的资源

1.6 关闭TCP连接,浏览器对页面进行渲染呈现给用户

HTTP常见的状态码

1. 100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求能完成整个处理过程。

2. 200-299:表示服务器成功接收请求并已经完成处理,常用200(ok请求成功)。

3. 300-399:为完成请求,客户需要进一步细化请求,例如:302(所有请求页面已经临时转移新的url),304,307(使用缓存资源)。

4. 400-599:服务器出现错误,常用500(请求未完成,服务器内部遇到不可预知的错误)

HTTP常见的请求头

1. Host(主机和端口号)

2. Connection(连接类型)

3. Upgrade-Insecure-Requests(升级为HTTPS请求)

4. User-Agent(浏览器名称)

5. Accept(传输文件类型)

6. Referer(页面跳转处)

7. Accpet-Encoding(文件编解码格式)

8. Cookie(Cookie)

9. x-requested-with:XMLHttpRequest(Ajax异步请求)

如何解决HTTP黏包问题

重新在写一个http协议就行

工作中常用到的python第三方库有哪些 还有一些包

re os sys json

进程线程协成

进程

进程是资源分配的最小单位

进程之间数据不共享 ,所以需要进程通信

通信的三种方式

1. 进程队列queue

2. 管道pipe

3. 共享数据manage

进程池

开多进程是为了并发,通常有几个cpu核心就开几个进程,但是进程开多了会影响效率,主要体现在切换的开销,所以引入进程池限制进程的数量。

这时候就用到了进程池,进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。

线程

1. 线程是操作系统能够进行运算调度的最小单位

2. 线程是包含在进程中的

3. 进程自己是无法执行的,是靠线程进行执行的

线程池

1. 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。

2. 线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它。当该函数执行结束后,该线程并不会死亡,而是再次返回到线程池中变成空闲状态,等待执行下一个函数。

协成

什么是协程

1. 协程是微线程

2. 协程拥有自己的寄存器上下文和栈

3. 协程能保留上一次调用时的状态

为什么能处理并发

1. 遇IO组自动切换

2. 内部封装的有Greenlet模块(遇到IO手动切换) 和 Gevent模块(遇到IO自动切换)

Greenlet

遇IO操作 手动切换

Gevent

Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程

其实Gevent模块仅仅是对greenlet的再封装,将I/O间的手动切换变成自动切换

Gevent原理是只要遇到I/O操作就会自动切换到下一个协程

迭代器、生成器、装饰器

装饰器应用场景

1. 引入日志

2. 函数执行时间统计

3. 执行函数前预备处理

4. 执行函数后清理功能

5. 权限校验等场景

6. 缓存

7. 事务处理

装饰器必须准寻的原则

1. 不修改被装饰器的函数的源代码

2. 不修改装饰器函数的调用方式

3. 在满足前者条件的情况下增加额外的功能

静态方法,类方法,属性方法,魔法方法

1.静态方法需要修饰器@staticmethod来标识,告诉解释器这是一个静态方法

特性: 静态方法只是名义上归类管理,实际上在静态方法里访问不了类或则实例中的任何属性

2.类方法需要修饰器@classmethod来标识,告诉解释器这是一个类方法

作用:无需实例化直接被类调用

特性: 类方法只能访问类变量,不能访问实例变量

3.属性方法需要修饰器@property来标识,告诉解释器这是一个属性方法

4.__ doc __  表示类的描述信息

__ call __ 对象后面加括号,触发执行

__ str __ 如果一个类中定义了__ str __方法,在打印对象时,默认输出该方法的返回值

__ dict __ 查看类或对象中的所有成员

new和init的区别

1、 new是一个静态方法,而init是一个实例方法.

2、 new方法会返回一个创建的实例,而init什么都不返回.

3、 只有在new返回一个cls的实例时后面的init才能被调用.

4、 当创建一个新实例时调用new,初始化一个实例时用init.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017 校招华为上机题

1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母, a 换成b,z 换成a,Z 换成A,如aBf 转换成bCg,字符串内的其他字符不改变,给定函数,编写函数void Stringchang&#xff0…

JSON –拯救杰克逊

有时您必须使用JavaScript从服务器中获取一些数据, JSON是完成此任务的不错选择。 让我们玩一下JPA揭秘(第1集)-OneToMany和ManyToOne映射中的“雇主-雇员-福利”示例。 我们将在基于Spring Framework的Web应用程序中使用它。 我们的第一个…

maven 使用记录之修改 maven默认jdk版本

maven package执行的时候会遇到jdk版本不对的问题 &#xff1a;原因是 maven所指定的jdk版本与项目使用的jdk版本不一致1.项目属性的 java compiler可以设置2.直接修改 maven 的 settings.xml 一劳永逸settiings.xml <profiles>标签内加入<profile> <id>j…

java默认值_Java中八种基本数据类型的默认值

通过一段代码来测试一下 8种基本数据类型的默认值package dierge;public class Ceshi {int a;double b;boolean c;char d;float f;byte e;long h;short j;public static void main(String args[]){Ceshi anew Ceshi();System.out.println("整型的默认值是&#xff1a;&quo…

HDU - 1024 Max Sum Plus Plus 最大m段子段和+滚动数组优化

给定n个数字&#xff0c;求其中m段的最大值&#xff08;段与段之间不用连续&#xff0c;但是一段中要连续&#xff09; 例如&#xff1a;2 5 1 -2 2 3 -1五个数字中选2个&#xff0c;选择1和2 3这两段。 dp[i][j]从前j个数字中选择i段&#xff0c;然后根据第j个数字是否独立成一…

JavaFX教程–基础

JavaFX似乎正在RIA领域获得发展。 有了正确的工具和开发支持&#xff0c;它肯定会在下一个最佳技术“物”上付出巨大的代价。 我没有在这里写任何JavaFX评论&#xff0c;因为有很多技术评论可能对它进行了广泛的评论&#xff0c;但是&#xff0c;我将编写一个简单的教程&#x…

java script this_JavaScript this 关键字

JavaScript this 关键字面向对象语言中 this 表示当前对象的一个引用。但在 JavaScript 中 this 不是固定不变的&#xff0c;它会随着执行环境的改变而改变。在方法中&#xff0c;this 表示该方法所属的对象。如果单独使用&#xff0c;this 表示全局对象。在函数中&#xff0c;…

trim函数的作用 $.trim(str)

去掉字符序列左边和右边的空格转载于:https://www.cnblogs.com/dandeliongogo/p/6610890.html

php数据库备份脚本

// 备份数据库 $host "localhost"; $user "root"; //数据库账号 $password ""; //数据库密码 $dbname "mysql"; //数据库名称 // 这里的账号、密码、名称都是从页面传过来的 if (!mysql_connect($host, $user, $password)) // 连接…

java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

资源名称&#xff1a;《Java Swing图形界面开发与案例详解》PDF内容简介&#xff1a;《Java Swing图形界面开发与案例详解》全书共20章&#xff0c;其中第1&#xff5e;2章主要介绍有关Swing的基础知识&#xff0c;包括Swing的基本概述、如何使用IDE开发Swing程序&#xff1b;第…

水晶球错觉

我注意到人们有时会避免进行彻底的测试。 对于某些人来说&#xff0c;这听起来像是伪造的&#xff0c;但是请听我说……我确实理解为什么会这样。 测试会产生被困的感觉&#xff0c;每引入一个新的测试&#xff0c;负担就会加重。 建立稳定&#xff0c;无干扰且质量保证的测试套…

Python—day3

1、字符串在C里边就是字符数组 Python里边一切事物都是对象&#xff0c;对象则是类创建的 2、set集合 set是一个无序且不能重复的元素集合 #!/usr/bin/env python# encoding: utf-8#set对象不能有重复s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

当引入第三方的框架的时候 容易产生以下问题&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如图&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 与 build settings栏中的Packaging中的Produc…

Google Guava v07范例

我们在TouK举办了一个名为“每周技术研讨会”的活动&#xff0c;即每个星期五的16:00&#xff0c;每个愿意参加的人都有一个演讲。 我们展示了我们在家学习和学习的东西&#xff0c;但是我们也设有一个公告板&#xff0c;上面有人们想听的话题。 上周MaciejPrchniak谈论了Cloju…

推荐一些经过实践检验的学习方法

作者做了多年的Java培训教师&#xff0c;也接触过不少初学者&#xff0c;根据多年的教学互动经验&#xff0c;总结了一些能少走弯路的学习方法&#xff0c;供大家参考。 第一&#xff0c;是要多学多练&#xff0c;这似乎是废话&#xff0c;但真正能非常上心学习的人还真是少数&…

使JFrame透明

首先创建一个带有滑块的框架&#xff0c;该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作业之成员介绍

Lab205的新鲜血液 很理所当然的&#xff0c;实验室的4枚“小鲜肉”在现代软工的课程上组成了一个team&#xff0c;作为一个负责的team长&#xff0c;我当然要放上组员们的自述啦&#xff01;&#xff08;为什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;谁让我是个傲娇的组长…

java自定义分页标签_自定义分页标签--仿javaeye分页效果

效果如图&#xff1a;1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤(1)开发自定义标签处理类。(2)建立*.tld文件。(3)在web.xml中增加自定义标签的定义。(4)在jsp中使用自定义标签。2、自定义标签类(1)继承javax.servlet.jsp.tagext.TagSupport(2)标签类属性&a…

Java隐藏代码

不久前&#xff0c;我遇到了字符串中不可见字符的问题。 因为它们是不可见的&#xff0c;所以它们确实会引起混乱。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序设计》第5周学习总结

1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点。 1.2 可选&#xff1a;使用常规方法总结其他上课内容。 学习了更多markdown的知识 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读&#xff1a;Child压缩包内源代码package parent;publi…