面试
蜗牛love天空
探索知识,提升技术。把所学的知识,融会贯通,实现学以致用。
展开
-
C++类继承的内存布局
类继承的内存布局原创 2024-05-30 08:32:37 · 179 阅读 · 0 评论 -
二分查找(折半查找)
二分查找,折半查找原创 2024-05-28 08:16:23 · 265 阅读 · 0 评论 -
vector的reverse和resize区别
vector中reserve和resize区别原创 2024-05-28 03:06:46 · 375 阅读 · 0 评论 -
delete原理
delete原创 2024-05-28 02:38:44 · 333 阅读 · 0 评论 -
const指针,星号判断方法
const指针,星号判断方法原创 2024-05-28 02:09:54 · 300 阅读 · 0 评论 -
windows内存管理
内存管理、文件映射原创 2024-05-28 01:42:25 · 1142 阅读 · 0 评论 -
【复习】互斥锁
【代码】【复习】互斥锁。原创 2024-03-05 21:18:04 · 386 阅读 · 0 评论 -
【复习】C++11特性
作用:堆内存指针+引用计数(控制器,由默认的释放规则,可以自定义),用于堆内存管理,当对象离开生命周期时,引用计数降至为0,释放堆内存。原创 2024-03-06 01:29:24 · 377 阅读 · 0 评论 -
【复习】排序算法
排序算法原创 2024-03-05 18:51:47 · 373 阅读 · 0 评论 -
【基础】C++语法
C++语法原创 2024-02-29 18:05:56 · 864 阅读 · 0 评论 -
折半查找(二分查找)
转载地址:添加链接描述代码实现:#include <stdio.h>#include <stdlib.h>#define keyType inttypedef struct { keyType key; // 查找表中每个数据元素的值 // 如果需要,还可以添加其他属性}ElemType;typedef struct{ ElemType *elem; // 存放查找表中数据元素的数组 int length; // 记录查找表转载 2021-03-09 14:30:49 · 501 阅读 · 0 评论 -
sql常用语句
转载地址:添加链接描述转载 2021-03-08 09:33:01 · 200 阅读 · 0 评论 -
冒泡排序
转载冒泡排序#include <stdio.h> #define ARR_LEN 255 /*数组长度上限*/#define elemType int /*元素类型*/ /* 冒泡排序 *//* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 *//* 2. 对所有元素均重复以上步骤,直至最后一个元素 *//* elemType arr[]: 排序目标数组; int len: 元素个数 */void bubbleSort (elemType arr[], int转载 2021-03-07 22:59:36 · 124 阅读 · 0 评论 -
工厂模式
工厂模式转载 2021-03-07 22:50:05 · 108 阅读 · 0 评论 -
TCP协议学习1
1、ISO七层网络模型原创 2020-12-08 13:44:14 · 194 阅读 · 0 评论 -
C++虚函数表学习
学习网站C语言中文网:C++虚函数表(多态的实现原理)细节,请参考学习网站原理代码#include <iostream>using namespace std;class A{public: int i; virtual void func() {} virtual void func2() {}};class B : public A{ int j; void func() {}};int main(){ cout原创 2020-12-07 13:10:40 · 126 阅读 · 1 评论 -
C++11新特性学习1
学习网站C语言中文网:C++11教程:C++11新特性大汇总详细特性,请参考学习网站。原创 2020-12-07 12:00:56 · 212 阅读 · 0 评论 -
网络编程学习5:三次握手和四次挥手
一、 三次握手和四次挥手状态图二、报文图注意:确认号ack等于对端的序号seq加1。即ack = seq(对端)+ 1;原创 2020-12-06 20:02:49 · 134 阅读 · 0 评论 -
c++实现快速排序
快速排序概念:从数据序列中选一个元素做中轴线。比它大的元素,都放在它的右边。比它小的元素,都放在它的左边。在对左右两边,做同样处理,即可。代码:#include <iostream>int g_arr[10] = {3,1,5,4,2,7,6,9,8,10};void QuickSort(int arr[], int left, int right){ ...原创 2019-10-24 15:02:10 · 273 阅读 · 0 评论 -
VC++学习3:MFC机制
1 MFC消息映射机制/* 在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。 在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有 消息及其对应的消息处理函数的地址都列在这个类所对应的静态表中。当有消息需要处理 时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。 如果能处理该消息,则同样依照静态表能很容易找到并调用对应的消息处理函数。 */...原创 2020-05-22 16:37:37 · 226 阅读 · 0 评论 -
VC++学习2:C++类与对象
1 类的继承及类中成员的访问特性/* 在类中还有另外一种成员访问权限修饰符:protected。下面是public, protected, private 三种访问权限的比较: public定义的成员可以在任何地方被访问。 protected定义的成员只能在该类及其子类中访问。 private定义的成员只能在该类自身中访问。 对于继承,也可以有public、protected或private这三种访问权限去继承其基类中的成员。 如果在定义派生类时没有指定如何继承访问权限,则默认为privat原创 2020-05-22 11:37:14 · 309 阅读 · 0 评论 -
VC++学习1:windows内部运行机制
1 句柄/* 窗口是通过窗口句柄(HWND)标识的,我们要对某个窗口进行操作,首先就要得到这个窗口的句柄。 在windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分 配内存,并返回标识这些资源的标识号,即句柄。 */...原创 2020-05-21 10:19:25 · 202 阅读 · 0 评论 -
c++的自增操作符:i++和++i
自增操作符i++是先计算表达式的值,然后i再增加1。++i是i增加1,然后再计算表达式的值。1 实现i++// 使用引用传递,返回的是未修改的val值,实质的val值已经自增。int operator++(int &val){ int temp = val; val += 1; return temp;}++iint operator++(int val){ val += 1; return val;}2 应用// 用erase删除map中的元素#incl原创 2020-07-27 11:01:26 · 360 阅读 · 0 评论 -
STL学习2:map
mapmap本质是一类关联式容器,属于模板类关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。map内部数据的组织,map内部自建一颗红黑树(一种严格意义上的平衡二叉树),这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。map接口1、插入用insert函数插入pair数据、用insert函数插入value_ty原创 2020-07-27 10:26:48 · 157 阅读 · 0 评论 -
STL学习1:vector
vectorSTL封装了许多复杂的数据结构算法和大量常用的数据结构操作。vector封装数组,list封装链表,map和set封装二叉树(红黑树)vector是线性容器,它的元素严格按照线性序列排列,和动态数组很相似。和数组类似的是,它的元素存储在一块连续的存储空间中,这也意味着不仅可使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问。和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间。STL中vector和list的区别...原创 2020-07-25 18:54:12 · 211 阅读 · 0 评论 -
设计模式学习2:单例模式
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。1 设计Singletonstatic Instance() SingletonOperation() GetSingletonData()static unique Instance singletonData2 实现class Singleton{public: static Singleton * Instance();protected: Singleton();private:原创 2020-07-25 16:07:14 · 159 阅读 · 0 评论 -
设计模式学习1:观察者模式
观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所以依赖于它的对象都得到通知并被自动更新。1 设计Subject(目标)-目标知道它的观察者。可以有任意多个观察者观察同一个目标。-提供注册和删除观察者对象的接口Observer(观察者)-为那些在目标发生改变时需获得通知的对象定义一个更新接口2 实现class Subject;class Observer{public: virtual ~Observer(); virtual void Update(Su原创 2020-07-25 10:32:43 · 133 阅读 · 0 评论 -
网络编程学习4:TCP协议
TCP协议网络通信协议中最重要的就是TCP/IP协议1 网络模型ISO七层网络模型层数名字主要功能对应的典型设备传输单位7应用层提供应用程序间通信计算机:应用程序,如FTP、SMTP程序级数据6表示层处理数据格式、数据加密等计算机:编码方式,如图像编码、URL字段传输编码程序级数据5会话层建立、维护和管理会话计算机:建立会话,如session认证、断点续传程序级数据4传输层建立主机端到端连接计算机:进程和端口数据段(segm原创 2020-07-24 18:36:46 · 233 阅读 · 0 评论 -
字符串接口学习:strcat、strcmp、strcpy
字符串接口:strcat、strcmp、strcpystrcat:字符串拼接char *strcat(char *dest, const char *src);strcmp:字符串比较int strcmp(const char *s1,const char *s2);strcpy:字符串拷贝char *strcpy(char* dest, const char *src);1 strcatchar * strcat(char * dest, char * src){ assert(原创 2020-07-24 09:16:29 · 220 阅读 · 1 评论 -
网络编程学习3:IOCP模型
IOCP模型IOCP(I/O completion port,I/O完成端口)是伸缩性最好的一种I/O模型。I/O完成端口是应用程序使用线程池处理异步I/O请求的一种机制。处理多个并发异步I/O请求时,使用I/O完成端口比在I/O请求时创建线程更快更有效。I/O完成端口最初的设计时应用程序发出一些异步I/O请求,当这些请求完成时,设备驱动将把这些工作项目排序到完成端口,这样,在完成端口上等待的线程池便可以处理这些完成I/O。完成端口实际上时一个Windows I/O结构,它可以接收多个对象的句柄,如原创 2020-07-23 20:31:26 · 370 阅读 · 0 评论 -
网络编程学习2:select模型
选择(select)模型select模型是一个广泛在Winsock中使用的I/O模型。称它为select模型,是因为它主要是使用select函数来管理I/O的。1 接口// select函数可以确定一个或者多个套接字的状态。如果套接字上没有网络事件发生,便进入等待状态,以便执行同步I/O。int select( int nfds, // 忽略,仅是为了与Berkeley套接字兼容 fd_set * readfds, // 指向一个套接字集合,用来检查其可读性 fd_se原创 2020-07-23 18:56:27 · 291 阅读 · 0 评论 -
网络编程学习1:IO阻塞和非阻塞
套接字模式套接字模式简单的决定了操作套接字时,Winsock函数是如何运转的。Winsock以两种模式执行I/O操作:阻塞和非阻塞。在阻塞模式下,执行I/O的Winsock调用(如send和recv)一直到操作完成才返回。在非阻塞模式下,Winsock函数会立即返回。阻塞模式套接字创建时,默认工作在阻塞模式下。例如,对recv函数的调用会使程序进入等待状态,直到接收到数据才返回。非阻塞模式应用程序调用ioctlsocket函数显式地让套接字工作在非阻塞模式下,如下代码所示。u_long ul =原创 2020-07-23 18:08:03 · 243 阅读 · 0 评论 -
VC++学习6:进程通信
一 剪贴板1 函数接口// 打开剪贴板BOOL OpenClipboard( HWND hWndNewOwner); // 清空剪贴板BOOL EmptyClipboard(void);// 分配内存对象int GlobalAlloc(int flags, int size);// 加锁内存对象int GlobalLock(int handle);// 解锁内存对象bool globalUnLock(int handle);// 关闭剪贴板BOOL CloseClipboar原创 2020-05-29 10:39:07 · 269 阅读 · 0 评论 -
VC++学习5:网络编程
一 TCP网络通信1 接口函数// 加载套接字哭int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);// 创建套接字SOCKET socket(int af, int type, int protocol);// 绑定int bind(SOCKET s, const struct SOCKADDR * name, int namelen);// 将指定的套接字设置为监听模式int listen(SOCKET s, i原创 2020-05-27 17:34:10 · 279 阅读 · 0 评论 -
VC++学习4:线程同步
一 互斥体1 接口函数// 创建互斥体对象HANDLE CreateMutext( LPSECURIT_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName);// 获取互斥体对象的所有权DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);// 释放互斥体对象BOOL ReleaseMutex(HANDLE hMutex);2 实例原创 2020-05-27 16:46:24 · 339 阅读 · 0 评论