自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张三先生

生活就像刚刚下过雪的田野,你走的每一步都会留下痕迹。。。。

  • 博客(102)
  • 收藏
  • 关注

原创 再见,CSND

一别两年,今又归来。

2020-05-14 22:12:38 1325 6

原创 【PowerShell(3)】——交互式

进行数学运算我们可以把powershell当成一个计算器。象键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。PS C:\> 2+4+915PS C:\> 0xABCD43981PowerShell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PB。PS C:\> 1pb...

2018-03-22 11:54:36 1055

原创 【PowerShell(2)】—— 初识PowerShell

PowerShell快速编辑模式和标准模式powershell控制台有两种模式,一个是快速编辑模式,一个是标准模式。快速编辑模式和标准模式的切换可以通过控制台标题栏->鼠标右击->属性->选项->编辑选项 。Powershell标准模式鼠标右击选择标记后才能实现复制和粘切功能。Powershell快速编辑模式可以通过鼠标左键选择任意矩形区域内的文本,并且鼠标右击实现复制功能...

2018-03-21 15:59:45 832

原创 【PowerShell(1)】—— 介绍和安装及简单使用

PowerShell介绍owershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。 当前p...

2018-03-21 14:50:10 7715 2

原创 【进程(3)】—— 进程间通信

进程间通信每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如下图所示管道管道是一种最基本的IPC机制,由pipe函数创建:#include ...

2018-03-15 14:48:24 318

原创 【进程(2)】—— 进程控制

 fork函数#include <sys/types.h>#include <unistd.h>pid_t fork(void);fork调用失败则返回-1,调用成功的返回值见下面的解释。我们通过一个例子来理解fork是怎样创建新进程的。例: fork#include <stdio.h>#include <unistd.h>#include...

2018-03-15 14:01:52 382

原创 【进程(1)】—— 环境变量

