自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (4)
  • 收藏
  • 关注

原创 PHP开发的注意点(持续更新)

背景知识这一篇博客会持续更新和维护,主要是记录一些平常工作上或者学习过程中遇到的一些注意事项,希望和大家学习与共勉。 1.关于json_encode和json_decode两个函数的注意点:1.json_decode():通常是将一个json字符串转成数组或者对象。例如: $json='{"name":"sanjin"}'; json_decode($json)...

2018-11-15 15:40:08 379

原创 算法学习之路----回文数

回文数(Palindrome-Number)这是一个比较简单的题目,题干如下:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:  输入: 121  输出: true示例 2:  输入: -121  输出: false解释: 从左向右读, 为...

2020-04-13 09:46:03 297

原创 算法学习之路----无重复字符的最长子串

无重复字符的最长子串这是 LeetCode 第三题,题干如下:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:  输入: “abcabcbb”  输出: 3  解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:  输入:...

2020-04-10 17:03:34 188

原创 算法学习之路----两数相加

两数相加(Add-Two-Numbers)这是 LeetCode 的第二题,题目挺常规的,题干如下:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都...

2020-04-09 10:08:52 286

原创 算法学习之路----两数之和

前言工作一段时间之后,最大的感觉就是算法好像没什么用,确实不会算法也能胜任平常的工作,但是总觉得缺了点什么,所以最近抽空复习了以前刷的 Leetcode,希望在这里找到一群志同道合的人:bowtie:。两数之和(Two Sum)这是 LeetCode 的第一题,总体来说是比较简单的,题干如下:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数...

2020-04-09 10:07:04 182

原创 听说你也想学composer----常见命令手册

上一篇文章我们聊了版本号以及它的一些注意事项,是不是有一丢丢小收获呢?这一篇我们来说说composer的一些常用的命令。全局参数全局参数虽然不是必要的,但是有时候可以帮助我们更好地了解并使用composer:# 查看composer的版本>composer -V# debug模式,输出详细的命令执行过程>composer-vvv#取消交互模式( --no-...

2020-03-02 23:54:51 354

原创 听说你也想学composer----版本号

上一篇文章简单地介绍了composer的安装,镜像切换,以及简单的使用方式。本文主要是和大家聊聊composer中的版本号。​版本号介绍版本号的设置建议遵循语义化版本的规范。简单来说就是: 主版本号(大版本):当你做了不兼容API的修改 次版本号(小版本):当你做了向下兼容的功能性新增 修订号(补丁版):当你做了向下兼容的问题修复 讲人话就是如果你的依...

2020-02-28 22:13:05 210

原创 听说你也想学composer----入门篇

​composer作为依赖管理工具,使用频率还是挺高的。特别是对于我这种比较懒的程序猿,有现成轮子的时候坚决不自己重复造轮子。它和其他编程语言的包管理工具差不多,比如java的maven,js的npm,使用起来也大相径庭。它主要有三部分构成:命令行工具,包仓库,代码库。包仓库就是我们常说的composer源,你也可以在上面发布自己的包,后续的实战我会具体介绍发布流程;代码...

2020-02-27 20:51:11 223

原创 浅谈JWT

背景知识:我们都知道http是无状态的,因此我们无法通过http来标识用户,而有些信息或者资源只能给特定的用户看,例如用户的信息等等,这时候就出现了会话技术。 会话:一个会话包含多个http请求,它的作用主要用于这些http请求之间数据的共享。前面两篇文章介绍了session技术和cookie技术。在上文中我也提到了Session的几个弊端,例如Session信息存储在服务器端,当信息量很...

2019-04-22 18:00:51 632

原创 浅谈Session

背景知识:我们都知道http是无状态的,因此我们无法通过http来标识用户,而有些信息或者资源只能给特定的用户看,例如用户的信息等等,这时候就出现了会话技术。 会话:一个会话包含多个http请求,它的作用主要用于这些http请求之间数据的共享。上一篇文章中我们简单介绍了Cookie这个客户端会话技术。今天我们来聊聊另一个会话技术Session。Session的原理:Session其实是...

2019-04-18 22:10:48 187

原创 浅谈Cookie

