自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 Linux—文件 I/O

文件 I\O

2020-10-24 23:46:14 360

原创 IO多路复用之select、poll、epoll详解

IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。如果一个服务器要处理多个服务或多个协议,一般要使用I/O复用。与多进程和多线程技术相比,

2020-10-24 23:35:08 330

原创 C++ vector 用法(详解、代码演示)

一、什么是vector?  首先 vector 是一个容器。向量(Vector)是一个封装了动态大小数组的 顺序容器 (Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。  可以简单的认为,向量(Vector)是一个能够存放任意类型的动态数组。二、容器特性1. 顺序序列  顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2. 动态数组  支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作。提供了在序列末

2020-08-05 22:40:48 687

原创 malloc realloc new calloc 的区别与联系

http://www.xiaobaijidi.net/thread-103554-1-1.html#include<iostream>#include<iomanip>using namespace std;int main(){ float (*cp)[9][8]=new float[8][9][8]; for(int i=0;i<8;i+...

2020-08-04 16:33:55 353

原创 C++—汉明距离(比较两个数对应的二进制不同的位置的数目)—计算一个二进制数中有几个 1

题目说明  两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。  注意: 0 ≤ x,y < 231  示例:  输入: x = 1, y = 4  输出: 2  解释:1 (0 0 0 1)4 (0 1 0 0)   ↑ ↑  上面的箭头指出了对应二进制位不同的位置。解题题目分析:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目  这里的意思就是将两个数用二进制表示,然后按位

2020-05-21 18:41:59 3023

原创 Linux—vim 打造 IDE ,打造专属于你的 vim 编辑器

vim 打造 IDEvimrc 是 vim 的配置文件,可以修改两个位置/etc/vim/vimrcV. vimrc~/.vimrc优先级高拷贝我提供的vim-ide.tar.gz,保^正你的vim版本大等于7.4,vim _v解包到当前用户目录下,得到.vim隐藏文件tar zxvf vim-ide.tar.gz -C V...

2020-05-20 23:07:05 942

原创 Linux—什么是 Toolchain 工具链,以及 binutils 常用的几种工具

  Toolchain 是文件系统和工具链。 如:一套流程里面用到的每个工具和相关的库组成的集合,就称为工具链(tool chain)。  在软件中,工具链是一组编程工具,用于执行复杂的软件开发任务或创建软件产品,该软件产品通常是另一个计算机程序或一组相关程序。通常,形成工具链的工具是连续执行的,因此每个工具的输出或结果环境状态成为下一个工具的输入或启动环境,当引用一组相关工具但不必须连续执行时也使用该术语。  GNU 工具链 是一个包含了由 GNU 项目所产生的各种编程工具的集合。这些工具形成了一条工

2020-05-20 22:53:07 8205

原创 Linux—常用服务器构建—ftp、nfs、ssh、telent

常用服务器构建1. ftp1.1 ftp 服务器1. 安装 vsftpd 服务器sudo apt-get install vsftpd2. 配置 vsftpd.conf 文件sudo vi /etc/vsftpd.conf添加下面设置anonymous_enable=YESanon_root=/home/xinwenpeng/ftpno_anon_password=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_e

2020-05-14 23:53:38 493

原创 Linux—关机重启详细知识点

  相信很多小伙伴都会使用这命令,但是只是用某一种命令组合来关机,偶尔想用其他方式来关机,却忘记其他命令是啥了,我一直是使用命令 sudo poweroff 或 sudo shutdown -h now直接关机,今天突然想放半个小时歌之后,虚拟机自己关机,但是命令却记不太清了,为了方便,就把命令总结了一下。关机重启  关机重启这些操作都需要有 root 权限,也就是普通用户使用命令时,前面要加 sudo,临时获取 root 权限。1. poweroff$ sudo poweroff (输入密码之后,

2020-05-14 18:14:50 457 1

原创 Linux—umask(创建文件时的掩码)用法详解

umask 基本用法umask [-p] -S [mode]umask 指定用户创建文件时的掩码,其中的 mode 和 chmod 的命令中的格式一样。如果不用 mode 参数,则显示当前的 umask 设置。如果用 -S 参数,则以符号形式显示设置。$ umask0022 (第一个 0 表示是 8 进制,后面的三位数字用 8 进制表示)$ umask -Su=rwx,g=rx,o=rx比如该用户 touch 或 gedit 创建一个文件,则其默认权限为 -rw-r-r–,如果该用户创建

2020-05-14 17:12:09 13124

原创 Linux—网络管理—ifconfig、ping、netstat、nslookup、finger

网络管理1. ifconfigifconfig 类似于 Windows 下的 ipconfig 。ifconfig 用于查看网卡信息或配置网络设备(网络接口卡)的命令。Linux 下网卡默认 eth 打头,编号默认从 0 开始匹配,$ ifconfig eth0(网卡) Link encap:以太网 硬件(MAC)地址 00:0c:29:1f:c8:1c inet 地址:192.168.11.67(IP地址) 广播:192.168.11.255 掩码:255.255.255.0

2020-05-12 23:07:22 676

原创 Linux—用户管理—用户创建与删除

用户管理1. 创建用户(这是一个基本的创建命令)sudo useradd -s /bin/bash -g name(所属组名,该组必须已经存在) -d /home/username(新建用户名) -m username(新建用户名)(这个也是创建命令,意思是创建了一个用户 username ,该用户的登录 Shell 是 /bin/sh,他属于 group 用户组,同时又属于 adm 和 root 用户组,其中 group 用户组是其主组)sudo useradd -s /bin/sh -g g

2020-05-12 17:32:25 586

原创 Linux—如何运行自己编写的程序可以像运行 ls 一样,不用指明程序所在路径?

问题:如何运行自己编写的程序可以像运行 ls 一样,不用指明程序所在路径?  首先,自己先编写一个简单的 test.c 文件。//test.c#include<stdio.h>int main(){ printf("Hello World!\n"); return 0;}  然后使用 gcc 编译器编译生成可执行文件 app,并执行 app 。$ gcc-o app test.c$ ./appHello World!  ./ 是指在当前目录下寻找可执行程序 app

2020-05-11 15:54:39 1312

原创 Linux—进程管理—who、ps、jobs、fg、bg、kill、env

进程管理1. who  查看当前在线上的用户情况。所有的选项都是可选的,不使用任何选项时,who 命令将显示以下三项内容:  login name:登录用户名;  terminal line:使用终端设备(就是使用 Ctrl+Alt+T 打开的窗口叫做终端,打开的终端越多,显示的终端设备越多);  login time:登录到系统的时间。name@ubuntu:~/demo$ who -uH名称 线路 时间 空闲 进程号 备注(用户名) tty2 2020-08-

2020-05-10 22:01:36 573

原创 Linux—压缩包管理(tar、rar、zip)

压缩包管理1. tartar [主选项+辅选项] 文件或者目录  tar 可以为文件和目录创建档案。利用 tar 命令用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。使用该命令时,主选项是必须要有的,辅选项是辅助使用的,可以选用。主选项包括:  c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。  r 把要存档的文件追加到档案文件的未尾。  t 列出档案文件的内容,查看已经备份了哪些文件。  u 更新文件。用新增的文件

2020-05-10 15:40:45 405

原创 Linux—磁盘管理—挂载 U 盘和光盘以及基本使用

磁盘管理1. mount  作用:用于挂载 Linux 系统外的文件。挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM 或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。通俗的说挂载就是使用户通过文件系统可以访问和修改存储设备内的文件。  命令格式:mount [-t vfstype] -o options device dir  █ -t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:  

2020-05-10 14:27:10 1017

原创 Linux 进程间通信和同步—消息队列

消息队列  消息队列是内核地址空间中的内部链表,通过 Linux 内核在各个进程之间传递内容。消息顺序地发送到消息队列中,并以几种不同的方式从队列中获取,每个消息队列可以用 IPC 标识符唯一地进行标识。内核中的消息队列是通过 IPC 的标识符来区别的,不同的消息队列之间是相对独立的。每个消息队列中的消息,又构成一个独立的链表。1. 消息缓冲区结构  常用的结构是 msgbuf 结构。程序员可以以这个结构为模板定义自己的消息结构。在头文件 <linux/msg.h> 中,它的定义如下:s

2020-05-09 20:54:11 766

原创 自学 Linux 22—Linux 应用层网络服务程序简介—自定义网络服务

自定义网络服务  Linux 操作系统是为网络而诞生的操作系统,它为用户进行网络服务配置提供了诸多便利。接下来将对用户配置自己的网络服务进行简单的介绍,通过本篇博客内容的学习,用户可以配置简单的网络服务程序。1. xinetd/inetd  在 Linux 操作系统中,一些小的服务程序或者不经常使用的服务程序,被集成到一个服务器管理程序中,通常是 inetd,目前一般使用 xinetd。xi...

2020-05-05 00:10:09 252

原创 自学 Linux 21—Linux 应用层网络服务程序简介—NFS 协议和服务

NFS 协议和服务  NFS 协议是一种用于文件共享的协议,它可以使得主机之间进行文件的共享。客户端可以像在本机上的文件一样操作远程主机的文件。NFS 协议最初仅支持 UDP 协议,目前最新版本的 NFS 可以支持 UDP 或者 TCP 协议,不过 UDP 协议的速度会更快。1. 安装 NFS 服务器和客户端  NFS 协议是一个十分简单的协议,它本身没有提供信息传输的协议和功能。之所以 N...

2020-05-04 23:21:20 378

原创 自学 Linux 20—Linux 应用层网络服务程序简介—TELNET 协议和服务

TELNET 协议和服务TELNET 协议是最早出现的远程登录协议之一,使用 TELNET 协议可以在本机上登录到远程的计算机上进行一些操作。这在服务器管理中经常使用,可以方便地通过网络对服务器的资源进行访问和控制。1. 远程登录的基本概念分时操作系统允许多个用户同时使用一台计算机。为了保证系统的安全和记账方便,系统要求每个用户有单独的账号作为登录标识,系统还为每个用户指定了一个口令。用户在...

2020-05-04 22:49:56 293

原创 自学 Linux 19—Linux 应用层网络服务程序简介—FTP 协议和服务

fd

2020-05-04 22:30:26 292

原创 自学 Linux 18—Linux 应用层网络服务程序简介—HTTP 协议和服务

  操作系统中有很多默认的网络服务或者客户端程序,例如 Web 服务器和浏览器、FTP 服务器和客户端、Telnet 服务器和客户端等,在 Linux 环境下有 Apache 、Mozilla、VSFtp 等。接下来对这些程序的协议和使用进行介绍,主要包括以下内容:  █ HTTP 协议及服务,主要介绍 HTTP 协议的标准和应用;  █ 介绍 FTP 协议标准,并介绍 FTP 客户端的使用;...

2020-05-04 21:00:09 332

原创 自学 Linux 17—Linux 用户层网络编程之 TCP/IP 协议族简介—主机字节序和网络字节序详细知识点

主机字节序和网络字节序  在使用网络进行程序设计中会碰到的一个问题是字节序的问题,这在基于单机或者同 类型机器进行开发的过程中很少遇到。由于网络的特点是将 Internet 上不同的网络设备和 主机进行连接和通信,这决定了使用网络进行开发的程序的特点就是要兼容各种类型的设备,其中的数据在不同的设备上要有唯一的含义。字节序的问题是上述情况下的典型问题。1. 字节序的含义  字节序的问题是由于 ...

2020-05-04 17:24:34 260

原创 自学 Linux 16—Linux 用户层网络编程之 TCP/IP 协议族简介— IP 地址分类与 TCP/IP 端口详细知识点

IP 地址分类与 TCP/UDP 端口  要想使网络设备或者主机能够连接到 Internet,必须为网络设备配置 IP 地址。由于在 Internet 上 IP 地址是全世界唯一的,IP 地址可以标识一个主机。目前应用范围最广泛的因特网地址使用的是 IPv4( IP 第 4 版本)的 IP 地址,长为 32 位,由 4 组十进制数组成,每组数值的范围为 0〜255,中间用点号隔开,称之为四组 “...

2020-05-04 13:40:56 443

原创 自学 Linux 15—Linux 用户层网络编程之 TCP/IP 协议族简介— TCP/IP 协议栈详细知识点

TCP/IP 协议栈  在博客 中对 ISO/OSI 的 7 层结构进行了简单的介绍,由于 ISO 制定的 OSI 参考模型过于庞大、复杂,在实现时造成了很多困难,从而招致了许多批评。在实际实现中,TCP/IP协议栈获得了更为广泛的应用,目前主流的操作系统网络协议栈基本上采用了 TCP/IP协议栈。1. TCP/IP 协议栈参考模型  经典的 TCP/IP 参考模型从上至下分为 4 个层...

2020-05-04 00:03:07 728

原创 自学 Linux 14—Linux 用户层网络编程之 TCP/IP 协议族简介— OSI 网络分层介绍

  互联网最初是由于军事用途出现的,现在网络己经走进千家万户,成为生活的一部分。联网的各个终端之间能否进行交互的软件基础是网络协议栈,目前主流的网络协议栈是 TCP/IP 协议栈。TCP/IP 协议栈的基本知识,主要包括有:ISO/OSI 的网络模型架构;TCP/IP 网络模型;Internet 协议,即 IP 协议;TCP/IP 模型中的 TCP 和 UDP 协议及 ICMP 协议;地址解析协议...

2020-05-02 23:13:02 255

原创 自学 Linux 13—Linux 下的线程详细知识点

线程

2020-05-02 21:26:18 285

原创 自学 Linux 12—进程间通信和同步—半双工管道、命名管道、消息队列、信号量、共享内存、信号

进程间通信和同步  在 Linux 下的多个进程间的通信机制叫做 IPC,它是多个进程之间相互沟通的一种方法。在 Linux 下有多种进程间通信的方法:半双工管道、FIFO (命名管道)、消息队列、 信号量、共享内存等。使用这些通信机制可以为 Linux 下的网络服务器幵发提供灵活而又坚固的框架。1. 半双工管道  管道是一种把两个进程之间的标准输入和标准输出连接起来的机制。管道是一种历史悠...

2020-04-28 21:50:51 863

原创 main函数中的参数 argc 和 argv 的含义和用处

一、main() 函数参数简要说明通常情况下,小伙伴们在写主函数时,都是 void main() 或者是 int main() {…return 0;} 。但是 ANSI-C(美国国家标准协会,C 的第一个标准 ANSI 发布)在 C89/C99 中说明 main() 函数主要形式为:(1)  int main(void)(2)  int main(int argc,char *argv[...

2020-04-17 21:25:49 8176

原创 设置 Linux 下 vim 编辑器回车自动缩进以及自动显示行号

有很多小伙伴的 vim 编辑器没有设置回车自动缩进,所以使用起来不是很方便,接下来我们来配置一下。第一步:进入 /etc/vim 目录下,编辑 vimrc 配置文件(这里需要注意的是,有的小伙伴进去之后只有查看的权限,没有修改的权限,此时只要加上 sudo 即可)cd /etc/vimsudo vi vimrc第二步:在 vimrc 配置文件的底部追加以下命令:syn...

2020-04-16 17:11:24 7013 3

原创 自学 Linux 11—程序、进程和线程之进程的产生方式

进程产生的方式  进程是计算机中运行的基本单位。要产生一个进程,有多种产生方式,例如使用 fork() 函数、system() 函数、exec() 函数等,这些函数的不同在于其运行环境的构造之间存在差别,其本质都是对程序运行的各种条件进行设置,在系统之间建立一个可以运行的程序。一、进程号  每个进程在初始化的时候,系统都分配了一个 ID 号,用于标识此进程。  在 Linux 中进程号是唯...

2020-04-07 23:41:32 367

原创 自学 Linux 10—程序、进程和线程基本概念与差别及联系

程序、进程和线程进程是操作系统最重要的核心概念之一,对进程的不同实现方式造成了目前操作系统的一种分类方法,例如 DOS 系统为单进程的操作系统。本篇博客中将介绍 Linux 中进程的概念和相关的操作函数,并对线程的程序设计方法进行比较多的介绍,主要包括如下内容:█ 进程、线程和程序的概念和它们之间的区别;█ 进程的产生方式,fork()、system()、**exec()**函数等;█ L...

2020-04-07 22:07:16 292

原创 自学 Linux 9—文件系统简介之文件的通用操作方法

文件的通用操作方法本篇博客会介绍文件的通用操作方法。先介绍如何建立文件、打开文件、读取和写入数据, 以及一些常用的文件控制函数,包括 stat()、fctnl() 和 ioctl()。所举例子大多数指的是磁盘中的文件操作,但是其操作方法并不限于此,对设备文件同样有效。一、文件描述符在 Linux 下用文件描述符来表示设备文件和普通文件。文件描述符是一个整型的数据,所有对文件的操作都通过文件描...

2020-04-07 15:13:58 497

原创 自学 Linux 8—文件系统简介之 Linux 下的文件系统

  在 UNIX 族的操作系统中,文件系统占有十分重要的地位,文件的概念涵盖了 UNIX 设备和操作对象的全部内容,对设备的操作方式几乎可以与对普通文件的操作等价。本博客对文件系统进行简单的介绍,主要包括如下内容:  █ Linux 下文件的内涵;  █ Linux 下的文件系统布局和文件系统的树形结构;  █ Linux 下的普通文件和设备文件;  █ Linux 下虚拟文件系统的含义;...

2020-04-04 01:04:21 542

原创 自学Linux 7—用 GDB 调试程序

用 GDB 调试程序要使程序能够正常运行,跟踪代码、 调试漏洞是不可缺少的。Linux 中包含一个很强大的调试工具 GDB (GNU Debuger),可以用它来调试 C 和 C++ 程序。GDB 提供了以下功能:█ 在程序中设置断点,当程序运行到断点处暂停。█ 显示变量的值,可以打印或者监视某个变量,将变量的值显示出来。█ 单步执行,GDB 允许用户单步执行程序,可以跟踪进入函数和从函数...

2020-04-03 20:19:27 421

原创 自学Linux 6—Makefile 文件简介

  使用 GCC 的命令进行程序编译在单个文件下是比较方便的,当工程中的文件逐渐增多,甚至变得十分庞大的时候,使用 GCC 命令编译就会变得力不从心。Linux 中的 make 工具提供了一种管理工程的功能,可以方便地进行重新编译。一、一个多文件的工程例子  有一个工程中的文件列表如下图(文件目录结构)所示。工程中共有 5 个文件,在 add 目录中有 add_int.c 和 add_floa...

2020-03-31 20:53:01 378

原创 自学Linux 5—Linux 环境下的编译器之 GCC 编译器工具集详细知识点以及静态库与动态库的使用

一、Linux 下的 GCC 编译器工具集  在 Linux 环境下的编译器之 Vim 安装与基本操作使用 中介绍了如何使用 Linux 环境下的编译器编写程序,并编写了一个 hello.c 的程序。要使编写的程序能够运行,需要进行程序的编译。 Linux 环境下采用的编译器 GCC 来进行对程序的编译。1. GCC 简介  GCC 是 Linux 下的编译工具集,是 GNU Compile...

2020-03-25 14:26:25 2199

原创 自学Linux 4—Linux 环境下的编译器之 Vim 安装与基本操作使用

一、Linux 环境下的编译器  在 Linux 环境下有很多编译器,例如基于行的编译器 ed 和 ex ,基于文本的编译器 Vim、Emacs 等。使用文本编译器可以帮助用户翻页、移动光标、查找字符、替换字符、删除等操作。1. Vim 使用简介  Vi 是 visual editor 的简写,发音为 [vi’ai] ,是 UNIX 系统下最通用的文本编辑器。  Vi 不是一个所见即所得的...

2020-03-24 15:38:08 565 1

原创 自学Linux 3—软件的“癌症”—GNU 通用公共许可证(简称 GPL)基本知识点

GNU 通用公共许可证一、基本概念  GNU 通用公共许可证( 简称为 GPL )是由 自由软件基金会 发行的用于计算机软件的一种许可证制度。  GPL 最初是由 Richard Stallman 为 GNU 计划而撰写。目前,GNU 通行证被绝大多数的 GNU 程序和超过半数的自由软件采用。  GNU 宽通用公共许可证( 简称 LGPL )是由 GPL 衍生出的许可证,被用于一些 GNU...

2020-03-22 23:04:21 2366

原创 自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构

Linux 的系统架构       Linux 系统从应用角度来看,分为内核空间和用户空间两个部分。       内核空间是 Linux 操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要条件。一、Linux 内核的主要模块  &nbs...

2020-03-21 21:02:28 406

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除