- 博客(46)
- 资源 (7)
- 收藏
- 关注
原创 shell 脚本-sed工具
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为 “模式空间” (pattern space),接着用 sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;基本使用:1. /pattern
2016-10-25 14:02:51 388
原创 shell 脚本-正则表达式
字符类 (Character Class):如上例的x 和y,它们在模式中表示一个字符 ,但是取值范围是 一类字符中的任意一个。数量限定符 (Quantifier): 邮件地址的每一部分可以有一个或多个 x字符 ,IP地址的每一部 分可以有 1-3个y 字符位置限定符 (Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三部分,用普通字符 @和 .隔 开 ,IP地址分四部分
2016-10-25 14:02:48 347
原创 shell 脚本-符号-基础语法
为了便于识别 建议 以.sh 结尾shell脚本 可以放上所有的命令行的指令(源于bash)shell脚本 是 解释型语言 c/c++ 是编译型语言下面用到的 shell代码sh_1.sh#!/bin/bashcd ../lspwd解释型脚本的执行过程:script.sh 是文本文件,根本没有代码段和 _start 函数 , exec 怎么执行。解释:Shell会fork 一个
2016-10-25 14:02:45 4124
原创 Linux多线程编程----IO【select、poll、epoll】
IO操作多 速度就下降IO数据的 读和写IO的完成 必须等到 读事件(如磁盘 拷贝 每次要从磁盘查找数据) 和 写事件 (允许写 如写太快 写满就要马上阻塞)的就绪IO是否高效 :主要看一次IO中 等的时间的比例的多少 (等的时间比例越少 越高效) 就像钓鱼分两步:1 等 2 钓 (评价钓鱼技术高效 是 等的时间少 钓的次数多)5中IO模型1 阻塞式IO: 等的时候自己等 , 数据
2016-10-25 14:02:42 1289
原创 网络 套接字编程 TCP、UDP
网络是大端发数据从低地址发, 先发的是 高位的数据。收数据从高位收,先收到的数据存放到低地址。TCP 是 流式的 所用套接字也是流式的文件描述符socket 是 IP 加 端口号用到的函数: int socket(int domain, int type, int protocol); int accept(int sockfd, struct sockaddr *ad
2016-10-25 14:02:39 472
原创 TCP相关(控制位、3次握手、4次挥手、端口号分类TIME_WAIT状态...)
TCP报文格式650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/85/9B/wKioL1epzQfRY5fxAACqF1nJug0426.png" title="tcp报文格式.png" alt="wKioL1epzQfRY5fxAACqF1nJug0426.png" />一、6个控制位中 URG和PSH的区别:(1)紧急URG(U
2016-10-25 14:02:36 485
原创 IP数据报分片、组装过程以及路由表的建立过程
1)IP分组 中3位标志位ip数据报格式650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/85/71/wKiom1ejWhqjnjVhAACe4F8_0hg576.png" title="Image1.png" alt="wKiom1ejWhqjnjVhAACe4F8_0hg576.png" />标志位共三位650) this.wi
2016-10-25 14:02:34 1198
原创 Linux中 终端、作业控制与守护进程
1. 进程组每个进程除了有一个进程 ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。 每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组 ID等于其进程ID。组长进程可以创建一个进程组,创建该组中的进程,然后终止。 只要在某个进程组中一个进程存在,则该进程组就存在,这与其组长进程是否终止
2016-10-25 14:02:31 325
原创 Linux 线程
进程: 资源分配的基本单位线程: 进程调度的基本单元 线程强调 资源共享 但不是一味的共享 线程两个比较重要的私有成员:【1】必须有自己的硬件上下文 进行自己切换时 上下文的切换【2】私有栈结构进程强调 资源独占 但不是一味的共享各线程共享一下进程资源:(1)文件描述符表(2)每种信号的处理方式(SIG_IGN,SIG_DFL或者自定义的信号处理函数)(3)当前工作目录(4)用户i
2016-10-25 14:02:28 363
原创 Linux 信号 (下)
一、可重入函数当捕捉到信号时 ,不论进程的主控制流程当前执行到哪儿 ,都会先跳到信号处理函数中执行 ,从信号处理函数返回后再继续执行主控制流程。信号处理函数是一个单独的控制流程 ,因为它和主控制流程是异步的 ,二者不存在调用和被调用的关系 ,并且使用不同的堆栈空间。引入了信号处理函数使得一个进程具有多个控制流程 ,如果这些控制流程访问相同的全局资源 (全局变量、硬件资源等 ),就有可能出现冲突 ,
2016-10-25 14:02:25 210
原创 Linux 信号(上)
kill -l[bozi@localhost test_20160723]$ kill -l 1) SIGHUP 2) SIGINT 【进程中断】 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 【除0异常】 9) SIGKILL【进程终止】 10) SIGUSR
2016-10-25 14:02:22 276
原创 进程通信----共享内存以及mmap函数实现共享内存
进程间通信----共享内存最底层的原理:让不同的进程看到相同的物理资源(将不同进程的 虚拟内存地址 映射到 同一块相同的物理内存上)对共享内存的操作没有进行检测 PV操作需要用户自己来完成对共享内存的操作 执行向上取整 按页申请 (如一页不够就用两页 但用户可以使用的 还是他自己申请的那么大 如申请4097B 实际申请8kB 但用户只能用4097B【一页4096B】)生命周期随内核 不随进程(进程
2016-10-25 14:02:19 339
原创 关于linux信号量的SEM_UNDO标志(防止死锁)
AT&T的贝尔实验室,对Unix早期的进程间通信进行了改进和扩充,形成了"system V IPC",其通信进程主要局限在单个计算机内。IPC对象指的是共享内存(share memory)、消息队列(message queue)和信号灯集(semaphore)。信号灯(semaphore),也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制。System V的信号灯是一个或者多个信号
2016-10-25 14:02:17 1845
原创 进程通信----管道(pipe)
Linux管道的实现机制在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:· 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这
2016-10-25 14:02:14 269
原创 二叉树中找两个结点的最近的公共祖先结点
#pragma once#include using namespace std;/**************** * 二叉树中 找两个结点的最近的公共祖先结点******************/struct Node{ Node* left; Node* right; int value; Node(int v) :valu
2016-10-25 14:02:11 569
原创 程序运行 栈帧分析 以及 修改栈帧中数据以及函数地址
1 在栈帧中 修改函数调用地址 使得程序运行 跳转到 自己指定的函数 而原程序的作者完全不知道这段程序的执行中已经执行了别人的代码【可能是恶意的】650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/82/7F/wKiom1dW5JjRsJvuAAK_9z6U8jc656.jpg" style="float:none;" title="
2016-10-25 14:02:08 325
原创 task_struct结构体字段介绍--Linux中的PCB
task_struct结构体 字段介绍Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,task_struct是Linux中的【进程控制块PCB结构】的具体数据结构这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。下面对task_struct这个结构体 进行各个字段的详细介绍1. 调度数据成
2016-10-25 14:02:05 448
原创 操作系统---常见进程调度算法
常见进程调度算法轮转调度算法(RR)、优先级调度算法、多队列调度算法、多级反馈队列调度算法、保证调度算法、公平分享调度算法。1 轮转调度算法(RR)(1)原理:在轮转法中,系统将所有的就绪进程按先来先服务(FIFC)策略排成一个就绪队列。系统可设置每隔一定时间便产生一次中断,去激活进程调度程序进行调度,把CPU分配给队首进程,并令其执行一个时间片。当它运行完毕后,又把处理机分配给就绪队列中新的队首
2016-10-25 14:02:02 589
转载 关于 VS 2010 和 VS 2013 的警告 LNK4042
关于 VS 2010 和 VS 2013 的警告 LNK4042由于我最近调整了一下 Jimi 的文件结构,导致出现了一个 LNK4042 的 warning,我并没有很重视,这个 warning 导致出现了一些错误。我调试了几个小时,一开始并没有想到是这个 warning 造成的,以为是我改代码改出来的问题(因为最近做了大量调整),特此记录一下。 我在调整代码结构的时候,出现了这么两个文件 as
2016-10-25 14:02:00 262
原创 Linux中ctags、make以及进度条小程序(\r的应用)
一、ctags 查看函数定义的好工具ctags -R 在当前目录建立tags文件650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/82/11/wKioL1dKkXDwXAxAAAAKU6-fnY8001.png" title="图片1.png" alt="wKioL1dKkXDwXAxAAAAKU6-fnY8001.png" />
2016-10-25 14:01:57 305
原创 HashTable-哈希表/散列表
HashTable-散列表/哈希表,是根据关键字(key)而直接访问在内存存储位置的数据结构。它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。构造哈希表的几种方法直接定址法--取关键字的某个线性函数为散列地址,Hash(Key)= Key 或 Hash(Key)= A*Key + B,A、B为常数。除留余数法--取关键值被
2016-10-25 14:01:55 293
原创 Vim(Linux编辑器)简单配置和常用命令
一 简单配置1 增加配置文件.vimrc在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以建立私有的配置文件,命名为:“.vimrc”。下面以普通用户为例:在用户主目录下建立 .vimrc 文件或直接下载高手写好的 移动到自己主目录下即可下载vimrc.zip,解压后的文件为.vimrc,将其放到当前用户的目录下。链接
2016-10-25 14:01:52 184
原创 Linux 中find命令与文件权限
Find指令Linux下find命令在目录结构中搜索文件,并执行指定的操作。(速度较慢 遍历文件 真真切切地查找)1 命令格式 find pathname -options [-print -exec -ok ...]2 命令功能用于在文件树种查找文件,并做出相应处理(可能访问磁盘)3 命令参数pathname:find 命令所查找的目录路径。例如:. 表示当前目录 用/表示系统根目录-prin
2016-10-25 14:01:49 688
原创 Linux 常见环境变量、文件类型、权限管理
冯诺依曼体系 1输入设备-》2存储器(内存)-》3运算器-》4控制器-》5输出设备 Linux常见环境变量:(不同用户 相同环境变量名 但内容不同)1. PATH 命令搜索路径export PATH=$PATH:/2016_程序的路径2. HOME用户主目录650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/80/0F/wKiom1c
2016-10-25 14:01:46 346
原创 (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;/** * 从有序递增旋转数组45679123 中找到数字6的位置 * 数组递增 但有旋转 * 二分查找思想 * 时间复杂度小于O(N) * {7,8,9,10,1,2,3,4,5,6} *************/int find_revolve_array(const i
2016-10-25 14:01:44 187
原创 栈和队列 相关 面试题
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7F/5E/wKiom1cbh3vSNThWAADKDYurAoM637.png" title="图片1.png" alt="wKiom1cbh3vSNThWAADKDYurAoM637.png" />// 1、实现一个栈,要求实现Push(出栈)、 Pop(入栈)、Min(返回最小
2016-10-25 14:01:41 230
原创 C++ 数据结构 广义表
GeneralList-广义表广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。 A = () B = (a,b) C = (a,b,(c,d)) D = (a,b,(c,d),(e,(f),h)) E = (((),()))650) this.width=650;" src="http://s3.51ct
2016-10-25 14:01:38 286
原创 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
稀疏矩阵的压缩存储压缩存储值存储极少数的有效数据。使用{row,col,value}三元组存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后顺序依次存放。650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7F/25/wKiom1cU23Cx-s6VAAAuw18ILQU698.png" title="转置1.png" alt
2016-10-25 14:01:35 2585
原创 对称矩阵 压缩存储
对称矩阵及对称矩阵的压缩存储设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 压缩存储称矩阵存储时只需要存储上三角/下三角的数据,所以最多存储n(n+1)/2个数据。对称矩阵和压缩存储的对应关系:下三角存储i>=j, SymmetricMatrix[i][j] == Array[i*(i+1)/2+j]650) this.width=650;" src="http://
2016-10-25 14:01:32 808
原创 练习26 复杂链表拷贝
题目:请实现函数ComplexListNode* Clone(ComplextListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个pNext指针指向下一个结点外,还有一个pSibling指向链表的任意结点或者NULL。结点的C++定义如下:templatestruct ComplexListNode{ T value; ComplexListNode*
2016-10-25 14:01:29 220
原创 C++ 栈的应用
1、栈的应用1 解决迷宫问题问题:一个n*n的0、1矩阵,0 表示可以走通,1表示不可以走 ,假定矩阵的下边是出口,给定矩阵的入口坐标,求出走出迷宫的路径650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7E/DB/wKioL1cLPSPwwD5uAAAWKwVp_gk652.png" title="迷宫.png" alt="wKi
2016-10-25 14:01:26 953
原创 C++ 几种智能指针的简单实现
#pragma once// 智能指针 // 定义个类来封装资源的分配和释放,在构造 函数完成资源的分配和初始化,在析构函数完成资源的// 清理,可以 保证资源的正确初始化和释放。// 这里简单实现 AutoPtr、 ScopedPtr、ScopedArray以及 SharedPtr //------------------------------SmartPtr.h---------------
2016-10-25 14:01:23 771
原创 C++ 模板 之 类型萃取 与 容器适配器
类型萃取 在模板这里主要就是对于模板的不同类型的实例化 有不同的方案 这样可以提高效率等 比如 下面的 顺序表 在扩容时的拷贝 对于没有含有指向空间的指针的类 如int 自动使用memcpy() 对于含有指向空间的指针的类 如string 就自动一个一个的赋值 防止浅拷贝导致两个指针指向同一空间 析构两次时出错类型萃取实现 主要用到了 模板 模板特化 内嵌型别 也
2016-10-25 14:01:21 278
转载 模板类中重载<<和>>操作符 常见问题
模板类中操作符重载问题(">"重载)在模板类中输入流“>>”和输出流“>"的重载。一、将输出流">"重载的实现写在类中#include "stdafx.h"#include using namespace std; template class Test { public: Test(const T& t):data(t){}
2016-10-25 14:01:18 436
原创 C++顺序表模板练习 以及 剖析易出现的浅拷贝问题
/* C++顺序表模板练习 以及 剖析易出现的浅拷贝问题 */#define _CRT_SECURE_NO_WARNINGS 1#include #include using namespace std;template class SeqList{public:SeqList();SeqList(const SeqList& s);~SeqList();void PushBack(const T
2016-10-25 14:01:15 255
原创 c++ 单链表 双向链表 链表笔试题
c++ 单链表 双向链表 链表笔试题1 单链表 以及链表笔试题--------------------------------Slist.h----#ifndef __SLIST_H__#define __SLIST_H__//#pragma once#include using namespace std;typedef int DataType;struct Node{ Node(const
2016-10-25 14:01:12 693
原创 C++ 模拟String类 相关
#define _CRT_SECURE_NO_WARNINGS 1#include #include using namespace std;//string 编写/*版本1 以前的版本*//***************class String{public://错误 String(char *str = NULL)String(char *str = ""):_str(
2016-10-25 14:01:09 174
原创 C++ 实现一个日期类
#include using namespace std;class date{friend ostream& operator<<(ostream& os, const date &d);friend istream& operator>>(istream& in, date &d);public:date(int year = 1900, int month=1, int day
2016-10-25 14:01:06 277
原创 回调函数应用(冒泡排序 既排整型数组 也可排字符串 )
题目:回调函数实现冒泡排序 排整数也可排字符串 n为数组元素大小#define _CRT_SECURE_NO_WARNINGS 1#include #include #include //交换函数 交换n1 n2指向的变量 按字节交换 交换size个字节的大小void swap(char *n1, char *n2,int size){int i = 0;while(i < siz
2016-10-25 14:01:04 215
原创 20151202 c语言小代码
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。例如:输入test.exe -a 1 2 执行1+2输出3#include #include #include int main(int argc,char* argv[]){ int
2016-10-25 14:01:01 261
一个shell的查词脚本
2016-11-23
vim 【c\c++】 插件相关配置
2016-11-17
vim 【c\c++】 配置
2016-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人