c++之string
模板还没复习,有点不记得了,记得回来填坑。
string是什么
在C++中,string是一个模板类—basic_string的别名,而basic_string是一个封装好的,便于我们对字符序列进行操作的模板类,可以方便的针对单个字符内存占用的问题,实现好几个版本的string,这个模板类提供了很多方便的方法,如size,find…以及操作安全性。定义如下:
Visual Studio:
1234567_EXPORT_STD using string = basic_string<char, char_traits<char>, allocator<char>>;_EXPORT_STD using wstring = basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>>;#ifdef __cpp_lib_char8_t_EXPORT_STD using u8string = basic_string<char8_t, char_tr ...
北境实习感受
目的
北境实习一段时间之后,感觉可以对这段时间进行一下记录和总结。主要原因还是这段经历的收获目前看来没有达到预期,简单回顾一下,方便规划之后的路线。
回顾
时间线如下
12345--- 2024 11.5 线下面试 | 11.7 电话通知录取 | 11.11 实习offer通知 | 11.25 入职 2025 1.8 写下这篇日志
‘前戏’
面试的时候,感觉回答的一般,面试官(后来知道是主程)最后说的是,因为我学的是unity但是他们现在是用虚幻,所以需要看其他组还缺不缺人…当时一听这个感觉就寄掉了
本来的规划是,大三先去小厂实习,所以当时以为会变成“计划赶不上变化”。
之后心存侥幸(好像确实是侥幸上了),希望面试官说的不是客套话(这个到现在也不好说…实在是不好说,是不是啊,是不是呢?)。就这样焦急的,一边摆烂一边等。为什么当时没有准备其他实习呢?并非没有,首先因为大学课程,需要实习地点不能离学校太远,其次公司水平不能太差,同时还要是一家游戏公司,这样筛选下来,只剩下这一家符合要求了。
那两天真是一天比一天难受,时间越长,希望越是渺茫。每次听 ...
地牢大杂烩各种模块实现思路记录
项目Github仓库:https://github.com/ZiercPro/DungeonSmorgasbord
设置
进入时配置
由于游戏中某些设置需要在正式进入游戏前就加载配置好(如音量,语言等),所以我专门写了一个config组件用于在游戏启动流程中从保存的设置文件中加载游戏设置数据并进行配置(如果是第一次进入游戏,也就是设置文件加载失败,会按照默认数值生成新的设置文件)。
UI
项目的UI主要是基于MVC框架编写的,对于设置,通过SettingsModel来存储运行时的玩家的设置,如果玩家应用设置,则会将model中保存的数据同步覆盖到文件中保存的设置,如果不应用,则会重新从文件中加载设置覆盖model中玩家的修改。
我在controller中将逻辑和model的修改绑定,所以一旦model发生变化,逻辑也会同步。
租房日志
2024年9月,我已经到了大三,因为各种原因,选择在校外不远处的街道租房。
准备工作
第一次租房,没有经验,很多方面没有考虑到。
房源来自也在附近租房的朋友介绍的一个二手房东(后用奸商代替),在上学期即将毕业时,和奸商谈好房价和位置,然后对方就要求给租金,理由是帮我预留房间。由于当时已经商量好了明确的时间和位置,我也问过我妈租金是否合理并得到肯定的答复(我妈以为我实地看过房了),所以我就毫不犹豫的将租金上交…因为即将回家,甚至房都没看(只看了视频)
被坑
等到开学,来到奸商介绍的位置,发现和视频中不是同一间,我便询问,结果奸商说帮我换了一个,比之前的大(能看出来确实比之前的大,但是只是厕所大了点,没什么用)。
我立即询问是不是房租也贵了,结果不出所料,比之前的贵了100。此时我已经搬了一部分行李了,也知道已经掉到了坑里,能预见他后续会如何解释只能租这间,所以只能和他拉扯价格。然而我刚说最多比之前贵50,他就答应了…唉…我***。
然而还没结束,房租贵了也就罢了,奸商承诺说200兆宽带,我怎么也想不到,居然是几人共用200兆,等我发现网速有问题时,已经预付了一年的网费了(不长记性…)。
...
八股文之排序算法
更新中
参考文献
链接
阿里五面:说下希尔排序的过程? 希尔排序的时间复杂度和空间复杂度又是多少?
快速排序和归并排序的时间复杂度分析——通俗易懂
hello 算法
比较排序
简单排序
冒泡排序
经典的排序,实现和理解都很容易
思路:从数列最左端开始,依次比较相邻两数,按照需求,进行位置交换,比如要求从小到大,当左数比右数大时,两数交换,最终在最右端能得到当前乱序数列中最大的数。之后重复之前的操作,乱序数列不断减少
实现:双循环,每完成一次小循环,减少小循环次数。注意比较的次数为数列长度减一。
数据
平均时间复杂度
最好时间复杂度
最坏时间复杂度
空间复杂度
算法稳定性
O(n2)O(n^2)O(n2)
O(n)O(n)O(n)
O(n2)O(n^2)O(n2)
O(1)O(1)O(1)
稳定
代码
1234567891011121314public void BubbleSort(int[] array) { //外循环乱序数列[0,i] for (int i = array.Len ...
游戏设计学习笔记
更新中
前言
这个系列旨在记录笔者在学习游戏设计过程中的心得,同时能够将想法分享读者。
游戏剧情
剧情三角原则
在撰写游戏故事的时候,一般要关注三个方面,即角色、事件、世界,并且最好只侧重其中之一,否则会使得玩家感到不舒服
游戏文档
游戏文档可以针对不同的群体,也会因此导致其侧重点不同
比如你写给开发人员,那么文档就会注重一些玩法细节,如果是写给发行商负责人,那么可能就要多填充一些能激起他们兴趣的概念图,以及一些吸引人的游戏玩法
游戏文档的目的是为了沟通,这就揭示了编写游戏文档的原则—可读性。
单页说明
游戏名
游戏系统
目标玩家年龄
ESRB 分级
eC 幼儿
e 所有人
e10 10 岁以上的所有人
t 青少年 含有少量暴力 暗示性主题及脏话
m 17 岁以上 含有明显的暴力,血腥,暗示性主题
AO 18 岁以上 含有明显暴力,血腥,暗示性主题并含有明显的性和裸露场景
十页说明
游戏流程
游戏设计文档
参考文献:
《通关!游戏设计之道》
游戏代码设计模式学习路线与思路
更新中
软件设计的原则
先学习软件设计的基本原则,虽说笔者主攻方向为基于 Unity 引擎的游戏开发,但是游戏开发与软件开发有许多共通处,学习游戏设计模式可以为后续开发与工具的学习运用打下坚实的基础
开闭原则(OCP)
单一职责原则(SRP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
迪米特法则(LOD)
合成/聚合复用原则(CARP)
开闭原则(OCP)
软件设计的基本原则,后续六个原则的最终目的都是为了满足开闭原则
解释:对扩展开放,对修改封闭。就是说编写软件框架时,要多扩展,少修改。
实现的例子:面向接口编程
比如有限状态机(状态模式的最常见的实现)的实现,对于状态,我们一般都是先定义状态接口
12345678public interface IState{ void Enter(); void Update(); void Exit(); ...}
然后再编写的状态管理器StateManager,后续的状态机使用只需要实现状态接口并创建状体管理器实例,就可以正确运行。
优点:提高代码健壮性,易维护和扩展
缺点:往往 ...
Hexo+github静态托管搭建个人博客
网站搭建和主题配置
请先看文章:小茗同学大佬的搭建教程
由于上文已经非常完善,笔者只提几点注意事项(均为笔者踩的坑)
关于_config.yml中deploy的branch的配置,master要更换为main
关于 url 配置,文章中没有提到,但是笔者在搭建时发现,url 对大小写要求很严格,如果你的 github 域名没有完全正确的填写,那么网站的样式是加载不出来的
CNAME 必须移到source文件夹中进行保留
链接永久化
减少网页链接丢失,同时减少 url 的层级,对爬虫比较友好
如何实现
下载插件hexo-abbrlink
1npm install hexo-abbrlink --save
在根目录中的_conflg.yml中配置生成链接
1234permalink: zierc/:abbrlink.htmlabbrlink: alg: crc32 # 算法:crc16(default) and crc32 rep: hex
注意:上述代码中zierc为自定义内容,你想咋填咋填,但是会影响到关于图片位置生成的操作(hexo-asset-image 插件)
由于_ ...
Addressable热更新使用基础
热更新
资源热更新
主要通过 AB 包来实现,比较简单。
代码热更新
csharp 代码打包以后就变成了二进制,和程序同时启动,无法修改。
热更新流程
MD5 值 用 md5 算法,生成资源对应的唯一标识符,有助于资源的增量打包
代码热更新的手段
Lua
ILRuntime
puerts
HyBridCLR(huatuo
AB 包
AssetsBundle Browser
AssetsBundle Browser 的安装
目前 unity packagemanager 已经找不到这个插件了
需要到github去下载
建议使用建议使用 url 的下载方式:unity 编辑器 →Window→packmanager→Add→Url 输入 github 上的获取链接
AssetsBundle Browser 安装问题
报错:boo 找不到
这个 boo Unity 很久就不用了,并且这个报错的脚本在一个叫 Tests 的文件夹中,因此大概率是 unity 团队忘了维护,或者有其他的理由,总之直接把这个 tests 文件夹删了即可。
不再使用 abb
突然发现 unity ...