基础代码
Coder.Z
这个作者很懒,什么都没留下…
展开
-
最简单的文件加解密算法
参考网帖。调用一次为加密,对已经加密的文件再调用一次为解密。#include #include bool EncodeDecodeFile(const char* sfilesrc, const char* sfiledst){ if(NULL == sfilesrc || NULL == sfiledst) { return false; } bool ret =转载 2016-09-13 11:51:04 · 1152 阅读 · 0 评论 -
tcp socket状态
温故而知新11个状态:图是自己画的,这样可以更加加深记忆。如果通信双方几乎同时主动关闭连接,会出现发送FIN后没有先收到对方的ACK而是对方的FIN,这时连接状态会变成CLOSING,同时会发送对应的ACK,收到对方ACK后变成TIME_WAIT,2MSL超时后变成CLOSED状态。copy的一张更全的图,包括各种异常关闭:原创 2016-11-23 13:06:35 · 463 阅读 · 0 评论 -
记一道关于链表逆序的面试题
上周末参加了一次面试,国内知名互联网企业,面试全程也是相当紧张。 在第二轮当中,面试官让手写一个“最简单的”链表反转函数。 在以前的面试中我也遇到面试官要线程写链表反转,我一般都会写循环迭代的方式,因为这题主要是考察指针使用的灵活程度,代码并不复杂,两个指针一次遍历并反转next指针指向就好了。 并且据我的经验,如果写成递归形式,那么最终的执行过程中不断调用调用有可能原创 2017-12-28 13:38:11 · 281 阅读 · 0 评论 -
c++11通过变参模板实现特殊的数据结构和算法
C++11中增加了变长模板参数,可以替代c语言中的...参数(比如printf系列函数)。c语言中的...参数使用va_list来解析,在运行时通过对char*指针的强转达到使用参数的目的,所以当传参类型和实际处理...参数的函数代码中要求的单数类型不一致时,会引起编译时期发现不了的问题,严重可能导致程序崩溃。 C++11中变长模板参数的语法就不多说了,最开始使用的时候总会觉得用法...原创 2017-11-17 16:20:05 · 624 阅读 · 0 评论 -
C++实现记录类型内存分配方式的包装类,使对象(或原始类型)只能通过new的方式实例化
因为c++new的实现的特殊性(对于非POD类型,new完成之后自动调用对象的构造函数),但是new调用构造并不是在可以重载的new操作符中完成的,这部分的流程通过编程的手段没办法改变(至少以我目前的能力来说),所以想要简单的在new的某个阶段记录新生成的对象来自于new操作是没法做到的。现在提供一种略微复杂一点(其实也很简单)的方法来标记对象生成来自于new还是栈上申请。思路:1,将...原创 2017-09-15 14:17:43 · 581 阅读 · 0 评论 -
C++代码复用的方法
情景: 对不同的对象,要执行相同的逻辑操作。在C++中有哪些方法实现?解决方法: 1,模板,将不同的对象的类型作为模板参数。//例:int iarray[] = {2,6,4,8,3};std::sort(iarray,iarray+sizeof(iarray)/sizeof(iarray[0]));double farray[] = {2.0,6.0,4.0原创 2016-12-02 23:06:11 · 12669 阅读 · 1 评论 -
记C++坑:1.被自己坑了一次的全局变量使用
最近遇到一个问题,打算写一个小的测试程序来测试一下自己设计的算法方案。当时也没考虑就用了全局变量。当时的代码是这样写的:int intarray[] = {1,10,100,1000};int CreateArray(int* arrayname){ arrayname = new int[4]; memccpy(arrayname,intarray,sizeof原创 2016-12-15 10:24:31 · 2537 阅读 · 1 评论 -
性能检查
头文件:#pragma once#include #include #include #include #define SSBASETOOLS_API//////////////////////////////////////////////////////////////////////////// 性能测试class SSBASETOOLS_API Performanc原创 2016-01-22 16:40:47 · 361 阅读 · 0 评论 -
RAII资源管理一定没问题吗?
#include #include #include class clsinfo{public: clsinfo(int idx) :m_idx_(idx) { std::cout << "begin(" << m_idx_ << ")."<<std::endl; } ~clsinfo() { std::cout << "end(" << m_idx_ << ")."原创 2017-01-19 15:46:27 · 404 阅读 · 0 评论