自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++/QT面试题总结

10.C++中有成员函数和成员变量,成员变量(静态,非静态)成员函数(静态,非静态,虚函数)C++程序内存布局四大区域:全局数据区,代码区,栈区,堆区(程序可自由分配内存)。全局数据区:静态数据,全局数据,常量,代码区:类的成员函数和非成员函数代码存放在代码区,栈区:为运行函数而分配的局部变量,函数参数,返回值和返回地址,堆:自由分配的内存。所以同一个类创建多个对象,数据成员是各用各的,互不相通(静态成员变量是共享的),成员函数是共享的,多个对象共用一份代码,所有函数存放在代码区。为什么选择我们公司?

2023-11-21 21:55:35 118

原创 OpenSSL 编程入门

如果你急切的想构建一个简单的Web客户端和服务器对,这时你就需要使用SSL了..      SSL是一种保护基于TCP协议的网络应用最快而且最简单的的方法,如果你正在用C语言做开发,那么对于你来说,最好的选择可能就是使用OpenSSL了. OpenSSL是在Eric Young的SSLeay包的基础上对TSL/SSL的一个免费的执行(类似于BSD方式的License).然而, 不幸运的事情

2017-12-31 01:01:52 2758

原创 大数运算器

该项目主要是对超过计算机计算范围的数字进行加减乘除运算,若被操作数都没超过计算机表示范围,且计算机都能进行相关运算,则调用计算机进行相关运算,若超过运算范围的,则调用下面相关函数就可以进行相关运算。主要思想就是对超出存储范围的数字都以字符串的形式进行存储起来,然后模拟十进制的加减乘除运算。具体如何模拟运算则需要看下面的代码实现过程代码如下:头文件:BigData.h#pragma

2016-10-07 15:25:49 351

原创 文件压缩

文件压缩:               简介:实现对文本文件的压缩和解压               开发环境:Windows,Vs2013             主要技术:文件读写,堆,哈夫曼树,仿函数,位操作             项目描述:文件压缩过程:打开文本并逐个字节统计字符出现的次数,然后建立Huffman树,根据Huffman树可得到每个字符对应的Huff

2016-09-22 20:15:07 313

原创 TCP三次握手,四次挥手,NAT和代理服务器的原理

TCP三次握手:TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下为客户端连接服务端的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个

2016-07-24 17:46:56 1782

原创 AVLTree的实现

AVLTRee树AVLTree的性质:               1.左子树和右子树的高度之差的绝对值不超过1               2.树中的每个左子树和右子树都是AVL树                                      3.每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因

2016-07-05 13:57:23 464

原创 管道容量以及缓冲区的组成 (Linux)

一.管道容量:开始也不知道管道容量是多大,通过查找资料,其实很容易知道的,仅仅需要一条指令。命令:ulimit -a在终端输入该命令就会出现如下一表:管道容量 sizeof(pipe)= 512 bytes* 8 = 4kb二.管道缓冲区1、管道(pipe)管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两

2016-07-03 00:25:50 6639

原创 红黑树的实现

红黑树(RBT)的定义:它或者是一颗空树,或者是具有一下性质的二叉查找树:1.节点非红即黑。2.根节点是黑色。3.所有NULL结点称为叶子节点,且认为颜色为黑。4.所有红节点的子节点都为黑色。5.从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点。                                                 

2016-06-21 15:45:08 352

原创 结构体进程描述进程

一 进程有四大状态,分别为可运行状态,等待状态,暂停状态,僵死状态1)可运行状态处于这种状态的进程,要么正在运行、要么正准备运行。正在运行的进程就是当前进程 (由 current 宏 所指向的进程),而准备运行的进程只要得到CPU 就可以立即投入运行,CPU 是 这些进程唯一等待的系统资源。系统中有一个运行队列(run_queue),用来容纳所有处于可 运行状态的进程,调度程序执行

2016-06-18 19:40:07 539

原创 进度条和汇编指令的编译过程

一.进度条都是我们很熟悉的东西,比如下载东西时就会有进度条,打开虚拟机时也有进度条等等。但是进度条是如何用代码实现的?下面我们就来看看如何实现进度条代码如下:运行结果如下:二.汇编指令的编译过程通常在windows下,我们在VC或VS下进行程序的编辑与运行,往往不会想到程序到底是如何运行的,其实它并非我们想的那么简单,而是通过 预处理阶段,编译阶段汇编阶段,连接

2016-06-07 12:01:33 582

原创 Centos下vim、ctags的配置及基本用法

vi/vim 基本使用方法      vi编辑器是Unix及Linux系统下标准的编辑器,下面简单地介绍一下它的配置和一小部分指令。Vi也是Linux中最基本的文本编辑器,所以要想学好Linux的同学就要好好学习vi/vim了。下载安装 vim:yum -y install vim*Vim有三种模式:一般模式,编辑模式,命令模式,下面我就简单介绍一下

2016-06-05 11:26:10 2291

原创 linux下find命令和文件的三种时间

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。    linux下find命令的用法 find   -name          //根

