- 博客(7)
- 收藏
- 关注
原创 Python中的浅copy与深copy
Python中的浅copy与深copy今天在leetcode上刷题的时候,碰到了一道关于链表复制的题,因为自己也对深拷贝与浅拷贝模模糊糊的感觉,索性趁着今天就把他解决了。搜了一些博客,感觉还是不是特别明朗,毕竟别人写的,自己去理解还是会差点意思。实践出真知,还是自己动动手吧。import copy# 数字与字符num = 123s = '123'# 直接赋值num_1 = nums_1 = s# 浅copynum_2 = copy.copy(num)s_2 = copy.co
2020-09-23 14:12:32 133
原创 计算机网络--TCP/IP四层模型
TCP/IP四层模型在了解TCP/IP四层模型前,我们先来了解一下OSI七层结构。OSI七层模型虽然OSI七层模型划分的很完美,但是在实际应用当中有一些层的工作是重复的,所以出现了更贴近实际的TCP/IP四层模型。TCP/IP四层模型其实也就是将一些出现重复工作的层进行合并。比如将数据链路层和物理层合并为了网络接口层,现在请看图。TCP/IP四层模型各层之间是相互独立的,也就是说每一层不需要直到相邻层是如何实现的,层与层之间的耦合度是非常低的。根据TCP/IP模型,数据是如何传输的,现在贴一
2020-09-21 15:43:45 4704
原创 操作系统--进程与线程
进程与线程进程是系统进行资源分配的基本单位,而线程是操作系统进行运行的最小单位。每一个进程可以包含一个或多个线程。进程与线程的对比:每一个进程都拥有一个PCB(进程控制块),其中包含了关于进程的相关信息,比如标识符,状态,优先级等。PCB:进程管理的五大状态1.就绪状态:创建完进程,获得其他资源后,就等待获得CPU时间片2.阻塞状态:因为某些原因放弃CPU时间片3.执行状态:就绪状态下,获得CPU时间片4.新建状态:分配PCB,插入就绪队列。创建进程时拥有PCB但其他资源未就绪
2020-09-20 11:11:05 171
原创 用双向链表实现内存置换算法(四)
用双向链表实现内存置换算法(四)这一篇是使用双向链表实现第三个内存置换算法----LFULFU算法分析:最不经常使用算法,在缓存满了的时候,先淘汰使用频率最少的,这里我们就需要用一个变量来记录数据的使用频率。但是会有一个情况,就是使用频率相同的时候如何去处理,这里我是采用map来记录,key为使用的频率,value是双向链表,当缓存满了的时候,找到最低频率的value,根据FIFO的规则去淘汰。第一步,我们先给每一个节点增加一个记录频率的属性class LFUNode(Node):
2020-09-19 16:21:58 167
原创 用双向链表实现内存置换算法(三)
用双向链表实现内存置换算法(三)这一篇是用双向链表实现LRU算法:算法思路:假如我们的缓存可以缓存4个子块:缓存中不存在要放入的字块时,把子块放在链表的头部如果缓存中存在相同子块,则把这一字块移到链表的头部。缓存满了,放入新的字块时,把尾部的字块移除。下面附上代码:class LRUCache: def __init__(self, capacity): self.capacity = capacity self.map = {}
2020-09-19 15:15:29 104
原创 用双向链表实现内存置换算法(二)
用双向链表实现内存置换算法(二)FIFO(First in first out)这里使用之前实现了的双向链表来实现FIFO算法。FIFO算法还是比较好理解的,如果内存满了,则最先淘汰先进入的。直接上代码:from DoubleLinkedList import DoubleLinkedList, Nodeclass FIFOCache: def __init__(self, capacity): self.capacity = capacity se
2020-09-19 11:46:05 131
原创 用双向链表实现内存置换算法(一)
用双向链表实现内存置换算法(一)最近学了一门关于计算机网络的课程,把所学知识做一个总结,程序员不做技术积累还是不行的。第一次写Blog,慢慢积累吧,废话不多说,开始!双向链表在使用双向链表实现内存的置换算法,我们需要了解双向链表的数据结构是怎么样的。双向链表是链式结构的,可以理解成蚯蚓,两头都可以进行操作,一个节点连着一个节点。每一个节点都存储着上一个节点和下一个节点的地址。好了,双向链表大致的结构就是这样,接下来就开始来实现它吧。因为双向链表是需要一个一个节点串联起来的,首先需要来定
2020-09-18 16:50:16 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人