Browsed by
Category: Uncategorized

lua 学习笔记12

lua 学习笔记12

/******************/  在c++中使用lua/******************/费了九牛二虎之力,总算可以在vs 2003的c++环境中使用lua了。方法如下:1、解压缩下载的lua原文件包 ,把其ect目录下的luavs.bat,拷贝到lua目录下,在vs2003的命令行工具中运行它,生成编译好的文件。 2、在vs2003中建立一个控制台项目,把刚才生成的一堆src目录下的文件拷到这个项目下,新建一个main.cpp文件,写入如下内容: #include <stdio.h>#include <string.h> extern"C"{#include "lua.h"#include "lauxlib.h"#include "lualib.h"} int main(void){   char buff[256];      int error;      lua_State *L = lua_open();   /* opens Lua */      luaopen_base(L);             /* opens the basic library */      luaopen_table(L);            /* opens the table library */      luaopen_io(L);               /* opens the I/O library */      luaopen_string(L);           /* opens the string lib. */      luaopen_math(L);             /* opens the math lib. */          while (fgets(buff, sizeof(buff), stdin) != NULL) {        error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||                lua_pcall(L, 0, 0, 0);       …

Read More Read More

休息一下

休息一下

好累,从内蒙旅游归来。 需要好好休息。 明天还得早起,好郁闷。   ps: 一些有用的道理: 1、在追求财富时,放弃理想,往往会得到相反的结果。而在追求理想的过程中,往往会自然的享有财富。 2、拿出一些勇气去做自己想做的事,不要去想后果。

blue jokes(for adult :))

blue jokes(for adult :))

    “你说我怎么回事儿?我和护士……。”他脸上的肉直抽搐。   “怎么了?吵架了?还是不合适?”我说   “不是,咳,我就直说吧,我问你,你和蓝悦一般都几分钟。”   把我问傻了,我也知道他想说什么了。   “反正你这种体质的超过10分钟就算胜利。”我鄙视说。   “10分钟,别扯淡了你,我不到2分钟就能完事儿。”   “哇哈哈。”蓝悦从桌子后面突然蹦了出来。   青山同志恼羞成怒,甩门出去了。   蓝悦跟了出去,使劲烦着赵青山。小护士坐在旁边还不知道怎么回事   “蓝蓝,你怎么跟他蹭来蹭去的?”彭佳说。   “2分钟啊2分钟。”蓝悦一边晃着青山胳膊一边说。   “行了啊,给哥点面子。”老赵说。   此时小护士仿佛明白了点什么。   “两分钟呀两分钟”她还在说。看来只要老赵一急,她一高兴才能完:“水深火热两分钟呀激情交叉两分钟。”   “脱了穿上搁多久啊,中间就搁两分钟。”   她太多分了,彭佳和老赵目不转睛地看着电视里的<<动物世界>>,脸红的像两个西红柿摆一块。   此时电视里的一句话引起青山的注意,那个声音说:“雄狮的交配过程一般两分钟结束。”   画面上两头狮子在交配。   “看到没看到没哈哈。”老赵也不顾护士的感受,激动地跳了起来:“我和雄狮一样,我和雄狮一样哈哈。”   他使劲指着电视,蓝悦被他的举动刺激了,瞪着大眼看着电视,皱着眉头。   电视里的交配持续了一分钟,老赵仿佛一下有了自尊,手一直指着电视。很是激动。   这时候主持人又说话了:“像这样的交配,狮子一天可以进行50次以上,有的甚至达到200次。”   青山傻了,蓝悦爆发了一阵疯狂的大笑。

什么是威客?