2016-05-27 17:48:45 956

原创 常见的几种排序

快速排序      从数列中挑出一个元素,称为 “基准”(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。排序效果:650) this.width=650

2016-05-27 17:48:42 371

原创 稀疏矩阵的转置

稀疏矩阵:M*N的矩阵,矩阵中有效值的个数远小于无效值的个数,且这些数据的分布没有规律如下图所示:650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7F/F4/wKioL1cy2Eni9GIzAAAVBBaVJqE589.png" title="Image%20[1].png" alt="wKioL1cy2Eni9GIzAAAVBB

2016-05-27 17:48:39 503

原创 广义表的实现

广义表:非线性结构,是线性表的一种扩展,是有n个元素组成有限序列,是递归的,因为在表的描述中又得到了表,允许表中有表。650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7F/F7/wKiom1cy0cyR8BzjAAAleKfPNuM552.png" title="MVSKD$@0_J5SWRUE{_]IFDM.png" alt="

2016-05-27 17:48:36 319

原创 迷宫的实现

问题描述:实验心理学中的一个典型的问题,心理学家吧一只老鼠从一个无顶的大盒子的入口处赶进迷宫。迷宫设置很多隔壁,对前进方向形成了许多障碍,心理学家在迷宫的唯一出口处放置了一块奶酪,吸引老鼠仔迷宫中寻找通路以到达出口。  求解思想:回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达一个新点,否则试探下一

2016-05-27 17:48:33 461

原创 哈希表

