自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨森源的博客

不要在最该奋斗的年纪选择安逸------一个热衷于PHP开发的95后

  • 博客(333)
  • 资源 (8)
  • 收藏
  • 关注

原创 道格拉斯-普克算法(经纬度或坐标点抽稀)

起因最近在做一个车联网项目,有一个场景是车辆定时上报当前所在经纬度等位置信息上报给平台,平台通过web页面在高德地图上展示车辆行驶路径。由于车辆上报规则是每隔4s上报一次,一个小时也就是900个点,一天也就是21600个点,如果是10辆车就是216000个点,那如果是100辆车,甚至是10000辆车对于数据库存储来说会是一个灾难,对于渲染地图,过多的点,也减少页面的流畅度。考虑到车辆直线行驶...

2019-04-16 19:17:49 9565 2

原创 【HTML】上传文件input样式美化

起因,最近因为一些原因,在写一个前端小页面,但是上传文件的样式怎么调整都不是很满意。遂转变思维想到了如下方法。传统写法<form id="upform" enctype='multipart/form-data'> <div class="form-group"> <label for="upteainput">上传文件&am

2018-04-19 11:09:11 17009 3

原创 【Yii】自动加载机制和别名

自动加载什么是类的自动加载,详见PHP官方文档 http://php.net/manual/zh/language.oop5.autoload.phpYII自动加载Yii的类自动加载,依赖于PHP的 spl_autoload_register() , 注册一个自己的自动加载函数(autoloader),类仅在调用时才会被加载,依赖别名实现了快速定位,这也是YII高性能的一个重要体现...

2018-02-23 16:44:53 1191 4

转载 【Swoole】PHP+Swoole的闭包写法

JS程序员总是嘲笑PHP没有闭包,今天抽空写一篇文章来专门介绍一下PHP的闭包。从5.3版本开始PHP就增加了匿名函数支持,经过数个版本迭代到现在的PHP5.6、PHP7,PHP语言的闭包已经非常完善了。再结合Swoole提供的事件驱动支持,PHP的闭包功能非常强大而且很优雅。匿名函数匿名函数是闭包的核心,匿名函数在PHP里实际上是一个Closure类的 对象 (请注意是对象)。与普通的面向对象编程

2017-10-24 22:30:59 1331 2

原创 【Swoole】多进程process

