Crypto++(一)Diffie-Hellman

Diffie-Hellman 是一个密钥协商算法,它允许双方建立一个安全的通信通道。最原始的 Diffie-Hellman 是一个异步协议,也即它是一个未经认证的协议,因此它容易受到中间人攻击的方式攻击。Crypto++通过DH类暴露未认证的DH算法。原始Diffie-Hellman的扩展包含加固交换协议以防止中间人攻击的认证。认证版本的DH协议通常被称为统一Diffie-Hellman。Cryp...
阅读(898) 评论(11)

STL源码之红黑树

1. 基本概念       红黑树是平衡二叉搜索树的一种,其通过特定的操作来保持二叉查找树的平衡。首先,我们来复习一下二叉查找树的知识,建议如果对二叉查找树不理解的先去搜一下相关博客来了解一下。二叉搜索树是指一个空树或者具有以下性质的二叉树: 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也...
阅读(484) 评论(10)

复制带有random指针的单链表

如图1所示,有一条单链表,其节点除了有next指针外,还有一个random指针。random指针可指向单链表中的任意节点,包括它自身。random指针一旦指定,便不再更改。请设计算法,复制此单链表,并给出时间复杂度。图1 带有random指针的单链表解法1. 时间复杂度为O(n*n)先按next指针,将链表复制一份。使用p1指向原链表的头节点,p2指向p1指向的节点的random节点,p3指向p1的...
阅读(391) 评论(9)

STL源码之Set和Map

在上一篇博客中,讲到了STL中关于红黑树的实现,理解起来比较复杂,正所谓前人种树,后人乘凉,RBTree把树都种好了,接下来就该set和map这类关联式容器来“乘凉”了。STL的set和map都是基于红黑树实现的,和stack和queue都是基于deque一样,它们仅仅是调用了RBTree提供的接口函数,然后进行外层封装即可。本篇博客理解起来比较轻松,set和map的源代码也不多,大家可以慢慢“品味...
阅读(304) 评论(7)

VS2015+opencv2.4.13无本地依赖配置

1. 无本地依赖的解释及其必要性1.1 什么叫无本地依赖        在Windows系统中,对于常用的开源库,我们通常都喜欢将其编译成DLL。然后保存在某个目录下,最后将该目录添加到 Path 环境变量来达到在本机上对该DLL引用的一劳永逸的方法。这种方法对于学术人员做实验分析来说确实是一种比较方便的做法,但是如果是做一个可移植的系统的话,这种方式就很不靠谱!因为,这个程序只能在你的系统上运行,...
阅读(552) 评论(9)

算法面试题整理

1. 给出一个正整数,将该整数分解成质因数相乘的形式,例如n=56,它的质因数相乘的结果是:2*2*2*7。#include using namespace std; int main() { int n; cin >> n; while (n > 1) { int i; for (i = 2; i < n; i++) {...
阅读(443) 评论(7)

C/C++语言宏定义使用详解

1. #ifndef 防止头文件重定义在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成 一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h 在头文件开头写上两行:#ifndef TEST_H #define TEST_H //一般是文件名的大写头文件结尾...
阅读(555) 评论(4)

Linux静态库与动态库详解

1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include "test.h" int main(){ test(); return 0; }// test.h #include using namespace std; void test();// test.c #include "test.h" void te...
阅读(354) 评论(9)
    我的公众号

    关注微信公众号,专

    为机器学习入门者
    个人资料
    • 访问:146410次
    • 积分:3352
    • 等级:
    • 排名:第10749名
    • 原创:86篇
    • 转载:6篇
    • 译文:4篇
    • 评论:765条
    博客专栏
    最新评论