自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(342)
  • 资源 (5)
  • 收藏
  • 关注

转载 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing

Git提交代码时,出现这个错误“error: The requested URL returned error: 403 Forbidden while accessing https”解决方法:编辑.git目录下的config文件即可。vim .git/config #修改对于的配置 #原来的url = https://github.com/elitecode

2017-07-04 12:00:43 5881

原创 git撤销本地提交 - git reset

有时候,我们会误提交某些代码,或者发现代码有bug,需要修复。在未推送到远程服务器前,本地提交时都可以撤销的。首先,使用git log命令查看本地的提交日志

2017-06-28 16:46:51 2424

转载 Docker挂载主机目录Docker访问出现Permission denied的解决办法

Docker挂载主机目录Docker访问出现Permission denied的解决办法

2017-06-27 10:21:02 4338

转载 centos7 最小化安装后无法上网,需要先开启网络服务

centos7 最小化安装后无法上网,需要先开启网络服务1)激活网卡文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 将 ONBOOT=no 改为 ONBOOT=yes2)启动network服务 service network restartPS:因为是最小化安装,没有ifconfig,可以在连接上网后

2017-06-22 17:56:10 4338 1

原创 php_crond:一个基于多进程的定时任务系统-支持秒粒度的任务配置

php_crond基于多进程的定时任务管理器,支持秒级别的定时任务特性通过配置文件管理所有定时任务 支持秒级的定时任务粒度 使用symfony/process进行进程管理 使用React/event-loop执行事件循环 提供http服务,远程查看和操作php_crond(参见:API文档)执行启动crondphp bin/crond.php在后台启动crond...

2017-06-02 18:45:37 3573

原创 laravel 5.3用户认证--默认的用户表数据迁移

laravel使用默认的auth时,执行命令:php artisan migrate生成Auth必须的2张用户表,其表结构如下:CREATE TABLE `users` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

2017-04-28 18:20:35 1602

原创 问题:swoole-http服务器发送POST请求服务器端超时(100-continue问题)

在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为2步:1. 发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server具体的RFC相关描述: htt

2017-04-19 16:14:02 5655

原创 linux如何查询进程占用的内存

1. ps aux命令USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDlizhibin  32986  0.0 13.8 916276 534748 ?       Ssl  10:12   0:00 /usr/local/php_5.4.45/bin/php -c /usr/local/

2017-04-10 13:34:42 3450

原创 PHP类数组式访问(ArrayAccess接口)

