自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ static 讲解。。。 哎好,还没讲呢

先让我们在类中声明一个static修饰的变量如下class A {private : static int i; int j;public : const void setI (int i) { this->i = i; } const int retI () { return i; }};in...

2020-03-30 13:56:40 91

原创 游戏寻路算法基础篇 A*算法入门

在游戏中经常需要进行寻路操作,比如点击目标点,主角就自动从当前位置走向目标点,这件事情对人来说是非常简单的,但是计算机想完成这个问题却要花费一番周折!下面就让我看看要怎么解决问题吧。 相信大家最常想到的就是两点之间线段最短这条定理,不过只在起点和终点可视可达的情况下,可以这样做。但是如上图中...

2020-03-30 00:31:22 324

原创 C++ std11 标准相较于 C++99 标准多了哪些 (基础篇)

1.auto关键字,更加有利于遍历数组2.stl容器的初始化3.构造函数新增了初始化列表4.多线程thread 不需要自己手写了5.智能指针 shared_ptr6.lambda 函数表达式...

2020-03-26 22:53:15 842

原创 C++ 内存结构 基础篇

先看这样一段代码,其中的静态成员函数可以被直接通过类调用,但是非静态成员函数不可以,只能实例化对象后才能调用。这是为什么呢?#include <iostream>using namespace std;class A {private: int a;public: void func (int a) { this->a = a...

2020-03-26 14:19:20 621

原创 C++ 虚继承 虚基类 多继承 详细解读

首先要说一下多继承,虚基类和虚继承都是在多继承的一种情况下存在的内容。多继承是子类继承自多个父类的继承方式。但是在多继承的过程中,存在这样一种情况,一个基类A分别被中间基类B、C继承,然后D又继承了B、C,此时就出现了问题?如果子类D使用父类B或者父类C独有的成员变量,这时没有问题。但是如果D使用的是A的成员变量,编译器就不知道使用的B继承自A的还是C继承自A的,产生了一个语义模糊的概...

2020-03-26 01:02:52 336

原创 override overwrite overload 三者之间的区别

override 覆盖 父类继承到子类,子类中的函数可以覆盖父类的虚函数,子类函数名字、返回值、参数列表都要和父类的虚函数一样。但是又重新写了新的函数体以覆盖父类的函数体。overwrite 重写 和 重载几乎是一样的,在有一些书里说是不一样,但是不用管,一般的情况下不会遇见这种情况overload 重载 在同一个类中,为了实现不同的功能但是函数的名字又是一样的,这样的函数返回值、参数列表...

2020-03-25 18:22:50 246

原创 final关键字的用法

#include <iostream>using namespace std;// 被final关键字修饰的类无法被继承、被final修饰的虚函数无法被重载(overload)or重写(override)class A {public: virtual void func1 () { cout << "func1" << ...

2020-03-25 15:35:14 92

原创 子类和父类相互转换的关系

首先让我们看一个例子#include <iostream>using namespace std;class A {private: int a;public : //A () {} func () { cout << "A" << endl; }};class B : public A ...

2020-03-24 19:08:18 643

原创 程序调用类的普通成员函数和虚函数之间的区别

类中的虚函数是通过动态改变虚函数表,访问虚函数表中的某一个函数,动态生成的。但是普通的成员函数是在编译的时候就分配了内存空间,静态生成,存在静态区。像变量一样的调用...

2020-03-23 15:31:24 318

原创 C++ vector push_back时的扩容情况

vector的扩容并非,在push_back时直接增加需要插入的内存大小。而是当内存不够时直接对vector进行倍数扩容。C++标准规定vector有一个扩容因子,在需要增加vector大小的时候,将vector容量扩充为为自身的(1,2]倍。(绝大多数情况是两倍,但是并没有硬性规定一定是两倍,按照stl实现者自身的规定即可,也有扩容1.5倍的)原因:从两个方面来分析1.如若是不按...

2020-03-23 13:32:30 1250 1

原创 跟HR谈工资的技巧 纯干货 找工作必看

1.仔细了解公司背景,对发展历史有初步了解2.了解你将进入的部门和其开发的产品/项目3.将产品和项目结合当前市场做出分析4.仔细想想自己对当前部门的影响5.结合自己的项目经历说明自己的有点和缺点,并对自身的职业生涯做计划6.如果手里能握有几个offer,合适的时机提出可以加大自己的筹码如果能做到以上几点,在hr问你工资的时候,会非常有优势...

2020-03-22 17:50:01 945

原创 类和对象的区别 面试

对象是生活中实实在在存在的实体,而类是从大量同种对象中根据不同的属性抽象出来的属性集合。

2020-03-22 17:41:59 291

原创 有1块、4块、5块的钱币,给n块钱找到最少的钱币租合

一共有1、4、5三种面值的货币,现在给定一个目标货币值n,问怎么选取货币使得选出的货币最少,并输出每种货币的数量例如:input :6 output : 1,0,1这道题的思路不能用贪心算法,因为货币的面值并不是最小组成的面值(1、2、5就可以用贪心),所以要bfs找一圈才可以。代码如下#include <iostream>using namespace std;...

