项目性能优化的指标,目标

性能优化的终极目标是什么性能优化的目标实际上是为了更好的用户体验一般我们认为用户体验是下面的公式:用户体验 = 产品设计(非技术)+ 系统性能 ≈ 系统性能 = 快那什么样的体验叫快呢?3秒定理 一般我们认为网站页面的加载速度在3秒以内就可以称作合格了,加载速度越趋近于0,越快。 3秒定理:Strangeloop在对比了众多网站,并对其性能进行分析之后得出了一个著名的3秒定理,当网站页面加载速度超过3秒后,57%的访客会离开这个网站。  如果想让我们的系统快起来,就要做性能调优。项目性能优化以下可以做为优化的标准:前端工程师:首屏时间、白屏时间、可交互时间、完全加载时间;移动端工程师:端到端响应时间、Crash率、内存使用率、FPS;后端工程师:RT、TPS、并发数。影响因素1:数据库读写、RPC、网络IO、逻辑计算复杂度、缓存影响因素2:JVM[Throughput吞吐量、Footprint访存足迹、Latency延迟]影响性能的关键要素产品设计:产品逻辑、功能交互、动态效果、页面元素基础网络:网络=连接介质+计算终端代码质量&架构移动端环境:设备类型&性能、网络...

PHP,Golang,前端,.Net,解决方案,其他 2024-03-12 PM 25次 0条

解决Liunx安装找不到最新版本软件方案

 我们在使用linux,centos等系统想要安装最新版软件时候发现无论怎安装都是老版本的软件,下面我们通过安装 PHP8.1 , php-devel 等软件来演示一下怎么将linux软件库更新到最新版本。步骤下面我们使用 centos7 来作为演示系统查看当前系统软件库列表 我们通过以下命令可以查看更新之前的软件库内软件的版本。sudo yum search all php-devel 一般情况下 新安装的系统软件库版本比较老旧并没有最新版本的软件。安装 epel-releasesudo yum install epel-release安装最新版 remi 源 Remi 源大家或许很少听说,但是我们强烈推荐,尤其对于不想编译最新版的 Linux 使用者, 因为 Remi 源中的软件几乎都是最新稳定版。sudo yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm安装 yum-utilssudo yum -y install yum-utils最后我们再次查看当前系统软...

PHP,Golang,Linux,解决方案 2023-06-13 PM 275次 0条

