自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (6)
  • 收藏
  • 关注

原创 自己做小项目时,配置的Maven需要用阿里云私服加速Jar包的下载

在我的IDEA中,maven配置在了这个地址,然后我需要去这个地址下找到settings.xml的maven配置文件来配置以下的阿里云私服地址来加速jar包的下载!【不然就是下N年很慢!

2024-07-18 00:56:42 220 2

原创 实习遇到的经典问题记录1-当遇到服务器端需要开放一个之前没开放的端口

这2步骤do完之后就能够成功开启你服务器端的某个端口了!问题:当遇到服务器端需要开放一个之前没开放的端口。

2023-04-18 18:19:27 327 1

原创 Clion创建新C++项目时无法直接build的解决方案

在右上角edit configuration并新增cmake application配置,target和executable只要做了step1就一定会自动解析出来,最后点击apply。先点击reload cmake project。

2023-04-03 16:08:55 1750

原创 Linux系统编程之信号

本篇博客所回顾的知识(学习目标):一、信号介绍1 信号的概念

2022-03-19 15:22:29 1700

原创 Linux系统编程之进程通信

文章目录系列文章目录前言一、进程间通信(的概念)是什么?1.1 什么是进程间通信?1.2 进程间通信的方式?二、管道-pipe2.1 管道的概念2.2 管道的原理2.3 管道的局限性2.4 创建管道-pipe函数2.5 父子进程使用管道2.6 管道练习2.7 管道的读写行为2.8 如何设置管道为非阻塞的?2.9 如何查看管道缓

2022-03-17 22:40:24 734

原创 回溯算法lc做题自己的笔记总结(不断更新)

一、什么是回溯算法?1:回溯法也可以叫做回溯搜索法,它是一种搜索的方式。2:回溯是递归的副产品,只要有递归就必会有回溯(一一对应,一次递归必对应一次回溯)。基于这一点,可以认为,回溯函数也就是递归函数,指的都是同一个函数。二、回溯法解决(面向)的问题有哪些?回溯法,一般可以解决如下几种(5种)问题:组合问题:N个数里面按一定规则找出k个数的集合(无顺序之分 [1 2] == [2 1]) 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一...............

2022-03-13 16:49:02 609

原创 Linux系统编程之waitpid函数详解

5.1 为什么要进行进程资源的回收当一个子进程退出之后,该进程能够回收自己的用户区的资源,但是不能回收内核空间区的PCB(process control block 进程控制块)资源。(即:子进程无自己本身法完成对内核的PCB资源的回收,此时就会非常浪费linux系统的资源了!)这个子进程内核区的PCB资源必须得由它的父进程,调用wait 或者 waitpid函数完成对其子进程的回收,从而避免了对系统资源的浪费!5.2 孤儿进程...

2022-03-10 19:09:34 4280 1

原创 二叉树lc做题自己的笔记总结(不断更新)

二叉树:这种数据结构,我必须要搞明白的点:1:二叉树的深度 对应着 二叉树的前序遍历(中->左->右)的思路(因为深度是从根节点到叶子节点来算的)对应的简单题目是:T110 平衡二叉树2:二叉树的高度 对应着 二叉树的后序遍历(左->右->中)的思路(因为高度是从叶子节点到根节点来算的)对应的简单题目是:T110 平衡二叉树 3:树的前(中左右)、中(左中右)、后(左右中)序遍历之统...

2022-02-28 21:17:52 628

原创 Vscode之remote-ssh服务器时解決需要重复输入密码问题

因为在vscode上我每次打开文件夹时都需要输入密码实在是太麻烦了,所以设置了一下无需重复输入密码。本机:Windows10服务器:Ubuntu20.04 LTS解决方法:在你的windows上,打开终端命令行,输入命令cmd: 步骤《1》输入ssh-keygen(连续按下3个回车enter键)创建公钥(id_rsa.pub)和私钥(id_rsa)(当然,若你在上github时已经创建过了,那么此步骤可以略过!)步骤《2》使用命令scp在 Wind...

2022-02-27 21:42:49 7183

原创 makefile报错:missing separator (did you mean TAB instead of 8 spaces?). Stop.

