自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 收藏
  • 关注

转载 Linux下nfs实现跨机器的文件共享

目前的项目开发过程中都是采用分布式,在上传文件的时候,文件不一定会在同一台机器中,因此就需要跨机器共享文件,在这里就简单的采用nfs实现跨机器的文件共享。1、安装nfs和rpcbind(在centOS6之前是portmap) 检查自己的电脑是否已经默认安装了nfs和rpcbind:[root@unsion2 ~]# rpm -aq | grep nfsnfs-utils-1.2.3-54.el6.x86_64nfs4-acl-tools-0.3.3-6.el6.x86_64nf...

2021-01-12 19:31:21 51

原创 php开启zookeeper扩展

安装php zookeeper的扩展 在 http://pecl.php.net/package/zookeeper中找,要注意php的版本一、wget http://pecl.php.net/get/zookeeper-0.6.2.tgz二、tar -zxvf zookeeper-0.6.2.tgz三、cd zookeeper-0.6.2四、/etc/php73/bin/phpize五、./configure --with-libzookeeper-dir=/usr/local/zookeep.

2020-12-31 18:11:04 60

转载 Zookeeper C客户端库编译

简介本文总结了Zookeeper C客户端库在Centos 7上的编译,使用的Zookeeper版本为3.4.13。安装工具安装cppunit和ant工具:yum install -y cppunit-develyum install -y ant编译下载release版本的源码:wget https://github.com/apache/zookeeper/archive/release-3.4.13.tar.gz进入代码顶级目录,运行:ant clean

2020-12-31 17:59:57 125

原创 安装php7.3

之前的php是5.6的版本,现在要安装swoole扩展,php7以下版本不支持,所以需要在安装一个php7.3的版本,安装成功后服务器上会有两个版本的php同时存在,原理就是之前的php继续监听9000端口,新安装的php监听9001端口,nginx或者apache在接收到http请求后根据不同的域名转发到不同的端口进行处理,从而达到多版本php共存的目的安装php7.3一、下载php源码,下了好几次都中断了,无奈从网页上下了,然后把安装包上传到服务器上wget https://www.php.net/

2020-12-31 15:00:19 59

原创 php对接kafka

