设计模式
以下是 10种设计模式 的完整技术实现方案,包含 类图(PlantUML)、应用场景、核心代码,按结构化方式组织: 工厂模式:封装对象创建逻辑,客户端无需知道具体类。 策略模式:定义可互换的算法族,运行时动态切换。 装饰器模式:动态扩展对象功能,避免继承层次过深。 组合模式:统一处理单个对象和对象集合,形成树形结构。 观察者模式:一对多依赖关系,状态变化自动通知所有依赖对象。 状态模式:对象行为随内部状态改变而变化,避免条件分支。 中介者模式:封装对象间交互,降低直接耦合。 单例模式:确保一个类只有一个实例,并提供全局访问点。 代理模式:控制对目标对象的访问,增强功能(如缓存、权限)。 享元模式:共享细粒度对象,减少内存开销(如字符、图形复用)。 模板方法模式:定义算法骨架,子类重写特定步骤而不改变结构 一、组合模式(Composite)想表示对象的部分-整体层次结构希望用户用一致的方式处理个体对象和组合对象。 类图 ———————————————————————————————————————————————————————————————- 核心代码123456789...
note-87
./tools/build-test.sh 先看看就好。 docs/algorithms/solitaire docs/algorithms/sudoku 核心是我这个库 会有测试驱动重点关注算法开发,算法测试你如果能够在widdows上让./tools/build-test.sh 运行起来,基础能力基本过关了
谷歌Play注册要求
谷歌Play注册要求 一个全新的Gamil账户:如果是用作企业相关,建议为企业邮箱 一张支持外币支付,并且未绑定过其他谷歌开发者账户的信用卡VISA/MasterCard 个人账户:身份证正反面照片 企业账户:营业执照,邓白氏编码,公司地址和电话 鸿蒙注册要求 注册和实名认证的手机号和邮箱 个人账户:身份证信息 企业账户:营业执照,公司地址和电话 谷歌play的注册流程(科学上网) 准备一个全新的Goggle邮箱 进入Goggle Play Console官网 登录Goggle账户:选择公司还是个人账户。(后续不可更改,个人账户无法升级为企业账户) 填写详细信息: - 开发者名称:显示在Goggle Play应用商店的名称 - 联系信息:包括邮箱,电话,地址(需要验证) - 企业账号专属:邓白氏编码 填写经验与应用信息:根据实际情况填写是否具有PlayConsole使用经验,计划发布的应用数量和应用类别 同意协议和支付:阅读开发者协议,支付一次性25$注册费 等待账号审核 因为我的账户是个人账户,所以谷歌检测为个人账户,建议使...
Xml
数据持久化数据持久化是指将应用程序中的临时数据(如游戏进度、玩家设置等)永久保存到存储设备(硬盘、SD卡等)中的过程,以便在应用程序关闭后再次启动时能够恢复这些数据。 Xml 固定语法 1<?xml version="1.0" encoding="UTF-8"?> <!--版本和编码格式--> 在C#中读取XML文件的方法在C#中,你可以使用多种方式读取XML文件。以下是几种常用的方法: 1. 使用XmlDocument类(传统方式)1234567891011121314151617181920212223242526using System.Xml;// 创建XmlDocument对象XmlDocument xmlDoc = new XmlDocument();// 加载XML文件xmlDoc.Load("path/to/your/file.xml");// 获取根节点XmlNode root = xmlDoc.DocumentElement;// 遍历节点foreach (XmlNod...
PlayerPrefs
数据持久化数据持久化是指将应用程序中的临时数据(如游戏进度、玩家设置等)永久保存到存储设备(硬盘、SD卡等)中的过程,以便在应用程序关闭后再次启动时能够恢复这些数据。 PlayerprefsPlayerPrefs是Unity提供的一个简单的键值对存储系统(键:string类型,值: int float string),用于在游戏会话之间保存和加载玩家偏好设置或简单游戏数据。它是Unity中最基础的数据持久化解决方案,是Unity提供的可以用于存储玩家数据的公共类 轻量级存储:适合存储少量简单数据(如设置、分数等) 跨平台:在所有Unity支持的平台上工作 自动持久化:数据会保存在设备本地 三种数据类型:支持int、float、string三种基本类型 关于Playerprefs最基础的用法是直接使用Set方法进行数据的存储,但是在运行的过程中只会存储在内存中,需要在结束时,Unity会自动将其存入硬盘中。如果游戏运行的过程中崩溃,那么则不会存储在硬盘中。可以使用自带的Api,Save方法进行自动存储。 12345678910using UnityEngine;public ...
2进制
字符串类型以及非字符串类型转换为字节数组分别使用BitConverter类和Encoding类进行转换 12byte[] bytes = BitConverter.GetBytes(1); //非字符串byte[] bytes1 = Encoding.UTF8.GetBytes("11111"); //字符串 字节数组转为其他类型的数据 12int i = BitConverter.ToInt32(bytes,0); string str = Encoding.UTF8.GetString(bytes1);//这个字符数组全是字符串 对于如何将类序列化,不能直接使用C#中的BinaryFormatter进行2进制的序列化,因为是C#语言的规则与其他语言的兼容性不好,如果使用它那么其他语言开发的服务器无法进行反序列化,使用需要自定义处理类对 文件写入以及创建12345678910111213141516FileStream fs = File.Create(path);//创建文件------------------------------------...
构建指南详解
这份 CrossLink 构建系统指南 非常专业和全面,它详细说明了一个支持从原生库到Unity Package全流程自动化构建的系统。下面我为你梳理和解释其中的核心内容、工作流程以及最佳实践。 🧠 核心概念与价值这套构建系统的核心目标是实现 自动化 和 标准化。它通过 Makefile 和 Shell 脚本 将复杂的多平台编译、依赖同步和测试流程封装成简单的命令,极大提升了开发效率,保证了构建结果的一致性,尤其适合团队协作和持续集成(CI/CD)环境。 💡 为何有时需要更直接地控制构建工具?既然 Unity 能自动处理,为什么我们有时还需要了解甚至直接使用这些构建工具呢?主要是为了应对更复杂的需求: 深度定制:当你需要深度定制 AndroidManifest.xml(比如添加特殊的权限或元数据),或者引入复杂的第三方 SDK(这些SDK可能有自己的依赖和资源冲突)时,可能需要导出 Gradle 项目到 Android Studio 中进行手动配置。 疑难排查:当打包过程出错时,错误信息往往来自底层的构建工具(如 Gradle 报依赖冲突、aapt报资源重复)。...
构建指南学习路线
基于您提供的CrossLink构建系统指南和Android开发学习路径图,我为您设计了一个循序渐进的学习路线,将两者有机结合,帮助您系统掌握这个强大的构建系统。 🗺️ 整体学习路线图以下是您需要掌握的知识体系全景图,展示了从基础到精通的完整路径: 123456789101112131415161718192021flowchart TD A[学习目标] --> B[阶段一:基础准备] A --> C[阶段二:核心技能] A --> D[阶段三:实战应用] A --> E[阶段四:高级进阶] B --> B1[环境配置<br>Android SDK/Unity] B --> B2[基础概念学习<br>构建系统/AAR] B --> B3[工具链熟悉<br>CMake/Gradle] C --> C1[目录结构掌握] C --> C2[构建命令实践] C --> C3[问题排查训练] D --&g...