自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C7

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

  • 博客(62)
  • 收藏
  • 关注

原创 阿里云免费证书改为3个月,应对方法很简单

http的话需要我们的域名已经配置解析到我们的服务器,一种是DNS,则需要服务商有提供API。这样执行之后,每天凌晨如果检查到证书更新了,还会自动执行service nginx force-reload,这样的话,就可以无限制续期了。不过解决的办法还是有的,那便是使用一个自动签发自动续期的脚本acme.sh,用了这个脚本之后,感觉比之前的方式更加简单方便了。如果是一年期的话,还可以偷下懒,但是3个月的话,运维成本就高了很多,对于小公司或者个人来说就麻烦很多了。情商低点的话,就是钱的问题。

2024-03-14 09:24:35 861

原创 淘宝npm镜像过期,替换到新的镜像

最近,许多人在使用npm时遭遇到了一些报错,如electron执行命令失败、无法请求到vue等,其原因是淘宝npm镜像的证书已经过期。为了解决这一问题,我们需要更新npm镜像。通过以上配置,我们可以确保npm和yarn在安装依赖时都能够正常使用镜像源,避免因为证书过期而导致的错误。同时,我们也可以通过访问。这些配置会将npm的镜像地址指向了一个可用的镜像源,以解决证书过期的问题。首先,我们需要配置npm的镜像地址。查看所有可用的二进制包,以便更好地管理我们的项目依赖。

2024-03-10 16:35:35 497

原创 小说自动生成工具

小说工具箱的搭建最近逐渐喜欢上写小说,除了码代码之余,还会出去旅游。不过有时候在写小说的时候,会遇上不知道怎么给人物起名字。于是动手做了个小工具,顺便发到线上,供各位喜欢写小说的作者们使用。网站是:http://www.xsxia.com/给人物起名字姓规则:输入单或者复姓名字规则:可以选择男性、女性或者是中性参考模型是通过训练普查人物姓名得出的,因此还是比较通顺。近义词查找2...

2019-07-19 11:00:17 49835 1

原创 微信小游戏可视化制作工具,测试版新鲜出炉

游戏可视化编辑并不新奇,各种大型单机游戏基本有提供地图编辑器,像魔兽争霸3的地图编辑器。也有成套的地图编辑器,比如Rpg Maker XP,以前很出名的梦幻群侠传就是用这编辑器制造而成。最近微信官方释放出微信小游戏可视化编辑的beta版。不过目前还处于测试阶段,因此得申请内侧资格才行。小编特地体验了下,发现这款编辑器跟市场上大部分编辑器大同小异,基本上是游戏素材+精灵+脚本组装...

2019-07-19 10:58:46 5392 2

原创 xml中qualified的作用

elementFormDefault的意思是局部元素是否需要描述他的命名空间。当为unqualified的时候,就是局部的元素不需要声明他的命名空间,默认是使用父的命名空间。当为qualified的时候,不管是父元素还是子元素,都需要描述他的命名空间的。当然,当为qualified的时候,我们也可以使用默认空间来省略命名空间的编写。但是属性就没有默认空间这一层概念了。比如:te

2016-12-23 20:42:05 3036 1

原创 NODE中异步之间的协作

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

2016-12-22 17:05:48 527

原创 随想录——面向快乐编程

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

2016-12-13 00:01:35 754

原创 tp框架单元测试库tpunit

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

2016-06-08 09:58:06 2192

原创 垃圾回收二

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

2016-05-30 09:48:36 418

原创 垃圾回收一

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

2016-05-30 09:46:10 386

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

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

2016-05-30 09:42:28 446

原创 全局变量EG、CG

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

2016-05-30 09:39:16 1817

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

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

2016-05-07 13:14:44 3234

原创 移动APP调试最佳实践二

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

2016-05-04 11:28:22 480

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

忽略掉细节,一个webAPP访问服务器的大概流程就是这个样子:当手机打开一个网页的时候,应用会向服务器发起一个请求。然后服务器处理完这个请求,相应的,也会将结果返回给浏览器。 这个流程虽然简洁明了,但是对于开发者来说,却还是太复杂了。比如我现在修复一个紧急的BUG,我需要立马推送服务器,那么我应该做好以下这个步骤:1、  手机APP更新地址为局域网的机子2、 