2020-03-22 16:49:16 456

原创 C++ STL set 和 map 的区别

map和set都是关联式容器,底层也都是由红黑树实现的。set称为集合、map称为键值对的集合。即set只有key没有value或者说只有value没有key,但是map既有key也有value二者是相关联的。通过寻找map的key来提取value。...

2020-03-21 23:12:23 358

原创 C++ STL map 和unordered_map 区别

map是有序的(按照二叉搜索树)存贮结构。底层是一颗红黑树,本质上是不平衡的二叉搜索树。而unordered_map是无序存储的配对容器,底层数据结构是哈希表。其实set这种也同map...

2020-03-21 23:07:55 268

原创 内联函数和宏定义的区别

宏定义必须带井号,在预处理阶段被替换成目标代码,或者对目标代码块进行替换。内联函数是一个函数,在编译阶段,通过编译器针对目标位置的代码,省去了函数调用的开销,将目标函数替换成代码。...

2020-03-20 19:06:05 195

原创 TCP 为什么要三次握手和TIME_WAIT

TCP建立连接的三次握手在建立连接的时候Client端会向Service端发送请求,发送SYN同步信息。但是这个信息有时候会滞留在网络中,在上次TCP连接释放之后才达到S端。会导致S端误以为C端又发送了一次数据请求,然而实际上C端并没有这么做。如果TCP建立连接没有三次握手,而是两次握手,那么此时的S端就会一直发送数据给C端,造成信道中大量垃圾包,并且极大的消耗了S端的资源。直到保活计时器到时...

2020-03-20 17:29:43 133

原创 Docker 学习笔记 (一)

因为要使用虚拟环境,打算用virtualenv对python版本进行区分,但是virtualenv毕竟只是python的一个包,不具有普遍性,所以最终还是选择学习docker。 docker是一种容器的虚拟化,是操作系统的虚拟化。创造一个隔离的运行环境,使得开发者面向服务进行架构,实现高内聚,低耦合,只执行单一任务。...

2020-03-20 12:18:43 67

原创 ssh连接服务器,长时间无操作服务器和客户端的连接断开 解决方案

这个断开都是服务端给客户端断开,因该没有客户端断开服务端的。所以想解决这个问题需要修改服务器段的ssh 方法如下1.打开/etc/ssh/sshd_config 文件2.找是否有ClientAliveInterval 和 ClientAliveMax 两个关键字如果有,直接在修改为ClientAliveInterval 60ClientAliveMax 3如果没有,在...

2020-03-20 09:44:59 422

原创 python pip 换源的方法

pip install <aimPackage> -i url

2020-03-19 15:24:29 128

原创 configure: error: no acceptable C compiler found in $PATH

Linux安装是出现如上这个问题的原因就是没有安装GCC,apt-get install gcc 即可

2020-03-19 14:48:41 122

原创 C++多态的方法 (不全持续更新中)

1.重载2.重写3.虚函数4.模板

2020-03-18 15:24:59 68

原创 正则表达式

正则表达式绝对是字符串修改,文件查询时的关键利器。下面就一起走进正则表达式的世界吧先从我们最常用的 * 通配符入手,* 表示匹配任意多个任意字符。比如在linux下搜索文件命令 find / -name *abc* 是用来搜索当前系统中所有名字中带有abc关键字的文件。...

2020-03-17 22:19:13 60

原创 进程转换

进程有三种状态分别是:执行态,就绪态,阻塞态有四种转换方式执行->就绪 :时间片轮转结束,自动进入就绪态等待下一次唤醒就绪->执行 :时间片轮转到目标进程,唤醒进程执行->阻塞 :执行途中需要资源,当前进程中并没有这个资源,需要阻塞进程等待资源阻塞->就绪 :被阻塞的进程得到了想要的资源,等待被唤醒...

2020-03-16 14:26:49 105

原创 进程间通信方式五种

1.管道2.消息队列3.信号量4.共享内存5.socket

2020-03-16 13:54:04 130

原创 TCP释放连接时的time_wait为什么要等待2MSL

MSL MAX Segment Lifetime。最大数据段生存时间在客户端发送完ACK确认TCP连接关闭后,一是要清空链路中全部的属于当前客户端的报文。防止对后续产生影响。其二是防止服务器端没有收到ACK报文,之后还可以再重传一次报文保证TCP连接释放。...

2020-03-16 13:48:21 501

原创 leetcode 1035 不相交的线

我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。以这种方法绘制线条,并返回我们可以绘制的最大连线数。示例 1:输入:A = [1,4,2], B = [1,2,4]输出:2解释:我们可以画出两条不交叉的线,...

2020-03-16 11:59:11 489

原创 leetcode 419 甲板上的战舰

