自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MacOS使用PhpWebStudy搭建PHP开发环境

mac上的PHP开发环境搭建方式有很多, brew, docker, mamp等, 这里使用最近新出的工具PhpWebStudy来搭建mac上的php开发环境。PHP, PHP模块管理, 版本切换, 服务开启关闭, 配置修改, 日志查看, 扩展管理。Nginx, Nginx模块管理, 版本切换, 服务开启关闭, 配置修改, 日志查看。Mysql, Mysql模块管理, 版本切换, 服务开启关闭, 配置修改, 日志查看。Setup, 设置管理, 左侧模块选择显示, 各软件自定义路径。点击PHP模块, 点击。

2025-02-13 14:36:51 958

原创 linux配置jenkins环境

如果无法使用ssh-copy-id命令,可以手动将公钥内容复制到目标主机的授权文件中。打开本地主机上.ssh目录下的id_rsa.pub文件,将其中的内容复制到目标主机上的~/.ssh/authorized_keys文件中。其中,username是目标主机上的用户名,remote_host是目标主机的IP地址或域名。执行该命令后,系统会要求输入目标主机的密码,然后将公钥添加到目标主机上的授权文件中。该命令将生成一对RSA密钥,默认情况下保存在用户的主目录下的.ssh目录中。然后重启SSH服务,使配置生效。

2024-08-26 14:27:52 783 1

原创 js宏任务与微任务

微任务种类:Promise.then()、Promise.catch()、Async/Await、Object.observe。js明明是单线程的,为什么输出顺序不是1、2、3、4、5、6、7、8呢,这里需要分析一下js的异步任务了。宏任务种类:script、setTimeout、setInterval、事件绑定的回调函数。2、顺序执行同一级的宏任务,子级(宏任务产生)的异步任务会推入异步任务队列,下次循环执行。宏任务->同步任务->微任务->浏览器渲染->宏任务->同步任务->微任务...

2024-08-09 10:52:47 228

原创 promise、async和await

1、promise需要两个回调函数,成功(resolve)和失败(reject),传参时不一样非要用resolve和reject,也可以用a,和b代替,只要返回也修改成a()和b()即可。因为某些业务逻辑,需要将一些异步请求进行同步化处理,如A的返回值是B的入参,B的返回值是C的入参,会出现层层嵌套的情况,也就是回调地狱,逻辑部分看的人头晕,如下。先用promise将每个异步方法体包起来,然后用promise的then方法进行调用,避免层层嵌套的问题,如下。3、希望捕获异常可以通过try catch实现。

2024-08-08 17:54:13 261

原创 苹果开发者账号续费开票

20年之后开通开发者账号都是订阅获取的,苹果说负责订阅获取的是海外公司所以没有发票,现在只有电子收据。20年之前的是网页开通的,是由北京的公司负责所以是有发票的。

2024-07-12 14:29:01 6402

原创 uniapp上架到appstore遇到的问题

a、审核时只能有密码登陆,可以通过接口响应参数将其他登陆方式暂时隐藏,审核成功后放开即可。1、appstore在美国审核,需要把服务器接口的国外访问权限放开。3、使用照相机和相册功能时需要写清楚描述文案。b、需要有账号注销功能。

2024-07-08 15:44:33 463 1

原创 SSH配置免密登录

SSH配置免密登录

2023-11-21 10:23:46 1370

原创 打不开github网页解决方法

github加速

2023-11-18 14:15:06 534

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

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

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

原创 安装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 1915

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

原创 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 282 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 312

原创 kafka基本概念

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

2020-12-16 13:53:29 151

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

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

转载 对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 628

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

原创 linux下安装java环境

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

2020-10-11 21:45:23 272

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

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

原创 mysql的索引结构分析

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

2020-07-04 22:45:49 365

转载 GitLab 详细安装步骤

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

2020-07-01 21:03:19 58428

原创 yii接入apple第三方登录

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

2020-06-21 15:25:38 643

原创 yii事件用法

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

2020-05-17 12:02:31 593

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

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

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

2020-04-14 23:01:46 1938

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

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

2020-04-12 23:03:45 375

转载 array_reduce 的理解

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

2020-03-15 13:17:54 550 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 954

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

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

2020-01-05 00:41:33 318

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

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

2019-12-28 22:49:26 147

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

转载 PHP实现Redis分布式锁

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

2019-12-24 22:30:12 239

原创 laravel 任务调度的使用

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

2019-11-27 14:59:23 831

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

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

2019-11-25 21:54:44 1021

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

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

2019-11-24 14:56:56 921

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

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

2019-11-24 14:23:19 1624

空空如也

空空如也

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

TA关注的人

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