问题描述:我直接用的复制黏贴把别的makefile文件直接创建出新的makefile文件时,出现了制表符Tab错误!原因:因为makefile中,书写命令时,必须要在命令开头敲一个Tab键,而不能说用8个空格(space)来代替Tab,虽然看起来样子是一样的,但是它们不会生效为真正地makefile命令!(可以看到直接复制的话命令行都是白色的,表示不生效的意思!)解决: way1:别在Xshell中用鼠标右键的复制黏贴,并且使...

2022-02-27 17:45:36 7725

原创 Set/multiset 学习(后续会完善该博客的字体,便于我们学习复习)

set or multiset容器的总结。本节中,我们会学习set / multiset(集合)容器当然,你只要包含了头文件#include<set>之后,你既可以创建set容器,也可以创建multiset容器了简介:set/multiset容器中所有的元素都会在插入时 自动被排序好(通俗来说,其实就比如说你插入 1 3 4 2 5进去set容器中,当你打印输出的时候就会变成是 1 2 3 4 5了,set容器会自动给你排序好 )本质:set/multiset属于 关联式容器,

2022-02-16 22:14:52 929

原创 Map/multimap 学习(后续会完善该博客的字体,便于我们学习复习)

#include<iostream>#include<map>#include<string>using namespace std;void printMultimap(const multimap<int, int>& mmp);//本.cpp我们来学习map/multimap容器 (在STL中,map容器具有高效率,高性能的称呼!)//map/multimap容器可以用于:在大量的数据当中找到你想要的某一个数据,比如通过一个身份证.

2022-02-16 22:03:49 304

原创 Linux系统编程之我的学习笔记1

gcc(g++)的工作流程:1 预处理:调用cpp的预处理器,do的工作是:去掉注释,展开头文件,宏替换 gcc -E test.c -o test.i2 编译:gcc将源代码文件编译为汇编语言代码 gcc -S test.i -o test.s3 汇编:as,将汇编语言代码编译为了二进制文件(目标代码) gcc -c test.s -o test.o4 链接:ld,链接test.c代码中所调用到的库函数 gcc -o test.o test//要是想一步到位,d...

2022-02-08 01:29:36 1059

原创 Term45:正确区分count、find、binary_search、lower_bound、upper_bound和equal_range。

前情提示:我个人认为本条款Term45是《Effective STL》这本书中最重要的一条term!它不仅告诉我们如标题所述的几种算法的具体使用的规范,还提醒我们,应该如何在使用STL容器时do规范的查找操作!假设我有一个容器,或者有一对迭代器标识了一个区间,now你希望在容器or区间中查找一些信息,这样的查找工作该如何进行呢?你的选择往往是:count、count_if、find、find_if、binary_search、lower_bound、upper_bound...

2022-02-03 20:44:40 732

原创 Term41:理解ptr_func、mem_fun、mem_func_ref的由来

给出一个问题:如果有一个函数f和一个对象x,现在我们希望在x上调用f,而在x的成员函数之外,为了执行这个调用操作,C++提供了3种不同的语法:f(x);//语法#1: f是一个non-member-funcx.f();//语法#2: f是一个member-func,x是一个对象or对象的引用px->f();//语法#3: f是一个member-func,且px是一个指向对象x的指针由于存在这3种不同的语法,因此在使用STL的一些组件时,不免会产生一些语法上...

2022-01-30 17:49:40 1094

原创 Term40:若一个类是函数子(functor),则应使它可配接(adaptable)

#include<iostream>#include<vector>#include<algorithm>#include<functional>using namespace std;struct myPred :public unary_function<int,bool>{//一个规范的Functor必须这么干!//因为这么干你的functor的通用型就更强! bool operator()(int v) { .

2022-01-30 00:10:37 1097

原创 set_intersection、set_union、set_difference学习总结

本博客中,我们将学习并总结常用的集合算法。算法简介:set_intersection //求2个容器的交集set_union //求2个容器的并集set_difference //求2个容器的差集一、set_intersection(intersection是交集的意思,so这里是求2个容器的交集)功能描述: 求两个集合(容器)的交集函数原型:set_intersection(iterator beg1,iterator end1,iterator beg2,...

2022-01-27 16:03:30 1487

原创 Term30:确保目标区间足够大

