自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 通用单链表(一)

通用单链表我们在学习链表的时候,大部分老师和大部分书籍都只会教我们常规的链表,此处常规是指链表的数据部分只适用单一的数据类型,对于怎么扩展到适用所有的数据类型,大多都是让学生自己去摸索,甚至根本就没有提及,可能中国的老师和作者都觉得每个学习数据结构的人都跟linux的创始人一样聪明吧! 我在学习和写代码的过程中,觉得链表两个比较重要点大多数老师和书籍都语焉不详。 1. 链表节点的结构 2. 如

2017-03-11 22:48:07 440

原创 ansible - nagios和zabbix客户端的部署

nagios的目录结构[root@mysql nagios]# tree .├── files│ ├── nagios-plugins-2.1.2.tar.gz│ └── nrpe-3.0.1.tar.gz├── handlers │ └── main.yml├── tasks│ ├── ipt.sh│ └── main.yml├

2016-11-28 19:40:10 1021

原创 nagios编译安装(使用nginx做反向代理)

参考网址: https://assets.nagios.com/downloads/nagioscore/docs/Installing_Nagios_Core_From_Source.pdf#_ga=1.215318228.21109006.1479963831Package requirements: yum install wget gcc glibc gd gd-devel

2016-11-25 20:56:25 1016

原创 lvm的创建,扩展和缩减

lvm: logical volumn managerpv: physical volumn vg: volumn group lv: logical volumn1. 创建lvm - 01 创建一个类型为8e(lvm)的分区 /dev/sdb1 - 02 创建pv # pvcreate /dev/sdb1 - 03 创建vg # vgcreate m

2016-09-29 15:35:03 640

原创 lvs-nat

# lvs-nat网络配置: ---------> web01(RS01) director(调度器)---| ---------> web02(RS02)director的ip配置: vip(用户请求的ip): 192.168.49.172 dip(后端RS的网关): 10.0.0.1

2016-08-30 10:38:59 423

原创 iptables--DNAT

#!/bin/bash# dnat # # 内网服务: 192.168.49.85:80 # 网关: 192.168.49.65 # 请求主机: 172.16.0.129 # 请求过程: # 172.16.0.129 –> 192.168.49.65 –to-destination 192.168.49.85:8080iptables -t nat -Fiptables -Fipta

2016-08-29 19:52:27 469

原创 iptables--SNAT

#!/bin/bash # nat # # # 使用VMware实验,网络规划如下 # 三台虚拟机,一台做路由转发(route),另外两台做测试机(node1, node2) # # ip规划: # route: # 网卡1: 桥接 192.168.49.65 # 网卡2: 仅主机 172.16.0.128 # node1: 桥接 192.168.49.85 网关:

2016-08-29 19:50:16 523

原创 iptables自定义链

# 自定义链iptables -Fiptables -X clean_iniptables -N clean_iniptables -A clean_in -p tcp --syn -m state --state NEW -j DROPiptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROPiptables -A clean_in -p

2016-08-29 10:24:27 4072

原创 iptables总结脚本

# 此脚本是本人学习iptables时编写,并不适用其他机器,仅供学习参考编写策略: 默认策略为ACCEPT, 这里我没有更改默认策略,而是先允许指定的规则通过,然后再DROP所有tcp,udp,icmp请求 读者可根据自己的习惯来编写规则,比如默认禁止所有,再允许指定规则iptables -F# 允许所有已建立的连接 iptables -A INPUT -m state –state E

2016-08-29 09:58:44 588

原创 脚本实现重新对一个磁盘分区格式化

主要分为三步 1. 删除原有分区 2. 使用fdisk进行分区 3. 创建文件系统#!/bin/bash#disks=$(fdisk -l 2>/dev/null |grep '^Disk /dev/[sh]d[a-z]' |awk -F: '{print $1}' |cut -d' ' -f2 |awk -F '/' '{print $3}' |tr '\n' ' ')reparti

2016-06-28 16:25:10 859

原创 centos中python2.7及pip的安装(python3的安装方法类似)

centos python2.7以及pip的安装 提前准备好所需要的源码包 python2.7 pip setuptools zlib zlib-devel1. python2.7安装下载python2.7的tar包,解压./configure --prefix=/usr/local/python27make && make install编辑配置文件 ~/.bash_p

2016-06-23 11:12:50 932

原创 ansible学习笔记(二) -- roles

上一节把整个布局大概列了一下,这节重点记录一下 /etc/ansible/roles/tomcat 这个目录下的各目录的意义此目录的目录结构如下: . ├── files │ └── tomcat-initscript.sh ├── handlers │ └── main.yml ├── tasks │ └── main.yml

2016-05-10 18:09:24 2395

