- 博客(97)
- 收藏
- 关注
转载 01_线性表的顺序存储结构
/**seqList.h*/#pragma once#ifndef _SEQLIST_H_#define _SEQLIST_H_#include <iostream>#include <malloc.h>using namespace std;typedef unsigned int SeqListNode;struct SeqList { int capacity;
2017-05-17 22:51:52 166
转载 04_快速排序
快速排序算法思路: 先拿一个数(这里取a[0])将这个数组分成两堆,一堆大于这个数,另一堆相反,然后这个数就放到了他该放的位置上面(相当于这个数就拍好序)。以此类推,左边的继续重复上面的操作,右边也是。这是不是就是递归的思想了。/*进来一个数组,参考第一个a[low],将数组分成两堆,返回最后这个a[low]该放到的下标*/int wei::Chen::partition(int arr[
2017-05-17 20:50:50 155
转载 03_希尔排序(ShellSort)
希尔排序算法思路: 希尔排序是插入排序的增强版,如果没看过插入排序,请先查看插入排序算法的思路。 希尔排序按照增量d依次将数组分组排序,增量的选取可以自己决定,现在还没统一的规定多少是最合适的,但是增量的最后必须是d=1。 例如:有个a[10]的数组,增量可以选取d=len , d=d/3+1 (4,2,1);每个增量d都可以将数组分成d组。然后,每个组再进行排序,这样经过一轮增量
2017-05-17 19:45:55 249
原创 02_插入算法
插入排序(从小到大排序)算法解析: 其实就是将数组分成两批,第一批是有序的数组,第二批是待排序的数组;将后面待排序的每个数组元素与第一批有序的数组比较,当满足条件时候插入即可。 例如:先假设第一批有序数组是一个元素,然后再后面的9个元素中取第一个与之比较,如果小于第一个有序数组的第一个元素,就将有序数组的最后一个元素退后一位;以此类推,依次将无序数组中第一元素与有序数组中的最后一个到有序
2017-05-17 17:24:54 236
转载 01_选择排序和冒泡排序
由于选择排序和冒泡排序是比较基础的排序算法,所以这里只是给出代码,具体的排序算法就不讲解了。void wei::Chen::swap( int &a , int &b ) { a ^= b; b ^= a; a ^= b;}void wei::Chen::showArr(int arr[], int len) { for (int i = 0; i < len;
2017-05-17 16:51:54 151
转载 03_模板、类型转换、新数组、Lamdbda表达式、New高级用法
[TOC] 一、函数模板 1、函数包装器 ①.第一,设计执行接口,接口设计关卡(),计数 ②.第二,函数包装器依赖于函数模板,实现通用泛型 ③.第三,函数代码可以内嵌在另外一个函数,实现函数怀孕 ④.第四,函数包装器,用于管理内嵌函数,外部函数调用include includetemplateincludetemplate void get(T t) { t++ ; }
2017-05-17 15:13:15 287
转载 02_
一指针函数的引用参数返回值二引用三auto自动变量四Enum枚举五Bool布尔六New delete全局重载八函数模板与autoc11九宽字符本地化十Inline内联函数一、指针函数的引用(参数,返回值)int(* z(int x, int(*y)(int)) )(int)/*解读:int(* z(int x, int(*y)(int)) )(int)*/
2017-05-17 10:38:28 242
转载 01_C与c++的区别
一命名空间二类型初始化三函数重载四泛型auto只能用于栈五左值与右值引用六Const关键字说明七堆栈new delete有误一、命名空间①.标准命名空间namespace chen{ } ;②.匿名命名空间namespace { } ; /*可以直接调用空间中的函数与变量*/③.命名空间的别名(空间名特长)namespace chenafafasfdasdf
2017-05-17 09:47:33 195
转载 02-cat &
& 放在启动参数后面表示设置此进程为后台进程;默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的;如: chen@chen:~$ cat & [1] 14981 [1]+ 已停止 cat 这样就把cat这个命令放在后台执行,但是进
2017-05-07 10:34:23 203
转载 01-locate、find、which和whereis
这三个命令有什么区别和联系呢?1、which主要用来查找可直接执行的命令,可以查找别名。 2、whereis比which的搜索范围大了一些,同时可以查找源文件和man文件。这两个命令适用于查找安装好的命令。 3、locate的查找范围更大,可以查找任意类型文件。适合快速查找指定文件,文件名中包含了查找字符的也会被搜索出来。 4、find最强大也最慢。适合查找前几个命令找不到的文件
2017-05-03 12:09:25 433
转载 05-杂项
一公网IP和私网IP二114114114114和8888三一、公网IP和私网IPA(0) : 0.X.X.X~127.X.X.X 10.0.0.0~10.255.255.255 B(10) : 128.X.X.X~191.X.X.X 172.16.0.0~172.31.255.255 C(110) : 192
2017-05-03 10:11:01 293
原创 03-ARP表、路由控制表、MAC表?
一MAC表的作用二ARP表的作用三路由控制表的作用四ARP欺骗和ARP攻击原理五制作ARP响应包测试ARP欺骗六番外篇什么是DDOS攻击 二层交换机中只有MAC表; 三层交换机中有路由控制表和ARP表,局域网中是通过ARP表来进行数据转发工作的; 问题一:路由表也是指引数据的流向的,为什么不可以代替ARP表呢?这两张表是不是有多余的地方?还是这两张表有优先级?还是其中一方是为
2017-05-03 09:52:04 588
原创 02-域名服务器?
一域名服务器的作用二域名服务器的访问流程 1、域名服务器的访问是不是跟书上讲的一样,都是先访问根域名服务器,然后才逐级访问子服务器,找到之后才将结果直接返回给访问的局域网电脑。 2、正因为书上是像1一样的说法,但是网上都是说找到最近的域名解析服务器,然后查看是否有想要的结果。有的话就返回,没有则继续查找(-_-怎么查找)。一、域名服务器的作用二、域名服务器的访问流程
2017-05-03 09:31:51 237
原创 01-端口映射作用
一广域网内一、广域网内: 插曲: 1. ip地址不够用怎么办? * 于是出现了内网和外网的说法,通过某种技术(NAT或是NAPT服务器)使局域网中的多个电脑公用一个公网的ip地址。所以,同个局域网中的数据都是从同个公网ip发送出去的。 2. 问题来了,局域网中的数据是发送出去给了特定的服务器,但是回来的数据要何去何从呢?于是,就出现了端口的说法。每个局域网中的电脑在访问服务器
2017-05-02 23:58:59 956
转载 17-并发服务器设计(并发、同步、互斥的区别)
一实现并发的方法二使用多进程实现并发一、实现并发的方法 1. 多进程,多线程,线程池二、使用多进程实现并发#define PORTNUM 5555int main(){ int sockfd , newfd ; char buffer[128] ; int nbyte ; struct sockaddr_in server_ad
2017-04-27 19:32:38 439
转载 16-TCP和UDP网络编程(网络协议和分析要看看)
一网络结构图二socket三socket创建和连接四socket发送与接收数据五UDP的区别接收和发送函数与TCP不同六关闭socket七TCP连接八UDP编程代码 Wireshark这个是抓包软件,使用这个软件可以帮助我们更好的了解网络协议包的分层结构。一、网络结构图 1. 从上图可以看出一个完整的应用层协议包可以分层多个子资协议包,嵌套包含; 2. 从Wireshar
2017-04-27 19:30:15 463
转载 15-多线程互斥和同步
一什么是多线程二多线程函数三多线程互斥四多线程同步五代码 注意:与进程区分开来。 线程同步:多个线程按照先后顺序执行,就像是排了队列一样,一个一个来; 线程互斥:多个线程对同个资源操作,为了保证被访问资源的原子性(一次只能有一个线程使用资源),所以要互斥。一、什么是多线程 * 线程就是“轻量级”的进程。 * 线程与创建它的进程共享代码段,数据段。 * 线程拥有自己
2017-04-24 22:05:48 195
转载 14-进程间通信-消息队列(功能:传输数据)
一 什么是消息队列二在Linux中使用消息队列三使用消息队列进行进程间通信示例一、 什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来
2017-04-17 23:40:46 713
转载 13-进程间通信-共享内存(功能:传输数据)
一什么是共享内存二共享内存使用的相关函数三示例一、什么是共享内存1. 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果
2017-04-17 21:35:01 963
转载 12-进程间通信-信号量(功能:共享资源)
一什么是信号量二信号量的工作原理三Linux的信号量机制四示例 信号量、消息队列和共享内存都是会涉及到进程间的同步和互斥。 错误: 在进行这个实验的时候,我一直不能得到想要的结果。所以在信号量的获取semid成功与否,信号量操作semop成功与否,信号量的设置semctl成功与否,这些都要将结果打印出来判断。看看是在哪里出错的,进行改进。 我查到是在信号量的操作semo
2017-04-17 16:18:04 2788
转载 11-进程间通信-信号通信(功能:事件通知)
一什么是信号二信号的种类三信号处理函数四示例一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通
2017-04-16 12:35:50 823
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人