什么是威客?

 今天中午看电视,才知道还有威客。什么是威客?怎么样上威客?我不清楚。下午我在网上看了才对威客有点了解,现在我想把有关威客的一篇文章介绍给大家,与大家共同分享、研究、讨论。 威客模式的兴起博客是人人都来写文章,威客是人人都来做服务。简单的说,威客就是“我帮人人,人人帮我”,只不过这个“帮助”分为有偿的和无偿的两种类型。威客网站就是给大家一个平台,让大家公开自己的知识、经验、能力,让需要帮助的人了解到你及你可以提供的服务和帮助,同时也可以帮你找到能够帮助自己解决问题和麻烦的人,并获得他的帮助。 博客与威客都是互联网日渐普及、全民参与这种大环境下的产物。威客如果能够得到好的推广和宣传,产生一些好的威客服务交易平台,相信威客网站今后的发展必然超过博客网站。之所以这样认为,原因就是博客网站和威客网站存在如下不同点: 第一, 博客网站没有明确的盈利模式,威客网站的盈利模式非常清晰。关于博客如何盈利的问题,我们见过了无数的讨论,然而仍然只是停留在访问量的问题上,可是任何网站如果访问量足够大,都是可以盈利的,这还有什么可以讨论的呢? 威客网站时间就是ctoc交易网站,其盈利模式与其他ctoc网站没有什么不同,甚至有可能更加可行。原因是大家在威客网站交易的是服务性产品和无支出成本的服务,所以网站的服务性就更加重要,收费自然更加容易。 第二, 不是人人都能做博客,威客却是人人都可以做。做博客有一点技术难度,做威客基本没有技术难度。这样以来,更加体现了互联网上的全民参与性,让全面都可以参加到威客服务的行列中来。 博客一定要有一定的文学功底,要求能写还要会宣传自己的blog; 威客只需要知道自己能做什么,并且愿意将自己能做的事情用文字公布到网上,等待别人来找你帮助或服务。 第三, 参与博客是人人做贡献,博客贡献文字、访问者贡献流量,受益者只有网站;参与威客,每个人都可以收益。威客是在交换或者买卖彼此的服务,每个威客从服务别人中获得收益,访问者可以找到自己需要的服务,网站可以从为威客提供交易平台获得收益。 第四, 博客需要花费很多的精力和时间,威客则基本不需要花时间去维护和更新自己发布的信息。每个人在威客网站发布的信息,就是自己能为别人提供的知识、经验、服务等内容,这些信息一般不会过期,只要拥有就终身可以提供给需要者,只是看什么时候会有需要者出现。 第五, 博客是草根文化,大量的信息的堆积使得人们无法准确获得有效的信息;威客由于是一种商品交易,所以信息的质量能够提高,服务也能在一定程度上的到保证。 博客能够流行得益于这个社会越来越个性化,那么可以相信,提供个性化服务的威客,也存在流行的趋势。希望威客可以开创一个新的互联网时代。

不遗漏的随机数字

不遗漏的随机数字

