收获的句子
数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储)。
各种数据结构的遍历+访问无非两种形式 :线性的和非线性的。
线性以 for/while 迭代为代表,非线性以递归为代表。
只要涉及递归的问题几乎都是树的问题。
动态规划问题一般的形式就是求最值。
递归算法的时间复杂度怎么计算?
子问题个数✖解决一个子问题所需的时间。
计算机解决问题其实没有任何奇技淫巧,它唯一的解决办法就是穷举。算法设计无非就是先思考“如何穷举”,然后再追求“如何聪明地穷举”。
最优子结构 : 能从子问题地最优结果推出更大规模的问题的最优结果。
解决一个回溯问题,实际上就是一个决策树的遍历过程。
回溯法就是纯暴力穷举,一般复杂度比较高。
二分查找 :思路很简单,细节是魔鬼。
在Linux系统中,进程和线程几乎没有区别。
对于操作系统,进程就是一个数据结构。
进程中存在一个 files 指针,他指向一个文件指针数组。进程从 files[0] 读取数据,叫做标准输入流;进程从 files[1] 输出数据,叫做标准输出流;进程从 files[2] 输出错误信息,叫做标准错误流。
Linux 中一切都可抽象成文件,进行读写。
Linux 中线程和进程是采用同一种数据结构来表示的。不同的是线程的某些数据区域是与父进程共享的,而子进程则是对那些数据进行拷贝。所以多线程程序需要利用锁机制,来避免多个线程同时往一个区域写入数据,造成数据混乱。
动态规划题的通用技巧 : 数学归纳法。
一个 cookie 可以认为是一个变量,形如 name = value,但是服务器可以一次设置多个 cookie,所以将 cookie说成一组键值对儿,也是可以的。
一个 session 可以理解为一个数据结构,多数情况下是映射(键值对),存储在服务器上。
cookie 其实就是服务器给每个客户端打的标签,方便服务器辨认。
如果将所有信息存储在cookie中与服务器交互,由于 cookie 放置在HTTP Header 中,会消耗许多的带宽。session的出现就是为了解决这个问题的,cookie只需要将sessionID=xxxx传给服务器,服务器找到对应的session,将session中的定制过的信息发送给用户。