![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
文章平均质量分 64
jaywangpku
专注于后台开发,对数据库,文件系统,云存储,分布式图计算框架与信息学竞赛亦感兴趣。
展开
-
我用的是哪个python
问题1:当我们在终端使用时,用的是哪个?问题2:如何使用指定的?问题3:使用安装第三方包之后,到底安装到哪里去了?原创 2022-06-23 00:25:55 · 496 阅读 · 1 评论 -
单例模式分析
单例模式为什么要用单例确保某个类只有一个对象,常用于访问数据库操作,服务的配置文件等。单例的关键点1、默认构造函数为private,复制构造函数和复制赋值函数也要private或=delete禁用。(做到无法被外部其他对象构造)2、通过一个静态方法或枚举返回单例类对象。3、确保多线程的环境下,单例类对象只有一个。几种写法本文主要介绍C++的懒汉式和饿汉式写法。懒汉式需要生成唯一对象时(调用GetInstance时),才生成线程不安全的错误写法class SingleInstance原创 2021-09-28 23:30:23 · 282 阅读 · 1 评论 -
C++11新特性:default和delete
解释类默认函数的控制程序员只需在函数声明后加上“=default;”,就可将该函数声明为 "=default"函数,编译器将为显式声明的 "=default"函数自动生成函数体,因为必须要有一个构造函数有函数体。程序员只需在函数声明后上“=delete;”,就可将该函数禁用。=default 声明函数为默认构造函数=delete 禁用该函数样例#ifdef _CV_H#define _CV_Hclass cv{ cv(const cv&) = delete; cv&原创 2021-09-28 20:13:30 · 409 阅读 · 0 评论 -
合成字符串方案总结
boost::formatstd::string attach = boost::str(boost::format( "{\"Akey\":\"Avalue\",\"Bkey\":\"%1%\",\"Ckey\":\"%2%\",\"Dkey\":\"%3%\",\"Ekey\":\"%4%\"}") %Bvalue%Cvalue%Dvalue%Evalue);合成json格式为:{ "Akey":"Avalue", "Bkey原创 2021-08-25 19:45:54 · 173 阅读 · 0 评论 -
C/C++获取时间方法
C/C++获取时间方法,gettimeofday() 与 clock()两者的优势与区别:gettimeofday() 可以精确到微秒,精度很重要clock() 计算CPU总耗时,可统计并行计算的任务量gettimeofday()这个函数会把时间包装为一个结构体返回。包括秒,微妙,时区等信息。头文件,函数原型与结构体#include<sys/time.h>int gettimeofday( struct timeval*tv,struct timezone *tz )str原创 2021-01-24 13:29:53 · 1551 阅读 · 1 评论 -
extern static const
externhttps://www.cnblogs.com/WindSun/p/11434436.html原创 2020-09-16 10:54:41 · 110 阅读 · 0 评论 -
typedef int(*P)(int )
typedef int(*P)(int )typedef 主要的作用是给变量取别名,但是存在一些比较特殊的用法。可用于通过给函数起别名的方式定义回调函数。typedef int(*P)(int ) 这里相当于是给函数指针 P 起了个别名。那么可以用 P 来定义或转换其他指针的类型。存在一个这样的函数:int add(int x){ return x+1;}P f=add; //用P类型 定义一个f, f就可以接收此种函数形式的函数名,f(5); //然后可以用f调用这个add()函数。原创 2020-09-16 10:46:25 · 2970 阅读 · 0 评论 -
编译.so动态库
编译.so动态库最近在一个大项目分模块开发时,采用C++开发,各个模块开发好库之后,编译成为.so动态库。调用底层库时,只需要.so文件和对应头文件。本文以test库为例说明:文件包括:test.h test.cpp main.cpp// test.h#include <iostream>using namespace std;int add(int a, int b);int subtract(int a, int b);int multiply(int a, int b)原创 2020-08-16 23:14:05 · 2935 阅读 · 1 评论 -
MPI中如何发送 C++对象或结构体
1、自己把对象中需要发送/接收的元素放进一个数组中,接收之后再按照数组中的数据的顺序重新建立一个对象。如果对象中只有int,bool的话,这个还比较好办,double,string就麻烦一些。改变类的话就可能牵一发而动全身。2、自己定义一个结构体,把对象中需要传输的信息都复制进结构体中,然后MPI_Type_struct()定义一个数据类型,就可以直接用MPI收发了。不要忘了MPI_Type_c...原创 2020-04-03 01:11:28 · 2456 阅读 · 1 评论 -
C++ Map 注意事项
C++ Map 注意事项在map中,由key查找value时,首先要判断map中是否包含key见 C++ Map find函数和count函数重点:如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]...原创 2020-04-02 19:07:33 · 310 阅读 · 0 评论 -
c++中 set vector map最多可以存多少值
c++中 set vector map最多可以存多少值```cppstd::set<int> 214748364std::set<double> 178956970std::set<long long> 178956970std::set<std::string> 214748364std::vector...转载 2020-03-28 14:47:12 · 1958 阅读 · 0 评论 -
go语言 环境配置
go语言 环境配置安装软件一般有两类(三种)方式1、直接下载已经编译好的二进制文件,解压后配置环境变量就可以了。2、通过系统的包管理工具,比如 ubuntu apt-get安装,和第一种相同,都是直接对编译好的二进制文件进行安装。3、下载源码,自行编译成二进制文件后安装。使用编译好的二进制文件下载地址:https://golang.google.cn/dl/ubuntu系统选择下面这...原创 2020-01-13 21:12:36 · 349 阅读 · 0 评论 -
C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream::open(const)
C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream::open(const)C++使用fstream进行文件读写,非常的方便,但是在日常使用的时候,常常会忽视掉一些小问题,如下:类定义为:出现的问题的open函数:报错为:但是看上去确实没什么问题,看官方文档:可以看出,f...原创 2020-01-03 13:03:24 · 6468 阅读 · 1 评论 -
C++ STL容器底层数据结构总结
STL 就是所谓的标准模板库(Standard Template Library),这可能是C++程序员的一大利器。总的来说,STL包括几个部分:容器,算法(泛型算法),迭代器三个主要部分(当然还包含仿函数,适配器等其他部分),下图说明了三个主要部分之间的关系(网图,侵删)。要是详细的总结,这肯定是一本类似于《C++ Primer》的大书。本篇文章主要是对于STL中的常用容器的底层数据结构...转载 2019-07-31 09:56:34 · 1351 阅读 · 1 评论 -
C++ Map find函数和count函数
count函数之前一直以为count函数可以返回map中一个key出现的频次,即key对应的value值,主要是离散化处理计数时想当然了。仔细理解加实践之后,count函数返回的是一个容器中,某一元素出现的次数,对于map,即返回key出现的次数,但是map中的key是不允许重复出现的,故count函数返回值只能是1(存在)或0(不存在)。find函数使用find,返回的是被查找元素的位置...原创 2019-06-03 22:34:52 · 19321 阅读 · 2 评论 -
Python 排序
文章目录Python 排序简单的升序排序key参数/函数Operator模块函数升序和降序排序稳定性和复杂排序多级排序(将边按照BFS排序)其他Python 排序对python的list进行排序,有方法sort和sorted其中,sort()为list内置的方法,而sorted()为全局内置的方法简单的升序排序直接调用sorted()方法,它将返回一个新的list,新的list元素基...原创 2018-11-09 16:24:43 · 488 阅读 · 0 评论 -
PyBloomfilter API
文章目录PyBloomfilter APIBloomFilter类BloomFilter类的静态方法BloomFilter类的实例属性BloomFilter类的实例方法BloomFilter类的魔法方法BloomFilter类的异常处理类PyBloomfilter API可以使用的平台:Windows UnixBloomFilter类class pybloomfilter.BloomF...原创 2018-10-26 11:51:57 · 315 阅读 · 0 评论 -
C++判断map中key值是否存在
C++ map中key值存在情况判定1、count函数count函数用于统计key值在map中出现的次数,map的key不允许重复,因此如果key存在返回1,不存在返回0 if (testMap.count(key) == 0) cout << "no this key" << endl;2、find函数iterator find ( co...原创 2019-04-15 22:07:03 · 26940 阅读 · 0 评论 -
C++ set取并集,交集,差集
C++ set取并集,交集,差集说明:在C++编程中,使用set集合时,常用到取并集,交集,差集功能。在算法库中,提供了三个函数可以快速进行这三个操作。需要包含头文件:#include <algorithm>基本介绍set里面有set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)、set_symmetr...原创 2019-04-15 22:25:10 · 37455 阅读 · 2 评论 -
MPI最基本函数整理
MPI最基本函数整理MPI-1共有128个调用接口,MPI-2共有287个调用接口。整体上MPI是非常庞大的,但是,从理论上说,MPI所有的通信功能可以用它的最基本的6个调用来实现。int MPI_Init(int *argc, char ***argv)功能:MPI_Init是MPI程序的第一个调用,完成MPI程序初始化工作,通过获取main函数的参数,让每一个MPI进程都能获取到mai...原创 2019-04-17 14:53:48 · 2081 阅读 · 0 评论 -
MPI组通信
MPI组通信MPI组通信,在一个特定的通信组内,所有进程同时参加通信的函数接口。组通信在各个进程调用的形式完全相同,方便编码,提高通信效率。开发思路:对每一个组通信函数进行理解,然后依次构造其所需要的参数即可快速准确完成代码编写本文给出例子的函数主要有以下这些常用函数,在测试中,进程数设定为4int MPI_Bcast(void* buffer, int count, MPI_Dat...原创 2019-04-17 17:02:07 · 1796 阅读 · 0 评论 -
MPI并行求PI近似值
MPI并行求π\piπ近似值近似法:代码:#include <iostream>#include <vector>#include <map>#include <mpi.h>using namespace std;double f(double x){ return 4.0/(1.0 + x * x);}int main...原创 2019-04-17 18:42:41 · 1931 阅读 · 1 评论 -
C++STL(vector,map,set,list,bitset,deque)成员函数整理
C++STL(vector,map,set,list,bitset,deque)成员函数整理补充:vector 删除指定元素:vec.erase(remove(vec.begin(), vec.end(), val), vec.end());remove()返回的是删除后的尾部迭代器,必须调用erase()显式地删除其后的元素。erase()删除迭代器指向的元素。eg.vec.era...转载 2019-04-17 20:24:48 · 283 阅读 · 0 评论 -
Python传值还是传引用
Python传值还是传引用1、Python可变对象与不可变对象不可变对象:该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。有:数值类型(int和float)、字符串str、元组tuple都是不可变类型。可变对象:该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,...原创 2019-04-19 15:09:38 · 5490 阅读 · 0 评论 -
shell 基本用法
shell命令基本用法set +e 如果脚本运行过程中出现错误,报错但是不终止脚本。set -e 如果脚本运行过程中出现错误,则立即终止脚本。basepath=$(cd 'dirname $0';pwd) 在命令状态下,返回的是当前路径。在脚本文件上,返回这个脚本文件放置的目录,并根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。以下:if [ $? -ne 0 ]; then...原创 2019-04-19 15:27:14 · 629 阅读 · 0 评论 -
awk命令(AWK程序设计语言)
awk命令(有自己的语言:AWK程序设计语言)**awk是行处理器:**相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。**awk处理过程:**依次对每一行进行处理,然后输出。通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。使用模式: awk '{pattern + action}' {fil...原创 2019-04-19 15:31:04 · 778 阅读 · 0 评论 -
C++中set,map使用自定义类型(类或者结构体)
C++中set,map使用自定义类型(类或者结构体)在项目中需要使用自定义的类作为key,由于定义类的时候并没有为类重载小于号,在编译的时候出现了很奇怪的错误。如下:报错显示,没有对类定义小于规则。(作者当时想,也没用到小于,干嘛要定义)后来发现还是太年轻了。问题在于C++中set和map是红黑树实现的,所以如果使用自定义的类型的时候,需要在自己的类型中重载<号。有了偏序关系,这样C+...原创 2019-05-09 20:54:58 · 3219 阅读 · 1 评论 -
C/C++ 中头文件相互包含引发的问题
C/C++ 中头文件相互包含引发的问题问题描述我把问题脱离于项目简单描述一下:我写了一个函数 bool func(ClassA* CA) 需要加到项目中,我就把这个函数的声明放到 head1.h 中,函数参数类型 ClassA 定义在另一个头文件 head2.h 中,因此我需要在 head1.h 中包含 head2.h;而 head2.h 中之前又包含了 head1.h,这样就构成了一种头文件...原创 2019-05-09 23:49:31 · 1783 阅读 · 0 评论 -
单例类 C++
设计模式–单例模式概念单例模式是一种常用的软件设计模式。它的核心结构只包含一个被称为单例的特殊类。它的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。应用场景有一些对象只需要一个,如:对话框、系统日志、显卡等设备的驱动程序对象、一台PC连接一个键盘。实现方式1、将构造函数声明为private或者protect防止被外部函数实例化,内部保存一个pri...原创 2019-03-23 21:08:41 · 546 阅读 · 0 评论