自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

superwangxinrui的博客

临渊羡鱼,不如退而结网

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

原创 世界时间查询服务器(一)

一 本服务器实现的基本业务功能介绍1 首先将服务器启动起来2 在浏览器输入如下URL3 就会进入世界时间查询系统的主页4 比如,您想查询北京时间,那么就在输入框中输入北京,点击查询或者按下回车,系统会自动帮您查询。(查询结果如下),红线标注的部分,您可以进行一些地方特色的查询,一些美食,旅游攻略。比如:若您想知道咱老北京有哪些美食,您...

2018-08-04 19:53:43 1934

转载 web服务器与web框架收藏学习

https://www.cnblogs.com/houruikk/p/6623594.html

2019-01-05 11:12:42 2497

原创 海量数据处理问题

1 给一个超过100G大小的log file,log 中存着ip地址,设计算法找到出现次数最多的ip地址       首先看到100G的日志文件,我们的第一反应是太大了,根本加载不到内存,更别说设计算法了,那么怎么办呢?既然装不下,那么我们是不是可以将其切分开,一小部分一小部分轮轮流进入内存呢,也就是所谓的分治法。如果我们将其分为1000个文件,那么每个文件也就是100M左右,将每个文件依次载...

2018-08-20 21:13:41 372

原创 爬虫爬取小说具体章节

一   因为要爬取的网站比较简单也没有反爬机制,所以话不多说,直接看代码#!/usr/bin/python #coding:utf-8 ...

2018-08-20 00:17:20 3046

原创 世界时间查询服务器(二)之测试篇

1    测试用例 2  性能测试(Webbench) 当并发300时:向http:http://119.29.177.253:9090/cgi-bin/HEAD/发起300个线程请求,持续时间60秒# webbench -c 300 -t 60 http://119.29.177.253:9090/cgi-bin/HEAD/速度:每秒钟响应请求数:2483pages/m...

2018-08-19 23:05:32 517

原创 Linux常用操作及命令

从这篇文章中你将会学习到: 1. 什么是linux服务器load average?2. 如何查看linux服务器负载?3. 服务器负载高怎么办?4. 如何查看服务器内存使用率?5. 如何查看单个进程占用的内存大小?6. 如何查看正在使用的服务和端口?7. 如何查看服务器进程信息?8. 如何杀死进程?9. 如何查找僵尸进程?10. 为什么启动不了服务器端口...

2018-08-13 19:01:45 237

原创 排序算法总结之冒泡排序

冒泡排序算法的原理如下(升序,降序同理): 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数,所以每一趟冒泡排序就会将最大的数排到最后,也就是将一个元素排到指定位置,所以,总结出总共要冒的次数为  sz-1 次(其中sz为元素个数)。 针对所有的元素重复以上的步骤,除了...

2018-08-10 20:46:19 534

原创 浅谈函数栈帧

函数的每一次调用,都会为该函数开辟空间,用于本次函数的调用中变量的保存,现场保护。这块栈空间被称之为 函数栈帧  对这样一段代码进行调试发现,不仅仅有main函数,main函数被_tmainCRTStartup函数调用而_tmainCRTStartup函数被mainCRTStartup函数调用在函数栈帧中有两个至关重要的寄存器ebp:存放指向当前函数的栈底的地址esp:...

2018-08-02 22:41:25 168

原创 TCP/IP课程设计总结(基于socket实现的简易聊天系统)

一    该系统可实现简单的聊天功能   本系统所涉及到的知识与技术 1、了解Linux操作系统,熟悉基本指令的使用。 2、熟悉Linux开发环境,熟练使用vim, gcc/g++, gdb, make/makefile 等开发工具的使用,学会编写基本的Makefile文件。 3、了解网络, 熟悉数据封包,路由过程。了解协议分层。熟悉udp协议。了解tcp可靠性和udp协议特点。 4、...

2018-07-25 21:26:17 10078

原创 软件测试练手小项目(文件压缩)