哈希表:不同的Key值经过哈希函数Hash(Key)处理以后可能产生相同的值哈希地址,我们称这种情况为哈希冲突。所以用哈希冲突的开链法(哈希桶)进行处理,其结构如下:650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7F/EF/wKiom1cx1Imzr3sxAAAjmbzKkKc289.png" title="Image%20[2

2016-05-27 17:48:30 248

原创 线索化二叉树

#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;enum PointerTag { THREAD, LINK };     //枚举前言:为了遍历的方便,我们在二叉树中引入前驱和后序,这样就储存了相关信息。其结构如下:650) this.width=650;" src="http://s5.51cto.com/

2016-05-27 17:48:26 225

转载 盘吃蛇

/************************贪吃蛇***********************//**********************2016-3-7*********************/#include #include #include #include #include #include #include using namespace std;

2016-05-27 17:48:23 497

原创 双向链表中基本函数的实现

#includeusing namespace std;typedef int DateType;struct ListNode     { DateType _date;       ListNode* _next;    //前驱指针 ListNode* _prev;    //后驱指针 ListNode(DateType x)  //对节点进行初始化 :_date(x)

2016-05-27 17:48:20 356

原创 求带环的单链表入口位置处的节点

题目:如本文题目,给定一个带环的单链表,给出一个算法求链表环的入口位置处的节点。解析:这题的解决步骤如下:1.设置一个快指针fast和一个慢指针slow,它们同时从链表头开始往后遍历,快指针每次移动两个位置,慢指针每次移动一个位置2.当快指针和慢指针相遇时,将慢指针重新指向链表头3.快指针和慢指针此时在同时移动,两个指针都一次移动一个位置,当两个指针再次相遇时,指针所指的节点即入

2016-05-27 17:48:17 294

原创 关于深拷贝和浅拷贝

深拷贝和浅拷贝的认识:浅拷贝:就是被拷贝对象和拷贝对象公用同一块空间,即两个对象的指针指向同一块空间。深拷贝:就是被拷贝对象和拷贝对象有各自的空间,拷贝对象将新开辟一块空间,再将被拷贝对象拷贝下来。下面是关于深拷贝和浅拷贝的实现class String{public://传统写法String& operator=(const String& s)   //运算符的重载   {

2016-05-27 17:48:14 226

原创 Linux 常用命令集合

1. 常用命令ls  显示当前目录下的文件和文件夹;     -ltr 按时间顺序显示文件和文件夹的详细信息,不带参数的时候 只显示文件夹和文件。vi  打开文件的内容tar -cvf file.tar file  压缩成tar包tar -xvf file.tar file  解压缩tar包,后面的file可以不用写,解压成默认的就是file。cp 复制 cp file.xml fil

2016-05-27 17:48:11 241

原创 求一个数的阶乘

用while循环进行求解,代码如下:int ContinuousMultiplication(int num){  int tmp = 1;    while (num)  {    tmp= tmp*num;    num--;   }     return tmp;}int main(){  int i = 0,allnum=0;  for (i = 1;

2016-05-27 17:48:08 391

原创 将一个数进行拆分,并且正序输出

int main(){  int num = 0;  cout << "请输入一个数" << endl;  cin >> num;  while (num)             //普通方法只能倒序输出 {   cout << num % 10 << " ";   num /= 10; }cout<< endl;system("pause");return 0;

2016-05-27 17:48:05 1009

原创 日期计算器

#define _CRT_SECURE_NO_WARNINGS#include#includeusing namespace std;class Date{public:Date(int _year, int _month, int _day);  //构造函数void ShowDate(){cout << year << "-" << month << "-" << day 

2016-05-27 17:48:02 244

原创 运算符的重载

#define _CRT_SECURE_NO_WARNINGS#includeusing namespace std;class Complex{public:Complex(double _real, double _image);    //构造函数Complex(const Complex & p);           //拷贝构造函数Complex operator+(c

2016-05-27 17:47:59 198

原创 顺序表

#define _CRT_SECURE_NO_WARNINGS#include#include#include#define MAX_SIZE 5typedef int DataType;typedef struct SeqList{ DataType array[MAX_SIZE];   size_t size;} SeqList; 打印顺序表void PrintfSe

2016-05-27 17:47:56 222

原创 单链表的简单应用

1.在非尾节点后插入一个节点void Insert(SListNode *&pos, DateType x)   //在非尾节点后插入一个节点{if (pos == NULL){return;}SListNode *newNode = _BuyNode(pos->data);newNode->next = pos->next;pos->data = x;pos->next 

2016-05-27 17:47:53 958

原创 实现一些简单的单链表

以下都是对单链表一些简单的应用和对一些简单问题的解决方案。代码如下:#define _CRT_SECURE_NO_WARNINGS  //vs2013中需要加的一个宏!#include#include#includetypedef int DateType;typedef struct SListNode{DateType data;struct SListNode *nex

2016-05-27 17:47:50 249

原创 通信录

由于通信录代码模块较复杂,所以进行了分模块处理。总共分了三个模块,分别是头文件模块,函数模块,主函数模块。代码如下:头文件模块:contact.h#ifndef __CONTACT_H__#define __CONTACT_H__#define MAX_NAME   20#define MAX_SEX 3#define MAX_TELE 12#define MAX_ADDR 20

2016-05-27 17:47:47 314

原创 设计一个判断回文数的函数

回文数:回文数也是一个数字,数字的特点是正反序是同一个数字,例如:12321,3443,56765....。代码如下:bool JudgeIsPalindromicNumber(int num){int arr[20] = { 0 };int i = 0,j=0,count=0;while (num){arr[i] = num % 10;num = num / 10;coun

2016-05-27 17:47:44 1397

原创 可变参数列表求任意多个数的平均值

代码如下:#include#includeusing namespace std;float test(int n_values, ...){va_list va_arg;int count;float sum = 0;va_start(va_arg, n_values);{for (count = 0; count < n_values; count+=1){sum

2016-05-27 17:47:42 324

转载 实现杨辉三角

#include using namespace std;#define N 14第一种方法:int main(){int i, j, k, n = 0, a[N][N]; /*定义二维数组a[14][14]*/while (n = 13){                   /*控制打印的行数不要太大,过大会造成显示不规范*/printf("请输入要打印的行数:");sc

2016-05-27 17:47:39 230

原创 动态开辟二维数组

#includeint main(){  int **arr;               //定义一个二级指针,用于接收一维数组地址  int i = 0, j = 0;  arr = (int **)malloc(sizeof(int*)* 3);       //arr将会接收连续动态开辟3个为int*类型的空间首地址 for (i = 0; i < 3; i++)   { 

2016-05-27 17:47:36 237

原创 实现简易计算器

该计算器可以用于“加减乘除” 运算:代码如下:#include #include enum OP       //枚举各个功能{    EXIT,    ADD,    SUB,    MUL,   DIV};int _add(int a, int b)       //实现加法函数{   return a + b;}int _sub(int a, int b)  

2016-05-27 17:47:33 468

原创 在二维数组中查找杨氏矩阵

在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。例如:二维数组1 2 34 5 67 8 9查找数字7. 方法一:对整个数组进行便利,直到求出要找的数#include#includeint main(){         int x = 0;         i

2016-05-27 17:47:30 270

原创 实现部分库函数

1.模拟实现strncat//与strcat无异,只是追加的块大小不一样,strncat只是向后追加n个字节的内容char *my_strncat(char * dst, const char *src,int count){char *p = dst;while (*dst){dst++;}while (count--)       // 用数count控制循环的次数*dst++ = *src+

2016-05-27 17:47:27 246

原创 使用冒泡排序多个字符串

#include int main(){ char *arr[] = {"aaaa","cccc","dddd","bbbb"};//指针数组 int size = sizeof(arr) / sizeof(arr[0]); int i = 0; int j = 0; for (i = 0; i < size - 1; i++) {  for (j = 0; j < size -

2016-05-27 17:47:24 274

原创 一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出

#includeint main(){ void function(int * str, int size, int *p1, int *p2); int i = 0; int num1 = 0, num2 = 0; int arr[10] = {0}; int len = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < len; i++

2016-05-27 17:47:21 478

vim练习及攻略

学习vim开发的必要文档,可以跟好的学习相关知识,同时也有利于后台开发的学习 以及在Linux下 熟练使用

2017-12-31

空空如也

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

TA关注的人

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