通过ArrayAccess接口,我们可以用数组形式访问对象。这种场景适用于数组操作,同时也需要定义数据的某些方法(例如保存数据)。实现这个类,必须实现ArrayAccess的4个接口:ArrayAccess {/* 方法 */abstract public boolean offsetExists ( mixed $offset )abstract public mixed offs

2017-04-05 14:51:20 843

原创 实现:判断某个元素是否在集合中,统计一段时间内的点击UV数(亿级别)

OK,这个是需要统计首页KV图的一段时间内的点击UV数(亿级别),每个KV图拥有一个唯一的ID。UV是unique visitor的简写,是指通过互联网访问、浏览这个网页的自然人。独立IP:是指独立用户/独立访客。指访问某个站点或点击某条新闻的不同IP地址的人数,独立IP只记录第一次进入网站的具有独立IP的访问者,假如一台电脑关机了,30分钟后重启,再次访问这个站那就再计算

2017-04-01 10:00:15 1256

转载 C语言变长数组实现(利用 struct中char data[0] )

1、结构体内存布局(padding)为了让CPU能够更舒服地访问到变量,struct中的各成员变量的存储地址有一套对齐的机制。这个机制概括起来有两点:第一,每个成员变量的首地址,必须是它的类型的对齐值的整数倍,如果不满足,它与前一个成员变量之间要填充(padding)一些无意义的字节来满足;第二,整个struct的大小,必须是该struct中所有成员的类型中对齐值最大者的整数倍,如果不

2017-04-01 07:30:21 1723 1

转载 Linux中find常见用法示例

Linux中find常见用法示例·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参数;pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec:

2017-03-21 10:21:16 340

原创 swoole学习笔记(五)网络通信协议设计 -- EOF结束符协议和固定包头+包体协议

上2篇笔记讲述了TCP服务器端和TCP客户端,既然他们之间要互相通讯,必须要制定一套通讯协议。swoole目前支持2种通讯协议:EOF结束符协议和固定包头+包体协议一、EOF结束符协议EOF协议处理的原理是每个数据包结尾加一串特殊字符表示包已结束。如memcache、ftp、stmp都使用\r\n作为结束符。发送数据时只需要在包末尾增加\r\n即可。使用EOF协议处理,一定要确

2017-02-24 17:16:32 3003

原创 swoole学习笔记(四)TCP客服端

这部分,使用笔记三中的tcp server作为服务器端。向服务器端发送一个hello world字符串,服务器会返回一个 Server: hello world字符串。TCP同步客户端示例代码:$client = new swoole_client(SWOOLE_SOCK_TCP);//连接到服务器if (!$client->connect('127.0.0.1', 9501

2017-02-24 10:33:27 2927

原创 swoole学习笔记(三)创建TCP服务器

这里就创建了一个TCP服务器,监听本机9501端口。它的逻辑很简单,当客户端Socket通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。示例代码://创建Server对象,监听 127.0.0.1:9501端口$serv = new swoole_server("127.0.0.1", 9501);//监听连接进入事件$serv->on

2017-02-23 17:55:03 1167

原创 swoole学习笔记(二)创建web服务器

Http服务器只需要关注请求响应即可,所以只需要监听一个onRequest事件。当有新的Http请求进入就会触发此事件。事件回调函数有2个参数,一个是$request对象,包含了请求的相关信息,如GET/POST请求的数据。另外一个是response对象,对request的响应可以通过操作response对象来完成。$response->end()方法表示输出一段HTML内容,并结束此

2017-02-23 12:06:07 1412

原创 swoole学习笔记(一)简单定时器

swoole提供了类似JavaScript的setInterval/setTimeout异步高精度定时器,粒度为毫秒级。使用也非常简单。//每隔2000ms触发一次swoole_timer_tick(2000, function ($timer_id) { echo "tick-2000ms\n";});//3000ms后执行此函数swoole_timer_after(300

2017-02-23 11:47:52 3405

原创 阿里云服务器使用免费个人DV证书部署nginx+https站点

一、在阿里云中购买证书服务在阿里云中购买证书服务,功能可以在阿里云的控制台中的“证书服务”中找到,由于是个人站点,我购买的是DV类型的证书。OK,这里补充一下证书的几个类型,根据不通的业务类型使用不通的证书:证书类型使用范围DV个人使用证书,能起到加密传输的作用,但无法向用户证明网站的真实身份。OV

2017-02-22 11:06:52 3065

原创 Composer笔记(一)补充:在linux下安装PHP Composer(完全安装)

一、下载composer installerhttps://getcomposer.org/doc/00-intro.md#installation-linux-unix-osxcurl -sS https://getcomposer.org/installer | php二、全局安装通过软链接进行全局安装ln -s /usr/local/php

2017-02-20 17:23:08 4491

原创 PHP5.4 pfsocketopen函数判断sock是否存活的bug(由memcached引起)

之前遇到的一个业务代码非常奇葩的bug,代码中使用pfsocketopen作为http请求,偶尔会不能读取返回结果。经过排查,发现PHP5.4版本下判断socket是否存活存在一个bug。解决方案:1)在这个情况下,可以不使用长链接,改为使用短连接2)由于PHP5.4已经不再维护了,可以升级PHP版本到5.6去除业务逻辑后,代码如下:<?php$num = 1;whil

2017-02-15 14:49:52 701

原创 PHP5.6.x编译报错:Don't know how to define struct flock on this system, set --enable-opcache=no

