- 博客(52)
- 收藏
- 关注
原创 ThinkPHP一对一关联模型的运用(ORM)
一、序言最近在写ThinkPHP关联模型的时候一些用法总忘,我就想通过写博客的方式复习和整理下一些用法。具体版本:topthink/framework:6.1.4topthink/think-orm:2.0.61二、实例应用1、一对一关联1.1、我先设计了两张表,分别为用户表(user),用户扩展表(user_extend)1.2、分别给两个表建立模型<?php...
2024-07-25 16:25:00
384
原创 【设计模式】装饰模式
设计模式【设计模式】工厂方法模式【设计模式】抽象工厂模式【设计模式】单例模式【设计模式】策略模式【设计模式】观察者模式【设计模式】装饰模式一、介绍装饰模式是一种结构型设计模式,它允许你通过将对象和对象装饰器分离来扩展对象的功能。装饰模式是一种动态地添加功能的方法,它允许你在运行时根据需要添加或删除对象的功能。举个例子:很多游戏中的人物都是可以携带装备的,比如剑,盾,盔甲,戒...
2024-07-11 11:19:00
421
原创 【设计模式】观察者模式
设计模式【设计模式】工厂方法模式【设计模式】抽象工厂模式【设计模式】单例模式【设计模式】策略模式【设计模式】观察者模式一、介绍观察者模式是一种行为设计模式,当一个对象的状态发生改变时,依赖(观察)它的对象会接收到通知,并进行自动的更新操作。举例:某公司发布了一款新的手机,性能很强大,许多人都想买,但是该公司又没宣布售卖时间。想买的人为了第一时间就拥有这台手机,就必须每天到官网...
2024-06-06 09:22:00
760
原创 【转】十年技术进阶路,让我明白了三件要事(8000字长文)
前言 【本文于2022-5-10日首发于ITPUB微信公众号平台】 该篇文章是我第一次跟DTCC合作编写的,整篇文章大概8000字,可能花您15分钟阅读。我和DTCC的韩楠老师,共花7了天时间,每天把该文章打磨到晚上12点,在这非常感谢编辑老师的负责与付出。 这篇也是我分享里为数不多“进阶”与“成长经历”的文章之一。被别人送到嘴边的食物永远是最香的,但是咱们还是得学会主动去"如何找...
2024-05-14 11:21:00
416
原创 【转】一线开发大头兵对于工作的感悟分享
合集 - Java后端(11)1.【解决方案】如何使用 Http API 代替 OpenFeign 进行远程服务调用01-222.【深度思考】一线开发大头兵对于工作的感悟分享01-293.【进阶篇】Java 实际开发中积累的几个小技巧(一)02-044.【设计模式】分享 Java 开发中常用到的设计模式(一)2023-08-095.【解决方案】Java 互联网项目如何防止集合堆内存溢...
2024-05-14 11:16:00
253
原创 php + redis 实现秒杀
一、概述秒杀这个问题在很多面试的时候都会提到,会有各个方面的调优,配置等等,本文在这里举个简单的例子来演示下秒杀的过程,供大家参考发散思维。二、准备介绍thinkPHP6框架redis6.0php7.4redis操作包predisapache-jmeter-5.6三、代码实现秒杀controller层的简易代码:<?php/** * Created by Ph...
2024-05-14 10:05:00
257
原创 【设计模式】策略模式
一、介绍策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。这里列举两个例子来说明下策略模式的使用场景:(1)根据会员等级来计算折扣力度。不同等级拥有不同的折扣力度,这样就可以根据策略模式去灵活的计算,就算之后又新增了几个等级的会员,也不用修改原代码,只需新增对应会员的具体策略就可以了。(2)电子商务平台的支付,可以根据用户的选...
2024-05-06 21:47:00
404
原创 【设计模式】单例模式
一、介绍单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。二、单例模式优缺点优点:仅在首次请求单例对象时对其进行初始化你可以保证一个类只有一个实例获得了一个指向该实例的全局访问节点缺点违反了单一职责原则该模式在多线程环境下需要进行特殊处理, 避免多个线程多次创建单例对象单例的客户端代码单元测试可能会比较困难, 因为许多测试框架...
2024-04-03 10:19:00
145
原创 Supervisor 安装与使用
一、Supervisor 介绍Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客...
2024-04-02 09:51:00
1720
原创 【设计模式】抽象工厂模式
抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。抽象工厂定义了用于创建不同产品的接口,但将实际的创建工作留给了具体工厂类。每个工厂类型都对应一个特定的产品变体。在本文提到的吉利和比亚迪都是汽车品牌。假设他们都可以自主生产汽车配件,那在组装汽车的时候只要固定在一个厂里调取配件,就不用担心用到其他厂商的配件,保证了整车都是用的一个品牌零部件。其中吉利和比亚迪就相当于两个具体的工厂,工厂可以生产很多的产品,如轮胎、车架、发动机等等。
2024-03-28 10:45:17
750
原创 【设计模式】工厂方法模式
工厂方法模式是一种创建型的设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。其实就把产品对象的实际创建工作放到具体的子类工厂当中实现。通常我们把被创建的对象称之为【产品】创建【产品】的对象称为【工厂】当产品比较固定且数量少的情况下,我们只需要一个工厂类就可以,这个模式下我们称之为【简单工厂】
2024-03-15 09:56:31
851
原创 Swoft - Bean
一、Bean在 Swoft 中,一个 Bean 就是一个类的一个对象实例。 它(Bean)是通过容器来存放和管理整个生命周期的。最直观的感受就是省去了频繁new的过程,节省了资源的开销。二、Bean的使用1、创建Bean在【gateway/app/Http/Controller】下新建一个名为【TestController.php】的文件,文件内容如下。注释:“gateway”为我的项...
2024-01-11 09:25:00
1452
原创 ThinkPHP6 事件的简单应用
一、序章ThinkPHP6的手册中关于【事件】章节的介绍都是直接文字说明,给出创建的类文件,并没有一个好的示例来进行补充说明。对于刚接触【事件】的同学在阅读理解上增加了一点点困难,本文就在此结合示例简单叙述下。二、事件事件的使用分两种方式,一个是不使用事件类,另一个使用事件类。1、不使用事件类(1)使用 php think 创建一个监听类php think make:listene...
2023-12-20 16:09:00
1904
原创 建立两台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
662
原创 Docker下搭建Redis集群并实现动态扩/缩容
一、Redis集群方案的简单介绍Redis集群的方案一般分为三种:哈希取余分区一致性哈希算法分区哈希槽分区(本文介绍的就是这种)1、哈希取余分区:优点:简单粗暴,只要提前预估好数据量,然后规划好节点,例如:3台、30台、300台节点,就能保证未来一段时间内的数据支撑。缺点:事先规划好节点,进行扩容或者缩容就比较麻烦了额,不管扩缩,每次数据变动导致节点有变动,映射关系需要重...
2023-08-24 21:41:00
604
原创 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
172
原创 Jenkins安装和配置
1、安装环境介绍(1)Linux:# 使用命令【cat /proc/version】可以查看Linux内核版本。Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu ...
2023-07-28 11:47:00
60
原创 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
152
原创 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
3462
原创 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
599
原创 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
403
原创 Redis持久化
Redis为了内存数据的安全考虑,会把内存中的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边。数据保存到硬盘的过程就称为“持久化”。Redis的持久化分为两种:一、快照方式(RDB)持久化优点:RDB是一个非常紧凑的文件,它保存了某个时间点得数据集,非常适用于数据集的备份,比如你可以在每个小时报保存一下过去24小时内的数据,同时每天...
2022-12-27 15:39:00
31
原创 一周[前/后],一月[前/后],一年[前/后],本[周/月]第一天和最后一天,上[周/月]第一天和最后一天,下[周/月]第一天和最后一天...
<?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
26
原创 php-fpm进程过多,导致CPU过高
今天发现服务器的php-fpm进程突然过多,导致CPU过高,其他项目的访问受到影响。我通过以下三个基本步骤定位到了问题,发现了其原因。基本步骤:先用top命令查看进程情况,找出cpu最高的进程pid。使用【 ll /proc/pid[变量pid]/fd 】通过pid找到是哪些文件操作的进程,定位问题所在。strace -p pid 来跟踪进程信息。...
2022-12-06 16:43:00
323
原创 获取一段时间内,以月/季度为单位,第N天在各个月/季度是几几年几月几号
/** * 获取一段时间内(可跨年),以季度为单位,第N天在各个季度是几月几号 * @param $sTime 时间戳 * @param $eTime 时间戳 * @param $number 第N天 * @return array * @author fengzi * @da...
2022-11-28 09:55:00
40
原创 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
63
原创 Redis队列优先级的实现方案
场景通常使用 list 来实现队列操作,所有的任务统一都是先进先出的原则,如果想优先处理某个任务就不太合适,这个时候就需要让队列有优先级的概念,实现方式有以下两种方式:单一列表实现 队列正常的操作是左进(lpush)右出(rpop),为了先处理高优先级任务,在遇到高级别任务时可以直接插队,直接放入队列头部(rpush),这样从队列头部(右侧、rpop)获取任务时取到的就是高优先级...
2022-09-30 14:57:00
228
原创 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
49
原创 Git 常用的基础命令
#克隆项目到本地。url:项目的git地址;local_dir_name:克隆项目到本地的目录名称,如果不写就默认是git项目中的目录名称git clone <url> <local_dir_name>#获取远程项目的最近代码git pull#添加内容(修改/新增)到git索引。命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,则`gi...
2022-09-02 16:42:00
34
原创 MySql集群架构之MHA
1、MHA介绍 MHA(Master High Availability)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA还...
2022-08-29 10:39:00
92
原创 php本地上传文件类
/** * Class UploadFile * @author fengzi */class UploadFile{ public $error = array(); //上传前的error信息 public $info = array(); //上传过程中的错误信息 protected $uploadType; //标识是单文件还是...
2022-08-24 16:46:00
29
原创 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
32
原创 因IPv4和IPv6协议不同而引发的第三方接口调用失效的问题
记录一次因IPv4和IPv6协议不同而引发的第三方接口调用失效的问题,仅供大家参考!!!背景介绍公司有一个微信小程序,我做后端的,负责给小程序提供数据接口。后来因为一系列原因小程序要对接一个中控(类似数据中台的概念),所有的人员和组织架构等信息数据要从中控获取。我按照第三方(中控)给的接口文档开始对接接口。一开始调用接口都挺顺利的,直到我们公司因为网络问题进行一次网络修复后问题就出现了。...
2022-07-25 15:28:00
63
原创 linux压缩文件并排除指定目录
今天要在linux上打包一个项目另作他用,但是项目图片都是放本地服务器的,整个项目打包好后有2G多下载十分费时。项目中的图片我们可以不要,所以压缩的时候要排除图片目录。具体命令如下:// 参数说明// package_name.tar.gz:自定义压缩包的名称// --exclude:排除参数,参数后面跟的是排除目录或文件的地址。// exclude参数如果是目录,则目录后面不...
2022-07-18 11:55:00
90
原创 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
51
原创 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
27
原创 MySql数据库主从复制一致性的校验方案
主从复制往往会存在主从数据库数据不一致的问题,这会导致与客户端显示的数据不一样。那么本文章主要就是对主从复制的一致性问题给出一些操作方案。一、准备工作使用虚拟机搭建了一主多从的主从结构(主从搭建参考我之前的文章“搭建MySql主从复制”)主(192.168.119.149),数据库帐号slave从1(192.168.119.150),数据库帐号slave从2(192.168.119....
2022-06-23 15:28:00
85
原创 搭建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
22
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人