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

Vue2实现主内容滚动到指定位置时,侧边导航栏也跟随选中变化

需求背景:

PC端项目需要实现一个有侧边导航栏,可点击跳转至对应内容区域,类似锚点导航,

同时主内容区域上下滚动时,可实现左侧导航栏选中样式能实时跟随变动的效果。

了解了一下,Element Plus 组件库 和 Ant Design Vue 组件库内自带此功能组件:

Anchor 锚点 | Element Plus


Anchor 锚点 — 用于跳转到页面指定位置。


但是奈何自己的项目依旧还是 Vue2 版本的 Element 组件库,

SO,用不了,没办法只能另辟蹊径,寻找其他解决方案。

百度一波之后的参考文献:

此篇内有效果展示图:https://zhuanlan.zhihu.com/p/476337029

( 不过文章内容缺少一些代码段信息,需自行到文章下面的代码仓库查阅:

import utils from '@/utils'
import { getScrollContainer } from '@/utils/dom'  )

又参考了几篇文献 :

实现主内容滚动到指定位置,侧边栏也跟随变化_侧边栏滚动定位

最后采用的demo文献 :

vue实现内容滚动时,侧边导航跟随选中 - 简书

( 此篇文章代码基本都是写死的内容,不具有可变性,但是大致提供了一个思路 )


根据参考文献后改进优化后的代码 :

