![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《Linux环境开发与实践》
文章平均质量分 55
Linux环境基础应用与实践
Leonban
世界不会因为你的疲惫,而停下它的脚步;时间一天天过去,我们终会因我们的努力或堕落变得丰富或苍白
展开
-
ubuntu离线下载软件包并安装
服务器开发通常不能联网,我们需要利用一个能上网的服务器下载依赖包。能联外网的系统需与服务器系统版本一致。将下载的所有文件导入到内网服务器。原创 2023-04-19 20:29:44 · 1551 阅读 · 0 评论 -
理解Linux文件系统
*当硬链接其中一个文件的大小、内容等发生变化,那硬链接的文件都会发生相应的变化,所以建立硬链接根本没有新增文件,因为没有给硬链接分配独立的inode,既然没有创建文件那么就没有自己的属性集合和内容集合,用的是别人的inode和内容。磁盘的空间很大,虽然对应的磁盘的访问的基本单位是512字节,但是依旧很小,OS内的文件系统会定制的多个扇区的读取,以1KB,2KB,4KB为基本单位,所以即使读取/修改1bit,也必须将4KB加载到内存,进行读取或修改,在将其写回磁盘。2.不想让OS的代码和硬件强耦合!转载 2023-01-16 09:43:53 · 472 阅读 · 0 评论 -
C++标准IO操作
一、文件的输入和输出 fstream头文件定义了三种支持文件IO的类型:1.ifstream,由istream派生而来,提供读文件的功能2.ofstream,由ostream派生而来,提供写文件功能3.fstream, 由iostream派生而来,提供读写同一个文件的功能fstream类型除了继承下来的行为外,还定义了两个自己的新操作open和close,以及形参为要打开的文件原创 2017-06-27 23:55:24 · 678 阅读 · 0 评论 -
C++数组指针
现代C++程序采用vector类型和迭代器取代数组,采用string类型取代C风格字符串。一、指针和引用比较 1.修改的指针的值,指向另一个不同的对象 int ival = 1024, ival2 = 2048; int *pi = &ival, *pi2 = &ival2; pi = pi2; 2.修改了引用的原创 2017-05-28 16:25:02 · 785 阅读 · 0 评论 -
C++入门基础
一、输入输出 输出:std:cout 输入:std:cin >> v1 >> v2; 成员函数也叫类方法: if(total.same_isbn(totals))二、变量和基本类型 构造函数:初始化已经定义的类数据成员三、标准库类型 命令空间: using std:cin; s原创 2017-04-30 23:31:29 · 641 阅读 · 0 评论 -
C++函数
一、实参与形参区别函数调用时,主调函数把实参的值传给被调函数的形参,实现数据传递。有以下特点:1.形参变量只有被调用时才分配内存,调用结束后释放2.实参可以是常量、变量、表达式、函数等3.函数调用时数据单向传递,只能实参传给形参并不发生变化二、静态局部对象static局部对象一旦被创建,在程序结束前不会被撤销。在被多次调用时会保持原有值,如下例子size_t原创 2017-06-26 00:21:47 · 696 阅读 · 0 评论 -
文件系统理解
一、文件系统层次分析由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层用户层:最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。 VFS层:我们知道Linux分为用户态和内核态,用户态请求硬件资源需要调用System Call通过内核态去实现。用户的这些文件相关操作都有对应的System Call函数接口...原创 2018-08-29 19:59:23 · 1365 阅读 · 0 评论 -
linux设备驱动那点事儿之SD卡驱动
一.SD/MMC卡介绍1.1.什么是MMC卡 MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。1.2.什么是SD卡 SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展而来,增加了两...转载 2018-05-31 22:18:49 · 1363 阅读 · 0 评论 -
Ubuntu上NFS的安装配置
NFS用于Linux主机访问网络中其他Linux主机上的共享资源。NFS的原理是在客户端上通过网络将远程主机共享文件系统以挂载(Mount)的方式加入本机的文件系统,之后的操作就如同在本机上一样。一、安装NFS Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序: $ sudo apt-get install nfs-kernel-server原创 2015-12-17 20:44:45 · 1463 阅读 · 1 评论 -
问题之~Exuberant ctags (http://ctags.sf.net) not found in PATH
用vim编辑器时出现提示: Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded. press enter or type command to continue原因: taglist plugin不能找到ctags 程序解决方案:原创 2015-12-11 22:24:03 · 2811 阅读 · 1 评论 -
树的基本概念
一、树的定义树是N个结点的有限集合,N=0时为空树,任意非空树应满足: 1.仅有一个根结点 2.当N>1时,其余结点又分为互不相交的有限集合,为根结点子树二、基本术语 1.结点的度:树中结点的子结点个数 2.树的度:树中结点的最大度数 3.叶子结点:度为0的结点,没有子结点 4.树的高度:又称深度,是树中结点的最大 层数 5.路径长度:路径上所原创 2017-08-31 19:38:43 · 1007 阅读 · 1 评论 -
数据结构-链式线性表基本操作实现
链式存储结构优点: 插入、删除不需要移动数据,效率高(时间复杂度为O(1));缺点: 存取时需要遍历,效率低(时间复杂度为O(n));一、定义部分#include #include typedef struct _linknode_ { int data; struct _linknode_ *next;}lnode_t;//节点typedef st原创 2015-11-02 14:16:38 · 1165 阅读 · 1 评论 -
程序的时间复杂度计算
很多时候一眼就能看出程序的时间复杂度,但是遇到复杂的就需要将其过程推导出来,为此总结以下两种形式一、循环主体中的变量参与循环条件的判断找出主体语句中与T(n)成 正比的循环变量,带入进行计算,例如:int i = 1;while(i i = i*2;其中i*2的次数与T(n)成正比,则2的T(n)次方二、循环主体中的变量与循环条件无关可采用数原创 2017-07-27 23:06:51 · 2756 阅读 · 1 评论 -
数据结构-队列
一、概念只允许在表的一端插入,在另一端进行删除。是一种先进先出的线性表。二、队列的顺序存储结构1.顺序队列实现分配一块连续的存储空间,两个指针front和reat分别指向队头和队尾存储类型可描述为:typedef struct{ char data[Size]; int front, rear;}SqQueue; 队空条原创 2017-08-30 23:44:00 · 733 阅读 · 1 评论 -
数据结构-栈
一、概念栈作为一种常用的数据结构, 了解栈对于算法的学习是非常必要的。栈有先进后出的特点,栈底指向数据表中的第一个元素,栈顶指向最后一个元素的下一个位置。如下图所示:二、顺序存储结构1.顺序栈实现利用一组地址连续的存储单元存放数据data,同时定义一个变量top指示栈顶位置,可描述为:typedef struct{char data[SIZE];int t原创 2017-07-27 23:07:09 · 433 阅读 · 1 评论 -
特殊矩阵的压缩存储
一、对称矩阵对n阶方阵,对任意a[i][j] ==a[j][i] (1 元素划分为三部分: 上三角区、主对角线、下三角区元素a[i][j]在一维数组中存储对应下标K的关系如下(数组下标从0开始):1.当 i >= j (下三角区、主对角线) k = i(i - 1)/2 + j -12.当 i k = j(j - 1)/2 + i - 1原创 2017-08-30 23:44:20 · 2313 阅读 · 1 评论 -
树和二叉树的应用
一、二叉排序树1.定义:1)左子树上所有结点关键字小于根结点关键字2)右子树上所有结点关键字大于根结点关键字3)左、右子树又分别是一棵二叉排序树对其中序遍历可得到一个递增的有序序列2.查找从根结点开始比较,小于父结点比较左子树,大于父结点比较右子树,直到有相等时查找成功,返回空时不存在node *serch(BiTree T, int key, node *&p){原创 2017-10-29 16:29:16 · 1175 阅读 · 1 评论 -
二叉树的概念
一、二叉树的定义和特性1.二叉树的定义 是一种树形结构,每个结点最多有两棵子树2.特殊二叉树 满二叉树:树中的每一层都含有最多的结点,除叶子结点外每个结点度数都为2 完全二叉树:每一层都为满的,最后一层从左至右依次填入 二叉排序树:左子树所有结点关键字均小于根结点关键字,右子树所有节点关键字均大于根结点关键字,左子和右子树又各是一棵 二叉排序树 平衡二叉树:原创 2017-09-27 20:38:46 · 744 阅读 · 1 评论 -
图的基本概念
一、图的定义图G由顶点集V和边集E组成,记为G=(V,E)1.有向图如图a所示G1可表示为:G1=(V1,E1)V1={1,2,3}E1={, , }2.无向图如图b所示无向图G2可表示为:G2=(V2, E2)V2={1,2,3,4}E2={(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)}3.简单图1)不存在重原创 2017-10-31 22:21:13 · 728 阅读 · 1 评论 -
二叉树的遍历和线索线索二叉树
一、二叉树的遍历1.先序遍历在二叉树非空的情况下:(1)访问根结点(2)先序遍历左子树(3)先序遍历右子树对应算法如下:void PreOrder(BiTree T){ if(T != NULL){ visit(T);//访问根结点 PreOrder(T->lchild);//遍历右子树 PreOrder(T->rchild);//遍原创 2017-09-29 21:52:53 · 1452 阅读 · 0 评论 -
数据结构-树和森林
一、树和存储结构双亲表示法:采用一组连续的空间存储每个结点,在每个结点中增一个伪指针,指示双亲结点在数组中的位置,根结点下标为0,其伪指针域为-1。存储结构描述#default MAX_TREE_SIZE 100 //树中最多的结点typedef struct{ //树的结点定义int data;int parent;}PTNode;typedef st原创 2017-10-25 21:24:43 · 750 阅读 · 1 评论 -
数据结构-顺序线性表基本操作实现
顺序存储结构:优点: 1、随机存取(时间复杂度为O(1)); 2、无需为表示表中元素之间的逻辑关系而增加额外的存储空间;缺点: 1、插入、删除操作需要移动大量元素,效率低(时间复杂度为O(n)); 2、表的长度难以确定一、线性表的定义#include #include #define LIST_SIZE 100typedef struct _原创 2015-10-15 20:12:32 · 1446 阅读 · 1 评论 -
docker常用命令
提交容器修改到镜像中 docker commit (id) centos-capture:latest保存镜像 docker save -o docker-scmn.tar centos-capture:latest加载镜像 docker load -i docker-scmn.tar启动docker docker run -it -v /root/work:/root/work --privileged=true --net=host --name scmn --resta原创 2022-07-13 14:05:32 · 1121 阅读 · 0 评论 -
CentOS搭建Git服务器及权限管理
1. 系统环境系统: Linux:CentOS 7.x 64位2. 安装git建议以下操作都切换到root# 请确保您切换到了root账户$ su root$ yum install -y git# 验证是否安装成功$ git --version# 输出如下内容表示成功:git version x.x.x.x3. 添加git的管理的账户和设置密码设置专门管理git的账号非必须,但是建议这么操作。# 添加git账户$ adduser git# 修改g.转载 2021-11-08 15:06:54 · 1481 阅读 · 0 评论 -
C语言调用cJSON库解析json
一、源代码文件下载自己使用时可以只需要其中的cJSON.c和cJSON.h文件就可以了,只需要将cJSON和自己的main文件一起编译即可。下载地址:https://download.csdn.net/download/Hearbeat/38500047二、重要的接口函数:1.cJSON *cJSON_Parse(const char *value);解析JSON数据包,并按照cJSON结构体的结构序列化整个数据包。可以看做是获取一个句柄。2.cJSON *cJSON_GetObjectIt原创 2021-11-08 14:43:03 · 2178 阅读 · 0 评论 -
linux下的单机的neo4j安装
1.neo4j简介图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准————————————————版权声明:本文为CSDN博主「原创 2021-06-07 16:10:31 · 755 阅读 · 0 评论 -
Centos yum和pip下载离线安装包
一、yum安装针对于单个包已经存在并且无法安装的,需要单独下载工具下载:yum -y install yum-utils*以安装libgcc为例通过外网机器下载 yumdownloader libgcc在内网中安装yum localinstall libgcc.rpmrpm -Uvh libgcc.rpm放到yum base update目录二、 pip安装下载地址:https://pypi.python.org/packages/11/b6/abcb525026a4be042b48原创 2022-02-25 17:14:29 · 2408 阅读 · 0 评论 -
基于centos安装wireshark开发环境
一、解决依赖yum install -y bisonyum install -y desktop-file-utilsyum install -y rpm-buildyum install -y qt5-qttools-develyum install -y qt5-qtbaseyum install -y gityum install -y glib2yum install -y glib2-develyum install -y libgcrypt-develyum instal原创 2021-05-08 17:24:40 · 421 阅读 · 0 评论 -
Ubuntu系统安装后的配置
Ubuntu是一个以桌面应用为主的Linux操作系统。Ubuntu每六个月发布一个新版本(一般是4和10月份,命名为YY.MM),每一个普通版本都将被支持 18个月,长期支持版(Long Term Support, LTS)的桌面版本支持 3年,服务器版本则是 5 年。Ubuntu系统下载:http://www.ubuntu.com/download/ubuntu/download 32或者原创 2015-11-25 21:02:29 · 674 阅读 · 0 评论 -
问题之~The following packages have unmet dependencies: openssh
ubuntu 安装openssh-server和openssh-client时呈现错误如图所示:解决方法的步骤如下第一:~$ sudo apt-get autoremove openssh-client openssh-server 第二:~$ sudo apt-get install openssh-client openssh-server使用 ~$原创 2015-11-25 21:17:11 · 4345 阅读 · 0 评论 -
Linux下配置属于自己的vim编辑器
vim的配置:为了解决每次打开vim都需要进行一些set操作,接下来需要进行vim的配置。配置的文件一个是/etc/vim/vimrc,由于这是系统级别的,修改之后会影响其他用户的操作,所以一般是修改~/.vimrc文件,只对自己当前的用户产生作用,不会影响到其他用户。下面图片是配好的vim窗口,如果有需要可以下载。下载网址: https://github.com/hearb原创 2015-09-17 21:04:01 · 2459 阅读 · 0 评论 -
Linux下TCP客户端和服务器代码编写
一、各部分功能:服务器:主动建立服务程序,等待客户端连接,相应客户端的请求客户端:当有需求时,主动连接服务器,发出服务请求二、书写顺序:1、先写服务器程序,然后用telnet 模拟客户端远程登录2、再写客户端程序,登录写好的服务器3、最后写客户端和服务器通信的语句。三、先写服务器程序,然后用telnet 模拟客户端远程登录1、socketint sock原创 2015-10-16 08:39:30 · 1657 阅读 · 0 评论 -
Linux下进程管理
进程: 是一个正在执行的程序。动态的,在内存里。包含指令、数据、打开的文件、使用的堆、栈、IPC等所有计算机资源。程序: 编译好的计算机指令(指令+数据)。静态的,放在磁盘上。查看进程状态: ps -ef ps aux ps axjH top查看进程关系树: pstreekill是一个信号发射器,如果需要杀死进程,原创 2015-09-11 20:15:29 · 518 阅读 · 0 评论 -
Linux文件系统
查看文件信息:lsls -l 用来查看长格式(信息比较全)的文件信息。文件类型: b:block, 块设备文件 c:character, 字符设备文件 d:directory, 目录文件 -:普通文件 l:link, 链接文件 s: socket, 套接字文件 p: pipe,管道文件相关命令:建立文件:touch删除:原创 2015-09-14 20:24:17 · 440 阅读 · 0 评论 -
Linux下网络编程TCP/UDP简介
一、OSI模型七层结构(1)物理层:传输的是二进制的比特流 连接的物理介质(双绞线、光纤、wifi)和网络接口(网卡)(2)链路层:传输单位是包(帧),有格式 拆包和打包 MAC地址:唯一标示一个网络设备(身份证号) 工作的硬件:交换机 (3)网络层:路由选择 工作的硬件:路由器 IP地址:在网络中惟原创 2015-10-12 20:56:08 · 609 阅读 · 0 评论 -
linux环境下的网络配置
通过下面的配置ubuntu系统的网络,就能够顺利上网,需要使用的工具有: ifconfig ping route。配置步骤: 1.修改本地网络服务的配置文件 sudo vi /etc/network/interfaces 文件末尾添加如下内容: auto eth0 #让系统自动选择以太网卡 iface eth0 inet static#网络接口获取方式为原创 2015-09-16 22:24:21 · 490 阅读 · 0 评论 -
Git操作总结
一、Git是什么? Git是目前世界上最先进的分布式版本控制系统。二、SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,原创 2015-11-30 21:41:02 · 475 阅读 · 0 评论 -
C源程序完整编译过程
下面总结一下编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)。一、预编译处理(cpp)它主要包括四个过程 1.宏定义指令,如#define N 6,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有N用6替换原创 2016-07-22 18:24:54 · 3807 阅读 · 0 评论 -
linux进程状态D
PID PPID STAT COMMAND17009 1 Ds -bash17065 1 D ls --color=tty -al17577 1 D /usr/java/jdk1.5.0_17/bin/java -Xmx512m -classpath /usr/local/a17629 1 D /usr/java/jdk1....原创 2018-08-29 20:04:35 · 3055 阅读 · 0 评论 -
linux panic 机制
. Linux Kernel Panic的产生的原因 panic 是英文中是惊慌的意思,Linux Kernel panic正如其名,linux kernel不知道如何走了,它会尽可能把它此时能获取的全部信息都打印出来。有两种主要类型kernel panic,后面会对这两类panic做详细说明:1.hard panic(也就是Aieee信息输出)2.soft panic (...原创 2018-08-29 20:03:07 · 1083 阅读 · 0 评论