avatar
文章
464
标签
16
分类
76

Believe it

Believe it

操作系统3-连续内存分配
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial CPU内存 CPU-L1cache-L2cache-memery-disk 逻辑地址空间 抽象、隔离、保护、共享、虚拟化(临时放入disk) 内存管理 程序重定向,分段,分页,虚拟内存,按需分叶虚拟内存 地址空间和地址生成 C程序用变量表示地址,汇编还是用符号,机器码就开始使用逻辑地址了,CPU的MMU中有一段区域来映射逻辑地址到物理地址 约束程序的内存 程序只可以访问他自己的内存,当他访问其他地方的时候,操作系统应该使用安全检测 内存碎片 外部碎片,是分配单元之间的内存碎片 内部碎片,已经分配给了应用程序,但是应用程序没法使用它 连续内存分配 程序启动的时候要分配,运行的时候要分配 第一匹配分配算法 一个一个找,第一个碰到的合法的就分出去, 需要按地址排序,分配的时候需要寻找合适的分区,还有看自由分区能否与相邻空闲分区合并 简单,容易产生更大的空闲块,容易产生外碎片 最优分配算法 找差值 ...
操作系统2-中断异常调用
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 操作系统的启动 DISK中放操作系统,BIOS是基本的IO系统,检测外设,Bootloader能够加载OS,BIOS从CS段寄存器;IP指令寄存器开始执行,然后BIOS会POST(加电自检),然后BIOS找到bootloader加载Bootloader,并传递控制权,然后Bootloader找到OS,读到内存吧控制权交给OS 操作系统的中断、系统调用、异常 系统调用是应用程序主动想操作系统发出服务请求, 异常是来源于不良的应用程序的非法指令 中断是来自不同硬件设备到额计时器和网络的中断 我们不能让应用程序直接访问外设,这不安全,另外OS可以提供更好的借口,通用可移植 中断处理 保存现场、查表、中断处理、清楚中断标志、恢复现场 异常处理 保存现场、查表、异常处理(杀死程序或者重新执行异常指令)、恢复现场 系统调用 printf(..); 会触发系统调用write(); 程序主要是用高层次 ...
操作系统1-操作系统
发表于2020-04-01|操作系统OS
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 操作系统是什么 是一个控制软件,能管理应用程序,为应用程序提供服务,杀死应用程序,能够分配资源,能够管理外部设备,承上启下,硬件之上,应用程序之下, Kernel CPU调度,物理内存管理,虚拟内存管理,文件系统管理,中断处理和设备驱动 Kernel特征 并发,共享(1在一个时间点,只有一个程序能够访问2同时访问),虚拟(利用多到程序设计技术,让每个用户都觉得有一个计算机为他服务),异步(程序走走停停,而不是一直走) 操作系统实例 Unix,Linux,Windows等
笛卡尔树
发表于2020-03-30|数据结构
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 笛卡尔树 这个笛卡尔树没写出来,气死了 他是二叉树,他是堆,二叉树中序遍历的结果就是数组a 笛卡尔树的构造 先看一个简单的笛卡尔树 我们使用增量构建笛卡尔树来完成,就和增量构建后缀自动机一样容易。我们来对x分类讨论如果x比5小怎么样,如下如果x在5和7之间如果x在7和9之间如果x比9大呢 我们不难发现,每当增加一个新的值的时候,笛卡尔树变化的一定只有从根一直向右走的路径,我们可以想出一个很简单的方法,每次新增加值a[i+1]的时候,让他不断和右链比较,找到lower_bound的地方,然后插入到那去就可以了。 进一步发现,上诉代码需要维护指向父亲的指针,我们考虑到用一个栈来维护右链,栈低为根,栈顶为叶子,在弹栈的时候维护右儿子指针,在压栈的时候维护左儿子指针即可。代码如下 1234567891011121314int n;int a[N]; // a[1], a[2], a[3], a[4 ...
阿里笔试
发表于2020-03-30|实习笔试
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 阿里笔试 感觉很难受,笛卡尔树没写出来,气死了,我咋这么菜 第一题 有n个羊圈,第i个羊圈初始有a[i]个羊,每天早上每个羊圈会增加k的羊,每天晚上主人会选出羊圈中羊最多的那个,卖掉一半,变为$\lfloor \frac{a[i]}{2}\rfloor$个羊,问m天后剩下多少只羊。 n,k,m,a[i]<1e5 每天增加本质是区间加法,寻找羊最多的是区间最值查询,减半是单点修改,第一想到线段树,但是这么敲也太莽撞了,然后发现区间修改为全区间修改,考虑到可以懒惰化,即增加一个值add用来表示全区间增大的情况。区间加法的时候让add+=k即可,查询的时候是最值查询,修改的时候注意$\lfloor \frac{a[i]+add}{2}-add\rfloor$,这样用一个多重集合维护即可 第二题 给一个长度为n的数组,任意选择一个子串,问最大值的期望, n<1e6 笛 ...
Git使用总结
发表于2020-03-27|Others
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 创建工作空间 我们先创建一个工作空间myGit,在其中创建一个项目project,植入两个文件a.txt和b.txt,并分别写入”a”和”b” 123456cd ~ mkdir -p myGit/projectcd myGit/projecttouch a.txt b.txtecho "a" >> a.txtecho "b" >> b.txt 初始化git 紧接着我们用git初始化这个项目 1git init 我们看到了输出,他的意思是我们创建了一个空的git仓库 1Initialized empty Git repository in /Users/s/myGit/project/.git/ 他的意思是说我们的git没有追踪任何一个文件,我们可以通过下面对指令来查看git的状态 1git status 紧接着 ...
P1368最小表示法
发表于2020-03-28|ACM刷题实战洛谷
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 题目描述小敏和小燕是一对好朋友。他们正在玩一种神奇的游戏,叫 Minecraft。他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。两个工艺品美观的比较方法是,从头开始比较,如果第i 个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一样那么继续比较第i+1 个方块。如果全都一样,那么这两个工艺品就一样漂亮。 输入格式第一行一个整数 n,代表方块的数目。第二行 n 个整数,每个整数按从左到右的顺序输出方块瑕疵度的值。 输出格式一行n 个整数,代表最美观工艺品从左到右瑕疵度的值。 输入样例121010 9 8 7 6 5 4 3 2 1 输出样例11 10 9 8 7 6 5 4 3 2 数据范围n<3e5 做法1 维护两个指针i,j让其表示两个子串, ...
C++入门
发表于2020-03-13|LanguageC++
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 前言 从大一上接触C++,到大一下接触ACM,到现在大三下,我自以为对C++有了很深的理解,其实不然,我不清楚的地方还特别多,准备趁此空闲时间重学C++。 const 与指针 这是这篇博文的重点,常常我们会碰到多种声明 1234const char* const a = new char[10];const char* a = new char[10];char* const a = new char[10];char* a = new char[10]; 他们有什么共性与不同呢?下面的程序演示了区别,注释的地方是非法操作会报错。 12345678910111213141516171819202122232425#include <iostream>using namespace std;int main() { const char* const a = ne ...
设计模式
发表于2020-03-25|Others
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 为什么我们需要设计模式 有一类问题会在软件设计中反复出现,我们能够提出一种抽象的方法来解决这类问题,这就是设计模式。 设计模式的七大原则 单一职责原则 接口隔离原则 依赖反转原则 里氏替换原则 开闭原则 迪米特法则 合成复用原则 23种设计模式5个创建型 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 7个结构性 适配器模式 桥接模式 装饰者模式 组合模式 外观模式 享元模型 代理模式 11个行为型 模版方法模式 命令模式 访问者模式 迭代器模式 观察者模式 中介者模式 备忘录模式 解释器模式 状态模式 策略模式 责任链模式 单一职责原则 一个类只管一个职责。 例子1如果我们创建了交通工具类,他掌管着很多工具,汽车、飞机、轮船,显然我们不适合让一个类来管理这么多种交通工具,这样导致职责太多,也不适合分别为这三种交通工具建立3个类,这样导致修改过多,正确的做法是创建三个函数, ...
spring学习2-spring介绍2
发表于2020-03-26|LanguageJavaSpring
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial Spring 模块 Spring有六大模块,测试、容器、面向切面编程、instrumentation、数据访问与集成、Web与远程调用。 测试: Test 容器: Beans,Core,Context,Expression,ContextSupport 面向切面编程: AOP,Aspects instrumentation: instrument,instrumentTomcat 数据访问与集成: JDBC,Transaction,ORM,OXM,Messaging,JMS Web与远程调用: Web,WebServlet,WebPortlet,WebSocket 但是Spring远不止这些 Spring配置 Spring有三种配置方式,第一是通过XML配置,第二是通过JAVA配置,第三是隐式的bean返现机制和自动装配。建议优先使用三,而后是二,最后是一 自动化装配bean 有两种方法 ...
1…202122…47
avatar
fightinggg
O ever youthful, O ever weeping
文章
464
标签
16
分类
76
Follow Me
公告
This is my Blog
最新文章
智慧的疆界:从图灵机到人工智能2023-05-17
Transformer2023-03-28
2023你好2023-02-06
VPN与代理那些事2022-07-24
CPU架构介绍2022-07-19
分类
  • ACM238
    • 刷题实战56
      • CodeForces7
      • bzoj4
      • hdu19
      • uoj1
      • 比赛15
      • 洛谷3
标签
AI AspectJ CPU docker 结构体中的引用 SpringFox使用 跟我一起写编译器 GPT linux指令 读书,HTTP 读书 flag Transformer Proxy VPN nginx
归档
  • 五月 20231
  • 三月 20231
  • 二月 20231
  • 七月 20223
  • 五月 20221
  • 三月 20221
  • 二月 20221
  • 一月 20221
网站资讯
文章数目 :
464
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By fightinggg
框架 Hexo|主题 Butterfly