- 博客(57)
- 收藏
- 关注
原创 有关url的php内置函数
parse_url()在解析 URL 时没必要用正则表达式,使用 parse_url() 即可;在获取 HTTP 头时,也可以使用 get_headers()。parse_urlhttp_build_query()生成 URL-encode 之后的请求字符串。http_build_queryfile_get_contents()我们经常用 file_get_contents() 打开文件。
2017-10-14 08:44:43
648
原创 linux 内存不足
在linux下增加临时swap空间step 1#sudo dd if=/dev/zero of=/home/swap bs=64M count=16注释:of=/home/swap,放置swap的空间。 count 的大小就是增加的 swap 空间的大小,64M 就是块大小,这里是 64MB,所以总共空间就是 bs*count=1024MB。这里分配空间的时候需要一点时间,等待执行完毕。ste
2017-10-12 11:01:39
893
原创 memcached一致性哈希算法
根据余数计算分散根据服务器台数的余数进行分散:求得键的整数哈希值,再除以服务器台数,根据其余数来选择服务器。余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而影响缓存的命中率。eg. 由 N 台服务器变为 N-1 台——每 N*(N-1) 个数中,求余相同的数只有 N
2017-10-11 14:45:58
396
原创 memcached的内部存储
memcached 默认情况下采用了名为 Slab Allocator 的机制分配、管理内存。在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc 和 free 来进行的。但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下,会导致操作系统比 memcached 进程本身还慢。Slab Allocator 就是为解决该问题而诞生的。 Slab Allocato
2017-10-11 11:25:02
266
原创 php用dom处理xml
方法<?php $dom = new DOMDocument('1.0', 'utf-8'); // 通过$dom对象获得被处理的xml信息 $dom->loadXML($contents); // 获得对应元素节点对象,返回一个列表 $outlist = $dom->getElementsByTagName('tagname'); // DOMList
2017-10-11 11:00:11
456
原创 用户名验证
['username', 'match','pattern'=>'/^[(\x{4E00}-\x{9FA5})a-zA-Z]+[(\x{4E00}-\x{9FA5})a-zA-Z_\d]*$/u','message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。']
2017-10-11 10:38:08
873
1
原创 判断当前页不能大于最后一页
$totalPage = ceil($totalRows / $listRows);$this->nowPage = empty($GET['$this->p']) ? 1 : max(1, min($totalPage, inval($_GET[$this->p])));
2017-10-11 10:20:58
845
原创 tp取无限级分类
controllerpublic function listAction(){ // 判断缓存是否存在 // 初始化缓存配置 S([ 'type' => 'memcache', 'host' => '127.0.0.1', 'port' => '11211' ]); $cat_tree = S('cat_tree'); if
2017-10-10 22:59:14
1032
原创 LAMP/LNMP安装与配置
LINUXvirtual box 与 centos 官网下载,安装。virtual box 首次启动centos时,需注意:安装位置的选择 和 网络和主机名中网络的开启root 密码的设置 和管理员用户的创建网络设置ping www.baidu.com,若网络不通,则 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 中ONBOOT = yes设置
2017-10-08 16:34:40
1039
原创 php的异常
php只有手动抛出异常才能捕获异常。,或者是有内建的异常机制时,会先触发错误,再捕获异常。定义class emailException extends exception{ function __toString(){ ... }}抛出if(empty($reginfo['email'])) throw new emailException('the e
2017-10-01 15:21:30
249
原创 反射
反射API// 获取对象的属性列表$reflect = new RlectionObject($obj);$props = $reflect->getProperties();foreach($props as $prop){print $prop->getName();}// 获取对象方法列表$m = $reflect->getMethod();foreach($m as $prop
2017-10-01 13:54:03
180
原创 面向对象的“形”与“本”
类是对象的抽象组织,对象是类的具体存在 比较普遍的说法就是“对象由属性和方法组成”。一个对象的属性是它区别于另一个对象的关键所在。php的对象是由数组来模拟的。对象的”本”对象在底层的实现是采取“属性数组 + 方法数组”来实现。由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码。 语法糖__set 和 __get方法public function __set(
2017-10-01 10:41:13
166
原创 Redis的过期键删除策略
定时删除对内存最友好:通过定时器,保证过期键会尽可能快地被删除,并释放过期键所占用的内存。另一方面,缺点是,对 CPU 时间最不友好:在过期键较多的情况下,删除过期键这一行为可能会占用相当一部分 CPU 时间,在内存不紧张但是 CPU 时间非常紧张的情况下,将 CPU 时间用在删除和当前任务无关的过期键,无疑会对服务器的响应时间和吞吐量造成影响。eg. 如果正有大量的命令请求在等待服务器处理,并且
2017-09-24 22:30:35
394
原创 SESSION存入memcached
方法一 使用 memcached 拓展,提供的 session 处理器 (session.save_handler):memcache。 通过配置存储位置配置项(session.save_path),设置 memcached 服务器信息。<?php# memcache 拓展定义好的memcache,session存储处理器ini_set('session.save_handler', 'm
2017-09-21 22:51:53
351
原创 memcached缓存失效get_miss
缓存过期 memcached 在处理过期的缓存项时,采用懒惰模式处理方法。 缓存项过期,不会立即删除,直到对该缓存项执行了get操作,才会删除过期的缓存项。缓存空间已满 memcached 再插入新数据时,如果空间不足(相同 chunk,一个 slab 里)采用删除旧缓存项的策略。采用删除最少最近使用(使用频率低)的缓存项(LRU策略 Least Recently Used)P.S. ht
2017-09-21 22:23:17
858
原创 redis列表类型存储文章ID存在的问题
使用列表类型存储文章ID列表有以下两个问题: 1. 文章的发布时间不易修改:修改文章的发布时间不仅要修改post:文章ID中的time,还需要按照实际的发布时间重新排序posts:list中元素顺序,这一操作相对比较繁琐。 2. 当文章数量较多时访问中间的页面性能较差:列表类型是通过链表实现的,所以当列表元素非常多时访问中间的元素效率并不高。 但如果博客不提供修改文章时间的功能并且文章数量也
2017-09-21 22:08:56
1099
原创 linux下php7-memcached拓展
依赖库libmemcached 到 http://libmemcached.org 下载最新版本的tar.gztar -zxf libmemcached-1.0.18.tar.gzcd libmemcached-1.0.18/./configuremake && make installphp-memcachedgit clone https://github.com/php-memc
2017-09-21 16:23:04
269
原创 两种架构模式:分层与MVC
架构模式 除了通常应用于对象和类之间交互的典型设计模式和原则之外,还有一些从总体上指导架构的原则或模式。《面向模式的软件体系结构》中将它们定义为架构模式,而不是设计模式。本文将介绍其中两种模式:层与MVC。
2017-09-12 15:30:13
2322
原创 Laravel用post提交时需要注意的两个问题
MethodNotAllowHttpException原因:路由中设置的提交方式和表单中设置的不统一。解决办法:改为 Route::any() 或者 Route::post()。TokenMismatchException原因:Laravel框架为了防止跨域请求攻击(CSRF)而为用户生成的随机令牌。post请求如果没有验证token,就会报错。解决方法: <input type="hidd
2017-09-07 16:13:14
6661
原创 Predis
predis 与 phpredis redis官方推荐的php客户端是predis和phpredis。前者是完全使用php代码实现的原生客户端,后者则是用c编写的php拓展。在功能上二者区别不大,就性能而言后者更胜一筹。 虽然predis的性能逊于phpredis,但除非执行大量的redis命令,否则很难区分二者的性能。而且实际应用中执行redis的命令的开销更多在网络传输上,单纯注重
2017-09-07 15:51:29
1042
原创 Angularjs 的解析符
解决与 Laravel 解析符相冲突的情况。 angular.module('appname', []) .config(function($interpolateProvider){ $interpolateProvider.startSymbol('[:'); $interpolateProvider.endSymbol(':]');})
2017-09-06 23:14:12
166
原创 Laravel 下 Angularjs 的安装
1、安装前先更新npm i -g npm2、安装npm install angular jquery @uirouter/angularjs normalize.css
2017-09-06 16:53:40
625
原创 ERR_CACHE_MISS 上一页提示确认重新提交表单
SITUATION: 设备搜索后,根据返回结果 list.php 进入特定设备的详细页面 one.php,但点击后退按钮(上一页)返回 list.php,会出现确认重新提交表单的错误页面 ERR_CACHE_MISS。REASON: list.php 本身设置(默认)了 no-store 无缓存。所以返回上一页时,搜索结果页面没有任何值载入,需要重新输入值才会正确显示。ACTION: 在 list.
2017-09-02 10:56:20
5722
原创 LAMP安装
1、安装之前先更新系统sudo apt update 2、Apache2sudo apt install apache23、PHPsudo apt install phpsudo apt-get install libapache2-mod-php4、MySQLsudo apt install mysql-server php7.0-mysqlsudo apt-get install mysql
2017-08-31 11:41:59
238
1
原创 linux下安装phpredis
1、解压源码包tar -zxvf phpredis.tar.gz2、phpizeann@AnnS:phpredis$ phpize //如果未安装,它会提示对应命令安装3、./confure | make | make install 编译成功后,会有redis.so扩展包文件。4、添加配置 在php.ini中修改extension_dir = "redis.so文件所在路径"extensio
2017-08-31 11:31:09
178
原创 git的push与fetch
1、push 首次:git push -u origin master日常:$ git push origin master2、fetch$ git remote -v // 查看远程分支$ git fetch origin master:temp // 从远程获取最新版本到本地$ git diff temp
2017-08-27 20:50:47
999
原创 linux下安装redis
1、准备源码包cp redis.tar.gz /usr/local/src/2、解压root@AnnS:/usr/local/src# tar -zxvf redis.tar.gz3、 直接makeroot@AnnS:/usr/local/src/redis# make -- 不需要使用 ./configure4、把 redis 安装到指定目录root@AnnS:/usr/local/src/re
2017-08-27 20:15:04
168
原创 vi 的三种模式
1、命令模式 与 编辑模式切换 a: 光标向后移动一位进入编辑模式 i: 光标和内容 没有变化进入编辑模式 o: 新起一行进入编辑模式 s: 删除光标所在字符进入编辑模式2、尾行模式操作 :w //对编辑后的文档进行保存 :q //退出vi编辑器 :wq //保存并退出编辑器 :q!
2017-08-27 14:30:44
4546
原创 linux根目录
1、/bin binary二进制 存放系统许多可执行程序文件 执行的相关指令,例如ls pwd whoami,后台的支持文件目录2、/sbin super binary超级的二进制 存放系统许多可执行程序文件,许多指令支持文件,是root管理员执行 指令的支持文件,例如init 3、/usr unix system resource操作系统资
2017-08-27 14:24:03
323
原创 linux常用指令
1、查看当做操作目录位置pwd2、查看(当前)目录里边的文件内容ls //listls -l 或ll //显示文件的详细信息ls -al //all显示文件的详细信息(包括隐藏文件)ls -a //显示目录全部文件名字(包括隐藏文件)ls [-al] 目录 //查看指定目录的文件信息3、目录的
2017-08-26 21:44:37
237
原创 MYSQL DISTINCT
DISTINCT指示MySQL只返回不同的值:SELECT DISTINCT vend_id FROM products;它必须放列名的前面,应用于所有列,而不仅仅是前置它的列。 P.S. 如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将检测出来。摘自《MYSQL必知必会》
2017-08-22 14:38:27
241
原创 静态局部变量
出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行。 静态局部变量的初始化表达式必须是一个常量或者常量表达式。 即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量); 静态变量的初始值为0。 而对自动变量auto来说,如果不赋初值则它的值将是个不确定的值。
2017-08-18 14:26:56
625
原创 hexo 搭建 github pages 的备忘
一、hexo 与 域名 GitHub+Hexo 搭建个人网站详细教程P.S. 这个教程算是比较顺利的。 卡壳的地方有两个: 1. hexo init blog 之后的hexo new test_my_site 需 cd blog 之后进行,原博忘了可能。 2. 域名解析时 192.30.252.153 这个是github的地址,但设置成这样造成之后不能以不带www的域名进入,所以我选择
2017-08-14 14:07:38
239
原创 mysqlbinlog 时的乱码问题
1、有关增量备份的配置 my.ini 里# Binary Logging.// # log-bin 如果支取掉 # 就默认在 datadir 这个路径里存 binlog 文件log-bin = D:/iweb/binlog/mylogbin重启mysql,成功则 2、查看 logbin 文件 在 mysql 的bin目录下mysqlbinlog D:\iweb\binlog\mylogbi
2017-08-10 13:55:39
5061
原创 php 下载 xlsx
public function downXlsx($filename){ $file_name = $filename.".xlsx"; //下载文件名 $file_dir = dirname(__file__)."/xls/"; //下载文件存放目录 //检查文件是否存在 if (!file_exists ($file_dir.$fi
2017-08-06 16:34:29
2000
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人