自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吉京伟

Stay Hungry,Stay Foolish.

  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

原创 单体架构和微服务架构的分析

单体架构1.什么是单体架构?一个归档包(例如war包)包含所有功能的应用程序,我们通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。2.单体架构优点1.架构简单2.开发、测试、部署方便3.单体架构缺点1.复杂性高2.部署慢,频率低 扩展能力受限。举例:成本计算属于CPU处理密集的模块,内容属于I/O密集模块,需要更大的内存和带宽,无法针对指定模块做业务扩展3.阻止技术创新,框架无法修改3.单体架构结构图微服务架构1.什么是微服务微服务"架构"是一种将一个

2022-04-16 16:54:10 1481

原创 大型网站架构原理理解

1.大型网站架构分析网站在大流量的访问时通过负载均衡将流量分发到各地区、不同性能的服务器上进行处理,有效解决大流量的并发的请求。架构图: 原理  客户端访问时,通过CDN和DNS加速访问得到回源信息,通过信息将会访问到服务器最外层的路由器和交换机(router),router将访问的流量负载到不同的lvs机器上去,lvs是基于4层的负载均衡器,它不会解析包的内容,但会根据TCP协议修改包的头信息然后转发给接入层(nginx),lvs内部是可以配置一些负载均衡的策略。当流量

2022-02-09 00:03:32 1034

原创 限流算法与CDN原理

