Linux
刘小小小小刘
https://liuziqiao.github.io/
展开
-
Linux基础操作
什么是Linux和Windows操作系统软件一样,Linux也是一个操作系统软件。但是和Windows不同的是,Linux是一套开放源代码程序的、并可以自由传播的类Unix操作系统软件(Unix系统是Linux系统的前身,具备很多优秀特性)。其在设计之初,就是基于Intel x86系列CPU架构的计算机的。它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系统。Linux...原创 2018-05-22 15:08:34 · 589 阅读 · 0 评论 -
Linux下yum 错误
yum(Yellowdog Updater Modified)是一个集与查找,安装,更新和删除程序的Linux软件。它运行在RPM包兼容的Linux发行版本上,如:RedHat,Fedora,SUSE,CentOS,Mandriva。最近安装了CentOS7.0操作系统,在使用命令安装的时候出现如下错误:一,yum安装软件时,报错:没有包XXX可用。[root @ localhost~...原创 2018-12-31 10:46:27 · 2823 阅读 · 0 评论 -
解决Linux下静态链接库出现的问题
该问题是针对刚安装的Linux环境的小萌新在使用gcc/g++编译时出现的问题,如果你是大佬,这篇文章可能对你并没有帮助。问题描述当我们用Makefile工具时,在Makefile文件中写编译语句时,希望编译时用静态链接库来编译,例如语句如下。 g++ -o $@ $^ -static编译时链接静态库的方式有好几种,这里我使用static。问题出现的是,当我们make时,出现如下问...原创 2018-12-31 21:04:05 · 923 阅读 · 0 评论 -
CentOS7环境下安装Chrome
方式一下载Chrome浏览器的rpm包(https://www.chrome64bit.com/index.php/google-chrome-64-bit-for-linux) 利用xshell连接好Linux,使用命令rz,弹出选择窗口,将下载好的包上传进去,然后进入包目录,使用rpm命令进行安装rpm -ivh google-chrome-stable_current_x86_64...原创 2019-01-02 23:00:25 · 11498 阅读 · 0 评论 -
CentOS7 安装vscode
最近在Linux环境下写几个程序时发现用vim时总出现一点问题,配置了vim也还是不太习惯,因此就安装了vscode,这篇文章记录了CentOS7下安装过程。环境准备环境参数:操作系统版本:CentOS-7-x86_64-1511软件版本:visual stdio code 1.2操作步骤:1.下载 vscode_x86_64.rpm2.安装rpm -ivh code-i...原创 2019-01-02 23:58:21 · 12146 阅读 · 2 评论 -
“三次握手,四次挥手”你真的懂吗?
什么是”三次握手,四次挥手“TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。TCP提供了一种可靠、面向连接、字...原创 2019-01-24 12:27:27 · 547 阅读 · 0 评论 -
浅谈网络之“TCP协议”
下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 首先客户端主动发起连接、发送请求,然后服务器端响应请求,然后客户端主动关闭连接。两条竖线表示通讯的两端,从上到下表示时间的先后顺序,注意,数据从一端传到网络的另一端也需要时间,所以图中的箭头都是斜的。双方发送的段按时间顺序编号为1-10,各段中的主要信息在箭头上标出,例如段2的箭头上标着SYN, 8000...原创 2019-02-02 19:44:16 · 292 阅读 · 0 评论 -
说说网络之名词解析
学习一些网络之后,发现存在对一些名词的含义还是记不住,因此作此文章来梳理网络中的一些关键名词。网络名词术语解析路由(route)路由(名词) 数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。路由(动词) 某个路由节点为数据包选择投递方向的选路过程。路由器工作原理路由器(Router)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳...原创 2019-02-02 22:48:49 · 366 阅读 · 0 评论 -
谈谈网络之设计模式与分层模型
在学习网络之前,我们先了解下网络应用程序设计模式和网络的分层模型网络应用程序设计模式C/S模式传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。B/S模式浏览器()/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。优缺点: 对于C/S模...原创 2019-01-30 13:11:43 · 1354 阅读 · 0 评论 -
再谈网络之“协议格式”
上一篇中是有关网络的设计模式和分层模型,这篇就来说说网络里面用到的几个重要协议的格式,用程序员来的话来说就是报头格式。当然,在进入主题之前,先了解下通信的过程。通信过程两台计算机通过TCP/IP协议通讯的过程如下所示:上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:链路层有以...原创 2019-01-30 21:23:17 · 330 阅读 · 0 评论 -
学学网络之Socket套接字
套接字概念Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。其本质为内核借助缓冲区形成的伪文件。因为我们常说,Linux下一切皆文件。既然是文件,那么理所当然的,我们使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程...原创 2019-02-11 22:35:41 · 425 阅读 · 0 评论 -
手把手教你Centos7.2环境下安装java并配置环境
1.查看现有JAVA环境点击Applications,点击Faverites,点击Terminal打开终端输入yum list installed |grep java,可以查看CentOS自带的Java环境2. 卸载现有Java环境输入su,输入root超级管理员的密码,切换到root用户模式输入 yum -y remove java-1.8...原创 2019-05-10 23:53:22 · 593 阅读 · 0 评论 -
Centos7安装MongoDB
一、概述近日要在新的CentOS系统上安装MongoDB,某度结果后直接从Mongo官网直接获得3.2版本的下载链接,结果在下载时发觉速度慢的可怜。迫于无奈,只能找国内的镜像下载。切换国内的安装源后,使用yum的方式安装后发现,安装的MongoDB版本居然是2.8的。一番研究后,贴出以下操作方式,提供给后人操作。二、操作过程1、首先更新一下包吧,多更无害。sudo yum -y updat...原创 2019-05-13 10:11:22 · 306 阅读 · 0 评论 -
gdb调式原理
引子:gdb基本上大家都在用,你有没有想过它的实现原理是什么?为什么它可以控制程序执行、中断、访问内存甚至直接使程序流程改变?在使用gdb调试程序时,程序的进程状态是”T”,但又似乎并非接到了SIGSTOP信号,那么这个”T”是什么呢?追根溯源,我们今天来研究一下Linux下这个强大的系统调用:ptrace()ptrace首先,linux的进程状态大体分为以下几种:D (TAS...原创 2019-08-12 14:54:33 · 539 阅读 · 0 评论 -
Linux下几款C++程序中的内存泄露检查工具
原文链接Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++。最近用到STL中的List编程,为了检测写的代码是否会发现内存泄漏,了解了一下相关的知识。所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括:参见 http://...转载 2018-12-24 21:29:54 · 1982 阅读 · 0 评论 -
win10、deepin双系统 如何卸载/删除 deepin系统,删除deepin无法进入Windows 简便详细方法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35379989/article/details/83515882 </div> <link rel="stylesheet" href="https://cs转载 2018-12-24 21:15:44 · 7793 阅读 · 1 评论 -
vim使用命令大全
不知不觉,vim已经使用快一年了,虽然不是经常使用,这就导致每次使用时一些命令还是模糊,需要查查文档才能正确使用,因此就这篇博客分享给学习Linux的小伙伴们。vim介绍vim是程序员最喜欢的编辑器,也是Linux下第二强大的编辑器,虽然emacs是公认的世界第一,但我认为emacs并没有vim用起来高效。vim的几种模式正常模式:可以使用快捷键命令,或按输入命令 插入模式:可以...原创 2018-05-22 15:11:20 · 657 阅读 · 0 评论 -
Makefile工具的使用
Makefile是一个c语言的编译工具。如果学过Java,可能会认识Maven工具,makefile也是类似的工作。 Makefile能帮助c语言建立自动化的编译。一旦写好,执行一个make命令就可以编译整个工程。当然编写Makefile文件的时候有很多知识点在里面。这篇文章主要讲解如何编写基础性以及常用的Makefile文件。没有Makefile工具时如何进行编译首先我们看一个例子: 当...原创 2018-09-24 22:34:22 · 1509 阅读 · 0 评论 -
GDB使用
GDB介绍GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VS等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VS的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动程序,按用户要求影响程序的运行行为 2、使运行程序在指定条件...原创 2018-10-02 10:56:29 · 1964 阅读 · 0 评论 -
Linux编程之进程
Linux下多任务介绍首先,简单介绍下多任务系统,任务,进程,线程分别是什么?之间的区别是什么?从宏观角度理解后再针对每一个仔细探究 什么叫多任务系统:多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务。 任务定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作。 进程定义:进程是指一个具有独立功能的程序在某个数据集...原创 2018-10-19 23:54:36 · 172 阅读 · 0 评论 -
Linux编程之进程(二)
在上一篇关于进程的博客中阐述了进程的概念,总结了进程的状态以及进程如何描述,这篇博客就总结下进程的创建,等待,终止以及进程等待的作用。进程的创建上一篇博客中讲了关于叉函数的使用,其实叉函数就是进程创建的一个重要手段,演示下面的进程创建³³ 直接上代码// create.c#include <stdio.h>#include <unistd.h>int ...原创 2018-10-30 16:28:48 · 225 阅读 · 0 评论 -
Linux系统之基础IO
学过C语言的都知道,在C语言中IO其实就是文件操作,像fopen,fwrite,fread,fseek,fprintf,fclose等都是C语言库函数中的系统调用接口,如下图是常用先回顾下这些标准c库中文件I/O的接口的使用回顾C库中的IOFILE *fopen(const char *path, const char *mode);size_t fread(void *ptr,...原创 2018-11-10 11:32:07 · 239 阅读 · 1 评论 -
Linux安装MySQL5.7踩坑
经过一下午的时间终于脱坑,借这个机会发表一篇文章聊以慰藉,也给自己以后安装做个引子吧,开始正题:首先查看一下自己PC是否安装了其他版本的mysql,有则删之。。。查看版本号:mysql -Vapt-get autoremove --purge mysql-server-版本号apt-g...转载 2018-11-17 18:48:23 · 332 阅读 · 0 评论 -
Linux下死锁的产生,预防,避免,检测及解除
死锁的定义所谓死锁就是指在多道程序系统中,一组进程中的每个进程都无期限的等待被该组进程中的另一个进程所占有且永远不会被释放的资源,这种现象称系统处于死锁状态,简称死锁。处于死锁状态的进程成为死锁进程。 如上面的图。系统发生死锁会大量浪费系统资源甚至会导致整个系统崩溃死锁的产生的原因产生死锁的原因主要有两个:一是竞争资源,系统提供的资源有限,不能满足每个进程的需求;二是多道程序...原创 2018-11-28 21:52:48 · 486 阅读 · 0 评论 -
Linux系统编程之线程
线程的概念回顾进程在介绍线程之前,我们先来回顾下进程,进程的定义就是指一个具有独立功能的程序在某个数据集上的一次动态执行的过程,是系统进程资源分配和调度的基本单元。 一次任务的运行可以并发激活多个进程,这些进程相互合作完成该任务的一个最终目标。 操作系统对进程的描述:PCB(进程控制块)Linux下的进程描述——task_struct。那么线程是什么呢?线程是进程中的一条执行流,Li...原创 2018-12-05 22:46:41 · 182 阅读 · 0 评论 -
Linux系统编程之进程间通信
进程通信概念进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放。那么释放的资源可能是其他进程需要的,然而进程用户空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。进程通信应用场景 数据传输:一个进程需要将它的数据发送...原创 2018-12-08 21:59:25 · 395 阅读 · 1 评论 -
vim 中Ctrl+S保存问题
习惯了在IDE环境下写代码而突然换到VIM中的人看过来,这是需要注意的坑,我们习惯在VIM中写完进行CTRL + S进行保存,然后就卡住不动了,你最有可能的操作就是关闭当前打开的VIM,但是关闭后我们的代码就没有了,哈哈,刚写的代码没了你是什么心情,我就是一遍一遍的踩到这个坑才研究了下CTRL + S在VIM中的作用,其实在VIM中CTRL + S是锁住的意思,锁住当前页面,我们用CTRL + ...原创 2018-12-03 23:45:53 · 1269 阅读 · 0 评论 -
CentOS7安装更新git正确打开方式
安装centos7 之后一直用自带的git,在提交的时候总是出现下面这种情况,原因是git版本太低导致的,于是就想了办法去更新git, 百度看了很多教程,都是什么先卸载再重新安装,卸载之前还需要备份一份配置文件,看了很多感觉非常麻烦,于是就在Linux网站中看到了一个最正确的更新及安装方式。以下是记录我更新安装过程。配置存储库在这之前,我们需要在root权限下才可以进一步操作。 1.启...原创 2019-01-03 16:50:37 · 2634 阅读 · 1 评论 -
内核态与用户态切换
什么是内核态用户态?系统态(也称为管态或核心态),操作系统在系统态运行——运行操作系统程序用户态(也称为目态),应用程序只能在用户态运行——运行用户程序用户态和内核态的转换用户态切换到内核态的3种方式a. 系统调用这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调...原创 2019-08-12 15:11:00 · 669 阅读 · 0 评论