自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Vincent的专栏

天道酬勤 水滴石穿

  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 【C】树的层序遍历

1.基本思路层序遍历的基本思路就是, 1.根节点入队列。 2.根节点出队,同时将根节点左儿子和右儿子入队 3.结点出队,同时将该节点的左儿子和右儿子入队 4.重复3直到队列为空2.算法实现void layerprint(struct TreeNode* r){ struct queue q1; //创建队列 q1.s=&q1.node[0]; //

2016-06-30 10:58:00 395

原创 二叉树的前序遍历---非递归实现

二叉树的遍历用递归来实现相当简单,前面已经有文章讨论过,下面来讨论一下二叉树前序遍历的非递归实现。 二叉树的非递归前序遍历主要用栈来实现。根据先序遍历的顺序,先访问根节点,再访问左子树,后访问右子树,而对于每个子树来说,又按照同样的访问顺序进行遍历,先序遍历具体代码如下:void PrePrint(struct TreeNode *r){ struct stack stack1;

2016-06-25 11:11:00 594

原创 【Linux/C】程序的编译和链接--例子

上一篇文章已经讲过了程序从源文件到可执行文件之间的实现过程,这篇文章讲一个简单的例子。 首先准备三个文件。//main.c文件内容#include<stdio.h>#include "fun.h"int main(){ printf("the answer is %d\n",calc(5,6)); printf("hello,world.\n"); return 0

2016-06-23 16:44:53 921

原创 【C】程序的编译与链接--简单介绍

程序由源文件编译得到可执行文件看起来好像是很简单的过程,windows的IDE环境下,点一下bulid就可以生成可执行文件,在Linux环境下,gcc编译器也提供了很多选项可以很方便的从源文件生成可执行文件。但是实际上程序的编译和链接是一个比较复杂的过程。大致可以分为四步:1.预处理;2.编译;3.汇编;4.链接。我们以最经典的hello,world程序来下面来分析一下各个步骤的作用分别是什么。//

2016-06-23 16:14:13 490

原创 【Linux/C】如何编译和使用库文件

1. 库文件分类库文件可以分为两类,静态库和动态库。 链接静态库的程序特点:1. 程序较大;2.不容易升级;3.容易部署 链接动态库的程序特点:1. 程序较小;2.容易升级;3.不容易部署2. 存档文件(静态库)存档文件(Archive),也就是静态库,就是一系列目标文件的集合(大致相当于windows下的*.LIB文件)。当你提供一个存档文件给链接器的时候,链接器会在存档文件中寻找所需

2016-06-21 20:55:50 5686

原创 【C】C语言输入输出缓冲区

1.一个“诡异”的程序先来看一个小程序,分析一下运行结果#include<stdio.h>int main(){ printf("hello"); int i = 0; for(;i<10;i++) { putchar('.'); sleep(1); }

2016-06-19 18:57:33 13507 10

原创 【Linux】关于理解fork()函数的简单例子

1.fork()函数fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这个新产生的进程称为子进程。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。需要注意的一点:就是调用fork函数之后,一定是两个进程同时执行的代码段是fork函数之后的代码,而之前

2016-06-19 00:13:18 29076 2

原创 【C】变长参数表及printf函数简化版的实现

每一个程序员写的第一个程序大概鼎鼎大名的hello world了,一个简简单单,就那么几行的小程序开启了另一个世界的大门,从此,我们发现了更广阔的世界。而每一个C程序员接触到的第一个函数(除去main函数不算)大概就是printf函数了。这个函数用法很简单灵活,然而里面暗藏玄机,包含了C语言诸多的内容。   不知道大家发现没有,printf函数的参数个数是可变的。下面这三个函数都可以完美运行。

2016-06-17 11:55:31 1872 1

原创 【C】文件读写操作

第一个例子:将多个文件的内容读出,显示到标准输出上。#include<stdio.h>void copy(FILE *to,FILE *from);int main(int argc,char *argv[]){ FILE *fp; if(argc == 1) { printf("No input file!\n"); retu

2016-06-16 22:28:05 321

原创 【Linux】gdb调试程序基本用法

1.编译加上参数-g首先,要使用gdb调试程序,必须在程序编译的时候加上参数-g 比如: gcc -g cat.c2.开始调试输入gdb +程序名,如 gdb a.out 此时,出现gdb提示符 输入l可以查看代码,一次显示10行,接着按enter显示下10行。 输入start开始进入单步调试,屏幕显示即将运行的那行代码 此时输入n运行这行代码,同时显示下一行要运行的代码

2016-06-16 20:49:39 452

原创 【Linux】ACL权限管理

1.ACL权限的作用  ACL是Access Conrol List的缩写,ACL权限的主要作用是为了解决Linux系统当中,owner、group和others的权限不够用的问题。假设有这样一个目录/home/work,它的所有者是root,所属组是sN,所有者和所属组拥有的权限均为rwx,others什么权限也没有。那么如果还有一个用户st需要查看和执行这个目录下的文件,那该怎么设定权限呢?这个

2016-06-16 17:37:59 368

原创 read和write系统调用以及getchar的实现

输入和输出是由read和write两个系统调用实现的。在C语言程序中,可以通过函数read和write访问这两个系统调用。   这两个函数原型为:int n_read = read(int fd,char *buf,int n);int n_written = write(int fd,char *buf,int n);  这两个函数的第一个参数都是文件描述符,第二个参数是程序中存放读或者写的

2016-06-15 11:34:56 2119

原创 【Linux】搭建ftp服务器

1.ftp服务配置文件windows下的ftp程序有IIS、Serv-U等,linux下有wu-ftpd(已被淘汰)、proftpd和vsftp,后两个是主流。主要配置文件:/etc/vsftpd/vsftpd.conf 用户控制列表文件 /etc/vsftpd/ftpusers(用户黑名单,root、bin、daemon、mail等用户就在这个里面) /etc/vsftpd/user_li

2016-06-13 17:40:53 386

原创 【Linux】Linux系统各个目录的作用

Linux系统根目录下有很多文件夹,各个文件夹的基本作用如下: 序号 目录 作用 1 /bin 执行文件存放目录,这里面的命令可以被root用户和普通用户使用,如cat、chmod、chown、date、mv、echo、kill等 2 /sbin 也是执行文件存放目录,这里面的指令只能被root用户使用,如mkfs、ifup、shutdown、arp、fdisk、i

2016-06-13 11:45:34 412

原创 【Linux】tar指令用法

关于tar的指令相当多,记住几个常用的指令即可:1*.tar.bz2解压缩tar -jxv -f *.tar.bz2 -C 目录 -C 目录如果不加则在当前目录下解压。2.*.tar.gz解压缩tar -zxv -f *.tar.bz2 -C 目录 3.压缩tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称4.查询tar -jtv -f filen

2016-06-12 23:21:12 366

原创 【Linux】硬盘格式化--mkfs

硬盘格式化命令: mkdfs -t 文件类型名 设备名() 例如:mkfs -t ext3 /dev/sdb1

2016-06-12 11:43:27 1324

原创 【Linux】samba服务器的安装和配置

1.安装samba(rpm包安装)  首先,检查一下系统中有没有安装samba的RPM包。输入rpm -qa|grep samba没有显示,则表示samba没有安装。   输入yum install samba-3.5.10-125.el6.i686.rpm安装samba samba安装完成!2.samba相关配置文件(这部分内容来自鸟哥的私房菜) 与samba服务器相关的配置文件有:/

2016-06-09 23:00:57 38788 2

原创 【Linux】ssh--linux远程连接

前面一直在用XShell工具连接虚拟机里的centos,这次,我们用XShell连接实体机里的Linux。   在实验室的电脑上安装了centos6.3,我们现在终端上配置一下IP、子网掩码等信息。由于我的笔记本跟实验室电脑连在了同一个交换机上,我们将两台电脑配置到同一网段。1.配置IP,子网掩码  首先,配置centos的IP,在终端命令行输入setup(如果没有安装setup工具,请先搭建本地

2016-06-09 14:29:20 989

原创 【Linux】查看二进制文件内容

在Linux当中,查看二进制文件内容可以用hexdump工具,语法如下:   hexdump [选项] [文件]... -n length 只格式化输入文件的前length个字节。 -C 输出规范的十六进制和ASCII码。 -c 单字节字符显示。 -d 双字节十进制显示。 -o 双字节八进制显示。 -x 双字节十六进制显示。 -s 从偏

2016-06-08 12:43:12 22459

原创 【Linux】工作管理

1.把进程放入后台在windows中,把一个程序最小化,就可以将程序放入后台执行。在Linux中也可以将进程放入后台。 把进程放入后台有两种方式: 1.命令 & 如:tar -zcf etc.tar.gz /etc & 用这种方式,进程在后台中还在运行 2.在命令执行过程中按CTRL+Z快捷键 进程在后台中暂停了。2.查看后台中的工作命令:jobs [选项] 选项: -l :

2016-06-08 08:58:53 251

原创 【Linux】pkill命令--按照终端号踢出用户

pkill命令有一个非常实用的功能,就是按照终端号踢出用户。 命令格式:pkill [信号] -t 终端名称 //支持的信号与kill命令一样,1,9,15等。 w命令可以查看当前系统登录了哪些用户。 比如说,现在虚拟机里面登录了root用户,XShell也远程登录了用户。那么用w命令查看,结果如下: 可以看到当前登录了两个root用户,一个是通过tty1登录,一个是通过

2016-06-08 08:27:04 5640

原创 【Linux】进程管理和查看

1.什么是进程  进程是正在执行的程序或命令,每一个进程都是一个正在运行的实体,都有自己的地址空间,并占用一定的系统资源。注意,进程跟线程不是一个概念。对于到底什么是进程,其实不用死扣概念,就把它当做正在运行的程序即可。   进程的概念在windows系统中也有,打开任务管理器->进程就可以看到正在运行的进程。   2.进程管理的作用判断服务器健康状态查看系统中所有进程杀死进程3.进程相

2016-06-08 08:17:20 1498

原创 【Linux】启动引导程序--grub及其配置文件

1.硬盘和分区在grub中的表示方法  在Linux当中,磁盘和分区的表示方法为: 设备 设备在Linux中的文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 /dev/sd[a-p]分区表示为sda1,sda2…等等。   但是在GRUB当中,以启动顺序来作为硬盘的编号,第一个找到的硬盘为0好,第二个为1号,以此类推。每块硬盘的第一个主分区为0

2016-06-07 20:22:29 3241

原创 【Linux】计算机的启动过程

计算机启动是一个非常复杂的过程,大致可以分为四个步骤。  1.第一阶段:BIOS  BIOS是固化到计算机主板上一个ROM芯片上的一段程序,这段程序的主要作用有两个。1.硬件自检Power-On Self-Test  按下电源键后,计算机首先会读取BIOS,然后BIOS检查计算机硬件有没有问题,是否满足运行条件,这个过程叫做“硬件自检”。如果硬件有问题,会报错。如果没有问题,则会在屏幕上显示CPU、

2016-06-07 16:36:59 650

转载 为什么主引导记录的内存地址是0x7C00?

作者: 阮一峰 日期: 2015年9月28日原文地址:http://www.ruanyifeng.com/blog/2015/09/0x7c00.html

2016-06-07 14:20:42 467

原创 【Linux】U盘安装Centos6.3遇到的两个重要问题及其解决方法

之前装过无数遍windows系统,对系统分区神马的也算比较了解,以为安装CentOS的过程应该也差不多,但是没想到遇到两个比较重要的问题,百度了一番才恍然大悟,特此记录一下,对初学者应该有多帮助。   第一个问题:boot loader的安装位置(由于安装系统的时候没法截图,只好在网上找相同的图片。)   到了这一步,网上的很多教程都说直接点击下一步就行,但是实际上这个地方很关键,不是所有人

2016-06-07 13:14:19 2917

原创 【Linux】引导扇区(boot sector)的结构

Boot sector是硬盘(严格来说是所有可引导的存储介质)上的第一个扇区,大小为512字节,这个扇区对于计算机启动来说至关重要。   这个小小的512字节包含了很多内容,主要分为三个部分,分别是:   MBR(master boot record,主引导记录)446字节DPT(disk partition table,磁盘分区表)64字节BRID(boot record ID引导记录标

2016-06-07 12:22:19 6122

原创 【Linux】搭建本地yum源

在实验室的电脑上最小化安装了CentOS6.3之后,发现很多工具都没有安装,vim、setup等都不能用,而电脑暂时又不能联网,yum在线安装也用不了。百度之后,发现我们可以自己搭建本地yum源。   如果电脑有光驱的话,那就很好办,将CentOS-6.3-i386-bin-DVD1写进光盘,然后挂载光盘,之后的事情就很好办了,可惜的是电脑没有光驱,那么只好通过挂载U盘来实现了。   前两天用U

2016-06-05 20:02:52 1210

原创 【Linux】软件安装

1.软件包分类Linux下软件包分为两类:源码包 文件名如httpd-2.2.9.tar.gz(这是Apache服务的压缩包),里面包含的是诸如.c文件之类的文件,可以看到源代码,需要编译安装。卸载十分方便,只需要将安装目录删掉即可。不过安装步骤较多,安装时间比较长,容易出错。二进制包 如RPM包,系统默认包,看不到源代码,安装管理简单,安装速度快。还有一种所谓脚本安装包,实际上就是将繁琐

2016-06-05 18:27:21 275

原创 【Linux】服务安装、启动、停止和卸载

下面以SSH服务来演示服务的安装、启动、停止和卸载的过程1.检查ssh服务是否安装chkconfig –list |grep sshd 没有内容可显示,输入service sshd 显示未识别的服务,证明SSH服务没有安装。2.安装ssh服务输入yum install openssh-server 安装 ssh服务。 显示安装成功,输入ssh -v可以查看安装的版本3.启动ssh

2016-06-05 13:00:22 12861

原创 【Linux】SSH实现虚拟机与主机文件互传

虚拟机与主机之间文件互传的方法又很多,下面介绍一下通过SSH实现的虚拟机系统与主机之间的文件互传。   首先在主机上安装SSH Secure Shell,这个软件的下载地址是:http://ccm.net/download/download-1423-ssh-secure-shell-windows,如果打不开,请自行百度解决。 打开软件,点击quick connect 输入Host na

2016-06-05 11:59:59 7233

原创 【Linux】super daemon的配置文件

xinetd服务的默认配置文件是/etc/xinetd.conf,这个文件的内容如下:[root@www ~]# vim /etc/xinetd.confdefaults{# 服务启动成功或失败,以及相关登陆行为的记录文件 log_type = SYSLOG daemon info <==登录文件的记录服务类型 log_on_failure =

2016-06-03 15:47:18 935

原创 【Linux】系统服务

常驻在内存中的进程,且可以提供一些系统或网络功能,这就是服务,英文“service”。实现service的进程称为daemon。以后,service和daemon不做区分。1.服务分类stand_alone :可以自行单独启动的服务super daemon:一个特殊的daemon来统一管理 这个daemon是xinetd。当没有客户端的请求时,各项服务都是处于未启动状态,等到有来自客户端的请求

2016-06-03 14:27:56 637

原创 【Linux】系统运行级别

系统运行级别系统运行有七个级别,分别是: 级别 含义 0 关机 1 单用户模式,主要用于修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式 4 系统保留 5 图形模式 6 重启动查看运行级别指令:runlevel 两个数字分别表示上次运行级别及当前所在运行级别,N表示none,表示开机就进入3级别修改运行级别指令:

2016-06-02 19:31:37 403

原创 【C】格式化输出--printf函数的返回值

printf函数的原型为int printf(char *format,arg1,arg2,...);printf函数是有返回值的,返回值是打印的字符个数。如:#include<stdio.h>#include<ctype.h>int main(){ int c,d; c=printf("hello,world\n"); d=printf("number:%d\n",c

2016-06-01 21:31:07 446

原创 【C】标准输入/输出

看一个简单的程序#include<stdio.h>#include<ctype.h>int main(){ int c; while((c = getchar()) != EOF) putchar(tolower(c)); return 0;}这个程序把输入字符转换成大写输出。 运行结果: 也可以使用<符号实现输入重定向 还可以用>实现

2016-06-01 21:17:27 340

原创 【Linux】shell---函数的简单例子

Shell脚本语言中也有函数功能,可以帮助我们简化很多代码。下面看一个例子。 创建一个文件,输入一下内容#!/bin/bashfunction printit(){ echo -n "Your choice is $1" #echo -n表示不输出换行符}function help(){ cat<< HELP echo "this is help manua

2016-06-01 17:27:59 1208

Automation Studio使用入门手册

贝加莱的PLC使用说明,针对初学者,挺不错的资料

2015-09-24

空空如也

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

TA关注的人

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