一.限流算法目前整理了三种方案:1.令牌桶算法 2.漏桶算法 3.计数器1.令牌桶算法优点:1.控制请求的速度2.适合面对突发流量逻辑图:2.漏桶算法逻辑图:3.计数器单位时间计数器计数即可,在应用程序中写的多二.提升单服务利器 —— CDN1.普通域名访问1.gethostbyname ("www.pearadmin.com")2.gethostbynam{生成查询DNS服务器的消息(域名、class、记录类型)...

2022-02-06 23:08:48 1099

原创 PHP XLSXWriter 复杂表头多表格导出

效果图如下:实现代码:public function actionExport(){ require_once Yii::getAlias('@vendor') . '/PHP_XLSXWriter/vendor/autoload.php'; $writer = new \XLSXWriter(); $filename = "统计表.xlsx"; header('Content-disposition: attachment; filen

2021-12-26 21:46:50 776

原创 高并发解决方案之“Nginx限流”

本文将分4个步骤讲解:1.api压力测试2.查看api响应性能3.nginx限流进行优化4.查看优化结果1 api压力测试1.1 安装压测工具yum -y install httpd-tools # 安装压测工具ab -v # 查看是否安装成功1.2 开始api测试ab -n1000 -c100 http://pear.tsaihoo.com/test.php # 100的并发请求,总共请求1000次2 查看api响应性能注:Requests per secon

2021-08-08 21:57:39 1854

原创 Yii2 Layui 企业级通用开发平台

Pear Admin Yii2 ???? 项目简介Pear Admin Yii2是基于 Yii2 + Layui 实现的企业级高效开发平台,采用经典的RBAC权限管理模式。是一款轻量级、易上手、开发速度快的开发平台。???? 项目预览Pear Admin Yii2???? 项目结构backend assets 资源发布文件 config

2021-06-21 23:36:07 830 6

原创 with()和joinWith()在hasMany中的用法

1.先创建order和customer表2.Customer模型代码段<?php public function getOrder(){ return $this->hasMany(Order::className(),['user_id'=>'id']); // user_id为Order模型字段 }3.with()<?php $data = Customer::find()->with(['order'=&gt

2021-02-23 21:14:12 1064

原创 xm-select 二级联动 layui

效果图:Html:<div class="layui-inline"> <label class="layui-form-label">选择部门</label> <div class="layui-input-inline"> <select class="form-control" id="dpt1_update" lay-filter="dpt1_update" name="dpt1"> .

2021-01-21 19:03:13 2472 3

原创 workerman实现的web在线聊天

项目介绍项目是基于Workerman的GatewayWorker框架,GatewayWorker是用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端等,此项目就是基于GatewayWorker实现的在线即时聊天系统。系统功能1.文字发送2.QQ表情发送3.图片发送4.聊天记录持久化5.长连接下即时展示对方在线状态6.一对一聊天7.消息群发(代码中注释,可自行调试)8.消息读取状态以及未读条数显示。截图1地址链接截图2地址链接截图3地..

2020-12-18 01:06:57 1531 10

原创 SOAP+WSDL 实现API的简单数据架构

API 的数据架构分为两种:方式 1: SOAP+WSDLSOAP 基于 XML的协议,它使应用程序通过 HTTP 或 HTTPS 来交换信息。WSDL(Web Services Description Language,网络服务描述语言)是一门基于 XML 的语言, 用于描述 Web Services 以及如何对它们进行访问。 SOAP+WSDL 使用 XML 语言构建数据架构和封装数据,是传统的 Web Services 的实现方式。方式 2: REST+JSON/Plain XML

2020-12-07 22:24:53 771 2

原创 Js调用Paypal接口支付

1.Paypal前段Html代码<!DOCTYPE html><head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://www.paypalobjects.com/api/che

2020-10-15 23:15:40 3024 2

原创 dnmp运行时404报错

M1芯片(Arm CPU) 环境中搭建PHP+NGINX+MYSQL的利器,docker容器管理当前使用的软件,可以简单安装软件和扩展。

2023-09-07 21:39:48 432

原创 Ribbon的介绍和使用(二)

1.前言本文基于上一节内容继续讲解,上一节内容传送门:Ribbon的介绍和使用(一)2.Ribbon 支持Nacos权重Ribbon内置的负载均衡规则是不支持Nacos权重的,这里我们写个扩展规则实现权重。

2022-06-01 23:14:24 308 1

原创 Ribbon的介绍和使用(一)

1.关于RibbonNetflix开源的客户端侧负载均衡器,也可以理解成是一个用于选择微服务的小组件。2.架构的演进3.三板斧整合Ribbon实现负载均衡3.1加依赖不需要加,nacos-discover包含了netflix-ribbon,如图:3.2写注解为restTemplate整合Ribbonpackage com.ding.contentcenter;import org.mybatis.spring.annotation.MapperScan;import org.s

2022-05-19 22:46:14 567

原创 手写一个客户端负载均衡器

1.前提准备本文是在使用nacos的基础上进行的简单讲解,如果nacos了解的不多的朋友可以先了解下nacos的基本用法,传送地址:【Nacos的介绍和使用】2.关于服务端负载均衡单体架构模式下,一个应用会用多个实例,通过nginx做反向代理,将请求过来的数据通过负载均衡算法确定好指定实例进行转发,而nginx是部署是在服务器端的,这种方式就叫做服务端的负载均衡3.关于客户端负载均衡内容中心通过discoveryClient获取到用户中心的所有实例,我们通过手写一个负载均衡的规则确定好请求哪个

2022-05-11 02:08:02 438

原创 Spring Cloud Alibaba的介绍和简单使用说明

1.什么是Spring Cloud Alibaba1.Spring Cloud的子项目,Spring Cloud是快速构建分布式系统的工具集,即提供了一系列开发分布式应用的工具。2.致力于提供微服务开发的一站式解决方案。包含微服务开发的必备组件基于Spring Cloud,符合Spring Cloud标准阿里的微服务解决方案2.Spring Cloud主要功能参考:https://spring.io/projects/spring-cloud功能翻译选择Dist

2022-05-03 20:07:03 517

原创 Lombok的用法和简单说明

1.Lombok作用简化代码编写,提升开发效率,项目主页:http://projectlombok.org2.Meven整合Lombok在pom.xml添加依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> <scope>pr

2022-05-01 23:55:40 486

原创 Nacos的介绍和使用

1.什么是NacosNacos是一个服务发现组件也是一个配置服务器,用于解决服务器之前相互发现的问题以及管理微服务的配置。2.Nacos架构图3.搭建Nacos3.1 Nacos下载地址https://github.com/alibaba/nacos3.2 Nacos启动https://nacos.io/zh-cn/docs/quick-start.html3.2 Nacos本地访问http://localhost:8848/nacos4. Nacos 用法介绍前的准备内容

2022-04-20 02:24:28 2279 1

原创 php分布式秒杀项目

PHP Seckill是使用php_apcu扩展、Lua、Redis实现的简单分布式秒杀项目🔗 1.项目地址https://gitee.com/imbee/php-seckill🔍️ 2.业务分析1.抢购秒杀时本地服务器进行库存验证2.本地和远端同时进行库存扣减3.扣减成功后将用户ID和产品ID写入MQ4.异步创建订单5.告知用户抢购成功⚡️ 3.项目架构📜 4.项目结构api.php 业务接口base.php 基类🔧 5.php_apcu扩展安装window安装1.

2022-03-24 23:34:20 228

原创 Yii2实现Excel大量数据快速导出

效果图:下载插件:PHP_XLSXWriterPHP_XLSXWriter是一个小而强悍的Excel读写插件,它并没有PHPExcel功能丰富,很多高级操作比如冻结表头,并不具备,但是它导出速度非常快,非常适合于数据量特别大,报表格式不是很复杂的导出需求。1.TestController.php /** * 用户数据导出 * @return String * */ public function actionExport(){ if(Yii:

2021-11-18 22:48:50 1243

原创 Pear Admin Yii2 1.1.0发布,一款快速上手的企业级高效开发平台

1.项目介绍Pear Admin Yii2是基于开源框架Yii2开发的,采用MVC开发模式,具有扩展性高,安全性高,响应速度快等特点,是一款企业级的高效开发平台。2.内容更新[新增] Yii2-Queue实现轻量级消息队列[新增] 登录拖动滑块验证[修复] 前后端状态码匹配异常[修复] RBAC模块Permission分配Child Permission异常[删除] GatewayWorker前后端应用对于用户状态的监听3.安装1.git clone https://gitee.co

2021-09-02 22:28:35 615

原创 PHP使用链表实现两数相加

实例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.代码:/** * Definition for a singly-linked list. * class ListNode { * public $val = 0; * public $next = null; * function __construct($val = 0, $next = null) { * $thi

2021-08-03 23:55:13 165

原创 杨辉三角 【动态规划法】

在杨辉三角中,每个数是它左上方和右上方的数的和输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]算法1class Solution { /** * @param Integer $numRows * @return Integer[][] */ function generate($numRows) { $res = []; for($i=0;$i<

2021-07-16 22:19:22 373

原创 重 塑 矩 阵

给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。算法一class Solution { /** * @param Integer[][] $mat

2021-07-16 21:45:36 127

原创 yii2-queue消息队列的使用

1.安装扩展composer require “yiisoft/yii2-queue”composer require “yiisoft/yii2-redis”下载后vendor/yiisoft目录有yii2-queue和yii2-redis文件2.配置 (redis左右驱动)return [ 'bootstrap' => ['queue'], 'components' => [ 'queue' => [ 'class'=>\yii

2021-07-15 22:57:06 741 2

原创 买卖股票的最佳时机是什么时候?动态规划

在某一天选择买入一只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 :输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。思路:假设第1天买入,利润为0,第2天的价格减去第1天的价格当大于0时为利润记作$profits,当第二天的价格比第1天的价格低时,买

2021-07-14 22:20:13 140

原创 计算两个数组的交集 哈希算法 + 双指针法

给定两个数组,编写一个函数来计算它们的交集示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]哈希算法实现class Solution { /** * @param Integer[] $nums1 * @param Integer[] $nums2 * @return Integer[]

2021-07-08 00:01:25 143 2

原创 PHP算法之归并排序、堆排序、快速排序、插入排序、选择排序、冒泡排序

常数阶:O(1) 线性阶:O(n) 平(立)方阶:O(n^2)/O(n^3) 特殊平方阶:O(n^2/2+n/2)->O(n^2) 对数阶:O(log2n) while($n>=1){ $n=$n/2 } nlog2n阶,指数阶

2021-04-25 00:10:01 254

原创 PHP闭包函数的4种使用方式总结

PHP实现闭包函数时主要依靠匿名函数,在闭包函数中使用外界变量时使需用USE关键字,USE引用过来的变量是一个副本,若在闭包函数中修改变量的值只需在变量前添加取址符&即可。具体demo如下:1.匿名函数实现闭包<?php// 申明一个匿名函数$b = function($p){ return pow($p,2);};function a($p){ echo $p('2');}// 匿名函数作为参数传递a($b);// 匿名函数直接传递a(fun

2021-04-12 00:16:49 662

原创 Autocomplete的常见用法 Jquery-ui

简介:Autocomplete的功能是根据用户输入值进行搜索和过滤,效果可参考图1和图2。在实现此功能前需要jquery-ui.js和jquery-ui.css文件,点这里可下载。1.1 用法一,效果图:图(1)1.2 代码如下:<script src="..js/jquery-ui.js"></script><style src="..css/jquery-ui.css"></style><input type="tex.

2021-03-26 00:14:19 330

原创 ZPL数据转PDF文件 PHP

在我们请求一些接口获取PDF面单时返回的是ZPL数据,ZPL数据可以用于打印机直接打印,也可做成PDF文件进行保存,代码如下:<?php$zpl = "zpl data";$curl = curl_init();curl_setopt($curl, CURLOPT_URL, "http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/");curl_setopt($curl, CURLOPT_POST, TRUE);curl_se

2021-03-25 21:11:22 1950

原创 PHP递归实现无限分类

asdf

2021-03-05 21:28:29 84

原创 RSA(非对称加密算法)在接口中的使用

1.简介RSA是一种非对称签名算法。非对称加密算法需要两个密钥:签名密钥(私钥)与验签密钥(公钥),它们的数据是不一样,但需要一对使用。私钥用于签名,公钥用于验签,以此保证数据在交互过程中不被伪造和篡改。2.使用openssl生成公钥和私钥,生成工具包地址如下:http://slproweb.com/products/Win32OpenSSL.html3.生成私钥:openssl genrsa -out rsa_private_key.pem 40964.生成公钥:open

2021-02-18 09:14:38 674

原创 case when 根据具体时间汇总员工每个月提成

前两天IT群里有人在问如何将员工的每个月的提成按月份汇总出来,时间是一个具体的时间点没有具体月份。问题和效果如下:<center>“人员_提成” 表 </center>

2021-02-04 18:04:11 301 1

原创 穿梭框 jquery实现 简单实用易扩张

使用layui的穿梭框做RBAC时发现其在数据传输时数据的分类比较困难,就手撸了一个支持分类的穿梭框,样式自己随意扩张,支持搜索先上效果图:代码如下:<!--style--><style> select{width: 100%;height:34%;} div{float: left;width:30%;} .o{width: 10%;text-align: center;line-height: 17px;padding-top:100.

2021-01-21 23:56:16 291

原创 Table表单可编辑 灵活简单易用

先上效果图:html代码如下:<table width="100%"> <tr> <td colspan="4"> <table> <thead> <tr> <th>考核项目</th> <th>考核标准</th> <th>权重分</th> </tr> &lt

2021-01-21 18:59:33 277

原创 工厂设计模式完成登录权限验证 PHP

一个基类User,三个子类GuestUser、CustomerUser、AdminUser,子类将获取父类获取信息的方法(例如:访问Web的权限)子类中可以更新权限,这样设计比较规范,需求增加时可增加附加的用户类型,具体代码如下:<?phpabstract class User{ protected $name = null; function __construct($name) { $this->name = $name; } .

2020-10-31 12:23:21 134

原创 单例设计模式完成日志记录 PHP

单例模式(Singleton Pattern)就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。根据这个模式可设计日志记录函数,Demo如下:<?phpclass Logger{ static private $LoggerInstance = NULL; static function getInstance(){ if(static::$LoggerInstance == NULL){ static::$Logge

2020-10-26 12:38:26 176

原创 静态变量调用中static和self的区别 PHP

在php的静态变量调用中有static和self两个方法,它们的作用是不同的。static访问的是堆内存中的数据,代表的是当前实例化的类的本身,而self调用的是当前代码片段的这个类。Demo和测试效果如下: <?phpclass Usps { protected static $str = "Class:Usps"; public static function printBySelf(){ echo get_called_class()."<..

2020-10-26 10:34:04 416

原创 迭代器设计模式完成数值累计 PHP

使用迭代器的方式求出1到10的三次方,并输出,demo如下:<?php/** * 聚合式迭代器 * 返回一个实现了iterator接口的类的实例 * @author earnest * */class NumberCubic implements iteratorAggregate{ private $start,$end; public function __construct($start,$end) { $this->start.

2020-10-24 20:50:17 100

jquery-ui-1.12.1.custom.zip

jquery-ui-1.12.1.custom.zip

2021-03-26

SoapDiscovery.class.php

soap+wsdl 数据架构模式下自动生成wsdl文件。soap+wsdl 数据架构模式下自动生成wsdl文件。soap+wsdl 数据架构模式下自动生成wsdl文件。

2020-12-07

jkl-dumper.js和ObjTree.js (json与xml格式转换所用插件 )

利用 jkl-dumper.js和ObjTree.js实现json与xml格式互转所用插件,这个插件亲测试有效。效果展示:https://json.ma。

2020-11-17

空空如也

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

TA关注的人

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