自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疯子丶pony的博客

不积跬步,无以至千里;不积小流,无以成江海。

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

原创 【设计模式】单例模式

一、介绍单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。二、单例模式优缺点优点:仅在首次请求单例对象时对其进行初始化你可以保证一个类只有一个实例获得了一个指向该实例的全局访问节点缺点违反了单一职责原则该模式在多线程环境下需要进行特殊处理, 避免多个线程多次创建单例对象单例的客户端代码单元测试可能会比较困难, 因为许多测试框架...

2024-04-03 10:19:00 122

原创 Supervisor 安装与使用

一、Supervisor 介绍Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客...

2024-04-02 09:51:00 344

原创 【设计模式】抽象工厂模式

抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。抽象工厂定义了用于创建不同产品的接口,但将实际的创建工作留给了具体工厂类。每个工厂类型都对应一个特定的产品变体。在本文提到的吉利和比亚迪都是汽车品牌。假设他们都可以自主生产汽车配件,那在组装汽车的时候只要固定在一个厂里调取配件,就不用担心用到其他厂商的配件,保证了整车都是用的一个品牌零部件。其中吉利和比亚迪就相当于两个具体的工厂,工厂可以生产很多的产品,如轮胎、车架、发动机等等。

2024-03-28 10:45:17 736

原创 【设计模式】工厂方法模式

工厂方法模式是一种创建型的设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。其实就把产品对象的实际创建工作放到具体的子类工厂当中实现。通常我们把被创建的对象称之为【产品】创建【产品】的对象称为【工厂】当产品比较固定且数量少的情况下,我们只需要一个工厂类就可以,这个模式下我们称之为【简单工厂】

2024-03-15 09:56:31 830

原创 Swoft - Bean

一、Bean在 Swoft 中,一个 Bean 就是一个类的一个对象实例。 它(Bean)是通过容器来存放和管理整个生命周期的。最直观的感受就是省去了频繁new的过程,节省了资源的开销。二、Bean的使用1、创建Bean在【gateway/app/Http/Controller】下新建一个名为【TestController.php】的文件,文件内容如下。注释:“gateway”为我的项...

2024-01-11 09:25:00 1121

原创 ThinkPHP6 事件的简单应用

一、序章ThinkPHP6的手册中关于【事件】章节的介绍都是直接文字说明,给出创建的类文件,并没有一个好的示例来进行补充说明。对于刚接触【事件】的同学在阅读理解上增加了一点点困难,本文就在此结合示例简单叙述下。二、事件事件的使用分两种方式,一个是不使用事件类,另一个使用事件类。1、不使用事件类(1)使用 php think 创建一个监听类php think make:listene...

2023-12-20 16:09:00 925

原创 建立两台linux主机的ssh信任,实现ssh免密登录远程服务器

1、介绍假设我们现在有AB两个服务器,要求A能够远程登录到B服务。CentOS版本:CentOS Linux release 7.6.1810 (Core)2、实操1、先在A服务上输入以下命令生成秘钥,如下图所示ssh-keygen -t rsa2、复制A服务器上的公钥【id_rsa.pub】到B服务器的【.ssh】目录下#找到第一步中生成的秘钥cd /root/.ssh...

2023-11-27 17:52:00 524

原创 将博客搬至CSDN

需要把博客园中的文章同步到CSDN中,搬家地址:https://www.cnblogs.com/mklblog

2023-08-25 09:55:00 55

原创 Docker下搭建Redis集群并实现动态扩/缩容

一、Redis集群方案的简单介绍Redis集群的方案一般分为三种:哈希取余分区一致性哈希算法分区哈希槽分区(本文介绍的就是这种)1、哈希取余分区:优点:简单粗暴,只要提前预估好数据量,然后规划好节点,例如:3台、30台、300台节点,就能保证未来一段时间内的数据支撑。缺点:事先规划好节点,进行扩容或者缩容就比较麻烦了额,不管扩缩,每次数据变动导致节点有变动,映射关系需要重...

2023-08-24 21:41:00 450

原创 Docker下搭建MySql主从复制

