- 博客(100)
- 收藏
- 关注
原创 python协程---2 await使用方式
await使用原则await + 可等待对象(协程对象,future,task ->== io等待)1.1 await + 协程对象import asyncioasync def func1(): print(1) await asyncio.sleep(2) print(2) return "返回值"async def func2(): print(3) await func1() print(4) return "返回值"
2021-07-27 15:31:35
7298
原创 python的协程---1.基本定义和操作
异步非堵塞 asyncio很多框架像协程靠近,fastapi ,tornado,aiohttp,都在像异步方向靠->提升性能1.协程1.1协程不是计算机提供的,人为创造出来(也有叫法-微线程)1.2.用户态上下文切换技术1.3.实现协程的方法#1.greenlet早期模块#2.yield 关键字#3.asyncio装饰器(3.4)#4.await,async(3.5)推荐实现协程方式1.1 greenlet实现协程import asynciofrom greenlet im
2021-07-27 10:17:33
167
原创 python当中的魔法方法
1. slots 规定类中可以设置的属性# 使用__slots__,限制实例当中的属性,不能定义规定之外的属性class ClassTest(): __slots__ = ("name","age") pass# classTest01 = ClassTest()# classTest01.sex = "nan"# print(classTest01.sex)# AttributeError: 'ClassTest' object has no attribute 'sex'
2021-07-26 14:42:33
131
原创 python的arg、*args、 ** kwargs三个参数
注意点:参数arg、*args、 ** kwargs三个参数的位置必须是一定的。必须是(arg, *args, **kwargs) 这个顺序,否则程序会报错。def test_arg(arg): print(type(arg)) print(arg)def test_args(arg,*args): print(type(arg)) print(arg) print(type(args)) print(args)def test_kwargs(arg
2021-07-26 09:53:23
453
原创 heapq基本用法
"""从列表中找出最大的或最小的N个元素堆结构(大根堆/小根堆)"""import heapqif __name__ == '__main__': # heapq.heappush 参数1用于排序的空列表,参数二需要被排序的列表,键入对排列中,被排序 # heapq.heappop(heap)弹出堆排序列表中一个元素 nums = [2, 3, 5, 1, 54, 23, 132] heap = [] for num in nums: h
2021-07-23 15:41:06
552
原创 pytest的fixture固件
Pytest 使用 yield 关键词将固件分为两部分,yield 之前的代码属于预处理,会在测试前执行;yield 之后的代码属于后处理,将在测试完成后执行。@pytest.fixture()def db(): print('Connection successful') yield print('Connection closed')def search_user(user_id): d = { '001': 'xiaoming' }
2021-07-20 16:54:06
154
原创 pytest的mark使用
@pytest.mark标签使用1. @pytest.mark.skip(reason=’’)跳过运行@pytest.mark.skip(reason="run failed")def test_two(): a = "1" assert hasattr(a,"1")运行结果testCase2.py::test_two SKIPPED (run failed) 2. @pytest.mark.skipif(条件,reason=’’)跳过运行@pytest.mark.ski
2021-07-20 15:43:38
494
1
原创 pytest断言异常
import pytestdef test_raises(): with pytest.raises(TypeError) as e: a = 1 + "1" exec_msg = e.value.args[0] print("___",exec_msg) assert exec_msg == "unsupported operand type(s) for +: 'int' and 'str'"在测试过程中,经常需要测试是否如期抛出预期的异常,以确定异
2021-07-20 14:50:24
322
转载 ubuntu18.04安装python
使用Apt在Ubuntu 18.04上安装Python 3.8使用apt在Ubuntu 18.04上安装Python 3.8是一个相对简单的过程,只需几分钟:1、以root用户或具有sudo访问权限的用户身份运行以下命令,以更新软件包列表并安装必备组件:$ sudo apt update$ sudo apt install software-properties-common2、将Deadsnakes PPA添加到系统的来源列表中:$ sudo add-apt-repository ppa:
2021-04-14 19:23:33
3941
1
原创 Android源码的m,mm,mma,mmm,mmma
build/envsetup.sh #这个脚本用来设置android的编译环境;lunch #选择交叉编译链make(android目录下,编译整个android)1.m==make2.mm(编译当前目录,不编译他的依赖)3.mma(编译当前目录,编译他的依赖)4.mmm(编译制定目录,不编译他的依赖)5.mmma(编译制定目录,编译他的依赖)(mma 如果你未曾完整编译过整个android工程,那么在使用mm或者mmm的时候可能会遇到无法找到某些依赖库的情况,这时你可以用mma.
2020-08-26 14:35:29
1105
原创 fastboot刷机
一、刷机方法1.1 首先介绍Recovery模式(卡刷)(sd卡进行刷机)1.2 介绍Recovery模式(线刷)(通过链接usb数据线,进行刷机,通过fastboot) adb devices adb reboot bootloader fast devices二、烧写制定分区fastboot flash [*.img]烧写全部分区(fastboot flashall)$ sudo fastboot flash boot path-to-kernel/boot.img$ sudo f
2020-08-10 14:43:50
745
原创 安裝ubuntu18.04安装android studio(2)
安裝android(創建文件夾mkdir /usr/lib/android_studio)1、先从官网下载android studio:Android Studio (安装前应先安装JDK环境)https://developer.android.google.cn/studio/2、解壓sudo tar -zxvf android-studio-ide-191.5977832-linux.tar.gz -C /usr/lib/android_studio3、安裝1、進入cd /usr/lib/a
2020-07-26 14:46:10
363
原创 安裝ubuntu18.04安装android studio(1)
1、安裝java下載JDK1、前往oracle Java官网下载JDK(http://www.oracle.com/technetwork/java/javase/downloads/index.html)2、解压缩到指定目录(以jdk-8u191-linux-x64.tar.gz为例)创建目录:sudo mkdir /usr/lib/java解压缩到该目录:sudo tar -zxvf jdk-8u261-linux-arm64-vfp-hflt.tar.gz -C /usr/lib/ja
2020-07-26 14:32:10
486
原创 利用U盘安装系统
1、下载Universal USB Installer,把影像文件写入U盘https://universal-usb-installer.en.softonic.com/2、下载影像阿里云ubuntu下载 http://mirrors.aliyun.com/ubuntu-releases3、安装在Setp 1选择Ubuntu,我选择的是64位的。在Setp 2选择 ubuntu-16.04-desktop-amd64.iso文件在Setp 3选择 U盘,U盘在哪里呢,在这里 h
2020-07-25 17:35:18
212
原创 python 通过命令行传递参数sys.avgs
import syspath = sys.argv[1]pathexcel = sys.argv[2]print(path,type(path))print(pathexcel,type(pathexcel))
2020-07-17 15:55:05
587
原创 ubuntu18安装python和pycharm
1、ubuntu18自带python3.6.92、安装python3和python2 1、sudo add-apt-repository ppa:deadsnakes/ppa 2、sudo apt install python3.8 3、sudo apt install python2.7 您可以在终端中运行命令以清除PPA,PPA也会删除已安装的3.8软件包:sudo apt install ppa-purge && sudo ppa-purge ppa:deadsnakes/
2020-07-17 14:06:00
389
原创 算法题:python取不重复最长字串
# !/usr/bin/env python# -*- coding: utf-8 -*-str = input("请输入字符串")def max_str_len(str): # 取出字符串长度 lenght =len(str) # 用于存放不重复字符 list = [] # 判断字符串是不是空 if lenght==0: return 0 else: num = 1 for i in range
2020-07-01 13:37:28
146
原创 python读取文件的面试题
# !/usr/bin/env python# -*- coding: utf-8 -*-# 加中间值import codecswith open("./test.txt","r") as fp: txt = fp.readlines()print(txt)sum = 0for i in txt: sum+=int(i[1])print(sum)# 从每一行截取出一点数据f = codecs.open('test.txt', mode='r', encodin
2020-06-30 17:21:10
199
原创 算法题02:不用第三个变量交换值
1、int型a = a+bb = a-ba = a-b2、python方法a,b = b,a3、位运算a=a^b;b=a^b;a=a^b;
2020-06-30 15:25:49
106
原创 算法题01:字符串倒序
python# !/usr/bin/env python# -*- coding: utf-8 -*-str = "abc"rts = ""for i in str: rts = i + rtsprint(rts)
2020-06-30 14:51:54
168
原创 关于内存泄漏的面经
1、什么是内存泄漏 当一个对象本应该回收释放资源,但是另外一个正在使用的对象正在持有他的引用,导致他无法回收,从而长时间或者永久停留在堆内存中,失去对资源的控制、造成资源的浪费,叫内存泄漏。(本质:本该回收的对象发现还有其他对象的引用导致无法回收)内存泄漏图解版(!!关注生命周期)当A的生命周期比B的生命周期长,B对象没有被应用程序使用之后,A对象仍然在引用着B对象,这样到这无法垃圾回收B,当B和A都有这样情况还有其他引用造成更多的泄漏2、内存泄漏的影响 内存泄漏是造成OOM(内存用尽)的原因
2020-06-25 09:43:35
285
原创 IP的子网和超网划分
1、IP是确定主机的位置 IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。 IP被分为四部分,八位代表一字节,八位,最大2552、分类编制3、特殊网址 1、每一个字节都为0的地址(“0.0.0.0”)对应于当前主机; 2、IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址; 3、IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到1
2020-06-21 11:31:20
2448
原创 Java的装箱和拆箱
1 装箱和拆箱装箱将基本数据类型,变成包装类拆箱把对应的包装类转化为基本数据类型2 自动拆箱和自动封箱public class Main { public static void main(String[] args) { //自动装箱 Integer total = 99; //自定拆箱 int totalprim = total; }}自动的过程Integer total = 99;执行上面那句代码的时候,系统为我们执行了:Inte
2020-06-20 09:27:53
155
原创 偏向锁、轻量级锁、重量级锁、自旋锁、
锁优点缺点使用场景偏向锁加锁和解锁不需要额外的消耗,无需上下文切换和CSA操作,提高了效率如果锁之间存在竞争,会自动升级为轻量级锁,增加消耗适用于只有一个线程访问同步块场景轻量级锁在竞争锁时候不会发生堵塞,从而提高响应速度如果一直不能获取锁的时候,会自旋消耗cpu追求响应速度,同步块执行速度非常快重量级锁线程竞争不使用自旋,不会消耗CPU线程阻塞,响应时间缓慢追求吞吐量,同步块执行速度较长自旋锁自旋锁尽可能的减少线程的阻塞,这对于锁的竞争不激烈,...
2020-06-20 09:02:52
181
原创 DNS域名解析and浏览器输入URL后操作
1、DNS域名解析1、浏览器查找自己的DNS缓存,是一个DNS与IP的对应表2、如果没有则询问操作系统的DNS、查找3、如果没有、操作系统将域名发送至本地域名服务器,域名服务器查找4、如果没有则是 1、本地域名服务器向根域名服务器发送请求,根域名服务器返回com域顶级服务器域名地址 2、本地域名服务器向com域顶级域名发送请求,com域顶级域名服务器返回权限域名服务器地址 3、本地域名服务器向权限域名服务器发送请求,得到IP地址5、本地域名服务器得到IP将其返回操作系统,并且自己也保存6、
2020-06-19 16:39:26
232
原创 IP和TCP校验和、报文区别
1、IP和TCP的校验和IP1、先把校验和都置12、 对IP头部中的每16bit进行二进制求和;3、 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的值;4、 将该16bit的值取反,存入校验和字段。TCP与IP一样,只是把校验和装在伪首都中2、IP报文和TCP报文具体有那些TCPIP...
2020-06-18 21:39:17
702
原创 tcp如何实现安全可靠的传输
tcp如何实现安全可靠的传输1、校验和:判断数据是否被修改伪首部其内容为:32位源IP地址,32位目的IP地址,8位保留字节(置零),8位传输层协议号(TCP是6,UDP是17),16位TCP报文长度(TCP首部+数据)。伪首部的作用主要是增加TCP的校验和的检错能力:通过伪首部的目的IP地址来检查TCP报文是否收错了、通过伪首部的传输层协议号来检查传输层协议是否选对了。发送端:在发送前计算出校验和,会添加一个12字节的伪头部,默认校验和为全0,计算出数据和校验和的反码,所有反码进行相加,得出校验和,
2020-06-18 21:24:55
1328
原创 python常见面试题
1、队列、数组、链表、堆栈 数组和链表是数据存储的方式概念、数组是连续空间、链表是非连续空间 队列和堆栈是数据存取方式概念,队列是先进先出、堆栈后进先出。 队列和堆栈可以用数组来实现,也可以用链表实现。...
2020-06-10 15:13:24
119
转载 应用层
https://cyc2018.github.io/CS-Notes/#/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E5%BA%94%E7%94%A8%E5%B1%82
2020-06-07 22:19:33
157
转载 网络层
https://cyc2018.github.io/CS-Notes/#/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82
2020-06-07 22:07:45
99
转载 传输层
https://cyc2018.github.io/CS-Notes/#/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E4%BC%A0%E8%BE%93%E5%B1%82
2020-06-07 22:07:13
109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人