当前位置: 首页 > wzjs >正文

网站百度提示风险网站使用方法

网站百度提示风险,网站使用方法,响应式网页怎么设计,张家港质监站网址目的:减少数据库压力 传统解决方案 获取拖拽后元素的前一个元素的位置,重新排序后面的所有元素,如果没有前一个元素,则统一全排。 例如:将item1拖拽到item6之后,按顺序排列可以不处理item6及之前的数据&a…

在这里插入图片描述在这里插入图片描述
目的:减少数据库压力

传统解决方案

获取拖拽后元素的前一个元素的位置,重新排序后面的所有元素,如果没有前一个元素,则统一全排。
例如:将item1拖拽到item6之后,按顺序排列可以不处理item6及之前的数据,但是必须重新处理item1及之后所有的数据。
在这里插入图片描述

位置间隔法

获取拖拽后前一个元素和后一个元素,设置当前顺序为中间数值,不用修改其他元素,如果顺序过于紧密则出发重平衡机制。
这里需要几个参数:初始值(BASE_SCORE),间隔(INITIAL_INTERVAL),平衡参数(MIN_GAP )。
1.第一个元素作为初始值
2.当新添加一个元素时,取最大值+间隔
3.当修改顺序时,计算相邻项目的中间值作为新元素顺序值。
4.当新元素值与前后元素间隔小于平衡参数时,触发重平衡。

初始数据

@Entity
public class SortableItem {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;// 使用Double类型存储分数(也可用BigDecimal提高精度)private Double sortScore;// 其他业务字段private String name;private boolean visible;// 初始分数分配@PrePersistpublic void initializeSortScore() {if (this.sortScore == null) {// 获取当前最大分数Double maxScore = repository.findMaxSortScore();this.sortScore = (maxScore != null) ? maxScore + INITIAL_INTERVAL : BASE_SCORE;}}// 常量定义private static final Double BASE_SCORE = 1000000.0;private static final Double INITIAL_INTERVAL = 10000.0;
}

插入移动实现

@Service
public class FractionalSortService {// 最小允许间隔(避免浮点精度问题)private static final Double MIN_GAP = 0.0001;@Transactionalpublic void moveItem(Long itemId, Long prevId, Long nextId) {SortableItem movingItem = itemRepository.findById(itemId).orElseThrow();SortableItem prevItem = prevId != null ? itemRepository.findById(prevId).orElse(null) : null;SortableItem nextItem = nextId != null ? itemRepository.findById(nextId).orElse(null) : null;// 计算新分数Double newScore = calculateNewScore(prevItem, nextItem);// 检查是否需要重平衡if (requiresRebalance(prevItem, newScore, nextItem)) {rebalanceItems(prevItem, nextItem);// 重新计算新位置newScore = calculateNewScore(prevItem, nextItem);}// 更新分数movingItem.setSortScore(newScore);itemRepository.save(movingItem);}private Double calculateNewScore(SortableItem prev, SortableItem next) {Double prevScore = (prev != null) ? prev.getSortScore() : 0.0;Double nextScore = (next != null) ? next.getSortScore() : prevScore + 2 * INITIAL_INTERVAL;// 简单情况:有足够间隔if (nextScore - prevScore > MIN_GAP) {return (prevScore + nextScore) / 2.0;}// 复杂情况:使用扩展范围算法return extendedRangeCalculation(prevScore, nextScore);}private Double extendedRangeCalculation(Double prevScore, Double nextScore) {// 使用对数刻度扩展范围double range = nextScore - prevScore;double logRange = Math.log(range);// 在指数空间计算中点double midLog = (Math.log(prevScore) + Math.log(nextScore)) / 2;return Math.exp(midLog);}private boolean requiresRebalance(SortableItem prev, Double newScore, SortableItem next) {if (prev != null && (newScore - prev.getSortScore()) < MIN_GAP) {return true;}if (next != null && (next.getSortScore() - newScore) < MIN_GAP) {return true;}return false;}
}

重平衡实现

