【性能优化】前置后置节流防抖,防止不避免情况下重复触发

 本文主要记录分享下 性能优化 中在 不可避免 情况下重复请求或者重复调用方法下的前置后置 节流防抖 的处理方式,以下为js版本其他语言可以 参考 类似。优化效果 以下是优化前后对比截图。优化前优化后优化方法 主要分享一下两种方式前置和后置前置节流防抖 /** * 前置节流防抖 * @param func * @param delay * @returns {function(): *} */ window.beforeThrottle = function (func, delay) { let lastCall = 0; return function () { const now = Date.now(); if (now - lastCall < delay) { return; } lastCall = now; retur...

前端,解决方案,其他 2024-04-07 AM 33次 0条

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

性能优化的终极目标是什么性能优化的目标实际上是为了更好的用户体验一般我们认为用户体验是下面的公式:用户体验 = 产品设计(非技术)+ 系统性能 ≈ 系统性能 = 快那什么样的体验叫快呢?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 56次 0条

微信报错提示 missing prepayid 解决方案

 在对接微信相关支付时,有时候会遇到 missing prepayid 错误,这种错误没有实际的提示信息,一般需要我们逐步排查或者开启日志记录记录详细的错误信息。 解决步骤首先我们反复确保了公钥以及私钥生成正确。确保配置信息填写正确检查相关支付是否已经开通检查商户号是否已经关联对应应用清理并重新生成用户openid和unionid使用对应微信登录的账号进行调取支付问题原因用户unionid或者openid与当前微信不匹配导致,重新清理获取即可此商家的收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案。 最后我们发现是由 第五和第六条原因造成的,我们将用户 openid 和 unionid 清理后使用微信登录重新生成然后直接发起支付,这个时候就不在提示 missing prepayid 错误了。 当然了还有一部分情况是因为 此商家的收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案。 导致的。 以上就是我们解决微信报错提示 missing prepayid 解决方案,有遇到同样问题的朋友,...

PHP,解决方案 2024-01-05 AM 244次 0条

Redis 提示 protocol error, got 'u' as reply type byte 解决方案

 遇到一个奇怪的问题,在 php 中使用 workerman 或者传统 pcntl_fork 的开启子进程时 大约十几分钟就会出现一段异常报错 protocol error, got 'u' as reply type byte 初步诊断是redis提示的 大致意思是 协议错误,得到'u'作为回复类型字节 。异常信息protocol error, got 'u' as reply type byte通过代码排查以及报错提示初步判断是redis的问题原因分析 传统 cli 下不会出现这个问题,只有 workerman 下以及 pcntl_fork 的开启子进程时 十几分钟后才会出现。 已知 workerman 底层使用的也是 pcntl_fork 我们直接分析这个函数。 pcntl_fork 函数 先创建主进程然后在根据需要创建N个子进程,而redis使用 单例模式 或者使用 static 来进行保存连接对象时候并且在主线程内有创建这个连接,那么就会出现以上 protocol error, got 'u' as reply type byte 错误 这种异常一般称为...

PHP,Linux,解决方案,其他 2023-12-18 PM 137次 0条

pixi学习资料以及问题收集

 本文主要收集楼主在学习 pixijs 过程中所用到的资料文档以及遇到的一些问题,方便日后查看。 阅读此文是默认已经对 pixijs 有了基本的了解。简述 PixiJS 的核心是一个渲染系统,它使用 WebGL(或可选的 Canvas)来显示图片和其他 2D 视觉内容。 它提供了完整的场景图(要渲染的对象的层次结构),并提供交互支持以支持处理单击和触摸事件。 它是现代 HTML5 世界中 Flash 的自然替代品,但提供了超出 Flash 所能实现的更好的性能和像素级效果。 它非常适合在线游戏、教育内容、互动广告、数据可视化...... 任何复杂图形非常重要的基于 Web 的应用。 与 Cordova 和 Electron 等技术相结合,PixiJS 应用可以作为移动和桌面应用分发到浏览器之外。中文文档pixi中文文档(推荐)pixi中文文档(比较老旧仅做参考)官方文档pixijs官方文档pixijs官方网站已解决问题 已下记录已解决的pixijs使用中的一些问题。手机端渲染模糊 我们主要使用 resolution 和 autoDensity 来解决手机端显示渲染模糊问题,实测有...

前端,解决方案,其他 2023-10-11 AM 113次 0条

使用virtualbox挂载文件夹教程

 下面记录了我们在使用 virtualbox 虚拟机命令行模式下挂载文件夹的步骤及流程。进入设置设置共享文件夹首先选择右侧虚拟机选择设置按钮点击添加共享文件夹选择文件夹配置我们选择自动挂载,固定分配安装增强功能进入系统后我们选择顶部 设备 选择安装增强功能创建挂载增强功能文件夹mkdir /mnt/cdrom挂载增强功能mount /dev/cdrom /mnt/cdrom安装更新软件包yum install -y gcc gcc-devel gcc-c++ gcc-c++-devel make kernel kernel-devel bzip2执行安装增强功能cd /mnt/cdrom/ && ./VBoxLinuxAdditions.run创建共享文件夹mkdir /mnt/project更新软件包yum update重启服务器reboot执行挂载命令sudo mount -t vboxsf project /mnt/project可以看到我们已经使用virtualbox挂载文件夹成功了。开机自动挂载修改配置文件vi ~/.bashrc

Linux,解决方案 2023-06-16 PM 799次 0条

php打包扩展zephir避坑安装指南

 本文主要记录了zephir各种安装失败,打包失败的正确姿势,完美解决各个版本php打包php打包扩展zephir避坑安装指南,一旦拥有别无所求。参考文档zephir官方网站zephir官方中文文档zephir中文文档(备用)")使用系统镜像 我们使用2207版本centos7安装系统CentOS-7-x86_64-Minimal-2207-02.iso系统环境 我们通过宝塔面板来安装指定php版本,当然你也可以使用其他方式安装。宝塔安装Git 如果提示找不到git命令我们可以通过以下命令安装一下gityum install gitzephir安装步骤首先我们来到系统根目录将 php-zephir-parser 通过 Git 方式 Clone 下来githubgit clone https://github.com/zephir-lang/php-zephir-parsergiteegit clone https://gitee.com/laiwi/php-zephir-parser.git国内 Clone 失败可以使用 gitee安装编辑PHP环境zephir_parser.s...

PHP,Linux,解决方案 2023-06-16 AM 344次 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 292次 0条

uinapp或者前端打包后出现两个静态资源文件夹解决方案

 我们在使用uinapp编写项目后打包后发现出现了两个静态文件如两个图片文件夹 img和image 两个 字体文件夹 font 和 fonts 等等。问题 通过 uinapp 打包后出现两个重复的图片文件夹 img 和 image 主要是应为代码内引用路径导致的。解决 我们只需要将绝对路径换成相对路径即可.  以上就是uinapp打包后出现两个相同的静态文件夹以及图片文件夹的解决方案。

前端,解决方案 2023-06-05 PM 318次 0条

mysql随机获取指定数量数据

 通常情况下我们在开发项目中一般会用到 随机推荐 或者 购买类 需求,一般情况下很多程序猿都是 正序 或者 倒叙 获取 然后随机返回给前端,这种方式有 很多缺陷。解决方案 下面我们分享一种直接从 mysql 数据库中随机获取数据的一种方式。编写最大id查询sqlSELECT MAX(id) FROM `user`编写joinINNER JOIN ( SELECT ROUND( RAND( ) * ( ( SELECT MAX( id ) FROM `bl_user` ) ) ) AS id ) AS u2 ON u.id >=`u2`.`id` 编写要获取的随机条数LIMIT 50完整实例SELECT * FROM `user` `u` INNER JOIN ( SELECT ROUND( RAND( ) * ( ( SELECT MAX( id ) FROM `user` ) ) ) AS id ) AS u2 ON u.id >= `u2`.`id` LIMIT 50 以上sql主要实现了完全从随机位置取 指定条数 的记录来实现 随机 获取...

数据库,解决方案 2023-04-11 PM 308次 0条