自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leslie

欢迎关注我的微信公众号In客笔记。

  • 博客(115)
  • 资源 (8)
  • 问答 (2)
  • 收藏
  • 关注

原创 【swoole】关于信号量的总结

昨天提到要给大家一个共享内存的demo,但是我们要知道共享内存需要我们进行读写控制,所以我们这里先介绍一下,前文曾提到过的信号量。(整理内容较多,仔细阅读,有错必纠)。那什么是信号量呢?信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程) 所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。Li

2017-03-14 09:56:48 1260

原创 【Swoole】关于共享内存

今天讲什么呢?是的没错,共享内存。共享内存是Linux进程中通信的一种方式,其余的方式还有消息队列,使用信号量等。所谓共享内存就是指两个不相关的进程访问同一块逻辑内存,共享内存是两个正在运行的进程之间分享和传递数据的一种非常有效的方式,他们的共享内存通常都安排在一块物理内存上,然后进程可以把共享内存连接到自己的地址空间,这样所有的进程就都可以通过共享空间访问进程了。 共享内存的使用是通过一组函数接

2017-03-14 09:53:25 1333

原创 【Swoole】消息队列

1.什么是消息对列? 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件,要达到的目的就是解耦,再有就是减少响应时间提高网站性能。2.消息队列的应用场景?笔者了解的大概四种场景,首先最容易想到的就是高并发请求。通过将并发事务存进消息队列,减少高峰期事务的并发性,改善网站的性能。还有

2017-03-14 09:52:06 2872

原创 【Swoole基础】Linux的多线程切换和多进程的切换

将大象装冰箱,总共分三步,一把冰箱门打开,二把大象转进去,三把冰箱门关上,简单粗暴。可惜我们的进程和线程的转换不是大象装冰箱问题,不扯淡了,回归正题。 一般的进程切换分为两步 首先 切换页目录使用新的地址空间 然后 切换内核栈和硬件上下文对于我们Linux来讲,地址空间是线程和进程的最大区别,如果我们是线程切换的话,我们不需要做第一步,也就是切换页目录使用新的地址空间。但是切换内弧栈和硬件

2017-03-14 09:49:21 1290

原创 【Swoole扩展】基础到进阶

首先我们了解一下学习Swoole需要掌握哪些知识:首先是Linux的多进程和线程切换,还有就是消息队列、共享内存等相关进程通信 然后是socket编程然后是底层协议TCP/IP协议,TCP/UDP协议IO复用 ①elect/poll/epoll ②基于select/epoll实现的事件循环,Reactor模型 ③可读事件、可写事件调试tools:使用gdb调试Linux程序 使用strac

2017-03-13 11:58:45 610

原创 【每天一个Linux命令】cp

cp命令主要用于复制文件或目录。语法cp [options] source dest或cp [options] source... directory参数说明:-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与-

2017-03-13 11:55:06 369

原创 【每天一个linux命令】

Linux cmp命令Linux cmp命令用于比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为”-“,则cmp指令会从标准输入设备读取数据。语法cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]参数:-c或–print-char

2017-03-11 23:21:11 288

原创 【每天一个Linux命令】chmod

Linux chmod命令Linux/Unix的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。使用权限 : 所有使用者语法chmod [-cfvR] [--help] [--version] mode file...参数说明mode : 权限设定字串,格式如下 :[ugoa...][[+-=][rwxX]...][,...]其中:u 表示该文件的

2017-03-09 11:42:11 412

原创 【每天一个linux命令】chattr

Linux chattr命令Linux chattr命令用于改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:a:让文件或目录仅供附加用途。 b:不更新文件或目录的最后存取时间。 c:将文件或目录压缩后存放。 d:将文件或目录排除在倾倒操作之外。 i:不得任意更动文件或目录。 s:保密性删除文件或目录。 S:即时更新文件或目录。 u:预防以

2017-03-07 00:27:40 520

原创 【每天一个Linux命令】B-badblocks

badblocks命令用于检查磁盘装置中损坏的区块。执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。语法badblocks [-svw][-b <区块大小>][-o <输出文件>][磁盘装置][磁盘区块数][启始区块]参数说明:-b<区块大小> 指定磁盘的区块大小,单位为字节。-o<输出文件> 将检查的结果写入指定的输出文件。-s 在检查时显示进度。-v 执行时显示详细的信息。-w

2017-03-05 00:00:58 775

