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

 本文主要记录分享下 性能优化 中在 不可避免 情况下重复请求或者重复调用方法下的前置后置 节流防抖 的处理方式,以下为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 348次 0条

一键优化宝塔面板补丁适用宝塔面板版本7.7+

 第三方网友提供的一键优化宝塔面板补丁,听说很好用,博主未测试感兴趣的同学可以在本地测试下玩玩。补丁代码 提供源代码,远程代码两种补丁安装方式,推荐使用源代码自行执行更安全。宝塔面板源代码补丁(推荐)#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH if [ $(whoami) != "root" ];then echo "请使用root权限执行命令!" exit 1; fi if [ ! -d /www/server/panel ] || [ ! -f /etc/init.d/bt ];then echo "未安装宝塔面板" exit 1 fi if [ ! -f /www/server/panel/data/userInfo.json ]; then echo "{\"uid\":1000,\"username\":\"admin\",\"serverid\":1}" > /www/ser...

软件工具,Linux,其他 2021-12-29 AM 1149次 0条

mysql服务器io飚满百分之百的案例分析

mysql飚满问题有一台 mysql 5.7.1 的数据库实例以写入为主,IO 飙到接近100%,可以看到 写入 IOPS 很也高分析mysql飚满问题过程通过 iotop 工具可以看到当前 IO 消耗最高的 mysql 线程查看线程49342的堆栈,可以看到正在进行redo log的刷新,对应的是9号文件9号文件对应的是redo log的第一个文件 为什么 mysql 进程会频繁的刷新 redolog 文件,要结合 redolog 的刷盘策略来分析,关键是 innodb_flush_log_at_trx_commit 参数,默认是1最安全,但在写压力大的情况下,也会带来较大的性能影响,每次事务提交时 mysql 都会把 log buffer 的数据写入 log file 并且 flush (刷到磁盘)中去。 结合这个集群的写入场景来看,大部分都是小事务的写入,每次事务提交都会触发刷盘动作,这种场景下通过增大 innodb_log_buffer_size 和 innodb_log_file_size 的优化效果不明显。mysql飚满优化方案应用层面,对于写压力大的系统,可以将单条...

数据库 2021-10-28 PM 1171次 0条

