随笔分类 -  数据结构与算法

摘要:问题描述 怎么能够更高效地判断一个链表是否有环呀? 首先创建两个指针p1和p2(在Java里就是两个对象引用),让它们同时指向这个链表的头节点。 然后开始一个大循环,在循环体中,让指针p1每次向后移动1个节点,让指针p2每次向后移动2个节点,然后比较两个指针指向的节点是否相同。如果相同,则可以判断出 阅读全文
posted @ 2019-12-07 20:46 赵青青 阅读(1521) 评论(0) 推荐(0) 编辑
摘要:bitmap算法 最典型的例子就是用户标签,根据标签来存储用户 java中已有bitset实现 我还有一点不太明白,使用哈希表也同样能实现用户的去重和统计操作,为什么一定要使用Bitmap呢? 傻孩子,如果使用哈希表的话,每一个用户ID都要存成int或long类型,少则占用4字节(32bit),多则 阅读全文
posted @ 2019-12-05 17:24 赵青青 阅读(1599) 评论(0) 推荐(0) 编辑
摘要:前言 对于队列和数据锁,本文结合我所在的mmo游戏项目,讨论一个实际例子 当玩家在游戏的过程中,获得道具、物品时,会弹出一个提示窗体(浮动样式),提示玩家进行操作。 弹出框弹出顺序: 先进先出,且不会包含重复数据。 或者是后进先出,且不会包含重复数据 理论上来说同一个时间列表中保存的数据不会超过10 阅读全文
posted @ 2019-11-22 10:12 赵青青 阅读(582) 评论(0) 推荐(0) 编辑
摘要:链表用途 数据需要经常性地插入移除,并且数据量不算很小的情况下,一般都用链表表示 链表插入删除效率极高,达到O(1)。对于不需要搜索但变动频繁且无法预知数量上限的数据,比如内存池、操作系统的进程管理、网络通信协议栈的trunk管理等等等等,缺了它是绝对玩不转的。 在操作系统中,链表用来分配内存,链接 阅读全文
posted @ 2019-11-09 16:21 赵青青 阅读(733) 评论(0) 推荐(0) 编辑
摘要:经典例子 来看一个网上很流行的经典例子: 注:malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void 类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存 0.申请方式和回收方 阅读全文
posted @ 2018-09-15 17:55 赵青青 阅读(2486) 评论(2) 推荐(2) 编辑
摘要:本文旨在科普安全相关的知识,并附一个C#实现的文件管理工具。 Hash 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的五种安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的概率很高。这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述): ... 阅读全文
posted @ 2016-05-30 11:20 赵青青 阅读(2485) 评论(0) 推荐(1) 编辑
摘要:看到有的资料说数据类型占用的内存大小跟操作系统有关,或者跟编译器有关,对于这方面,我也未研究的很深入,只说说我个人的理解 要修改数据 修改某一游戏的玩家背包图鉴开启状态和宠物的三围 准备软件 安卓模拟器搭载Android 4.x的系统 ,内存修改器(烧饼或八门) 内存修改器 修改操作 使用烧饼修改器 阅读全文
posted @ 2015-02-12 17:57 赵青青 阅读(2260) 评论(0) 推荐(0) 编辑
摘要:Unity脚本编程 众所周知,unity的编程属于脚本化,脚本没有一个具体的概念跟架构, 导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本, 结果,就造成了一片混乱,不好管理。 更有甚者,自己的写的代码闲置一段时间后,再去想找某个功能的实现,都要在视图中翻来覆去找半天。 哎!请容许我在 阅读全文
posted @ 2015-02-12 16:43 赵青青 阅读(41508) 评论(15) 推荐(14) 编辑
摘要:前言 在我的《C#集合类》一文曾讲到了C#的集合类中的Stack,但是关于Stack还真的是有几种不同的含义。 下面内容转载自阮一峰的日志:Stack的三种含义 学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。 理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有 阅读全文
posted @ 2014-10-13 10:23 赵青青 阅读(1188) 评论(0) 推荐(0) 编辑
摘要:接上篇:A*寻路初探 GameDev.net 在A*寻路中使用二叉堆 作者:Patrick Lester(2003年4月11日更新) 译者:Panic 2005年3月28日 译者序 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章《A*寻路初探》的补充,在这篇文章里,作者再一次展现了他阐述复杂话题的非凡能力,用通俗易懂的语句清晰的解... 阅读全文
posted @ 2014-09-07 21:20 赵青青 阅读(1442) 评论(0) 推荐(0) 编辑
摘要:A*寻路初探 GameDev.net MulinB按:经典的智能寻路算法,一个老外写的很透彻很清晰,很容易让人理解神秘的A*算法。以下是一个中文翻译版。 A*寻路初探 GameDev.net 作者: Patrick Lester 译者:Panic 2005年3月18日 译者序 很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念。这次决定从头开始,研究... 阅读全文
posted @ 2014-09-07 21:05 赵青青 阅读(3191) 评论(0) 推荐(0) 编辑
摘要:HashTable和HashMap 脑海中一直存在两个Hash,一个是HashMap另一个是HashTable,今天来总结一下两者的区别 相同点:表示根据键的哈希代码进行组织的键/值对的集合,哈希表也叫散列表。 区别:HashMap在C#中不存在的,而是在Java中 1.C#每一个元素都是存储在Di 阅读全文
posted @ 2014-09-02 11:11 赵青青 阅读(2522) 评论(2) 推荐(0) 编辑
摘要:.Net的集合类 在.NetFramework中集合类有很多种,比如:Array(数组),ArrayList(数组列表),List(列表),HashTable(哈希表),Dictionary(字典),Stack(堆栈) ,Queue(队列) ArrayList是数组的复杂版本,ArrayList 类 阅读全文
posted @ 2014-09-01 17:17 赵青青 阅读(2718) 评论(0) 推荐(0) 编辑
摘要:问题1. 技能如何储存和调用? 游戏中上百个技能是如何储存的,如果调用的,不会是一起加载,if判断一个一个的吧? 注:下方回答中(蓝色的字体是我们游戏中的做法) 回答一 主流的做法是通过 Add Buff 和DeBuff 来实现的,下面简单Buff的释放方式 最简单的Buff需要有如下通用属性: 1 阅读全文
posted @ 2014-08-10 21:15 赵青青 阅读(1974) 评论(0) 推荐(0) 编辑
摘要:接着上文<<关于数据结构(一)>>,关于数据结构,在实际的开发中或多或少都有涉及到,只是看自己平时没有积累到。下面是我在项目中的几个实例: 一、UI返回功能 有六个大的UI部分,每一个大部分里面还有具体的条目,当然不管是大条目还是点击进去后的子条目在顶部都会有一个 Back(返回) 按钮,点击后可以 阅读全文
posted @ 2014-08-10 16:06 赵青青 阅读(351) 评论(0) 推荐(0) 编辑
摘要:问题:怎么学好数据结构? 回答一: 数据存储 的目的是便于数据访问,这个关系就是数据结构 算法 是计算机解题的模型:输入,输出,顺序执行,跳转,循环,分支,有限步骤 人大脑组织数据的方式有线,树,图三种逻辑结构,而计算机存储采用顺序,链式和两者混合的方式。前者是概念性的东西,后者是物理实现。 线形结 阅读全文
posted @ 2014-08-10 11:12 赵青青 阅读(550) 评论(0) 推荐(0) 编辑
摘要:示例代码 Enumerable.Select<TSource, TResult> 方法 (IEnumerable<TSource>, Func<TSource,TResult>) 将序列中的每个元素投影到新表中。 (由 Enumerable 定义。) 有如下几种方法: 方法1 listNumber= 阅读全文
posted @ 2014-07-16 09:30 赵青青 阅读(471) 评论(0) 推荐(0) 编辑