系统版本:Centos 7解决方案:vim /etc/ld.so.conf.d/local.conf # 编辑库文件/usr/local/lib # 添加该行:wq # 保存退出ldconfig # 使之生效!!记得编译完后不能移除这行,会导致php无法启动!!

2017-02-06 20:15:15 4190

原创 smarty报错:lexing failed because a rule matched an empty string解决方案

smarty报错:PHP Fatal error: Uncaught exception 'Exception' with message 'Error: lexing failed because a rule matched an empty string. Input "解决方案:检查left_delimiter 和right_delimiter 的设置是否正确!

2017-01-24 20:33:22 775

原创 PHP XSS攻击防范--如何过滤用户输入

一、什么是XSS攻击XSS攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。来看一个简单的例子:<?php$slogan_type = isset($_GET['slogan_type']) ? $_GET['slogan_type'] : 'default';?>

2016-12-27 15:40:11 4940

原创 Composer笔记(三):composer.json文件配置

官方参考链接:https://packagist.org/about一、为你的PHP库建立一个名字首先,为你的PHP库起一个名字是非常重要的,必须为一个库建立一个唯一的名称,并且之后是不能更改的。名字应该由一个供应商名+一个项目名组成。例如:monolog/monolog [供应商名]/[项目名]参考:// Monolog is a library,

2016-12-26 22:02:39 10718

原创 Composer笔记(二):建立自己的PHP类库

一、在建立类库之前,你必须有一个github的账号,作为代码托管,github是非常好的一个选择>github主页:https://github.com二、在windows下载并安装git管理器(分布式代码管理工具)>下载地址:https://desktop.github.com/ 安装完成后的界面:三、提交代码到github,点击右

2016-12-24 17:19:25 1694

原创 Composer笔记(一):在windows下安装PHP Composer

一、Windows下可以下载一键安装包>下载页面:https://getcomposer.org/download/ 。二、安装完毕后,新打开一个命令窗口可以看到,composer的默认安装目录是C:\ProgramData\ComposerSetup\bin(ps:which需要安装cygwin才能执行)。三、使用Composer下载一个PHP包,这里以“vo

2016-12-24 17:08:25 3516

原创 PHP请求https域名发生segment fault段错误

PHP使用file_get_contents或curl请求https的域名均会发生segment fault的错误。问题PHP代码如下,执行该PHP命令会发生segment fault:var_dump(file_get_contents("https://www.baidu.com"));解决方案:1. 升级你的PHP版本,在5.4环境下,未能重现改问题(以上执行代码是

2016-12-22 13:14:06 2730

原创 CSRF攻击防范

一、什么是CSRF攻击CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任

2016-12-06 11:12:16 717

原创 PHP使用curl multi要注意的问题:每次使用curl multi同时并发多少请求合适

PHP的curl multi可以使用多线程处理http请求,一定程度上可以提高请求接口的效率。但是,启用多线程也是会消耗资源的事情,那么每次curl multi同时并发多少个请求合适呢?接下来做了以下一个实验,在开始的时候,先说说实验的结论:实验结论1)首先要检查发起请求服务器的网络带宽是否正常,避免请求服务器出现带宽瓶颈。2)curl multi并发请求并发数有一个阈值,过高的并

2016-11-25 10:25:57 17745 1

原创 PHP curl请求错误汇总和解决方案

最近做了一个服务器监控,需要通过curl发出大量的http请求,这里列举了一下curl返回的常见错误码,方便下次排查问题:错误信息含义解决方案Illegal characters found in URLURL中包含"\r",“\n"特殊字符过滤这些特殊字符if (strpbrk(data->change.ur

2016-11-22 17:02:15 12633

原创 ELK日志系统开发,Logstash收集nginx日志(二)

一、Nginx日志例子Nginx日志例子nginx日志默认配置:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http...

2016-08-29 16:02:31 12809 2

原创 ELK日志系统开发(Logstash、Elasticsearch、Kibana安装)(一)

