自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

生活要有仪式感

做一个精致的猪猪男孩!

  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

转载 c/c++工程中的各种文件

lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运行。lib,dll,exe都算是最终的目标文件,是最终产物。而c/c++属于源代码。源代码和最终目标文件中过渡的就是中...

2020-01-03 14:07:17 881 1

转载 进程与线程相关(一)

程序和进程程序:是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁....)进程:是一个抽象的概念,指程序在计算机中的一次执行过程,进程是一个动态的过程描述,占有计算机的资源,有一定的生命周期,在内存上执行。并发:在操作系统中,一个时间段中有多个进程都处于已启动运行到运行完毕之间的状态。但任一个时刻点上仍只有一...

2020-01-03 13:31:06 194

转载 《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?

一个问题:如何限制一个类对象只在栈(堆)上分配空间?一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。1、静态建立类对象:是由编译器为对象在栈空间中分配内存...

2019-09-16 20:35:12 195

转载 防止头文件被重复包含的两种方法

在windows平台下,有一个很方便的宏:#pragma once指定当前文件在构建时只被包含(或打开)一次,这样就可以减少构建的时间,因为加入#pragma once后,编译器在打开或读取第一个#include 模块后,就不会再打开或读取随后出现的相同#include 模块.另外,还可以用条件编译语句来实现:#ifndef "XX_H"#define "XX_H"//&l...

2019-09-16 18:54:16 811 1

原创 排序算法总结

秋招手撕代码,最常见的就是排序算法。总结一下一、冒泡排序思路:假设数组长度为n,遍历数组n-1次,每次 遍历都能找出最大值,放于 末尾。void Solution(vector<int> data){ int i_length = data.size(); for(int i = i_length - 1;i > 0;--i) { ...

2019-09-16 17:48:30 114

原创 牛客网《剑指Offer》(25) 复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)题目分析复杂问题简单化,将该问题拆分成三步来实现,就简单多了。1、遍历链表,复制链表中的每个结点,并将复制的结点插入到该结点的后面。例如,原链表为A->B-...

2019-09-06 21:47:03 97

原创 牛客网《剑指Offer》(24)二叉树中某一值的路径

题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)题目分析此题属于典型的递归运算,最复杂的在于路径的存储,所以需要引入全局变量,防止值被覆盖。大致思路如下:1、递归跳出条件:找见符合路径:累计和等于输入值,左右子节点均为空。...

2019-09-06 16:19:59 106

转载 大话设计模式(14)抽象工厂模式

一、UML图二、概念抽象方法模式(Abstract Factory):提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。三、包含的角色(1)抽象工厂(2)具体工厂:包括具体工厂1和具体工厂2。具体工厂1用于生产具体产品A1和具体产品B1,具体工厂2用于生产具体产品A2和具体产品B2;(3)抽象产品:包括抽象产品A和抽象产品B;(4)具体产品:包括抽象...

2019-09-06 12:29:58 117

转载 大话设计模式(13)职责链模式

一、场景描述及UML图简单概括:适用于串序指向的策略,如算法流:A-B-C-D-E-F,各个算法依次指向,特定条件下某些算法可能会跳过。关键词:SetSuperior()二、概念职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。...

2019-09-06 11:58:20 123

转载 大话设计模式(12)单例模式

一、UML图二、概念单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点。[DP]通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没有其他实例可以被创建,并且他可以提供一个访问该实例的方法。三、注意:使用单例模式,只能保证一个线程内对象不会被多次创建,而不不能保证多线程的情...

2019-09-06 11:32:28 117

转载 大话设计模式(11)观察者模式

一、场景及UML图简单描述,就是为了实现一个对象的变更导致一系列对象的变更的场景,但同时要依赖倒置。关键词:Subject维护一个Observer列表,Subject执行Notify()时就执行列表中的每个Observer的Update()。二、概念观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,...

2019-09-06 11:11:44 120

转载 大话设计模式(10)建造者模式

一、场景及UML图简单描述:该模式有点类似之前的装饰模式,不过二者的区别在于,建造者模式是稳定的,而装饰模式各组件是客户端手动添加的。关键词:Builder,ConcreteBuilder,Director,建造者模式要求建造过程必须是稳定的。二、概念建造者模式(Builder):将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。三、说明角色:...

2019-09-05 20:56:04 171

转载 大话设计模式(9)外观模式

一、场景及UML图简单理解:就是为一堆复杂代码提供一个抽象接口,使得别的模块调用的时候不需要再关心底层调用细节。关键词:增加Facade层。二、概念外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。三、说明Q:外观模式在什么时候使用呢?A:分为三个阶段:(1)首先,在设计初期阶段,应该要有意识的将不同...

2019-09-05 20:31:14 110

转载 大话设计模式(8)模板方法模式

一、场景及UML图场景:有点类似于原型模式,不过侧重点不一样。模板方法重点是体现在代码复用。把一些重复性的机制代码全部抽离到父类。二、概念模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。三、说明角色:(1)AbstractClass:是抽象类,其实也就是一个抽象模板,定义并实现了...