在Docker环境下搭建MySql主从复制,阅读此文章默认读者具备基础的Docker命令操作。一、环境1、Docker版本:Docker version 24.0.5, build ced09962、MySql:Server version: 5.7.36 MySQL Community Server (GPL)3、Centos:CentOS Linux release 7.9.2009...

2023-08-09 22:20:00 146

原创 Jenkins安装和配置

1、安装环境介绍(1)Linux:# 使用命令【cat /proc/version】可以查看Linux内核版本。Linux version 3.10.0-957.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu ...

2023-07-28 11:47:00 46

原创 beanstalkd轻量级消息队列的安装

1、版本介绍CentOS:CentOS Linux release 7.9.2009 (Core)beanstalkd:beanstalkd 1.102、安装(1)先安装epel-release软件仓库sudo yum install epel-release(2)再安装beanstalkdsudo yum install beanstalkd3、beanstalkd...

2023-06-09 11:27:00 135

原创 Linux cp命令直接覆盖不提示的方法

今天在做项目的时候需要在linux上拷贝A项目中upload目录下所有的资源到B项目中的uoload目录下,所以我就打算使用【cp】命令拷贝过去,拷贝的时候我加了【-f】参数了,但还是一个个的询问我是否覆盖目标文件。所以今天就记录下这个问题。1、使用了【-f】还是询问的情况:cp -r -f A/upload/* B/upload2、不询问的方式:# 第一种方法 \cp...

2023-05-25 10:59:00 2738

原创 PhpStorm设置FTP功能

1、版本介绍本文操作针对PhpStorm 2020.1版本2、【ctrl + alt + s】打开设置,选择“Build,Execution,Deployment”3、选择“Deployment”,创建FTP连接。4、配置FTP的IP、帐号、密码等信息5、配置“Mappings”标签中的内容6、以上配置好后点击“OK”按钮就配置完成了。要上传文件的时候按【shift + ct...

2023-05-22 16:26:00 538

原创 Thinkphp6 自定义命令创建类文件

以创建控制器为例1、先通过 think 命令创建一个make文件,效果如下图:php think make:command make/MyController2、修改上面创建的文件【MyController.php】<?phpdeclare (strict_types = 1);namespace app\command\make;use think\consol...

2023-04-12 15:22:00 292

原创 Redis持久化

Redis为了内存数据的安全考虑,会把内存中的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。数据保存到硬盘的过程就称为“持久化”。Redis的持久化分为两种:一、快照方式(RDB)持久化优点:RDB是一个非常紧凑的文件,它保存了某个时间点得数据集,非常适用于数据集的备份,比如你可以在每个小时报保存一下过去24小时内的数据,同时每天...

2022-12-27 15:39:00 19

原创 一周[前/后],一月[前/后],一年[前/后],本[周/月]第一天和最后一天,上[周/月]第一天和最后一天,下[周/月]第一天和最后一天...

<?php//一周前(时间戳)$t = strtotime('-1 week');//一周后(时间戳)$t = strtotime('+1 week');//一月前(时间戳)$t = strtotime('-1 month');//一月后(时间戳)$t = strtotime('+1 month');//一年前(时间戳)$t = strtotime('-1 ...

2022-12-16 11:31:00 18

原创 php-fpm进程过多,导致CPU过高

今天发现服务器的php-fpm进程突然过多,导致CPU过高,其他项目的访问受到影响。我通过以下三个基本步骤定位到了问题,发现了其原因。基本步骤:先用top命令查看进程情况,找出cpu最高的进程pid。使用【 ll /proc/pid[变量pid]/fd 】通过pid找到是哪些文件操作的进程,定位问题所在。strace -p pid 来跟踪进程信息。...

2022-12-06 16:43:00 297

原创 获取一段时间内,以月/季度为单位,第N天在各个月/季度是几几年几月几号

/** * 获取一段时间内(可跨年),以季度为单位,第N天在各个季度是几月几号 * @param $sTime 时间戳 * @param $eTime 时间戳 * @param $number 第N天 * @return array * @author fengzi * @da...

2022-11-28 09:55:00 25

原创 Docker安装好后服务启动不了

安装安装方式参考地址:https://www.docker.org.cn/book/install/install-docker-on-rhel-29.html问题安装好后启动不了服务器。查看状态如下图:通过【vim /var/log/messages】下查看报错信息如下图通过报错信息然后去修改防火墙的配置就可以了【参考地址:http://events.jianshu.io/p/...

2022-10-20 11:08:00 49

原创 Redis队列优先级的实现方案

场景通常使用 list 来实现队列操作,所有的任务统一都是先进先出的原则,如果想优先处理某个任务就不太合适,这个时候就需要让队列有优先级的概念,实现方式有以下两种方式:单一列表实现  队列正常的操作是左进(lpush)右出(rpop),为了先处理高优先级任务,在遇到高级别任务时可以直接插队,直接放入队列头部(rpush),这样从队列头部(右侧、rpop)获取任务时取到的就是高优先级...

2022-09-30 14:57:00 133

原创 MySql负载均衡集群

1、环境介绍使用虚拟机完成一主两从(主从搭建参考我之前的文章“搭建MySql主从复制”)主(192.168.119.149)从1(192.168.119.150)  安装keepalived安装haproxy从2(192.168.119.151)安装 keepalived安装 haproxyMySql版本:8.0.21CentOS Linux release 7.9...

2022-09-05 09:49:00 34

原创 Git 常用的基础命令

#克隆项目到本地。url:项目的git地址;local_dir_name:克隆项目到本地的目录名称,如果不写就默认是git项目中的目录名称git clone <url> <local_dir_name>#获取远程项目的最近代码git pull#添加内容(修改/新增)到git索引。命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,则`gi...

2022-09-02 16:42:00 23

原创 MySql集群架构之MHA

1、MHA介绍  MHA(Master High Availability)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA还...

2022-08-29 10:39:00 66

原创 php本地上传文件类

/** * Class UploadFile * @author fengzi */class UploadFile{ public $error = array(); //上传前的error信息 public $info = array(); //上传过程中的错误信息 protected $uploadType; //标识是单文件还是...

2022-08-24 16:46:00 16

原创 Linux安装Redis服务

一、安装1、进入linux系统,选择下载的目录,输入命令“wget http://download.redis.io/releases/redis-5.0.5.tar.gz”2、解压下载的压缩包“tar xzf redis-5.0.5.tar.gz”3、cd进入解压后的文件夹进行编译,命令“make”4、安装Redis,有图中内容就算安装成功了"make PREFIX=/serv...

2022-08-15 16:54:00 20

原创 因IPv4和IPv6协议不同而引发的第三方接口调用失效的问题

记录一次因IPv4和IPv6协议不同而引发的第三方接口调用失效的问题,仅供大家参考!!!背景介绍公司有一个微信小程序,我做后端的,负责给小程序提供数据接口。后来因为一系列原因小程序要对接一个中控(类似数据中台的概念),所有的人员和组织架构等信息数据要从中控获取。我按照第三方(中控)给的接口文档开始对接接口。一开始调用接口都挺顺利的,直到我们公司因为网络问题进行一次网络修复后问题就出现了。...

2022-07-25 15:28:00 49

原创 linux压缩文件并排除指定目录

今天要在linux上打包一个项目另作他用,但是项目图片都是放本地服务器的,整个项目打包好后有2G多下载十分费时。项目中的图片我们可以不要,所以压缩的时候要排除图片目录。具体命令如下:// 参数说明// package_name.tar.gz:自定义压缩包的名称// --exclude:排除参数,参数后面跟的是排除目录或文件的地址。// exclude参数如果是目录,则目录后面不...

2022-07-18 11:55:00 73

原创 nginx 负载均衡

准备虚拟机one:192.168.30.135:80虚拟机two:192.168.30.128:80两个虚拟机装的nginx都是:nginx version: nginx/1.18.0官网参考地址: http://nginx.org/配置代理在各虚拟机上的conf.d文件夹下建立nginx配置文件,名字分别为:“xuniji_one.conf”、“xuniji_two.conf...

2022-07-14 18:00:00 12

原创 MySQL常用命令

以下命令已经在MySQL8.0.12版本中实际测试过//查看MySQL Innodb的服务器状态信息show status like 'innodb_%';//显示数据库的查询,更新,添加,删除的次数show global status where Variable_name = 'com_select';show global status where Variable_name...

2022-07-13 16:13:00 17

原创 PHP四则运算类(支持加、减、乘、除、小中括号)

PHP四则运算类(支持加、减、乘、除、小中括号)

2022-07-12 15:26:00 66

原创 MySql数据库主从复制一致性的校验方案

主从复制往往会存在主从数据库数据不一致的问题,这会导致与客户端显示的数据不一样。那么本文章主要就是对主从复制的一致性问题给出一些操作方案。一、准备工作使用虚拟机搭建了一主多从的主从结构(主从搭建参考我之前的文章“搭建MySql主从复制”)主(192.168.119.149),数据库帐号slave从1(192.168.119.150),数据库帐号slave从2(192.168.119....

2022-06-23 15:28:00 65

原创 搭建MySql主从复制

一、环境介绍服务器都是用虚拟机代替主:192.168.119.149从:192.168.119.150mysql版本:8.0.21同步的数据库名称:php二、主服务器配置1.创建一个用于主从复制的用户,此用户在从服务器会用到。create user `slave`@`%` identified by "root"; 2.给slave用户赋予mysql权限#*.* 表面这...

2022-06-21 17:20:00 14

原创 Git 本地创建分支并提交远程分支

1.创建本地分支(分支名称以dev举例)git branch 分支名称例如:git branch dev2.切换到本地分支git checkout 分支名称例如:从master切换到dev分支:git checkoutdev3.提交分支数据到远程服务器(1)如果当前处于dev分支中,完成后不用执行第4步  直接使用 git push --set-upstream origin ...

2022-06-21 11:36:00 41

原创 linux的内置crontab(定时任务)的简单介绍

编写定时任务的基本命令:#查看当前用户的crontabcrontab -l;#编辑crontab任务crontab -e;#删除crontab任务crontab -r定时任务的基本格式 :*     *     *     *     *分    时    日    月    周    系统命令/脚本minute  hour   day   mont...

2022-05-26 15:45:00 11

原创 ShardingSphere-Proxy 安装和同库分表

安装与配置:版本说明:mysql:8.0.21ShardingSphere-Proxy:5.1.1官网下载 ShardingSphere-Proxy,地址:https://shardingsphere.apache.org/document/current/cn/downloads/解压安装,安装目录自定义。本文路径:/wwwroot/service由于解压后的目录名...

2022-05-19 17:28:00 28

原创 在Linux下开启指定端口号

1、查看某个端口是否已开启,如果提示no表示未开启#8888表示要查询的端口号firewall-cmd --query-port=8888/tcp2、永久开启端口号,提示 success 表示成功#8888为想开启的端口号firewall-cmd --add-port=8888/tcp --permanent3、开启端口后要重载配置firewall-cmd --reload...

2022-05-17 17:10:00 12

原创 Mysql备份方法

1. mysqldump(Navicat工具导出导入) 【安装mysql后自带的】: mysqldump备份与恢复: 例句:导出master_slave数据库为master_slave.sql文件到/home目录,-h为IP地址,-u为数据库的账号,-p为数据库密码./mysqldump -h192.168.63.1 -ustarsky -p master_...

2022-05-12 15:33:00 12

原创 VMware workstation虚拟机联网的方法

注意:我的虚拟机所安装的系统是Centos方法一方法一:第一步:先设置VMware的编辑——虚拟网络编辑器,启用VMnet8,NAT模式,如下图所示。其实就是VMware默认的设置,无须更改,如果不小心改了,点击还原默认设置。第二步:虚拟机设置——网络适配器,设置为NAT模式,如下图所示。其实也是默认的,不需要更改。第三步:编辑linux系统的网络配置文件。在/etc/sysconfig/network-scripts文件夹下,编辑网卡配置文件ifcfg-**,每种系统都不一样,依自己的情

2022-05-10 10:22:35 1616 1

原创 php编写日历类

<?php/** * 日历类 * Class Calendar * @author fengzi * @date 2022-05-05 15:42 */class Calendar{ protected $table = ''; protected $year; protected $month; protected $day; ...

2022-05-09 17:34:00 14

空空如也

空空如也

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

TA关注的人

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