内存管理、磁盘和文件拾遗

内存管理、磁盘和文件拾遗

Part1. 内存管理

一个程序的可执行文件在内存中的结果,从大的角度可以分为两个部分:只读部分和可读写部分。只读部分包括程序代码(.text)和程序中的常量(.rodata)。
可读写部分(变量)大致可分为下面几个部分:

  • .data:初始化了的全局变量和静态变量
  • .bss:即 Block Started by Symbol,未初始化的全局变量和静态变量
  • heap:堆,使用 mallocreallocfree函数控制的变量,堆在所有的线程,共享库,和动态加载的模块中被共享使用。
  • stack:栈,函数调用时使用栈来保存函数现场,自动变量(即生命周期限制在某个 scope 的变量)也存放在栈中。

LeetCode算法-876. 链表的中间结点

LeetCode算法-876. 链表的中间结点

876. 链表的中间结点

题目

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

并发技术、进程、线程和锁拾遗

并发技术、进程、线程和锁拾遗

Part1. 多任务

计算机发展起初,CPU 资源十分昂贵,如果让 CPU 只能运行一个程序那么当 CPU 空闲下来(例如等待 I/O 时),CPU 资源就会被浪费,为了使 CPU 资源得到更好的利用,先驱编写了一个监控程序,如果发现某个程序暂时无需使用 CPU 时,监控程序就把另外的正在等待 CPU 资源的程序启动起来,以充分利用 CPU资源。这种方法称为 - 多道程序(Multiprogramming)

对于多道程序,最大的弊端是各程序之间不区分轻重缓急,对于用户交互式的程序来说,对 CPU 计算时间的需求并不多,但是对于响应速度却有比较高的要求。而对于计算类程序来说则相反,对响应速度要求低,但需要长时间的 CPU 计算。想象一个场景:我在同时在浏览网页和听音乐,我们希望浏览器能够快速响应,同时也希望音乐不停,这时候多道程序就没法达到我们的要求了。

如何成为有效学习的高手

《如何成为有效学习的高手》

前言

高效学习的定义是找到适合自己的学习方法,在最短的时间里能够集中注意力,以解决生活或工作中的一个任务为目的着手学习. 需要勤加练习,必要的时候要向名师求助!

这其中有七个关键点:

  1. 适合自己
  2. 学习方法
  3. 最短时间
  4. 注意力
  5. 解决任务
  6. 设定目标
  7. 名师

体系结构与操作系统拾遗

体系结构与操作系统拾遗

Part1. 体系结构基础

1. 冯·诺依曼体系结构

  1. 计算机处理的数据和指令一律用二进制数表示
  2. 顺序执行程序
    1. 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。
  3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

LeetCode算法-141. 环形链表

LeetCode算法-141. 环形链表

141. 环形链表

题目

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

LeetCode算法-237. 删除链表中的节点

LeetCode算法-237. 删除链表中的节点

237. 删除链表中的节点

题目

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

现有一个链表 -- head = [4,5,1,9],它可以表示为:

-w368

示例 1:

输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

网络拾遗

网络拾遗

Part.1 - HTTP 协议

1. HTTP 特性

  • HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80。
  • HTTP 是无连接无状态的。

2. HTTP 报文

HTTP 协议是以 ASCII 码进行传输的,建立在 TCP/IP 协议上的应用层规范。规范把 HTTP 分为三个部分:状态行、请求头、请求主体。HTTP 定义了与服务器交互的不同方法,常用的有如下四种:GETPOSTDELETEPUT
URL 全称是资源描述符,一个 URL 地址用于描述一个网络上的资源,而 HTTP 中的 POSTDELETEPUTGET 就对应着对这个资源的 增、删、改、查 四个操作。其他请求方式还有:HEADOPTIONSTRACEPATCH