C7

不知不觉,已经过去了5个春秋、

requireJS原理解析

一、为何需要AMD 目前在js中的模块加载规范有commonJS、AMD、CMD、UMD还有最近ES所支持的import等等。requireJS是使用AMD的。 相比较于commonJS,AMD是使用回调函数来解决模块加载的问题。 在本地端,使用commonJS的require,那么可以...

2017-03-25 13:13:16

阅读数 6435

评论数 2

xml中qualified的作用

elementFormDefault的意思是局部元素是否需要描述他的命名空间。当为unqualified的时候,就是局部的元素不需要声明他的命名空间,默认是使用父的命名空间。当为qualified的时候,不管是父元素还是子元素,都需要描述他的命名空间的。 当然,当为qualified的时候,我们...

2016-12-23 20:42:05

阅读数 1578

评论数 1

NODE中异步之间的协作

异步IO与同步IO在时间表现上,异步IO预期于最慢一个IO,而同步IO则是所有IO的总和。但是异步IO的结果也是需要统一处理的。因此就涉及到多异步之间的协作。 在node中,我们在全局上设置一个哨兵变量来协作。 下面代码使用process.nextTick来模拟一次异步的IO: "...

2016-12-22 17:05:48

阅读数 248

评论数 0

随想录——面向快乐编程

什么样的手段能够确保项目的正确实施,代价又不高呢? 一直在寻找,有答案说测试驱动,但是测试的编写代价又非常高。测试驱动也不意味着完全不用设计, 而是一种每设计一个小模块,便快速编写测试代码,而后通过这些测试代码来保证功能的正确执行。 测试代码的编写代价不应该大于直接进行代码的编写。 程序的...

2016-12-13 00:01:35

阅读数 412

评论数 0

thinkphp5.0的惰性加载