问题的引入: 产生1-10之间不重复,不遗漏的随机数字   今天看csdn,看到这样一个题目,很简单的题目,解决方法也很简单,于是随手写了random10NumB()(如下)再看看那篇帖子下面,还有一个高人的程序(random10NumA())。  看看random10NumA(),它采用List来作为容器,利用每次取出数后减少容器大小实现每次取出的数都是非重复的。  看来,看待问题也要随时保持从不同的角度。  public void random10NumA() {  List src = new ArrayList();  for (int i = 1; i <= 10; src.add(String.valueOf(i++)))   ;   Random rand = new Random();  while (!src.isEmpty()) {   int index = rand.nextInt(src.size());   System.out.println(src.remove(index));  } }  public void random10NumB() {  Random ran = new Random();  int[] ranArray = new int[10];  for (int i = 0; i < 10; i++) {   int curNum = ran.nextInt(10) + 1;   for (int j = 0; j < i; j++) {    if (curNum == ranArray[j]) {     curNum = ran.nextInt(10) + 1;     j = 0;    }   }   ranArray[i] = curNum;  }  for (int i…

Read More Read More

单眼皮

单眼皮

揭开双眼皮和单眼皮的秘密 对于人何以有双眼皮和单眼皮之分,恐怕到现在还是一个谜吧?其实,单眼皮和双眼皮就区分是一个人是以右脑为主或是左脑为主的明显特征。也就是说,双眼皮的人,其性格和行为特征是以右脑为主,是典型的感性中人,这类人一般都情感丰富,外向,善交际。而单眼皮的人,其性格和行为特征是以左脑为主的,是典型的理性中人,这类人一般都性情稳重,内向,不擅长交际。 就东方国家而言,女性占双眼皮的比例是远远高于男性的,双眼皮的女性在看待问题时是比较直观的,他们并不进行严密的逻辑推理和分析,只相信直觉,相信她们的第六感觉,同时,他们在社会中的交际能力非常强,富于表演能力,情感丰富。但这类女性爱感情用事,一旦生起气来,很难以理说服。是典型的以右脑为主的人。而单眼皮的女性则较理性,她们的行为比较稳重,从不轻易的流露情感,歇斯底里的情感发作,在她们是很难找到的。 西方人无论男女,其双眼皮所占的比例都是相当高的,而西方人也恰恰具备了右脑为主之人所具备的性格及行为特征。创新意识强,富于想象,敢于冒险,勇于打破常规的束缚。比较偏重精神生活, 显得天真烂漫,事实也确实如此。我们知道,许多重大的创造性发明都产生于西方,而许多希奇古怪的事同样较多地发生在西方,这一点是有目共睹的。所以说西方是一个到处充满着感性的国度。其主要原因就是,多数的西方人,由于右脑较左脑发达,所以他们一切的行为特征是以右脑为主的。 而东方国家的人则恰恰相反,无论男性或者女性,单眼皮的比例相当大,尤以男性为重。而东方人所表现的一切,也恰恰符合左脑为主之人的性格及行为特征。重理性,保守,内向,缺乏创新意识和冒险精神。所以在一些东方国家,既缺少重大的创造性成就,亦无太多荒唐之事的发生,一切都显得平平静静,到处都充满着理性。所有这些,都是由于大多数 东方人的性格及行为特征都是以左脑为主的。 还有一种情况,那就是有的人一只眼为双眼皮,而另一只眼为单眼皮,而这种人又存在着两种不同的类型,一种是左眼为单眼皮,右眼为双眼皮。一种是左眼为双眼皮而右眼为单眼皮。这两种人所秉承的阴阳二气都较旺盛,两者差别不大,那么根据阴阳对左右脑各有所主的理论, 前者为阴气较阳气旺盛,其行为特征以左脑为主。后者为阳气较阴气旺盛,其行为特征以右脑为主。还有一种人,是内双眼皮,这类人的眼部特征给人的感觉是单眼皮,但经过仔细观察你会发现,他们的内双眼皮的特征,会在眼睛的将闭而又未闭之间显现出来。所以,这类人也是左右脑都较发达的,但以右脑为主。

HTTP参考

HTTP参考

一、HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。 响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受、理解和采纳3.3xx:重定向,为了完成请求,必须进一步执行的动作4.4xx:客户端错误,请求包含语法错误或者请求无法实现5.5xx:服务器错误,服务器不能实现一种明显无效的请求 下表显示每个响应码及其含义:100            继续101            分组交换协200            OK201            被创建202            被采纳203            非授权信息204            无内容205            重置内容206            部分内容300            多选项301            永久地传送302            找到303            参见其他304            未改动305            使用代理307            暂时重定向400            错误请求401            未授权402            要求付费403            禁止404            未找到405            不允许的方法406            不被采纳407            要求代理授权408            请求超时409            冲突410            过期的411            要求的长度412            前提不成立413            请求实例太大414            请求URI太大415            不支持的媒体类型416            无法满足的请求范围417            失败的预期500            内部服务器错误501            未被使用502            网关错误503            不可用的服务504            网关超时505            HTTP版本未被支持 二、HTTP头标头标由主键/值对组成。它们描述客户端或者服务器的属性、被传输的资源以及应该实现连接。 四种不同类型的头标:1.通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。2.请求头标:允许客户端传递关于自身的信息和希望的响应形式。3.响应头标:服务器和于传递自身信息的响应。4.实体头标:定义被传送资源的信息。即可用于请求,也可用于响应。 头标格式:<name>:<value><CRLF> 下表描述在HTTP/1.1中用到的头标Accept            定义客户端可以处理的媒体类型,按优先级排序;            在一个以逗号为分隔的列表中,可以定义多种类型和使用通配符。例如:Accept: image/jpeg,image/png,*/*Accept-Charset        定义客户端可以处理的字符集,按优先级排序;            在一个以逗号为分隔的列表中,可以定义多种类型和使用通配符。例如:Accept-Charset: iso-8859-1,*,utf-8Accept-Encoding        定义客户端可以理解的编码机制。例如:Accept-Encoding:gzip,compressAccept-Language    定义客户端乐于接受的自然语言列表。例如:Accept-Language: en,deAccept-Ranges        一个响应头标,它允许服务器指明:将在给定的偏移和长度处,为资源组成部分的接受请求。            该头标的值被理解为请求范围的度量单位。例如Accept-Ranges: bytes或Accept-Ranges: noneAge            允许服务器规定自服务器生成该响应以来所经过的时间长度,以秒为单位。            该头标主要用于缓存响应。例如:Age: 30Allow            一个响应头标,它定义一个由位于请求URI中的次源所支持的HTTP方法列表。例如:Allow: GET,PUTaUTHORIZATION        一个响应头标,用于定义访问一种资源所必需的授权(域和被编码的用户ID与口令)。            例如:Authorization: Basic YXV0aG9yOnBoaWw=Cache-Control        一个用于定义缓存指令的通用头标。例如:Cache-Control: max-age=30Connection        一个用于表明是否保存socket连接为开放的通用头标。例如:Connection: close或Connection: keep-aliveContent-Base        一种定义基本URI的实体头标,为了在实体范围内解析相对URLs。            如果没有定义Content-Base头标解析相对URLs,使用Content-Location URI(存在且绝对)或使用URI请求。            例如:Content-Base: Http://www.myweb.comContent-Encoding    一种介质类型修饰符,标明一个实体是如何编码的。例如:Content-Encoding:…

Read More Read More

[转]防止JAVA代码被反编译的方法

[转]防止JAVA代码被反编译的方法

防止JAVA代码被反编译的方法(转载) 我们都知道JAVA是一种解析型语言,这就决定JAVA文件编译后不是机器码,而是一个字节码文件,也就是CLASS文件。而这样的文件是存在规律的,经过反编译工具是可以还原回来的。例如Decafe、FrontEnd,YingJAD和Jode等等软件。下面是《Nokia中Short数组转换算法》 thread.jspa?threadID=872&tstart=0 类中Main函数的ByteCode: 0 ldc #16 2 invokestatic #18 5 astore_16 return 其源代码是:short [] pixels = parseImage("/ef1s.png"); 我们通过反编译工具是可以还原出以上源代码的。而通过简单的分析,我们也能自己写出源代码的。 第一行:ldc #16 ldc为虚拟机的指令,作用是:压入常量池的项,形式如下 ldc index 这个index就是上面的16,也就是在常量池中的有效索引,当我们去看常量池的时候,我们就会找到index为16的值为String_info,里面存了/ef1s.png. 所以这行的意思就是把/ef1s.pn作为一个String存在常量池中,其有效索引为16。 第二行:2 invokestatic #18 invokestatic为虚拟机指令,作用是:调用类(static)方法,形式如下 invokestatic indexbyte1 indexbyte2 其中indexbyte1和indexbyte2必须是在常量池中的有效索引,而是指向的类型必须有Methodref标记,对类名,方法名和方法的描述符的引用。 所以当我们看常量池中索引为18的地方,我们就会得到以下信息: Class Name : cp_info#1 Name Type : cp_info#19 1 和19都是常量池中的有效索引,值就是右边<>中的值,再往下跟踪我就不多说了,有兴趣的朋友可以去JAVA虚拟机规范。 这里我简单介绍一下parseImage(Ljava/lang/String;)[S 的意思。 这就是parseImage这个函数的运行,我们反过来看看parseImage的原型就明白了 short [] parseImage(String) 那么Ljava/lang/String;就是说需要传入一个String对象,而为什么前面要有一个L呢,这是JAVA虚拟机用来表示这是一个Object。如果是基本类型,这里就不需要有L了。然后返回为short的一维数组,也就是对应的[S。是不是很有意思,S对应着Short类型,而“[”对应一维数组,那有些朋友要问了,两维呢,那就“[[”,呵呵,是不是很有意思。 好了,调用了函数,返回的值要保存下来吧。那么就是第三行要做的事情了。 第三行:5 astore_1 呵呵,很简单的。但是却有文章,也是比较容易混乱的地方。 astore_为虚拟机指令,作用为:将当前reference存储到局部变量中去。而必须是对当前框架的局部变量的有效索引。打个比方,可能我们这个函数中可能还要用到这个局部变量,我们可以通过来找到它。例如调用虚拟机指令: aload_1,就能得到该值。 第四行:6 return 同样的,return也是虚拟机指令了,它的作用为:从方法返回void。 这里也就是退出main函数。 —————————————————————————- ok,终于啰嗦完毕了。有些朋友可能要问,这么复杂,才四行就说这么多,呵呵,可能是我这人废话过多,当然如果你熟悉了,一点就能看懂了。通过肉眼就可以反编译程序了。目前所有的反编译工具都无法做到完美反编译,在有问题的地方还需要人去修正。 好了,说了半天如何反编译,我们就来看看如果在你的程序如果防止别人来反编译。好不容易写好的程序被人反编译了,多郁闷。哈哈。工欲善其事,必先利其器,这句话用对了吗? 什么混淆等等的方法,我就不说了,我这里主要是要说一种通过添加代码来在某种程度来避免当前流行的反编译工具对你的代码进行反编译。 方案一。 1,首先要添加一个参数为Exception类型的函数,例如这样。 public static void Fake(Exception e){e.toString();} 一定要有e.toString();,因为要防止你的混淆器把无用的代码过滤。 2,然后在每个类中调用这个函数,放在try…catch(Exception e)..中的catch里面,例如: try{…}catch (Exception e){Fake(e);} 请注意…

Read More Read More

为什么巴比伦塔会失败?(Why Did the Tower of Babel Fail?)

为什么巴比伦塔会失败?(Why Did the Tower of Babel Fail?)

  现在整个大地都采用一种语言,只包括为数不多的单词。在一次从东方往西方迁徙的过程中,人们发现了苏美尔地区,并在那里定居下来。接着他们奔走相告说:“来,让我们制造砖块,并把它们烧好。”于是,他们用砖块代替石头,用沥青代替灰泥(建造房屋)。然后,他们又说:“来,让我们建造一座带有高塔的城市,这个塔将高达云宵,也将让我们声名远扬,同时,有了这个城市,我们就可以聚居在这里,再也不会分散在广阔的大地上了。”于是上帝决定下来看看人们建造的城市和高塔,看了以后,他说:“他们只是一个种族,使用一种的语言,如果他们一开始就能建造城市和高塔,那以后就没有什么难得倒他们了。来,让我们下去,在他们的语言里制造些混淆,让他们相互之间不能听懂。”这样,上帝把人们分散到世界各地,于是他们不得不停止建造那座城市。(创世纪,11:1-8) Now the   whole earth used only one language, with few words. On the occasion of a migration from the east, men discovered a plain in the land of Shinar, and settled there. Then they said to one another, "Come, let us make bricks, burning them well." So they used bricks for stone, and bitumen for mortar. Then they said, "Come, let us build ourselves a city with a tower whose top shall reach the heavens (thus making a…

Read More Read More

由一场惨败想到的

由一场惨败想到的

今天玩《疯狂大陆2》,因为钱不够升级,想到玩一玩游戏中赌博游戏,看看能不能赚到钱,没想到,运气实在是差,一下子输了个倾家荡产,钱只有0了。 后来想想,游戏中肯定设定了一个比率,而输和赢的利弊肯定不是50%,所以我输光是很正常的。接着又想,如果假定一个数,它是在0到10之间的,如果输入是均匀的,取到任意值的概率应该为10%。如果一个数是从0到100之间,那么任取一个数在n*10到(n+1)*10之间的概率也应该是10%,但是从人的感觉上,后者的把握应该要大一点,虽然理论上能够应该是一样的。 然后想到j2me中提供的Random取得随机值是不是均匀的呢?于是写了下面的程序进行验证:  Random m_random = new Random(); public void test(){  int tmp=0;  int [] re=new int[10];  for(int i=0;i<0xffff;i++){   tmp=m_random.nextInt()&0x7fffffff;   tmp%=10;   for(int j=0;j<10;j++){    if(tmp==j) re[j]++;   }  }  for(int j=0;j<10;j++){   System.out.println("re["+j+"]="+re[j]);  }   }输出结果:re[0]=6613re[1]=6563re[2]=6459re[3]=6501re[4]=6808re[5]=6616re[6]=6472re[7]=6584re[8] =6468re[9]=6451 从结果看到,应该是均匀的~ 最后,又想,怎样写一个赌博游戏的作弊器?比如简单的赌大小,用户选择大或者小,游戏判断结果。那么作弊器可以这样,当用户输入决定信息后,把截断消息,按照赌博游戏的算法,进行预运算,如果判定能够取胜,则把结果放回游戏中。