原创 ansible学习笔记(一) -- roles

ansible role exercise git-link: https://github.com/ansible/ansible-examplesDirectory Layout# tree /etc/ansible/.├── ansible.cfg├── group_vars # here we assign vari

2016-05-10 17:38:06 605

原创 创建SysV系统脚本(可指定运行级别自动启动)

/etc/rc.d/init.d /etc/init.d服务类脚本 sysV /etc/rc.d/init.d 必须有的选项: start stop restart statuschkconfig 脚本的前面必须有下面两行,如果没有 chkconfig命令检测不到此脚本 # chkconfig: runlevels SS KK

2016-04-17 19:37:42 1247

原创 shell小脚本

第一题 要求: 1. 设定变量FILE的值为/etc/passwd 2. 依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如: hello, root, your shell: /bin/bash 3. 统计一共有多少用户#!/bin/bashFILE="/etc/passwd"context=`cat /etc/pa

2016-04-10 17:15:21 393

原创 C语言小项目(学生信息管理系统)

/*(1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 1.系统以菜单方式工作 2.学生信息录入功能(学生信息用文件保存)---输入 3.学生信息浏览功能——输出 4.查询、排序功能——算法 1、按学号查询 2、按姓名查询 5.学生

2016-04-06 09:07:44 22014 8

原创 可靠信号和不可靠信号的测试

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>/* 1. 创建子进程和父进程 2. 注册 SIGINT 非实时信号 SIGRTMIN 实时信号,添加到进程阻塞中 3. 注册用户自定义信号 SIGQUIT 4. 子进程发送3次非实时信号,发3次实时信号

2016-03-23 21:13:17 518

原创 信号发送(sigqueue)和接收(sigaction)

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>void handle(int signum, siginfo_t *info, void *p);int main(void){ pid_t fpid; union sigval value; // 待发送的附加信息

2016-03-23 13:40:14 1789

原创 函数指针做函数参数

#include <stdio.h>#include <stdlib.h>// 函数声明int add(int, int);int load_func(int (*pfunc)(int, int));int main(void){ int (*padd)(int, int); // 定义一个函数指针变量 padd = &add; // &符号可要可不

2016-03-20 18:56:42 478

原创 wait如何处理多进程(多个子进程)

#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* linux 系统调用 wait() * 当用fork()创建子进程,子进程在退出后父进程没有调用wait * 就会产生僵尸进程. * * 下面是用fork循环创建多个子进程,在父进程里调用一次wait * 只能回收一个子进程. * * 下面展示如何用wait()回

2016-03-20 15:39:58 4648

原创 fork函数02

#include <stdio.h>#include <stdlib.h>#include <unistd.h>// 创建procnum个子进程,每个进程循环loopnum次int main(void){ int procnum = 0, loopnum = 0; int i = 0, j = 0; pid_t fpid; printf("procnum: ")

2016-03-17 19:52:46 221

原创 通过execve在两个进程间传递环境变量

进程1:execve 进程2:hello execve.h 的代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* #include <unistd.h> execve是系统调用,下面的函数是execve的库函数 extern char **environ; int execl(c

2016-03-17 19:35:55 2668

原创 vfork函数

#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* vfork和fork的区别: 1.vfork创建的子进程和父进程共享线性地址空间;fork创建的子进程具有独立的线性地址空间 2.vfork先执行子进程;fork子进程和父进程的执行顺序是随机的 3.vfork创建的子进程

2016-03-17 17:12:40 371

原创 fork函数01

#include <stdlib.h>#include <stdio.h>#include <string.h>#include <signal.h>#include <errno.h>int main(void){ pid_t fpid; // pid_t-->unsigned int int count = 0; fpid = fork(); // 错误

2016-03-17 15:27:59 228

原创 sftp通过秘钥上传,修改文件

sftp是通过openssh与服务端建立连接的,默认端口为22新建一个sftp的用户,这里就叫sftp useradd -s /sbin/nologin sftp在sftp用户的家目录加上客户端的公钥 新建的sftp用户是没有 .ssh这个目录的,要自己手动去创建mkdir /home/sftp/.sshcd /home/sftp/.sshtouch authorized_key

2016-03-16 09:47:23 2996

原创 redmine安装部署

redmine数据库配置文件里有三种环境: production, development, testredmine/bin/rails server -b 0.0.0.0 // 默认development环境ruby redmine/bin/rails server -b 0.0.0.0 webrick -e production -d // -e指定环境 -d后台运行red

2016-03-16 09:38:46 786

原创 结构体基础02

#include <stdio.h>#include <stdlib.h>typedef struct _Teacher { char name[100]; char *title; int age; char **p_stu; // 每个老师带的学生} Teacher;// 在堆区分配内存Teacher *create_mem(int count){

2016-03-09 20:39:54 211

原创 vim的一些常用小技巧

当我们要从另外一个文本编辑器复制内容到终端的vim里时,常常会出现复制第二行往下的时候会自动在前面加上空格,如果要手动去掉这些空格会非常不方便 解决方法: 修改vim的配置文件 .vimrc set paste

2016-03-09 14:42:22 224

原创 结构体基础

#include <stdio.h>#include <stdlib.h>typedef struct _Teacher { char name; int age;} Teacher;// 打印结构体成员ageint print_t(Teacher *p, int count){ int i = 0; for (i=0; i<count; i++){

2016-03-09 11:10:08 222

原创 野指针的处理

野指针处理的三个要点: 定义指针时,把指针变量赋值为NULL 释放内存时,先判断指针变量是否为NULL 释放完毕后,把指针变量重新赋值为NULL #include <stdio.h>#include <stdlib.h>void free_mem(char *p){ if (p != NULL){ free(p); p = NULL

2016-03-09 09:48:22 815

原创 多维数组做函数参数问题

编号 数组参数 等效的指针参数 1 一位数组 char a[30] 指针 char * 2 指针数组 char *a[30] 指针的指针 char ** 3 二维数组 char a[10][30] 数组的指针 char (*a)[30]

2016-03-08 16:14:23 383

原创 wiki-confluence乱码问题

confluence里出现乱码,肯定是数据库编码的设置问题,如下:在安装confluence的时候,有两个地方需要配置字符编码1. 创建database的时候2. 连接数据库的时候(JDBC 的链接url)**JDBC的链接设置** jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8这个url

2016-03-08 09:20:41 11150

原创 定义一个一维指针指向二维数组并打印

间接证明二维数组在物理上是线性存储的#include <stdio.h>// 证明二维数组在物理上是线性存储的// a[i][j] // a[0] = a+0; a[1] = a+1; a[i] = a+i ;a+i表示第i-1行的地址// *a表示第一行第一列的地址, *a+1表示第一行第二列的地址// 定义一个一维指针指向二维数组的时候, 要将其指向二维数组的第一行第一列的地址,也就是

2016-03-07 22:24:24 1053

原创 二维数组名本质

#include <stdio.h>int main(void){ int a[10][30] = {0}; int (*pa)[30]; // 数组指针 pa = a; printf("pa=%x, pa+1=%x\n", pa, pa+1); printf("a=%x, a+1=%x\n", a, a+1); printf("a[0]=%x,

2016-03-07 21:10:58 414

原创 一维数组名的本质

#include <stdio.h>#include <string.h>/* int a[]; * int (*p)[]; // 定义数组指针 * int *p2 * p = &a; * p2 = a; * p和p2的区别可从下面程序打印的结果看出*/int main(void){ int a[5] = {1, 2, 3, 4, 5}; int i

2016-03-07 20:28:07 1471

原创 字符串模型3:查找字符串str1中字符串str2出现的次数

#include <stdio.h>#include <string.h>// 查找str1中str2出现的次数// 比如:str1 = "haabchnjabchnnjabchuioiabc" 中 str2 = "abc"出现的次数int get_count(char *str1, char *str2, int *pcount){ // 形参pcount的作用是为了计算次数

2016-03-06 20:55:24 3699

原创 字符串模型2:分别取一串字符串中的奇偶字符存放在两个不同的内存块中

#include <stdio.h>/* 有一个字符串”1a2b3d4z”,; * 要求写一个函数实现如下功能, * 功能1:把偶数位字符挑选出来,组成一个字符串1 buf1 * 功能2:把奇数位字符挑选出来,组成一个字符串2 buf2 * 功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。 * 功能4:主函数能测试通

2016-03-04 11:46:27 640

原创 字符串模型1:打印去掉字符串首尾空格后的字符

#include <stdio.h>#include <string.h>/* 有一个字符串开头或结尾含有n个空格(" helloworld "), 欲去掉前后空格 * 返回一个新字符串. * 要求1:自己定义一个接口 * 要求2:编写测试用例 * int trim_space(char *inbuf, char *outbuf);*//*函数如下*/int trim_spac

2016-03-04 11:35:13 687

原创 中断程序的安装过程

中断程序的安装过程mov cx, offset do0end - offset do0 ; 中断程序的长度cld ; 设置df=0rep movsb ; mov es:[di], word ptr ds:[si]; if df=0 存储器的地址自动增加; inc di; inc si; if df=1

2016-02-01 15:40:13 660

编程高手箴言(梁肇新+著).

【软件】编程高手箴言(梁肇新+著).pdf

2012-05-28

空空如也

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

TA关注的人

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