此项目比较小,目的在于用来熟悉软件测试流程,熟悉相关概念,了解禅道的使用。1  项目启动,介入了解需求        项目背景:磁盘空间不足,需要一个压缩,解压缩文件的软件。        目标:完成所有文件类型的压缩,解压缩。        时间:2018-7-20 至 2018-7-25         项目成员:开发:张明    测试:王昕瑞2 需求分析     ...

2018-07-25 16:13:04 14407 2

原创 基于 Socket 和 HTTP协议实现简单的Web服务器

本Web服务器能够实现的基本功能:1、实现最基本的HTTP/1.0版本的web服务器,客户端能够使用GET、POST方法请求资源 2、服务器将客户请求的资源以html页面的形式呈现,能够返回一个静态页面,并能够进行差错处理(如:客户请求的资源不存在时,服务器能够返回一个404的页面) 3、服务器能进行简单的cgi程序·,能够根据 query_string或者 body中的内容动态生成页面。比...

2018-07-21 16:40:30 17718 11

原创 读《图解HTTP》有感(下)

       为了准确无误地将数据送达目标处,TCP 协议采用了三次握手 (three-way handshaking)策略。用 TCP 协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。(对比UDP)      握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和 ACK(acknowledgement)。 发送端首...

2018-07-21 10:49:50 305

原创 读《图解HTTP》有感(上)

    首先强烈推荐大家想学HTTP协议的同学们,看《图解HTTP》这本书,真的是很生动很容易理解。接下来废话就不多说了,读完小小地总结一下。 你知道当我们在网页浏览器(Web browser)的地址栏中输入 URL 时,Web 页面是如何呈现的吗?在看了<图解HTTP>这本书后,觉得很生动形象,在此分享给大家。        Web 页面当然不能凭空显示出来。根据 W...

2018-07-19 18:00:10 482

原创 钻进魔术师的帐篷看对象的前世今生--------C++之对象

1. this指针在C++中,类对象模型中实际只包含了该对象的数据信息。那么问题来了,用Person类分别创建三个对象p1,p2,p3,然后调用SetPersonInfo函数来设置每个对象的具体信息,但是SetPersonInfo函数只有一份,函数中没有区分不同对象的任何标志,为什么当P1在调用该函数的时候,函数就知道去设置P1的信息而不会去设置P2?实际上,C++中的成员函数也是按照C类似方式来...

2018-06-29 16:45:06 206

转载 指针和引用的区别

 指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。       1、指针和引用的定义       在深入介绍之前我们首先来看一下指针和引用的定义、指针和...

2018-06-04 12:05:05 24804 2

转载 C和C++中调用约定和编程模式的区别

1、调用约定C编译时函数名修饰约定规则:__stdcall调用约定在输出函数名前加上一个下划线前缀,后面加上一个“@”符号和其参数的字节数,格式为_functionname@number。 __cdecl调用约定仅在输出函数名前加上一个下划线前缀,格式为_functionname。 __fastcall调用约定在输出函数名前加上一个“@”符号,后面也是一个“@”符号和其参数的字节数,格式@func...

2018-06-04 11:50:34 253

原创 浅谈命名空间

一、为什么使用命名空间  一个大型的工程往往是由若干个人独立完成的,不同的人分别完成不同的部分,最后再组合成一个完整的程序。由于各个头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数,这样在程序中就会出现名字冲突。不仅如此,有可能我们自己定义的名字会与C++库中的名字发生冲突。    名字冲突就是在同一个作用域中有两个或多个同名的实体,为了解决命名冲突 ,C++中...

2018-06-04 11:34:33 192

原创 数据结构之堆

1. 实现堆的以下接口:typedef struct Heap{ DataType* _array; int _capacity; int _size;}Heap;// 创建堆void CreateHeap(Heap* hp, DataType* array, int size);// 在堆中插入值为data的元素void InsertHeap(Heap* hp, DataType data);/...

2018-05-15 14:49:12 271

原创 数据结构之二叉搜索树