定义: 惰性加载:一个类只有在使用的时候才include(require)进来。 优点:减少内存占用,提高系统整体速度。 在tp3.2.3的时候,核心的文件是统一加载的。 在think.class.php的start方法中可以看到: foreach ($mode['core'] as $file...

2016-06-25 09:03:05

阅读数 4657

评论数 0

tp框架单元测试库tpunit

thinkphp本身并没有提供相应的单元测试支持,所以这里介绍一个可以对tp进行单元测试的库tpunit。 Tpunit这个库是依赖于phpunit的,其特点是易用、方便和非入侵式。   使用TPUNIT很简单,只需要定义一个路径常量和导入要被测试的文件即可。 Home模块下有个控制器如下...

2016-06-08 09:58:06

阅读数 1489

评论数 0

垃圾回收二

上篇文章讲到了PHP的垃圾回收机制,但是引用计数这种垃圾回收机制是无法回收循环引用这种垃圾的,所以在新的版本中,PHP引入了一种新的垃圾回收机制,这个回收机制的具体实现在上文中已经大概讲过了。   当一个变量在被销毁的时候,如果引用计数大于1的话,那么就会将这个变量保存到缓存区中,并且标记为紫...

2016-05-30 09:48:36

阅读数 257

评论数 0

垃圾回收一

垃圾回收是内存管理重要模块之一,但并不是全部的内存都是垃圾。比如一个定义一个函数的局部变量,在函数执行完之后这个变量就会自动地被撤回,因此这个变量所占用的内存已经被系统收回,自然就不是垃圾了。   那么垃圾的定义是什么呢? 垃圾主要是用来描述那些已经不用但却无法回收的内存。   在php...

2016-05-30 09:46:10

阅读数 235

评论数 0

编写扩展模块和其生命周期

扩展模块有时候,为了某些原因我们需要自己编写php的扩展库。本篇文章,就是简单说明一下如何编写php的扩展库(在windows上)。在php的源码目录中,有个ext文件夹。进入里面,可以看到两个文件,ext_skel_win32.php文件,我们使用php执行一下这个文件,就能创建我们的扩展库的基...

2016-05-30 09:42:28

阅读数 266

评论数 0

全局变量EG、CG

EG在PHP的源码中,大量充斥着EG、PG这种宏定义。在zend_globals_macros.h中,可以看到EG的定义: #ifdef ZTS # define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v...

2016-05-30 09:39:16

阅读数 854

评论数 0

android上webview的一个问题解决方法

No DRP key due to exception:java.lang.ClassNotFoundException: com.android.webview.chromium.Dr 当报这个错误的时候,将模拟器配置中的use host gpu开启,就可以了。 原因: ...

2016-05-07 13:14:44

阅读数 1073

评论数 0

移动APP调试最佳实践二

这里包括上篇文章所说到的调试,并不是传统地下断点步出步进调试之类的,而是与服务器通信的一种调试技术。 像出现了nodejs,前端人员在后端人员接口还没写好的时候,直接就可以使用NODEJS模拟出一个接口出来。 但是有时候,跟服务器进行通信的时候,会出现莫名的错误。这个时候,开发APP的通常会将...

2016-05-04 11:28:22

阅读数 306

评论数 0

移动APP、webview调试最佳实践(一)

忽略掉细节,一个webAPP访问服务器的大概流程就是这个样子: 当手机打开一个网页的时候,应用会向服务器发起一个请求。然后服务器处理完这个请求,相应的,也会将结果返回给浏览器。   这个流程虽然简洁明了,但是对于开发者来说,却还是太复杂了。 比如我现在修复一个紧急的BUG,我需...

2016-05-01 09:15:11

阅读数 859

评论数 0

简单的NFA转DFA的代码实现

(本文章是学习笔记,里面可能有错误,随时更新中。。。) 该方法虽然是一个通用的方法,但是只是针对(a|b)*abb实现而已。也就是说,如果要支持所有的NFA,那么就需要修改一下NFA的读入。 (a|b)*abb的状态转换表是: 将NFA转为DFA的算法如下: 1、对初始状态进行闭包...

2016-04-04 10:09:06

阅读数 4014

评论数 2

在php7中使用thinkphp操作mysql数据库

Version Description 5.5.0 This extension has been deprecated. Connecting to a MySQL database via mysql_connect(),mysql_pconnect() or a...

2016-03-11 09:14:42

阅读数 3950

评论数 0

you don't know js读书笔记

本篇文章是you don't know js的this&object prototypes的第一章的读书笔记,链接地址如下:this or that  在本章节中,主要介绍了两个常混淆的点: 1、以为this代表function本身。 function foo(num) { con...

2016-03-08 13:39:48

阅读数 364

评论数 0

响应式布局基础三:webapp布局

上一遍文章讲到了viewport,但是通过效果图我们可以看出来,有部分网页内容超出浏览器的宽度,以至于浏览器出现水平滚动条。 这一遍文章主要就是来解决这个问题。 第一种是:设置viewport,高度固定,宽度使用百分比 这种对于简单的列表形比较实用。这种布局方式,通过要为高度进行响应...

2016-02-24 21:04:08

阅读数 1021

评论数 0

discuz安装程序的实时刷新

在使用discuz的时候,我们通常都需要使用discuz中的程序进行安装。 但是在安装的过程中,有一个有趣的现象,就是结果会实时刷新,效果如同是有使用轮询一样,但是轮询一般都是对数据库方面的操作,但是discuz又不是: 通过查看代码,可以发现这个页面的内容是慢慢返回的: 这...

2016-02-24 14:46:14

阅读数 335

评论数 0

响应式布局基础二:设置viewport

在开发PC端的网站的时候,我们通常需要根据屏幕分辨率的大小,通过css的媒体查询,设置响应的像素大小。 在开发手机网站的时候,通常也需要这样设置的。但是在手机端,还需要多设置viewport这个元素。 viewport元素通常是用来设置页面的大小和缩放比例的。 手机浏览器为了更好地展示这些没有...

2016-02-23 22:04:50

阅读数 575

评论数 0

响应式布局基础一:px、dpi、ppi的区别

px,即pixel,像素的意思。 像素有两种,一种是物理像素,一种逻辑像素。 以前一个逻辑像素是等于一个物理像素的。当一个逻辑像素对应多个物理像素的时候,这时候,显示会更清楚。 一个逻辑像素对应多少个物理像素,这个叫做Device pixel ratio(像素设备比) 在开发过程中,css通过是使...

2016-02-23 21:24:01

阅读数 1606

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