2018
文章平均质量分 52
jason_cuijiahui
这个作者很懒,什么都没留下…
展开
-
C++数值类型与string的相互转换
数值->string方法1 流#include<sstream>//ostringstream对象用来进行格式化的输出,常用于将各种类型转换为string类型//ostringstream只支持<<操作符template<typename T> string toString(const T& t){ ostringstream oss; //创建一个格式化输出流 oss<<原创 2018-01-11 19:22:49 · 932 阅读 · 0 评论 -
C++中 string对象的大小比较
原理: 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。当两个数的位数一样,则直接可以应用字符串的比较。如 "1346" > "1111" == true例子:#include<iostream>#include<string>using namespace std;int main(){ string str1("235");原创 2018-01-11 20:56:41 · 58910 阅读 · 5 评论 -
为类型CMyString的声明,请为该类型添加赋值运算符函数
转自 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public:CMyString(char* pData = NULL);CMyString(const CMyString& str);~CMyString(void);private:char* pData;};分析:赋值运算符要注意以下四点:把返回值的类型声明为该类转载 2018-01-03 15:18:57 · 262 阅读 · 0 评论 -
同态加密算法简述
同态加密如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说 f(A) = A’ , f(B) = B’ 。另外我们还有一个解密函数 f−1f^{-1} 能够将 f 加密后的密文解密成加密前的明文。对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用f−1 f^{-1} 对C’进行解密得到的结果一般是毫无意义的乱码。但是,如果 f 是个可以进行同态加密的加原创 2018-01-21 18:04:00 · 45562 阅读 · 5 评论 -
STL中set底层实现方式? 为什么不用hash?
当强调hash表的缺点时,一定要说明内存分配的问题,会浪费一部分内存。而且hash表会为每种类型构造hash函数,不一定快。set是用红黑树实现的,红黑树是一种平衡性很好的二分查找树。要使用hash的话,就需要为不同的存储类型编写哈希函数,这样就照顾不到容器的模板性了,而是用红黑树只需要为不同类型重载operator<就可以了。红黑树与hash table最大的不同是,红黑树是有序结构,而has原创 2018-01-22 08:53:14 · 1045 阅读 · 0 评论 -
实现一个无法被继承的C++类
如何写一个不能被继承,且能正常使用的类,下面提出三种思路。C++11 的final关键词类被final修饰,不能被继承。class A1 final {};class B1 : A1 {}; // "B1":无法从"A1"继承,因为它已被声明为"final"更多关于C++11 override 和 final私有声明类的构造函数一个类不能被继承,也就是说它的子原创 2018-01-05 11:26:38 · 269 阅读 · 0 评论 -
排序算法汇总
插入排序数组#include<iostream>using namespace std;void swap(int arr[], int i, int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;}// 默认升序 void InsertSort(int arr[...原创 2018-01-19 09:44:55 · 193 阅读 · 0 评论 -
SQL例子
转自 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMA原创 2018-01-23 15:06:35 · 353 阅读 · 0 评论 -
Linux Shell
Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。Q:2 什么是默认登录shell,如何改变指定用户的登录shell答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时原创 2018-01-23 15:29:39 · 353 阅读 · 0 评论 -
C++类中的static关键字
静态数据成员在类中数据成员的声明前加上static,该成员是类的静态数据成员.例子#include using namespace std; class MyClass { public: MyClass(int a, int b, int c); void fun(); private: int a,b,c;原创 2018-01-17 13:58:25 · 286 阅读 · 0 评论 -
实现一个只能实例化一次的类 即 单例模式(Singleton)
单例模式的要点有三个:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。 从具体实现角度来说,就是以下三点:单例模式的类只提供私有的构造函数类定义中含有一个该类的静态私有对象该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。 class CSingleton { public: static CS原创 2018-01-17 14:17:52 · 3813 阅读 · 0 评论 -
C++中的sizeof和strlen
#include<iostream>using namespace std;int main(){ char test1[] = ""; cout<<sizeof(test1)<<endl; // 1 cout<<strlen(test1)<<endl; // 0 int test2[] = {1, 2, 3}; cout<<sizeof(test2)/si原创 2018-01-08 16:57:30 · 225 阅读 · 0 评论 -
c++中指针的++操作
对于指针的++,在C++里,默认是对类型进行++#include<iostream>using namespace std;int main(){ int src[] = {1, 2, 3}; int *p = src; cout<<*src<<"|"<<*(src+1)<<endl; // 1|2 }原创 2018-01-08 17:03:44 · 2136 阅读 · 0 评论 -
大端模式(big-endian)与小端模式(little-endian)
参考自大端模式与小端模式大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中.小端模式是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。大小端模式的由来在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器原创 2018-01-09 10:46:07 · 25491 阅读 · 1 评论 -
STL中的队列queue
基本操作push(x) 将x压入队列的末端pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值front() 返回第一个元素(队顶元素)back() 返回最后被压入的元素(队尾元素)empty() 当队列为空时,返回truesize() 返回队列的长度例子#include<iostream>#include<queue>using namespace std;void Prin原创 2018-01-10 14:06:16 · 238 阅读 · 0 评论 -
STL 中优先队列priority_queue
优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认按元素值由大到小排序,可以重载“。 操作empty() 如果队列为空返回真pop() 删除队顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数to原创 2018-01-10 14:29:55 · 252 阅读 · 0 评论 -
C++的排序sort
stl中就自带了排序函数sort,sort函数对给定区间所有元素进行排序 #include#includeusing namespace std;int main(){ int test[]={2,4,1,23,5,76,0,43,24,65}; int len = 20; sort(test, test+len); //得到默认的升序结果 for(原创 2018-01-10 10:45:14 · 380 阅读 · 0 评论 -
国内的go get问题的解决
在国内采用go get有时会下载不到一些网站如golang.org的依赖包。方法1(亲测有效): gopm 代替go 下载第三方依赖包可以采用gopm从golang.org一些镜像网站上下载。 a). 安装gopmgo get -u github.com/gpmgo/gopmb). 用gopm get -g代替go getgopm get 不采用-g参数,会把依赖包下载.vendor目录下面;原创 2018-02-10 16:43:42 · 33908 阅读 · 0 评论 -
Golang的Gob编码
https://www.cnblogs.com/yjf512/archive/2012/08/24/2653697.html原创 2018-02-10 20:24:47 · 672 阅读 · 0 评论 -
Golang不支持类型别名
https://www.jianshu.com/p/bda4630f93d2原创 2018-02-26 10:31:46 · 1600 阅读 · 0 评论 -
golang函数中的参数不支持默认值
https://www.zhihu.com/question/24368980原创 2018-02-26 11:15:15 · 21124 阅读 · 2 评论 -
多线程程序在单核cpu与多核cpu上是怎么工作的?
转自1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢) 多个cpu的话就可以在两个cpu中同时执行了…………..a2: 单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际原创 2018-01-30 10:02:30 · 9830 阅读 · 0 评论 -
Golang中方法的接受类型与调用类型
举个例子:a1) Distance方法的接收器参数是Point类型a2) ScaleBy方法的接收器参数是*Point类型b1) 变量p是Point类型b2) 变量pptr是*Point类型下面有三种情形: 1.b1调用a1,b2调用b2p.Distance(q)pptr.ScaleBy(2)2.b1调用a2(存在隐式转换)p.ScaleBy(2) // implicit (&p).Sca原创 2018-02-12 11:31:08 · 412 阅读 · 0 评论 -
Golang的一些功能函数——Slice
1. 翻转slicefunc reverse(s []int) { for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i], s[j] = s[j], s[i] }}2. []byte间比较大小package mainimport ( "bytes")func mai...原创 2018-02-07 10:21:24 · 846 阅读 · 0 评论 -
npm ERR! code ELIFECYCLE
参考自解决方法: 1. npm run clean (clean npm) 2. delete node_modules directory from my project structure. 3. install dependencies again using npm install原创 2018-03-06 20:54:52 · 37597 阅读 · 3 评论 -
基于truffle框架开发、部署第一个去中心化应用(Dapp) - 宠物商店
truffle框架Truffle is a world class development environment, testing framework and asset pipeline for Ethereum, aiming to make life as an Ethereum developer easier.项目目录结构contracts/ 智能合约的文件夹,所有的智能合约文件都放原创 2018-03-06 22:50:59 · 802 阅读 · 0 评论 -
Golang中接受可变个数参数的函数(Variadic function)
一个例子:func sum(vals ...int) int { // 在函数内部 vals 作为slice []int的存在而使用 total := 0 for _, val := range vals { total += val } return total}使用:sum()sum(3)sum(1, 2, 3)另一个例子:func原创 2018-02-07 18:18:33 · 4480 阅读 · 0 评论 -
Golang判断key是否在map中
if _, ok := map[key]; ok { }原创 2018-02-27 16:31:55 · 10914 阅读 · 0 评论 -
Golang: undefined: "main.main"
缺了main.go文件原创 2018-02-27 16:56:01 · 446 阅读 · 0 评论 -
上传修改本地项目到Github
首次上传流程简介在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;再通过git commit -m “注释内容”把项目提交到仓库;在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin git@github.com:doublespen...原创 2018-02-27 20:34:36 · 1246 阅读 · 0 评论 -
sublime 中在文件夹底下寻找
ctrl+shift+F键盘输入原创 2018-02-28 10:35:10 · 596 阅读 · 0 评论 -
制作ubuntu的U盘启动
利用rufus刻录Ubuntu镜像进U盘下载好Ubuntu镜像和USB刻录工具后,插入U盘。打开rufus,选择再电脑上的系统位置如下图所示: rufus会自动识别你的U盘,那个文件系统请选择FAT32,其它保持默认,接下来点击红框中的按钮来选择Ubuntu镜像来进行刻录。...原创 2018-03-08 21:38:27 · 627 阅读 · 0 评论 -
map赋值前要先初始化:assignment to entry in nil map
注意这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以下面的赋值会出现错误:test := make(map[string]map[int]int)test["go"][0] = 0 // error正确的做法:test := make(map[string]map[int]int)test["go"] = make(map[int]int原创 2018-03-01 11:47:32 · 39268 阅读 · 1 评论 -
C/C++ 中的char[]与char*
我们可以从三段代码理解两者 1.// 均包含结束标识符'\0'char test1[] = "yes!";char* test2 = "yes!";cout<<test1<<endl; // yes!cout<<test2<<endl; // yes!cout<<sizeof(test1)<<endl; // 输出为5即字符串的长度cout<<sizeof(test2)<<end原创 2018-02-22 21:26:47 · 615 阅读 · 0 评论 -
Golang中的[]byte与16进制(String)之间的转换
把[]byte表示成16进制(用String的形式)[]byte -> Stringsrc := []byte("Hello")encodedStr := hex.EncodeToString(src)// 注意"Hello"与"encodedStr"不相等,encodedStr是用字符串来表示16进制String -> []bytetest, _ := hex.DecodeString(enc原创 2018-03-01 23:30:25 · 62009 阅读 · 0 评论 -
Base58编码解码Go实现
base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值。区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。编码流程 (本质为大数与字符串的转化)...原创 2018-02-07 15:08:31 · 3943 阅读 · 3 评论 -
C++中随机数的生成
http://blog.csdn.net/cmm0401/article/details/54599083原创 2018-03-09 22:26:51 · 241 阅读 · 0 评论 -
STL中的有序容器
map, set, multimap, multiset 四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查询:O(logN)删除:O(logN)map 更多C++ maps是一种关联式容器,包含“关键字/值”对。map的基本操作函数: begin() 返回指向map头部的迭代器 ...原创 2018-01-10 14:20:42 · 10888 阅读 · 1 评论 -
哥德尔不完备定理
内容整理自网络哥德尔不完备定理的内容——它为什么惊人不完备定理的内容很容易理解。有很多版本。我说一个最简单的。对任何关于自然数结构的有限个公理∑\sum,存在一个关于自然数的命题ϕ\phi,ϕ\phi是真的,但ϕ\phi不能由∑\sum推出(证明)这个定理让数学家震惊的原因很容易理解。一个数学命题,如果认为它对,我们必须证明。这是所有数学家的共识(从古希腊时期就被明确提出并一直延续至今,并且仍然是数原创 2018-02-24 15:50:28 · 821 阅读 · 0 评论 -
60年代并购浪潮
所罗门王在圣经传道书第一章第九节中写道,“已有的事,后必再有.已行的事,后必再行.日光之下并无新事.”我们将通过“漫步华尔街”一起回顾华尔基60-90年代那段历史。伯顿·马尔基尔,美国著名经济学教授,畅销书《漫步华尔街》的作者。曾任美国总统经济顾问理事会会员,耶鲁大学管理学院院长,普林斯顿大学经济学系主任,以及多家世界500强企业董事会董事。精彩回顾上一期我们回顾了60年的概念股狂潮,20世纪60~原创 2018-02-24 16:49:16 · 816 阅读 · 0 评论