2 风雅的远行者

尚未进行身份认证

我要认证

实践中的梦想家!!!

等级
TA的排名 5w+

JS发送跨域Post请求出现两次请求的解决办法

所有跨域的js在提交post请求的时候,如果服务端设置了可跨域访问public static function setCrossDomain() { header('Access-Control-Allow-Origin: *'); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); header('Access-Contr

2020-09-23 10:45:04

为什么说switch比if快

C++的switch语法在C++中,switch只接受整型常量作为分支的值:switch (expr) {case integral-constant : \\... break;case integral-constant : \\... break;default : \\... break;}这里有几个需要注意的细节:最好将default分支写出来,即使什么也不做 若分支没有写break语句,那么最好注释为什么这么做 若要在

2020-08-17 11:19:40

mysql的索引结构分析

最近重新看了下mysql索引的相关知识,总结一下,下边以mysql的innodb存储引擎为例,其他的存储引擎会有差别先简单说一下b+树,因为innodb的索引是以b+树的结构存储的,下边先上张图B+树有以下特点:每个节点中子节点的个数不能超过 N,也不能小于 N/2(不然会造成页分裂或页合并) 根节点的子节点个数可以不超过 m/2,这是一个例外 m 叉树只存储索引,并不真正存储数据,只有最后一行的叶子节点存储行数据。 通过链表将叶子节点串联在一起,这样可以方便按区间查找有的资料显示的

2020-07-04 22:45:49

GitLab 详细安装步骤

安装之前需要注意一下几点安装 gitlab 之前, 需要先在服务器上先安装好git服务, 可参照git 官网安装链接编译源码安装过程中, 可能会有错误提示,缺少对应的依赖, 只要根据提示安装上对应的依赖, 继续编译安装git即可 服务上不应该存在以下用户, 这些用户在安装gitlab 的过程中会自己创建, 如果已近存在会造成后面的, 编译失败, 或者是已经存在的用户被修改, 到时候出现问题会比较麻gitlab-www git gitlab-redis gitlab-redis gitl...

2020-07-01 21:03:19

yii接入apple第三方登录

app中要接入apple账号的第三方登录,这里只记录后端的东西,app中获取数据的过程是由前端小哥搞定的,后端的验证步骤一共三步检查appleId是否在本地注册了,已经注册过就自动登录,否则通过apple提供的接口进行签名的校验并在本地第三方表中注册appleId appleId与用户主表进行关联绑定 进行登录操作登录过程用到了两张表,一张是user,用户主表,里边存放的是用户的信息,如mobile、nickname等,我们的用户信息是通过mobile来进行唯一性判定的,另外一张表是user_ap

2020-06-21 15:25:38

yii事件用法

事件可以将自定义代码“注入”到现有代码中的特定执行点。 附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行。 例如,邮件程序对象成功发出消息时可触发messageSent事件。 如想追踪成功发送的消息,可以附加相应追踪代码到messageSent事件。上边是官方文档上对事件的解释,刚读的时候感觉有点绕口,读不懂上边说的是啥,其实事件就是php观察者模式的一种应用,我自己的理解就是当你的代码逻辑较多时候可以把你写的代码分成几块进行封装,然后在你需要调用的地方进行调用,这样搞的好...

2020-05-17 12:02:31

yii添加水印扩展及生成微信小程序码

最近在做生成海报功能,趁着印象深刻,赶紧记录一下一、给yii框架引入图片水印扩展可以直接在根目录的composer.json中加入或者直接执行 composer require --prefer-dist yiisoft/yii2-imagine要是嫌慢的话可以把composer切换过国内的阿里云镜像,链接如下https://www.cnblogs.com/wlphp/p/10...

2020-05-01 22:05:11

PHP实现API接口签名验证

项目需要向外部提供接口,供第三方网站调用,为了保证传输数据的安全性,给项目添加了签名认证的机制,过程大致如下:一、由我们平台给第三方颁发一个appId和一个appSecret,appId用来传输,appSecret用来生成签名二、第三方通过拼接appSecret生成签名sign,第三方将数据和appId一起传给我们平台三、我们平台接收到数据后根据接收到的数据用同样的算法生成签名,通过比...

2020-04-14 23:01:46

LNMP一键安装包安装的mysql远程连接不上的问题

正常的做法:  以root用户登录mysql:    grantallprivilegeson *.*to 创建的用户名@"%" identifiedby"密码";    flush privileges;  例如:         mysql>grantallprivilegeson *.*to zhangsan@"%" identifiedby...

2020-04-12 23:03:45

array_reduce 的理解

看 laravel 时遇到一个函数,琢磨了半天也没有理解,最后还是查了下资料才完全理解。这里还是再做下笔记加深下印象。php官方是这么写的: array_reduce(array $array, callable $callback, [mixed $initial = null ])什么意思呢,先举个简单点儿的栗子:<?phpfunction sum($car...

2020-03-15 13:17:54

PHP函数详解:call_user_func()使用方法

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:<?phpfunction nowamagic($a,$b) { echo $a; echo $b; } call_user_func('nowamagic', "111","222"); call_user_func('nowamagic', "333"...

2020-03-14 23:44:39

观察者模式(php实现)

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

2020-01-05 00:41:33

Mysql并发时经典常见的死锁原因及解决方法

1.mysql都有什么锁MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyL...

2019-12-28 22:49:26

记一次安装vargant运行环境时遇到的小问题

公司的项目是基于yaf框架开发,需要安装vargant和virtualbox环境才能运行程序,我的电脑系统是windows10,我是照着https://www.jianshu.com/p/db5b40b71d05这篇文章进行安装的1、安装vagrant https://vagrantup.com 进行下载安装,版本随意,我用的是版本是2.2.6,下载完后安装选下一步就行,傻瓜式的安装。安装完...

2019-12-24 22:46:24

PHP实现Redis分布式锁

锁在我们的日常开发可谓用得比较多。通常用来解决资源并发的问题。特别是多机集群情况下,资源争抢的问题。但是,很多新手在锁的处理上常常会犯一些问题。今天我们来深入理解锁。一、Redis 锁错误使用之一我曾经见过有的项目把查询结果存储到 Redis 当中时的伪代码如下:$redis = new \Redis('127.0.0.1', 6379);$cacheKey = 'query_...

2019-12-24 22:30:12

laravel 任务调度的使用

过去,你可能需要在服务器上为每一个调度任务去创建 Cron 入口。但是这种方式很快就会变得不友好,因为这些任务调度不在源代码中,并且你每次都需要通过 SSH 链接登录到服务器中才能增加 Cron 入口。Laravel 命令行调度器允许你在 Laravel 中对命令调度进行清晰流畅的定义。且使用这个任务调度器时,你只需要在你的服务器上创建单个 Cron 入口接口。你的任务调度在app/Con...

2019-11-27 14:59:23

产品防护:5种常见的短信验证码防刷策略

短信验证码作为重要的身份验证工具,因其操作简便、安全性高、时效性强等优点已被开发人员广泛使用。但因其获取便利、限制较少容易被不法分子利用进行短信轰炸,恶意刷掉大量短信费用,给公司或个人造成大量的金钱损失,造成这种情况原因主要是在产品实际设计过程中,有些产品人员因为对技术实现不太了解,防范意识薄弱,简单或直接忽略对短信验证码进行限制,这才造成短信接口恶意被不法分子利用。在介绍防刷策略前我们需要了...

2019-11-25 21:54:44

laravel模型关联(多对多)

多对多例如一个学生需要报多个兴趣班,同时每个兴趣班也会有多个学生,学生和兴趣班之间就是多对多的关系,要定义这种关联,需要三个数据库表:student,classes和classes_student。classes_student表存放学生所报兴趣班的信息,classes_student表的命名是由关联的两个模型按照字母顺序来的,并且包含了student_id和classes_id字...

2019-11-24 14:56:56

laravel模型关联(一对多)

一对多例如一个用户会有多条留言,有member会员表和message留言表,一对多关联的定义也是在 Eloquent 模型中写一个方法:<?phpnamespace App\Http\Models;use Illuminate\Database\Eloquent\Model;class Member extends Model{ /** * 获得用户...

2019-11-24 14:23:19

Git撤销修改&版本回退问题

一、撤销修改:情况1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file情况2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了情况1,第二步按情况1操作再执行git checkout -- file二、版本回退情况:已经提交了不合适的修改到版本...

2019-11-13 09:51:50

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。