OS区
yanerhao
信雅之言,微言大意
展开
-
centos下保留python2安装python3
1. 安装依赖环境# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel2.在python官网找到自己需要的python,tar包下载至本地,具体https://www.python.org/ftp/python/,如选择3.5.10# wg...原创 2021-03-11 15:32:33 · 169 阅读 · 0 评论 -
常见GC及golang的垃圾回收
常见的垃圾回收机制有两大种:一 引用计数每个对象维护一个引用计数器,当引用该对象的对象被销毁或者更新的时候,被引用对象的引用计数器自动减 1,当被应用的对象被创建,或者赋值给其他对象时,引用 +1,引用为 0 的时候回收优点:实现简单;渐进式回收;回收及时;缺点:循环引用;维护计数单元较为麻烦二 跟踪回收跟踪回收根据特点又可以分为三大类:2.1 标记-清理内存单元并不会在变成垃圾立刻回收,而是保持不可达状态,直到到达某个阈值或者固定时间长度。这个时候系统会挂起用户程序,也就是原创 2020-07-25 16:58:15 · 674 阅读 · 0 评论 -
磁盘文件系统
1 首先介绍一下磁盘结构信息存储在硬盘里,硬盘是由很多的盘片组成,通过盘片表面的磁性物质来存储数据。把盘片放在显微镜下放大,可以看到盘片表面是凹凸不平的,凸起的地方被磁化,代表数字 1,凹的地方没有被磁化,代表数字 0,因此硬盘可以通过二进制的形式来存储表示文字、图片等的信息。硬盘有很多种,但是都是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。...原创 2020-05-03 12:27:23 · 1055 阅读 · 0 评论 -
redis的docker文件,通过docker-compose配置redis
准备环境:docker 18.06.1-cedocker-compose 1.23.0-rc3redis如5.0.31 创建redis的dockerfileFROM redis:5.0.3LABEL "maintainer"="xx@yy"ENV TIME_ZONE=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TIME_Z...原创 2020-03-26 15:07:18 · 1995 阅读 · 0 评论 -
docker compose 常用命令总结
一、docker-compose命令格式docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]选项如下:-f,–file FILE 指定Compose模板文件,默认为docker-compose.yml,可以多次指定。-p,–project-name NAME指定项目名称,默认将使用所在目录名称作...原创 2020-03-24 12:34:55 · 290 阅读 · 0 评论 -
MemCache的了解
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念原创 2017-09-06 00:18:03 · 293 阅读 · 0 评论 -
协程
面试时有时不仅仅问线程和多线程也会问一点偏的比如协程coroutine。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。协程看上去也是子程序,但执行过程中,在子程序内原创 2017-08-31 20:07:46 · 342 阅读 · 0 评论 -
Linux 下几款程序内存泄漏检查工具
1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西)2.程序的健硕性如何(服务器任何程序的基本要求就是要满足高并发的要求,也就是说,如果达不到这个基本要求,程序并并不能成为服务器)针对第一点,以下将介绍几款内存泄漏检查工具工具描述valgri转载 2017-09-11 15:01:27 · 421 阅读 · 0 评论 -
虚拟内存
虚拟内存机制1.为什么要有虚拟内存在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。当运行多个程序时,经常会出现以下问题:1)进程地址空间不隔离,没有权限保护。由于程序都是直接访问物理内存,所以一个进程可以修改其他进程的内存数据,甚至修改内核地址空间中的数据。2)内存使用效率低当内存空间不足时,要将其他程序暂时拷贝到硬盘,原创 2017-08-31 21:46:47 · 754 阅读 · 0 评论 -
OG语言IDE goland长久破解
1 激活文件下载:链接:https://pan.baidu.com/s/19twh6bNolaQcGFSmovZBVQ提取码: j6dv里面包含下面三个文件:再找到GoLand安装的bin目录,我的是D:\GoLand\bin,将激活文件复制并替换到GoLand的bin目录,同事打开两个vm文件将最后一行默认的jar路径改成D:\GoLand\bin\下的启动golan...原创 2019-05-05 10:56:36 · 793 阅读 · 0 评论 -
mmap
概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进转载 2017-09-04 00:37:26 · 2326 阅读 · 0 评论 -
死锁/活锁/锁饥饿
死锁所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。产生死锁的原因:1 系统资源不足2 进程推进的顺序不合理3 资源分配不合理导致死锁的四个必要条件:1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。2原创 2017-09-03 22:04:57 · 1161 阅读 · 0 评论 -
由结构体联合体联想到计算机大端小端模式及内存对齐
一大端小端模式大端模式指的是数据的高位字节存放在内存的低地址端,低位字节存放在内存的高地址端;小端模式指的是数据的低位字节存放在内存的低地址端,高位字节存放在内存的高地址端;目前常用计算器(X86)都是小端模式。举例说明:16bit的数据0x1234,其高位字节是0x12低位字节是0x34,按照上述描述在CPU寄存器存放如下(假设地址从0x4000开始):原创 2016-11-13 21:49:42 · 709 阅读 · 0 评论 -
NS3中回调
在了解NS3回调机制前先学习C/C++中的函数指针函数指针指的是指向函数的指针(* ptr)声明形式:返回类型 (*函数指针名)(函数形參表)(=初始值)C语言中的函数指针:int (*p)(int a)=0;int function(int a){a=0;}a=function;// or 加上地址符&int res=a(12)//类似 function(12)原创 2016-11-24 17:06:03 · 2275 阅读 · 0 评论 -
系统调用接口与应用编程接口
一 系统调用(System Call)接口系统调用(System Call)接口是操作系统(OS)内核与上层应用进程(APP)进行交互通信的唯一接口如图通过这个接口,用户可以访问OS内核空间,具体步骤:用户地址空间APP->系统调用->OS->OS内核->返回用户空间。用户APP通过直接或者间接(库函数)调用中断int0X80,并在eax寄存器中指定系统调用功能号,即可使用内核原创 2017-01-18 10:12:45 · 2186 阅读 · 0 评论 -
进程与线程及进程间通信
进程与线程及进程间通信进程与线程进程是操作系统OS分配资源的最小单元,是一个独立的应用程序代码基于一个数据集合的一次运行活动,它可以申请和拥有系统资源,是一个动态概念,而不仅仅是这串代码,也是活动,它拥有一个独立的虚拟内存地址空间。线程是操作系统OS调度的最小单元,通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本原创 2017-03-08 10:22:34 · 417 阅读 · 0 评论 -
用户态内核态及用户空间内核空间关系
1 用户态与内核态 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被原创 2017-03-18 23:55:38 · 4703 阅读 · 0 评论 -
socket网络通信<二>
socket网络通信本文注意基于socket来分析TCP连接建立过程。先回顾一下TCP连接建立过程:主机A运行的是TCP客户端程序,主机B运行的是TCP服务器程序,最初两端TCP进程处于Closed态,A主动打开连接,对应客户端connect函数发起连接,B被动接受连接,对应于服务器listen函数。服务器TCP进程先创建传输控制块TCB,准备接受客户进程的连接请求;1原创 2017-03-08 18:41:04 · 450 阅读 · 0 评论 -
socket网络通信<一>
socket网络通信进程间通信(例如QQ进程与服务器,本地QQ与异地QQ之间通信)都是通过socket实现通信。socket接口是TCP/IP网络的API,具体而言,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信:socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可原创 2017-03-08 16:02:06 · 608 阅读 · 0 评论 -
函数调用过程分析
编译器一般使用堆栈实现函数调用,Windows为每个线程维护一个堆栈,堆栈大小可以设置,编译器可以使用堆栈存放每个函数参数,局部变量等。由于函数调用经常会被嵌套,故同一时刻,堆栈中存储多个函数的信息,每个函数会占一个连续区域,一个函数占用的区域称为帧,编译器是从高地址开始使用堆栈,在多线程任务下,CPU的堆栈指针指向的存储器区域就是当前使用的堆栈。切换线程时,把堆栈指针设为当前线程所在堆栈的栈顶地原创 2017-04-05 16:51:53 · 1610 阅读 · 0 评论 -
Linux IO模型分析(一)
一、IO模型 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限制了操...原创 2017-08-16 00:55:18 · 349 阅读 · 0 评论 -
Linux IO模型分析(二)
三 IO复用select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的原创 2017-08-17 00:40:39 · 232 阅读 · 0 评论 -
mathtype批量修改
在写论文或者其他技术文案时,有时候需要根据目的改格式这里以批量改字体为例:面对几十页几百个mathtype敲出的公式,一个个改显然时下下策,这里介绍批量修改方案:A:准备工作1先注册一个gmail账户以便从官网下载正版mathtye;2.http://www.baidu.com/link?url=FcyAZp78stZpcu1GYeH6XHgK98os7bWjGcBvuMS9oMc原创 2016-05-15 14:58:18 · 2454 阅读 · 0 评论