- 博客(196)
- 资源 (17)
- 收藏
- 关注
原创 单例模式分析
单例模式为什么要用单例确保某个类只有一个对象,常用于访问数据库操作,服务的配置文件等。单例的关键点1、默认构造函数为private,复制构造函数和复制赋值函数也要private或=delete禁用。(做到无法被外部其他对象构造)2、通过一个静态方法或枚举返回单例类对象。3、确保多线程的环境下,单例类对象只有一个。几种写法本文主要介绍C++的懒汉式和饿汉式写法。懒汉式需要生成唯一对象时(调用GetInstance时),才生成线程不安全的错误写法class SingleInstance
2021-09-28 23:30:23 267 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 395
原创 合成字符串方案总结
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 167
原创 git使用
1、安装git,创建git用户git config --global user.name "your_name"git config --global user.email "your_email"git config -l2、git clone 远程仓库git clone 远程仓库地址3、进入仓库目录,默认为master,切换分支等常用命令git branch -a # 查看所有分支git checkout dev
2021-06-13 16:08:31 126
原创 【力扣LeetCode】124 二叉树中的最大路径和
题目描述(难度难)路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。链接https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/代码/** * Definition for a binary tree node.
2021-04-11 19:34:00 304
原创 【力扣LeetCode】76 最小覆盖子串
题目描述(难度难)给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”提示:1 <= s.length, t.length <= 105s 和 t 由英文字母组成进阶
2021-04-11 18:43:08 116
原创 【力扣LeetCode】146 LRU 缓存机制
题目描述(难度中)运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写
2021-04-11 17:22:02 136
原创 sed命令在脚本中执行的一个坑
sed命令在脚本中执行的一个坑sed 在脚本中执行时,只能用双引号直接shell执行时,单引号和双引号都能成功,在脚本中使用单引号不仅不能成功执行,且不会报错,调试该问题时,让人一脸懵逼,直至怀疑人生!# shell 命令执行时,效果相同sed -i 's/源字符串/替换后字符串/g' filenamesed -i "s/源字符串/替换后字符串/g" filename# shell 脚本运行时,只有双引号才能成功sed -i "s/源字符串/替换后字符串/g" filenamesed 的
2021-02-22 23:19:57 1910 1
原创 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 1507 1
原创 timeout 作用于 docker exec 时导致 docker exec hang住
timeout 作用于 docker exec 时导致 docker exec hang住博主在做一个与docker exec相关的项目时,发现,低版本docker与timeout命令一起作用时,表现为docker exec命令hang住。见:https://github.com/moby/moby/issues/28207经测试:timeout不管是直接,还是间接作用于 docker exec 都会发生这个问题。只要 docker exec 执行时,受某个 timeout 限制。存在该bug的 d
2021-01-01 14:33:15 877
原创 sqrt方法复杂度探讨
sqrt方法复杂度探讨有一次,博主在解一个问题时,由于开方花费了大量时间从而导致时间复杂度过高而无法AC,博主决定研究一下sqrt的复杂度。二分法对开方这个操作,二分法是最直观的方案,也非常易于理解。// 二分法 double mysqrt1(int m){ if(m <= 1){ return m; } double last = 0; double start = 0; double end = m; double mid = (start + end)/2; whil
2021-01-01 14:17:58 7094 2
原创 并行计算--线程池
线程池并行计算根据不同的粒度,分为两类。各分类不一定绝对准确,实现上可能互有依赖。分布式,集群,跨进程1、基于MPI接口,需要自己实现分布式业务模式,学术界使用较多。2、借助于现有分布式基础设施。分布式计算框架类:hadoop,spark,powergraph等分布式存储框架类:对象存储ceph(同时也有文件系统和块存储接口),分布式文件系统HDFS,GFS等,块存储3、基于消息传递的分布式框架。微服务,SOA,各个服务独立,消息传递,protobuf远程过程调用,RPC单机,可跨进程,
2020-10-17 13:27:48 679
原创 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 2895
原创 WSL2中无法修改/mnt/d下的文件权限
WSL2中无法修改/mnt/d下的文件权限在windows中使用wsl2安装linux子系统,使用体验非常好。安装过程可参考:https://blog.csdn.net/u013095333/article/details/107902764但是在使用的过程中,遇到了一个问题,在linux子系统中,访问/mnt/d下的文件时,即windows系统的文件系统下的文件时,可以创建和删除文件,而无法修改文件的权限。考虑:1、是否是windows系统的文件系统不支持linux那一套权限管理机制?2、
2020-09-03 23:31:05 4207
原创 docker
docker参考链接:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.htmlhttps://www.runoob.com/docker/docker-mirror-acceleration.htmlDocker 的主要用途,目前有三大类。(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。(3)组建微服务架构。
2020-08-30 23:31:18 112
原创 编译.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 2860 1
原创 WSL+CentOS+VScode
WSL+CentOS+VScode参考https://zhuanlan.zhihu.com/p/165508059https://docs.microsoft.com/zh-cn/windows/wsl/升级Windows要求:升级Windows,为了使用WSL2,要求 :version 2004,build19041或更高由于WIN10采取逐步推送给用户的策略,很有可能在【windows更新】是找不到最新版本的。使用 微软 windows 10 易升 升级安装WSL# 以下所有操作使用
2020-08-09 23:55:51 1758
原创 LINUX CGROUP总结
LINUX CGROUP总结https://www.cnblogs.com/menkeyi/p/10941843.html
2020-08-09 15:49:51 257
原创 数据库信息整理
数据库信息整理数据库流行度排名目前主要学习1、redis (键值对数据库)2、mysql (关系型数据库)图数据库和文档型数据库暂时不做学习
2020-07-21 23:54:29 165
原创 模拟退火算法解多元函数
模拟退火算法解多元函数题目:F(x)=11.16386−0.0903x1−0.1487x2−0.0664x3+0.09074x4−2.452∗10−4x1x2+6.228∗10−5x1x3+2.457∗10−3x1x4+3.8688∗10−3x2x3−6.471∗10−3x2x4−1.451∗10−3x3x4F(x)=11.16386-0.0903x_1-0.1487x_2-0.0664x_3+0.09074x_4-2.452*10^{-4}x_1x_2+6.228*10^{-5}x_1x_3+2.45
2020-07-07 18:34:36 6017 4
原创 反向SSH实现内网穿透
挺好用,还没来得及整理https://cycoe.cc/2019/04/30/%E5%8F%8D%E5%90%91SSH%E5%AE%9E%E7%8E%B0%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/
2020-04-07 21:53:39 350
原创 redis系列文章--开始
我要做什么突然对redis有点兴趣,决定开始花点时间读一下redis源码,并准备将相关知识点做一个系列文章。基于什么参考书籍:redis的设计与实现代码:redis的设计与实现.pdf 配套带注释源码具体章节第一讲:简单动态字符串SDS...
2020-04-04 22:46:31 158
原创 著名开源项目源码行数--持续更新
linux 内核版本行数5.52700万PostgreSQL版本行数9.6.0124.9万redis版本行数3.2.523000
2020-04-04 20:05:13 616
原创 MPI中如何发送 C++对象或结构体
1、自己把对象中需要发送/接收的元素放进一个数组中,接收之后再按照数组中的数据的顺序重新建立一个对象。如果对象中只有int,bool的话,这个还比较好办,double,string就麻烦一些。改变类的话就可能牵一发而动全身。2、自己定义一个结构体,把对象中需要传输的信息都复制进结构体中,然后MPI_Type_struct()定义一个数据类型,就可以直接用MPI收发了。不要忘了MPI_Type_c...
2020-04-03 01:11:28 2382 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 290
转载 E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable)
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable)当我的Ubuntu install某个东西时,给出下面提示E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource tem...
2020-03-28 18:04:02 2119
转载 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 1918
原创 MPI环境配置(二)
MPI环境配置(二)在云服务器上搭建MPI分布式集群环境,采用NFS统一数据,这一次配置时遇到了几个问题,记录一下详细MPI集群环境配置NFS环境搭建,注意,NFS不需要ssh免密登录,不相关本次遇到的问题1、免密登录,需要能免密登录本机有两台机器,node1和node2那么不仅需要node1能够免密登录node2 和 node2能够免密登录node1,还需要node1能够免密登录n...
2020-03-11 19:59:19 640
原创 Ubuntu下修改文件夹的所有者权限
Ubuntu下修改文件夹的所有者权限之前买了一个云服务器,使用时一直使用root,后来认为那种方式不太好,便创建了一个新的用户wj。但是由于之前的文件均由root用户创建,导致wj用户权限不够,使用起来非常不方便,所以采用递归修改文件夹所有者的方式,一次性修改全部文件的权限。ubuntu下创建新用户两个命令Ubuntu中有两个修改命令可以用到,「change mode」&「chan...
2020-03-11 15:28:58 4109 2
原创 Ubuntu 配置 NFS
Ubuntu 配置 NFS分为两个机器,一个是nfs服务器主机,一个是nfs客户端主机使用两个云服务器配置了host ,见百度经验,或博主相关博客,主机名称分别是huawei 做客户机service 做服务器服务端配置安装nfswj@wj:~/nfs$ sudo apt-get install nfs-kernel-server配置/etc/exports文件/home/wj...
2020-03-11 15:14:36 344
原创 【力扣LeetCode】35 搜索插入位置
题目描述(难度易)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: ...
2020-02-15 15:53:13 147
原创 go语言 环境配置
go语言 环境配置安装软件一般有两类(三种)方式1、直接下载已经编译好的二进制文件,解压后配置环境变量就可以了。2、通过系统的包管理工具,比如 ubuntu apt-get安装,和第一种相同,都是直接对编译好的二进制文件进行安装。3、下载源码,自行编译成二进制文件后安装。使用编译好的二进制文件下载地址:https://golang.google.cn/dl/ubuntu系统选择下面这...
2020-01-13 21:12:36 329
原创 ubuntu创建用户的注意事项
ubuntu创建用户的注意事项出现的问题:/usr/bin/xauth: file /home/user/.Xauthority does not exist原因:是因为添加用户时没有授权对应的目录,仅仅执行了useradd user而没有授权对应的家目录直接解决办法如下(执行如下命令,以后就登录到终端上就不会出现上面的错误信息):chown username:username -R...
2020-01-09 21:02:43 860
原创 ubuntu下查询CPU数,核心数,线程数
ubuntu下查询CPU数,核心数,线程数我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级。CPU从早期的单核,发展到现在的双核,多核。CPU除了核心数之外,还有线程数之说,下面笔者就来解释一下CPU的核心数与线程数的关系和区别。简单地说,CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独...
2020-01-09 18:42:54 9498
原创 MPI集群环境搭建
MPI集群环境搭建系统为了对系统进行统一管理,博主找到了四台相同配置的主机,并统一安装了ubuntu server 16.04.3 LTS系统。安装过程中存在的问题:经过调研,发现这个问题是选择语言的问题,目前发现简体中文和繁体中文会出错,其他语言良好,所以,选择语言时选择English就可以解决这个问题。安装完系统之后,需要配置远程登录,毕竟是服务器,毕竟需要远程登录。sudo pa...
2020-01-08 16:51:45 2176
转载 GaussDB T / A
GaussDB T / A : 从 100 到 200 和 300 命名的变迁华为的 GaussDB 数据库,从传承和沿革上,让行业里的朋友非常困惑,我整理一下相关的信息记录于此。最初,华为的数据库公布出来的型号系列有三款,分别是 100、200 和 300 ,统一的命名都是 GaussDB。GaussDB 100,以 OLTP 为方向,最初和招商银行联合研发,然后推广,在 2020年6月,...
2020-01-07 14:20:33 3432
原创 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 6284 1
原创 DEV-C++调试时出现“项目没有调试信息,你想打开调试选项并重新生成吗”
在NOIP中一般使用DEVC++,配置环境时可能遇到如下问题,导致无法调试在下载完DEV-C++以后进行第一次调试时,系统弹出以上窗口,点击Yes按钮后编译器出现秒退的情况。解决方案菜单栏>>工具>>编译器选项>>代码生成/优化>>连接器>>产生调试信息>>更改为Yes;...
2019-08-20 13:14:09 14173 5
模拟退火算法解多元函数极值.rar
2020-07-07
redis的设计与实现pdf以及带注释源码
2020-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人