自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 Effective C++第三章总结

条款13:以对象管理资源 例:     void f()     {          Investment *pInv = createInvestment();          ...                   //这里存在诸多“不定因素”,可能造成delete pInv;得不到执行,这可能就存在潜在的内存泄露。         delete ...

2018-09-25 00:58:57 212

转载 c++运行时多态复习

C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数  1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。    2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类...

2018-07-14 10:23:57 2543

转载 帧同步游戏开发基础指南

转载来源:https://cloud.tencent.com/developer/article/1050868什么游戏适合帧同步这种技术?在现代多人游戏中,多个客户端之间的通讯,多以同步多方状态为主要目标。为了实现这个目标,主要有两个方向的技术:一种叫状态同步:客户端发送游戏动作到服务器,服务器收到后,计算游戏行为的结果,然后通过广播下发游戏中各种状态,客户端收到状态后显示内容。这种做法类似于各个客户端都远程操作服务器上的软件。最早的mud,以及后来大量的国产网游,特别是回合制游戏,都是这种方

2021-06-25 10:44:04 288

转载 游戏服务器中常见的数据一致性问题分析

什么是一致性问题在游戏服务器的开发中,我们经常会碰到所谓“一致性”问题,以及碰到各种为了解决这种问题所做的“方案”,那么,什么是一致性问题呢?其实非常简单,就是有两个客户端进程,都需要修改同一个数据,造成的问题。譬如服务器上有一个怪物,玩家 A 释放了一个火球,根据业务逻辑,火球会扣减 10% 的最大 HP 值作为伤害;玩家 B 对怪物砍了一刀,扣减怪物的 HP 需要计算玩家 B 的攻击力和怪物的防御力。那么一般我们编写程序的时候,就会先从“怪物”和“玩家”读取其数值,包括“攻击力”,“最大 HP”

2021-06-23 17:47:28 732

原创 2021-03-23

Go基础问题汇总1.cap()和len()函数的区别是什么?len()返回切片中的元素个数。 cap()返回切片中容量即切片可以容纳的元素个数。2.select作用:随机选择一条没有被读写阻塞的case加以执行,通常是管道IO;3.主协程如何等其余协程完再操作?等待组(sync.WaitGroup) 和 管道(channel);10个子协程,子协程结束任务,向一个切片中写入true,主协程循环查看切片的长度,为10时退出。4.什么情况下会死锁,如何避免?...

2021-03-24 01:21:04 219

转载 c++11 constexpr

constexpr是C++11中新增的关键字,其语义是“常量表达式”,也就是在编译期可求值的表达式。最基础的常量表达式就是字面值或全局变量/函数的地址或sizeof等关键字返回的结果,而其它常量表达式都是由基础表达式通过各种确定的运算得到的。constexpr值可用于enum、switch、数组长度等场合。constexpr所修饰的变量一定是编译期可求值的,所修饰的函数在其所有参数都是cons...

2019-07-30 09:18:13 216

转载 c++ vector中的resize与reserve

关于STL中vector的resize与reserve方法,作以下记录:1.reserve(n):预分配n个元素的存储空间。如:vector<int> vecData;vecData.reserve(10);调用reserve(10)方法后,则为vecData预分配了可以存储十个int对象的存储空间,但仅仅是分配空间,里面并没有存储对象。我们知道容器中会有初始预...

2019-07-28 22:29:10 448

转载 find和find_if算法

1、STL算法里的find和find_if算法的使用:区别于联系:联系:这个两个函数都是查找某个元素位置的方式;区别:其中find值适用于查找其里面元素值的位置。而find_if值使用与函数第三个参数的为判别式时的使用。template<class InputIterator, class T>InputIterator find ( InputIterator first...

2019-07-28 22:25:42 1228

转载 C++中vector的删除

在vector中有三种涉及删除的方法,第一种是vector::clear(),第二种是vector::erase(),第三种是vector::pop_back()。clear用来清空整个vector,同时将size变成0,无返回值;erase通过传入迭代器进行删除,既可以删除单个元素,也可以删除某一范围的元素,删除之后它将返回下一个位置的迭代器;pop_back用来删除末尾元素,同时将...

2019-07-28 22:21:05 10237 1

转载 【C++】explicit关键字

本文转自:https://www.cnblogs.com/dwdxdy/archive/2012/07/17/2595479.htmlC++提供关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换发生.声明为explicit的构造函数不能在隐式转换中使用.C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色.1....

2019-07-18 00:21:56 128

转载 C++之Lambda表达式

1. 概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-&g...

2019-07-16 01:09:34 402

转载 我眼中的 RPC

什么是 RPC ?RPC 是一种框架或者说一种架构,主要目标就是让远程服务调用更简单、透明,调用远程就像调用本地一样。百度百科解释:RPC(Remote Procedure Call) - 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,R...

2019-07-08 09:57:09 186

原创 Go程序设计语言读书笔记-第八章

第八章-goroutine和通道goroutine:在go里,每一个并发执行的活动成为goroutine。语法上,一个go语句实在普通的函数或者方法调用前加上go关键字。go f() //新建一个f()的goroutine,不用等待通道:如果说goroutine是Go程序并发的执行体,通道就是他们之间的连接。通道是可以让一个叫goroutine发送特定值到另一个goroutin...

2019-04-17 11:24:01 251

原创 Go程序设计语言读书笔记-第七章

第七章-接口Go语言的结构的独特之处在于它是隐式实现。就是对于一个具体的类型,无需声明他实现了哪些接口,只要提供接口所必须的方法即可。接口是一种抽象类型,他并没有暴露所含数据的布局或者内部结构。一个接口类型定义了一套方法,如果一个具体类型要实现接口,那么必须实现接口类型定义中的所有方法。实现接口:如果一个类型实现了一个接口要求的所有方法,那么这个类型实现了这个接口。// 薪资...

2019-04-16 11:09:46 231

原创 Go程序设计语言读书笔记-第六章

第六章-方法方法声明:只是在普通函数名字前面多了一个参数。这个参数吧这个方法绑定到这个参数对应的类型上。附加的参数p成为方法的接收者。func (p Point)Distance(q Point)float64{ return math.Hypot(q.X-p.X,q.Y-p.Y)}Go和许多其他面向对象的语言不同,他可以将方法绑定到任何类型上。可以很方便地为简单的类型定义...

2019-04-16 10:05:41 226

原创 Go程序设计语言读书笔记-第五章

第五章-函数实参是按值传递的,搜易函数收到的每个实参的副本。如果提供实参包含引用类型,比如指针、slice、map、函数或者通道,那么函当函数使用形参变量时就有可能会间接地修改实参变量。Go可以使用递归。Go语言的实现使用了可变长的栈,栈的大小会随着使用而增长,可达到1GB左右的上限。这使我们可以安全地使用递归而不用担心溢出的问题。多返回值,一个函数能够返回不止一个结果。一个函数如...

2019-04-15 14:07:10 216

原创 Go程序设计语言读书笔记-第四章

第四章-复合数据类型数组:由于数组的长度固定,所以在Go里面很少用。var a [3]int fmt.Println(a[0])fmt.Println(a[len(a)-1])//输出索引和元素for i,v := range a{ fmt.Printf("%d %d\n",i,v)}//初始化数组var q [3]int = [3]int{1,2,3}var...

2019-04-15 14:00:23 232

转载 c++11 多线程

前言:前段时间初看了下Boost库,看到线程学了下。c++11是有线程的,这个之前我也是知道的,但就感觉自己没怎么系统的学过,翻了下c++primer 居然没有讲线程的,真是坑啊。。。怪不得总感觉自己学c++语言方面没系统的学过这东西。。还是看的少。多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。...

2019-04-04 01:00:00 782

原创 Go程序设计语言读书笔记-第三章

有符号和无符号整数:8位,16位,32位,64位:int8、int16、int32、int64、uint8、uint16、uint32、uint64浮点数:float32和float64字符串:内置的len函数返回字符串的字节数,试图访问许可范围以外的字节会触发宕机异常。s := "left foot"t := ss +=", right foor"s[0] = 'L' //编译...

2019-03-31 22:48:48 204

原创 Go程序设计语言读书笔记-第二章

第二章-程序结构如果一个实体在函数中声明,只在函数局部有效。如果在函数外,对包里的所有源文件可见。实体第一个字母的大小写决定其可见性是否挎包。如果以大写字母开头,意味着对包外是可见和可访问的,可以被自己包之外的其他程序所引用,如:fmt包中的Printf。声明:varname type = expression短声明:name := expressionname的类型由express...

2019-03-13 18:40:09 214

原创 Go程序设计语言读书笔记-第一章

Go程序设计语言读书笔记- 第一章-入门Go代码使用包来组织的,包类似其他语言中的库和模块,一个包由一个或者多个.go源文件组成,放在同一个文件夹中,文件夹的名字描述了包的作用。每一个源文件的开始都用package声明,列子里面是package main,说明这个文件属于哪一个包。main是一个用来定义一个独立的可执行程序。import声明必须跟在package后面。import导入声...

2019-03-13 18:39:20 316

转载 panic和recover的使用规则

转自:https://www.cnblogs.com/vikings-blog/p/7109519.html转自个人博客 chinazt.cc在上一节中,我们介绍了defer的使用。 这一节中,我们温习一下panic和recover的使用规则。在golang当中不存在tye ... catch 异常处理逻辑。在golang当中使用defer, panic和recover来控制程序执行流...

2019-02-26 17:02:40 813

转载 golang中defer的使用规则

转自:https://www.cnblogs.com/vikings-blog/p/7099023.html转自个人博客chinazt.cc在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。为了更好的学习defer的行为,我们首先...

2019-02-26 15:40:48 200

原创 Go语言TCP连接

https://blog.csdn.net/Rage_/article/details/82432790 TCP连接学习http://docscn.studygolang.com/pkg/net/ Go net库文档参考其他博客链接:https://cloud.tencent.com/developer/article/1064525https://blog.csdn.net/ha...

2019-02-25 18:35:52 2882

转载 大话设计模式(C++)第九章-原型模式

 概念原型模式(Prototype):用原型示例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 三、说明(1)原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。(2)一般在初始化的信息...

2018-11-27 16:40:52 202

转载 大话设计模式(C++)第八章-工厂方法模式

概念工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。包含的角色(1)抽象工厂(2)具体工厂(3)抽象产品(4)具体产品 简单工厂模式:https://blog.csdn.net/Rage_/article/details/83622312优势(1)工厂方法模式是对简...

2018-11-26 15:29:22 265

转载 大话设计模式(C++)第七章-代理模式

 概念代理模式:为其他对象提供一种代理以控制对这个对象的访问。 应用场景(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。(2)虚拟代理,是根据需要创建开销很大的对象。通过他来存放实例化需要很长时间的真实对象。例如:图片加载的时候。(3)安全代理,用来控制真是对象访问时的权限。(4)智能指引,是指当调用真...

2018-11-21 18:59:55 164

转载 大话设计模式(C++)第六章-装饰模式

 二、概念装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。三、说明角色:(1)Component是定义一个对象,可以给这些对象动态地添加职责。(2)ConcreteComponent是定义了一个具体的对象,也可以给这个对象增加一些职责。(3)Decorator,装饰抽象类...

2018-11-20 13:11:14 167

原创 大话设计模式C++实现-第3.4.5-设计原则(1)

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

2018-11-19 18:06:23 131

转载 大话设计模式(C++)第二章-策略模式

 策略模式:他定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 三、优点与解析(1)策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。(2)策略模式的Strategy类曾是为Context定义了一些列的...

2018-11-19 16:40:20 161

原创 大话设计模式(C++)第一章-简单工厂模式

问题:写一个简单的计算器。普通的写法:#include&lt;iostream&gt;using namespace std;int main(){ double NumberA,NumberB; cout&lt;&lt;"请输入数字A: "; cin&gt;&gt;numberA; cout&lt;&lt;"请输入数字B: "; cin...

2018-11-01 16:36:00 240

转载 STL底层数据结构

C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问 2.list            底层数据结构为双向链表,支持快速增删 3.deque       底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(double-ended que...

2018-10-08 10:48:32 170

原创 移动语义和右值引用

右值引用:c++的传统引用(现在成为左值引用)使得时标符关联到左值。左值是一个表示数据的表达式(如变量名或解除引用的指针),程序可以获取其地址。C++11新增了右值引用,用&amp;&amp;表示。右值引用可以关联到右值,即可出现在赋值表达式的右边,但不能对其应用地址运算符的值。右值包括字面常量、如x+y等表达式以及返回值的函数:int x =10;int y = 23;int...

2018-10-07 17:29:54 362

原创 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说明:如果你可以运用递归和迭代两种方法解...

2018-10-04 17:38:49 244

转载 C++ STL迭代器失效情况总结

本文转自:https://www.cnblogs.com/Commence/p/7526421.html1.对于序列式容器:vector,queue(C++的序列式容器有vector、deque、list、forward_list、array和string几种)等,序列式容器就是数组式容器,删除当前的iterator会使得后边所有元素的iterator都失效。这是因为其使用了连续分配的内存,阐...

2018-10-03 22:13:16 366

转载 C++中extern “C”含义深层探索

之前做很多项目,都用到了extern “C”,这里整理一下extern “C”的作用。本文转自:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html1.引言  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容...

2018-10-03 21:13:16 139

转载 C++ Primer 总结

收藏C++ Primer 总结,西电硕,大佬精髓帖子。很好https://blog.csdn.net/misayaaaaa/article/details/53786215

2018-10-03 16:21:51 265

原创 计算机图形学基础-直线扫描转化算法

前言:在数学上,直线上的点有无穷多个。担当在计算机光栅显示器屏幕上表示这条直线时需要做一些处理。为了在光栅显示器上用这些离散的像素点逼近这条直线,需要知道这些像素点的x,y坐标。求出过p0,p1的直线段方程:y=kx+b; k=(y1-y0)/(x1-x0)(x1 ≠ x0)假设x已知,即从x的起点x0开始,沿x方向前进一个像素(步长=1),可以计算出相应的y值。因为像素的坐标...

2018-10-03 11:44:19 3037

转载 C++如何实现只能动态分配类对象,不能定义类对象

动态分配类对象:就是使用运算符new来创建一个类的对象,在堆上分配内存。静态分配类对象:就是A a,由编译器创建类对象,在栈上分配内存。1)动态分配类对象把类的构造函数和析构函数设为protected属性。类对象不能访问,但是派生类可以继承,也可以访问。同时,创建create和destroy两个函数,用于创建类对象。(create函数设为static,原因是,创建对象的时候A ...

2018-09-27 00:18:34 518

转载 初识软件工程-软件的本质特性

软件的构成软件 = 程序 + 数据 + 文档。 程序:计算机可以接受的一系列指令,运行时可以提供所需求的功能和性能。 数据:使得程序能够适当的操作的数据结构。 文档:描述程序的研制过程、方法和使用时的图文资料。 **软件只有运行起来,我们才能看到它的效果,评估它的性能和特性。软件的特性复杂性  人们的复杂需求导致了软件的复杂性。当然导致软件的复杂性因素还有很多。 一致性 ...

2018-09-12 23:21:24 808

php程序员工具箱v0.6集成环境

php程序员工具箱v0.6集成环境,php程序员工具箱v0.6集成环境

2017-12-05

空空如也

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

TA关注的人

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