自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jason_cuijiahui的博客

区块链+人工智能

  • 博客(20)
  • 收藏
  • 关注

原创 多线程程序在单核cpu与多核cpu上是怎么工作的?

转自1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢) 多个cpu的话就可以在两个cpu中同时执行了…………..a2: 单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际

2018-01-30 10:02:30 9829

原创 Linux Shell

Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。Q:2 什么是默认登录shell,如何改变指定用户的登录shell答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时

2018-01-23 15:29:39 353

原创 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

原创 STL中set底层实现方式? 为什么不用hash?

当强调hash表的缺点时,一定要说明内存分配的问题,会浪费一部分内存。而且hash表会为每种类型构造hash函数,不一定快。set是用红黑树实现的,红黑树是一种平衡性很好的二分查找树。要使用hash的话,就需要为不同的存储类型编写哈希函数,这样就照顾不到容器的模板性了,而是用红黑树只需要为不同类型重载operator<就可以了。红黑树与hash table最大的不同是,红黑树是有序结构,而has

2018-01-22 08:53:14 1044

原创 同态加密算法简述

同态加密如果我们有一个加密函数 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 45556 5

原创 排序算法汇总

插入排序数组#include&lt;iostream&gt;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

原创 实现一个只能实例化一次的类 即 单例模式(Singleton)

单例模式的要点有三个:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。 从具体实现角度来说,就是以下三点:单例模式的类只提供私有的构造函数类定义中含有一个该类的静态私有对象该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。 class CSingleton { public: static CS

2018-01-17 14:17:52 3813

原创 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

原创 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 58878 5

原创 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

原创 STL 中优先队列priority_queue

优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认按元素值由大到小排序,可以重载“。 操作empty() 如果队列为空返回真pop() 删除队顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数to

2018-01-10 14:29:55 252

原创 STL中的有序容器

map, set, multimap, multiset 四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查询:O(logN)删除:O(logN)map 更多C++ maps是一种关联式容器,包含“关键字/值”对。map的基本操作函数: begin() 返回指向map头部的迭代器 ...

2018-01-10 14:20:42 10887 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

原创 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

原创 大端模式(big-endian)与小端模式(little-endian)

参考自大端模式与小端模式大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中.小端模式是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。大小端模式的由来在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器

2018-01-09 10:46:07 25443 1

原创 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

原创 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

原创 sublime 3 + Golang + 代码补全

关于Golang的部分配置golang的环境变量// 按自己Golang的具体安装情况填写GOROOT=E:\GO\mount\GOPATH=E:\GO\myGoGOBIN=%GOPATH%\bin 注意:GOPATH(工作空间)目录下要有三个目录:bin、pkg、src。%GOROOT%\bin添加至Path环境变量让sublime 3支持Gol...

2018-01-08 11:20:44 21799

原创 实现一个无法被继承的C++类

如何写一个不能被继承,且能正常使用的类,下面提出三种思路。C++11 的final关键词类被final修饰,不能被继承。class A1 final {};class B1 : A1 {}; // "B1":无法从"A1"继承,因为它已被声明为"final"更多关于C++11 override 和 final私有声明类的构造函数一个类不能被继承,也就是说它的子

2018-01-05 11:26:38 268

转载 为类型CMyString的声明,请为该类型添加赋值运算符函数

转自 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public:CMyString(char* pData = NULL);CMyString(const CMyString& str);~CMyString(void);private:char* pData;};分析:赋值运算符要注意以下四点:把返回值的类型声明为该类

2018-01-03 15:18:57 261

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除