自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 vscode配置github 有代理

【代码】vscode配置github 有代理。

2024-01-09 16:33:47 605

原创 如何将在QT Creator中给exe设置应用图标并打包发布

【代码】如何将在QT Creator中给exe设置应用图标并打包发布。

2023-03-16 21:37:34 418

原创 Qt debug中的exe文件运行时显示缺少Qt5Cored.dll

在Qt安装目录的bin目录(笔者这里的路径是C:\Qt\Qt5.12.9\5.12.9\mingw73_32\bin)中找到该文件,把这里的Qt5Cored.dll文件复制到debug文件夹中。再次运行程序则发现已经没有问题了。具体做法是右击“计算机”,在弹出的级联菜单中选择“属性”,然后在弹出的系统属性对话框中选择“高级系统设置”项。不过Qt5Cored.dll有101MB,而Qt5Guid.dll有175MB,幸好这只是debug版,后面讲解的程序发布时的release版需要的dll文件是很小的。

2023-03-16 17:53:43 2575

原创 【QT】foreach 用法

但是在QT中,可以使用这一个关键字,其主要原因是QT自己增加了这一个关键字,就像slots和signals、emit等一样。增加的foreach关键字在编译时会进行预处理。其中,varItem(variable)是容器Items(container)中的一个项,相当于:variable=container.item。其中,在C++11标准中,提供了一种新的语句:范围for (range for) 语句。只是这里使用的是 “:” 而不是 “,”。在标准C++中,并没有foreach关键字。

2022-11-10 10:26:28 242

原创 C++ 头文件 #ifndef #define #endif 作用及用法

头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是的。标识的命名规则一般是,,如:stdio.h。

2022-11-09 15:35:07 2541

原创 h文件中报错 unterminated conditional directive的原因

define 报错

2022-11-09 15:22:23 667

原创 Error while building/deploying project (kit: Qt 5.12.9 (msvc2017_64) 64bit) The kit Qt 5

常见qmake错误,存储路径不能有中文。

2022-11-09 15:09:04 633

原创 Git 基本操作

初始化参考博客https://www.jianshu.com/p/dd3be8cb5b90git首先需要设置SSH Key,会产生公钥和秘钥两个,在GitHub输入公钥,并用秘钥来连接由几台电脑需要设置几个SSH(公司,家里)git config --global --list user.name=koumoemoe [email protected] -t rsa -C @qq.com $ vim /Users/koumoemoe/.ssh/id_rsa

2022-03-18 12:24:41 455

原创 【Spring框架】IOC原理

容器的概念在学习Spring框架时,我们遇到的第一个也是最核心的概念就是容器。什么是容器?容器是一种为某种特定组件的运行提供必要支持的一个软件环境。例如,Tomcat就是一个Servlet容器,它可以为Servlet的运行提供运行环境。类似Docker这样的软件也是一个容器,它提供了必要的Linux环境以便运行一个特定的Linux进程。通常来说,使用容器运行组件,除了提供一个组件运行环境之外,容器还提供了许多底层服务。例如,Servlet容器底层实现了TCP连接,解析HTTP协议等非常复杂的服务,

2021-08-05 11:30:13 73

原创 JDBC编程

Java为关系数据库定义了一套标准的访问接口:JDBC(Java Database Connectivity)在介绍JDBC之前,我们先简单介绍一下关系数据库程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。而如何定义数据的存储格式就是一个大问题。如果我们自己来定义存储格式,比如保存一个班级所有学生的成绩单:你可以用一个文本文件保存,一行保存一个学生,用,隔开:Michael,99

2021-06-13 15:03:04 61

原创 Error: listen EADDRINUSE: address already in use

问题描述:在给新建的vue项目搭环境时,输入npm run dev后出现Error: listen EADDRINUSE: address already in use错误。解决方法(本人使用mac系统):在控制台输入sudo lsof -i:端口号,查看被占用进程的pid,再输入sudo kill -9 pid 即可杀死进程。...

2021-06-07 17:30:32 2633

原创 Java 实例 - instanceof 关键字用法

Jinstanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。以下实例创建了 displayObjectClass() 方法来演示 Java instanceof 关键字用法:Main.java 文件代码:/* author by runoob.com Main.java */import java.util.Array

2021-05-18 16:39:02 82

原创 Java中子类对象的实例化过程

