![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
杂记
qq_41386300
这个作者很懒,什么都没留下…
展开
-
杂记
应用层:直接为用户的应用程序提供服务传输层:为两台主机中进程之间的通信提供服务网络层:为网络上不同主机间提供分组的传输服务数据链路层:传输有地址的帧及错误检测GIL:全局解释器锁,只允许一个线程来控制python解释器,适用于I/O密集型多线程程序,因为在等待I/O时锁可以在多线程间共享,对于cpu密集型,不仅会使多线程变成单线程,执行时间也会变长(因为获取和释放锁的开销)HTTP(超文...原创 2019-05-31 23:45:54 · 97 阅读 · 0 评论 -
输入一个网址请求到响应的过程
当我们在浏览器中输入一个网址,比如www.google.com,浏览器就会加载出百度的主页。那么浏览器背后完成的具体是怎么样的呢?总结起来大概的流程是这样的:(1)浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP(2)然后通过IP地址找到IP对应的服务器后,要求建立TCP连接(3)浏览器发送完HTTP Request(请求)...原创 2019-06-01 23:01:00 · 970 阅读 · 0 评论 -
URI和URL的区别
URL :统一资源定位符URI: 统一资源标识符URN:统一资源命名。即通过名字来表示资源的。URL是URI的一个子集统一资源标志符URI:就是在某一规则下能把一个资源独一无二地标识出来。拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们...原创 2019-06-01 23:13:25 · 102 阅读 · 0 评论 -
静态内存与动态内存的区别
静态内存静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源。程序中的各种变量,在编译时系统已经为其分配了所需的内存空间,当该变量在作用域内使用完毕时,系统会自动释放所占用的内存空间。变量的分配与释放,都无须程序员自行考虑。eg:基本类型,数组动态内存用户无法确定空间大小,或者空间太大,栈上无法分配时,会采用动态内存分配。区别...原创 2019-06-04 22:04:54 · 325 阅读 · 0 评论 -
乐观锁与悲观锁
悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先拿锁。它指的是对数据被外界(包括本系统当前的其他事务...原创 2019-08-19 17:52:03 · 98 阅读 · 0 评论 -
自旋锁
什么是自旋锁?自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无...原创 2019-08-19 18:17:05 · 114 阅读 · 0 评论