计数限流算法

 计数器算法实现起来比较简单,它的基本思路是:在单位时间内(如 1 秒钟)对访问次数进行计数,如果超过设定的阈值,则拒绝后续的请求。以下是一个使用 PHP 实现的计数器算法。完整代码class Counter { protected $maxCount = 100; // 设定最大请求数 protected $interval = 60; // 设定时间窗口大小,单位为秒 protected $redis = null; // Redis 连接 public function __construct($maxCount, $interval) { $this->maxCount = $maxCount; $this->interval = $interval; // 建立 Redis 连接 $this->redis = new Redis(); $this->redis->connect('127.0.0.1', 6379); } publi...

PHP,Golang,.Net,解决方案,其他 2023-03-21 PM 322次 0条

令牌桶限流算法

 下面我们通过使用redis实现一个简单通用的令牌桶限流算法解决问题 令牌桶算法主要是以桶的容量为基准,以固定的时间来生产令牌,有效的解决了漏桶效率不高的问题具体实现创建redis对象并定义缓存键$redis = $this->connect(); $key = "aaaaa";开启 watch 并定义定义每分钟最大请求数量$current_time = time(); $max_count = 320; $total_s = 60; $redis->watch($key);计算平均值用于限制每秒请求数量$rate = (int)(($max_count / $total_s) * ($current_time - ¥result_array["time"]));取出最大容量与桶内容量最小值$num = min($max_count, ($result_array["num"] + $rate));判断令牌数/* 令牌小于0 */ if ($num <= 0) { return false; }重新保存令牌$result = json_encode(["num" =>...

PHP,Golang,.Net,解决方案,其他 2023-03-21 AM 318次 0条

实现滑动窗口限流算法

 下面我们通过php使用redis实现一个简单通用的滑动窗口限流算法解决问题 滑动窗口算法主要解决了传统计数限流算法的阶段突发性流量问题。具体实现创建redis对象并定义缓存键$redis = new \Redis(); $redis->connect("127.0.0.1"); $key = "aaaaa";定义每分钟最大请求数量$max_count = 320; $total_s = 60; $current_time = time();计算平均值用于限制每秒请求数量$avg_count = ceil($max_count / $total_s);限制每秒请求数量$range_count = $redis->zRangeByScore($key, $current_time, $current_time); if (count($range_count) > $avg_count) { exit('请求太过频繁,请稍后 -1'); }限制每分钟请求数量$redis->zRemRangeByScore($key, 0, $current_time - 59); $c...

PHP,Golang,前端,.Net,解决方案,其他 2023-03-17 PM 338次 0条

最新jetbrains全家桶及phpstorm激活方法支持全系列全版本支持更新永久有效

  继 IDE Eval Reset 失效后,今天我们分享一个最新的jetbrains全家桶及phpstorm激活方法,并且支持全系列,全版本可更新使用并且有效。 我们知道 jetbrains 家的产品用过的都知道非常好用,其中包括 phpstorm , goland , pycharm , webstorm , intellij idea 等等这些都是非常强大及好用的开发工具,但是奈何 jetbrains 系列的工具都是要收费激活的虽然淘宝上有便宜的 学生邮箱 和 破解版 但是这些非常 容易被封 ,博主已经入了两次淘宝的坑了。 博主之前分享的 phpstorm及jetbrains永久免费激活工具插件无限试用使用 奈何对2021年6月份之后的版本已经无效了,插件的开发者已经停止对激活插件的更新了所以说2021年6月份之后的版本就不能再使用了。最新jetbrains全家桶激活方法 原理是我们主要通过代码搜索其他授权服务器进行永久激活激活。方式一 通过censyshttps://search.censys.io/主要用到的代码services.http.response.head...

PHP,软件工具,Golang,前端,解决方案 2022-03-23 AM 14730次 0条

golang切片(slice)基本操作

 本篇主要以简洁明了的方式记录分享 go 语言 slice 切片的基本使用操作,以及 go 在使用 slice 切片过程中的注意事项等等。golang切片(slice)创建可以使用make创建一个长度(len)为16的切片可以使用make创建一个长度(len)为16,cap为32 的切片var s []int var s []int={2,3,4,5} // 可以使用make创建一个长度(len)为16的切片 s := make([]int ,16 ) // 可以使用make创建一个长度(len)为16,cap为32 的切片 s := make([]int ,16 ,32)用golang内置函数(append)追加切片(slice)s1 := []int{0,1,2,3,4,5,6,7} s2 :=append(s1,10) s3 := append(s2,11) s4 := append(s3,12,13,14)用golang内置函数(cope)拷贝切片(slice)s1 := []int s2 := []int{2,3,4} cope(s2,s1) fmt....

Golang 2021-11-26 AM 838次 0条

go安装gin web框架

 gin是一个用 Go(Golang) 编写的 web框架 ,它采用了类似 martini-like 的API,由于 httprouter ,其性能提高了40倍,如果你需要高性能和高生产率,下面我们来演示下怎么安装 gin web 框架。gin开源框架地址https://github.com/gin-gonic/gin#installation安装gin使用相关扩展//下载插件工具(安装gin前,先安装gopm这个工具) go get -v github.com/gpmgo/gopm //自动导入包插件 gopm get -g -v golang.org/x/tools/cmd/goimports //转码插件 gopm get -g -v golang.org/x/text //自动检测网页编码 gopm get -g -v golang.org/x/net/html安装gin矿建步骤流程安装完成测试是否安装成功package main import "github.com/gin-gonic/gin" func main() { r := gin.Defau...

Golang 2021-10-11 PM 390次 0条

go引入使用包异常cannot resolve symbol 'xxx'

 本文主要解决 golang 引入使用 gin包 的时候异常 cannot resolve symbol 'xxx' 这个问题一般比较 熟悉go语言 的同学一眼就知道怎么解决了,本文主要记录下以供其他新同学 排查问题 使用。go出现 cannot resolve symbol 异常原因 go.mod 文件没有 require 包,或者没有初始化 go.mod 解决 cannot resolve symbol 'xxx' 异常go mod init gin go mod edit -require github.com/gin-gonic/gin@latest 使用 go.mod 注意事项go使用go mod加速依赖管理 关于 go引入使用包异常cannot resolve symbol 'xxx' 通过以上方法已经完美解决了。

Golang,解决方案 2021-09-28 PM 1107次 0条

golang使用packr包把静态资源文件打包进二进制应用内

 当开发 fdem-os 时候 以为想把应用做成直接的单一启用文件,所以说一直再思考怎么把 静态文件 html以及一些css,js一类的文件给打包到应用内而不用通过程序下载在去加载,这样及方便使用又保证了代码的安全性,最终发现 golang 可以完美实现需求的 packr 第三方包。 通过 packr 我们可以完美的将静态资源打包进应用程序,并开启一个 http服务 以供使用。golang packr 包文档 packr项目文档地址 目前最新版本为 v2.8.1 版本,推荐使用 v2 版本进行开发。packr 包 官方介绍Packr is a simple solution for bundling static assets inside of Go binaries. Most importantly it does it in a way that is friendly to developers while they are developing Packr是将静态资产捆绑到 Go 二进制文件中的简单解决方案。最重要的是,它以对开发人员在开发期间友好的方式进行。 可以看...

软件工具,Golang,解决方案 2021-09-24 PM 691次 0条