
Linux 知识点
文章平均质量分 78
在这里,博主会分享一些关于Linux的知识,希望大家多多支持哦。
ly_1115
随遇而安,没必要逞强。
展开
-
【Linux】linux下的基本指令
1. linux 操作系统1.1 linux操作系统初识阶段 linux认识以及基本命令操作 linux常用工具(编辑器,调试器......)1.2 linux系统编程阶段: 进程概念---程序 进程控制 基础IO 进程间通信 进程...原创 2019-03-10 16:07:03 · 293 阅读 · 0 评论 -
【Linux 】权限管理及常用工具
shell:命令行解释器权限:用户对操作系统进行操作的权限:管理员(超级用户)root,普通用户一、用户针对文件的权限:1. 文件对用户的分类:文件所有者文件所属组其它用户u(user)g(group)o(other)2. 文件对于操作的分类:表示权限方法只读只写仅可执行人性化字符r - --w-- - x二进制位图...原创 2019-03-10 16:45:13 · 616 阅读 · 0 评论 -
【Linux】 vim 编辑器的命令集
vim编辑器:因为没有鼠标,既要完成一般的操作,还要完成输入, 因此将vim的操作分了很多的操作模式 12种模式,但常用的只有三种:普通模式,插入模式,底行模式。模式切换:(只能从普通模式进行切换)普通<->插入: i 从光标位置开始插入 a 从光标的下一个字符处开始插入 o 向光标所在行下方添加新行,开始插入 ...原创 2019-03-10 16:55:23 · 190 阅读 · 0 评论 -
【Linux】模拟实现加载的进度条
没学过Linux 的小伙伴也可以学会的神操作!!下面我会一步一步的仔细讲解,一起来看 ~首先可以通过我之前的博客 :[Linux的基本指令](https://blog.youkuaiyun.com/ly_6699/article/details/88379710)学习一下基本命令然后了解[权限管理和常用工具](https://blog.youkuaiyun.com/ly_6699/article/details/88380366)有兴趣的可以继续查看 [vim编译器的命令集](https://blog.youkuaiyun.com/原创 2019-05-14 00:16:40 · 370 阅读 · 1 评论 -
【Linux】一张图读懂 vim 的使用
文字总是不如图简单清晰,所以我在这里用一张图写出vim三种模式间的切换以及常用的命令集,希望大家多多支持~在前面的博客中,博主详细讲到 vim的基本命令集,想了解更多的小伙伴欢迎查看。...原创 2019-07-14 10:13:39 · 247 阅读 · 2 评论 -
【Linux】gcc 编译器 及gdb 调试器
Linux 下三种工具的默认方式vim 编辑器的默认打开模式:命令模式gcc/g++ 编译器的默认链接方式:动态链接gdb 调试器的默认版本:release 版本在前面的博客中,我讲到了vim编辑器 的使用,这里我主要讲一下gcc 编译器和 gdb 编辑器1. gcc编译过程预处理(主要进行宏替换)编译(用于生成汇编)汇编(生成机器码)链接(生成可执行文件)2. gcc ...原创 2019-07-14 11:43:19 · 399 阅读 · 0 评论 -
【Linux】make和 Makefile
Linux 项目自动化构建工具 —— make/Makefilemake 是一条命令,Makefile 是一个包含依赖关系和依赖方法的文件make只执行一次,而 .PHONY:clean 总是被执行(因为clean是伪目标)Makefile 的编写/> vim Makefile 新建Makefile文件并用vim打开举例说明Makefile 中多变量的使用变量名=...原创 2019-07-14 16:56:45 · 252 阅读 · 0 评论 -
【Linux】冯诺依曼体系和操作系统
即**冯诺依曼体系结构的主要内容:**1. 冯.诺依曼体系结构包含五大组件:控制器(Control Unit)、运算器(Arithmrtic Logic Unit)、存储器(Memory)、输入设备(Input)、输出设备(Output);2. 计算机处理的数据和指令一律用二进制数表示,即只有1和0;3. 顺序执行程序:**中央处理器即CPU 能且只能对存储器即内存进行读写**,不能访问外设 *(因为外设的速度是相对较慢的,若CPU效率取决于外设会导致处理效率较慢)*。所以计算机运行过程中,把要执行原创 2019-07-14 17:29:39 · 383 阅读 · 0 评论 -
【Linux】进程的管理
# 2 进程的管理先描述进程 — PCB再组织进程 — 双向链表形式存储在内核中## 2.1 描述进程--PCB **PCB**进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。课本上称之为PCB(process control block); Linux操作系统下的PCB是 task_struct,task_struct 是Linux内核的一种数据结构,会被装载到RAM(内存)里并且包含着进程的信息。 - 进程的属性:>标识符: 描述当前进程的唯一标识符,用来区别其原创 2019-07-14 22:39:03 · 334 阅读 · 1 评论 -
【Linux】 实现一个简单的线程池
线程池的概念“池”的概念大家应该不陌生,线程池顾名思义就是存放线程的“池子”。它是一种线程的使用模式。我们发现如果线程过多会带来调度的开销,进而影响缓存的局部性和整体性能。而线程池维护着一定数量的线程,等待监督管理者分配可并发执行的任务,从而避免了在处理短时间任务时创建和销毁线程的代价。所以线程池不仅能够保证内核的充分利用,还能防止线程的过分调度。总结:线程池很好的解决了在处理任务时的效...原创 2019-07-18 21:30:39 · 266 阅读 · 1 评论 -
【Linux】环境变量
什么是环境变量环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,即环境变量是由操作系统提供的环境变量区别与普通变量,是因为它是一个有特殊意义的全局变量环境变量可以被子进程继承下去常见的环境变量PATH:指定命令的搜索路径HOME:制动用户的注工作目录SHELL:当前的shell,它的值通常是 /bin/bash查看环境变量echo $Name$ 即表示提取环...原创 2019-07-19 20:26:41 · 185 阅读 · 0 评论 -
【Linux】程序地址空间
程序地址空间的理解程序的地址空间并不是真的物理内存,只是进程的一个地址空间程序的地址空间本质就是一个描述地址分配的结构体程序的地址空间只是一个虚拟的地址,两个进程可能有相同的一个地址。来段代码感受一下:1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 ...原创 2019-07-19 21:44:59 · 186 阅读 · 0 评论 -
【Linux】基础IO 知识点
C文件1. 写入文件 ... 6 FILE *fp=fopen("myfile","w"); ... 11 const char*msg="hello world!\n"; 12 int count=5; 13 while(count--) 14 { 15 fwrite(msg,strlen(msg),1,fp); ...原创 2019-07-21 21:40:41 · 216 阅读 · 0 评论 -
【linux】文件描述符
由前面的文件的讲解可知,文件描述符就是一个小整数。0 & 1& 2任何程序在运行时都会变成进程,C标准库都会默认为其打开三个输入输出流:stdin,stdout,stderr。这三个流的类型都是FILE*,fopen 的返回值类型也是文件指针。名字对应设备文件描述符stdin:标准输入键盘0stdout:标准输出显示器1stderr:...原创 2019-07-22 20:50:23 · 383 阅读 · 0 评论 -
【Linux】自己的动静态库的生成详解
动态库和静态库的区别静态库(库名的后缀 .a):程序在编译链接时把库的代码直接加载到可执行文件中,程序运行的时候便不再需要静态库。。因为每个程序都要加载一次库文件,所以很浪费系统空间。动态库(库名的后缀 .so):程序在运行时才去链接动态库的代码,多个程序可共享使用库文件中的代码。因为不用在自己的可执行程序中加载库文件,只需要在进程地址空间的共享区加载一次即可,从而节省了内存和磁盘空间。...原创 2019-07-23 13:17:24 · 189 阅读 · 2 评论 -
【Linux】 文件重定向
了解重定向首先我们关闭文件描述符1,看下面代码:#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>int main(){ close(1); int fd=open("my...原创 2019-07-25 14:17:36 · 250 阅读 · 0 评论 -
【Linux】进程间通信——管道详解
每个进程本身具有独立性,故实现进程间通信是有难度的,所以我们要实现进程间通信的前提是想要通信的进程可以“看到”同一份资源(这里主要指同一块内存)。进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程间需要共享同一份资源。通知事件:一个进程需要向其他进程发送消息,通知某个事件。进程控制:方便一个进程对另一个进程掌控并及时了解它状态的改变。进程间通信的方式...原创 2019-07-25 20:01:37 · 344 阅读 · 0 评论 -
GitHub学习以及在commit/push时遇到问题的详解
2. 在Linux下同步GitHub的仓库3. 使用git命令上传文件4. 上传GitHub常见问题的解决方法- git commit 出现提示:Please tell me who you are- git push出现提示:No refs in common and none specified’doing nothing- 提交成功,但GitHub上绿格子未显示转载 2019-07-25 21:45:59 · 755 阅读 · 0 评论 -
【Linux】使用命名管道通信实例
用命名管道实现文件拷贝如图:我用命名管道tp 实现了将文件abc 中内容拷贝至abc.bak中,具体实现过程我在上篇博客中详细说明了,这里我不赘述,只显示代码实现过程。上篇博客:完整代码fifo1.c#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <er...原创 2019-07-25 22:32:06 · 459 阅读 · 0 评论 -
【Linux】进程间通信——System V IPC
IPC即进程间通信System V 共享内存共享内存示意图:由上图可看出共享内存的生命周期一定随内核,所以我们必须手动删除申请的共享内存段。并且共享内存无法提供同步与互斥机制,我们需要自己去维护。不过因为共享内存直接在物理内存中进行操作,不需要多次的相互拷贝,所以它也是进程间通信最快的一种方式。共享内存函数: shm - shared memory#include<sys/t...原创 2019-07-29 00:27:30 · 223 阅读 · 0 评论 -
【Linux】简单聊信号
大家对信号应该不陌生吧。在生活中:比如红绿灯,这个信号让我们知道什么时候过马路更安全。你妈叫你回家吃饭,这个信号让你知道你接下来该回家了。又或者你网购了衣服,即使快递还没有到,但你知道快递来了以后你该怎么处理。在计算机中,我们经常通过 Ctrl+C 结束当前进程的过程,其实是键盘产生了一个硬件中断,被OS获取解释成信号,再发送给目标前台,前台进程收到了信号进而引起进程终止并退出。所以信号可以...原创 2019-07-29 19:35:25 · 259 阅读 · 0 评论 -
【Linux】可重入函数
可重入函数与不可重入函数的区别可重入函数:一个函数只访问自己的局部变量或者参数即同一函数即使被多个执行流同时调用,结果仍然正确。不可重入函数:一个函数会因访问全局变量而造成错乱首先看下面的例子:main函数调用insert函数向链表中插入node1时,插入操作分为两步,可是刚做完第一步的时候因为硬件中断使进程切换到内核,内核进行信号处理时发现处理信号的动作是用户自定义所以再次回到...原创 2019-07-31 17:30:06 · 306 阅读 · 0 评论 -
【Linux】再次理解volatile 关键字
volatile的作用:保存内存可见性这个关键字我们在C语言中已经有所涉猎,今天我们站在信号的角度重新理解一下。首先看下面的代码:#include <stdio.h>#include <signal.h>#include <unistd.h>int flag=0;void sighandler(int sig){ printf("chang...原创 2019-07-31 18:41:06 · 424 阅读 · 0 评论 -
【Linux】线程的概念
我之前说到了进程的管理,进程间通信,以及信号。今天我们聊一下线程。什么是线程我们知道程序是机器指令和数据的集合,这些指令和数据是磁盘上的一个可执行映像。而进程是程序的一个执行实例,是为了完成我们的计划的动态实体。操作系统为了描述这个动态的实体不得不使用一些额外的数据(进程pcb,寄存器的值等),这些多出来为了管理进程的数据也就成了进程与程序间的根本区别点。所以我们说:进程是承担分配系统资源的基...原创 2019-07-31 20:50:31 · 270 阅读 · 0 评论 -
【Linux】线程的控制
在上篇博客线程的概念中,我讲到线程很多优点,但是缺乏合理的访问控制,所以我们就来看一下怎么控制线程吧~POSIX 线程库我们知道Linux中并没有真正的线程,CPU眼中看到的只有进程实体,所以线程就成了一个虚无的东西,也就意味着Linux并没有提供一组系统调用管理线程。那既然操作系统没有为我们提供结构,我们就自己实现一组接口来管理线程。POSIX表示可移植操作系统接口,这里我们介绍的这些函数...原创 2019-07-31 21:27:51 · 195 阅读 · 0 评论 -
【Linux】线程互斥
在之前的博客中,我讲到线程的相关概念和线程的控制,在本节中我们聊一下线程互斥。五个概念临界资源多线程执行流共享的资源叫做临界资源。大量执行流同时访问时可能会导致数据二义性的问题。临界区每个线程内部访问临界资源区的代码叫做临界。我们可以通过控制代码的读写规则保证临界区的安全性。互斥任何时刻有且仅有一个执行流进入临界区的情况称互斥。我们通常在访问临界资源时会对它进行加锁保护,保证数据的...原创 2019-08-01 21:07:40 · 335 阅读 · 0 评论 -
【Linux】线程同步
在介绍线程同步之前,我们需要先了解一下死锁的相关概念。死锁:在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所占有用不会释放的资源而处于一种永久等待的状态。无论线程还是进程都可能出现死锁死锁的四个必要条件互斥:每个资源每次只能被一个执行流使用请求与保持条件:一个执行流因请求资源而阻塞时,对已获得的资源保持不放不剥夺条件:一个执行流已获得的资源在未使用完之前不能被强行...原创 2019-08-02 12:35:43 · 232 阅读 · 0 评论 -
【Linux】生产者-消费者模式&通过阻塞队列实现
而linux中的生产者消费者模型具体来说,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的数据,消费者使用这些数据做成其他产品。例如用户注册的过程主要有以下几个步骤,>1)用户在前台输入用户名&密码&验证码>2)数据被分解并发送给后台各个服务(验证码验真和用户信息存储分成两个独立服务)>3)后台服务有自己的内存缓冲区即请求队列进行数据暂存>4)然后各服务从缓存区取数据进行相应处理其中数据分发的角色相当于**生产者提供数据**,请求队列相当于**交原创 2019-08-04 14:19:41 · 294 阅读 · 1 评论 -
【Linux】生产者消费者模型-基于环形队列实现
在上篇博客[基于阻塞队列的生产者消费者模型](https://blog.youkuaiyun.com/ly_6699/article/details/98315588)中我介绍了什么是生产者消费者模型以及生产者-消费者模式,还没了解的可以戳链接查看。基于阻塞队列的实现,虽然简单,但是对内存分配性能要求较高的程序是不适用的,因为该方式在push的时候,可能会分配存储空间用于存储新元素;在pop时,可能会释放废弃元素的存储空间。如此频繁的对缓冲区进行分配和释放会大大浪费使用该模式的性能。本篇博客是提高内存分配性能的一原创 2019-08-04 16:06:32 · 648 阅读 · 0 评论 -
【Linux】读写锁机制
读写锁读写锁本质是一个自旋锁,用于处理多读少写的情况。读写锁的行为当前锁的状态读锁请求写锁请求无锁可以可以读锁可以阻塞写锁阻塞阻塞注意:1. 写时独占资源,读时共享资源,写锁优先级更高2. 写与读之间既有互斥关系又有同步关系。3. 读写锁与生产消费模型的区别:读者不会将数据独占,也不会影响其他读者的行为。其他锁悲观锁在每次取...原创 2019-08-04 16:35:44 · 838 阅读 · 1 评论 -
【Linux】单例模式 — 饿汉与懒汉
**单例模式**是一种经典的,常用的。常考的软件设计模式,也是设计模式中最简单的形式之一。它的核心结构中只包含一个被称为单例的特殊类,即单例模式可以保证系统中,应用该模式的一个类只有一个对象实例。因此这一模式的目的就是使得类的一个对象成为系统中的唯一实例。**设计模式**就是编程大佬们针对一些经典的常见场景,总结的一些对应的解决方案。原创 2019-08-04 17:20:07 · 256 阅读 · 1 评论 -
【Linux】普通的vimrc 配置,可直接带走!!
打开vimrc配置文件sudo vim /etc/vimrc设置配置文件大家可以去大佬GitHub下载并解压配置文件:wget http://files.cnblogs.com/ma6174/vimrc.zip按 a 进入插入模式,复制下面想配置的内容到自己的 .vimrc文件中“”"""""""""""""""""""""""""""""""""""""""""""...原创 2019-08-06 14:58:04 · 195 阅读 · 0 评论 -
XShell命令 - 职场新人使用手册
1.Xshell介绍Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议,l一般用于在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。学习Linux时,XShell并不是必需品,我们完全可以用centos终端的界面来输入命令完成学习,但它可以将我们的Windows系统和你的Linux系统链接起来,让我们可以在Windows系统下,去操作Linux系统。...原创 2020-07-31 15:05:46 · 1737 阅读 · 0 评论 -
【idea使用问题】使用git的update更新代码时提示 Can‘t Update No tracked branch configured for branch master or......
使用idea的update提示Can't Update No tracked branch configured for branch master or branch ...原创 2022-02-14 18:03:52 · 6476 阅读 · 0 评论