- 博客(105)
- 资源 (3)
- 收藏
- 关注
原创 记一次黑群晖折腾的过程
以我为例,我的CPU是i7-4590,安装7.2系统的时候会有问题,所以我用的是7.1的系统。3、最后一点是,刷完系统后,如果find找不到你的NAS设备,可以尝试重启一下系统,如果还找不到,就用群晖软件Synology Assistant进行搜索安装,这个还是挺好用的。比如,在安装系统的时候,型号选择的是DS918+,版本号选择的是42496,那么在DSM下载中心也要选择与上述型号以及版本一致的补丁,不然会出现安装后无法开机的问题。如何在公网进行远程访问?
2024-06-03 16:35:57 943
原创 五大排序code总结
merge函数这里,只需要理解,在第一次while循环时,有一端到头就结束;快排有两层循环,第一层循环条件是start < end,这是为了当两个元素相遇时才意味着遍历完所有元素,内层循环是每次都要找到与key相比,需要更新值的元素。选择排序是一个双层嵌套循环,每一次遍历找出max的位置,并在内层循环结束后swap。第一层循环从i=1开始遍历,j = i-1,key = arr[i]。j+1的位置其实就是key的位置,将这个位置的值替换为a[j]。插入的元素更新是在循环内,快排是在循环外。
2023-02-06 11:14:50 745 1
原创 归并排序Note
按照这个步骤,将最基础的两个元素合并成一个两个元素的数组,再按照上面的步骤进行排序,就会得到一个四个元素的数组,以此类推,最终就会得到一个完成序列。每两个队列(也就是两个元素)进行比较,小的放前面,大的放后面。注意下第27-30行,主要是理解在每次迭代中,如何将临时数组中的内容复制到原数组中。将一个待排序队列均分成两部分,将每一部分再进行均分,直到每部分只有一个元素。代码不难理解,只要理解了每一步需要做什么,就能比较容易的写出来。由于每部分只有一个元素,所以可以将其看成一个有序的队列。
2023-02-01 17:59:22 165
原创 快速排序Note
核心思想是,选择一个元素当做基准值,两个指针分别指向队列头和尾,尾部往前找,找到比基准值小的,交换其位置;头部指针往后找,找到比基准值大的,交换其位置。快排应该说是效率最高的经典排序算法,因为是经过优化的算法,所以其很重要。对基准值左右两侧的两个队列分别迭代进行上述步骤,即完成排序。基准值左侧的元素都比基准值小,右侧元素都比基准值大。此刻基准值的位置就是排好序后其所在的位置。
2023-01-31 20:54:36 136
原创 插入排序Note
第13行的意义,排列完序之后,因为之前j被-1了,并且第j+1个位置的数是和第j个位置的数一样,所以要将其更新。插入排序的原理与扑克牌很像,第一个元素视为已经排列好的,第二个及以后的元素视为新加入队列的。第二层循环的意义:从后往前找,如果后面的元素比前一个大,就让大的那个占据小的元素那个位置。代码总体需要琢磨一下,没有选择和冒泡那么容易理解。原理比较容易理解,代码不太容易理解。从后往前插入到队列里。
2023-01-30 21:05:57 69
原创 选择排序Note
选择排序也是一个比较基础的算法,其核心思想是:在每一次遍历中,找出最大(最小)的数,将其放到最前,比如,第一次循环找到最大的数,将其放到第一位,第二次找到第二大的数,将其放到第二位。不同点是冒泡排序的核心思想是与相邻元素去比较,一直将较大的数往后放,从而找出极值;都是在每一次遍历中找到最大的数,将其放到头部(尾部)。选择排序目的就是直接找到极值。
2023-01-30 19:44:14 60
原创 冒泡排序Note
使用了嵌套for循环,第二层用来找出遍历完一圈数组后,最大的元素,并将其放到最后,第一层循环用来重复这个过程,需要重复n-1次。在上面代码中,我特意打印出来每一次max的值,就是完成一圈遍历后找到的最大的那个值。今天学习一下冒泡排序,原理相当简单,就是做若干次循环,在每次循环中找到最大的那个数,然后将其放到最后,经过n-1(n为数组长度)次循环后,就实现了从小到大的排序。注意代码里每次遍历是如何找到最大的那个元素的,就是arr[i]和arr[i+1]去比较,然后i自增。在这里说几个点,便于理解代码。
2023-01-30 14:27:47 71
原创 数据处理——C++
原因在于,a和b都是int类型,其计算的结果也是int类型,而非float类型,如果想输出0.6666,需要将a和b的类型改成double或者float。上面代码的结果是c=0.0000。
2022-07-15 00:14:09 272
原创 友元、异常
学习了友元和异常的相关内容,在此做个笔记。一、友元一个类可以拥有友元函数,也可以拥有友元类友元函数或者友元类的所有方法都可以访问原始类的私有成员和保护成员友元只能由类自己定义,不能从外部强加友情,所以与面向对象的编程思想不矛盾友元类的场景:电视机与遥控器:遥控器可以更换频道,还可以控制输入源等,适合作为电视的友元类友元声明可以在类的私有,保护或者公有部分,位置无关紧要可以只让类的某一成员函数作为另一个类的友元函数,不过声明的时候需要用到前向声明(c++ primer plus p492有介绍)A可以成为B的
2022-06-30 23:58:03 236
原创 C++多态笔记
1、基类指针可以在不进行显式转换的时候指向派生类的对象,引用也是。例如:Brass是BrassPlus的父类。则如下代码是可以的:2、基类指针或引用不能调用派生类的方法。如果基类指针可以调用派生类方法,则会出现类似如下情况:BrassPlus中的成员变量age是Brass类没有的,如果调用setAge()方法,是没有意义的,因为在基类中不存在这个变量。3、如果一个函数在基类中被声明为虚函数。在通过引用或者指针进行调用的时候将会确定使用哪一种方法。例如:......
2022-06-09 00:38:11 120
原创 指针传递,引用传递的区别
talk is cheap, show me the code.所以我们直接上代码看区别:#include <iostream>using namespace std;void swap1(int &a, int &b) { int temp = a; a = b; b= temp;}void swap2(int *a, int *b) { int temp = *a; *a = *b; *b = temp;
2022-05-30 10:48:11 251
原创 Linux常用指令收集
查看进程内存占用:1.ps -ef |grep xxx查看进程PID2.top -p xxxxxx为PID,内存占用和CPU占用就会以每秒钟一次的速率刷新
2022-05-20 14:27:56 89
原创 成员初始化列表
如果我有一个类如下:class A { private: const int qsize; public: A(int qs = 10);}那么下面这种写法是错误的:A::A(int qs) { qsize = qs;}原因是因为,qsize是const的,只能被初始化,不能被赋值,这种情况下,应该怎么办呢?c++给出了答案:成员初始化列表。从概念上说,在执行构造函数时,对象会在执行括号里的代码之前被创建,分配内存,然后
2022-05-16 22:45:24 831
原创 cin.getline()方法使用的坑
今天本来想练习下指针指向对象的使用,结果在使用getline接收键盘输入的时候碰到一个很坑的问题,搞了半天才找到原因,所以要记录下。先贴一段代码:#include "string1.h"#include <iostream>using namespace std;const int ArSize = 10;const int MaxLen = 81;int main() { cout << "please enter your name:" <&
2022-05-10 23:27:42 430
原创 #pragma pack()的作用
今天有同事问我#pragma pack(1)是干嘛的,之前没用过,遂百度。原来这东西是用来指定内存对齐方式的。我们知道,定义一个struct的时候,其默认分配空间为4的倍数。但是用#pragma pack(1)之后,其分配的空间就是1的倍数了,也就是网上说的内存连续。举个例子:Struct A { char a; double b;};这个时候我去查看Struct A的sizeof,会发现值为16,这是因为内存对齐(如果不知道为啥是16,可以百度下内存对齐机制)。
2022-05-10 23:18:09 301
原创 NPOS配置及相关应用说明
一、Ubuntu18.04配置Npos220s1、连线:电源线 一个串口被转成USB连接个人PC(记为USB1),用于接收drv数据 自带的USB用于配置Npos(记为USB2)ps:以上两个可以只连其一,需要drv数据就连USB1,需要修改配置就连USB2,当然也可以同时连接2、USB线驱动安装:USB1使用需安装驱动:moxa驱动在oss下,下载完成需解压,命令为:tar -xf moxa-uport-1100-series-linux-kernel-5.x-driver-
2022-04-06 15:08:01 5522 3
原创 Ubuntu系统在QT中配置OpenGL(极简)
1、安装openGLsudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev2、在.pro文件中加QT += opengl可以在代码中引用了:
2022-02-25 11:56:02 1404
原创 Ubuntu 20.04安装VTK
今天安装了VTK 8.1.0,过程记录如下:因为之前没有安装过,所以找了一个比较基础的教程,链接如下:vtk在linux下的安裝(12月8日更新) - IT閱讀https://www.itread01.com/content/1547814967.html这个还算是比较详细和基础的,我自己的安装过程和他有一点不一样的是VTK资源的获取,我是在通过wget命令下载的VTK资源,然后版本是8.1.0(这里可以通过很多方式获取到,比如官网下载,git clone等等,不一定要按照wget命令)。下载之后需
2022-01-24 15:16:23 6209
原创 Ubuntu18.04安装OpenCv 4.0环境配置
因为后面要做嵌入式开发,基本都是在Ubuntu系统下进行的,然而之前因为显卡驱动的问题重装了系统,有一个工程是基于Opencv开发的,需要重新配置OpenCv的环境。但是配置过程中有很多坑,足足配置了两天才配置成功,所以在这里记录下。先交代一下配置opencv的大致流程:1.安装build-essitial与依赖库2.下载opencv与contrib,这里建议下载源码,因为方便通过git命令切换版本。3.建立编译目录(重要,后面需要配置环境)4.编译,就几个简单的命令,需要花费一些时
2022-01-17 14:26:25 2133
原创 Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题
近期需要在ubuntu18.04系统上安装opencv但是在安装依赖包的过程中,有一个依赖包,libjasper-dev在使用命令sudo apt-get install libjaster-dev提示:errorE: unable to locate libjasper-devsulotion:sudo add-apt-repository "debIndex of /ubuntuxenial-security main"sudo apt updatesudo apt instal..
2022-01-13 11:44:10 2171
原创 安装Windows11的坑
之前想安装windows11,但是由于硬盘空间不够,所以就搁置了,最近买了一块新的硬盘,准备开整,搞了一个星期,终于搞好了,踩了大大小小无数个坑,需要记录下。解决办法:将系统重新安装到B上1.window11的硬件条件,tpm2.0+安全启动这个是Windows11的必备条件,因为安全启动是需要uefi引导的,而我的电脑是bios+mbr方式进行引导的,所以没办法进行安全启动的设置,我采用了网上一老哥的做法来绕过这个限制:史上最简单安装windows11原版镜像方法 - 知乎2.设置了安
2021-12-22 11:37:56 939
原创 友元-2021.12.12
1.友元有三种:友元函数 友元类 友元成员函数通过让函数成为类的友元,可以让此函数访问权限与类成员函数相同。2.为何需要友元?在为类重载二元操作符时,常需要友元。具体在此不展开来讲。3.创建友元创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend。:friend Time operator* ();需要注意:此函数不是类的成员函数,不能使用成员运算符来调用,定义时也不能使用Time::限定符。 虽然此函数不是成员函数,但其访问权限与后者相同
2021-12-12 21:49:18 176
原创 牛客网算法题——中秋节分月饼
题目描述:中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人份到最多月饼的个数为Max1,单人分到第二多月饼的个数是Max2,Max1-Max2<=3,。同理,单人分到第n-1多月饼的个数是Max(n-1),单人分到第n多月饼的个数是Max(n),Max(n-1)-Max(n)<=3。请问有多少种分月饼的方法?思路:当时没有做出来,事后在网上找了下答案,发现思路讲的不是很清楚,于是自己按照答案捋了一遍,终于搞明白了:先将m个.
2021-10-30 18:06:35 3880 1
原创 C++——虚函数和纯虚函数
虚函数的引入:为了实现C++的多态,从而引入了虚函数。将一个函数声明为虚函数,不代表其不能被实现而是为了让基类的指针能调用子类的此函数。比如:class A{ publicvitual func() { cout << "a is called";}}class B:public A { public func() { cout << "b i...
2021-09-25 22:56:15 87
原创 友元-2021.09.23
为何需要友元:在为类重载二元运算符(有两个参数的运算符)时,常常需要友元。比如自己写的Time类,乘法运算符中,可以这样写:A = B * 2;这种写法会被转化为:A = B.operator*(2);但是这种写法就有问题了:A = 2 * B;友元的作用就体现出来了:友元:非成员函数,但访问权限与成员函数一样。声明如下:friend Time operator*(double m, const Time &t);函数定义如下:因为其不属于Time类,
2021-09-25 22:47:42 57
原创 使用template时的一个坑
#include<iostream>template <typename T>void swap(T &a, T &b);//template <typename T>//void swap(T *a, T *b, int n);void show(int * a);const int Lim = 8;int main() { //using namespace std; int i = 10; int j = 20; std:.
2021-08-06 00:46:29 445
原创 函数指针——0730
上例子来说:#include<iostream>using namespace std;const double *f1(const double ar[], int n);const double *f2(const double [], int);const double *f3(const double *, int);int main() { double av[3] = {1112.3, 1542.6, 2227.9}; const double *(*p1) (
2021-07-30 00:09:58 95
原创 函数指针——从入门到放弃——0727
先说,函数指针是真的难,连续几个*,真是有够劝退的。简单记录下函数指针的一些内容:1.先简单罗列一下几个函数的原型const double * f1(const double ar[], int n);const double * f2(const double[], int);const double * f3(const double *, int);上述三个原型看上去不同,实际相同。那接下来,如果要声明一个指针,他可指向这三个函数之一,假设指针为p1,应声明如下:con
2021-07-27 00:15:49 101
原创 C++练习-0708
链接:https://www.nowcoder.com/questionTerminal/1874d6dff40b483ab683df2921d32bd1来源:牛客网编写一个菜单驱动程序的雏形。该程序显示一个提供4个选项的菜单——每个选项用一个字母标记。如果用户使用有效选项之外的字母进行响应,程序将提示用户输入一个有效的字母,直到用户这样做为止。然后,该程序使用一条switch语句,根据用户的选择执行一个简单操作。该程序的运行情况如下:Please enter one of the follo.
2021-07-08 23:16:52 117 2
原创 C++编程练习
题目:编写一个程序,最多将10个值读入到一个double数组中。程序遇到非数字输入将结束输入,并报告这些数字平均值以及数组中有多少数字大于平均值。code example:#include<iostream>int main() { using namespace std; double dl[10]; int count = 0; int number = 0; int avg = 0; int i = 0; string line; cout <<
2021-07-07 23:32:28 148 2
原创 IO输入输出流——0625
今天看了控制IO的输入输出。直接上代码,没啥好说的。第一部分是ofstream的使用:#include<iostream>#include<fstream>int main() { using namespace std; char automobile[50]; int year; double a_price,d_price; ofstream outFile; outFile.open("carinfo.txt"); cout <<
2021-06-25 00:11:22 73
原创 分支语句和逻辑运算符——0623
终于是考完了PMP,搁置近三个月的C++的学习终于是能再度拾起来了。今天开始继续学习,今天内容比较简单,是分支语句和逻辑运算符,因为对于这个比较熟悉,所以不在此进行说明,在此只进行一些新学到的东西的说明。一、cin.get(ch),cin.clear()这个标准输入会经常用到,前者作用是读取键盘输入的一行字符,会将空格等信息也进行展示;后者作用是重置输入——在有错误的输入的时候,重置此错误并可以重新输入二、字符函数库cctype这个库能帮助确定字符是否是大写,数字,标点等工作。举例:
2021-06-23 23:59:00 93 2
原创 PMP一些概念的辨析-0425
一、15个会议:项目启动会项目开工会焦点小组会议引导式研讨会脑暴会投标人会议变更控制会联合应用设计或开发(JAD)风险研讨会需求研讨会项目规划会sprint计划会Sprint评审会Sprint回顾会每日站会二、3个日志问题日志假设日志变更日志三、3个登记册经验教训登记册相关方登记册风险登记册四、4个分解结构组织分解结构资源分解结构工作分解结构风险分解结构五、4个评估风险数据质量评估(评估风险数据对于风险管理有用程度的技术)风险概
2021-04-25 23:00:33 483
原创 C++ 指针与数组-0418
#include<iostream>using namespace std;int main(){ /* //声明特定类型的指针 int *intPoint; double * doublePoint; //给指针赋值,将内存地址赋值给指针,应用&来获取变量地址 //new运算符返回未命名的内存地址 int a = 1; double b = 1.1; intPoint = &a; doublePoint = new double[10]; doubl
2021-04-18 11:08:24 74
原创 2021-04-07
#include<iostream>using namespace std;int main(){ double wages[3] = {100.0,200.0,300.0}; short stacks[3] = {1,2,3}; double (*pw)[3] = &wages; short *pt = &stacks[0]; cout << "size of pw= " << (&wages +1) <<endl;
2021-04-07 00:19:39 70
原创 C++ access()与stat()的区别与联系
C++ access()与stat()的区别与联系:联系:都可以用来判断文件是否有权限读写区别:access的mode为R_OK,W_OK等,用mode去判断而stat返回值为负时,errno为EACESS,也代表不能获取到文件权限,但是其模式更广,具体可上网自查...
2021-04-06 18:05:31 577
原创 第十三章:项目相关方管理-0319
一、概念:相关方指影响项目或受项目影响的全部人员,群体和组织。相关方满意度高使关键的项目指标。发展趋势是“共创”。二、识别相关方1.相关方分析分为受到正面/负面影响或者参与/不参与项目区分按照特征区别:客户,供应商,职能经理,项目团队态度是正面的称为天使,负面的称为魔鬼要把魔鬼变成天使,推进项目。2.权力-利益方格权力大,不密切:令其满意权力大,密切:密切关注权力小,不密切:定期监督权力小,密切:及时告知3.相关方立方体4.凸显模型七种类型:潜伏型,随意型,矫情型,权贵
2021-03-19 22:23:48 578
原创 第十二章:项目采购管理
一、核心概念包括从项目团队外部采购或获得所需产品、服务、或者成果的过程。敏捷场景下的采购管理:通过主要服务协议(MSA)来管辖整体协作关系二、规划采购管理1.合同的基本类型固定总价合同:总价固定,总价包死。适用边界清晰、设计完整的中小型项目。风险低,在乙方2.总价加激励费用合同甲乙双方需先确认如下信息:目标成本目标利润最高限价(天花板价格)分成比例最终如果超过天花板,则按照天花板支付风险中等,风险共担3.总价加经济价格调整合同适用项目周期长,对外部变化条件敏感的场景。成
2021-03-19 00:25:46 171
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人