一、安装Logstash!注意,logstash至少要有1G内存才能执行在安装Logstash之前,确保已经安装了Java的运行环境2)在官网(https://www.elastic.co/)下载Logstash,目前最新版本是6.x3)下载完成之后,加压(无须编译),并复制到local目录下,这个是我正式部署的目录:/usr/local/logstash-6.2.44)测试运...

2016-08-25 18:55:29 11003

原创 PHPUnit单元测试对桩件(stub)和仿件对象(Mock)的理解

一、桩件(stub)和仿件对象(Mock)概念桩件(stub):将对象替换为(可选地)返回配置好的返回值的测试替身的实践方法称为上桩(stubbing)。可以用桩件(stub)来“替换掉被测系统所依赖的实际组件,这样测试就有了对被测系统的间接输入的控制点。这使得测试能强制安排被测系统的执行路径,否则被测系统可能无法执行”。仿件对象(Mock):将对象替换为能验证预期行为(例

2016-08-13 12:56:12 4425

原创 PHP规范PSR0和PSR4的理解

一、PSR0简介下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范:一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\<Vendor Name>\(\)*每个命名空间(namespace)都必须有一个顶级的空间名(namespace)("组织名(Vendor Name)")。每个命名空间(namespace)

2016-07-29 17:55:35 33634 1

原创 PHP使用3DES算法加密解密字符串

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。项目

2016-07-21 20:06:22 22160 1

原创 PHP自动化测试(一)make test 和 phpt

当PHP编译完成后,编译程序会提示不要忘记执行make test,make test会检查编译后的程序是否有问题(PS:并不一定编译成功的程序就会没有问题了)。一、关于make test打开Makefile文件,找到make test对应的代码,其中$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTIN

2016-07-04 20:55:02 6507

原创 Centos 7 (linux)部署MongoDB

一、MongoDB简介MongoDB是面向文档的数据库,不是关系型数据库。它扩展了关系型数据库的众多功能,如辅助索引,范围查询和排序。二、MongoDB安装&配置MongoDB的官方网站是https://www.mongodb.com/,可以到官网上下载MongoDB的程序。之所以说是程序,是因为下载的安装包中MongoDB的相关程序已经编译好了,我使用的是mongodb-linux-

2016-06-20 10:53:50 1092

原创 PHP写日志fwrite和file_put_contents的区别与性能

在百度上搜索PHP的fwrite函数和file_put_contents函数,可以找到相当多的文章。但是大多数文章,都仅仅是简单对比一下它们之间的性能,并没有深入分析它们之间的不同点。我一直有一个问题,就是PHP打文件日志,到底是使用fwrite好,还是file_put_contents好?

2016-06-08 10:45:40 12866 2

原创 YII2框架连接数据库操作

使用数据库,是一个框架的核心之一(还有一个重要的核心就是路由实现),对一个框架如何连接数据库进行研究,有助于理解这个框架是如何构建的。Yii2框架的数据库访问建立在PHP PDO之上,提供了一个数据库访问层(DAO)访问不同的数据库(MYSQL,SQLite,MSSQL等等)。Yii连接数据库的方式1. 使用SQL基础查询$data = \Yii::$app->db->createCo

2016-05-18 19:15:56 6390

原创 eaccelerator+PHP5.4导致smarty更新模板500报错

问题背景更新game.37.com业务的smarty模板后,服务器上出现多条500报错记录。PHP错误日志中的报错如下:[16-May-2016 15:46:01 Asia/Shanghai] PHP Fatal error:  Call to undefined function content_57397470478e99_59376883() in /*/template_c/6

2016-05-17 14:12:48 1166

Eclipse的SVN插件:SVN1.6.10

Eclipse的SVN插件(版本1.6.10),适用于EPP3无法自动安装软件

2015-03-09

c++游戏编程基础

描述使用c++进行windows游戏开发,内容简单,容易上手,是初学者不错的选择!

2012-12-15

空空如也

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

TA关注的人

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