2016-05-01 09:15:11 1343

原创 简单的NFA转DFA的代码实现

小说大纲、小说剧情生成器:小说大纲、小说剧情自动生成器

2016-04-04 10:09:06 8248 2

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

VersionDescription5.5.0This extension has been deprecated. Connecting to a MySQL database via mysql_connect(),mysql_pconnect() or an implicit connection via any other mysql_* functio

2016-03-11 09:14:42 4770

原创 you don't know js读书笔记

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

2016-03-08 13:39:48 547

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

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

2016-02-24 21:04:08 1440

原创 discuz安装程序的实时刷新

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

2016-02-24 14:46:14 578

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

在开发PC端的网站的时候,我们通常需要根据屏幕分辨率的大小,通过css的媒体查询,设置响应的像素大小。在开发手机网站的时候,通常也需要这样设置的。但是在手机端,还需要多设置viewport这个元素。viewport元素通常是用来设置页面的大小和缩放比例的。手机浏览器为了更好地展示这些没有没有为手机设计的网站,通常会使用桌面的宽度来渲染(通常是960px,980px),然后再改变

2016-02-23 22:04:50 927

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

px,即pixel,像素的意思。像素有两种,一种是物理像素,一种逻辑像素。以前一个逻辑像素是等于一个物理像素的。当一个逻辑像素对应多个物理像素的时候,这时候,显示会更清楚。一个逻辑像素对应多少个物理像素,这个叫做Device pixel ratio(像素设备比)在开发过程中,css通过是使用逻辑像素。还有两个概念:Dpi(dot per inch):点/每英寸

2016-02-23 21:24:01 2228

转载 Alpha、Beta、RC、GA版本的区别

Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。GA:General Availability,正式发布

2016-02-14 11:25:12 597

原创 前端好的文档收藏

前端模块化开发的价值

2016-02-06 19:31:44 438

原创 前端面试-浏览器渲染机制

在开发WEB应用整一个流程中,用户体验通常都会被提及,而网站的性能,又是与用户体验直接挂钩,因此可以在项目需求规格文档中经常看到项目对性能的需求。WEB性能优化常见的入手点包括以下几点:1、  HTTP请求2、  服务器响应速度3、  浏览器响应速度其中浏览器响应速度包括渲染速度和代码执行的速度。而本篇文章的目标主要集中在第三点,先整体了解一下浏览器的渲染机制,再通过这个机

2016-02-01 17:39:57 8830 5

原创 前端八个常见错误

第一,  文件无法上传。下面上传文件的代码经常写过,但是点击提交之后,却发现没有上传文件:                                                        究其原因,是form的enctype属性应该设置为:multipart/form-data 第二:把a标签设置为按钮之后,点击会刷新页面在ide中敲入a,ide通

2016-01-25 01:46:40 1281

原创 ajax文件上传的思路

要实现ajax文件上传,可以新建一个frame和一个form,并且需要指定form的enctype为multipart/form-data。然后提交的时候,只要提交这个frame中的这个form,那么主页面就不会被刷新。提交之后,这个frame就会跳转到form中指定的action中的地址。这个时候,可以通过页面的onload事件,来检测是否成功。并且onload之后,页面的内容,

2016-01-24 23:28:57 619

原创 面向对象的php之类解耦的好处

为什么要解耦呢?举个例子:getScore($student){}假如一个课程类,里面有一个获取学生分数的的方法getScore()。该方法要求传入一学号。在这个方法中,就跟学生类student耦合了。因为在getScore方法中,需要$student->getNum();假如现在学生类被类作者改变了,取消了getNum()这个方法,那么你这个方法,就需要重新写了。

2015-10-06 15:25:06 2497

原创 git远程版本库如何回滚

原理:在本地按正常流程回滚后,在推送的时候,使用-f开关,强制推送git reset --hard xxxxgit push -f origin master

2015-07-19 14:54:59 503

原创 windows下安装redis

