自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 力扣每日一鸡:整数替换

给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/integer-replacement题解:将奇数转偶数的策略改变为除二后向上下取整int num(int n){ if(n == 1) { return 0; } if(n % 2 == 0)

2021-11-19 13:36:28 402 1

原创 [力扣每日一鸡】——213.打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber-ii著作权归领扣网络所有。商业转

2021-04-15 21:46:05 284 2

原创 Kubernetes(k8s):概述、yaml文件和pod

Kubernetes概述Kubernetes是谷歌在2014年开源的容器化集群管理系统使用k8s进行容器化应用部署使用Kubernetes利于应用扩展Kubernetes目标实现让部署容器化应用更加简洁和高效k8s集群结构组件master组件(主控节点)API server集群统一入口,以restful方式交给etcd存储。scheduler节点调度,选择node节点应用部署controller-manager处理集群中常规后台任务,一个资源对应一个控制器et

2021-03-12 17:41:00 487

原创 Docker(一):docker概述和基本操作

工作需要学习docker特此记录学习视频和学习顺序皆来自于B站up主遇见狂神说,只为做学习笔记up主个人主页:https://space.bilibili.com/95256449/video 记得三连up主docker概述docker安装教程:https://www.bilibili.com/video/BV1og4y1q7M4?p=6(别忘了给up主三连)docker概述Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的

2021-03-08 21:23:50 268

原创 菜鸡的秋招总结

本人菜鸡一枚,21届毕业生,计算机科学与技术专业我是从8月份开始投递简历的,前前后后投递了一百多家吧到现在工作确定,历时三个月目前手上offer:腾讯云区域研发,小米,宁波银行下面分享一下秋招经验和需要注意的 地方吧奇安信这是我秋招投递的第一个公司,因为之前特别佩服的学长在这个公司,秋招刚开始的时候莫名崇拜,特别想去,当时还啥也不懂,没有经验,笔试答的一塌糊涂,后面就没消息了。后来偶然的机会在牛客上看到简历直达部门leader投递了依旧没有消息。目前为止,奇安信依旧是拒我于千里之外。奇安信,笔

2020-11-22 14:11:15 2303

原创 GO语言学习笔记3—控制流程

if语句在之前学习的编程语言和平时编写代码的过程中运用最多的语句可能就是if了所以在此对if 的作用不做介绍仅仅针对go语言中if的使用方法做一下介绍现在来看一下go中的一段if代码package mainimport("fmt")fun main(){ b := true if b { fmt.Println("b is true!") }}程序解读:声明变量b并将其初始化为true,这个变量被推断为布尔类型使用一条if语句判断b是否为true由于这条if语句的结果为

2020-11-20 20:40:30 135

原创 go语言学习笔记(2)——函数

函数的概念就不过多解释了函数的结构func main(x int,y int)int{return x + y}func指出这是一个函数的开头位置,addup是函数名,接下来是参数列表。接下来返回值,这里的类型是int类型,接下来两个大括号之间是函数体。返回值go的返回值可以是一个也可以是多个,返回多个值类似于c语言中返回结构体值返回单个值package ainimport "fmt"func isEven(i int)bool{return i % 2 == 0}fun

2020-11-18 11:35:26 175 1

原创 Go语言学习笔记1——熟悉go语言特点和变量声明

由于工作原因开始学习go语言,在此开始记录学习笔记并分享给大家,如有不足的地方请大家多多指教参考资料:乔治·奥尔波的《go语言入门经典》、李晓钧老师的《深入学习Go语言》、柴树衫、草春晖老师的《Go语言高级编程》go的本地环境配置可以参照goLang官网(大把的教程)入门go的第一段代码熟悉go语言package mainimport("fmt") //类似于头文件声明func main(){fmt.Println("Hello Wrold!")}吐槽一下:说实话,C接触时间长了看着

2020-11-17 17:51:54 353

原创 腾讯云区域研发后端一二面面经

作者:董小姐手中的兰州链接:https://www.nowcoder.com/discuss/560011?toCommentId=8080356来源:牛客网问的比较基础70min操作系统:进程 线程的区别与联系 进程线程共享的资源程序运行的虚拟内存划分临界区锁(普通锁和读写锁的区别)new开辟的位置C++:智能指针(区别,作用)面向对象的含义STLnew和malloc数据库:数据库的基本操作引擎B树和B+树的区别为什么范围...

2020-11-10 15:01:55 864

原创 校招复习——双向链表

typedef int ElemType;//双向链表节点数据结构typedef struct DuLNode{ DuLNode *prev; DuLNode *next; ElemType data;}DuLNode;//双向链表数据结构typedef struct{ DuLNode *head; int size;}DuList;//购买一个节点DuLNode * BuyNode(DuLNode *pr = NULL, DuLNode *nt = NULL){ DuLN

2020-08-23 14:03:55 153

原创 C++(18)——设计模式:工厂模式和观察者模式

设计一个不能被继承的类1、单例模式2、虚继承class A;class B{public: friend class A;private: B(){}};class A : virtual public B{public: A() {}};class C : public A{public: C(){}};class A 是B的friend,所以A可以调用B的构造函数。因为A虚继承了B,所有继承A的子类,都必须自己实例化B,以保证B在对象中的唯一性。所以,C继承A

2020-08-15 11:47:58 210

原创 C++(17)——泛型算法绑定器和智能指针

泛型算法将用代码和注释进行讲解/*泛型算法特点一、泛型算法的参数接受的都是迭代器特点二、泛型算法还可以接受函数对象绑定器 + 二元函数对象 =》一元函数对象bind1st:把二元函数对象的operator的第一个形参绑定起来bind2nd:把二元函数对象的operator的第二个形参绑定起来取反器not1 一元函数取反not2 二元函数取反*/int main(){ int arr[] = { 12,644,9,11,16,116,49,79,64 }; vector&l

2020-08-14 21:29:07 424

原创 C++(16)——迭代器和函数对象

迭代器所有迭代器都有*和++运算符的重载函数,甚至可能什么都不做const_iterator常量正向迭代器iterator正向迭代器reverse_iterator反向迭代器const_reverse_iterator常量反向迭代器back_insert_iterator 后插型迭代器front_insert_iterator 前插型迭代器insert_iterator 插入型迭代器Bidirectional iterator双向迭代器istream_iterator 输入流迭代器os

2020-08-14 18:57:24 285

原创 C++(15)——关联容器和海量数据查重

关联容器关联容器也是用来存放数据的,但是和顺序容器有很大的区别。关联容器的底层数据结构是红黑树分类有序关联容set:单集合容器multiset:多集合容器map:单映射容器multimap:多重映射容器无序关联容器unordered_set 单重集合unordered_multiset 多重集合unordered_map 单重映射表unordered_multimap 多重映射表方法find查找函数:二分查找count函数:返回容器中值为x的元素个数clear函数:清空容器

2020-08-14 18:48:08 311

原创 C++(14)——顺序容器和容器适配器

C++ STL 标准模板库一、标准容器vector 向量容器deque 双端链表容器list 链表容器二、容器适配器底层通过标准容器实现,但是对外部提供不同功能的接口stack 栈queue 队列priority_queue 优先队列三、关联容器无序关联容器 链式哈希表o(1)unordered_set 无序单重集合unordered_multiset 无序多重集合unordered_map 无序的单重映射表unordered_multimap 无序分多重映射表有序关联容

2020-08-14 12:15:07 252

原创 C++(13)——虚基类和C++四种类型转换

继承方式1、单继承(一个派生类只有一个直接基类)2、多继承(派生类有两个或以上的直接基类)3、菱形继承虚基类virtual修饰成员方法时叫虚函数,virtual修饰修饰继承方式时叫虚继承。class A{public:private: int ma;};class B:virtual public A**加粗样式**{public:private: int mb;};有虚基类的内存存储:当有虚继承的时候,基类的数据放到代码的最后面,在派生类数据前面加一个指向虚基类表

2020-08-13 16:54:04 394

原创 C++(12)——多态

多态多态的概念:统一接口,不同的响应方式。多态分为静多态(函数重载)和动多态(动态绑定)所谓静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法动多态是用虚函数实现的(动态绑定)class Base{public: Base(){} virtual void show(){cout<<"Base::show"<<endl;}

2020-08-13 12:53:36 149

原创 C++(11)——继承和派生

继承继承可以用一句话概括:继承的本质就是代码复用类与类之间的关系是组合继承。继承方式总结:1、外部只能访问对象public的成员,protected和private的成员无法直接访问;2、在继承结构中,派生类从基类继承过来的private的成员,但是派生类无法直接访问3、protecte和private的区别?在基类中定义的成员,想被派生类访问,但是不想被外部访问,那么在基类中,把相关成员定义成protected保护的;如果派生类和外部都不打算访问,那么在基类中,把相关成员定义成priva

2020-08-12 20:17:14 372

原创 C++(11)——再谈new和delete/内存池

再回顾一下new和malloc的区别(重点!!!面试必问)new和malloc 的区别1、malloc的返回值不安全需要进行类型转换,而new不需要。2、new是一个关键字、malloc是一个函数3、malloc需要用户输入开辟内存的字节大小,呢问,不需要计算开辟内存的大小。4、new开辟内存失败抛出bad_alloc异常,malloc开辟内存失败返回空指针5、malloc在堆上开辟内存,new开辟的空间叫做自由存储区。6、malloc只能开辟空间不负责初始化,new不仅可以开辟空间还可以初始

2020-08-12 13:56:29 369

原创 C++(10)——实现复数类和String类

复数类class CComplex{public: CComplex(int r = 0, int z = 0) :a(r),b(z) { } ~CComplex() { } CComplex operator+(const CComplex &com) { return CComplex(this->a + com.a,this->b + com.b); } void show() { cout << "实部:" <&lt

2020-08-12 13:52:11 324

原创 C++(9)——浅谈迭代器失效问题

迭代器是我们遍历容器的利器没在后面还会引入各种迭代器及其他作用我们先来实现一个简单的迭代器//迭代器一般实现为容器的嵌套类型//将这个类插入到之前写好的vector容器中 class iterator { public: friend class vector<T, Alloc>;//声明称友元类 iterator(vector<T,Alloc>*pvec,T *ptr = nullptr) :_pVec(pvec), _ptr(ptr) { _p

2020-08-12 13:32:42 328

原创 C++(8)——容器的空间配置器allocator

在上一个博客中我们用模板类实现了vector向量容器,但是向量容器存在一个问题我们来看看class Test{public: Test() { cout << "Test" << endl; }; ~Test() { cout << "~Test" << endl; };};int main(){ vector<Test> vec1; return 0;}但是输出结果缺如下,因为new 的时候会自动调用Test的构造函

2020-08-11 19:02:00 214

原创 C++(7)——函数模板和类模板

函数模板模板是实现代码重用机制的一种工具,它可以实现类型参数化, 即把类型定义为参数,从而实现了真正的代码可重用性。模板可以分为两类:一个是函数模板,一个是类模板。函数模板<>内是函数模板参数列表模板实例化:在调用点用具体类型替换虚假类型没有模板的实例化,模板中的错误无法发现函数模板不编译(永远不编译)函数模板的编译1、定义点 编译模板的头部2、调用点 编译模板实例化后的产物 ==》模板函数才是要被编译器所编译的模板的实参推演=》可以根据用户传入的实参类型,来推导出模板类型参

2020-08-11 16:39:00 379

原创 [力扣每日一鸡]——130.被围绕的区域

代码(官方解答):class Solution {public: int n, m; void dfs(vector<vector<char>>& board, int x, int y) { if (x < 0 || x >= n || y < 0 || y >= m || board[x][y] != 'O' || board[x][y] != 'A') { return; } if (board[x][y] != 'A.

2020-08-11 16:00:56 129

原创 C++(6)——static和单例模式

static关键字之前在C的面经总结中有对static进行详细介绍,就不多介绍了,今天我们重点来介绍C++中static用法。在类中,普通的成员方法在调用的时候编译器会自动添加一个this形参变量普通成员方法的特点:1、属于类的作用域2、调用该方法时需要依赖一个对象3、可以任意访问类的私有成员变量在成员变量前面加上static后,这个成员变量就是静态的成员变量静态的成员变量在类内只是一个声明一定要在类外进行定义和初始化(重点)静态成员变量不属于对象,而是属于类级别在成员方法前面加上st

2020-08-10 19:23:02 1227

原创 C++(5)——new和浅拷贝问题

前几天面试宁波银行的时候面试官问:C和C++的区别是什么?什么是OOP?靓仔语塞。。。。C是面向过程的语言,C++是面向对象的语言OOP(面向对象(工资)编程) OOD(面向对象的设计),OOA(面向对象的分析)举个最简单点的例子来区分 面向过程和面向对象有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择1、你要自己去准备原材料。2、去饭店!看出来区别了吗?这就是1是面向过程,2是面向对象。面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的。如果你突然不想吃鱼香肉丝了,想吃别的菜,对于1

2020-08-10 18:29:44 415

原创 C++(4)——函数重载和const修饰的指针、引用

函数重载C++三大特性:封装继承多态。今天说说是静态的多态——函数重载我们先来看一段程序int sum(int a,int b){ return a + b;}int sum1(double a,double b){ return a + b;}int main(){ int a = 10, a1 = 10; int b = 10.0, b1 = 10.3; int sum = sum(a,a1); cout<<sum<<endl; sum = su

2020-08-10 16:22:01 307

原创 C++(3)——形参带默认值的函数和内联函数

形参带默认值的函数形参带默认值得函数,在调用的时候可以不用传参数class base{public: base(int a = 0) { b = a; }private: int b;}int main(){//形参带默认值得函数用以下两种方式调用构造函数均可 base A(10); base B; return 0;}以上是一种参数的情况,当参数有两个及以上的时候给默认值的时候必须从右往左给无论是在定义的时候或者声明的时候都可以给定形参的默认值,且形参的默认值

2020-08-10 14:24:20 240

原创 [力扣每日一鸡]——696.计数二进制子串

给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。题解:通过比较前后两个字符串中得到最小值,即前后两个字符串的子串 int countBinarySubstrings(string s) { int ptr = 0, n = s.size(), last = 0, len = 0;//last代表当前位置得前一位置 while(ptr < n) { char c =

2020-08-10 13:10:35 111

原创 [力扣每日一鸡]——93.复原IP地址(详解)

算法思想转自https://leetcode-cn.com/problems/restore-ip-addresses/solution/hui-su-fa-xiang-xi-zhu-shi-luo-ji-qing-xi-by-ydong/ 仅用于个人学习复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: "25525511135"输出: ["255.2

2020-08-09 17:02:17 357

原创 C面经——基础部分

1、计算机内部的内存单位换算 1G = 2^10 M = 2 ^ 20 K = 2 ^30 B 1B = 8bit 例:100万个整形数据占多大? 答:1M2、fwrite函数的参数是什么?答:int fwirte(const void *ptr,int size,inr count,FILE * stream) ptr:指向保存数据的指针 size:每个数据类型的大小 count:数据个数 stream:文件指针 扩展:给定一个文件,如何计算文件的大小?提示:使用fseek

2020-08-09 11:54:05 1205 1

原创 TCP和UDP全解

TCP和UDP主要区别已经是现在面试必问的问题了TCP:面向连接 可靠的 字节流服务UDP:无连接 不可靠 数据报服务那么更深的还有几个问题:1、TCP是面向连接的,那么它是怎么连接的,底层代码是怎么实现的?2、TCP是可靠的,那么为什么说他是可靠的?它用什么机制来确保是可靠的?3、什么叫字节流服务,什么叫数据报服务?二者有什么区别?4、UDP为什么说他是不可靠的?5、TCP三次握...

2020-07-13 15:01:05 161

原创 校招复习——数据结构:单链表

typedef int LElemType;//节点数据结构typedef struct ListNode{ LElemType data; ListNode *next;}ListNode;//链表数据结构typedef struct{ ListNode *head; int size;}List;//购买一个节点ListNode * Buynode(){ ListNode *s = (ListNode*)malloc(sizeof(ListNode)); if(NUL

2020-07-13 15:00:17 138

原创 校招复习——数据结构:顺序表

顺序表#ifndef SEQLIST_H //防止重复包含头文件#define SEQLIST_H#define LIST_INIT_SIZE 10 //初始化顺序表最大元素个数#define LIST_INC_SIZE 2 //扩容倍数typedef int SElemType;//错误返回类型用枚举来表示typedef enum { OK = 1,//正确 ERROR = -1,//错误 POSERROR = -2,//位置错误 INITFAULT = -3,//初始化失

2020-07-13 14:49:26 226

原创 C++:从汇编角度详解函数调用栈

先来看一段代码:int sum(int a, int b){ int temp = 0; temp = a + b; return temp;}int main(){ int a = 10; int b = 20; int sum1 = sum(a, b); cout << sum; return 0;}有两个问题:main函数调用sun,sum执行...

2020-03-13 22:52:30 176

原创 C++:进程的虚拟内存空间的定义及其划分

任何语言编译都会产生两种东西:指令和数据在我们平常执行可执行文件,把可执行文件加载到内存中来执行,但并不是直接加载到物理内存中!!!在x86 32位的Linux系统下,当进程进入内存之后。linux系统会给当前进程分配一个2的32次方大小的空间(4G),我们把这一块空间称为进程的虚拟地址空间.text称为代码段,它用来存放程序在运行时 的指令.rodata 只读数据段 用来存放只读数据 ...

2020-03-10 21:43:18 581

原创 C++(2):virtual、explicit和template

C++继承:通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。举个例子:比如在之前引入联合体的学校信息管理系统,在学校信息分为职工信息和学生信息,两者信息有相同的部分,也有不同的部分,我们把相同的部分作为基类,把两者不同的部分作...

2020-02-04 17:46:35 1457

原创 C++(1):认识include、ifndef和ifdef

因为找工作的缘故,从头仔仔细细的学习一遍C++,有什么错误或者不足的地方还望各位大佬指出,共同学习,共同进步。学习的书籍是《C++Promer》预处理器指示符首先是include,头文件通过include指示符成为程序的一部分,预处理指示符用“#”来标识。#include有两种格式:第一种是#include<stdio.h>,文件名用<>括起来,表示是从系统给的库内...

2020-01-10 20:12:17 1966

原创 C语言文件操作相关

在程序员和磁盘之间有一个文件操作系统(适配层)在操作系统下只有两种文件:文本文件(ASCLL文件)、二进制文件(内存存储)。文件的三板斧:打开、读和写、关闭。打开函数 fopenfopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL.mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等) FILE *...

2019-09-22 14:51:13 133

原创 c语言malloc函数的用法和意义

当我们需要做一个成绩管理系统,人数可能为全校学生,也可能为一个班的学生,当我们开辟一个班的数组大小时,如果要存储整个学校的人数时,会出现内存不够用的情况;当我们开辟全校人数大小的数组时,输入一个班人数的大小时,会出现内存浪费的情况。为了应对上述问题,我们引入malloc函数。malloc时动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址mallo...

2019-05-22 19:26:14 276684 55

H5 基础机器猫

基础游戏开发H5机器猫<!DOCTYPEhtml>&lt;htmllang="en"&gt;&lt;head>&lt;metacharset="UTF-8"&gt;&lt;title>机器猫&lt;/title&gt;&lt;styletype="text/css">*{margin:0;padding:0;}.whole{width:800px;margin:20pxauto;/*border:2pxsol

2018-06-28

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

TA关注的人

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