1. 二叉搜索树的概念     二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值,若它的右子树不为空,则它右子树上所有节点的值都大于根节点的值,它的左右子树也分别为二叉搜索树。2. 二叉搜索树实现---> 循环typedef int DataType;typedef struct BSTreeNode{ str...

2018-05-15 14:33:41 238

原创 C语言经典面试算法题之日本谋杀案

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。思路:  可以首先假设一个人是凶手,然后设定count,说对了count++,如果某种情况,count刚好为3,则假设正确。#include<stdio.h&...

2018-05-06 14:01:49 380

原创 C语言经典面试算法题之跳水比赛

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 解题步骤: 1.根据题目,在不筛选的情况下每个人都有五种可能,所以第一步先展现出这五种可能,常用for循环 2.所有可能情况列出后...

2018-05-06 13:45:50 1217 1

原创 利用main函数参数实现简单计算器

问题描述:使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“ - a”选项执行加法,“ - s”选项执行减法,“ - m”选项执行乘法,“ - d”选项执行除法,后面两个参数为操作数。例如:命令行参数输入:test.exe -a 1 2执行1 + 2输出3。解决方法:(直接看代码)#include <stdio.h>int Add(int a, int b...

2018-05-03 18:00:10 1927

原创 解读指针与数组

1 指针数组在C语言和C++语言中,数组元素全为指针的数组称为指针数组。一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。例如,一个一维指针数组的定义:int *ptr_array[10]。表示一个有十个元素的数组,数组每个元素为一个指向int型的指针。那么一个字符串数组如何来表示呢?我们可以用一个二维数组来表示,例如,char arr[5][10]={"abc" , "def"...

2018-05-03 17:37:40 233

原创 数据结构之队列

1. 队列的基本概念    只允许在一端进行插入数据操作(队尾),在另一端进行删除数据操作(队头)的特殊线性表。队列具有先进先出的特性。2. 队列存储结构顺序队列: 队头指针不动----要大量搬移元素(出队列时所有元素向前移动) 队头指针移动----存在假溢出 循环队列 循环队列如何解决队列空或者满?(三种方法...

2018-04-25 15:38:01 161

原创 C语言练手小代码-----seven(函数)

1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀代码:#include<stdio.h> 2 void printmul(int num){ 3 int i=0; 4 int j=0; 5 for(i=1;i<=num;i++){ 6 for(j=1;j<=i;j++){ 7 printf...

2018-04-20 13:29:08 377

原创 C语言练手小代码---Six

1. 写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1程序原型:int count_one_bits(unsigned int value){ // 返回 1的位数}#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>#include<Windows.h&...

2018-04-16 16:48:45 702

原创 C语言练手小代码------five

1 猜数字游戏功能:可以随机猜一个数字,直到猜对为止,虽然游戏有些无聊,但是可以锻炼我们使用二分查找的思想来快速查找数字。代码已经托管到码云上,点击打开链接。下边附上一张大概的游戏截图:2.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>#in...

2018-04-16 12:36:46 495 1

原创 C语言练手小代码——four

1 在屏幕上输出以下图案:      *     ***    *****   *******  ********* ************************ ***********  *********   *******    *****     ***       *#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>...

2018-04-15 22:11:22 274

原创 C语言练手小代码---three

1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>#include<Windows.h>//辗转相除法int main(){ int arr1[6] = { 1, 2 ,3, 4 ,5, 6 }; int arr2[6] = { 6, 6, 6, 6,...

2018-04-15 17:03:59 426

原创 C语言练手小代码---two

1. 给定两个整形变量的值,将两个值的内容进行交换。#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>#include<Windows.h>int main(){ int a = 10; int b = 20; int temp = 0; temp = a; a = b; b = temp; prin...

2018-04-15 16:32:28 299

原创 C语言练手小代码---one

1. 打印100~200 之间的素数#define _CRT_SECURE_NO_WARNINGS ch#include<stdio.h>#include<Windows.h>int main(){ int i = 0; int j = 0; int count = 0; for (i = 101; i <200; i+=2){//去除偶数 for...

2018-04-15 15:48:01 1915

原创 浅谈线程(thread)

什么是线程呢?线程和进程又有什么区别和联系呢?   线程是进程的一个执行分支,线程在进程内部运行(指的是线程在进程的虚拟地址空间内运行)。在Linux中,内核看到的线程也是PCB来表示,创建的新PCB和·原PCB共用相同的虚拟地址空间。Linux中用进程来模拟线程,这种线程也称为轻量级进程(LWP),统一了进程和线程的管理。一个进程可以并发多个线程,每个线程并行执行多个任务。线程的存在是为了并发执...

2018-04-09 14:41:31 295

转载 操作系统常见面试题

操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配的一个独立单元,而线程是CPU调度的基本单元          (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(同一地址空间,文件描述符表),一个进行至少包括一个线程。          (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程...

2018-04-08 20:24:19 175

原创 栈的应用之后缀表达式(逆波兰表达式)求值

要使用栈来实现逆波兰表达式的求值,就得先实现一个栈,并实现栈的一些基本操作:首先1. 实现栈的如下接口typedef char DataType;typedef struct Stack{ DataType array[MAX_SIZE]; int _top; // 表示有效元素个数 表示栈顶位置}Stack;//初始化栈void StackInit(Stack* s);// 入栈void ...

2018-04-08 16:42:56 411

原创 经典面试题之单链表实现约瑟夫环(杀人游戏)

算法原理约瑟夫环运作如下:1、一群人围在一起坐成[2] 环状(如:N)2、从某个编号开始报数(如:K)3、数到某个数(如:M)的时候,此人出列,下一个人重新报数4、一直循环,直到所有人出列[3] ,约瑟夫环结束下来我们用单链表来实现约瑟夫环: 解决思路:     首先单链表本身不是一个环,所以第一步要构环,第二步实现报数,第三步将报到某个数的节点删除,直到环中剩下一个节点或者没有节点为止,第三步解...

2018-04-02 18:52:37 1103

原创 链表经典面试题之从尾到头打印单链表

题目:  要求将一无头单链表的节点从尾到头打印出来。这是一道经典的面试题,今天我们来介绍它的五种解决方法。1 解决思路:    定义两个指针,一个指向链表头(pcur),一个指向每次要打印的节点(pprint)。每次让pcur来遍历,代码实现如下://从尾到头打印单链表void THprint2(PNode pHead){ if (NULL == pHead){ return; } P...

2018-04-02 18:13:58 364

原创 同步互斥问题(生产者消费者模型)

                       生产者-消费者问题    经典的同步互斥问题,也称作“有界缓冲区问题”。具体表现为:1.两个进程对同一个内存资源进行操作,一个是生产者,一个是消费者。2.生产者往共享内存资源填充数据,如果区域满,则等待消费者消费数据。3.消费者从共享内存资源取数据,如果区域空,则等待生产者填充数据。4.生产者的填充数据行为和消费者的消费数据行为不可在同一时间发生。  ...

2018-03-31 08:44:32 2837

原创 进程间通信之消息队列

首先来波基本语法1、创建消息队列消息队列是随着内核的存在而存在的,每个消息队列在系统范围内对应唯一的键值。要获得一个消息队列的描述符,只需要提供该消息队列的键值即可,该键值通常由函数ftok返回。key_t ftok(const char *pathname, int proj_id);ftok函数根据pathname和proj_id这两个参数生成唯一的键值。pathname:must refer...

2018-03-30 11:51:03 313

原创 无头单链表基本操作的实现

首先. 看一下我们要实现的基本功能;,实现以下链表的基本操作typedef int DataType;typedef struct Node{ struct Node* _pNext; DataType _data;}Node, *PNode;//////////////////不带头结点的单链表//////////////////////////////////////// .h// 链表初始化...

2018-03-27 17:42:45 807

原创 C语言打印乘法口诀表

想必乘法口诀表大家都知道长什么样子,今天我们来用c语言来实现打印乘法口诀表,话不多说,直接上代码: #include<stdio.h> 2 int main(){ 3 int num=0; 4 printf("please give a number: "); 5 scanf("%d",&num); ...

2018-03-25 13:48:19 1712

空空如也

空空如也

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

TA关注的人

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