本条款需要我们牢记的是:无论何时,如果所使用的算法(来自<algorithm>这个标准头文件)需要指定一个目标区间,那么必须确保目标区间足够大(用.reserve() or .resize()来do),或者确保它会随着算法的运行而增大,要在算法执行过程中增大目标区间,请使用插入型迭代器,比如back_iterator,front_iterator和inserter返回的迭代器。这些都是你需要记住的。test codes1:(向容器vector中添加新的对象)#inclu...

2022-01-25 15:38:30 532

原创 Term20:为包含指针的关联容器指定比较类型(important)

本条款告诉我们,当我们在关联式容器中存放指针类型的对象时,就应该自定义一个满足我们需求的比较器类型,也即编写一个用于比较的谓词(重载operator()符号且返回值为bool类型的一个类)。why?假设,我们有一个包含着string*指针的set,把一些动物名字push进去:set<string*> ssp2;// ssp: set of string ptrs!ssp2.insert(new string ("Anteater"));ssp2.in...

2022-01-19 17:03:36 929

原创 Term17:使用.swap()技巧来去除容器中多余的容量

某些时候,你的容器中可能需要存储相当多的元素,因此你push了大量的data进去一个容器中。但因为某些原因,你又pop了很多data出来。此时该容器就会占据大量的多余冗余的内存(容量) 为了避免容器中占用不再需要的内存,我们希望有一种方法能把它的容量从以前的最大值缩减到当前需要的数量。这种容器容量的缩减usually被称之为“shrink to fit”(压缩至适当大小),而实现这种shrink to fit缩减技巧的编程方法其实很简单,就是使用容器内置的方法.swap()...

2022-01-18 16:32:03 969

原创 Term13:vector和string优先于动态分配的数组