原创 【每天一个Linux命令】A-awk

Linux awk 命令AWK是一种处理文本文件的语言,是一个强大的文本分析工具。语法awk [选项参数] 'script' var=value file(s)或awk [选项参数] -f scriptfile var=value file(s)选项参数说明:-F fs or --field-separator fs指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。-v

2017-03-03 11:41:23 582

原创 【每天一个Linux命令】A -apmd

Linux apmd命令Linux apmd命令用于进阶电源管理服务程序。apmd负责BIOS进阶电源管理(APM)相关的记录,警告与管理工作。语法 apmd [-u v V W][-p <百分比变化量>][-w <百分比值>]参数:-p<百分比变化量>或--percentage<百分比变化量> 当电力变化的幅度超出设置的百分比变化量,即记录事件百分比变化量的预设值为5,若设置值超过100

2017-03-02 00:33:14 468

原创 【每天一个Linux命令】A- apachectl

Linux apachectl命令Linux apachectl命令可用来控制Apache HTTP服务器的程序。apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但在其他Linux的Apache HTTP服务器不一定有这个文件。语法apachectl [configtest][fullstatus][graceful][help][re

2017-03-01 10:47:15 481

原创 【每天一个Linux命令】A-alias

Linux alias命令Linux alias命令用于设置指令的别名。用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。语法alias[别名]=[指令名称]参数说明:若不加任何参数,则列出目前所有的别名设置。实例给命令设置别名# alia

2017-02-28 11:21:10 523

原创 【每天一个Linux命令】A-adduser

Linux adduser命令adduser顾名思义,就是添加一个使用者用户,用于新增使用者帐号或更新预设的使用者资料。adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link)。使用权限:系统管理员adduser是增加使用者。相对的,也有删除使用者的指令,userdel。语法:userdel [login ID]语法adduser [-c comment] [

2017-02-27 02:03:11 577

转载 直面40个菜鸟迹象——40个迹象表明你还是PHP菜鸟

简介 40个迹象的英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。正文 我愿意把本文归入我的“编程糗事”系列。尽管在正规大学课程中,接触到软件工程、企业级软件架构和数据库设计,但我还是时不时地体会到下述事实带给我的“罪恶”感,当然,

2017-02-05 03:24:31 416

原创 【Day65】php常用字符串转换,替换,计算,截取,加密函数实例

nl2br 功能:化换行符为<?php$str = "cat isn't \n dog";$result = nl2br($str);echo $result;/**结果cat isn'tdog*/rtrim 功能:清除右边的空白<?php$str = "Hello world ";echo strlen($str)."<br>";$result = rtrim($str);

2016-12-25 18:51:54 403

原创 【Day63】PHP支付宝服务窗API接口的开发

支付宝服务窗口的API开发实例,大家可以参考参考,代码还需要完善<?phpclass AlipayService{ /** - 服务接口信息 */ public $service = null; /** - 签名信息 */ public $sign = null; /** - 签名类型 */ public

2016-12-23 15:12:44 900

原创 【Day62】MySQL数据库性能优化之四(SQL优化)

优化目标   1.减少 IO 次数   IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。   2.降低 CPU 计算   除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,di

2016-12-18 11:38:38 355

原创 【Day61】MySQL数据库性能优化之三(索引优化)

索引为什么能提高数据访问性能?  很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解。      我们让一位不太懂计算机的朋友去图书馆确认一本叫做《MySQL性能调优与架构设计》的书是否在藏,这样对他说:“请帮我借一本计算机类的数据库书籍,是属于 MySQL 数据库范畴的,叫做《MySQL性能调优与架构设计》”。朋友会根据所属类别,前往存放“计算机

2016-12-17 15:03:44 362

原创 【Day60】MySQL 数据库性能优化之二(表结构优化)

由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大,那么每次 IO 可访问的行数也就增多了。反过来说,处理相同行数的数据,需要访问的 page 就会减少,也就是 IO 操作次数降低,直接提升性能。此外,由于我们的内存是有限的,增加每个page中存放的数

2016-12-15 01:05:25 362

原创 VLD扩展使用指南

VLD(Vulcan Logic Dumper)是一个挂钩在Zend引擎下,并且输出PHP脚本生成的中间代码(执行单元)的扩展。它可以在一定程序上查看Zend引擎内部的一些实现原理,是我们学习PHP源码的必备良器。它的作者是Derick Rethans, 除了VLD扩展,我们常用的XDebug扩展的也有该牛人的身影。 VLD扩展是一个开源的项目,在这里可以下载到最新的版本,虽然最新版本的更新也

2016-12-15 00:54:41 793

转载 【Day59】MySQL数据库性能优化之一(缓存参数优化)

数据库属于IO密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化: query_cache_size/q

2016-12-13 23:55:16 440

原创 php源码之路循环语句 (foreach的实现)

foreach是PHP的关键字,用来实现基于数据的循环。基于数据循环语句的循环是由数据结构中的元素的数目来控制的。一般来说,基于数据的循环语句会使用一种称之为迭代器的函数来实现元素的遍历。 除了foreach,PHP还提供了预定义的一些函数来实现对数组的迭代访问操作,如current, next, reset等等。然而我们使用得最多的还是foreach语句,foreach可以直接迭代访问数组,

2016-12-13 23:40:58 3322

原创 【Day58】记几个常见的Laravel报错

报错:「Can’t swap PDO instance while within transaction」通过查询 Laravel 源代码,可以确认异常是在 setPdo 方法中抛出的:public function setPdo($pdo){ if ($this->transactions >= 1) { throw new RuntimeException("

2016-12-13 00:49:41 566

原创 php源码之路第八章第二节 ( PHP中的线程安全)

在多线程系统中,进程保留着资源所有权的属性,而多个并发执行流是执行在进程中运行的线程。如Apache2 中的woker,主控制进程生成多个子进程,每个子进程中包含固定的线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程

2016-12-13 00:21:00 659

转载 【Day57】mysql报错大全

1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字

2016-12-12 22:29:02 372

原创 php源码之路第八章第一节 (线程,进程和并发)

进程 进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体。进程一般会包括指令集和系统资源集,这里的指令集是指程序代码,这里的系统资源集是指I/O、CPU、内存等。综合起来,我们也可以理解进程是具有一定独立功能的程序在关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 在进程执行时,进程

2016-12-12 21:37:58 518

原创 【Day56】mysql之TIMESTAMP(时间戳)用法详解

一、TIMESTAMP的变体TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如:1.在创建新记录和修改现有记录的时候都对这个数据列刷新:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它:TIMESTAMP DEFAULT CURRE

2016-12-10 04:42:15 928

原创 【Day55】防止sql注入的几种方法

过滤一些常见的数据库操作关键字select ,insert,update,delete,and,*等或通过系统函数addslashes对内容进行过滤php配置文件中register_globals=off;设置为关闭状态.(作用将注册全局变量关闭);如接收POST表单的值使用$_POST['user'],假设设置为ON的话$user才接收值sql语句书写的时候尽量不要省略小引号(tab上面那个

2016-12-09 00:42:28 438

原创 php源码之路第八章第一节 (线程,进程和并发)

进程 进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体。进程一般会包括指令集和系统资源集,这里的指令集是指程序代码,这里的系统资源集是指I/O、CPU、内存等。综合起来,我们也可以理解进程是具有一定独立功能的程序在关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 在进程执行时,进程都可以被唯一的表

2016-12-08 11:45:39 378

原创 【Day54】谈谈如何优化MYSQL数据库查询

1、优化数据类型 MySQL中数据类型有多种,如果你是一名DBA,正在按照优化的原则对数据类型进行严格的检查,但开发人员可能会选择他们认为最简单的方案,以加快编码速度,或者选择最明显的选择,因此,你可能面临的都不是最佳的选择,如果可能的话,你应该尝试以通用准则来改变这些决定。 (1)避免使用NULL NULL对于大多数数据库都需要特殊处理,MySQL也不例外,它需要更多的代码,更

2016-12-08 11:12:25 336

原创 php源码之路第七章第三节 (PHP代码的加密解密)

PHP语言作为脚本语言的一种,由于不需要进行编译,所以通常PHP程序的分发都是直接发布源代码。对于一些开源软件来说,这并没有什么问题,因为它本来就希望有更多的人阅读代码,希望有更多的人参与进来,而对于商业代码来说,这却是一个不太好的消息,不管是从商业秘密,还是从对公司产权的保护来说却是一个问题,基于此,从而引出了对PHP代码的加密和解密的议题。例如国内的Discuz论坛程序在开源之前要运行是必须安装

2016-12-07 18:23:18 1666

转载 【Day53】Linux常用指令

常用指令ls   显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件ec

2016-12-07 18:16:57 360

原创 【Day52】php生成带logo二维码方法

方法一:一、使用的类库 1、phpqrcode(php库) 2、qrcode.js(javascript库)方法二:二、phpqrcode的使用 只用php的类库,也就是二维码的生成在后台操作。因为要在后台生成带logo的二维码,那么首先必须将logo图片上传至服务器(在上传这里我用了webuploader)phpqrcode使用方法: 首先下载phpqrcode:http://phpqrc

2016-12-05 02:22:18 474

原创 php源码之路第七章第二节 (中间代码的执行)

我们对opcode进行了一个简略的说明。这一小节我们讲这些中间代码在Zend虚拟机中是如何被执行的。 假如我们现在使用的是CLI模式,直接在SAPI/cli/php_cli.c文件中找到main函数,默认情况下PHP的CLI模式的行为模式为PHP_MODE_STANDARD。此行为模式中PHP内核会调用php_execute_script(&file_handle TSRMLS_CC);来执行

2016-12-05 02:16:53 1278

原创 php源码之路第七章第二节 (来实现自己的语法)

经过前面对r2ec以及Bison的介绍,熟悉了PHP语法的实现,我们来动手自己实现一个语法吧。也就是对Zend引擎语法层面的实现。以此来对Zend引擎有更多的了解。 编程语言和社会语言一样都是会慢慢演进的,不同的语种就像我们的不同国家的语言一样,他们各有各的特点,语言通常也能反映出一个群体的特质,不同语言的社区氛围和文化也都会有很大的差异,和现实生活一样,我们也需要尽可能的去接触不同的文化,来

2016-11-28 01:48:13 617

原创 php源码之路第七章第二节 (语法的实现之语法解析)

Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。使用它可以生成解释器,编译器,协议实现等多种程序。 Bison向上兼容Yacc,所有书写正确的Yacc语法都应该可以不加修改地在Bison下工作。它不但与Yacc兼容还具有许多Yacc不具备的特性。 Bison分析器文件是定义了名为yyparse并且实现了某个语法的函数的C代码。这个函数并不

2016-11-25 00:25:40 772

原创 php源码之路第七章第一节 (语法的实现之词性解析)

语言从广义上来讲是人们进行沟通交流的各种表达符号。每种语言都有专属于自己的符号,表达方式和规则。就编程语言来说,它也是由特定的符号,特定的表达方式和规则组成。语言的作用是沟通,不管是自然语言,还是编程语言,它们的区别在于自然语言是人与人之间沟通的工具,而编程语言是人与机器之间的沟通渠道。相对于自然语言,编程语言的历史还非常短,虽然编程语言是站在历史巨人的基础上创建的,但是它还很小,还是一个小孩。它只

2016-11-23 00:04:57 560

原创 php源码之路第七章第一节 ( Zend虚拟机)

在前面的章节中,我们了解到一个PHP文件在服务器端的执行过程包括以下两个大的过程: 递给php程序需要执行的文件, php程序完成基本的准备工作后启动PHP及Zend引擎, 加载注册的扩展模块。 初始化完成后读取脚本文件,Zend引擎对脚本文件进行词法分析,语法分析。然后编译成opcode执行。如过安装了apc之类的opcode缓存, 编译环节可能会被跳过而直接从缓存中读取opcode

2016-11-22 12:45:57 880

Js时间插件

特别好用的时间插件, 使用方便, 引用简单, 适合新手, 使用原生js编写.

2018-11-12

Laravel优化技巧

Laravel框架研发项目, 提交生产环境基本优化建议, 提高访问速度.

2018-11-12

discuz搭建的后台桌面

这是我用html css 和js简单的写的discuz论坛后台的界面,希望一起交流,留下宝贵意见。

2016-09-20

Yii框架详解

Yii框架详解

2016-09-20

php基础点详细总结

很不错的基础知识点,必背。

2016-08-20

学习php的笔记

很好的笔记分享给大家

2016-08-19

自己做的淘宝网页部分框架

昨晚花了两个小时做的网页,希望和大家多交流。

2016-08-18

php和mysql web开发第四版

非常详尽的一套php mysql的pdf文档,基础入门进阶实战都包括。好好看肯定大有收益。分享给大家

2016-08-08

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

TA关注的人

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