摘要: PHP的 yield 关键字是php5.5版本推出的一个特性,算是比较古老的了,其他很多语言中也有类似的特性存在。但是在实际的项目中,目前用到还比较少。网上相关的文章最出名的就是鸟哥的那篇了,但是都不够细致理解起来较为困难,今天我来给大家超详细的介绍一下这个特性。 阅读全文
posted @ 2017-12-02 16:12 猫猫大侠 阅读(27529) 评论(5) 推荐(8) 编辑
摘要: 由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言。从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作。个人认为对于熟悉一样东西说最好的方法是上手实践。于是便想起了当时大学的时候老师布置过的一道题目,用C语言实现简单数学表达式的分析和求值,比较遗憾的是当初没能把题目完 阅读全文
posted @ 2017-06-03 17:39 猫猫大侠 阅读(6938) 评论(0) 推荐(0) 编辑
摘要: 【我理解的游戏】在我的理解里,游戏就是可以交互的动画。所以游戏的原理跟动画是差不多的。相信动画的原理大家都知道,就是通过一系列的变化来让静态的图片达到动的效果。不过游戏与动画不同的是,游戏是可以交互的。也就是说,用户对游戏有一定的控制权。游戏也会根据用户的操作来反馈给用户不同的动画,当然也会记录用户在整个游戏中的表现。一般会用分数显示的反馈给用户,他在整个游戏中的表现。大多数的canvas游戏,是通过不断的擦除canvas然后重绘被擦除的部分。并改变被擦除前那一部分的所有元素的位置或者颜色来达到动画的效果。当然也有部分游戏是根据用户的某个操作来激活某个动作。比如五子棋,就是通过用户在棋盘上的点 阅读全文
posted @ 2013-03-15 16:26 猫猫大侠 阅读(2533) 评论(7) 推荐(2) 编辑
摘要: 由于今天正美大大的回复,然后前篇文章的评论里就出现了好多人站出来指责我抄袭,吓的我小心肝都扑通扑通的跳。虽然这次的模块加载器是参照了正美大大的来写,但是至少我是一行一行代码自己写出来的。然后一个浏览器一个浏览器测试的,就连流程图都重画了好几次。虽然大体上跟正美的差不多,但是细节上还是有很多不同的。看到哪些回复我也不想说啥。 抄没抄,会不会。明眼人一眼就能看出来,犯不着解释太多。废话不多说,下面介绍这一版本的改进。额外增加了一个配置项控制并发的数量。因为浏览器的有效并发数是有限的。所以如果你一次性加载10个模块,就有可能阻塞掉其它的资源加载。现在内部默认最大并发是4个。将原来的moduleCac 阅读全文
posted @ 2013-03-12 01:34 猫猫大侠 阅读(1737) 评论(2) 推荐(1) 编辑
摘要: 如果你还不了解AMD模块加载器,可以先看看我的前一篇文章,之后又在其基础上做了一点小修改。 主要是修改了检测循环依赖的函数,不在遍历对象。第二就是加入了模块配置方法。以及将lynxcat更名为lynx。还有就是为模块加入了dom ready机制。var ready = function (){ var isReady = false; var readyList = []; var ready = function(fn){ if(isRe... 阅读全文
posted @ 2013-03-11 11:04 猫猫大侠 阅读(1240) 评论(0) 推荐(0) 编辑
摘要: 很久没有写博客了,一来是工作比较忙,二来主要是觉得没什么可写。当然,自己的懒惰也是不可推卸的责任。最近有点空余的时间,就看了一下AMD模块加载。关于它的定义和优缺点就不介绍了,园子里大把。相信大家也都知道。主要说一下加载器的原理以及在开发过程当中遇到的一些坑。当然由于加载器不是规范的一部分,所以实现方法也各不相同。我所用的方法也不是最优的,只是用来当作学习而已。【模块加载器原理】 1.开始 2.通过模块名解析出模块信息,以及计算出URL。 3.通过创建SCRIPT的形式把模块加载到页面中。(当然也可以采用其它方法,如XHR。 IFRAME等等) 4.判断被加载的脚本,如果发现它有依赖就去加载依 阅读全文
posted @ 2013-03-08 17:56 猫猫大侠 阅读(2256) 评论(1) 推荐(0) 编辑
摘要: 但凡跟javasript打交道。就万万不会不知道this。初次接触this,总认为它很强大和神秘。不可预知,似乎有种不为人知的魔力。因为在接触到它之前,大部分人认为this是那些oop语言的专利。至少我曾经是这么认为的。随着时间的推移,对javascript的进一步提高。this那神秘的面纱才一步步被揭开。话休绕舌,下面就一起来看看这层神秘的面纱背后的this吧。首先,我们要知道this是什么。它的含义。通俗的来说, this首先是一个对象,其次要知道的是this不是由它本身出现在何处来决定的。而是由调用它的对象来决定的,可以简单的理解为。是谁调用了this,那么this便代表谁。比如在全局作 阅读全文
posted @ 2012-09-01 20:22 猫猫大侠 阅读(1901) 评论(16) 推荐(10) 编辑
摘要: 最近一直在弄手机端的游戏,接触到各种动画。加之对之前的自己那个动画类不满意,就有心想写个新的。然后翻看各种博客,查资料。也学到一些新的东西。动画原理所谓的动画,就是通过一些列的运动形成的动的画面。在网页中,我们可以通过不断的改变元素的css值,来达到动的效果。用到的公式总距离S = 总时间T * 速度V 即: V = S/T当前距离s = S/T * 已耗时t 即:s = S * (t/T)即:当前距离 = 总距离 * (已耗时/总时间)即:动画元素开始值 + (动画元素结束值 - 动画元素开始值) * (当前时间-开始时间) / (动画需要时间) + 值的格式有了上面这些公式,我们就能利用j 阅读全文
posted @ 2012-08-30 15:06 猫猫大侠 阅读(2190) 评论(7) 推荐(8) 编辑
摘要: javascript中的var关键字,作用很简单。用于声明一个变量。如果不给声明的变量赋值则为undefined.var test = 'test'; var t;此时test值为,'test', t 的值为undefinde.似乎很简单,并没有什么特殊的地方。只要学过js的,都知道。那么请看下面这段代码的执行结果。console.log(test);var test = 'test';console.log(test);这样先输出了undefunde 然后输出了test。很奇怪吧。相信很多朋友会以为会产生错误。因为我们在输出test时,它还未被 阅读全文
posted @ 2012-05-08 15:04 猫猫大侠 阅读(2170) 评论(10) 推荐(8) 编辑
摘要: 工厂模式分为两种,一种是简单工厂模式。另一种称之为工厂模式。简单工厂模式是使用一个外部的单体或者静态方法来生成实例。而工厂模式使用子类来决定内部成员要实现那个具体的类的实例。工厂模式要求被具体实现的类,必须提供相同的接口。下面我们将通过一段代码来讲述一个简单工厂模式的实现。function myMode(){}myMode.prototype = { create:function(){ var mode = createmode.create(mode); mode.xxx();//可以对返回的mode执行任何你想要的操作 return mode; }}var crea... 阅读全文
posted @ 2012-04-11 17:32 猫猫大侠 阅读(1324) 评论(1) 推荐(0) 编辑