自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 HTTPS 实现流程

HTTPS协议其实就是HTTP over TSL,基础的HTTP通信是明文的,有三大风险:信息被窃听,信息被篡改,身份的冒充。TSL协议就是为防范这些风险存在的。TSL使用非对称加密保护下的对称加密在保证了通信效率的同时防止窃听,使用证书体系防止信息篡改和身份冒认。注意:TSL协议握手阶段的通信是明文进行的1.浏览器发送ClientHello其中包含了浏览器支持的TSL协议的版本,支持...

2019-05-24 22:13:48 3150

原创 对称加密和非对称加密,证书体系

对称加密通信几方使用相同的密钥,发送者使用该密钥加密数据,接收者通过同样的密钥解密数据。缺点是在通信前双方需要持有同一个密钥,在密钥同步的过程中可能发生泄漏。非对称加密每个通信方都拥有一对公钥和私钥,公钥是对外界公开的,私钥仅通信方自己知道,二者是对应的,使用公钥加密的信息,必须是对应的私钥才能解密,反之使用私钥加密的信息,必须是对应的公钥才能解密。也就是说,通信的前提是双方持有对方的公钥即...

2019-05-24 21:23:34 458

原创 Session 和 Cookie

由于HTTP访问是无状态的,所以服务器无法区分哪些请求是来自于同一个用户,让一个用户每次访问都需要身份验证是很蠢的,为了解决这一问题,一种客户端的解决方案是cookie,另有一种服务端的解决方案是session,他们都是为了让服务器知道“上一次是你,这一次又是你”。Cookie用户第一次登陆成功后,服务器在响应报文的响应头中会增加一个Set-cookie:cookie字段,cookie中一般保...

2019-05-24 20:10:40 189

原创 Python 线程间的同步机制3: Event, Timer, Barrier

Event首先有一个全局的Event对象: e = threading.Event()调用e.wait()时,如果内置的标志为True,则直接返回True,如果内置的标志为False,则挂起,直到内置标志变为True,或直到time out。某个号令线程可以通过e.set()把内置标志设为True,e.clear把标志设为False。就想过十字路口红绿灯一样,所有车辆在路口前都要执行e.w...

2019-05-24 19:15:30 301

原创 Python 线程间的同步机制2:Rlock 和 Condition

Rlock我们前面说过了Lock,python的threading库中还提供了一个可重入锁Rlock。还记得吗,对于Lock,我们不能说Lock被某个线程持有,或Lock属于某个线程,因为一个线程使用acquire使锁进入locked态,任何线程都可以调用release把锁“打开”——恢复unlocked态。这里的Rlock相比于Lock,增加了两个特性。1.Rlock锁是被某个线程持有的...

2019-05-24 18:43:02 301

原创 Python 线程间的同步机制1:Lock锁和Semaphore信号量

1.信号量:Semaphore信号量的本质是一个计数器,某个线程调用信号量的.acquire()方法时,如果当前计数器>0,则计数器-1,某个线程调用.release()方法时,计数器+1。acquire(blocking = True,timeout=None)如果当前计数器不为0,acquire()返回True,如果当前计数器值为0,后续的所有acquire()都会被阻塞。设置b...

2019-05-24 16:41:52 355

原创 Python 线程和进程

没有深入学习过操作系统,说一下我对线程,进程的粗浅理解。首先要说明并发和并行这两个概念。并发:在一个宏观的时间段上,多个程序同时运行。也就是说只要任务切换得够快,看起来多个任务就是在同时执行。单核CPU也可以实现并发,调度器把CPU分为一段一段的运行片让多个程序交替执行,这样看起来就好像同时执行一样。并行:在一个微观的时间点上,多个程序同时运行。并行至少需要多核CPU才能实现,对于一个...

2019-05-24 14:42:15 169

原创 Python中的生成器和协程,yield和yield from

生成器实现协程功能一个简单的实现协程功能的生成器函数def coro(): n = 0 while n < 100: print('I love u.') ask = 'Do u love me?' answer = yield ask print('You answer is...', answer) ...

2019-05-23 23:57:52 350

原创 Python 可迭代对象,迭代器和生成器

凭脑海中的印象回忆这三个概念:可迭代对象凡是实现了可迭代协议 __iter__的对象都是可迭代对象(通常是序列型的对象),实现了__iter__协议的方法都可以通过for ... in ...语句进行遍历。但是是否一定要实现__iter__才能用迭代呢?并不是,因为python太智能了。。。如果对一个类实现了一个__getitem__方法,python会在for遍历的时候查找有没有__i...

2019-05-23 21:32:11 171

转载 Python 中的 else

Python中我们最常使用的else是用在if…else组合中的,在if …为False时执行else block。与if /else语义差别很大的还有一些特殊的else:1.for/while 的 elsefor/while ...else...else block 在循环或迭代正常退出时才执行(与正常退出相对的是while循环或for迭代被break终止)2.try / exc...

2019-05-23 20:05:22 296

原创 Python 中的上下文管理器

Python 中的上下文管理器with expression [as target]: with-body上下文管理器是为with 语句而生,要想使用with 语句,必须实现上下文管理器协议:__enter__和__exit__,只要实现了这两个特殊方法,就可以使用with语句。__enter__通常执行一些初始化操作,并且该函数的返回值会赋值给可选的 as target 中的t...

2019-05-23 19:57:23 1158

原创 python 中的装饰器和闭包

有时候看了不少书、文档、博客,有的知识我以为自己已经掌握了,但让我用自己的话讲出来却全无思路,只能吐出几个关键概念,所看的东西并没有真正形成体系。学习编程的过程中我相信这样一种检验标准——能讲得出才是真的懂。我想要达到的标准是能用自己的话把一个知识点的整个流程向一个不懂的人讲明白,所以平时如果有片段化的空闲时间,我都会在脑海里,或者对着空气向一个“不存在的人”讲我最近学习的一些知识来检验是否理解...

2019-05-23 19:07:01 233

原创 Python asyncio模块:异步I/O 初探协程

Python中的asyncio是一个使用事件循环驱动的协程实现高并发的标准库。下面简单记录asyncio的学习心得。定义一个协程函数asyncio文档中特别强调要区分协程函数和协程对象的区别:a coroutine function: an async def function;a coroutine object: an object returned by calling a coro...

2019-04-23 00:21:29 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除