2019-09-05 20:13:04 153

转载 大话设计模式(7)工厂方法模式

一、场景及UML图二、概念工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。三、包含的角色(1)抽象工厂(2)具体工厂(3)抽象产品(4)具体产品四、优势(1)工厂方法模式是对简单工厂模式的稍微的改进。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子...

2019-09-05 14:53:15 101

转载 UML相关知识总结

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implement...

2019-09-05 10:38:56 205 1

原创 关于继承的几个问题

一、默认构造函数子类构造函数如果没有显式调用基类的构造函数,会自动调用基类的无参构造函数。而如果基类只有带参数的构造函数,则会报错。不一定要显式的无参构造函数,可以显式调用基类带参数的构造函数。class Base{public: Base(int c){cout<< "基类带参构造函数" << c << endl;} ~Base()...

2019-09-04 22:23:14 150

原创 C++面经汇总帖(二)

一、线程池1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。2. 线程池的工作机制 2.1 在线程池的编...

2019-09-04 21:51:04 381

原创 拷贝构造函数与赋值函数

如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。 以类String的两个对象a,b为例,String a(“hello”);   String b(“world”);b = a; 这将造成三个错误: 1、b.m_data原有的内存没被释...

2019-09-04 17:31:05 519

原创 const修饰符的用法总结

一、const常量在 C++ 中,有两种简单的定义常量的方式:1、使用#define预处理器。#define LENGTH 10 #define WIDTH 5#define NEWLINE '\n'2、使用const关键字。const int LENGTH = 10;const int WIDTH = 5;const char NEWLINE ...

2019-09-04 16:35:25 4207 1

原创 一个自动打印日志的想法

之前在企业导师(@贺工)的指导下,改进了公司的性能测试脚本。即通过打印日志衡量系统性能。本来计划申请个专利,结果发现一年前已有人申请。现将思路分享一下。一、自动添加日志脚本1、日志打印类 a、该类构造函数中输出开始时间。 b、该类析构函数中输出结束时间。2、文件及函数入口识别 a、通过字符匹配定位到函数入口。 b、在入口处创建一个...

2019-09-03 20:50:34 155

原创 编码规范的几点思考

实习企业格外注意编码规范,当时觉得多此一举,后来回味却发现有很多奥妙的。1、逻辑判断习惯写法:if(a == 0){}规范写法:if(0 == a){}分析:相信80%的人都遇到过少些“=”的情况,那么(a = 0)就成了赋值运算,除非const修饰,该式就成了用真式了,此类问题还不好发现。反观第二种写法,一旦少写,必然报错。2、++i 与i++众所周知,i++是线程不安全...

2019-09-03 20:38:22 143

转载 手握两个锟斤拷,口中直呼烫烫烫

闲来无事,随便写写。程序员才知道的一个小梗。问:你了解字符编码吗?答:锟斤拷问:那内存有接触吗?答:烫烫烫,口口口。保准面试官露出蜜汁微笑。什么意思?一起来聊聊吧!字符编码和ASCII 机器只能识别0和1,日常生活中的字符怎么让机器识别,这就是字符编码。最简单的字符编码是摩斯电码,即滴答滴答滴滴答。而我们的计算机就比较高级了,最开始采用的是ASCII码。...

2019-09-03 20:07:43 14947

原创 秋招面试(四)C++面经汇总帖

1、指针指针auto_ptr:剥夺所有权机制,C++11已废弃,使用不安全unique_ptr:针对auto_ptr的改进share_ptr:最常用的引用计数weak_pre:防止循环引用而设立的2、explicit构造函数每一个指针指针都有一个explicit构造函数,用explicit修饰构造函数的作用是禁止隐式转换或复制初始化。3、类对象的初始化过程类对象的新...

2019-09-02 18:00:52 334

原创 牛客网《剑指Offer》(15)反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。题目分析链表的转置是一个很常见、很基础的数据结构题了,非递归的算法很简单,用三个临时指针 pre、head、next 在链表上循环一遍即可。递归算法也是比较简单的,但是如果思路不清晰估计一时半会儿也写不出来吧。/*struct ListNode { int val; struct ListNode *next; List...

2019-09-02 00:09:26 94

原创 牛客网《剑指Offer》(23)二叉线索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题目分析线索二叉树的特征:左子树小于根节点,右子树大于根节点。后序遍历:左子树、右子树、根节点。解题思路:1、找到根节点所在索引位置,区分左右子树。2、判断索引后的元素是否都大于更节点。3、分别递归判断左右子树。cl...

2019-09-02 00:09:16 116

原创 牛客网《剑指Offer》(14)链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。题目分析链表的特征就是修改方便,查找复杂,不支持随机查找,更何况倒数第k个节点,除非是双向链表。此题解题其实是有一定技巧的,我们使用快慢指针来实现。同样类似的问题还有好多,我们先解题,下文会列出所有类似问题。1、设立两个指针(快指针与慢指针),都指向链表头部。2、将快指针前移k个位置。3、同时移动快慢指针,当快指针移到链...

2019-09-01 21:18:10 157

原创 牛客网《剑指Offer》(13)调整数组奇偶数顺序

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目分析题目不难,最简单的方法,将顺序查找奇数与偶数,分别放到不同的数组中,再拼接到同一个数组中就可以了。class Solution {public: void reOrderArray(vec...

2019-09-01 20:38:30 104

原创 牛客网《剑指Offer》(12)数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0题目分析此题就没什么意思了,随便写写,最简单的方法是直接调用pow()函数,或者手写一个pow()函数,估计作者的意图是让手写吧。一、直接调用class Solution {public: double P...

2019-09-01 20:31:43 72

原创 牛客网《剑指Offer》(11)二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题目分析提到进制转换相关问题,应该第一时间想到两种方法:1、逻辑运算,2移位操作。第一种方法:将该二进制数各位依次与“1”进行与操作,统计结果为true的个数。class Solution {public: int NumberOf1(int n) { unsigned in...

2019-09-01 20:22:53 91

原创 牛客网《剑指Offer》(10)矩形覆盖

题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目分析看似没有头绪,画个图就明白了,还是跳台阶问题。f(1) = 1,f(2) = 2,f(n) = f(n-1) + f(n-2)class Solution {public: int rectCover(int numbe...

2019-09-01 20:07:06 91

原创 牛客网《剑指Offer》(9)变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析乍一眼看上去,此题好像不能使用之前的分析方法了,那么换个思路,从后往前不行,那就从前往后。f(1) = 1f(2) = 1+ f(1)......f(n-1) = 1+f(1) +f(2) +...+ f(n-2) ...

2019-09-01 19:58:50 106

原创 牛客网《剑指Offer》(8)跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题目分析此题其实和前一题相似,首先分析一下。假设共有10级台阶,且10级台阶的跳法为f(10)。那么就有以下两种场景:1、最后一次跳了两级:第八级直接跳到第十级。2、最后一次跳了一级:第九级直接跳到第十级即f(10) = f(8) + f(9),这不...

2019-09-01 19:39:46 84

原创 牛客网《剑指Offer》(7)斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39题目分析首先理解什么是斐波那契数列:即f(1) = 1 ,f(2) = 1,f(n) = f(n-1) +f(n-2)同样,实现方法也有两种:1、自底向上实现,2、递归实现方法一:自底向上实现class Solution {public: ...

2019-09-01 19:31:50 158

原创 牛客网《剑指Offer》(6)旋转数组的最小元素

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目分析:仔细分析,不难发现,这是一道查找数组最小元素的题目,两种方法:1、遍历查找,2、二分查找方法一...

2019-09-01 19:08:48 119 1

转载 大话设计模式(6)原型模式

一、场景及UML图其实就是类的复制,显式的调用拷贝构造函数。二者也是有区别的。拷贝构造函数类是已知的,原型模式类可以是未知的。或者换一个方式说:原型模式生成的新对象可能是一个派生类。拷贝构造函数生成的新对象只能是类本身。原型模式是描述了一个通用方法(或概念),它不管是如何实现的,而拷贝构造则是描述了一个具体实现方法。关键词:深复制,Clone。二、概念原型模式(Pro...

2019-08-30 20:25:36 88

转载 大话设计模式(5)代理模式

一、场景及UML图简单理解:A通过B与C发生关系,此时,对于C而言只知道B的存在,A是透明的。其实底层的方法都是A在实现。相当于在B内部创建了一个匿名的A。二、概念代理模式:为其他对象提供一种代理以控制对这个对象的访问。三、应用场景(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。(2)虚拟代理,是根据需要创建开...

2019-08-30 20:07:50 103

转载 大话设计模式(4)装饰模式

一、场景及UML图场景:又称修饰模式,就是对类起修饰作用。如类“人”,用类“衣服”来修饰。关键词:Decorator()函数/setComponent()函数。二、概念装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。三、说明角色:(1)Component是定义一个对象,可以给这些对象动态地添加职责。(2)Concrete...

2019-08-30 19:54:13 127

转载 大话设计模式(3)设计原则

一、单一职责原则(Chapter3)(1)就一个类而言,应该仅有一个引起它变化的原因。(2)如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。(3)软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。二、开放封闭原则(Chapter4)(...

2019-08-30 19:42:31 151

转载 大话设计模式(2)策略模式

一、场景及UML图如超市打折活动,可能使用不同的打折策略,将各种策略封装,后续只需要修改策略即可。二、概念策略模式:他定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。三、优点(1)策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算...

2019-08-30 19:38:53 136

谷歌三篇论文中文版

谷歌的三篇论文可以说是大数据技术的鼻祖,没有认真研读过这三篇论文都不能说真正搞懂大数据。这里提供三篇论文的中文翻译版本供大家学习。

2018-06-03

毕业设计:网上商城

java 网上商城 在线商品销售 购物网站系统源代码 jsp ssh web

2017-12-30

空空如也

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

TA关注的人

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