mysql自增列并发插入死锁问题

 今天有一个朋友问我了一个问题意思是假设我们有一张表需要每天 定时迁移数据 那么我们在进行迁移的时候某些环境下就会触发自增列 并发插入死锁 问题如下。mysql 死锁问题测试  触发 死锁问题 采用一下 sql 进行 测试 复现insert into data_cache (customerID,organizationID,createTime) ( select customerID,organizationID,createTime from data where DATE(createTime) <= DATE(?) and autoIndex >= ? and autoIndex <= ? ); 大致意思是根据 autoIndex 去判定那些数据需要迁移,在程序中已经分好区域了,比如 1~100 , 101~200 , 201~300 这些,两张表的数据表结构均一致如下CREATE TABLE `data` ( `customerID` varchar(50) NOT NULL COMMENT '客户编号...

数据库 2021-10-19 PM 556次 0条

php中使用static关键词与self关键词的不同区别

 首先我们要知道 自 PHP 5.3.0 起,php增加了一个叫做 后期静态绑定 的功能,用于在 继承范围内引用静态调用 的类。 这也导致我们在使用 static 关键词和 self 关键词的时候要特别注意一下,否则很有可能会出现 不可预料 的问题。static 与 self 的不同含义self 关键词 调用 取决于定义前方法所在的类 适合我们常规使用逻辑但是它不符合面向对象的设计原则。static 关键词 调用 取决于调用当前方法所在的类 更利于实现多态性。self 和 static 使用测试案例 首先我们创建两个类非别为 A类 和 B类 其中 B类 继承与 A类,两个类中都定义 test静态方法 其中 A类 定义 self_get 和 static_get 方法获取输出 test静态方法 数据用于对比 self 和 static 的不同效果。self 使用测试案例class A { static function test() { echo "This is class ".__CLASS__; } static functi...

PHP 2021-10-12 AM 534次 0条

mysql字段数据为null时反查询不到

 当我们通过 mysql 使用 NOT IN 查询时,如果条件字段可以为 NULL 并且值为NULL需要特别注意一下这个时候使用 NOT IN 查询时是查询不到的。测试NULL时反查询不到例子假如我们现在有一个表 useridnickname1张三2李四3NULL4王五现在我们查询用户名不是 张三 和 李四 的用户select * from users where user_name not in ('张三','李四');这个时候我们应该得到的是两条数据idnickname3NULL4王五但是结果却只有一条数据idnickname4王五分析测试NULL时反查询不到问题 这是因为 mysql 中 not in 使用的是 不相等(!=) 比较,即每条记录的 user_name 都和 张三, 李四 进行数据比较。foreach ($user_names as $user_name) { if ($user_name != '张三' && $user_name != '李四') { return true; // 符合条件 }...

数据库 2021-09-28 PM 776次 0条

html修复锚点位置偏移

 在使用 html锚点 时候一到那我们设置了 头部导航栏固定 ,就会出现 html锚点跳转 时候 位置偏移 , 锚点定位不准确 等问题,特别影响用户体验。 可以看到以上效果图 头部浮动 已经导致 锚点位置向上偏移 了,然后我们可以通过以下 任意两种方法 去 修复锚点 位置偏移 的问题。使用 css 的 target 选择器修复锚点位置偏移.article-deviation:target{ padding-top: 110px !important; /*或者*/ margin-top: 110px !important; } 我们通过使用 target 选择器修复锚点位置偏移,其中使用 padding 还是 margin 以及 像素大小 可以根据 具体需求进行调整 。target 完整使用示例

这...

前端,解决方案 2021-09-27 AM 1869次 0条

html使用css实现锚点平滑滚动

 本文将通过使用css 优化锚点 平滑滚动,默认我们在使用 html锚点 的时候,点击锚点链接默认是 立即跳转 到指定位置。默认html锚点效果 我们可以看到默认的 html锚点 效果是 非常僵硬 的,用户体验 非常不好,下面我们就通过css去 优化锚点 使其 平滑滚动。css滚动行为属性 scroll-behavior 我们可以通过css的 滚动行为 属性 scroll-behavior 来 快速优化用户体验 使其默认 锚点平滑滚动。属性 scroll-behavior 官方解释当用户手动导航或者 CSSOM scrolling API 触发滚动操作时,CSS 属性 scroll-behavior 为一个滚动框指定滚动行为,其他任何的滚动,例如那些由于用户行为而产生的滚动,不受这个属性的影响。在根元素中指定这个属性时,它反而适用于视窗。 大致意思就是当触发滚动操作时候可以通过 scroll-behavior 属性控制其行为。使用 scroll-behavior 属性优化锚点 我们只需要在 html样式 里面加入一下代码即可实现,设置smooth 就可以平滑滚动了。html{ ...

前端,解决方案 2021-09-26 PM 1246次 0条

mysql数据库表重置主键

 mysql数据库表重置主键解决数据表频繁删除新增主键不断自增问题。 比如我们现在有一个 用户访问日志记录表 ,通过程序 不断的记录用户访问信息 ,因为数据量比较大所以我们 只保存1个月内的日志 ,所以要对一个月之前的 数据删除 ,时间久了就会发现 主键不断在增大 ,根据主键类型不同,如果不做任何处理的话,很有可能会达到 主键值的最大长度 ,这个时候数据库就可能会 出现问题。 根据以上问题我们可以通过 定期重置主键 进行解决mysql重置主键ALTER TABLE table_name AUTO_INCREMENT= 1; 通过以上 sql 我们可以将主键重置为 1 ,也可以根据需求进行调整 1 100 1000 等等 关于怎么解决主键不断增加,mysql数据库表重置主键怎么解决已经介绍完毕了。

数据库,解决方案 2021-09-25 AM 663次 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 974次 0条