10 2019 档案
摘要:学而不思则罔,思而不学则殆。 Linux下,进程状态有五种 : 运行态,可中断睡眠态,不可中断睡眠态,停止态和追踪态 运行态表示进程可执行或者正在执行, 可中断睡眠态表示进程被阻塞,等条件满足就会被唤醒,也可以提前被信号打断唤醒。 不可中断睡眠态和可中断睡眠态是一样的,但是他不会被信号打断。 停止态
阅读全文
摘要:设计模式 : 大佬们总结出的是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 今天讲一讲,设计模式中创建型模式的单例模式(创建型模式还有工厂方法模式、抽象工厂模式、建造者模式、原型模式) 单例模式: 通俗地说,一个类只能创建一个对象 特点: 1.该模式下保证系统中该类只有一个实例
阅读全文
摘要:经典排序三剑客: 归并,堆排,快排。 今天,图解归并,一步步带你手撕代码~ 归并排序,是采用"分而治之"思想的一个典型应用。 分治法精髓: 1.分 将问题分解成若干个规模更小的问题 2.治 将这些规模更小的问题逐个击破 3.合 将已解决的子问题合并,最终得到"母"问题的解 知道了归并思想,如图,归并
阅读全文
摘要:引言: 集中一点,登峰造极。 先把流程图贴上来 : 为什么这么复杂? 因为TCP是可靠性传输。 确认可靠传输的前提: TCP连接管理机制 用TCP报文中标志位控制 : 三次握手(建立连接) : 两次连接请求(SYN)+两次应答(ACK) 流程 : 服务端进入LISTEN状态后,客户端向服务端发送SY
阅读全文
摘要:进程通信 : 不同进程之间传播或交换信息 为什么要进程通信呢? 协同运行,项目模块化 通信原理 : 给多个进程提供一个都能访问到的缓冲区。 根据使用场景,我们能划分为以下几种通信 : 1.管道(匿名管道、命名管道) 因为是半双工通信(单向传递信息),所以叫"管道"。原理是在内核中创建一个缓冲区让通信
阅读全文
摘要:不知哪个大佬说过: 关于字符串的题都可以用指针或哈希解决。 罗马数字转数字: 思想: 我们能观察到规律: 一般情况下,表示大的字母在前,小字母在后; 特殊情况下,小字母会在大字母之前,但是相应的,得到的值会是大字母-小字母 所以,我们可以用哈希表映射大小,利用哈希表比较所给罗马字母,一般情况直接+该
阅读全文
摘要:之前结合网上博客整理的笔记,希望能帮你解除疑惑!
阅读全文
摘要:先解释一下Shell : Shell是一个功能为命令行解释器的应用程序,连接了用户和Linux内核,让我们能高效和安全地使用Linux内核。 要写一个minishell,我们要先理解它的过程: 读取输入->>命令解析->>创建子进程->>(子进程)程序替换->>(父进程)进程等待 代码及注释如下:
阅读全文
摘要:学了冯诺依曼体系结构,我们知道: 硬件决定软件行为,数据都是围绕内存流动的。 可想而知,内存是多么重要。当然,我们这里说的内存是虚拟内存(详情看Linxu壹之型)。 1.C/C++内存布局 2.C语言动态内存管理方式 申请内存 : malloc/calloc/realloc 释放 : free ma
阅读全文
摘要:malloc/free和new/delete傻傻分不清?动态内存管理的面试题难道你了?来看这篇文章,包你全会。 1.malloc/free和new/delete的区别 (1)malloc/free是函数, new/delete是操作符; (2)malloc/free不会调用构造/析构函数,new/d
阅读全文
摘要:分享知乎上看到的一句话,共勉: 学习周期分为学习,思考,实践,校正四个阶段,周期越短,学习效率越高。 前面讲的都是操作系统如何管理进程,接下来,看看用户如何进行进程控制。 1.进程创建 先介绍一下函数: pid_t fork(void); 返回值: 子进程返回0 父进程返回子进程id,创建子进程失败
阅读全文
摘要:1.环境变量是什么? 环境变量一般是指在操作系统中指定系统运行环境的一些功能性参数。 比如,我们运行程序链接的静态/动态库,不需要知道它的位置也能链接成功,就是因为有相关环境变量帮助我们查找,环境变量可以简化我们的操作。 简化操作实例: 1.我们写个hello.c文件,并gcc出可执行文件 2.测试
阅读全文
摘要:1.程序地址空间 首先,我们先看学c/c++时候学到的程序内存布局: 准确地说,程序地址空间其实就是进程的地址空间,实际就是pcb中的mm_struct。 接下来,我们用fork()演示一下进程的地址空间。 //父子进程数据独有demo 1 #include<stdio.h> 2 #include<
阅读全文
摘要:1.什么是进程? 对用户来说,进程是正在运行的程序。 进程由程序,数据,和PCB组成。 对操作系统来说,进程就是PCB,PCB包含了正在运行程序的全部信息。 比如标识符,状态,优先级,内存指针,上下文数据等 Linux下PCB叫task_struct。 2.进程的描述信息 内存指针: 程序和数据运行
阅读全文