很有趣的一道题,话说甲板上为什么还有战舰啊,真就船娘呗代码如下:int countBattleships(vector<vector<char> >& board){ int ret = 0; // 只有左上角的可以是 for (int i = 0; i < board.size (); i++) { for...

2020-03-16 10:03:50 192

原创 无重复的最长子串

使用滑动窗口即可,比较简单#include <iostream>#include <string>using namespace std;int lengthOfLongestSubstring(string s) { if (s.length () == 1) return 1; int i = 0, j = 1; int r...

2020-03-16 00:03:55 55

原创 C++ 不使用加号计算加法 (位运算加法)

位运算的按位与可以无进位的计算加法,但是还要有进位就可以使用按位异或,是计算进位的,不过要左移一位才是进位。所以将二者相加,之道不存在进位即可递归代码如下:#include <iostream>int sum (int a, int b) { return b ? sum (a^b, (a&b) << 1) : a;}int main...

2020-03-15 19:52:50 670 1

原创 leetcode 1249. 移除无效的括号

给你一个由 '('、')' 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 '(' 或者 ')' (可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。有效「括号字符串」应当符合以下 任意一条 要求: 空字符串或只包含小写字母的字符串 可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」 ...

2020-03-15 03:05:15 162

原创 米哈游笔试经验

很可爱的一个公司,从题里面都可以看出来。先是10道多选题,都是在应该都是在网上可以查到的那种,把牛客都做一遍就行。然后是两道编程,一看就是leedcode上的问题,难度适中,需要想一下才知道答案。1.leetcode 1249 - 移除无效的括号2.leetcode 1035 - 不相交的线...

2020-03-15 03:03:49 10135 9

原创 结构体struct内存对齐

原因:结构体内存对齐是因为,对于计算机来说读取4个字节的内存空间比读取1、2、3个字节的要更高效。但是也根据编译器而定,而且自己也可以改变对齐内存的大小用 预编译命令#pragma pack (n)规则:1.第一个元素offset偏移到地址为0的内存上。2.之后的元素对齐到对齐数大小的整数倍的偏移量上。何为对齐数:对齐系数和元素大小的较小值,每个成员变量除了第一个成员都有对...

2020-03-15 01:23:47 188

原创 const关键字的作用

const用来表示该内存空间不可在初始化之后被改变(mutable关键字修饰后除外)用const修饰函数有两种,一种是在函数名前加修饰符,二是在函数后面加修饰符在函数前加意味该函数的返回值是const类型的,同const变量const加在后面意味该函数不能改变类内的成员变量,是一个只读函数。而且只能是非静态函数和成员函数才能加这个cosnt关键字。可以加强程序的可读性以及防止函数编写时...

2020-03-14 23:04:56 602

原创 vector 的capacity、size和sizeof

vector中的size()函数返回当前数组的元素数量,push_back进去几个就返回几个。capacity是返回数组的大小,跟插入的数量有关,vector的容量size是比其数组size第一个大的二进制数。即可能的capacity值为1248...102420484096...

2020-03-14 11:39:23 1635

原创 二维vector不能用直接访问的方式赋值,要pushback进去

对于二维vector可以使用push_back的方法进行赋值,先push_back出一维数组,再将这个一维数组push_back进二维数组。直接访问的vector[][]方式可以访问数组,不过不能写入数组。不过为什么我不知道(内存是怎么运行的不知)。不过可以先初始化一个数组(类型都可以),在vector初始化的时候,直接用构造函数将该数组写入vector中,在将一维vector写入二维ve...

2020-03-11 14:36:58 1312

原创 判断某个点是否在多边形内部

基本方法:以该点做水平线,相交于多边形,与多边形左边和右边相交的点数都是奇数则在内部,有一个是偶数则不在。不过这时要考虑与多边形某边相交,或者某点相交的情况,1.如果多边形与某点相交则只算一次相交2.如果与边相交(即该边水平)则这条边不算相交,则该点与这条边和这条边直连的边共计有一个交点。3.该点落在某边上,直接判断在多边形外部...

2020-03-10 13:46:50 835

原创 招商银行网络科技中心 C++开发笔试经验

1.首先是30道通用技术题,我的乖乖,那简直不是人做的题,每一道都有大坑,全是某个领域里极深的知识很少有听说过的知识点,共40分钟,要是时间够也好说,所以不会只能有选择性的做题2.有四个选座部分,看你投的什么职位,选对应的试题3.C++试题全是编程题,这样挺好的,不会有作弊的情况出现。(不过后来去搜了都是原题)三道题都比较简单,跟前面通用知识简直鲜明对比,做前面的时候都想放弃了,...

2020-03-10 13:36:08 2178

原创 字节跳动2020春招C++特效引擎开发岗 面经凉

前期准备:C++编译过程:1.预处理:将#define #include 内联函数 ifdef ifndef等等关键字替换2.编译3.汇编4.连接

2020-03-10 13:34:00 1007

原创 用两个栈实现队列

栈是后进先出的方式,队列是先进先出(FIFO)方式。所以将一个栈设置为弹出栈,另一个设置插入栈。编码前先设定s1为插入栈,s2为弹出栈比较简单,代码如下#include <iostream>#include <stack>using namespace std;template <class T>class MQueue {priva...

2020-03-10 00:51:57 87

空空如也

空空如也

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

TA关注的人

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