- 博客(71)
- 问答 (2)
- 收藏
- 关注
原创 Go语言基础--命名&变量&基本数据类型
命名规则go语言中的函数、变量、常量、类型、语句标签和包的名称遵循一个简单的规则:名称的开头是一个字母或者下划线,后面可以跟任意数量的字符/数字和下划线,并区分大小写。如heapSort和HeapSort是不同名称。在命名时不能使用go语言语法中的保留关键字函数名/变量名等 第一个字母的大小写决定其可见行是否跨包。如果名称以大写字母开头,它是导出的,意味者它对包外是可见的和可访问的,可以被包之外的其他程序所引用。func main() { fmt.Println("hello world")
2020-05-24 19:09:04
556
转载 rest-assured使用指南
转自:https://testerhome.com/topics/7060原文:https://github.com/rest-assured/rest-assured/wiki/Usage本文github地址:https://github.com/RookieTester/rest-assured-doc注意,如果您正在使用1.9.0或者更早的版本请参
2017-12-27 14:49:34
1141
原创 计数与基数排序
计数排序计数排序是一种非比较排序,但是它很简单,主要有一下几个步骤:通过找到元素中最大最小值确定一个范围;建立一张这个范围大小的哈希表通过哈希的直接定值法找到对应元素进行操作写入对应的数组下表中就可以了void CountSort(int* array, size_t size){ assert(array); int max = array[0]; int mi
2017-08-04 20:21:16
565
原创 排序-->归并排序
归并排序归并排序也称外部排序,是内存中的数据过大一般不能处理的情况下,我们选择用外部排序来解决,归并排序也是一种分治的思想,其实它就是把所要排序的内存空间一直二分下去,直到不能再分,然后又进行合并的一种排序方法; 从上图中我们可以看到,其实归并排序也不是很难:void MergeSort(int* array, int size){ int* tmp = new int[size];
2017-08-04 19:22:58
419
原创 简述STL-->空间配置器
空间的配置与释放原来思想中存在的问题:在我们没有了解到STL中的空间配置器的时候,我们所了解的资源的申请无非就是malloc/free和new/delete还有new[]/delete[]组合,它们用起来很简单方便,但是我们都知道,它们申请失败以后,直接就是退出程序不做其他处理;那么,真的是没有内存让我们用了吗?其实并不然,下面我们就来列出我们曾经用的方法中的几大缺点:效率低下:(我们每次申请空间
2017-08-01 19:19:50
384
原创 交换排序(冒泡排序&&快速排序)
写在前面代码上传GitHub交换排序(冒泡&&快排)冒泡排序冒泡排序其实是非常简单,他就是把一个数与他的前一个数在比较与交换的过程;这个简单,我就直接上代码了: 版本一://最简单直接,但是效率不高void BulleSort(int* array, int size){ for(size_t i = 0; i < size; i++) { for(size_t
2017-07-26 20:42:53
573
原创 排序-->选择排序(选择排序&&堆排序)
选择排序选择排序:顾名思义,我们就可以猜到,它是原则合适的元素放到合适的位置; 从图中,我们可以得到: 1. 用第一个元素,和其他所有的元素进行比较,找出最小的,然后进行交换; 2. 然后进行,数据的递增; 3. 直到数据全部有序;void SelectSort(int* array, size_t size){ for(size_t i = 0; i < size; i++)
2017-07-26 18:19:43
308
原创 排序-->插入排序(直接插入排序&&希尔排序)
写在前面博客的全部代码以及测试用例全部已上传GitHub:直接插入排序&&希尔排序直接排序直接排序其实就是一次将无序空间向有序空间转换的过程,其实所有排序都是这样,只不过,在直接排序中,我们是将原本的数据内容分为了前后两个空间,前面的一个空间是有序的,而后面的空间无序,我要做的就是慢慢的将有序空间增长,将无序空间缩小,直到无序空间为0,我们就可以得到一个有序的数据链; 在上图中,我们大致可以观察出
2017-07-26 17:17:45
294
原创 Shell下的进度条
在Shell脚本下的进度条的原理和用C语言下原理是一样的,尅参看上一篇中他们进度条中换行与回车的原理C语言实现的进度条现在在Shell脚本中实现的一个进度条其实就是除了语法以外别的都基本差不多,所以,在原来单调的颜色上家了一些变色;字背景颜色范围:40----4940:黑41:深红42:绿43:黄色44:蓝色45:紫色46:深绿47:白色字颜色:30-----------3930:
2017-07-13 15:32:54
807
原创 Shell脚本中的``与$()以及eval
1、“与$()“与$()在Shell脚本中都是用作命令代换的,例如:#!/bin/bashmytime=`date +%Y:%m:%d`echo $mytimedate +%Y:%m:%decho "`date +%Y:%m:%d`"echo "$(date +%Y:%m:%d)" 从结果上我们可以看到他们并没有什么区别,其实在实际使用的时候也没有什么区别,但是,我们一般建议使用$(),因
2017-07-04 11:38:56
2882
原创 I/O多路转接-----epoll服务器
在前面的两篇博客中,我们介绍了最早期的select和改进版的poll;但是,他两都没有改进的就是,想要快速知道事件就绪并没有得到改进,两个全部是遍历数组,我们都知道它的时间复杂度就是O(N);效率不是很高,时间复杂度达到O(1)才是高效的;epoll介绍epoll是Linux特有的I/O复用函数,它在实现和使用上与select、poll有很大差异,首先,epoll使用一组函数来完成任务,而不是单个函
2017-07-02 19:54:01
382
原创 I/O多路转接-----poll
在上一篇博客中我们简单的select进行了实现,但是我们都知道select是早期的一个服务器,有缺点,缺点也很明显,它支持的文件描述符只有1024个是比较少的,所以当请求达到一定数量的时候,他就不能被称为高性能服务器了,他就会越来越慢知道挂掉;所以,我们来简单来介绍poll来对select进行改进;poll的优缺点优点poll不需要开发者来计算最大文件描述符+1poll在应付大数目的文件描述符的
2017-07-02 16:58:38
353
原创 I/O多路转接----select
我们知道系统IO中有五种模型:阻塞I/O, 非阻塞I/O,信号驱动I/O,以及多路复用(select,poll,epoll)这四种是同步模型,还有一种是异步I/O模型;在I/O当中,我们知道它包含两件事情,一件事叫做等,另一件就是数据搬迁;其中这五种模型就是对事件进行等的操作;其中,多路复用(多路转接)中的三种服务器是最高效的等,所以,我们来对他们进行一个研究:select介绍1、select函数
2017-06-30 16:36:46
363
原创 UDP网络通讯/UDP可靠性实现
UDP网络通讯在前面一篇博客中写道TCP套接字的网络通讯TCP网络通讯;下面来介绍UDP套接字的网络通讯。一、UDP与TCP的区别:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现UDP的可靠性传输,必须通过应用层来实现和控制。二、TCP如何实现可靠性传输请求与应答按序到达丢包
2017-06-25 22:14:29
4605
原创 TCP网络通信/线程池
TCP网络通信预备知识socket: 在TCP/IP协议中表示:IP地址+TCP端口号或UDP端口号唯一标识网络通讯中的一个进程,IP地址+端口号就称为socket。网络字节序: 在学习C语言的时候,我们大家都应该知道大小端 的问题,在网络数据流中同样也有大小端之分,网络数据流的地址规定: 先发出的数据是低地址,后发出的地址是高地址,即网络数据流应采用大端字节序,低地址高字节。#include
2017-06-25 17:06:23
1740
原创 TCP的3次握手与4次挥手
TCP的三次握手与四次挥手: 三次握手建立连接: 如上图(黑框)所示,在最初两端的TCP进程都处于CLOSED状态。host1主动打开连接,而host2被动打开连接。host2的TCP服务器进程优先创建传输控制块TCB,准备接受客户进程的连接请求,然后将自己的状态有COLSED改为LISTEN(收听)状态,等待客户的连接请求;host1的TCP客户进程也是创建传输控制块TCB,然后向B发出连接请
2017-06-20 14:15:31
640
转载 TCP中的定时器
1.连接建立(connection establishment)”定时器 在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。2.“重传(retransmission)”定时器 在TCP发送某个数据段时设定。如果该定时器超时而对端的确认还未到达,TCP将重传该数据段。重传定时器的值 (即TCP等待对端确认的时间)是动态计算的,与RTT的
2017-06-20 09:49:38
246
原创 TCP协议首部中URG与PSH
在介绍URG与PSH之前,我们先来看看TCP的首部格式: 上图展示了TCP的报头信息,下来我们介绍URG与PSH:什么是URG与PSHURG紧急URG(URGent) 当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应当尽快传输(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如:已经发生了很长的一个程序要在远地的主机上运行。DNA后来发现了一些问题,需要取消该
2017-06-20 09:44:27
564
原创 端口
简介 在网络技术中,端口(Port)有好几种意思。集线器 、交换机 、路由器 的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻 辑意义上的端口。 那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端
2017-06-16 15:36:37
1018
原创 守护进程(精灵进程)
什么是守护进程守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性的执行某种任务或等待处理某些发送的事件。Linux上的大多数服务器就是用守护进程实现的。 我们可以看到在系统启动默认的守护进程,他们的父进程ID全是init;比如:我们比较熟悉的sshd,远程连接的守护进程;我在前面的写道的crond就是作业规划进程;Linux系统启动时会启动很多系统服务
2017-06-09 12:33:38
4652
原创 crond和crontab
什么是crond与crontabcrond是Linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否要执行的工作,如果有要执行的工作便会自动执行该工作。二Linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服
2017-06-08 21:40:22
1027
原创 红黑树
我们在前面的2票博文中已经写到简单介绍了搜索二叉树搜索二叉树,AVL树AVL树的创建,我们能该看到的是AVL树是一个搜索二叉树,其实,我们现在说的红黑树也是基于搜索二叉树和AVL树中的一些操作上来实现的,如果你对搜索二叉树有疑问,可以看看上面的两篇博文,如果,有错误,还望不吝赐教,如果你对搜索二叉树与AVL树不熟悉,红黑树理解起来就很难了(对我而言),总之,我觉得在看红黑树之前,搜索二叉树,AVL树
2017-05-25 11:56:10
711
原创 AVL树的创建
平衡二叉树下面是每个模块的代码,AVL树创建的完整版代码以上传GitHub AVLTree的创建;平衡二叉树(Balanced Binary Tree或Height-Balanced Tree)又称为AVL树。它或者是一颗空树,或者是具有下列性质的二叉树:1、它的左子树和右子树都是平衡二叉树;2、左子树和 右子树的深度之差的绝对值不超过1;若将二叉树上结点的**平衡因子**BF定义为该节点的右子
2017-05-22 22:21:33
6341
1
原创 基于Huffman树的文件压缩
利用huffman编码的思想对文件进行压缩,主要原理是通过huffman编码来重新表示字符,使得出现频率高的字符编码短,出现少的字符编码长。整体下来的话,所需的总的bit位是减少的。但是要注意当大部分字符出现的频率都差不多时,huffman压缩的压缩效率会很低。 对于Huffman编码进行文件压缩,大致可以分为两个部分: 说明一下:文中知识每个模块的代码;完整版代码基于Huffman编码的文件压
2017-05-20 14:29:23
421
原创 哈夫曼树->哈夫曼编码
基本概念定义从A结点到B结点所经过的分支序列为从A结点到B结点的路径; 定义从A结点到B结点所进过的分支个数为从A结点到B结点的路径长度; 从二叉树的根结点到二叉树中所有结点的路径长度纸盒为该二叉树的路径长度; Huffman树:带权值路径长度最小的扩充二叉树应是权值大的外界点举例根结点最近的扩充二叉树,该树即为Huffman树;构建二叉树Huffman树的构造算法(哈夫曼算法): (1):
2017-05-20 13:00:11
428
空空如也
Github 与原来的文件断开连接了,怎么才能重新连上新的客户端?
2017-05-30
写的博客莫名的不见了。。。那个大神指导指导?
2017-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人