- 博客(77)
- 资源 (1)
- 收藏
- 关注
原创 C++/QT面试题总结
10.C++中有成员函数和成员变量,成员变量(静态,非静态)成员函数(静态,非静态,虚函数)C++程序内存布局四大区域:全局数据区,代码区,栈区,堆区(程序可自由分配内存)。全局数据区:静态数据,全局数据,常量,代码区:类的成员函数和非成员函数代码存放在代码区,栈区:为运行函数而分配的局部变量,函数参数,返回值和返回地址,堆:自由分配的内存。所以同一个类创建多个对象,数据成员是各用各的,互不相通(静态成员变量是共享的),成员函数是共享的,多个对象共用一份代码,所有函数存放在代码区。为什么选择我们公司?
2023-11-21 21:55:35
367
原创 OpenSSL 编程入门
如果你急切的想构建一个简单的Web客户端和服务器对,这时你就需要使用SSL了.. SSL是一种保护基于TCP协议的网络应用最快而且最简单的的方法,如果你正在用C语言做开发,那么对于你来说,最好的选择可能就是使用OpenSSL了. OpenSSL是在Eric Young的SSLeay包的基础上对TSL/SSL的一个免费的执行(类似于BSD方式的License).然而, 不幸运的事情
2017-12-31 01:01:52
2831
原创 大数运算器
该项目主要是对超过计算机计算范围的数字进行加减乘除运算,若被操作数都没超过计算机表示范围,且计算机都能进行相关运算,则调用计算机进行相关运算,若超过运算范围的,则调用下面相关函数就可以进行相关运算。主要思想就是对超出存储范围的数字都以字符串的形式进行存储起来,然后模拟十进制的加减乘除运算。具体如何模拟运算则需要看下面的代码实现过程代码如下:头文件:BigData.h#pragma
2016-10-07 15:25:49
407
原创 文件压缩
文件压缩: 简介:实现对文本文件的压缩和解压 开发环境:Windows,Vs2013 主要技术:文件读写,堆,哈夫曼树,仿函数,位操作 项目描述:文件压缩过程:打开文本并逐个字节统计字符出现的次数,然后建立Huffman树,根据Huffman树可得到每个字符对应的Huff
2016-09-22 20:15:07
358
原创 TCP三次握手,四次挥手,NAT和代理服务器的原理
TCP三次握手:TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下为客户端连接服务端的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个
2016-07-24 17:46:56
1839
原创 AVLTree的实现
AVLTRee树AVLTree的性质: 1.左子树和右子树的高度之差的绝对值不超过1 2.树中的每个左子树和右子树都是AVL树 3.每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因
2016-07-05 13:57:23
496
原创 管道容量以及缓冲区的组成 (Linux)
一.管道容量:开始也不知道管道容量是多大,通过查找资料,其实很容易知道的,仅仅需要一条指令。命令:ulimit -a在终端输入该命令就会出现如下一表:管道容量 sizeof(pipe)= 512 bytes* 8 = 4kb二.管道缓冲区1、管道(pipe)管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两
2016-07-03 00:25:50
6852
原创 红黑树的实现
红黑树(RBT)的定义:它或者是一颗空树,或者是具有一下性质的二叉查找树:1.节点非红即黑。2.根节点是黑色。3.所有NULL结点称为叶子节点,且认为颜色为黑。4.所有红节点的子节点都为黑色。5.从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点。
2016-06-21 15:45:08
379
原创 结构体进程描述进程
一 进程有四大状态,分别为可运行状态,等待状态,暂停状态,僵死状态1)可运行状态处于这种状态的进程,要么正在运行、要么正准备运行。正在运行的进程就是当前进程 (由 current 宏 所指向的进程),而准备运行的进程只要得到CPU 就可以立即投入运行,CPU 是 这些进程唯一等待的系统资源。系统中有一个运行队列(run_queue),用来容纳所有处于可 运行状态的进程,调度程序执行
2016-06-18 19:40:07
596
原创 进度条和汇编指令的编译过程
一.进度条都是我们很熟悉的东西,比如下载东西时就会有进度条,打开虚拟机时也有进度条等等。但是进度条是如何用代码实现的?下面我们就来看看如何实现进度条代码如下:运行结果如下:二.汇编指令的编译过程通常在windows下,我们在VC或VS下进行程序的编辑与运行,往往不会想到程序到底是如何运行的,其实它并非我们想的那么简单,而是通过 预处理阶段,编译阶段汇编阶段,连接
2016-06-07 12:01:33
630
原创 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
2368
原创 linux下find命令和文件的三种时间
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 linux下find命令的用法 find -name //根
2016-05-27 17:48:45
1091
原创 常见的几种排序
快速排序 从数列中挑出一个元素,称为 “基准”(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。排序效果:650) this.width=650
2016-05-27 17:48:42
398
原创 稀疏矩阵的转置
稀疏矩阵: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
532
原创 广义表的实现
广义表:非线性结构,是线性表的一种扩展,是有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
347
原创 迷宫的实现
问题描述:实验心理学中的一个典型的问题,心理学家吧一只老鼠从一个无顶的大盒子的入口处赶进迷宫。迷宫设置很多隔壁,对前进方向形成了许多障碍,心理学家在迷宫的唯一出口处放置了一块奶酪,吸引老鼠仔迷宫中寻找通路以到达出口。 求解思想:回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达一个新点,否则试探下一
2016-05-27 17:48:33
505
原创 哈希表
哈希表:不同的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
271
原创 线索化二叉树
#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
253
转载 盘吃蛇
/************************贪吃蛇***********************//**********************2016-3-7*********************/#include #include #include #include #include #include #include using namespace std;
2016-05-27 17:48:23
526
原创 双向链表中基本函数的实现
#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
395
原创 求带环的单链表入口位置处的节点
题目:如本文题目,给定一个带环的单链表,给出一个算法求链表环的入口位置处的节点。解析:这题的解决步骤如下:1.设置一个快指针fast和一个慢指针slow,它们同时从链表头开始往后遍历,快指针每次移动两个位置,慢指针每次移动一个位置2.当快指针和慢指针相遇时,将慢指针重新指向链表头3.快指针和慢指针此时在同时移动,两个指针都一次移动一个位置,当两个指针再次相遇时,指针所指的节点即入
2016-05-27 17:48:17
321
原创 关于深拷贝和浅拷贝
深拷贝和浅拷贝的认识:浅拷贝:就是被拷贝对象和拷贝对象公用同一块空间,即两个对象的指针指向同一块空间。深拷贝:就是被拷贝对象和拷贝对象有各自的空间,拷贝对象将新开辟一块空间,再将被拷贝对象拷贝下来。下面是关于深拷贝和浅拷贝的实现class String{public://传统写法String& operator=(const String& s) //运算符的重载 {
2016-05-27 17:48:14
254
原创 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
264
原创 求一个数的阶乘
用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
429
原创 将一个数进行拆分,并且正序输出
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
1043
原创 日期计算器
#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
283
原创 运算符的重载
#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
224
原创 顺序表
#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
245
原创 单链表的简单应用
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
994
原创 实现一些简单的单链表
以下都是对单链表一些简单的应用和对一些简单问题的解决方案。代码如下:#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
270
原创 通信录
由于通信录代码模块较复杂,所以进行了分模块处理。总共分了三个模块,分别是头文件模块,函数模块,主函数模块。代码如下:头文件模块: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
347
原创 设计一个判断回文数的函数
回文数:回文数也是一个数字,数字的特点是正反序是同一个数字,例如: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
1425
原创 可变参数列表求任意多个数的平均值
代码如下:#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
361
转载 实现杨辉三角
#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
260
原创 动态开辟二维数组
#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
265
原创 实现简易计算器
该计算器可以用于“加减乘除” 运算:代码如下:#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
510
原创 在二维数组中查找杨氏矩阵
在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。例如:二维数组1 2 34 5 67 8 9查找数字7. 方法一:对整个数组进行便利,直到求出要找的数#include#includeint main(){ int x = 0; i
2016-05-27 17:47:30
310
原创 实现部分库函数
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
268
原创 使用冒泡排序多个字符串
#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
312
原创 一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出
#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
512
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人