多进程初试用Swoole内置的函数写多进程是一件非常苦逼的事情啊,进程间的通信,异步回调(callback)做的都不是很好。还好有Swoole,拯救了PHP在这方面的薄弱,真是让PHP如虎添翼啊。Swoole,适合中高级程序员,不适合初级程序员,编写者也是冲着这么一个思想来的,他们认为你已经有了调试和看懂原理的能力了,对于我这种小白来说,学习还是非常吃力的。直接来代码吧<?php/*** swo

2017-10-23 22:44:36 4381 2

原创 【Swoole】用swoole简单实现MySQL连接池

MySQL连接池在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再根据当前情况去调用其worker进程然后处理PHP,如果需要MySQL,在与MySQL建立连接,这个时候,如果有1000个请求打过来,就需要与MySQL建立1000个连接。如果请求达到万级或者百万级,这时

2017-10-21 17:24:00 16302 5

原创 【WEB】Web性能压力测试工具

webbench原理webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果(转至百度百科)安装[root@VM_114_93_centos local]# wget http://home.tiscali.cz/cz210552/distfiles/webbench-1.5.tar.gz[root@VM_114_

2017-10-20 20:35:41 1981 1

原创 【算法】拼凑面额+数字和为sum的方法数+走网格 (动态规划)

题目描述 给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。 输入描述: 输入为一个数字N,即需要拼凑的面额 输出描述: 输出也是一个数字,为组成N的组合个数。 示例1 输入5 输出2一脸懵逼,记下来,慢慢研究<?php//动态规划$n = trim(fgets(STDIN));$

2017-09-11 23:11:39 2696 1

原创 【PHP】字符串加法运算(大数加法)

请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error输入描述: 输入为一行,包含两个字符串,字符串的长度在[1,100]。 输出描述: 输出为一行。合法情况输出相加结果,非法情况输出error 示例1 输入123 123 abd 123 输出246 Error<?php//字符串加法运算$str = explode(" ",trim(fgets(S

2017-09-10 23:04:59 5434 2

原创 【PHP】十进制转任意2-16进制

题目描述 给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数 输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1 输入7 2输出111<?php//给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进

2017-09-10 17:54:38 1755

原创 【PHP】从数列1,2,3.......n 中随意取几个数,使其和等于m(一段神奇的代码)

链接:https://www.nowcoder.com/questionTerminal/11cc498832db489786f8a03c3b67d02c 来源:牛客网输入两个整数 n 和 m,从数列1,2,3…….n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合示例1 输入5

2017-09-09 13:56:03 2293

原创 【PHP】算法基础-字符移位

小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗?输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.对于每组数据,输出移位后的字符串。输入AkleBiCeilD输出kleieilABCD这道题,不能申请额外的空间,就是在原有字符串上操作,还得保证各个字符串的相对位置,利用冒泡排序的思想是最容易

2017-09-09 12:48:59 1415

原创 【PHP】 买苹果

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。 开始看到这个题,感觉挺有意思,但猛地一想,有点难度没有头绪,不搞完不睡觉。。<?php//将一个数字,最少可以分成多少个8和6的和,如果有,计算出个数,如果没有,输出-1$num = fg

2017-09-09 12:42:47 1031

原创 【PHP】求最大奇约数的和

小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.现在给出一个N,需要求出 f(1) + f(2) + f(3)…….f(N)例如: N = 7f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 +

2017-09-09 12:35:36 1331

原创 【PHP】调整数组顺序使奇数位于偶数前(闭包扩展)

这道题意思就是,给所有奇数放到偶数前面,我们可以设置两个指针,一个从前往后,直到他扫到偶数,一个从后往前,直到他扫到奇数,然后交换两个数的位置,然后往下扫,当begin>end的时候停止。代码实现很简单,如下:<?php//调整数组,使奇数位于偶数前面function reorder($arr){ $length = count($arr); $begin = 0;

2017-08-30 09:44:58 1619

原创 【MySQL】count使用姿势

数据表描述mysql> select vip,port,status from vip_full limit 10;+----------------+------+--------+| vip | port | status |+----------------+------+--------+| 123.125.52.231 | 80 | 0 ||

2017-08-19 16:08:43 1307 1

原创 【MySQL】记一次数据去重

有时候,因为开发时,考虑不当,会造成数据重复。背景:前几天做项目的时候,有一个给ip打标签的操作,但是当数据数量多了以后,发现,同一个ip被打了两次相同的标签,导致数据显示重复,然而,已经使用了一段时间了,只能在原有数据库上删除重复数据,然后修改添加标签的逻辑了,去重操作如下:mysql> select * from vip_port_tag;+-------+----------------+-

2017-08-19 15:57:00 1198

原创 【Linux】Linux中借助lockf机制,保证只有一个任务进程在执行

文件锁机制的作用:防止多个程序同时对一个不允许同时操作的工作做操作。实现(lockf) 在Linux中我们可以借助lockf命令来实现文件锁机制 安装tar -xzf lockf_linux.tar.gz cd lockf_linux make && make install使用lockf –help -k 锁定文件,如果当前文件被锁,则输出 lockf:/tmp/create/loc

2017-08-19 15:33:30 7967 1

原创 【PHP】如何判断一个URL是否是一个图片链接

方式一直接正则匹配URL链接,是否是以.png,.gif,.jpg,.jpeg结尾的。preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $url);这个是一个最简单的方式,但是不够精确,因为并不是所有的图片链接都是以图片名字+扩展名结尾的。方式二用CURL获取图片URL的response header首先创建一个curl,并将头文件的信息,作为数据流输出$u

2017-07-30 15:06:06 10735

原创 【mongodb】日常开发须知(基础版)

以下为个人在公司中所了解的mongodb开发基础,不具有权威性,仅供参考库1.库名全部小写,禁止使用任何_以外的特殊字符,禁止使用数字打头的库名,如:123_abc解释:库以文件夹的形式存在,使用特殊字符或其它不规范的命名方式会导致命名混乱。2.数据库名最多为64字符。3.在创建新的库前应尽量评估该库的体积、QPS等,提前考虑是应该新建一个库还是专门为该库创建一个新的集群。案例:某开发在拿到dba

2017-07-29 17:52:54 1648

原创 【mongodb】设置自动删除过期数据

Time To Live(TTL) 集合MongoDB 2.2 引入一个新特性–TTL 集合,TTL集合支持失效时间设置,或者在某个特定时间, 集合自动清除超时文档,者用来保存一个诸如session会话信息的时候非常有用。如果想使用TTL集合,用用到 expireAfterSeconds 选项官网使用文档设置方法:Expire Documents after a Specified Number

2017-07-27 18:04:15 8720

原创 【JavaScript】JS实现HashMap

/** * ********* 操作实例 ************** * var map = new HashMap(); * map.put("key1","Value1"); * map.put("key2","Value2"); * map.put("key3","Value3"); * map.put("key4","Value4"); * map

2017-06-19 20:47:23 4062

转载 【Git】Git常用命令清单

我每天使用 Git ,但是很多命令记不住。一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ git init#

2017-06-19 11:22:20 818

转载 【Yii2】yii2学习之CSRF验证

什么是CSRFCSRF(跨站请求伪造),通过盗用你的身份,发送一些恶意请求,比如更改用户密码、删除账户、发送邮件、以你的身份购买商品等。攻击原理:用户A访问网站B,登录验证通过后会在用户A的浏览器中产生登录B网站的cookie,这时用户A在没有退出登录情况下访问恶意网站C,C的网站中有去请求网站B的Request,浏览器会带着之前的cookie去请求B,而B无法分别是用户A发出的还是网站C发出的,固

2017-06-15 21:15:05 2434

原创 【版本控制】git,svn,cvs 粗略比较

版本控制已经有很多年历史了,也出现了很多版本控制解决方案,但是有一些因为安全性低、不支持跨平台、不支持并发修改而逐渐淡出了人们的视野。这篇文章就来比较一下时下最火的三个版本控制工具:git,svn,cvs。并发修改多个开发人员同时对同一个文件进行修改。git,svn,cvs都支持。原来曾有个rcs的版本控制系统就不支持并发修改, 如果有人正在修改某一个文件,那么这个文件就会被锁定,直到修改完毕,下一

2017-06-15 20:09:56 3111

原创 【PHP】重整无限极分类

无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类;无限极分类数据表设计cateid 为栏目id,parentid为其父栏目id。数据array:8 [▼ 0 => array:4 [▼ "cateid" => "1" "title" => "家电" "parentid" => "0" "createtime"

2017-06-13 20:01:47 1261

原创 【PHP】富文本HTML过滤器:HTMLPurifier使用教程(防止XSS)

在编程开发时安全问题是及其重要的,对于用户提交的数据要进行过滤,XSS就是需要重视的一点,先说一下什么是XSS,简单来说就是用户提交数据(例如发 表评论,发表日志)时往Web页面里插入恶意javascript代码例如死循环,疯狂的alert,这还不算还可能会修改页面页面上的html元素(例 如登录表单的action),这样当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到用户的特殊目的。

2017-06-09 15:04:21 5670

原创 【Jquery】Pjax的了解与应用

什么是pjax?现在很多网站( facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新。 这样的用户体验, 比起整个页面都闪一下来说, 好很多。 其中有一个很重要的组成部分, 这些网站的ajax刷新是支持浏览器历史的, 刷新页面的同时, 浏览器地址栏位上面的地址也是会更改, 用浏览器的回退功能也能够回退到上一个页面。

2017-05-31 19:13:43 3417

原创 【PHP】PHP7 下安装并使用 xhprof 性能分析工具

该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取git clone https://github.com/longxinH/xhprof安装 xhprofcd xhprof/extension/phpize./configure makemake install然后在/etc/php.ini中根据情况加入extension=xhprof.

2017-05-24 19:09:30 14483 4

原创 【Memcache】常见问题总结

memcached的基本设置启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户

2017-05-24 16:14:45 3244

转载 【PHP】实现ajax长轮询

传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上查询最新的数据。这种拉取数据的方式需要很短的时间间隔才能保证数据的精确度,但太短的时间间隔客服端会对服务器在短时间内发送出多个请求。反转AJAX,就是所谓的长轮询或者COMET。服务器与客服端需要保持一条长时间的请求,它使得服务器在有数据时可以返回消息给客户端。这里使用AJAX请求data.PHP页面获得‘success’的值,请求的时间达

2017-05-22 13:03:13 3595 3

转载 【PHP】无限分类

无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类;比如一棵树,从一根树干开始,分出多个树枝,而这些树枝又分出其他的分支,理论上是可以无限分裂下去的;再比如,一个家庭可以有若干个子女,我们把这些子女看做是第一级分类。而这些子女,又会各自组建自己的家庭,当他们有了自己的后代,就是第二级分类,如果每个家庭都有一个以上的子女,理论上是可以无限分裂的;在

2017-05-22 12:46:10 1564

原创 【JQuery】HTML自定义滚动条(mCustomScrollbar)

实现效果如下所示mCustomScrollbar 是个基于 jQuery UI 的自定义滚动条插件,它可以让你灵活的通过 CSS 定义网页的滚动条,并且垂直和水平两个方向的滚动条都可以定义,它通过 Brandon Aaron jquery mouse-wheel plugin 提供了鼠标滚动的支持,并且在滚动的过程中,还可以缓冲滚动使得滚动更加的平滑,还可以自动调整滚动条的位置和定义滚动到的位置等。

2017-05-19 18:16:28 1881

原创 【数据结构】二叉搜索树

什么是二叉搜索树二叉搜索树(BST)也称为二叉排序树或二叉查找树。二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质。非空左子树的键值小于其根结点的键值。非空右子树的键值大于其根结点的键值。左右子树都是二叉搜索树。二叉搜索树的查找操作查找从根结点开始,如果树为空,返回NULL。若树非空,则根结点关键字和X进行比较,并进行处理:若X小于根结点的值,只需要在左子树中继续搜索。若X大于

2017-05-14 18:58:32 915

原创 【数据结构】二叉树的遍历(递归与非递归)

先序遍历(递归)遍历过程访问根结点先序遍历其左子树先序遍历其右子树void PreOrderTraversal(BinTree BT){ if( BT ) { printf("%d", BT->Data); PreOrderTraversal(BT->Left); PreOrderTraversal(BT->Right); }

2017-05-11 17:58:41 1475

转载 【Git】Git branch和Git checkout常见用法

git branch 和 git checkout经常在一起使用,所以在此将它们合在一起Git branch一般用于分支的操作,比如创建分支,查看分支等等,git branch不带参数:列出本地已经存在的分支,并且在当前分支的前面用”*”标记git branch -r 查看远程版本库分支列表git branch -a查看所有分支列表,包括本地和远程git branch dev创建名为dev的分支,创

2017-05-06 10:21:00 1551

转载 【Git】 git fetch和git pull的区别

Git中从远程的分支获取最新的版本到本地有这样2个命令git fetchGit fetch origin mastergit log -p master..origin/mastergit merge origin/master以上命令的含义: 首先从远程的origin的master主分支下载最新的版本到origin/master分支上 然后比较本地的master分支和origi

2017-05-05 18:02:18 868

原创 【MySQL】MySQL关键字作为列名表名的处理方式

面试被问到一个问题,假如MySQL中的关键字在查询语句中作为列明或者表名出现,应该怎么处理。例如select desc from t;一脸懵逼。尴尬。于是乎,自己私下做了一个实验,发现了其中原因,特此分享。创建t表,包含两个字段,id和desc插入了三条数据mysql> use test;Database changedmysql> select desc from t;ERROR 1064

2017-05-05 17:54:51 25835 1

转载 【数据结构】看图理解单链表的反转

如何把一个单链表进行反转?方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。方法2:使用3个指针遍历单链表,逐个链接点进行反转。方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。方法4: 递归(相信我们都熟悉的一点是,对于树的大部分问题,基本可以考虑用递归来解决。但是我们不太熟悉的一点是,对于单链表的一些问题,也可以使用递

2017-05-04 19:38:04 1268

转载 【设计模式】观察者模式

观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码观察者模式实现了低耦合,非侵入式的通知与更新机制/** * 事件产生类 * Class Even

2017-05-03 21:13:12 816

自定义滚动条插件

mCustomScrollbar插件,支持自定义滚动条,功能丰富,例子多,简单易用

2017-05-19

Learning PHP设计模式

Learning PHP设计模式---William Sanders 著,中国电力出版社

2017-02-17

Memcache图形化管理工具

直接在php开发环境下,通过浏览器访问即可,注意修改里面前几行的配置,包括ip,端口,用户名,密码

2016-12-21

js支持base64加密

JavaScript的base64位加密插件

2016-12-04

屏幕录制成gif动画

可以录制屏幕,保存成gif格式的图片,支持帧的添加删除和,图片大小处理,添加滤镜等。

2016-12-04

canvas炫酷动画飞爆效果

canvas炫酷动画飞爆效果

2016-11-01

C++ vs 2012扩展包

安装Apache时,显示,缺少MSVCR110.dll

2016-11-01

jpgraph-4.0.0

jpgraph-4.0.0,以及Examples实例,PHP5,PHP7

2014-03-20

空空如也

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

TA关注的人

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