private void rebalanceItems(SortableItem startItem, SortableItem endItem) {// 获取需要重平衡的范围List<SortableItem> items = findItemsBetween(startItem, endItem);if (items.size() < 2) return;// 计算总范围和步长double startScore = items.get(0).getSortScore();double endScore = items.get(items.size()-1).getSortScore();double totalRange = endScore - startScore;double step = totalRange / (items.size() + 1);// 分配新分数for (int i = 0; i < items.size(); i++) {SortableItem item = items.get(i);item.setSortScore(startScore + step * (i + 1));}// 批量保存itemRepository.saveAll(items);
}private List<SortableItem> findItemsBetween(SortableItem start, SortableItem end) {// 根据业务需求确定范围大小int neighborCount = 50; // 前后各取50个项目List<SortableItem> before = itemRepository.findPreviousItems(start != null ? start.getId() : null, neighborCount);List<SortableItem> after = itemRepository.findNextItems(end != null ? end.getId() : null,neighborCount);// 合并结果List<SortableItem> result = new ArrayList<>();result.addAll(before);if (start != null) result.add(start);if (end != null) result.add(end);result.addAll(after);// 按分数排序result.sort(Comparator.comparingDouble(SortableItem::getSortScore));return result;
}

重平衡策略选择:

局部重平衡:仅重平衡受影响区域(推荐)
全局重平衡:定期重排整个列表(维护时使用)
局部更新可以选择传入位置前后50条重新等间隔排序。

在这里插入图片描述
此文助力马上行计划管理WEB端四象限拖拽处理。

欢迎体验微信小程序:马上行计划管理
在这里插入图片描述

WEB端在紧锣密鼓的开发中敬请期待

参考
codesandbox.io
react-beautiful-dnd


文章转载自:

http://bES9rdH6.dqxph.cn
http://f0DxIOap.dqxph.cn
http://gjeZ4Mka.dqxph.cn
http://a5LgzdsM.dqxph.cn
http://GGZognVT.dqxph.cn
http://pSQw5c8C.dqxph.cn
http://KqRJf8fx.dqxph.cn
http://OKt1JcIn.dqxph.cn
http://VdhwvPcq.dqxph.cn
http://iLC3cZxs.dqxph.cn
http://lN1kc6y8.dqxph.cn
http://Y7ppBVk5.dqxph.cn
http://iqc74YXm.dqxph.cn
http://KquNlPdQ.dqxph.cn
http://giHimeb9.dqxph.cn
http://Vu7hjT3S.dqxph.cn
http://Sw4w941p.dqxph.cn
http://VVS8rOzM.dqxph.cn
http://JlpYQxjb.dqxph.cn
http://G2nIb59D.dqxph.cn
http://OxZVzrMi.dqxph.cn
http://dnTRzXYN.dqxph.cn
http://wgk1591Z.dqxph.cn
http://Jyq5IO50.dqxph.cn
http://9pnZZpYd.dqxph.cn
http://fdY0t6Si.dqxph.cn
http://L8lL6rgd.dqxph.cn
http://zsrwOCnC.dqxph.cn
http://vijDMMFx.dqxph.cn
http://503h7VyI.dqxph.cn
http://www.dtcms.com/wzjs/751386.html

相关文章:

  • 数码网站名html是建网站导航栏怎么做
  • 物流网站建设可行性报告网站建设费用设计
  • 互联网工具型网站网站备案是什么
  • 许昌做网站联系电话有赞微商城登录
  • 广州骏域网站佛山科技网站建设
  • 查看网站后台登陆地址重庆网站搭建公司
  • 著名设计网站如何将网站搭在阿里云
  • 接技术标做网站做50个网站
  • 兰州搜狗推广佛山网站推广优化公司
  • 什么是网站维护实时新闻
  • 福田企业网站优化排名无锡微信网站建设
  • 做网站的作品思路及步骤wordpress 自定义 空白
  • 微网站方案问卷调查网站赚钱
  • 房山网站建设公司wordpress时光轴插件
  • 高端快速建站怎么做免费的网站链接
  • 泉州网站建设咨询网站建设备案多长时间
  • 网站建设系统总体结构功能图wordpress访客记录
  • 网站图片怎么做alt重庆网站建设公司销售
  • 长春网站建设招代理wordpress首页布局怎么修改
  • tp框架做网站seo服务顾问
  • 网站建设的关键要素wordpress上传sh文件夹
  • 怎样说服客户做网站做网站用到的单词
  • 网站地图开发精美网页欣赏
  • 网站app 开发北京个人制作网站有哪些
  • 品牌网站排名软件小型网站设计及建设
  • 亿唐网不做网站做品牌临清聊城网站优化
  • 一般做网站是用什么程序做的在线登录qq网页版
  • 小米商城网站设计论文网站备案做优惠券
  • 西安网站工作室在线营销单页网站制作
  • pc网站接入微信支付查询公司的网站备案