html 部分
<template><div class="container"><ul class="nav"><li v-for="(item, index) in domainLineList" :key="index"><a@click="navClick(index)":class="{ bbactive: selectedItem === index }">{{ item.deptName }}</a></li></ul><article><h1v-for="(item, index) in domainLineList":key="index":id="'div' + index">{{ item.deptValue }}</h1></article></div>
</template>
javascript 部分
<script>
export default {name: "container",data() {return {selectedItem: 0,domainLineList: [{deptName: "奢香夫人",deptValue: `男:落脚河上面崖对崖威宁草海荞花盛开谁把月亮挂天上照得想说的话 流成海流成海流成海流成海女:越过绵绵的高山越过无尽的沧海如果期待依然在总是春暖到花开请你轻轻留下来让梦卷走这尘埃香飘在书厢之外奏响美丽的天籁男:不等三更过天晓白奢香夫人赶月归来她把日光画心上照得漆黑的夜 亮堂堂亮堂堂亮堂堂亮堂堂女:越过绵绵的高山越过无尽的沧海如果期待依然在总是春暖到花开请你轻轻留下来让梦卷走这尘埃香飘在书厢之外奏响美丽的天籁合:乌蒙山连着山外山月光洒下了响水滩有没有人能告诉我可是苍天对你在呼唤一座山翻过一条河千山万水永不寂寞你来过 年华被传说百里杜鹃不凋落乌蒙山连着山外山月光洒下了响水滩有没有人能告诉我可是苍天对你在呼唤一座山翻过一条河走过千山万水永不寂寞你来过 年华被传说百里杜鹃不凋落女:怀念总在心头绕我们记忆的凭吊善良的心跳男:我寻着你的路 让风都停住依然清晰看见你那坚强的脚步如果天留得住 如果地也能把你挽住愿你就在这片云水间常驻合:乌蒙山连着山外山月光洒下了响水滩有没有人能告诉我可是苍天对你在呼唤一座山翻过一条河千山万水永不寂寞你来过 年华被传说百里杜鹃不凋落乌蒙山连着山外山月光洒下了响水滩有没有人能告诉我可是苍天对你在呼唤一座山翻过一条河走过千山万水不寂寞你来过 年华被传说百里杜鹃不凋落`,},{deptName: "等爱的玫瑰",deptValue: `我走在 荒凉的沙漠我躲在 无人的角落我听见 飘渺的传说是谁在飞扬自由的歌风吹过 漫天的寂寞爱无根 枯萎的花朵我祈祷 不变的承诺是谁在安慰心中饥渴我要向前飞我是等爱的玫瑰心中浅藏着待放的花蕊如果你给我真实的安慰我愿为你展现我的美曾经被风吹我是受伤的玫瑰眼中深埋着滚烫的泪水尘世中太多虚幻的安慰完美背后看见了心碎是谁风干的温柔给我憧憬的理由多少人都曾经为爱虔诚的祈求谁不渴望天长地久只怕繁华落尽海市蜃楼风吹过 漫天的寂寞爱无根 枯萎的花朵我祈祷 不变的承诺是谁在安慰心中饥渴又有谁从来没有受过伤害但是我们还是要继续找到真爱感情复杂 难免会有失败未来的路更值得我们期待不要怕有我陪着你安慰你心疼你直到你找到爱的真谛得到幸福的你会明白一切付出原来都是值得的我要向前飞我是等爱的玫瑰心中浅藏着待放的花蕊如果你给我真实的安慰我愿为你展现我的美曾经被风吹我是受伤的玫瑰眼中深埋着滚烫的泪水尘世中太多虚幻的安慰完美背后看见了心碎是谁风干的温柔给我憧憬的理由多少人都曾经为爱虔诚的祈求谁不渴望天长地久只怕繁华落尽海市蜃楼我要向前飞我是等爱的玫瑰心中浅藏着待放的花蕊如果你给我真实的安慰我愿为你展现我的美曾经被风吹我是受伤的玫瑰眼中深埋着滚烫的泪水尘世中太多虚幻的安慰完美背后看见了心碎尘世中太多虚幻的安慰完美背后看见了心碎`,},{deptName: "冬天的秘密",deptValue: `取暖回忆回忆无香有阳光还感觉我站在分隔岛没有方向不想回你太善良你太美我讨厌这样想你的自不屑此刻的我太感与脆弱为没有魂魄化体温成尴尬的始终独自怀抱这个秘但朋友都说我太过忧爱你我不能看你们拥抱甜谈笑自若忍受逾期的伤如果我说我真的爱谁来收那些被破坏的友如果我忍住这个秘温暖冬就会遥遥而无你太善良你太美我讨厌这样想你的自不屑此刻的我太感与脆弱为没有魂魄化体温成尴尬的始终独自怀抱这个秘但朋友都说我太过忧爱你我不能看你们拥抱甜谈笑自若忍受逾期的伤如果我说我真的爱谁来收那些被破坏的友如果我忍住这个秘温暖冬天就会遥遥而无如果我说我必须爱答应给比友谊更完整的如果我忍住这个秘就该错过埋葬冬天的秘如果我说我真的爱谁来收拾这被破坏的友如果我忍住这个秘温暖冬天就会遥遥而无就该错过埋葬冬天的秘密`,},{deptName: "姑娘别哭泣",deptValue: `突来的消息 那个人是你这么多年 你杳无音讯时间的橡皮 擦掉了记忆但我迟迟却 没有忘记你秒针的声音 嘀嗒转不停我的心里 住着一个你流过的泪滴 全都因为你原来迟迟都 不曾放下你或许我们就不该 有段因果或许我不该 一味求施舍如果有天 我离开了你的生活如果有天 你还爱着我姑娘为何你要放声哭泣我在路那旁 小河等你你心里到底藏了什么秘密我想紧紧的抱住你你说遇到的人全都像你找不到失去你的意义你说你克制着 不再想起可是我就在你心里秒针的声音 嘀嗒转不停我的心里 住着一个你流过的泪滴 全都因为你原来迟迟都 不曾放下你或许我们就不该 有段因果或许我不该 一味求施舍如果有天 我离开了你的生活如果有天 你还爱着我姑娘为何你要放声哭泣我在路那旁小河等你你心里到底藏了什么秘密我想紧紧的抱住你你说遇到的人全都像你找不到失去你的意义你说你克制着不再想起可是我就在你心里`,},{deptName: "寂寞沙洲冷",deptValue: `自你走后心憔悴白色油桐风中纷飞落花似人有情这个季节河畔的风放肆拼命的吹无端拨弄离人的眼泪那样浓烈的爱再也无法给伤感一夜一夜当记忆的线缠绕过往支离破碎是慌乱占据了心扉有花儿伴着蝴蝶孤雁可以双飞夜深人静独徘徊当幸福恋人寄来红色分享喜悦闭上双眼难过头也不敢回仍然拣尽寒枝不肯安歇微带着后悔寂寞沙洲我该思念谁自你走后心憔悴白色油桐风中纷飞落花似人有情这个季节河畔的风放肆拼命的吹无端拨弄离人的眼泪那样浓烈的爱再也无法给伤感一夜一夜当记忆的线缠绕过往支离破碎是慌乱占据了心扉有花儿伴着蝴蝶孤雁可以双飞夜深人静独徘徊当幸福恋人寄来红色分享喜悦闭上双眼难过头也不敢回仍然拣尽寒枝不肯安歇微带着后悔寂寞沙洲我该思念谁当记忆的线缠绕过往支离破碎是慌乱占据了心扉有花儿伴着蝴蝶孤雁可以双飞夜深人静独徘徊当幸福恋人寄来红色分享喜悦闭上双眼难过头也不敢回仍然拣尽寒枝不肯安歇微带着后悔寂寞沙洲我该思念谁仍然拣尽寒枝不肯安歇微带着后悔寂寞沙洲我该思念谁`,},{deptName: "下一个天亮",deptValue: `用起伏的背影挡住哭泣的有些故事不必说给每个人许多眼睛看的太浅太错过我没被看见那个自用简单的言语解开超载的有些情绪是该说给懂的人你的热泪比我激动怜我发誓要更努力更有勇等下一个天去上次牵手赏花那里散步好有些积雪会自己融你的肩膀是我豁达的天等下一个天把偷拍我看海的照片送我好我喜欢我飞舞的头和飘着雨还是眺望的眼用简单的言语解开超载的有些情绪是该说给懂的人你的热泪比我激动怜我发誓要更努力更有勇等下一个天去上次牵手赏花那里散步好有些积雪会自己融你的肩膀是我豁达的天等下一个天把偷拍我看海的照片送我好我喜欢我飞舞的头和飘着雨还是眺望的眼时间可以磨去我的棱有些坚持却永远磨不请容许我小小的骄因为有你这样的依等下一个天去上次牵手赏花那里散步好有些积雪会自己融你的肩膀是我豁达的天等下一个天把偷拍我看海的照片送我好我喜欢我飞舞的头和飘着雨还是眺望的眼光`,},{deptName: "离别开出花",deptValue: `坐上那朵离家的云霞飘去无人知晓的天涯背着妈妈说的那句话孩子人生其实不复杂喔~眼泪轻轻地擦别管那多嘴乌鸦咽下那些风沙你才能慢慢长大要错过几个她用你最好的年华这是青春的代价当离别开出花伸出新长的枝桠像冬去春又来等待心雪融化你每次离开家带着远方的牵挂那城市的繁华盖住了月牙当离别开出花它生长在悬崖在最高的山顶才听得见回答没什么好害怕孩子放心去飞吧在你的身后有个等你的家坐上那朵离家的云霞飘去无人知晓的天涯背着妈妈说的那句话孩子人生其实不复杂喔~眼泪轻轻地擦别忘那童年梦话散在远方的花也随风慢慢长大要错过几个她用你最真的年华这是青春的回答当离别开出花伸出新长的枝桠像冬去春又来等待心雪融化你每次离开家带着远方的牵挂那城市的繁华盖住了月牙当离别开出花它生长在悬崖在最高的山顶才听得见回答没什么好害怕孩子放心去飞吧在你的身后有个等你的家当离别开出花伸出新长的枝桠像冬去春又来等待心雪融化你每次离开家带着远方的牵挂那城市的繁华盖住了月牙当离别开出花它生长在悬崖在最高的山顶才听得见回答没什么好害怕孩子放心去飞吧在你的身后有个等你的家`,},{deptName: "我想离开浪浪山",deptValue: `我想离开浪浪山是不是该出去闯闯哎呀 别瞎想能有的干就不错了你跟着大王好好干争取早日修炼成精这才是正事天上的星星在闪烁有没有一颗属于我它时常提醒着我 别犯错回家的路多少曲折泪眼婆娑月影斑驳故乡的烛火 在梦里闪烁这个世界好像每天都在重播也许离开浪浪山一个人生活还是就这样继续得过且过怎么好像从来没有人在意过现在的我到底快不快乐就好像离岸的船 无处可停泊可我有时真的有点不知所措迎合太多反而显得笨拙到底那是怎样的我一年都没回来是不是太忙了对对对现在大王给我派了很多事情每天做都做不完哎呀 大王重视你就好这个世界好像每天都在重播也许离开浪浪山一个人生活还是就这样继续得过且过怎么好像从来没有人在意过现在的我到底快不快乐就好像离岸的船 无处可停泊可我有时真的有点不知所措迎合太多反而显得笨拙到底那是怎样的我天上的星星在闪烁有没有一颗属于我它时常提醒着我 别犯错回家的路多少曲折泪眼婆娑月影斑驳故乡的烛火 在梦里闪烁你也不要太拼了你这一个人在外面也没人照顾我想离开浪浪山`,},],};},methods: {// 防抖debounce(func, wait, immediate) {var timeout, args, context, timestamp, result;var later = function () {// 据上一次触发时间间隔var last = new Date() - timestamp;// 上次被包装函数被调用时间间隔last小于设定时间间隔waitif (last < wait && last > 0) {timeout = setTimeout(later, wait - last);} else {timeout = null;// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用if (!immediate) {result = func.apply(context, args);if (!timeout) context = args = null;}}};return function () {context = this;args = arguments;timestamp = new Date();var callNow = immediate && !timeout;// 如果延时不存在,重新设定延时if (!timeout) timeout = setTimeout(later, wait);if (callNow) {result = func.apply(context, args);context = args = null;}return result;};},navClick(index) {var scrollBox1 = document.querySelector(".container");scrollBox1.scrollTo(0, document.getElementById(`div${index}`).offsetTop);this.selectedItem = index;},},mounted() {var self = this;var doc = document;var $scrollBox = doc.querySelector(".container");var scrollCallback = self.debounce(function () {var top = $scrollBox.scrollTop; //设置变量top,表示当前滚动条到顶部的值for (var n = 0; n < self.domainLineList.length; n++) {//在此处通过判断滚动条到顶部的值和当前窗口高度的关系来取得和导航索引值的对应关系if (top >= doc.getElementById(`div${n}`).offsetTop) {if (doc.getElementById(`div${n + 1}`)) {if (top <= doc.getElementById(`div${n + 1}`).offsetTop) {self.selectedItem = n;}} else {self.selectedItem = self.domainLineList.length - 1;}}}}, 500);$scrollBox.addEventListener("scroll", scrollCallback);},
};
</script>
css 部分
<style lang="scss" scoped>
body,
html {height: 100%;
}
#app,
* {margin: 0;padding: 0;
}
.nav li a:hover {border-bottom: 2px solid #0052e4;
}
.bbactive {border-bottom: 2px solid #0052e4;
}
li {list-style-type: none;
}
a {text-decoration: none;outline: 0;
}
.container {position: absolute;top: 0;right: 0;bottom: 0;left: 0;display: flex;overflow: auto;width: 800px;height: 500px;margin: auto;
}
.nav {position: fixed;z-index: 5;display: inline-flex;flex-wrap: wrap;width: 150px;height: inherit;background: #fff;
}
.nav li {display: flex;align-items: center;justify-content: center;width: 100%;
}
.nav li a {font-size: 18px;display: block;padding: 10px 5px;cursor: pointer;color: #3c3c3c;
}
article {display: inline-block;width: 80%;margin-left: 150px;
}
article > h1 {width: 100%;padding: 10px;border-bottom: 1px solid #000;
}
</style>

相关文章:

Vue2实现主内容滚动到指定位置时,侧边导航栏也跟随选中变化

需求背景&#xff1a; PC端项目需要实现一个有侧边导航栏&#xff0c;可点击跳转至对应内容区域&#xff0c;类似锚点导航&#xff0c; 同时主内容区域上下滚动时&#xff0c;可实现左侧导航栏选中样式能实时跟随变动的效果。 了解了一下&#xff0c;Element Plus 组件库 和 …...

dev containers plugins for vscode构建虚拟开发环境

0. 需求说明 自用笔记本构建一套开发环境&#xff0c;用docker 虚拟插件 dev containers,实现开发环境的构建&#xff0c;我想构建一套LLMs的环境&#xff0c;由于环境配置太多&#xff0c;不想污染本地环境&#xff0c;所以选择隔离技术 1. 环境准备 vscodedocker 2. 步骤…...

C++ | Leetcode C++题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; class Solution { public:int minMutation(string start, string end, vector<string>& bank) {int m start.size();int n bank.size();vector<vector<int>> adj(n);int endIndex -1;for (int i 0; i < n; i)…...

Qt窗口——QMenuBar

文章目录 QMenuBar示例演示给菜单栏设置快捷键给菜单项设置快捷键添加子菜单添加分割线添加图标 QMenuBar Qt中采用QMenuBar来创建菜单栏&#xff0c;一个主窗口&#xff0c;只允许有一个菜单栏&#xff0c;位于主窗口的顶部、主窗口标题栏下面&#xff1b;一个菜单栏里面有多…...

python网站创建001:内容概览

内容概览&#xff1a; 1. Python环境搭建&#xff08;Python解释器、Pycharm、环境变量等&#xff09; 2. 基础语法&#xff08;条件、循环、输入输出、编码等&#xff09; 3. 数据类型型&#xff08;整型、布尔型、字符串、列表、字典、元组、集合等&#xff09; 4. 函数&…...

代码随想录第22天|

class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index s.size() - 1; // 饼干数组的下标int result 0;for (int i g.size() - 1; i > 0; i--) { // 遍历…...

WPF-基础-02 DispatcherObject类

public abstract class DispatcherObject {protected DispatcherObject();public Dispatcher Dispatcher { get; }public bool CheckAccess();public void VerifyAccess(); }WPF中使用Dispatcher更新界面 xaml<Grid><TextBlock x:Name"tbkShow" Horizontal…...

STM32与51单片机的区别:是否应该直接学习STM32?

STM32与51单片机的区别&#xff1a;是否应该直接学习STM32&#xff1f; 在单片机的世界里&#xff0c;STM32和51单片机都是非常重要的角色。对于初学者来说&#xff0c;是否可以直接跳过51单片机&#xff0c;直接学习STM32&#xff0c;这个问题一直存在争议。让我们深入探讨这…...

【网络底层原理】I/O多路复用技术select、poll和epoll详解与比较

引言 在现代网络编程中&#xff0c;I/O多路复用技术是实现高性能服务器的关键。本文将详细介绍select、poll和epoll这三种技术&#xff0c;并比较它们的工作原理、优势与限制。 1. select 工作原理 select技术使用三个集合&#xff08;读、写、异常&#xff09;来跟踪需要监…...

【JavaScript】LeetCode:51-55

文章目录 51 验证二叉搜索树52 二叉搜索树中第k小的元素53 二叉树的右视图54 二叉树展开为链表55 从前序与中序遍历序列构造二叉树 51 验证二叉搜索树 递归对二叉搜索树进行中序遍历&#xff0c;输出节点的值是单调递增的。方法1&#xff1a;对二叉树进行中序遍历&#xff0c;将…...

Spring MVC 拦截器总结

1.简介 Spring MVC提供了拦截器方便在接口调用前后进行一些通用处理。 2.步骤 1.实现一个拦截器类&#xff0c;共有三处拦截时机&#xff1a; public class Interceptor1 implements HandlerInterceptor {//实现HandlerInterceptor接口//执行handler之前调用//编码格式处理…...

Linux——创建编写并编译一个C程序

一、使用vim编辑器 在Linux系统下&#xff0c;使用vim编辑器创建、编写并编译一个C程序是一个常见的做法。以下是一个详细的步骤指南&#xff0c;我们将创建一个简单的C程序&#xff0c;该程序的功能是输出“Hello, World!”到终端。 步骤 1: 打开vim编辑器并创建C程序文件 …...

window下idea中scala的配置

目录 Scala安装步骤&#xff1a; 1.下载scala安装包 2.配置环境变量&#xff1a; 3.检查scala是否安装成功&#xff1a; 4.idea安装scala插件 5.导入scala-sdk 6.新建scala文件 Scala安装步骤&#xff1a; 1.下载scala安装包 访问Scala官网&#xff1a;https://www.sca…...

Qt C++设计模式->享元模式

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享相同对象来减少内存使用&#xff0c;尤其适合在大量重复对象的情况下。它通过将对象的可共享部分抽取出来&#xff0c;并在多个上下文中共享&#xff0c;从而避免对象的多次创建…...

前端实用技能

焦点聚焦 import Vue from vue // 插件对象(必须有 install 方法, 才可以注入到 Vue.use 中) export default {install () {Vue.directive(fofo, {inserted (el) {el el.querySelector(input)el.focus()}})} }格式化日期格式 export const formatDate (time) > {// 将xx…...

Android LiveData 数据倒灌

相关类型的文章很多&#xff0c;这里只做个人总结和其余的方法推荐 1.什么是数据倒灌&#xff1f; 所谓的“数据倒灌”&#xff1a;其实是类似粘性广播那样&#xff0c;当新的观察者开始注册观察时&#xff0c;会把上次发的最后一次的历史数据传递给当前注册的观察者。 一方…...

umi项目中使用mockj生成数据模拟请求调用

Mock.js简介 Mock.js 是一个轻量级且无依赖的JavaScript库&#xff0c;用于生成模拟数据。它可以帮助开发者在前端开发过程中模拟后端API接口&#xff0c;以便进行快速原型设计和测试。Mock.js 提供了丰富的API来模拟各种类型的数据&#xff0c;如字符串、数字、日期、数组等。…...

事件【JavaScript】

1. 事件 事件是用户或浏览器动作的表示&#xff0c;JavaScript 中的一切交互都是通过事件来处理的。 2. 事件冒泡&#xff08;Event Bubbling&#xff09; 事件冒泡是指事件从最具体的元素&#xff08;即触发事件的元素&#xff09;开始触发&#xff0c;然后逐级向上传播到较…...

【Linux】Linux基本命令

目录 文件和目录操作&#xff1a; ls cd pwd cp mv rm mkdir rmdir touch clear history which/whereis 文件查看和编辑&#xff1a; cat less head tail vi 或 vim sz/rz echo 系统信息和管理&#xff1a; su uname hostname df free top ps ki…...

微软宣称其新工具可纠正人工智能幻觉 但专家依然对此表示怀疑

人工智能经常胡言乱语&#xff0c;微软现在说它有办法解决这个问题&#xff0c;但我们有理由对此持怀疑态度。微软今天发布了一项名为"更正"&#xff08;Correction&#xff09;的服务&#xff0c;它可以自动修改人工智能生成的与事实不符的文本。Correction 首先会标…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...