每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。1.进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。2.进程的状态,有运行、挂起、停止、僵尸等状态。3.进程切换时需要保存和恢复的一些CPU寄存器。4.描述虚拟地址空间的信息。5.描述控制终端的信息。6.当前工作目录(Current...

2018-03-15 11:02:15 1128

原创 【TCP/IP】TCP协议

TCP协议TCP的段格式如下图所示和UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。32位序号、32位确认序号、窗口大小稍后详细解释。4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。URG、ACK、PSH、RST、SYN、FIN是六个控制位,16位检验和将TCP...

2018-03-09 15:51:23 342

原创 【TCP/IP】 UDP段格式

 UDP段格式下图是UDP的段格式下面分析一帧基于UDP的TFTP协议帧。以太网首部0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00 IP首部0000: 45 000010: 00 53 93 25 00 00 80 11 25 ec c0 a8 00 37 c0 a80020: 00 01UDP首部0020: 05 d4 00 45 00 3f ac...

2018-03-09 15:19:09 425

原创 【TCP/IP】 IP地址与路由

 IP地址与路由IPv4的IP地址长度为4字节,通常采用点分十进制表示法(dotted decimal representation)例如0xc0a80002表示为192.168.0.2。Internet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要通过路...

2018-03-09 15:07:04 2119

原创 【 TCP/IP 】以太网(RFC 894)帧格式、 ARP数据报格式、 IP数据报格式

以太网(RFC 894)帧格式以太网的帧格式如下所示:其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧末尾是CRC校验码。以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包...

2018-03-09 14:45:25 6011

原创 【 TCP/IP 】 协议栈与数据包封装

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示: TCP/IP协议栈两台计算机通过TCP/IP协议通讯的过程如下所示:TCP/IP通讯过程传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到...

2018-03-09 14:29:45 1397

原创 【算法 四】——线性查找和折半查找

线性查找有些查找问题要用时间复杂度为O(n)的算法来解决。例如写一个indexof函数,从任意输入字符串中找出某个字母的位置并返回这个位置,如果找不到就返回-1:例: 线性查找#include <stdio.h>char a[]="hello world";int indexof(char letter){ int i = 0; while (a[i] != '\0')...

2018-03-08 15:48:03 533 2

原创 【算法 三】—— 归并排序

归并排序插入排序算法采取增量式(Incremental)的策略解决问题,每次添一个元素到已排序的子序列中,逐渐将整个数组排序完毕,它的时间复杂度是O(n2)。下面介绍另一种典型的排序算法--归并排序,它采取分而治之(Divide-and-Conquer)的策略,时间复杂度是Θ(nlgn)。归并排序的步骤如下:1. Divide: 把长度为n的输入序列分成两个长度为n/2的子序列。2. Conque...

2018-03-08 15:03:03 186

原创 【算法 二】—— 时间复杂度分析

解决同一个问题可以有很多种算法,比较评价算法的好坏,一个重要的标准就是算法的时间复杂度。现在研究一下插入排序算法的执行时间,按照习惯,输入长度LEN以下用n表示。设循环中各条语句的执行时间分别是c1、c2、c3、c4、c5这样五个常数:受内存管理机制的影响,指令的执行时间不一定是常数,但执行时间的上界(UpperBound)肯定是常数,我们这里假设语句的执行时间是常数只是一个粗略估计。void i...

2018-03-08 14:19:57 754

原创 【算法 一 】—— 插入排序

插入排序插入排序算法类似于玩扑克时抓牌的过程,玩家每拿到一张牌都要插入到手中已有的牌里,使之从小到大排好序。 扑克牌的插入排序:也许你没有意识到,但其实你的思考过程是这样的:现在抓到一张7,把它和手里的牌从右到左依次比较,7比10小,应该再往左插,7比5大,好,就插这里。为什么比较了10和5就可以确定7的位置?为什么不用再比较左边的4和2呢?因为这里有一个重要的前提:手里的牌已经是排好序的。现在我...

2018-03-08 11:21:39 349

原创 【gdb】- 段错误调试

如果程序运行时出现段错误,用gdb可以很容易定位到究竟是哪一行引发的段错误,例如这个小程序:段错误调试实例一:#include <stdio.h>int main(void){ int man = 0; scanf("%d", man); return 0;}[zhangsan@localhost study-c]$ gcc -g gdb4.c -o gdb4[zhan...

2018-03-07 17:33:43 1245

原创 【gdb】- 观察点调试

接着上一篇的步骤,经过调试我们知道,虽然sum已经赋了初值0,但仍需要在while (1)循环的开头加上sum = 0;:观察点调试实例:#include <stdio.h>int main(void){ int sum = 0, i = 0; char input[5]; while (1){ sum = 0; scanf("%s",input); fo...

2018-03-07 15:59:49 1712

原创 【gdb】- 断点调试

 断点调试实例:#include <stdio.h>int main(void){ int sum = 0, i = 0; char input[5]; while (1){ scanf("%s",input); for(i = 0;input[i] != '\0'; i++) sum = sum*10 + input[i] - '0'; print...

2018-03-07 10:32:09 1194

原创 【gdb】- 单步执行和跟踪函数调用

操作环境:[root@localhost zhangsan]# cat /proc/version Linux version 2.6.32-696.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:0...

2018-03-06 17:52:13 6428

原创 Linux--CentOs之yum

YUM 是 Yellow dog Updater, Modified 的缩写,是由 Duke University 所发起的计划,目的就是为了解决 RPM 的依赖关系的问题,方便使用者进行软件的安装、升级等等工作。注:yum 只是 为了解决 RPM 的依赖关系的问题,而不是一种其它的软件封装模式。RPM 仍然是 RHEL 和 CenOS 中的默认软件管理器。yum 可以视为 RPM 的一个前台工具...

2018-03-01 17:19:33 218

原创 Linux下常用网络配置文件详解

Linux 为 配 置 网 络 提 供 了 许 多 工 具 , 其 中 有 图 形 界 面 的 ( 如NetworkManager1)、也有伪图形界面(如 system-config-network 2)的。虽然使用这些工具来配置网络会很方便,但是由于各个发行版本的 Linux 所提供的网络配置工具很可能完全不同,并且通过命令行界面的远程登录也无法使用这些图形界面的工具,所以我们并不打算使用工具来...

2018-03-01 16:53:26 11617

原创 【学习Redis】- 集合类型

集合类型在集合中每个元素都是不同的,且没有顺序。集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度是O(1)。多个集合类型键之间还可以进行并集、交集和差集运算。命令集合间运算...

2018-03-01 14:46:56 175

原创 【学习Redis】- 列表类型和常用命令

列表类型列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度就越快。与散列类型键最多容纳的字段数量相同,一个列表类型键最多能容纳2的32次方减1个元素。命令向列表两端添加元素LPUSH key val...

2018-03-01 14:21:13 147

原创 【学习Redis】- 散列(哈希)类型和常用命令

散列类型Redis采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,即散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2的32次方减一个字段。注:除了散列类型,Redis 的其他数据类型同样不支持数据类型嵌套。散列类型适合存储对象。存储结构如下:而在关系数据库中如果要存储...

2018-03-01 11:00:26 432

原创 【学习Redis】- 字符串类型和常用命令

获得符合规则的健名列表 KEYS 命令KEYS patternpattern支持glob 风格通配符格式,规则如下,图片均截取与《Redis入门指南》一书,下面就不做说明了:127.0.0.1:6379> KEYS *"name"注:keys * 命令能获得Redis中所有的键,但需要遍历Redis中的所有键,当键较多时,会影响性能。注:Redis不区分命令大小写判断一个键是否存在 EXI...

2018-02-28 17:51:08 198

原创 【学习Redis】- Redis命令行、命令返回值、配置

Redis 命令行客户端我们在上一篇文章中编译出来的可直接执行程序 redis-cli ,redis-cli (Redis Command Line Interface) 是Redis自带的基于命令行的Redis客户端。启动 Redis 客户端1.直接输入命令redis-cli ,前提启动redis服务。# redis-cli2.使用命令 redis-cli -h 127.0.0.1 -p 637...

2018-02-28 14:23:11 4267

转载 linux添加启动服务,以及chkconfig命令使用

linux添加启动服务,以及chkconfig命令使用什么是LSB    LSB,即Linux标准规范(英语:Linux Standard Base)是一个在Linux基金会结构下对Linux发行版的联合项目,使Linux操作系统符合软件系统架构,或文件系统架构标准的规范及标准。LSB基于POSIX,统一UNIX规范及其他开放标准,共在某些领域扩展它们。详细情况请参考相关链接。LSB脚本动作   ...

2018-02-28 10:46:53 662

转载 source, ~/.bashrc, ~/.bash_profile详解

source命令的作用就是用来执行一个脚本,那么:source a.sh 同直接执行 ./a.sh 有什么不同呢,比如你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行 echo $KKK ,发现没有值,如果你用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后...

2018-02-28 10:29:53 7153

原创 【学习Redis】- Redis的安装、启动、停止

安装Redis说明:操作系统:Centos 6.9[root@localhost /]# cat /proc/versionLinux version 2.6.32-696.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Ma...

2018-02-27 18:42:27 1532

转载 tar命令详解

tar相关命令:unzip,bzip2,gunzip,tar,rar,gzip tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的  主操作模式: -A, --catenate, --concatenate   追加 tar 文件至归档 -c, --create               创建一个新归档 -d, --diff, --compare   ...

2018-02-27 14:46:45 1501

转载 错误:chmod: changing permissions of ‘/etc/passwd': Read-only file system

给passwd文件加权限,修改/etc/passwd目录下所有的文件夹属性为可写可读可执行,执行以下命令:chomd 777 /etc/passwd的时候提示错误:chmod: changing permissions of ‘/etc/passwd': Read-only file system解决方法:产生这个问题的原因是文件系统此时处于只读模式下,/etc/passwd和/etc/shado...

2018-02-26 17:34:39 14859 2

原创 Apache学习笔记(二)—— 运行apache(1)

  在UNIX/Linux的系统中,重要的服务一般都是作为系统进程在后台运行的,它们在后台不断的处理请求,而如何运行和管理它们,成了每一个系统管理员要做的重要事情之一。运行Apache手动启动Apache由于Apache程序是通过可执行文件httpd启动的,因此手动启动Apache是容易的,如下命令就可以了:如果返回上面的错误,说明Apache没有找到默认的服务器主机名,这时Apache会使用本机...

2018-02-22 11:34:52 784

转载 Linux 之 ps命令

ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所...

2018-02-08 15:13:18 370

原创 Linux之 md5sum 命令

md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“...

2018-02-08 14:23:06 1394

转载 RPM包管理及RPM命令详解

Linux软件包分类Linux系统下的软件包分为源码包和二进制包两种类型。源码包:源码包里面包含了软件的源代码,在使用源码包进行软件安装的时候,计算机需要先经过编译,将源代码编译为计算机能够识别的机器语言,然后才能进行安装。二进制包:二进制包其实就是将源代码经过编译之后生成的机器语言包,例如:rethat系列的二进制包是RPM包,debian系列的二进制包是DEB包。源码包和二进制包的优缺点源码包...

2018-02-08 13:50:55 1556

原创 Apache学习笔记(一)—— 安装Apache

编译安装Apache下载源代码Apache存档站点(推荐):http://archive.apache.org/dist/httpd/Apache官方站点:http://www.apache.org/dist/httpd/Apache备份站点:http://www.eu.apache.org/dist/httpd/使用wget下载httpd源代码,并校验它的MD5码:ok表示校验没问题。解压源码到...

2018-02-07 17:07:54 646

原创 学习Nginx HTTP负载均衡和反向代理的配置与优化(四)

Nginx 负载均衡服务器的双机高可用双机高可用一般是通过虚拟IP(也称漂移IP)方式来实现,基于Linux/Unix的的IP别名技术。双机高可用方式分为两种:第一种方式为一台主服务器加一台热备服务器,正常情况下主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态,当主服务器发生故障时,热备服务器接管主服务器的虚拟IP,提供负载均衡服务;第二种方式为两台负载均衡服务器

2018-02-06 15:27:07 239

转载 虚拟路由器冗余协议【原理篇】VRRP详解

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性

2018-02-06 11:29:11 1570

原创 学习Nginx HTTP负载均衡和反向代理的配置与优化(三)

一、Nginx负载均衡与反向代理实现动、静态网页分离NetScaler负载均衡交换机动静分离系统架构图:二、Nginx负载均衡的HTTP Upstream模块Upstream模块是Nginx负载均衡的主要模块,它提供了一个简单方法来实现在轮询和客户端IP之间的后端服务器负载均衡,并可以对后端服务器进行健康检查。代码如下:#负载均衡服务器池

2018-02-05 17:11:17 240

空空如也

空空如也

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

TA关注的人

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