学习时间:2022-8-29
学习内容
1.LeetoCode 四道简单题
这道题不是特别懂为啥不是除以10,可能是因为他是二进制吧,倒是做对了,不难 复杂度没降下去
简单,秒了 复杂度也不高
这道题算是有点难度的,里面用到了一个贪心策略,首先排序,排序完后从大到小看,后三个能否组成三角形,如果可以,直接返回结果,否则后移后再选后三个。我做的时候没有只选择后三个,而是使用for循环一个个的试,这样导致复杂度偏高,但没考虑到:如果最大的三个已经不构成三角形了,实际上比他小的更不能构成三角形。
正常解,复杂度偏高
此处附加一个贪心算法题解:
class Solution {
public:
int nearestValidPoint(int x, int y, vector<vector<int>>& points) {
int ans = -1, n = points.size(), minL = INT_MAX;
for(int i = 0; i < n; ++i){
if(x == points[i][0] && abs(points[i][1] - y) < minL){
minL = abs(points[i][1] - y);
ans = i;
}
if(y == points[i][1] && abs(points[i][0] - x) < minL){
minL = abs(points[i][0] - x);
ans = i;
}
}
return ans;
}
};
作者:xiao-ryan
链接:https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/solution/tan-xin-suan-fa-by-xiao-ryan-su17/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.《操作系统概论》第一章解答题订正与第三章进程管理部分内容
第一章订正
有不少题网上不太好找答案,还有的不太理解意思,这里先写记得并理解的,后续二刷再记录剩下的题。
1.现有一个运行数据库的两个节点集群,给出两种方法,以便集群软件管理磁盘数据访问。讨论每种方法的优点和缺点。
分为非对称集群和并行集群,非对称集群:监视主节点,当主节点挂掉时从节点代替主节点。
并行集群:计算效率高,多CPU计算。
缺点:导致读写不一致。
第三章 进程
进程概念
对所有CPU活动的称呼。进程并不是一段程序,进程应该是包含程序的。
进程状态
进程的状态会改变 主要有
new running waiting ready terminated 五个状态
大体流程为:进程创建出来后,进入就绪状态,由调度器进行调度到运行状态,如有IO等事件则等待执行IO,执行完成后回到就绪状态,如果运行期间进程被中断也将回到就绪状态,执行完成的进程将退出。
一次只有一个进程在一个处理器上运行,其他进程在就绪或等待状态。
进程控制块(PCB)
一种类似结构体的东西,保存进程运行的信息,如进程状态 CPU调度信息,IO状态信息等,PCB是这些东西的仓库。
线程
一个进程可以运行多个线程,PCB也被扩展到线程上。
进程调度※
进程在进入系统时,会加入作业队列,该队列包含所有进程
在内存中的,就绪的,等待运行的进程保存在就绪队列
等待IO设备的进程列表,为设备队列
新进程加入就绪队列,由调度器执行和分派。当分配到CPU时,将发生上图的几种情况。
当进程被删除时,PCB资源也会得到释放。
调度程序※
一共有三种调度程序
长期调度器 中期调度器和短期调度器(CPU调度器)
其中,长期调度器与短期调度器主要为执行频率的不同,短期调度器执行频率快,对性能要求高
长期调度程序的执行并不频繁,他最主要的目的,是分配I/O密集型进程与CPU密集型进程,需要将两种进程进行组合,使效率最大化。
中期调度器的作用,是为了让进程从内存移出,从而降低了多道程序的程度。具体进程流向为从CPU换出,并换入就绪队列。
上下文切换
当一个进程结束 另一个进程执行时,将产生上下文切换。上下文采用PCB表示
上下文切换是纯粹的开销,切换时间与硬件密切相关。
其他
Centos环境配置
遇到的问题:
1、刚安装的Centos镜像只有回环地址,没有ip地址。原因:需要改设置
centos7默认安装时需要手动激活有线网卡。
如果安装时没有激活,需要手动编辑vi /etc/sysconfig/network-scripts/下ifcfg-enoxx
ONBOOT=“yes” #开启自动启用网络连接
再service network restart #重启网络
2、无法连接到远程
关闭防火墙