生产者<?phpclass KafkaProducer{ public static $brokerList = '192.168.10.105:9092'; public static function send($message, $topic) { self::producer($message, $topic); } public static function producer($message, $topic = 'po

2020-12-17 17:44:18 85

原创 kafka配置文件分析

在kafka/config/目录下面有3个配置文件:producer.propertiesconsumer.propertiesserver.properties(1).producer.properties:生产端的配置文件#指定kafka节点列表,用于获取metadata,不必全部指定#需要kafka的服务器地址,来获取每一个topic的分片数等元数据信息。metadata.broker.list=kafka01:9092,kafka02:9092,kafka03:9092 #生产

2020-12-16 14:00:38 52 1

原创 linux下安装kafka

安装条件:确保zookeeper已经安装成功。1.下载kafka进入Apache官网 http://kafka.apache.org/downloads.html也可以直接用以下命令下载:wget http://apache.01link.hk/kafka/2.0.0/kafka_2.11-2.0.0.tgz2.解压下载的kafkacd /home/wwwroot/project/huanjingtar -xzf kafka_2.11-2.0.0.tgzmv kafka_2.11...

2020-12-16 13:56:31 51

原创 kafka基本概念

kafka 有几个重要的概念需要先了解一下broker:可以理解为kafka 所在的服务器zookeeper:分布式服务框架在kafka 中的作用主要负责保存topic ,partition 元数据,和对broker 的监控及治理,以及partition 的leader 选举(partition 可以有多个副本,但是只有一个处于工作状态,副本只是负责同步数据,当leader partition 死掉了,会把起作一个副本的partition 升级为leader)topic:主题,表示消息属于那种主

2020-12-16 13:53:29 25

原创 php-fpm配置项参数解析

配置文件是php-fpm.conf,其中参数如下:pid = run/php-fpm.pid #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启error_log = log/php-fpm.log #错误日志,默认在安装目录中的var/log/php-fpm.loglog_level = notice #错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信

2020-12-05 12:01:01 92

原创 linux下apache更新为nginx

我司之前用的是lamp的环境,现在要改成lnmp,也就是要把apache替换成nginx,其中php是之前安装好的,不用重新安装,下边记录一下安装nginx一、去负载均衡服务器上把涉及到该台服务器的服务先注释掉,单台服务器的话就跳过这一步二、查看apache的安装路径 find / -name httpd ,我这里是为了把nginx也安装到相同的目录下三、停掉apache,输入命令service httpd stop (保险起见apache没有卸载和删除,只是不让它运行就可以了)四、停.

2020-12-05 11:50:35 77

转载 对Swoole、Workerman和php自带的socket的理解

为什么php自带的socket不怎么听说,基本都是用swoole,workerman去实现?1、PHP的socket扩展是一套socket api,仅此而已。swoole,用C实现,它的socket是C 库的socket,更加底层可控。workerman,如题主所说,使用PHP实现,那它的socket就是用PHP socket扩展啊。只是对其进行工程化开发,成了一个框架。2、swoole 框架和 swoole 扩展是不一样的。swoole 框架也可以脱离 swoole 扩展来..

2020-10-22 15:57:58 108

转载 linux安装zookeeper及使用

一、安装条件想要安装zookeeper,必须先在linux中安装好jdk。安装步骤见:https://www.cnblogs.com/expiator/p/9987351.html二、下载并解压zookeeper压缩包1. 先进入/usr/local/目录,也可以是其他的目录:[root@localhost /]# cd /usr/local2. zookeeper安装包可以在官网下载。也可以在后面这个地址下载 http://mirror.bit.edu.cn/apache/zook.

2020-10-11 22:25:53 193

原创 linux下安装java环境

背景:公司的项目后台语言分为java和php,其中java用的微服务架构是dubbo,php和java并没有打通,就是各写各的逻辑,php也没有用什么架构,现在需要把php接入dubbo,从而使php可以直接调用java的接口,也是java可以直接调用php提供的接口,最近主要研究了一下这个,过程中遇到的坑比较多,记录一下dubbo的官网在这里,点我,之前没有了解过的可以先看一下,知道个大概,环境准备:我测试用的虚拟机是vagrant,安装虚拟机和linux环境的过程这里不说了,之前写过一篇文章

2020-10-11 21:45:23 120

转载 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 775

转载 为什么说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 132

原创 mysql的索引结构分析

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

2020-07-04 22:45:49 75

转载 GitLab 详细安装步骤

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

2020-07-01 21:03:19 16006

原创 yii接入apple第三方登录

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

2020-06-21 15:25:38 172

原创 yii事件用法

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

2020-05-17 12:02:31 128

原创 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 143

原创 PHP实现API接口签名验证

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

2020-04-14 23:01:46 483

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

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

2020-04-12 23:03:45 151

转载 array_reduce 的理解

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

2020-03-15 13:17:54 186 1

转载 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 123

原创 观察者模式(php实现)

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

2020-01-05 00:41:33 96

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

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

2019-12-28 22:49:26 54

原创 记一次安装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 245

转载 PHP实现Redis分布式锁

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

2019-12-24 22:30:12 86

原创 laravel 任务调度的使用

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

2019-11-27 14:59:23 322

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

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

2019-11-25 21:54:44 248

原创 laravel模型关联(多对多)

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

2019-11-24 14:56:56 76

原创 laravel模型关联(一对多)

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

2019-11-24 14:23:19 348

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

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

2019-11-13 09:52:25 43

原创 Laravel event 事件的使用

laravel 事件监听使用大概分为以下步骤:① 注册事件和事件监听器② 生成事件文件和事件监听器文件③ 定义事件④ 定义事件监听器⑤ 分发事件 (调用事件)一般基础的事件操作就是分为上面 5 个步骤,在 5.8 中文手册上面也有详细说明,但是可能对一些刚接触事件的新手来说可能有些地方不太容易理解甚至会有点疑惑,比如说我我就是这样的菜鸟。所以记录下自己一个小小的理解,希望对其他人有帮助...

2019-09-08 14:32:52 869

转载 laravel 一次对多个字段进行 increment 或者decrement 操作

第一种方法:函数上是不支持的, 一定要一起操作的话,可以利用第三个参数曲线救国 :increment('detail_count', 1, ['num'=>DB::raw('num + 1')]) ;实测通过!看一下laravel的increment方法:D:\phpStudy\WWW\xxx\vendor\laravel\framework\src\Illuminate...

2019-08-01 10:04:26 917

原创 Laravel修改验证提示信息

1.覆盖提示信息:打开resource/lang/en/validation.php注释掉英文提示信息 $ sudo vim resource/lang/en/validation.php 将下面的提示信息覆盖英文提示信息 <?php return [ /*|------------------------------------------------...

2019-07-30 13:44:59 608

转载 Git创建本地分支并关联远程分支

创建本地分支git branch 分支名切换到本地分支git checkout 分支名创建本地分支并切换到该分支git checkout -b 分支名提交本地分支到远程仓库git push origin 本地分支名将新建的本地分支与远程分支关联git branch --set-upstream-to=origin/远程分支名 本地分支名 使用 git branch -...

2019-07-26 16:29:07 2228

原创 git clone远程仓库账户密码错误后不再弹窗

问题:初次克隆git项目时,弹框提示输入账户和密码,由于操作失误导致账密输入错误,git提示错误但不再弹窗让再次输入账号密码。解决办法:由于电脑凭证把第一次输入的账户密码记录了下来,导致后期一直错误;在计算机右键点击属性 ->控制面板->用户账户->凭据管理器里, 选择windows凭证, 你会找到相应的git凭据,进行删除或编辑!...

2019-07-26 10:16:25 223

转载 Laravel/Lumen 分组求和问题 where groupBy sum

Laravel框架提供了多个快捷查询方法,Select、Order By、Group By、And Having,今天遇到了一个SQL查询分组求和的问题,使用多方法查询时,各种报错,踩了些坑,分享出来。在Laravel中使用分组求和,如果直接使用Laravel各数据库操作方法,应该会得出来如下代码式:DB::table('table_a') ->where('a','=',...

2019-07-22 17:14:14 1755

转载 Ajax请求导出Excel的问题【ajax不能下载文件】

最近要给后台添加操作日志导出的功能,后台已经生成.xls文件,本来想只要ajax请求下就完事儿,想象总是美好的,可不管我怎么ajax,想了各种可能原因也无法解决。问题描述前端发送ajax【get/post】请求,后端生成excel文件,最后用response输出文件流,没有报错也没有文件下载提示。最后网上搜索了一波,遇到过这个问题的还是不少,问题出在ajax本身,解决方法和原因也都...

2019-06-28 19:00:49 819

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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