201906-05 Laravel 底层是如何处理 HTTP 请求的? HOT 总体流程Web服务器对HTTP请求的处理流程大体上都是这样的:在某个端口监听请求,请求进入后运行程序,然后将程序运行结果以响应的形式发送出去。基于Laravel框架构建的Web应用处理HTTP请求的流程也是如此。所有HTTP请求都会被转发到单入口文件 public/index.php,处理HTTP请求的核心代码如下(忽略HTTP请求处理之外的代码):在上面这段程序中,首先会创建一个 Application 实例,作为... 继续阅读 >
201906-04 PHP生成器的创建和使用 HOT 1、概述生成器是PHP5.5引入的新特性,但是目测很少人用到它,其实这是个非常有用的功能。生成器和迭代器有点类似,但是与标准的PHP迭代器不同,PHP生成器不要求类实现Iterator接口,从而减轻了类的开销和负担。生成器会根据需求每次计算并产出需要迭代的值,这对应用的性能有很大的影响:试想假如标准的PHP迭代器经常在内存中执行迭代操作,这要预先计算出数据集,性能低下;如果要使用特定方式计算大量数据,如操作Excel表... 继续阅读 >
201906-04 PHP实现SSO单点登录步骤 HOT 一、什么是单点登录SSO(SingleSign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。二、单点登录解决了什么问题解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。 例如C... 继续阅读 >
201906-04 PHP代码安全有必要了解下 HOT SQL注入攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成危害例如删除id为1的帖子,sql如下:如果有人在提交post_id时输入1OR1,你的语句会组合成这样:一般比较常出现在原生的SQL操作,框架一般会解决这方面的问题。通常采用参数控制或过滤特殊字符... 继续阅读 >
201906-04 MySQL 到底是怎么解决幻读的? HOT 一、什么是幻读在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做幻行。二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、MySQL是如何解决幻读的如果你看到了这篇文章,那么我会默认你了解了脏读、不可重复读与可重复读。1.多版本并发控制(MVCC)(快照读/一致性读)多数数据库都实现了多版本并... 继续阅读 >
201906-03 为什么Redis 是单线程却能支撑高并发? HOT 最近在看UNIX网络编程并研究了一下Redis的实现,感觉Redis的源代码十分适合阅读和分析,其中I/O多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种I/O模型为什么Redis中要使用I/O多路复用这种技术呢?首先,Redis是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以I/O操作在一般情况下往往不能直接返回... 继续阅读 >
201906-03 Laravel5实现的RBAC权限管理操作示例 HOT 根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,可以根据菜单的例子,请自行完善,开发。下面请认真学习一下laravel的RBAC设计1、建表(用户表、角色表、权限表、用户角色表、角色权限表)CREATE TABLE IF NOT EXISTS mr_role(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar(30) NOT N... 继续阅读 >
201906-03 workerman定时任务 HOT 一、下载workermanhttps://www.workerman.net/download二、下载workerman/mysqlhttp://doc3.workerman.net/6402011、定时函数为匿名函数(闭包)use \Workerman\Worker;use \Workerman\Lib\Timer;require_once './Workerman/Autoloader.php';$task = new Worker();// 开启多少个进程运行定时任务,注意多进程并发问题$task->count = 1;$task->onWorkerStart ... 继续阅读 >
201906-03 PHP实现下载与压缩文件的封装与整理 HOT 1、PHP实现打包zip并下载功能$file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在)$downname = $card.'.zip';//你即将打包的zip文件名称$file_name = FCPATH.'canddata/'.$card.'.zip';//把你打包后zip所存放的目录$result = copy( $file_template, $file_name );//把原来项目目录存在的zip复制一... 继续阅读 >
201906-01 Mysql数据库的分布式锁有哪几种? HOT 悲观锁Mysql实现分布式悲观锁:直接创建一张锁表,然后通过操作该表中的数据来实现了。当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。创建这样一张数据库表:CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `method_name` varchar(64) NOT NULL&nb... 继续阅读 >
201906-01 整理了Git遇到错误时如何解决的一些坑 HOT 在工作中,你总是与代码打交道,上传代码的时候,相信你不是用svn,就是用Git版本控制器,下面是最近这几天整理下来经常会遇到的Git的一些错误的解决访问,希望能帮助到你。 继续阅读 >
201906-01 黑客入侵 linux 系统常用手段,有你不知道的没? HOT linux不提权跨目录访问的代码 linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。 在提不了权的情况下,试试如下代码吧。 继续阅读 >
201905-31 面试中,经常考到的MySQL题 HOT 1. 如何设计一个高并发的系统 ① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化 ② 使用缓存,尽量减少数据库 IO ③ 分布式数据库、分布式缓存 ④ 服务器的负载均衡 继续阅读 >
201905-31 基础:永远不要在 MySQL 中使用“utf8” HOT 最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误: 我用的是 UTF-8 编码的客户端,服务器也是 UTF-8 编码的,数据库也是,就连要保存的这个字符串“ <…”也是合法的 UTF-8。 问题的症结在于,MySQL 的“utf8”实际上不是真正的 UTF-8。 继续阅读 >
201905-31 主从配置,读写分离是MySQL性能优化重点 HOT 有些大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。 继续阅读 >
201905-30 Swoole实现毫秒级定时任务 HOT 项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole提供的强大的毫秒定时器。应用场景举例我们可能会遇到这样的场景:场景一:每隔30秒获取一次本机内存使用率场景二:2分钟后执行报表发送任务场景三:每天凌晨2点钟定时请求第三方接口,如果接口有数据返回则停止任务,如果接口由于... 继续阅读 >
201905-30 Mysql语句性能优化52条 HOT 这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你1,对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2,应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特殊的值,如0,-1作为默认值。3,应尽量避免在where子句中使用!=或<>操作符,MySQL只有对以下操作符才使用索引:<,<=... 继续阅读 >
201905-30 PHP实现页面静态化 HOT 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。 现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对于搜索引擎而言也是非常友好的一个方式。 继续阅读 >
201905-29 PHP导出成PDF你用哪个插件 HOT 首先查询了相关的类库,有FPDF,zendPDF,TcPDF等等。首先看了下先选择了FPDF,可以说除了中文字符以外没有什么问题,中文乱码而且看了下最新版本没有很好的解决方案,所以只能放弃。后来就专门找支持中文的发现了TcPDF,开始也是中文字体支持不是很好,但是发现了有人做了中文的语言包才使得TcPDF更加完美起来。 继续阅读 >
201905-29 深入理解MySQL优化“套路” 说起 MySQL 的查询优化,相信大家收藏了一堆奇技淫巧:不能使用 SELECT *、不使用 NULL 字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解它背后的工作原理?在实际场景下性能真有提升吗?我想未必。 因而理解这些优化建议背后的原理就显得尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。 继续阅读 >
201905-28 Redis Stream——作为消息队列的典型应用场景 HOT Redis作为一个嵌入式的存储系统跑在各个IoT设备上,各个设备使用 Redis Stream 暂存产生的时序数据,然后再异步的推送到云端。云上部署的各个业务程序,会读取推送的原始数据,基于一定的规则进行分析,然后将结果写入可靠的数据存储系统。用户读取结果,在APP或者web页面上进行展示,从而整个系统形成一个闭环。 继续阅读 >
201905-28 日均7亿交易量,如何设计高可用的MySQL架构? HOT 对分布式数据库来说,我们从 2015 年以来,就一直跟踪着业界很多的分布式数据库的产品。 我们应用级的分布式解决方案也好,包括我们的分布式访问层的解决方案也好,可能有些场景还真的是无法应对的。 我们也在探索,随着生态圈和国内技术的逐步成熟,我们也在考虑分布式数据库技术的探索和引入的事情,同时从另外一个角度来说,在现在这种国际的关系形势下,需要做一些技术的储备,有自主支撑下来的能力。 继续阅读 >