操作系统复习笔记
准备复试 暂停更新2022.3.20
操作系统第一章 操作系统概述1.0 章节框架图
操作系统是计算机系统中的系统软件
操作系统地位、作用操作系统的设计目标
有效性
方便性
可扩充
开放性
中断中断是主机接收到外部信号或者系统发生随机性事件,停止当前执行的程序,转而处理这一事件,待事件处理完成,主机又可以回到原来的断点继续工作。中断是让操作系统内核夺回CPU使用权限的唯一途径。操作系统是由中断驱动的。
用户态转到核心态(内核态)的三种方式
程序请求操作系统服务,执行系统调用。
程序运行时产生外中断事件(比如I/O操作完成),运行程序被中断,转向中断程序处理
在程序运行时发生内中断事件(异常),运行程序被打断,转向异常处理程序工作
用户态也叫目态,即用户进程运行时处理器的状态。
核心态也称管态,即操作系统的自身核心部分及部分系统进程的程序运行时的处理器状态
操作系统内核所运行的模式。运行在该模式的代码,可以无限制地对系统存储、外部设备进行访问。
特权指令只能由操作系统调用而不能被用户调用的指令
核心态转到用户态的方式中断类型
外中断
也叫中断,狭义上的中断。外中断与当前执行的指令无 ...
LeetCode509-斐波那契数
题目斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
12F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
解题思路方法一 递归12345678class Solution: def fib(self, n: int) -> int: if n==0: return 0 elif n==1: return 1 else: return self.fib(n-1)+self.fib(n-2)
方法二 动态规划利用滚动数组思想
123456789if n<2: return np,q,r = 0,1,1for i in range(2,n): p = q q = r r = p + q return r
LeetCode20-有效的括号
题目给定一个只包括 ‘(‘,’)‘,’{‘,’}‘,’[‘,’]' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路匹配失败的情况
左括号多了 例如
右括号多了 例如
括号不匹配 例如
排除掉上面的是那种匹配失败的情况之后,剩余的都是匹配成功
思路核心思想是利用栈去匹配括号
用字典构造一个哈希表,表示右括号对应的左括号
1dic = {'}':'{',']':'[',')':'('}
用一个字符串表示左括号
1kuohao = '{(['
我的解法1234567891011121314151617181920212223242526272829303132class Solution: ...
Docker学习笔记
Docker学习笔记作者:郭寅之B站/Youtube:Clay_Guo
邮箱:guoyinzhi@foxmail.com
一.Docker介绍1.1 引言
1.我本地运行没有问题,
环境不一致会出现问题
2.哪个哥们又写死循环了,怎么这么卡。
在多用户的操作系统下,会相互影响
3.淘宝在双十一的时候,海量并发的解决方案,用户量暴增的情况下
运维成本过高的问题
4.学习一门技术,学习安装成本过高
安装软件成本过高
1.2 Docker的由来
一帮年轻人创业,创办了一家公司,2010年的专门做PAAS平台
到2013年的时候,亚马逊,微软,谷歌都开始做PAAS平台
2013年,将公司的核心技术对外开源,核心技术就是Docker
到了2014年的时候,这家公司得到了C轮融资$4000w
到了2015年的时候,得到了D轮融资 $9500w 用于全神贯注的维护Docker
所罗门 主要作者之一
Docker的作者已经离开了维护Docker的团队。
1.3 Docker思想
1.集装箱
docker会将所有需要的内容放到不同的集装箱 ...
PicGo+Typora搭建个人笔记系统
PicGo+Typora搭建个人笔记系统
引言
从开始读书的时候,笔记就是我必不可少的一样东西。大学的学习中,每门课都不能缺少笔记。在pc端中,常见的笔记软件有word,印象笔记,OneNote,Sublime Text,Notepad++等。在大学的时候,一次偶然的机会,听学长介绍了markdown以及一款写markdown的软件Typora,至此开始使用markdown记录自己的笔记,并且很多平台,例如微信公众号,知乎等都已经支持markdown语法了。但是在后续的使用过程中,记笔记的同时经常需要放置图片,这时会让我在与其他人共享的时候出现图片无法访问的情况,这是由于图片粘贴过来之后是存储在本地的,而他人在自己的电脑中是无法访问到我的图片的。后来我采取的方案是使用云商提供的对象存储。我使用过的有阿里云、腾讯云以及七牛云。但是后来发现这些云商提供的服务到后面需要收费。因此我又开始琢磨,我自己正好有几台云服务器,为啥不在我的云服务器上面去搭建一个图床呢,这个时候经过一番资料的收集以及多次尝试,最终我敲定了我自己的方案,在我的云服务器上面搭建一个个人图床,采用的模板是Chevereto[ ...
Git使用教程
Git与GitHub使用教程
很久很久以前,进行软件项目开发的时候,可能是一个人独自开发,亦或是进行复制粘贴每天写好的项目模块。随着软件项目的庞大,一个项目可能就不会再由一个人独自开发了,往往就需要团队之间进行协作开发,因此,协议团队协作开发版本管理的软件就应运而生了。常见的有SVN[1]、Git[2]。代码托管网站也有很多,例如Github[3]以及国内的Gitee[4]。本文以GitHub+Git来详细说明如何用Git来管理自己的项目以及如何与他人进行团队协作开发。
需要准备的东西
Git
GitHub注册好账号
使用指南git更新本地分支与远程同步
进入到工程目录文件
1cd project
选择一个分支
1git checkout dev
拉取远程代码到本地
1git pull -p
第三步等同于下面的命令
12git fetch --prune origin git fetch -p
为本地项目进行初始化初始化时,使用-b参数指定分支
1git init -b main
然后需要将本地与远程仓库进行关联绑定
1git remote add orig ...
Hexo博客搭建教程
Hexo博客搭建教程
又一次的搭建自己的hexo博客,这里记录一下hexo博客搭建的教程。之前的博客是部署到Github上的,奈何Github访问速度有点缓慢,因此本次博客搭建是部署到国内的Gitee上,这样加快了博客的访问速度。
不出意外的话,这次部署之后,以后都会用这个博客了,Butterfly主题也非常的精美。
准备内容
git 下载地址
node 下载地址
注意Node的安装版本,不要安装14以及更高,可能会出现不兼容的各种问题
Gitee账号注册 地址
测试[1]
Git安装一键式傻瓜安装,安装完成后在任意界面右击鼠标,即可查看到git操作指令
点击Git Bash Here,即可出现Git的命令行窗口,这是类似于Linux操作系统的命令行窗口的。
输入git version即可查看我们的Git版本
类似上图即可说明Git安装成功,进行下一步操作。
Node安装下载地址传送门
安装一件傻瓜式安装
校验安装完成之后在Git Bash界面输入node -v
出现上图显示的结果即为安装成功,进入下一步。
Hexo安装与使用安装接下来我们可以安装生成网站的关键——H ...
微信小程序中使用Echarts
前言
因为工作中需要,需要在微信小程序端中复刻web端的一些功能,在图表这一块,web端使用的是Echarts组件,经过调研发现,Echarts同样是支持微信小程序的,这里进行一个简单的记录。
准备微信开发者工具微信开发者平台自行下载
Echarts微信版下载地址:https://github.com/ecomfe/echarts-for-weixin
我们主要用的就是其中的ec-canvas文件夹
Ps:官方的README文档其实已经写的非常详细了,但是很有可能大家会发现自己的这里没有任何图片显示出来,别着急,往下看。
使用1.引入ec-canvas复制到小程序的根目录
2.新建页面在Pages文件夹下文件夹echarts,然后在echarts文件夹上右击,新建pages
3.引入组件在echarts.json文件中,将文件夹引入
注意其中的路径要和自己的一致
4.创建图表在echarts.wxml文件中,写入以下内容:
123<view class="container"> <ec-canvas id="mychart- ...
小米运维开发一面面经
小米运维开发一面面经
前言
寒假闲来无事,打算根据自己的秋招经历来写一个面经系列,后续我会陆续将自己秋招过程中的一些面试的面经以公众号的文章形式发表在我的个人微信公众号上。首先我的个人方向为:SRE/运维开发/后端开发,至于其他的诸如前端、算法等方向的面经我会邀请我的朋友们来编写。希望在这里能帮助到大家拿到自己满意的offer。
情况介绍
公司:小米
base:北京
岗位:运维开发工程师
时间:2020年10月22日星期四16点00分
背景:江苏某双非院校软件工程专业考研狗
结果:时间节点位于考研备考期间,准备不够充分,一面就被刷了,小米以及其他大厂都会有一个保护期, 也就是本次秋招被刷之后,只能在六个月之后才能再次投递这家公司。因此建议大家多去小公司面试,打怪升级,等到能力达到之后再去面自己真正想去的公司。
面试流程
首先进行自我介绍(3分钟),然后面试官让介绍了一下自己的项目经验。之后问了一下在校学过的一些课程,然后会根据你所熟悉的语言来进行语言基础考察。一面问了不少都是基础的东西,大家在准备的时候还是要重视基础,另外数据结构这块也非常的重要,和其他大厂一样,应该都会问 ...
从外企技术面试谈起
从外企技术面谈起
前言
近些年,国内某些大厂各种强制员工加班的新闻层出不穷。就在昨晚,跟一个学长交流的过程中,我叫他一起开黑,他却跟我说还在加班,让我先开,想想可能这就是自己毕业工作的样子…虽然我本人也想去大厂上班(主要是钱多但确实能力不足),但是相比之下,我也更愿意去外企上班。其中最大的原因是955工作制度,那样我就有足够的时间在周末去学习新的知识,另外也可以做我的自媒体,学习张哥,打造一个个人的IP。今天下午刚好面试了ThoughtWorks[1],只可惜结果不是很好,就在这里聊一聊自己的一些感受。
面试内容面试的标题叫做结对编程[3],这是一种敏捷开发的方法,敏捷开发也是贯彻在这家公司的一种开发思维。而结对编程就是一个人在写代码(也就是面试者),另一个人在审查代码(也就是面试官)。
本次面试的内容是基于面试邮件中给出的一个购物车代码仓库[2]的源代码进行二次开发的,所有的开发都是针对需求进行的,由面试官给出需求,再由面试者现场进行需求的实现,也就是编码工作。这不仅考察了面试者的逻辑思维能力(对题目的理解程度以及团队配合交流等能力),也考察了对于语言基础知识的掌握程度。
技术面试 ...