子类对象在实例化时,子类对象会默认先调用顶级父类再是上一级父类中的无参构造函数,然后再调用子类构造构造方法。1 代码class Person{ String name ; int age ; public Person() // 父类的构造方法 { System.out.println("***** 父类构造:1. publicPerson()") ; }}class Student extends Person{ Str

2021-05-18 15:11:26 341

原创 【Java】为何Java中子类重写方法的访问权限不能低于父类中权限

因为 向上转型及java程序设计维护的原因例:假设一个父类A 拥有的方法 public void setXXX(){} 可以被其他任意对象调用这个方法被子类B 覆写后 为 void setXXX(){} 即 默认的 访问权限 只能被本包极其子类 所访问假设 其他包中的对象 C 调用 方法为:get( A a){a.setXXX();}而此时传入的对象为B类对象,假设为b此时b将转型为a但是b中的setXXX() 调用权限已经被缩小了这将造成错误。所以子类对象不能比父类对象

2021-05-18 14:59:35 933

原创 C++ substr 用法

有两个参数,一个参数是起始位置,一个参数是截取长度。s.substr(pos, len);string s="abc";string sub=s.substr(0,1);//从第0位置截取1个长度的字符串

2021-03-19 09:20:48 514

原创 深入浅出——理解c/c++函数指针

函数的类型与地址我们来看下面这个典型的函数:int foo(){ return 5;}显然foo 是函数名,而int是函数返回值的类型。但是,函数有类型吗?有,函数有自己的类型,比如上面这个函数的类型即为“无参数且返回类型为整型”的函数。我们可以这么表示这种类型int (*somefunction)(),同样的,如果是“有两个整形参数且返回值是布尔型”的我们可以这么表示bool (someotherfunction)(int, int)有人认为这个不属于函数的类型,其实吧我只是觉着这么

2021-03-08 11:26:07 130

原创 智能指针与 引用计数 写时拷贝 &智能指针的简易实现

引用计数要正确的理解智能指针,首先必须理解引用计数技术。深拷贝、浅拷贝的概念深拷贝优缺点:优点:每一个的对象(哪怕是通过拷贝构造函数实例化的对象)的指针都有指向的内存空间,而不是共享,所以在对象析构的时候就不存在重复释放或内存泄露的问题了。缺点:内存开销大浅拷贝优缺点:优点:通过拷贝构造函数实例化的对象的指针数据变量指向的共享的内存空间,因此内存开销较小。缺点:对象析构的时候就可能会重复释放或造成内存泄露。​ 鉴于深拷贝和浅拷贝的优缺点,可采用引用计数技术,既减小

2021-03-06 21:44:46 304 1

原创 智能指针及RAII

智能指针及RAII问题C++中最令人头疼的问题是强迫程序员对申请的资源(文件,内存等)进行管理,一不小心就会出现泄露(忘记对申请的资源进行释放)的问题。// C++auto ptr = new std::vector<int>();//使用了垃圾回收技术,不在需要人为管理,相关的虚拟机会自动释放不需要使用的资源。// JavaArrayList<int> list = new ArrayList<int>();# Pythonlst = list(

2021-03-06 21:39:37 185

原创 C++链接属性

编译器将.cpp编译成.obj,而.obj就是编译单元。  一个程序,可以由一个编译单元组成,也可以由多个编译单元组成. 如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧。那么就是一个.cpp对应一个.obj,然后将所有的.obj链接起来(通过一个叫链接器的程序),组成一个.exe,这就是程序了。  如果一个.cpp要用到另一个.cpp定义的函数怎么办?  只需在这个.cpp中写上他的函数声明就可以了,其余工作由链接器帮你完成,你可以随便调用该函数,链接器将所有的.obj连接起来,但是注

2021-03-06 12:52:09 240

原创 Markdown语法

# 一级标题## 2### 3#### 4##### 5###### 6**加粗***斜体*<u>下划线</u>~~删除线~~>引用吗>1>2>2>3* 1* 2* 3* [x] 1* [x] 2* [ ] 3[官网](https://www.yinxiang.com/)![52a81d5986041868c096279628aec196.png](evernotecid://B5C0B251-D9A0

2021-03-05 01:57:43 90 1

原创 使用终端操作数据库

1.如何查看有什么数据库? show databases;2.如何选择数据库? use databasesName;3.如何查看该数据库中有哪些表? show tables;4.如何查询表中的数据? select * from tableName;5.如何退出数据库服务器?exit; 6.如何在数据库服务器中创建自己的数据库? create database databaseName; 7.如何创建一个数据表? 创建一个pet表create T

2021-03-04 23:50:27 196 2

原创 继承(基类,父类,超类),派生类,子类

一:继承中的访问权限关系。1.基类,父类,超类是指被继承的类,派生类,子类是指继承于基类的类.2.在C++中使用:冒号表示继承,如class A:public B;表示派生类A从基类B继承而来3.派生类包含基类的所有成员,而且还包括自已特有的成员,派生类和派生类对象访问基类中的成员就像访问自已的成员一样,可以直接使用,不需加任何操作符,但派生类仍然无法访问基类中的私有成员.4.在C++中派生类可以同时从多个基类继承,Java 不充许这种多重继承,当继承多个基类时,使用逗号将基类隔开.5.基类访问控

2021-03-04 23:47:49 2696 1

原创 重载overload、覆盖override、隐藏hidden

《高质量C++/C编程指南》已经清晰的列出了重载函数的特性:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。这里注意:重载与返回值无关所以,仅仅靠返回值,是不能成为重载判定条件的。覆盖override(也成重写)覆盖,是指 派生类函数覆盖基类函数,只作用于派生类,特性如下(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。这里会用到虚函数,实际上虚

2021-03-04 23:47:07 140 2

原创 new与malloc的10点区别

New表达式为特定的类型分配内存,并且在新分配的内存中构造一个该类型的对象;自动运行合适的构造函数来初始化每个动态分配的类类型对象。申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放

2021-03-04 23:46:40 63 1

原创 浅谈C++内存管理

1.从内存对齐讲起对于结构体变量内存对齐遵循以下三个原则:变量的起始地址能够被其对齐值整除,结构体变量的对齐值为最宽的成员大小。结构体每个成员相对于起始地址的偏移能够被其自身对齐值整除,如果不能则在前一个成员后面补充字节。结构体总体大小能够被最宽的成员的大小整除,如不能则在后面补充字节。此外还有编译器的默认对齐值,一般默认对齐值为4(结构体的实际对齐值会取结构体对齐值和编译器默认对齐值中较小的那一个)。那么为什么要内存对齐?为了减少使用的内存为了提升数据

2021-03-04 23:46:04 178 1

原创 CLion及Cmake安装教程

1.About CLionCLion是跨平台的IDE可以在Windows,macOS和Linux上安装和运行CLion可以使用哪些编译器和调试器?和VS不一样,CLion需要自己安装额外的环境支持。类似与java的jdk之类的编译器,比如MinGW。CLion 支持 GCC, Clang, andMicrosoft Visual C++ 编译器不同编译器编译出的代码会有效率上的差距,应该统一编译器。需要提前安装的东西在Windows上配置CLion在Windows上,配置C

2021-03-04 23:45:15 7941 1

原创 关于GitHub上传的注意事项

在IDEA里将项目设置成git仓库在GitHub上新建resposity,注意不要加readme,会在后面的push环节出错在本地仓库的命令行下输入git remote add origin [email protected]:kristengao/best-fit-decreasing.gitfatal: 远程 origin 已经存在。git remote rm origingit remote add origin [email protected]:kristengao/best-fit-de.

2021-03-04 23:40:23 96 1

原创 CmakeList的书写方式

cmake_minimum_required(VERSION 3.15)project(bin_packing_problem)set(CMAKE_CXX_STANDARD 14)file(GLOB SOURCES BFD.h //*号对应具体的文件名 BFD.cpp commonFunction.cpp commonFunction.h bestFit.cpp b.

2021-03-04 23:39:28 167 1

原创 【LeetCode】7. 整数反转

7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1由

2021-01-21 20:12:39 74 1

原创 【LeetCode】5. 最长回文子串

暴力。暴力的思路就是对于每一个划分都去判断这是不是一个回文。这每一个划分的依据是无脑暴力n的平方复杂度,判断也需要n的复杂度,这就是n的三次方的复杂度。想到可以用动态规划,因为回文的中间任然是回文,这就减少了划分。动态规划的形式也是比较特别,we call it 区间型。...

2021-01-20 20:10:56 51

原创 【LeetCode】3.最长无重复字串 暴力和双指针

3.最长无重复字串首先想到的是暴力解法,对于每一个字符以他为首开始遍历,直至遇到和已经遍历的字符集中相同的字符则停止遍历,更新答案。判断是否相同可以用哈希表来判断优化:不需要从第下一个开始遍历,会有很多不需要的比较。只需要从重复字符的下一个字符开始遍历即可,那么就需要维护一个左边届,这个左边届改变的时候是随着遇到了重复的字符 哈希表出库的过程。代码//1228 滑动窗口 移动左边届直到哈希表里不存在重复元素class Solution {public: int lengthOfL

2021-01-15 17:53:09 67

原创 【LeetCode】构造二叉树

构造二叉树有两种办法前序+中序后序+中序这两种方法的思路是相同的,都是用前序(第一个元素)或者后序(最后一个元素)来对中序数组进行划分成左右数组,再根据划分的中序数组的大小来划分前序/后序数组。由于需要不断的进行划分,我们首先想到的是递归的办法递归的返回值一定是TreeNode型的,因为需要根据新建的结点构建二叉树;递归的参数列表有对数组的引用,有前序/后序的起始和终止,有中序的起止和终止;递归的主体部分是对数组的划分;再进行root->left和root->right 的递

2020-10-12 09:10:11 448

原创 【LeetCode】261. Graph Valid Tree(判断图是否为树)

Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to check whether these edges make up a valid tree.For example:Given n = 5 and edges = [[0, 1], [0, 2], [0, 3], [1, 4]], return true.

2020-10-10 20:11:17 481

原创 C++ 字符串分割逗号——史上最优雅的一个实现

C++11以前有很多原因不能提供一个通用的split,比如说需要考虑split以后的结果存储在什么类型的容器中,可以是vector、list等等包括自定义容器,很难提供一个通用的;再比如说需要split的源字符串很大的时候运算的时间可能会很长,所以这个split最好是lazy的,每次只返回一条结果。C++11之前只能自己写,我目前发现的史上最优雅的一个实现是这样的:void split(const std::string& str, std::vector<s

2020-10-09 11:34:54 2972

原创 【LeetCode】二叉树的路径问题(所有路径,路径之和)

路径问题涉及回溯回溯一般和递归捆绑在一起一般递归函数为void型参数有结点,结果类型的一个遍历变量,(如果需要存放路径)定义一个容器存放函数体首先第一步把结点值放入遍历变量中,然后判断是否是叶结点,是则进行相应处理,并且return;如果不是则递归(遍历变量还是path,函数中处理),并且回溯;迭代法中的回溯一般使用两个栈来模拟一个栈用来遍历二叉树;一个栈用来模拟递归用来存放和当前结点对应的已经遍历的路径;同时pop更新,同时压入栈(结点,当前路径(注意会改变变量的情况,设置.

2020-10-06 16:03:04 3199 1

原创 【C++】char转变为string

char c='a';//注意 使用to_string 方法会转化为char对应的ascii码//原因是 to_string 没有接受char型参数的函数原型,有一个参数类型//为int 的函数原型,所以传入char型字符 实际是先将char 转化//为int 型的ascii 码,然后再转变为string//以下输出结果为 97cout << to_string(c) << endl;...

2020-10-06 10:40:37 498

原创 【LeetCode】二叉树的深度(最大深度,最小深度, 完全二叉树的节点个数,平衡二叉树)

前序遍历和后序遍历的代码区别前序的递归函数的 返回值为空;参数部分含有结果值;return;后续的递归函数的 返回值为求值的类型; 参数部分不含有结构值; return 类型+1;104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大

2020-10-05 22:20:29 1479

原创 【LeetCode】对称二叉树,相同的数

二叉树的题目都有两种解法,一种递归法,一般配合着回溯,一种迭代法,配合着栈和队列101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3递归法思路:比较两个子树是否相同,子树的比较分为内侧和外侧,结果

2020-10-05 20:57:25 427

原创 【LeetCode】二叉树遍历总结 前中后层序

二叉树的遍历分为深度优先遍历和广度优先遍历,深度优先要求先进后出,因此使用栈,广度优先搜索要求先进后出,因此使用队列。深度优先遍历分为前后中序遍历。三种顺序都有递归和迭代两种方法。迭代就是用栈模拟递归。遍历顺序前序中左右中序左中右后序左右中层序从左到右1 层序模板struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int x):val(x),left(NULL),r

2020-09-26 16:36:12 105

原创 【LeetCode】五道题搞懂二叉树层序遍历

102. 二叉树的层序遍历102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree node. * struct TreeNode {

2020-09-26 10:32:20 94

空空如也

空空如也

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

TA关注的人

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