背景知识:我们都知道http是无状态的,因此我们无法通过http来标识用户,而有些信息或者资源只能给特定的用户看,例如用户的信息等等,这时候就出现了会话技术。 会话:一个会话包含多个http请求,它的作用主要用于这些http请求之间数据的共享。首先我们来聊聊Cookie。它是一种客户端会话技术(主要指浏览器)。服务器端通过Set-Cookie响应头设置cookie的值,客户端通过Cooki...

2019-04-17 21:41:59 175

原创 请求的转发和重定向的区别

背景知识:java算是一门彻底的面向对象的编程语言,对于它的学习即使我们在日常工作中可能不会使用到,但是可以帮助我们更好的理解和践行面向对象思想。 本文基于Tomcat8.5.39版本我们先来聊聊重定向吧,接触过web开发的小伙伴都知道重定向其实是页面跳转的一种方式,原理就是借助http响应头Location的值来完成的。重定向的原理:浏览器通过url访问服务器的资源,服务器接收到请求时,...

2019-04-10 15:41:49 275

原创 laravel常见错误(二):Sorry, your session has expired. Please refresh and try again.

背景知识:最近工作上使用了laravel框架,这个常见错误系列会记录我在学习和使用laravel时遇到的一些问题的场景和解决方法。 laravel文档:传送门错误场景:在web.php中添加了一个路由,试图测试"any",在测试get请求时正常,但是测试post,put,delete却出现了如题的错误。Route::any("any", function(){ return ...

2019-03-01 16:23:29 11186

原创 谈谈goroutine

背景知识:关于线程和进程的关系:简单理解进程是用来管理资源的,而线程是利用cpu执行代码(指令),一个应用程序至少有一个进程,一个进程至少有一个线程。线程是不具备资源的,但是它可以访问所属进程的资源。 关于协程和线程的主要区别:线程是抢占式的,任何时刻都有可能被操作系统切换,它是没有控制权的,换句话说一个操作可能执行到一半被中断,cpu去执行其他线程。协程是非抢占式的,由自己主动交出控制权。...

2019-01-24 14:47:43 165

原创 算法(一):用数组结构实现固定长度的栈和队列

背景知识:栈的特点就是先进后出,队列的特点就是先进先出。栈的一个重要应用场景就是倒序某一个东西,例如字符串等等。1.使用数组结构实现固定长度的栈:思路比较简单,可以在内部维护一个索引值,通过这个索引值与长度的关系来保证栈结构的长度固定。<?php//栈类class Stack { //栈的长度 private $length; //数组结构,用来保存栈...

2018-12-25 11:52:18 486

原创 laravel常见错误(一):The page has expired due to inactivity. Please refresh and try again.

背景知识:最近工作上使用了laravel框架,这个常见错误系列会记录我在学习和使用laravel时遇到的一些问题的场景和解决方法。 laravel文档:传送门​​​​​​​错误场景:我在web.php文件新建了一个路由,希望前端调用这个api新建一条追评:在使用postman进行测试时,会报如下一个错误:解放方法:查了文档发现,写在web.php文件中的路由都会经过一个叫做we...

2018-12-14 09:44:26 3881

原创 排序算法之时间复杂度为O(N^2)的算法

背景知识:排序算法算是比较基础的算法了,但是在面试过程中偶尔也会被问到,虽然很多语言都内置了排序函数,例如php的sort函数等等,但是还是有必要聊聊排序算法,这篇文章中将介绍时间复杂度为O(N^2)的几个排序算法。 本文基于从小到大排序讲解。 1.冒泡排序:前一个和后一个比较,如果前一个比后一个大则交换位置,继续向下比较。如果前一个比后一个小则不交换位置,继续向下比较。//冒泡...

2018-12-01 19:56:54 2615

原创 服务器(Centos7)安装和使用git

背景知识:git是一款代码版本管理软件。关于git的使用可以查看文档: git教程 在服务器上安装git的意义在于可以避免通过ftp连接服务器并拖拽上传程序代码的方式,有了git你可以通过简单的命令:git pull 将程序代码直接拉取到服务器上。1.通过yum安装git:yum -y install git#参数-y表示自动选y,全自动#不加参数-y,在安装过程中会让你选择y/...

2018-11-29 19:25:20 513

原创 浅谈设计模式之原型模式

背景知识:我们常说的设计模式其实是一种代码规范,遵从设计模式所编写的代码并不是最高效的,但是是可维护的。 设计模式主要有三类:创建型设计模式,结构型设计模式以及行为型设计模式。 设计模式遵循的几个原则:开闭原则,里氏代换原则,依赖倒转原则,单一职责原则,合成复用原则,接口隔离原则,最小知识原则。本文主要讲述原型模式,原型模式和我们在上一篇中讲的单例模式相似,都是关于对象的。只是单例模式的...

2018-11-28 11:19:08 158

原创 浅谈设计模式之单例模式

背景知识:我们常说的设计模式其实是一种代码规范,遵从设计模式所编写的代码并不是最高效的,但是是可维护的。 设计模式主要有三类:创建型设计模式,结构型设计模式以及行为型设计模式。 设计模式遵循的几个原则:开闭原则,里氏代换原则,依赖倒转原则,单一职责原则,合成复用原则,接口隔离原则,最小知识原则。本文主要讲述单例模式,什么是单例模式呢?保证一个类只有一个实例,并提供一个访问实例的全局访问点...

2018-11-27 11:16:05 129

原创 yii2的认证体系

背景知识:我们常说的用户相关的安全操作主要就三块:认证,授权,加密。 本文主要介绍基于yii2的user的组件来实现用户的认证。 用户认证的流程:根据用户名查询数据库的记录,然后将用户输入的密码加密之后和数据库的记录进行对比,如果相等则登录成功,登录成功之后,将用户的信息存入到session中。以上就是一个简单的认证流程,当然其中你可以加入记住我等功能。由于yii2框架给我们封装好了以上的...

2018-11-24 22:26:07 485

原创 码云(gitee)初体验

背景知识:码云和github都是一款代码托管平台,它们各自有什么优点这里就不再阐述了,具体怎么选择也因人而异吧。 本文主要介绍如何在码云中进行代码托管。1.首先介绍码云的使用方法。进入官网,注册并登陆账号。第一步操作如下:2.之后就是填写一些项目的基本信息,创建项目:3.创建好项目之后,我们先来安装一个软件:git,选择对应的版本进行安装。我这边电脑是windows的,因此...

2018-11-20 12:59:59 2092

原创 Mysql双主热备架构搭建

背景知识:在mysql主从架构篇我详细介绍了主从架构的搭建,传送门。主从架构的原理就是主节点将所有的修改事件记录到binlog中,然后从节点将主节点binlog中的事件拷贝到自己的中继日志(relay log)中,从节点再重做中继日志将修改反映成自己的数据。 主从架构数据是单向的,即数据从主节点流向从节点。但是双主架构则不是,它的数据流向是双向的,因为两个mysql服务器互为主从。 有人可...

2018-11-16 21:57:38 3121

原创 无刷新上传图片的几种方式

背景知识:无刷新上传图片主要还是为了在提交表单之前进行图片的预览。用户体验相对于提交表单跳转显示图片的方式总还是要好一些的。 本文主要介绍三种无刷新上传图片的方式 1.使用iframe子页面的形式达到无刷新上传图片的功能。首先设置一个隐藏的iframe元素并设置其name属性为upload,接着在form表单上设置一个target属性,值为upload,需要和iframe的name属性...

2018-11-16 11:42:24 1746 1

原创 mysql主从架构搭建

背景知识:主从这个架构可以实现数据备份,数据在多个服务器上分布等等,当然最主要的优点是可以实现负载均衡,将写操作交给主节点,读操作交给从节点。 mysql官网有很多版本,例如Enterprise(企业版需要付费,当然可以试用30天),Community(社区版,开源但是官方不提供技术支持),当然我们常用的也是社区版,本文是基于社区版的。 mysql的安装也有源码安装和二进制免安装等等方法,...

2018-11-10 22:52:57 2029

原创 Yii2中使用基于redis的缓存

背景知识:缓存顾名思义就是将数据保存起来,下次要使用时直接获取即可。程序中用的最多的就是将数据库的数据进行缓存从而减少查询数据库的次数,减轻服务器压力。 yii2框架默认使用的是文件缓存,本文将介绍redis缓存的使用,因此需要安装yii的redis扩展,传送门1.首先进行配置,使我们的项目以redis作为缓存: [ 'components' => [ ...

2018-11-09 22:17:50 2682

原创 基于Yii2的redis邮件队列

背景知识:传统的邮件发送模式:将用户的邮件发送给第三方邮件服务器(例如网易邮箱等等),邮箱服务器再将邮件发送给指定地址,本地的web服务器则同步等待第三方邮件服务器的发送结果。从上述流程也可以看出,如果网络比较差的话,用户的操作会被阻塞直到第三方服务器返回结果。 基于redis的邮件队列:将用户的邮件存入redis队列中并直接将结果返回给用户告诉用户邮件已经发送,同时服务器端离线监听内存队列...

2018-11-08 00:27:11 1370

原创 Yii2集成Elasticsearch(二)

背景知识:全文搜索可以简单地分为两类,一种是顺序扫描,即我们常见的使用 like %keyword% 方式,扫描整张数据表,在每一条记录中查找;另一种就是索引扫描。elasticsearch就是后者。 索引扫描分为两部分:创建索引和搜索索引。创建索引的主要步骤是:对原数据进行分词处理(去掉标点和一些无意义的词等等),将得到的词元交给语言处理组件(例如将复数变为单数,将过去式变为一般式等等),...

2018-11-04 13:17:28 3167

原创 Yii2集成Elasticsearch(一)

背景知识:全文搜索可以简单地分为两类,一种是顺序扫描,即我们常见的使用 like %keyword% 方式,扫描整张数据表,在每一条记录中查找;另一种就是索引扫描。elasticsearch就是后者。 索引扫描分为两部分:创建索引和搜索索引。创建索引的主要步骤是:对原数据进行分词处理(去掉标点和一些无意义的词等等),将得到的词元交给语言处理组件(例如将复数变为单数,将过去式变为一般式等等),...

2018-10-24 23:16:09 3414

原创 安装PHP的Redis扩展

背景知识:redis是基于内存的数据库,主要的使用场景是作为缓存。 redis是单线程模型1.首先进入redis官网选择相应的客户端,本文是基于PHP的,因此选择PHP客户端:2.在PHP的客户端列表选择phpredis,至于其他的第三方,感兴趣的小伙伴可以自己尝试:3.执行如下命令将项目拉到本地:git clone git@github.com:phpredis/p...

2018-10-24 00:43:52 277

原创 Yii2集成支付宝

背景知识:本文主要以电脑网站支付为主讲解支付宝的应用,官方文档 事先准备好官方的PHP例子,下载地址:传送门1.首先在vendor下新建一个alipay目录,将下载好的sdk拖入该目录中:2.在配置文件中配置支付相关信息:<?phpreturn [ 'alipay'=>[ //应用的ID 'app_id'=>"",...

2018-10-17 23:45:25 1175

原创 Yii 2.0集成七牛云

背景知识:七牛云就是我们常说的图床。什么是图床?可以简单理解为是一种存储图片资源的服务器。 本文基于Yii2简单介绍七牛云的使用1.首先在七牛云平台创建账户:传送门2.登陆账户之后,点击头部菜单管理控制台,进入之后,点击左侧菜单存储对象:3.点击新建存储空间,填写响应的信息,如下仅做参考:4.创建好应用之后,接着我们要生成密钥:点击右上角的个人面板,再点击密钥管理,...

2018-10-17 21:21:24 1566 1

原创 最大堆(二)

背景知识:堆是一棵完全二叉树,什么是完全二叉树?就是除了最后一层节点之外,其他层的节点个数必须是最大值,并且最后一层的节点必须都集中在左侧。 堆分为最大堆和最小堆。最大堆就是父节点大于等于子节点,从而导致根节点是最大值。最小堆就是父节点小于等于子节点,从而导致根节点是最小值。本文基于最大堆讲解,并且提供python代码实现。1.在第一节中我们详细讲解了什么是最大堆,以及基于列表这种数据结构...

2018-10-11 22:45:29 171

原创 最大堆(一)

背景知识:堆是一棵完全二叉树,什么是完全二叉树?就是除了最后一层节点之外,其他层的节点个数必须是最大值,并且最后一层的节点必须都集中在左侧。 堆分为最大堆和最小堆。最大堆就是父节点大于等于子节点,从而导致根节点是最大值。最小堆就是父节点小于等于子节点,从而导致根节点是最小值。本文基于最大堆讲解,并且提供python代码实现。1.背景知识中提到,堆是一棵完全二叉树,并且最大堆的特点是父节点大...

2018-10-11 00:28:51 6163

原创 关于mysql最左前缀原则

背景知识:mysql中可以使用explain关键字来查看sql语句的执行计划。 最左前缀原则主要使用在联合索引中 数据库版本Mysql5.5.531.首先准备如下测试数据表CREATE TABLE `student` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFA...

2018-09-25 15:59:00 28345 8

原创 常见分布式算法的介绍

背景知识:哈希算法主要应用于缓存分布式系统。 分布式是指将一个整体拆成多个部分,由多个服务器来执行完成。注意与集群的区别,集群是将多个相同的整体部署在多个服务器上独立执行。 本文主要以key-value式缓存为例子讲解1.节点取余:如果你的缓存服务器有3台,编号为0,1,2,节点取余的方式就是将key做哈希运算并将返回值与3(服务器个数)取余,根据值将value分配到相应编号的服务器中。...

2018-09-18 21:52:24 17626 1

原创 redis集群的原生命令搭建

背景知识:生产环境中集群的搭建一般不会使用原生命令,而是使用redis官方提供的ruby工具 原生命令的安装只是帮助你更好的理解redis集群这个架构 一般集群都是搭建在不同的主机上,案例为了演示就直接在单机上部署,用端口区分 本篇文章的测试环境是阿里云主机CentOS Linux release 7.3.16111.配置开启redis(其实和开启普通redis节点一样,只是多增加了几...

2018-09-17 22:07:59 684

原创 关于mysql的事务四个特性

背景知识:mysql事务支持的引擎是InnoDB mysql事务的四个特性(ACID),分别是原子性,一致性,隔离性,持久性1.原子性:事务开启(start transaction)到事务结束(commit / rollback)之间的语句要么全部执行成功,要么全部执行失败,不存在一些语句执行成功,一些语句执行失败。2.一致性:例如小明有2000元存款,小王有1000元存款,总数是30...

2018-09-17 16:32:39 331

原创 关于mysql的参数autocommit

背景知识:mysql事务支持的引擎是InnoDB 默认情况下autocommit的值为11.首先准备一张innodb引擎的测试表:CREATE TABLE `test` ( `id` int(11) NOT NULL) ENGINE=InnoDB;INSERT INTO `test` VALUES ('1');INSERT INTO `test` VALUES ('3');...

2018-09-17 16:02:47 35799 6

原创 PHP对接阿里大鱼实现短信的发送

背景知识:手机验证码这个功能几乎哪里都可以看到,那么PHP如何实现手机验证码的发送呢?下面介绍PHP对接阿里大鱼实现短信验证码发送。1.首先登陆阿里云,点击控制台:2.选择短信服务:3.由于阿里云的短信服务,需要签名和模板,因此需要先申请:4.申请好了签名和模板之后,别忘了往账户里充钱哦。5.下载SDK,SDK下载地址,我这边选择PHP的轻量版SDK。下载之后解压...

2018-09-13 15:06:54 3502 3

Selenium+ PhantomJS小案例

基于selenium和phantomjs爬取胜率王足球预测的信息 基于selenium和phantomjs爬取胜率王足球预测的信息

2018-11-05

新版知乎模拟登录

新版知乎的模拟登录实现,只是实现了登录,并没有爬取具体的数据

2018-04-08

伯乐在线最新文件简单爬取

算是scrapy一个入门案例,主要是理清scrapy框架整个流程

2018-04-08

scrapy简单案例--爬取慕课网所有课程信息

这是一个简单的scrapy入门案例,scrapy是1.5python是3

2018-04-04

空空如也

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

TA关注的人

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