GodZza

导航

2013年9月9日 #

简单的压缩文件加解密方法

摘要: 注: 1.文章只是个人猜想之个人方案,不是常用的压缩软件所用算法。 2.只涉及到加解密,跟压缩无关。这个假期想了点系统文件加密的方法,系统要求只在当前系统能读取到正确的文件信息,作为从盘时读取到的是错误信息,硬盘数据不能被拷贝,等等。有一些简单的解决方法,就是利用系统提供的方案,例如Bitlocker或者EFS。BitLocker的问题是 1.需要Windows Vista 系统及以上,而当前系统使用Win Xpe系统。 2.需要手动输入密码,这就相当于公布了密码。如果使用硬件加密,则成本增加。而EFS加密也会有相近问题, 1.EFS是针对账户加密的(搜索下EFS破解可知道大概原理)... 阅读全文

posted @ 2013-09-09 13:19 GodZza 阅读(885) 评论(0) 推荐(0) 编辑

2013年4月11日 #

点乘(内积)

摘要: 今天在项目中看到了“点到线段最短距离”的函数:float GetDistanceToLine(Vector2 point, Vector2 p0, Vector2 p1){ //2D Vector2 v = p1 - p0; Vector2 w = point - p0; float c1 = Vector2.Dot(w,v); if ( c1 <= 0 ) return w.Length(); float c2 = Vector2.Dot(v); if ( c2 <= c1 ) return Vector2.Distance(p... 阅读全文

posted @ 2013-04-11 02:10 GodZza 阅读(6052) 评论(4) 推荐(1) 编辑

2013年4月6日 #

随机数

摘要: 通常我们使用的随机函数是返回一个32位的取值范围为[0,0x7FFFFFFF) /*2147483647*/的随机数。因为目前我们所使用的随机数生成都是伪随机数(伪随机数是以相同的概率从一组有限的数字中选取的,所选数字并不具有完全的随机性。),所以会造成分布不均的情况。但是,如果生成的随机数能均匀分布的话(0~0x7FFFFFFF出现的概率一样),问题就解决了吗?先看下面代码: class Random { int index = 0; int []array; public Random(int len) { ... 阅读全文

posted @ 2013-04-06 00:34 GodZza 阅读(276) 评论(0) 推荐(0) 编辑

2013年4月5日 #

表驱动

摘要: 在做简单2D RPG游戏时,可能会遇到NPC与玩家对话的情况。如何判定NPC能否和玩家对话,一般有两个条件:1. NPC在玩家附近(地图中相邻的格子中)2. NPC和玩家面对面通常会写如下代码: 1 enum SpriteDirection 2 { 3 UP, 4 DOWN, 5 LEFT, 6 RIGHT, 7 } 8 9 public bool CanTalk(NPC npc)10 {11 return Nearest(npc) && FaceToFace(npc);12 }13 14 public bool Nearest(npc)15 {16 ... 阅读全文

posted @ 2013-04-05 20:58 GodZza 阅读(358) 评论(0) 推荐(0) 编辑

2013年3月14日 #

inet_ntoa 陷阱

摘要: 前天同事问我一个关于ip被"替换"的问题,代码大概如下:ip_ local = networkMgr.GetLocalIP(); //127.0.0.1ip_ server = networkMgr.GetServerIP(); //0.0.0.0printf(" l:%s",inet_ntoa(local));printf(" s:%s \n",inet_ntoa(server));//network manager to do somethingprintf(" l:%s s:%s \n",inet_ntoa( 阅读全文

posted @ 2013-03-14 10:16 GodZza 阅读(1686) 评论(2) 推荐(1) 编辑

2013年1月7日 #

KlayGE bug report

摘要: 在文件 KlayGE\Core\Include\KlayGE\Math.hpp 数学函数库中发现了mirror函数的Bug.例如调用: mirror( -10, 1, 2) 会出现死循环.(注意rang 未有使用过)还有就是 mirror函数和warp函数都使用了while循环, 当val与low和 high的差距比较大时,效率会降低.warp函数可以使用代替:template <typename T>inline T warp(T const & val, T const & len){ return val - (floor(val / len) * len); 阅读全文

posted @ 2013-01-07 17:16 GodZza 阅读(196) 评论(1) 推荐(0) 编辑

2013年1月1日 #

c# java 迭代器 思考(2012-12-27 01:40)

摘要: 很久之前便想动手写,无奈太懒。现在才开始动手,希望能尽快完成。说起迭代器模式,不得不先说一下“镜像模式”(名字独创,不该称为模式)所谓镜像模式,就是当函数返回引用对象时,理应返回该对象的拷贝,而不是直接返回该对象。例如: 1 public class IDCard{ 2 string name; 3 bool sex; 4 //others... 5 } 6 7 public class IDCardList { 8 private List list; 9 public IDCardList() {10 list = new ArrayList();11 ... 阅读全文

posted @ 2013-01-01 19:20 GodZza 阅读(576) 评论(0) 推荐(0) 编辑