- 博客(16)
- 收藏
- 关注
原创 算法,找出落单的两个数
有一组整型数,其中除了2个数字以外的其它的数字都是俩俩成对出现的,编写程序找出这2个不成对出现的数字函数原型:void search_diff(int array[],int len,int* pa,int* pb);示例:void search_diff(int array[],int len,int* pa,int* pb);int a=0;int b=0;int array[]...
2019-08-11 18:06:53
392
转载 C++实现轻量级极简httpserver和httpclient(转)
一般来说,C++的项目多是偏底层,不怎么需要跟http打交道,但有时候又需要在C++后端项目中加入一些简单 http接口,比如游戏运营服务器,金融交易监控服务等。但是传统的实现方法比如采用libcurl,asio等较为重型的框架来做有没有必要,因此,这里采用mongoose这个库来实现基本的httpserver和httpclient功能,非常简单,包含一个h文件,一个cpp文件到工程中就行了,...
2019-05-26 16:06:11
1101
原创 linux拆分日志
由于后端还没有做日志拆分的功能,有时日志文件会变得很大,用vim或者拷贝到windows上再打开,都会很慢或者卡死,因此就有必要把日志文件拆分成相对小一些的多个文件,有两种方法:1.如果日志格式是2019/05/09 19:25:55,后面再跟着具体日志数据就可以用sed命令,sed -n '/2019/05/09 09:25:54/,/2019/05/09 20:35:54/'p ...
2019-05-12 14:27:48
1127
转载 Linux文件描述符到底是什么?
Linux 中一切皆文件,比如 C++ 源文件、视频文件、Shell脚本、可执行文件等,就连键盘、显示器、鼠标等硬件设备也都是文件。一个 Linux 进程可以打开成百上千个文件,为了表示和区分已经打开的文件,Linux 会给每个文件分配一个编号(一个 ID),这个编号就是一个整数,被称为文件描述符(File Descriptor)。这只是一个形象的比喻,为了让读者容易理解我才这么说。如果你也仅仅理...
2019-04-21 15:19:19
6258
5
原创 数据库(sql server)使用及其中遇到的问题
由于项目需要,需要在windows平台上连接sql server,于是就学了一下,在其中遇到了一些问题,现在自己总结一下.总结如下:首先,我们需要连接数据库:#include "stdafx.h"#include <windows.h> #include <sqltypes.h> #include <sql.h> #include &l...
2019-03-24 22:00:51
1366
原创 C++中的动态类型识别--------狄泰软件学院
1.在面向对象中可能出现下面的情况基类指针指向子类对象基类引用成为子类对象的别名Base* b = new Derived();Base& r = *b;2.动态类型是相对于静态类型而言静态类型:变量(对象)自身的类型动态类型:指针(引用)所指的对象实际类型基类指针是否可以强制转换为子类指针取决于动态类型比如在继承体系中:Derived继承于Base。期望的类型是...
2019-02-17 17:59:09
467
原创 TCP传输层中的options(linux)
TCP在进行建立tcp三次握手连接时,客户端在发送SYN包时,会带有一些选项的信息,服务器在接收到SYN包时,会调用tcp_parse_options函数进行解析,下面是一些选项的概略图:c/* Look for tcp options. Normally only called on SYN and SYNACK packets. * But, this can also be cal...
2018-11-25 09:40:49
4259
原创 linux消息队列介绍
消息队列就是一个消息的链表,而一条消息则可看作一个记录,具有特定的格式,进程可以向其中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。相当于生产者和消费者。int msgget(key_t key,int msgflg)函数功能:打开或创建消息队列返回值:成功:返回消息队列ID,失败返回-1参数:key是一个键值,msgflg是一个打开标志,IPC_CREAT:...
2018-11-17 23:44:38
558
原创 linux共享内存(shared memory)使用介绍
共享内存是IPC机制中的一种,顾名思义,它允许两个不相关的进程访问同一段内存,这也是一种传递数据的有效方式。通过man命令可以查看各个函数的详细说明:Int shmget(key_t key,size_t size,int shmflg);功能:创建或获取共享内存,并返回其对应的描述符id返回值:成功,返回创建或获取对应共享内存的描述符,失败返回-1参数说明:key:共享内存的...
2018-11-10 11:07:42
10923
1
原创 malloc,free和new delete的区别
1.malloc和free是库函数,以字节为单位申请内存2.new和delete是关键字,以类型为单位申请内存3.malloc和free单纯的对内存进行申请与释放4.对于基本类型new关键字会对内存进行初始化5.对于类类型new和delete还负责构造函数和析构函数的调用class Test{private: int i;public: Test()...
2018-11-07 19:08:15
570
原创 C++中构造和析构介绍
C++中构造和析构介绍:1.C++中的类可以定义与类名相同的特殊的成员函数,2.与类名相同的成员函数叫做构造函数3.构造函数在定义时可以有参数,但是没有任何返回类型的声明4.类中的成员函数可以和普通函数一样进行重载,遵守相同的重载规则。两个特殊的构造函数:分别是无参构造函数和拷贝构造函数1.当类中没有定义任何一个构造函数,c++编译器会提供无参构造函数和拷贝构造函数2....
2018-10-28 10:57:32
195
原创 如何实现ssl在握手阶段,可以精确控制选择何种算法进行协商
加密原理先暂且不详说,这次只是把如何实现这个控制加载何种算法思路大致说一下,大家都知道,客户端和服务端在进行正真的应用数据通信之前,需要建立tcp三次握手连接之后,还要进行握手协商,客户端会把自己支持的算法套件,产生的随机数,还有支持的版本号,发给对端,这个阶段称为hello阶段,,在这个阶段,我们就可以控制选择把何种支持的算法套件发给服务器,大致如下:算法都有一个唯一的ID,这是可...
2018-10-14 16:01:50
1054
2
转载 唐老大
在c语言中,有两个容易被忽略的操作符,分别是#和##。先介绍#符号的作用,下次再介绍##号的作用。1.#运算符用于在预处理期将宏参数转换为字符串2.#的转换的作用是在预处理期完成的,因此只在宏定义中有效3.编译器并不知道#的转换作用下面开始举例:#include #define STRING(x) #xint main(){ printf("%
2017-07-22 12:10:23
285
原创 linux密码故障解决
linux密码故障解决相信很多人都有出差后,忘记自己lroot密码的情况,现在有一种破解root密码的方法。破解步骤:1.在系统启动时进入grub选项菜单2.在grub选项菜单按e进入编辑模式3.编辑kernel那行,添加 /init4.按b重启5.系统启动后,我们需要将root的密码设置为空密码,由于密码信息都放在目录/etc/passwd/中,因此我们用命令vim
2017-04-05 17:22:19
802
转载 指针阅读技巧解析
指针阅读技巧解析右左法则: 1.从最里层的圆括号中未定义的标示符看起 2. 首先往右看,再往左看, 3.遇到圆括号或方括号时可以确定部分类型,并调转方向 4.重复2,3步骤,直到阅读结束。举例: int(*p)(int ); 首先我们看到的未定义的标示符是p,在往右看,是个圆括号,不能确定类型,再往
2017-04-03 22:26:08
297
转载 智能指针
智能指针的意义: 现代C++开发库中的最重要的类模板之一 C++中自动内存管理的主要手段 能够在很大程度上避免内存相关的问题。STL中的智能指针auto_ptr: 生命周期结束时,销毁指向的内存空间 不能指向堆数组,只能指向堆对象或变量
2017-04-01 16:25:25
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人