操作系统深层剖析
进程/线程/协程 进程: 进程是操作系统进行资源分配的基本单位,每个进程都有自己独立内存空间。 由于每个进程都有独⽴的内存空间,创建和销毁进程的开销较⼤。 进程间切换需要保存和恢复整个进程的状态(栈、寄存器虚拟内存、文件句柄、打开的文件资源信息等),因此上下⽂切换的开销较高。 由于进程间相互隔离,进程之间的通信需要使⽤⼀些特殊机制,如管道、消息队列…
Visual Studio调试
快捷键 F9:为当前行设置/取消断点 开始调试: F5:一段段执行,每到断点就停下 F10:一行行执行 F10:逐过程执行(逐行) F11:逐语句执行(可进入函数内部) shift + F5:放弃调试 局部变量窗口显示了变量的值,可以进行修改 ps:可以直接使用vs图形化界面代替快捷键进行调试
计算机网络深层剖析
一次完整的 HTTPS 通信流程 HTTPS = HTTP + TLS/SSL,通信过程包括: 建立 TCP 连接(三次握手) TLS/SSL 握手 客户端和服务器协商 TLS 版本与加密算法(客户端发送第一个随机数) 服务器发送数字证书(包含公钥)(服务器发送第二个随机数) 客户端核实数字证书的真实性,若为真,则取出公钥,用公钥加密后传输数据(包…
笔试题记:24年小米春招
190. 偏爱的字符✅ 模拟:用map存偏爱字符,遇到非偏爱字符时同时向两边搜即可 #include<bits/stdc++.h> using namespace std; void modify(int pos, string &res, const string &str, unordered_map<char…
笔试题记:24美团春招技术岗第一批笔试
1.小美的平衡矩阵 一开始暴力搜索,超时了 因此必须优化,时间主要浪费在了“计数一个范围内的0和1的个数” 所以用一个二维前缀和,psum[row][col] 表示 grid[row][0:col] 中1的个数,也就是预计算 这样在执行“计数一个范围内的0和1的个数”,只需要遍历每一行的前缀和,从二维降到了一维 #include <bits/…
LeetCode hot100@动态规划&多维动态规划
More content:力扣题记之动态规划 70. 爬楼梯✅ dp数组下标代表当前在第几阶,数组value表示到这一阶的方法数(即爬到第i层楼梯,有dp[i]种方法) 遍历顺序从前往后 但是一开始没想明白为什么状态转移公式是dp[i] = dp[i-1] + dp[i-2] 只是找规律推出来的 class Solution {public: in…
力扣题记之回溯
More content:LeetCode hot100@回溯 回溯算法可解决的问题类型: 组合问题:N个数里面按一定规则找出k个数的集合 17. 电话号码的字母组合 39. 组合总和 40. 组合总和 II 216. 组合总和 III 77. 组合 切割问题:一个字符串按一定规则有几种切割方式 93. 复原 IP 地址 131. 分割回文串 子集…
LeetCode hot100@回溯
More content:力扣题记之回溯 回溯是递归的副产物,只要有递归就会有回溯 回溯算法模板:回溯递归是往深处找,内部for遍历是横向找 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtrack…
LeetCode hot100@堆
优先队列: 大根堆:priority_queue<int> maxHeap; 小根堆:priority_queue<int, vector<int>, greater<int>> minHeap; 自定义比较器: struct Comparator { bool operator()(ListNode *a,ListNode…