当你在写new T[N]的代码时,请一定要优先考虑使用STL中的vector容器orstring容器来代替你自己new的数组。可能你会问我为什么呢?Reason:当你决定用new来动态分配内存时,这意味着你将承担如下责任:①:你必须确保以后会有人用delete来删除所分配的内存。如果没有随后的delete,那么你的new将会导致资源泄露。②:你必须确保使用了正确的delete形式。如果分配了单个对象,则必须使用delete;如果分配了数组,则必须使用delete[...

2022-01-17 15:15:02 94

原创 Term14:使用reserve避免不必要的重新分配

对于STL容器,最了不起的一点就是,它们会自动增长以便容纳下你放入其中的数据。当然,这里有一个前提条件:你没有超出它们的最大限制条件(我们可以用名为max_size()的成员函数来知道这一最大限制数量)在Vs2022上,打下如下代码:vector<int> vec;cout << "vec.max_size() = " << vec.max_size() << endl;string str;cout << "str.max_siz

2022-01-17 15:00:18 439

原创 记:致-不成熟的自己以及未来的自己

读研几个月了,自己终于悟出来了。我不能像以前那样没心没肺,想自己所想,做自己想做了。 1-我需要经常反思自己的行为,不是要每件事情我都去争当老师,去劝说去说教。我要学会多认识真正的牛人,不论是技术大佬,还是见识or别的方面至少比我强的人,多向他们学习。学习他们身上的优点,俗话说得好!“三人行,则必有我师焉!”。2-学会向下兼容,不是金钱上的向下兼容,而是其他方面。感情上,我2021年到现在已经错过2个真正心动的女孩子了。现在已经基本不和女生聊天了,是我想的有点多也罢,是她们不适合也罢。...

2022-01-08 20:31:23 197

原创 C++线程池(C语言版本)

本线程池代码是在Vscode下创建项目并结合CMakeList.txt使用GCC进行编译的。CMakeList.txt:cmake_minimum_required(VERSION 3.1.0)project(ProjectName)#ProjectName 需要你自己取项目名字!set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall ")set(CMAKE_BUILD_TYPE Debug)include_directories(${CMAKE

2022-01-01 21:51:55 1162

原创 Th13:补充知识、线程池浅谈、数量谈及课程总结

《1》补充知识 1.1》虚假唤醒问题notify_one或者notify_all唤醒wait()后,实际有些线程可能不满足唤醒的条件,就会造成虚假唤醒,可以在wait中再次进行判断解决虚假唤醒。 问题解决:wait中一定要有第二个参数(谓词),并且这个谓词(我们一般都用Lambda表达式来写)中要正确判断所处理的公共数据是否存在!多多细心测试了再使用某段codes,才能让你自己写出安全稳定的多线程codes!1.2》atomic...

2021-12-31 21:32:50 726

原创 Th12:windows临界区、其他各种mutex互斥量

《1》windows临界区(稍微见识见识即可,因为不是linux下的,不是重点!)因为windows临界区和C++11中的mutex互斥量非常类似,因此这里做个介绍。demo_codes:#include<iostream>#include<mutex>#include<thread>#include<deque>#include<Windows.h>//若要在windows下自带的程序做一些多线程的编程...

2021-12-31 18:03:05 899

原创 Th11:std::atomic续谈、std::async深入谈

《1》原子操作std::atomic续谈std::atomic对于需要保护的共享数据所进行的原子操作并不支持所有运算符号,比如:+ 号std::atomic只支持++、--、+=、-=运算符,其他运算符不支持!demo_codes:#include<iostream>#include<thread>#include<atomic>#include<chrono>using namespace std...

2021-12-30 21:01:36 445

原创 Th10:future的其他成员函数、shared_future、atomic

《1》std::future的其他成员函数《2》std::shared_future《3》原子操作std::atomic 3.1》原子操作概念引出范例3.2》基本的std::atomic用法范例3.3》wjw老师的心得...

2021-12-30 10:53:56 429

原创 记:研一换导师后的一些感悟

2021-9月到12月中,这一研一上学期的时光中,我是在一个团队氛围非常好的团队中度过的,我很感谢我能遇到这些很好的人儿!但是,我有自己的原则,想法和规划,于是我换导师了。来了一个我很尊敬的导师这儿。2021-12-29,今天第一次开大组会,科研“大佬”们研究的最优化和脑电波的方向我都不懂,我自己的方向因为项目是老师新接的,设备还没有到,数据也测不了,要测了数据才能着手写小论文的事情,老师也叫我不要着急。是的,我自认为这(换导师)是个很好的选择。虽然和团队的大部分人都不熟...

2021-12-29 21:17:01 497 1

原创 用Cpp进行泛型编程时需要注意一个小问题

当在一个模板类中,需要使用别的.h头文件中的函数模板时,一定需要在别的.h头文件中加上这样2句话:(否则就是报错!)这个小技巧一定要掌握!!!template<typename T>class 对应模板类的名称;//注意:不需要带上T,否则会报错!//给这个模板类来一个前置声明,否则后续该模板函数用到该类时会识别不出来是哪一个类rationalt.h:#ifndef __RATIONALT_H__#define __RATIONALT_...

2021-12-29 12:05:20 473

原创 fatal error LNK1169: 找到一个或多个多重定义的符号

今天遇到一个关于代码规范不好而导致的小Error!自己折腾了一会儿才解决,故用这篇博客记录一下!在windows下写Cpp代码遇到以下错误时:1>------ 已启动生成: 项目: Project3, 配置: Debug x64 ------1>rational.cpp1>LINK : 没有找到 E:\C++learning\C++并发与多线程编程\Project3\x64\Debug\Project3.exe 或上一个增量链接没有生成它;正在执行完全链接1>rati

2021-12-28 22:34:21 16370

原创 Th9:async、future、packaged_task、promise

《1》std::async、std::future创建后台任务并返回值《2》std::package_task《3》std::promise《4》小结

2021-12-26 22:48:57 534

原创 在windows下使用Vscode用CMake..命令编译源代码时候遇到的问题之解决办法

由于我在windows下用Vscode总是不记得如何deal这个错误,因此今天就用这篇博客记录下来!在windows的Vscode这个IDE下,打开终端,输入命令行:C:\Users\11602\Desktop\test\build> cmake ..报错:-- The C compiler identification is unknown-- The CXX compiler identification is unknown...

2021-12-24 19:04:58 8140 1

原创 Th8:condition_variable、wait、notify_one、notify_all(重要)

《1》条件变量std::condition_variable、wait()、notify_one《2》对上述代码之深入思考《3》notify_all()

2021-12-24 16:27:13 946

原创 Lambda表达式(又称之为Lambda函数)总结笔记

今天coding时发现这个知识点掌握得不牢固,故现写这篇博客记录一下自己看C++ Primer Plus学习Lambda表达式的笔记。Lambda表达式:就地匿名/非匿名定义目标函数或函数对象,不需要额外写一个命名函数或函数对象。格式://匿名(不指定名字)的Lambda表达式(函数)格式[capture](params){LambdaFuncBodyCode;};//当你不指定Lambda函数的返回值类型时,编译器就会为你自动推断你的返回值...

2021-12-24 11:03:21 947

原创 Th7:单例设计模式共享数据问题的分析和解决,call_once

《1》设计模式大概谈所谓“设计模式”,指的是代码的一些写法(这些写法与常规的写法不一样)。它会使得程序变得灵活,维护起来可能方便。但,用设计模式理念写出来的代码很晦涩,别人接管、阅读代码都会很痛苦,需要下很大功夫才能搞clear。设计模式最先是老外应付特别大的项目时,把项目的开发经验、模块划分经验,总结整理而成的。0几年设计模式在中国刚开始火时,程序员们总喜欢拿一个设计模式往项目代码上套,导致一个小小的项目总要加几个设计模式,这就本末倒置了。 但不可...

2021-12-23 20:55:43 300

原创 Th6:unique_lock(类模板)详解

《1》unique_lock取代lock_guard《2》unique_lock的第2个参数 2.1》std::adopt_lock2.2》std::try_to_lock2.3》std::defer_lock《3》unique_lock的成员函数 3.1》lock()3.2》unlock()3.3》try_lock()3.4》release()《4》u...

2021-12-23 15:25:31 572

原创 Th5:互斥量概念、用法、死锁演示以及解决详解(很重要)

保护共享数据,操作时,某个线程用代码把共享数据锁住、操作数据、解锁。那么其他想操作共享数据的线程就必须等待锁住的线程解锁才能对共享数据进行操作。《1》互斥量(mutex)的基本概念互斥量(mutex):互斥量是个类对象。我们可以理解为一把锁,多个线程都尝试用lock()成员函数来加锁这把锁头,但是只有一个线程会成功锁住(成功的标志是lock()函数成功返回)。如果某个线程卡在lock()这里,那么程序就会不断地尝试去锁住这把锁头(因为锁不上呀,所以就会一直卡在这儿...

2021-12-22 11:56:50 947

原创 Th4:创建多个线程、数据共享问题分析、案例代码

《1》创建和等待多个线程demo代码:(以下这个demo代码非常值得学习!!!)#include<iostream>#include<thread>#include<vector>using namespace std;void myprint(int num) {//线程入口函数 cout << "myprint线程开始执行,线程编号为:" << num << endl; //...do some work...

2021-12-20 20:57:47 281

原创 在linux下用vscode结合CMake来编译含有多线程库的源文件时要注意的问题之2

个人认为,cmake可以在学习coding的这个过程中遇到不会的再去学习和总结记录!今天我又学到了在linux下,还有一种比较万能的通用CMakeLists.txt的写法:(用这篇博客记录一下)(当然,如果你要在linux上引用什么thread类,还有别的库的源代码来用的时候,就肯定不止是这几条cmake代码这么简单了哈,到时候遇到了我再边用边学习即可了!)废话不多说,直接上代码:CMakeLists.txt:cmake_minimum_required(VERSION X.X.X)//

2021-12-19 22:32:49 705

安装EMD的完整文件,无需再在某度或者别的平台乱找了!

安装EMD的完整文件,无需再在某度或者别的平台乱找了!

2022-03-08

Git官方参考手册,无水印!EPUB版本带链接索引!

Git官方参考手册,无水印!EPUB版本带链接索引!

2022-03-07

Linux多线程服务端编程,高清无水印!~

Linux多线程服务端编程,高清无水印!~

2022-03-05

STL源码剖析!无水印!

STL源码剖析!无水印!

2022-03-04

Git完全自学教程!自己做了笔记!

Git完全自学教程!自己做了笔记!

2022-03-04

基于VSCode和CMake实现C++开发 - Linux篇V1.0_加水印.pdf

该pdf包含了关于CMakeLists.txt的常用写法全套pdf教程,非常适合新手去学习如何使用CMakeLists.txt来生成MakeFIie文件,进而帮助我们编译项目代码。

2021-12-16

空空如也

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

TA关注的人

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