对象池

第二记 Java数据类型

时间秒杀一切 提交于 2019-12-01 05:05:05
一、数据类型   java中数据类型分为基本数据与引用数据类型两大类,其中又有更细致的划分,下面以图展示 二、基本数据类型封装类 Java是一门面向对象的语言,但是在一些情况下基本数据类型无法满足Java面向对象的特性,我们便可以调用包装类的方法完成我们所需要的操作 三、String类 1.String类的两种实例化方式 String是一个很特殊的类,我们通常称呼它为字符串,它既可以采用基本数据类型一样的赋值方式,也可以采用类的方式new一个对象 范例:String str="Hello";    String str=new String("Hello"); 2.字符串之间的比较 说到比较就不得不说 == 和 equals() 方法之间的区别了 “==” 操作符专门用来比较两个变量之间的值是否相等,也就是要比较两个基本类型的数据之间的值是否相等,只能用“==”操作符 如果一个变量指向的数据是对象类型的,那么这时候涉及到了两块内存空间, 如 String str = new String("hello"),变量(在对象这里也叫对象引用名)str占用一块内存(栈空间), 对象本身 new String("hello") 占用的是另一块内存(堆空间),此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。如果要比较两个变量是否指向同一个对象

当我读《游戏编程模式》时我在想什么

谁说我不能喝 提交于 2019-11-28 22:11:37
写在前面 这本书长这样 我还没有看过“GOF”,我所读到的设计模式都是这本书(游戏角度)给出的定义,害怕GOF中的定义过于抽象。 没有在项目代码晃来晃去经历的,或者没有工作至少半年的,不用着急买这本书,因为估计看不懂。 本文用来重点记录“我觉得XX设计模式是什么”,以及“当我在看XX设计模式时,我在想什么” 命令模式 书面定义:“将一个请求封装成一个对象,从而允许你使用不同的请求、队列或日志将客户端参数化,同时支持请求操作的撤销和恢复” 他的举例:按键事件 我的定义:将命令封装成对象,支持撤销和重做 我的举例:(书上已然很好) 想到的问题: 举例用了按XX键执行YY事件,我以为它会讲自定义按键(就是跳是按A,现在我想跳是按B)…… 讲到非常具体的命令,它联系到了下一章的“享元模式”,旁注不让用“单例模式”,想想确实,因为单例模式根本不会有继承 享元模式 书面定义:使用共享以高效地支持大量的细粒度对象 他的举例:森林 我的定义:将共同点分离出来,在另外加上具体点 我的举例:(书上已然很好) 想到的问题: 我第一个想到的就是类的继承,不过文中的举例,都没有涉及到继承 观察者模式 书面定义:“在对象间定义一种一对多的以来关系,以便当某对象的状态改变时,与它存在依赖关系的所有对象都能收到通知并自动进行更新” 他的举例:成就系统 我的定义: 当对象的状态改变时,通知给它所有的关注者 我的举例

Unity游戏开发优化

不羁的心 提交于 2019-11-28 13:04:08
原文引用 https://www.dazhuanlan.com/2019/08/25/5d6237a09e2b6/ 概述 ## 注意! 本篇博文的代码风格骤变,主要是最近看了一些 C# 规范,自己也就稍微注意了点。 如何解决? 想一想,当我们创建一个 GameObject 的时候,我们并没有使用 new 关键字,而是使用 MonoBehaviour 的静态方法 Instantiate() 。这样来我们就不得不把新的对象池组件挂到场景里去,这就产生关于 MonoBehaviour 单例实现的问题,不过这并不是本文的关键,所以不做详细解释。第二个问题在于 GameObject 对象的状态回收与初始化。 GameObject 并没有提供任何可供初始化的接口,事实上我们对他们的初始化往往也是来自外部,这样一来我们可以考虑使用委托的方式对 GameObject 实例进行初始化和回收的操作。 改进对象池 根据上述提出的一些问题和解决思路,适用于 GameObject 的对象池代码如下: public class GameObjectPool : MonoBehaviour { public int Size { get { return idleObjects.Count + busyObjects.Count; } } private bool _ready; private int

常用jar包整理(持续更新中)

匆匆过客 提交于 2019-11-27 12:21:18
1.commons-codec.jar 包含一些通用的编码解码算法。包括一些语音编码器,Hex,Base64,MD5 2.commons-lang 跟java.lang这个包的作用类似,Commons Lang这一组API也是提供一些基础的、通用的操作和处理,如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。 最常用的两个类 ArrayUtils – 用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等; StringUtils – 处理String的核心类,提供了相当多的功能; 3.commons-collectionsc Commons项目组中的一个各种集合类和集合工具类的封装 常用类 CollectionUtils 4.org.apache.commons.pool 该项目是一个基本的对象池组件;Pool提供三个主要方面对象池的API: a) 一个提供客户方和实现方用来实现简单、可变的对象池的基本接口。 b) 一个用来创建模块化对象池的工具。 c) 几个通用的对象池的实现。 5.commons-logging.jar log4j.jar 怎么才能让Log4j发挥它的作用呢?答案很简单,只需满足“classpath中有Log4j的jar包”。前面已经说过了,commons