Linux
蜗牛_Wolf
有道无术,术可求;无道有术,止于术。
展开
-
c++
1. 语言基础 (C/C++)(0) 指针和引用的区别指针是一个新的变量,指向另一个变量的地址,我们可以通过访问这个地址来修改另一个变量;而引用是一个别名,对引用的操作就是对变量的本身进行操作 指针可以有多级,引用只有一级 传参的时候,使用指针的话需要解引用才能对参数进行修改,而使用引用可以直接对参数进行修改 指针的大小一般是4个字节,引用的大小取决于被引用对象的大小 指针可以为空,引用不可以。(1)在函数参数传递的时候,什么时候使用指针,什么时候使用引用?需要返回函数内局部变量的内存转载 2020-12-11 14:41:35 · 403 阅读 · 0 评论 -
linux操作系统常用面试题目
请描述一下用多线程怎么实现生产者消费者模型 知道nginx的惊群现象吗?怎么解决? 请说一下epoll的内核实现,都涉及哪些数据结构? select和epoll的区别? fork()都会做哪些复制? 什么是写时拷贝?Fork以后,父进程打开的文件指针位置在子进程里面是否一样? 你项目中为什么使用进程池?而不是用线程池?不同场景怎么选择请列举一些例子! tcp/ip的四层协议,为什么要有传输层和网络层? tcp/ip三次握手和四次挥手过程以及信令流程,画出来! tcp三次握转载 2020-09-08 16:38:30 · 249 阅读 · 0 评论 -
【搞定计算机操作系统】面试题整理
一、进程与线程1、简单说说进程、线程以及它们的区别进程:是系统进行资源分配和调度的一个独立单位,是最小的资源管理单位。线程:是进程的一个实体,是 CPU 调度和分派的基本单位,是最小的 CPU 执行单元。线程自己不拥有任何系统资源,但是它可以访问其隶属进程的全部资源。所以线程创建、撤销、切换的开销远小于进程,一个进程可以拥有多个线程。2、进程的状态和转换 三态模型:一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以划分,根据三态模型,进程的生命周期可分为如...转载 2020-09-08 13:43:57 · 679 阅读 · 0 评论 -
Linux——makefile编写
Linux——makefile编写阅读目录关于makefile make怎么执行 makefile简化 Makefile还有什么以前对makefile的编写,限于刚开始接触,我都比较局限一些死板的格式,有时候就会显得有些繁琐。在进一步了解一些系统编译和链接的知识后,对makefile编写流程有了一些新的认识,所以来此梳理梳理,方便更为灵活地编写makefile。限于makefile认识不足,这里参考了一篇比较好博文:makefile点击回顶部关于makefile .转载 2020-05-15 16:10:35 · 174 阅读 · 0 评论 -
写一个检测网线是否被拔出的守护进程(嵌入式设备上)
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <sys/file.h>#include <netinet/in.h>#include <linux/if.h>#include &l...转载 2020-04-01 15:21:22 · 597 阅读 · 0 评论 -
Shell脚本快速入门学习
常用的ShellShell 既是一种脚本编程语言,也是一个连接内核和用户的软件。常见的 Shell 有 sh、bash、csh、tcsh、ash 等。bash shell 是 Linux 的默认 shell,bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 ...转载 2020-02-10 11:10:11 · 344 阅读 · 0 评论 -
Vim C/C++强大的配置文件
这个配置文件插件是一位牛人写的,名字是:chxuan:githup地址:https://github.com/chxuan/vimplus.git配置的时候,运行下面的命令:一、先看下系统中有没有安装有git,没有的话先安装下:Ubuntu:sudo apt-get install git;CentOS: yum install -y git;...转载 2020-01-09 17:42:59 · 372 阅读 · 0 评论 -
linux
基本格式:gcc [options] file1 file2... //若不加入参数,则按默认参数依次执行编译、汇编和链接操作,生成的可执行文件名为 a.out常用参数:-E //只执行预处理操作-S //只执行到编译操作完成,不进行汇编操作,生成的是汇编文件(.s 或 .asm),内容为汇编语言-c //执行编译和汇编,但不进行链接,即只生成可重定位目标文件(.o),为二进制文件,不生成完...转载 2019-11-16 10:37:44 · 123 阅读 · 0 评论 -
Linux下/proc目录简介
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,...转载 2019-09-12 17:42:19 · 119 阅读 · 0 评论 -
Linux原子操作及函数
所谓的原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就是说,它的最小的执行单位,不能有比它更小的执行单元,因此这里的原子实际是使用了物理学里物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/sam/atomic.h文件中,它们都是使用汇编语言实现,因为c语言并不能实现这样的操作。原子操作主要用来实现资源计数...转载 2019-08-19 08:43:52 · 847 阅读 · 0 评论 -
linux操作系统常用面试题目
请描述一下用多线程怎么实现生产者消费者模型 知道nginx的惊群现象吗?怎么解决? 请说一下epoll的内核实现,都涉及哪些数据结构? select和epoll的区别? fork()都会做哪些复制? 什么是写时拷贝?Fork以后,父进程打开的文件指针位置在子进程里面是否一样? 你项目中为什么使用进程池?而不是用线程池?不同场景怎么选择请列举一些例子! tcp/ip的四层...转载 2019-05-05 05:26:55 · 324 阅读 · 0 评论 -
分段和分页
一.分页存储管理1.基本思想 用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。2.分页存储管理的地址机构15 12 11 0页号P 页内位移量...转载 2019-04-15 06:27:26 · 402 阅读 · 0 评论 -
linux操作系统常用面试题目
请描述一下用多线程怎么实现生产者消费者模型 知道nginx的惊群现象吗?怎么解决? 请说一下epoll的内核实现,都涉及哪些数据结构? select和epoll的区别? fork()都会做哪些复制? 什么是写时拷贝?Fork以后,父进程打开的文件指针位置在子进程里面是否一样? 你项目中为什么使用进程池?而不是用线程池?不同场景怎么选择请列举一些例子! tcp/ip的四层...转载 2019-04-22 07:12:42 · 205 阅读 · 0 评论 -
性能优化CPU、内存、磁盘I/O、网络性能相关命令
系统优化是一项复杂、繁琐、长期的工作,优化前需要监测、采集、测试、评估,优化后也需要测试、采集、评估、监测,而且是一个长期和持续的过程,不是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统、不同的硬件、不同的应用优化的重点也不同、优化的方法也不同、优化的参数也不同。性能监测是系统优化过程中重要的一环,如果没有监测、不清楚性能瓶颈在哪里,怎么优...转载 2019-03-26 06:55:37 · 610 阅读 · 0 评论 -
Linux内核的页缓存概述
页缓存是Linux内核一种重要的磁盘高速缓存,它通过软件机制实现。但页缓存和硬件cache的原理基本相同,将容量大而低速设备中的部分数据存放到容量小而快速的设备中,这样速度快的设备将作为低速设备的缓存,当访问低速设备中的数据时,可以直接从缓存中获取数据而不需再访问低速设备,从而节省了整体的访问时间。页缓存以页为大小进行数据缓存,它将磁盘中最常用和最重要的数据存放到部分物理内存中,使得系统...转载 2019-03-07 07:48:36 · 582 阅读 · 0 评论 -
在 Linux 平台中调试 C/C++ 内存泄漏方法
由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误。同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果。本文将从静态分析和动态检测两个角度介绍在 Linux 环境进行内存泄漏检测的方法,并重点介绍静态分析工具 BEAM、动态监测工具 Valgrind 和 rational purify 的使用方法。相信通过本文的介绍,能给大家对处...转载 2019-03-07 07:22:25 · 200 阅读 · 0 评论 -
linux下编译C++程序
一、GCC(GNU Compiler Collection)是Linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活。它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada g++是GCC中的一个工具,专门来编译C++语言的。 GCC的参数有:( 也是分步实现) ...转载 2018-09-06 07:29:22 · 20637 阅读 · 0 评论 -
Makefile
Makefile简介在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现。在大多数情况下,我们主要用它来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件...转载 2018-09-06 07:50:57 · 116 阅读 · 0 评论 -
Linux常用命令
Linux常用命令及部分详解1、总结部分常用指令 ls 显示文件或目录-l 列出文件详细信息l(list)-a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录-p 创建目录,若无父目录,则创建p(parent)cd ...转载 2018-11-21 07:15:53 · 322 阅读 · 0 评论 -
IO模型及select、poll、epoll和kqueue的区别
(一)首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select and poll) signal driven I/O (SIGIO) asynchronous I/O (the POSIX aio_functions)—————异步IO模型最大的特点是 ...转载 2018-12-27 15:43:20 · 287 阅读 · 0 评论 -
网络IO模型介绍
网络IO模型介绍常见的IO模型有以下5种:1. 阻塞式IO (blocking IO)2.无阻塞式IO (nonblocking IO)3.IO多路复用 (IO multiplexing)4. 信号驱动 (signal driven IO)5. 异步IO (asynchronous IO) 阻塞式IO (blocking IO)在linux中,默认情况下所有的s...转载 2018-12-27 16:03:27 · 127 阅读 · 0 评论 -
线程
摘要 在多处理器共享内存的架构中(如:对称多处理系统SMP),线程可以用于实现程序的并行性。历史上硬件销售商实现了各种私有版本的多线程库,使得软件开发者不得不关心它的移植性。对于UNIX系统,IEEE POSIX 1003.1标准定义了一个C语言多线程编程接口。依附于该标准的实现被称为POSIX theads 或 Pthreads。 该教程介绍了Pthreads的概念、动...转载 2019-01-09 15:41:21 · 212 阅读 · 0 评论 -
深度理解select、poll和epoll
在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机制,真正理解为何epoll能实现高并发。select...转载 2019-03-02 10:17:38 · 219 阅读 · 0 评论 -
iostat
iostat用于输出CPU和磁盘I/O相关的统计信息命令格式iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]iostat各个参数的说...转载 2019-03-03 14:02:21 · 1270 阅读 · 0 评论 -
linux操作系统面试题大全
1、进程管理1、进程是具有独立功能程序在某个数据集合上的一次执行过程。线程是进程内的一个执行实体或执行单元。进程和线程的区别:(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价...转载 2019-03-07 06:18:14 · 6150 阅读 · 0 评论 -
linux内核epoll实现分析
epoll与select/poll的区别select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的操作。select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就...转载 2019-03-07 06:25:45 · 191 阅读 · 0 评论 -
fork()之后都会做哪些复制,什么是写时拷贝,父子进程文件偏移量是否一致?????
首先我们先来回忆一下fork()函数:函数头文件:#include<unistd.h>函数原型:pid_t fork(void);其中pid_t是一个宏定义:#define pid_t int返回值:fork函数调用一次返回两次:在父进程中返回生成子进程的id(因为父进程不止拥有一个子进程)在子进程返回一个整数0(因为子进程只有一个父进程,可以通过调用ge...转载 2019-03-07 06:36:03 · 1593 阅读 · 1 评论 -
进程与虚拟内存空间
简介进程与程序程序是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件,一般程序都存储在硬盘当中。进程则是正在运行的程序的实例,是一个动态的概念,它描述了程序在运行时的各种状态,往往被加载到内存之中。从实现的角度来看,进程就是一种数据结构,目的在于清晰的刻画动态系统的内在规律,有效的管理和调度进入计算机系统主存储器运行的程序。有人做过一个很有意思的比喻,说把程序和进程的...转载 2019-03-07 06:51:44 · 1203 阅读 · 0 评论 -
Linux下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法。1. /pr...转载 2019-03-07 07:14:13 · 705 阅读 · 0 评论 -
服务器编程中的文件描述符
linux系统下一切皆文件,通过虚拟文件系统(VFS)的机制将所有底层屏蔽掉,用户可以通过统一的接口来实现对不同驱动的操作,对于每一个文件需要一个引用来指示,此时文件描述符应用而生,文件描述符类似于widows下的handle,对于文件的大部分操作都是通过这个描述符来操作的,例如read,write。对于每一个文件描述符,内核使用三种数据结构来管理。(1) 每个进程在进程表中都有一个记录项...转载 2019-03-07 07:21:19 · 183 阅读 · 0 评论 -
在linux环境下编译C++ 程序
在linux环境下编译C++ 程序单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 单个源文件生成可执行程序/* helloworld.cpp */#include <iostream>int main(int argc,char *argv[]){ std::cout << "hel...转载 2018-09-06 07:27:24 · 261 阅读 · 0 评论