自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (5)
  • 收藏
  • 关注

原创 链表操作--- Remove Nth Node From End of List,注意事项整理

Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.从尾端删除第n个节点。(1)获取总的链表长度,L根据n带入(L−n+1)求出从第一个节点开始数要删除的节点。public Li

2016-06-29 17:20:31 342

原创 设计模式--原型模式

用原型实例创建对象的种类,并且通过拷贝这些原型创建新的对象。其实就是从一个对象再创建另一个可定制的对象,而且不知道任何创建的细节。原型模式中客户端并不知道要克隆对象的实际类型,只需知道基类类型就可以。克隆对象比直接创建对象的优点在于,克隆是将原有对象行为属性带到了新的对象中。C++没有克隆方法,要克隆一个对象,需要借助拷贝构造函数来实现。拷贝构造函数中实现拷贝的对象有浅拷贝和深拷贝。浅

2016-06-29 15:55:21 219

原创 算法复杂度--时间复杂度,空间复杂度

算法时间复杂度的定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级,也就是算法的时间量度,记作:T(n)=O(f(n)).它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。f(n)为问题规模n的函数。这样用大写O()来体现算法时间复杂度的记法称为“大O

2016-06-27 20:57:42 517

原创 const使用注意事项 指针 引用,指针引用区别

const用法:char greeting[] = "Hellow";const char* p = greeting;//non-const pointer,const datachar const * p = greeting;//同上char* const p = greeting;//non-const data,const pointerconst char*

2016-06-25 17:28:33 514

原创 对象切割,指针和引用对多态的支持

对象切割:一般来说派生类分配的存储空间大于基类分配的存储空间,如果不通过指针和引用而是直接将派生类对象复制给基类对象就会造成切割。切割导致无法通过基类调用基类的成员函数。例子:class Bear : public ZooAnimal{}Bear b;ZooAnimal za = b; za.rotate();//调用ZooAnimal::rotate()直

2016-06-23 10:36:03 325

原创 设计模式-工厂方法模式

工厂方法模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖达到解耦、复用和方便后期维护拓展的目的。当前模式与简单工厂模式的不同是,当前模式使类的实例化延迟到其子类,并且相比简单工厂模式本模式更加符合开放-封闭原则。 工厂方法模式定义一个创建产品对象的接口,将实际创建工作推迟到子类中。相比于简单工厂核心工厂不再负责产品的创建,更好的体现依赖接口而不是依赖细节编程的

2016-06-22 21:02:52 218

转载 C++ 虚函数表解析

C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel  前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R

2016-06-22 09:53:19 199

原创 C++对象所占内存的大小

class占据内存的由三部分组成:1、非静态数据的总和大小静态变量都在全局数据区分配内存2、加上任何由于alignment的需求填补上的空间(可能存储于members之间,也可能存在于集合体边界)alignment就是将数值调整到某数的倍数,以使bus的“运输量”达到最高效率。3、加上为了支持virtural而由内部产生的任何额外负担。一个类中若有虚函数,(不论是自己的

2016-06-21 23:21:12 1013

转载 [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区

2016-06-21 21:00:52 433

原创 设计模式-代理模式

通过大话设计模式中追求者、代理和女孩三者关系分析代理模式。首先,完成追求者通过代理送礼物给女孩。#include "stdafx.h"#include #include using namespace std;class SchoolGirl{public: explicit SchoolGirl(string name):m_name(name){} ~Sch

2016-06-20 15:48:53 234

原创 显示接口-隐式接口-编译期多态-运行期多态

面向对象:class Widget{public:widget();virtural ~widget();virtural void normalize();}void doPeocessing(Widget& w){ if(w.size()>10 && w != NMD) { Widget temp(w); temp.norm

2016-06-19 15:56:13 308

原创 设计模式-装饰模式

本文整理大话设计模式。通过人穿衣的例子引入装饰模式,首先装饰模式是指动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类给我灵活。#include "stdafx.h"#include #include using namespace std;class Persion{public: explicit Persion(){} explicit

2016-06-19 15:27:29 265

原创 设计模式-依赖倒转原则

A、 高层模块不应该依赖底层模块。两个都应该依赖抽象B、 抽象不应该依赖细节,细节应该依赖抽象(针对接口编程,不要针对实现)里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。简单的说就是,子类型必须能够替换他们的父类型。只有当子类可以替换掉父类,软件单位

2016-06-18 11:59:53 389

转载 设计模式-单一职责原则

内容来自百度百科单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。原理如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的

2016-06-16 15:13:05 317

原创 设计模式-策略模式

策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。(应用场景、优缺点来自百度百科)应用场景:1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。3、 对客户隐藏具体策略(算法)的实现细节,彼

2016-06-13 21:14:28 394

原创 设计模式--简单共厂模式

简单工厂模式的UML类图如下图所示:简单工厂模式主要本质就是通过输入到工厂中的参数,实例化出合适的对象,从而完成不同工厂的创建。各部分分工如下所示:工厂,简单工厂模式的核心,完成对象的实例化。抽象产品,工厂要创建具体实例的父类,实现简单工厂的接口。具体产品,工厂要实际创建的对象。(当前介绍来自百度百科)优点工厂类是整个模式的关键.包含了必要的逻辑判断,根

2016-06-06 14:23:19 452

原创 EffectiveC++,实现(2)static_cast,dynamic_cast,const_static,reinterpret_cast

尽量少做转型动作-大量使用转型可能导致代码变慢并且不容易维护。C++设计规则之一就是保证“类型错误”绝不可能发生,因此在进行编码时不要轻易放弃不干净的编译,从而阻止在任何对象上执行的不安全的、无意义的操作。转型破坏了类型系统,可能会带来不必要的麻烦,首先列举转型语法。旧式转型(old-style casts):(T)expression;T(expression)--功能相同都

2016-06-04 21:15:02 411

原创 EffectiveC++实现(1)

本文总结子EffectiveC++条款27.太快定义变量可能造成效率上的拖延---尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。只要定义了一个带构造析构函数的变量,那么当函数的控制流到达这个变量的定义式时就要承受构造和析构成本。因此,为了更好的提高效率应尽量延迟变量的定义直到需要变量,因为定义变量过早可能会造成定义不使用变量,从而增大开销。string EP(co

2016-06-03 21:25:20 291

在脑袋一侧猛敲一下

有创造性的想法看起来难免显得荒谬,因为它们似乎不符合传统规范。但要知道,想像力和创造力往往是相伴生的,有多少曾经被认为是荒谬可笑的想法如今却变成了现实。所以,尽可能地发挥你的想像力吧,谁知道它是不是一个好的想法呢? 常识总告诉我们要“遵循常规”、“寻找惟一正确的答案”,把我们的思维局限在固定的模式上,这无异于给我们的大脑套上了“枷锁”。本书共总结出10条这样的思维枷锁,并提供了打开它们的方法,同时,它还引导我们通过扮演不同的角色,去寻找与众不同的想法。

2016-08-24

疯狂Java讲义 课件,讲师李刚

疯狂Java讲义

2016-08-24

Pro_ogre_3d

文档详细介绍了ogre在3d使用情况,附有详细的文字和代码。

2015-03-19

edmatset_C6678

edma从ddr搬运数据到L2得测试代码.

2015-03-19

空空如也

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

TA关注的人

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