自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

要成为海贼王的男人!

人的梦想,是不会终止的!

  • 博客(49)
  • 收藏
  • 关注

原创 筛选黑科技

基于Laravel编写的筛选项黑科技目录:FilterController.php<?phpnamespace Modules\Student\Http\Controllers;use Illuminate\Routing\Controller;use Mockery\Exception;use Symfony\Component\Yaml\Yaml;/**

2018-01-29 10:07:33 268

原创 python练习题

# 求从1到100的数字中所有既能被3整除又能被5整除的数字的有哪些for i in range(1, 101): if (i%15 == 0): print(i)# 判断是否为回文# 提示:回文:62426是回文数字def hw(m): tmp = m n = 0 while m: t = int(m)%10

2018-01-24 01:01:16 287

原创 python入门之多进程

#! /usr/bin/env python3# -*- charset = utf-8 -*-from multiprocessing import Processimport os# 子进程要执行的代码def run_pro(name): print("运行子进程 %s (%s)..." % (name, os.getpid()))if __name__ == '__

2018-01-17 00:16:05 200

原创 Python入门之yield

# 按行读取文件with open('demo.txt', 'r') as f: line = f.readline() while line: print(line.strip()) #line有回车 print本身也有回车,则多处一个空行 line = f.readline()# 由浅入深理解生成器#mlist = [1, 2, 3]#

2018-01-15 23:37:35 169

原创 python入门笔记

jupyter安装python3-m pip install jupyter启动命令jupyter notebook

2018-01-15 09:07:13 186

原创 numpy

>>> print(np.array([1,2,3,4]))[1 2 3 4]>>> print(np.array((1,2,3,4)))[1 2 3 4]指定数组数据类型>>> print(np.array((1.2, 2, 3, 4), dtype=np.int32))[1 2 3 4]list或tuple为元素产生二维数组>>> print(n

2018-01-12 16:00:30 156

原创 python实战笔记第二弹—模拟浏览器执行过程

“高强度的实战训练,是每个高手成长的必经之路”—某个剑客的海贼曾说    通过观察我们发现,我们在点击海贼网http://op.hanhande.com/shtml/op_wz/list_2602_7.shtml的分页链接都是有迹可循的,这就给我们的抓取工作,带来了极大的便利。那么问题来了,如果一个网站的分页后产生的内容均是动态加载的,那我们应如何处理呢?下面先由我介绍两款

2018-01-09 17:48:19 289 1

原创 python实战笔记一之爬取海贼王图

爬取目标网址:http://op.hanhande.com/shtml/meitu.shtml“python的强大在于库多”——yo的海贼宣言工预善其事,必先利器。现实世界里我们大不必重复的造轮子,航海时代的每个威风凛凛地大海贼都是能够熟练地应用各种爬虫库的。“掌握urllib2,让它为你打开大航海时代的大门吧”——某个大海贼说urllib2模块

2018-01-08 15:39:06 2441

原创 手工编译的php添加mbstring与pdo_mysql扩展

前言 添加新的扩展有两种方式: 第一种:重新编译,configure时带有相关参数(不推荐,一些第三方库,源码包中也是没有的) 第二种:使用PHP源码包中自带的工具phpize,这个工具在php/bin目录中(推荐)  /usr/local/php下执行./php -m可查看所有扩展  在源码包的ext文件下存放着所有扩展,这节我们安装mbstring与pd

2018-01-07 19:35:01 552

原创 无限级分类总结

我所接触过的无限级分类大致可分为两种,第一种记录路径的,一种是不记录路径的。这两种不同的分类方式在数据库中有着不同的数据存储形式。 第一种:通过父id实现递归 根节点的父id为0,其他子节点的父id为父节点id。然后,通过递归遍历所有节点。  表数据    <?php//连接数据库$link = mysqli_connect("localhost","r

2018-01-07 19:34:03 282

原创 无限级分类总结(二)

前言 前面,我已经写过一篇关于无限极分类的文章《无限级分类总结》。但在实际开发中,我可能不会选择那两种实现方法,而是选择另外一种更好的实现思路。前面那一种,在一个函数中通过递归实现所有分类的查询,虽然代码简单,思路明了,但因为每次递归都需要进行一次sql查询,效率上就不尽人意了,所以我会事先把所有的分类数据都查询出来,然后存储在一个数组中,构建树形数组结构,然后按层级显示,虽然代码繁琐,但查询

2018-01-07 19:33:02 279

原创 常见的php面试题

1.HTTP协议中几个状态码的含义200,301,302,400,401,404,500,503200——请求成功,返回响应头和数据体。301——重定向,永久性转移302——重定向,暂时性转移400——客户端请求代码出错,不能被服务器端理解401——客户端请求未经授权404——客户端请求失败,找不到服务器端资源500——服务器内部错误503——服务器当前不能处理客户

2018-01-07 19:31:28 374

原创 常用的几个排序算法

程序 = 数据结构 + 算法,算法是程序的灵魂,有些网站能够在高并发、大数据的情况下依旧坚挺。我们可能会说,那是因为运用了服务器集群,数据库读写分离,缓存技术等等。但是这些优化技术是如何实现的呢?这就要问问哪些高明的算法工程师了。所以对于WEB开发而言,虽然用到算法的地方不多,但是了解一些常用的算法还是很有必要的,这样才能看懂一些“高明”的程序设计技巧。 下面,是一些常用的排序算法,包括冒泡排

2018-01-07 19:29:19 167

原创 md5+salt与password_hash()

md5+salt  直接使用MD5()加密,是很容易被破解的(犹记得曾经忘记密码,到处找免费的破解网站...),但加上salt想要破解就难上很多了,即使你获得salt和最终密文,想要破解也是十分困难的。 如何实现md5+salt?很简单,密码连接一个随机字符串即可。function md5_salt_hash($pass){    $salt = ‘5f9901fc60b7

2018-01-07 19:28:14 2967

原创 php实现静态化总结

简介PHP的静态化就是将一些不常更新的页面静态化,而非通过动态程序从数据库中取出输出到前台。通过此方法可加快页面响应速度和减轻服务器负载压力。 页面静态化操作,包括两种:一种是静态化,一种是伪静态化。静态化又包括:完全静态化和局部静态化。下面逐一进行介绍: 完全静态化就是将整个页面进行静态化,可以使用php缓冲区函数,将缓冲区内容输入到静态文件中。并设置过期时间,若静态

2018-01-07 19:25:07 1792

原创 接口加密之签名验证

前言我们经常需要使用接口进行数据传递,为了保障接口的安全性,可以采用类似微信的签名验证的方式,来进行加密验证处理。1.按照请求参数名称将所有参数按照字母先后进行排序得到:keyvaluekeyvalue…keyvalue字符串。如astring=1,cstring=2,bstring=3 排序后为astring=1, bstring=3, cstring=2。然后拼接参数名

2018-01-07 19:23:11 466

原创 json字符串转化为json对象

这是web前端开发中经常使用到的一个知识点。譬如:前端可通过ajax获取后端数据。那么,这个获取的JSON数据(可能是JSON字符串)是如何在前端获得解析的呢?其实,解析JSON字符串过程就是将JSON字符串转化为JSON对象。下面,我们简单学习下这个JSON字符串的解析和使用过程。 首先,要了解什么是json对象。暂时可以简单的认为,json对象就是由[]和{}组成的一种特殊的方便数据传

2018-01-07 19:21:25 1470

原创 k-Nearest Neighbors(KNN)算法

第一个机器学习的例子,就是kNN,它是一个简单的机器学习模型,容易理解而且效率高。原理和它的想法都很简单:用距离来分类的方法,计算待分类样例与已知所有分类样例的距离,对结果进行排序,找出最小距离的前k个结果,对k个结果进行投票统计,得票最多的就是属于那一类。    问题来了。究竟是什么距离作为衡量标准,我们知道距离有欧氏距离,马氏距离还是欧氏距离?它采用的是欧氏距离。 

2018-01-05 17:58:46 291

原创 php设计模式四之工厂模式

/** * 工厂模式 * 优点: * 1.重命名或替换Car类,你只需要更改工厂类代码,而不是在每一个用到Car的地方更改。 * 2.创建对象过程复杂,也只需要在工厂类中写,而不必在每个创建实例的地方重复写。 * Class Car */class Car{ private $color; private $type; public function __c

2018-01-05 01:07:22 169

原创 php设计模式三之单例模式

//------------------------创建型模式-单例模式----------------------------/** * 单例模式 * 取得某个类的唯一实例 * 应用场景:需要一个全局的对象(比如配置类)、共享的资源(比如事件队列) * Class Single */class Singleton{ private static $instance;

2018-01-04 00:36:28 142

原创 php设计模式二之策略模式

策略模式将一族不同的算法(业务)封装到不同的类中。使Client类在不知道具体实现的情况下选择实例化其中一个算法。首先策略模式需要有一个接口,然后不同的业务类(具有相同方法)均继承该接口,客户端方法可以使用接口类型参数。这样可以在不知道具体实现的情况下选择实例化其中一个算法。 /** * 策略模式 * c面对接口编程,而非面对实现编程 */interface RideInte

2018-01-02 23:59:00 154

原创 php设计模式一之设计模式概述

柚子在观看PHP The Right Way时,曾看到设计模式一节。不禁联想到自己上个月阅读Slim框架潜移默化里也了解了一些设计模式,但由于不曾深究(不知道设计模式对应名称)也就不了了之。所以,柚子专门开了一个专栏用来探索php中的各类设计模式及常见使用场景。设计模式主要是基于以下的面向对象设计原则。对接口编程而不是对实现编程。(譬如:Laravel中的Contract)

2018-01-01 23:47:03 196

原创 Slim研读笔记八之外观模式(上)

今天柚子深入学习了Laravel的外观模式,这节让我们带着问题去学习Slim的外观模式。问题1.外观模式为何可以快速指定到类?问题2.Slim如何集成外观模式?问题1外观模式大量使用PHP的后期静态绑定即父类定义的属性子类可以直接使用。外观模式Facade抽象类的__callStatic魔术方法是关键。问题2实现Slim的外观模式,使用Facade做

2017-12-27 23:25:34 296

原创 Slim研读笔记八之路由(下)

跟随上节的脚步继续研读代码。上节查看到了Slim/Router类的map方法。这节让我们根据一个请求的执行过程具体学习下这个路由的核心类。  /** * 增加一个路由 * Add route * * @param string[] $methods Array of HTTP methods * @param string

2017-12-26 23:14:21 434 2

原创 Slim研读笔记八之路由(中)

这节,我们承接上节继续研读Slim路由部分。我们首先由map函数进行延伸,因为get()、post()、any()等函数均是封装的此函数。 /** * 使用多种请求方法增加路由 * Add route with multiple methods * * @param string[] $methods Numeric array of HTTP

2017-12-25 23:16:43 260

原创 Slim研读笔记七乱入篇之Monolog(补)

Monolog是最为广泛的PHP日志库,它有几十个处理程序可记录日志到不同的程序中。柚子前段时间也曾写过一篇关于Monolog研读博文,分析了Monolog最重要两个类中的关键代码。这节,介绍一些实用性的东东,譬如:如何用Monolog开发ELK可以使用的日志。Logstash是一个开源的日志管理工具,带有一个漂亮的界面Kibana。我不想在这里描述如何安装Logstash,具体详情可查看我的

2017-12-23 03:26:58 672 1

原创 Slim研读笔记八之路由(上)

从这节开始,我们开始研读路由。每个框架都会有路由,Slim框架的路由略微特殊,其路由功能是集成在应用主体中的。Slim 提供了快速强大的路由器,它能将路由映射到特定的 HTTP 请求方法和 URI 。它支持参数和模式匹配。Slim路由也是严格符合Restful规范的,方便我们进行接口开发,故其支持标准Http协议的六种请求方法,即:1、GET2、POST3、PUT4、Delet

2017-12-22 00:13:15 805

原创 Slim研读笔记七之应用程序中间件(下)

中间件的压栈流程并不复杂,柚子心中大概也有个思路,这里画出草图:中间件在调用时会现获取最后的中间件(匿名函数对象),然后根据中间件之间的关联自动进行调用。  /** * 调用中间件 * Call middleware stack * * @param ServerRequestInterface $request A request obj

2017-12-20 23:22:58 337 1

原创 Slim研读笔记七之应用程序中间件(上)

柚子以为,面对未知问题的求证过程应是:首先,根据问题大量大胆猜测,幻想可能的答案。然后,一步步精确的求证。不急功近利,不以偏概全,而应环环相扣,循序渐进。之后,根据大量事实总结出客观规律。方可达到知其然且知其所以然。 通过文档可知,Slim包含三种中间件,应用程序中间件、路由中间件、中间件组等。应用程序中间件示例,在index.php中: $app->add(fun

2017-12-19 23:44:39 518 1

原创 Slim研读笔记六之应用主体(下)

上节,我们详细的了解了下Slim中间件,并查看了MiddlewareAwareTrait特质 class App{ // 使用特质,包含了增加中间件和调用中间件方法 use MiddlewareAwareTrait;...让我们接着往下看。  /** * 增加中间件 * Add middleware * 这个方法增加一个新的中

2017-12-19 00:21:21 230 1

原创 Slim研读笔记六之应用主体(中)

这节一起看下中间件/** * Middleware * 这是一个启用同心中间件的内部类。 * This is an internal class that enables concentric middleware layers. This * class is an implementation detail and is used only inside of the Slim

2017-12-15 18:48:56 281 1

翻译 Slim研读笔记七乱入篇之Monolog(下)

Monolog将您的日志发送到文件,Socket,收件箱,数据库和各种Web服务。  特殊的处理程序允许您构建高级日志记录策略。该库实现了可以在自己的库中提示的PSR-3接口,以保持最大的互操作性。 您也可以在您的应用程序中使用它,以确保您以后可以随时使用其他兼容的记录器。核心概念每个记录器实例都有一个通道(名称)和一系列处理程序。无论何时向记录器添加记录,它都会遍历处理器堆栈

2017-12-14 23:29:58 386

原创 Slim研读笔记七乱入篇之Monolog(中)

上节,我们简单介绍了异常和错误的区别和处理,这节我们一起来看处理日志的神器Monolog的具体实现。// 在容器中注册Monolog日志组件$container['logger'] = function($c) { // 生成通道为my_logger的记录器 $logger = new \Monolog\Logger('my_logger'); // 生成一个程序处理

2017-12-14 00:52:47 765 1

原创 Slim研读笔记七乱入篇之Monolog(上)

最近两天,我的同事小涛涛因开发需要,急需一个日志系统来记录日志。所以,从这节开始我们讲解Monolog,深入理解下Monolog的使用方式与实现原理。在开始研读之前,我们需要理清二个概念异常和错误。异常异常是Exception类的对象,在遇到无法修复的状况时抛出(例如,远程 API 无响应,数据库查询失败等),我们称这些状况为异常状况。Exception 对象与其他任何 PHP

2017-12-13 00:16:52 695

原创 Slim研读笔记六之应用主体(上)

之前柚子曾将\Slim\App称之为应用主体,应用主体可理解为贯穿应用程序执行生命周期最重要的那个类。这节,我们详细说明Slim应用主体的相关属性和方法。

2017-12-12 00:55:47 254

原创 docker实战一之Centos安装docker

具体安装步骤可参考官网:https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository1.安装依赖yum install -y yum-utils \ device-mapper-persistent-data \ lvm22.安装稳定版仓库

2017-12-10 15:32:41 189

原创 Slim研读笔记五之依赖注入容器(补)

上节,我们研读了Pimple容器的具体实现,这节我们来查看Slim默认容器的实现细节。简单浏览代码我们可知,Slim默认容器其实就是对Pimple容器进行的一层封装。前面我们已知Slim\Container完成了集成默认配置项,注册默认服务。现在,让我们接着看剩下的代码。  /** * 通过标识符查找容器的条目并将其返回 * Finds an entry of the

2017-12-09 01:06:38 364 2

原创 Slim研读笔记五之依赖注入容器(下)

上节我们了解Pimple容器实现ArrayAccess接口的几个必须方法,这节让我们学习PimpleContainer的其他几个方法。  /** * 标记可调用对象为工厂服务 * Marks a callable as being a factory service. * * @param callable $callable A service

2017-12-08 01:43:35 290

原创 Slim研读笔记五之依赖注入容器(中)

“一步一步走,心急吃不来热豆腐”    —某村口大爷这节我们继续读上节没读完的代码。上节我们说到,应用主体传入了一个属性container,属性值为容器实例。然后,我们又了解了该容器类继承自Pimple容器实现自ContainerInterface接口,且这个容器接口继承自PsrContainerInterface。所以,Slim默认容器是符合PSR7规范的。之后,我们又从Container类

2017-12-07 00:50:38 454 1

原创 Slim研读笔记五之依赖注入容器(上)

上节,我们迈出了前进的一小步—Composer研读,了解了Composer组件加载机制。从这节开始,我们学习Slim几大核心模块—依赖注入容器、路由、中间件等。依赖注入容器可以注入一些服务,主要用于解决组件之间的依赖关系。Slim支持Container-Interop接口实现的容器,我们可以使用Slim内置容器Pimple或其他第三方容器,例如PHP-DI。这里为了方便研读,我们使用S

2017-12-06 00:47:10 855 2

空空如也

空空如也

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

TA关注的人

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