http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/https://github.com/dmajkic/redis/downloads 第一步:选择下载版本首先查看php是vc9还是vc11,然后选择合适的版本。可以通过phpinfo查看。 第二步,移动到ext将下载到的php_redis.dll(有些版

2015-06-15 12:38:13 462

原创 windows下安装memcached

http://windows.php.net/downloads/pecl/snaps/memcache/3.0.8/http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip 先安装memcache服务:Memcached –d installMemcached –d start

2015-06-15 12:36:24 467

转载 Memcached安装以及PHP的调用

原文地址:http://blog.csdn.net/21aspnet/article/details/6596507一:安装libevent由于memcached安装时,需要使用libevent类库,所以先安装libevent1.下载#wget   http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz 

2015-06-15 12:32:42 399

原创 路由器配置笔记二

常用的命令,一些命令可以使用缩写的方式:enable:进入特权模式disable:退出特权模式config terminal:进入全局设置模式end:退出全局设置模式show ip route:显示路由的信息no shutdown:激活端口hostname:设置路由器的名字

2015-06-03 19:11:34 512

原创 路由器配置笔记

路由器终端的命令状态有多种:1、用户状态,显示>,如:route>这是可以查看网络连接状态,但是没办法设置路由器。2、特权状态,显示#,如:route#在用户状态输入enable便可进入特权状态,这时不仅可以查看网络连接状态,而且还可以更改路由器的配置。3、全局设置状态:显示(config)#,如:route(config)#在这时,可以设置路由器的全局

2015-06-03 17:35:17 598

原创 ThinkPHP框架完全解析六

Hook的实现,已经通过tag,显示出页面的trace:Hook里面只有三个成语函数,无非就是将tag导入,然后在某个适当的位置,调用listen,然后listen就会对这个标签进行解析,如果存在这个标签,那么就调用这个标签。这样,通过这种方法,第三方开发人员就可以非常容易地扩展thinkphp的功能了。比如:接下来,我们要基于我们以前所写出的框架,然后实现在a

2015-05-30 14:48:11 793

原创 ubuntu循环依赖

在ubuntu10.04这一版本上,在安装软件的时候,会出现循环依赖的问题:E:无法立即对python2.7-minimal进行配置。请查看man 5 apt.conf中的 APT::Immediate-Configure(2)解决方法:在安装软件的时候,带上参数:-o  APT::Immediate-Configure=0Conldn't configure pre-depe

2015-05-23 11:31:03 2058

转载 VirtualBox虚拟机网络设置(四种方式)

VirtualBox的提供了四种网络接入模式,它们分别是: 1、NAT 网络地址转换模式(NAT,Network Address Translation) 2、Bridged Adapter 桥接模式 3、Internal 内部网络模式 4、Host-only Adapter 主机模式 第一种 NAT模式 解释: NAT模式是最简单的实现虚拟机上网的方式,你

2015-05-22 19:23:41 432

原创 ThinkPHP框架完全解析五

第五步:实现Dispatcher,解析url每一个框架都有其内置的库文件,想要使用的时候,都需要使用include或者是require这两条命令将库文件引入进来。然而,一个框架库文件是相当多,一下子就使用好几十条include或者是require不仅费时而且还费力,所以我们可以把这些文件定义在一个数组中,然后只要遍历这个数组,然后一一require就可以了。在tp框架中, ThinkP

2015-05-10 19:29:47 1098

原创 ThinkPHP框架完全解析四

第四步:Think类的实现之URL模式要实现像thinkphp类似URL访问模式。比如访问:http://127.0.0.1/index.php/Home/Index/index通过使用:$_SERVER['PATH_INFO']便能得到:/Home/Index/index在thinkphp中,Home表示模块,Index表示控制器,index表示操作。而实际上,控制器是某个类

2015-05-03 10:06:52 843 1

原创 windows下配置redis的php扩展

http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/https://github.com/dmajkic/redis/downloads 第一步:选择下载版本首先查看php是vc9还是vc11,然后选择合适的版本。可以通过phpinfo查看。 第二步,移动到ext将下载到的php_redis.dll(有些版

2015-05-02 15:37:26 458

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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