做的比较好的货运网站注册小程序要多少钱

张小明 2026/1/3 14:51:24
做的比较好的货运网站,注册小程序要多少钱,中英文外贸网站建设,网络营销有哪些主要功能?一、列表虚拟化与海量数据展示在tds中#xff0c;当用户在关键词后加了/a参数#xff0c;会列出所有的文件。此时可能会有上百万个。为了流畅操作和显示这些数据#xff0c;只能借助列表虚拟化技术来实现。result列表虚拟化是一种优化技术#xff0c;用于处理大量数据时提高…一、列表虚拟化与海量数据展示在tds中当用户在关键词后加了/a参数会列出所有的文件。此时可能会有上百万个。为了流畅操作和显示这些数据只能借助列表虚拟化技术来实现。result列表虚拟化是一种优化技术用于处理大量数据时提高性能和用户体验。它通过实时计算来模拟海量数据的展示此时的性能流畅度与数据大小无关仅与实时计算需要的执行时间有关。其核心思想是按需加载和按需渲染。在用户滚动列表时虚拟化技术会自动将大量数据分成多个小块或页面每次只加载和渲染当前视图范围内的数据块。这个过程是事件驱动当用户滚动列表时这些事件通知应用程序加载和渲染新的数据块。在后台虚拟化管理模块还将即将进入视图范围的数据项缓存起来以便快速访问。这减少了对数据源的频繁访问提高了性能。主要原理很简单视口渲染列表虚拟化技术的核心是只渲染用户当前可视区域内的元素而不是一次性渲染整个列表。当用户滚动时动态地加载和卸载元素。占位元素为了保持列表的滚动条高度和布局正确虚拟化列表会使用占位元素来表示未渲染部分的高度。元素复用虚拟化列表通常会重用相同的组件实例数据或UI元素来渲染不同的数据项通过缓存从而减少开销。Winform和Avalonia各自的列表虚拟化技术实现不太一样Winform需要考虑对实时事件手动处理Avalonia则可以依赖自带的响应式模式绑定自动完成。我一起来看看具体都实现吧。二、Winform 与 Avalonia 实现的对比2.1 Winform虚拟列表以ListView为例Winform的虚拟列表的开启需要将控件ListView的VirtualMode属性设置为true。在虚拟化过程中用户滚动列表时ListView会触发两个关键事件需要我们进行实现ListView.CacheVirtualItems事件当用户滚动列表时此事件会被触发。它通知我们哪些项即将进入视图范围我们可以在这个事件中缓存这些项。例如可以使用一个数组来存储这些即将显示的项作为我们的cache。这样可以减少对数据源的频繁访问提高性能。ListView.RetrieveVirtualItem事件当ListView需要将某个项渲染到UI上时会触发此事件。我们可以通过从缓存中读取对应的项并返回给UI来实现。如果缓存中没有找到对应的项我们也可以选择动态生成它。CacheVirtualItems有时候也可以不实现RetrieveVirtualItem也可以实时处理动态生成ListViewItem。以下是简化后的代码实现需要详细实现朋友们可以参考项目源码。private ListViewItem[] CurrentCacheItemsSource; // 用于存放缓存的数组private int firstitem; // 缓存的起始索引private bool refcache false; // 标记是否需要重新缓存// 动态获取对象并提供给UIprivate void ListView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e){// 如果缓存中有对应的项直接从缓存中获取if (CurrentCacheItemsSource ! null e.ItemIndex firstitem e.ItemIndex firstitem CurrentCacheItemsSource.Length){e.Item CurrentCacheItemsSource[e.ItemIndex - firstitem];}else{// 如果缓存中没有对应的项动态生成一个e.Item GenerateListViewItem(e.ItemIndex);}// 如果动态生成失败返回一个空对象以避免异常if (e.Item null){e.Item new ListViewItem(new string[] { 加载失败, , });}}// 生成缓存private void ListView1_CacheVirtualItems(object sender, CacheVirtualItemsEventArgs e){// 如果要缓存的范围已经在缓存中直接返回if (e.StartIndex firstitem e.EndIndex firstitem CurrentCacheItemsSource.Length){return;}// 更新缓存的起始索引和长度firstitem e.StartIndex;int length e.EndIndex - e.StartIndex 1;// 重新生成缓存CurrentCacheItemsSource new ListViewItem[length];for (int i 0; i length; i){// 从数据源中获取对应的项并存入缓存CurrentCacheItemsSource[i] GenerateListViewItem(firstitem i);}// 标记缓存已更新refcache false;// 自动调整列宽以适应内容ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);}// 根据索引生成ListViewItemprivate ListViewItem GenerateListViewItem(int index){// 这里可以根据实际的数据源来生成ListViewItem// 示例从一个列表中获取数据if (index vresultNum){FrnFileOrigin f vlist[index];return new ListViewItem(new string[] { f.Name, f.Path, f.Size.ToString() });}return null;}实际使用中ListViewItem虚拟化的缓存是我们手动将数据关联到一个数组或List中的。当数据发生变化时除了自动刷新各个索引处对象的值外还需要控制长度。如果说缓存有100个元素我们可以通过设定ListView的VirtualListSize属性来改变要显示的元素个数比如只显示前10个这样就可以在数据变小的时避免重新创建数组/列表对象。5.2 Avalonia的虚拟面板 以为例与Winform不同Avalonia的ListBox等控件中没有VirtualMode属性需要通过VirtualizingStackPanel等方式开启xml代码如下。ListBox x:NamefileListBox ItemsSource{Binding Items.DisplayedData, ModeOneWay} ListBox.ItemsPanelItemsPanelTemplateVirtualizingStackPanel / !-- 虚拟化面板 --/ItemsPanelTemplate/ListBox.ItemsPanelListBox.ItemTemplateDataTemplate!-- 自定义实现 --/DataTemplate/ListBox.ItemTemplate/ListBox绑定的核心思想是我们将真实数据的引用存起来Listbox则是绑定到一个IEnumerableT对象接口中。当真实数据需要更新时我们控制IEnumerableT的更新。由于IEnumerableT是延迟实现的(yield return)因此不会产生额外数组开销。可以通过Take(DisplayCount)的方法去动态控制所展示数据的长度类似于Winform的VirtualListSize, 这样能够有效提升性能尤其是在处理大量数据以及处理数据长度频繁变化的场景。在下面的代码中给出了一个ViewModel的示例实现需要用到Avalonia.ReactiveUI库(这个库需要单独在Nuget上下载)。public class DataViewModel : ReactiveObject{private IListFrnFileOrigin _allData [];private IEnumerableFrnFileOrigin _displayedData [];private int _displayCount 100;public IEnumerableFrnFileOrigin DisplayedData{get _displayedData;private set this.RaiseAndSetIfChanged(ref _displayedData, value);}bool isShowOpenWith true;public bool IsShowOpenWith{get isShowOpenWith;set{this.RaiseAndSetIfChanged(ref isShowOpenWith, value);}}public int DisplayCount{get _displayCount;private set{_displayCount value;}}public DataViewModel(){}public void Bind(IListFrnFileOrigin _allData){if (this._allData ! _allData){// 生成测试数据实际中可能从文件或数据库加载this._allData _allData;//UpdateDisplayedData();}}public void UpdateDisplayedData(){// 使用 LINQ 的 Take()这是惰性求值的性能很好DisplayedData _allData.Take(DisplayCount);}// 快速切换到不同数量级public void SetDisplayCount(int count){DisplayCount count;}}在上述代码中DisplayedData 属性通过 RaiseAndSetIfChanged 方法来实现属性值的更新和通知确保绑定到该属性的界面元素能够及时响应数据的变化。而 DisplayCount 属性在更新时会调用 UpdateDisplayedData() 方法从而保证 DisplayedData 的内容始终与 DisplayCount 保持一致。还有一个问题就是Avalonia在VirtualizingStackPanel中虚拟化后可能数据不是瓶颈UI显示同样会造成卡顿尤其是在应用虚拟化时实时渲染发复杂的布局。因此我们可以设置VirtualizingStackPanel.CacheLength属性。这个属性是一个double值决定了在视口上方和下方或左方和右方要保持多少额外的空间。值为 0.5 表示系统在每一侧上下或左右将缓冲视口大小的一半此时将实例化更多UI元素。尽管会占更多内存但大大减少Measure-Arrange循环的次数measure:确定控件所需的最小宽度和高度; arrange:将控件放置在父控件中并确定其最终的位置和大小;Arrange: 否则在UI复杂程度较高时GC压力巨大。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站注册查询官网电脑网页游戏大全

达梦数据库学习心得目录基础概念与架构达梦数据库简介与核心特性达梦数据库体系结构(存储引擎、SQL引擎等)达梦与其他主流数据库(Oracle、MySQL)的对比安装与配置达梦数据库的安装步骤与环境要求初始化配置与参数调优建议常见安装…

张小明 2025/12/29 7:35:11 网站建设

学做ppt的网站 免费腾讯云动态加速WordPress

Kotaemon社区活跃度调查:GitHub星标增长趋势分析 在当前大语言模型(LLM)席卷各行各业的背景下,构建真正可用、可信且可维护的智能对话系统,正从“能不能回答”转向“是否答得准、管不管用、好不好改”。许多团队发现&…

张小明 2025/12/29 7:33:10 网站建设

游戏平台网站建设啊宝贝才几天没做网站

TripoSR实战宝典:5秒从图片到专业3D模型的完整攻略 【免费下载链接】TripoSR 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR 想要将普通照片瞬间变成立体模型吗?TripoSR这款革命性的开源3D重建工具,让每个人都能在短短5…

张小明 2025/12/29 7:31:08 网站建设

广西企业建站微信群免费推广平台

摘要 随着信息技术的快速发展,在线教育平台逐渐成为英语学习的重要工具。传统的英语阅读平台往往采用静态分级方式,难以满足不同学习者的个性化需求。基于此,开发一个智能化的英语阅读分级平台具有重要的现实意义。该平台通过分析用户阅读能力…

张小明 2025/12/29 7:27:03 网站建设

网站有源代码如何做seothe 7 wordpress theme

还在为昂贵的3D扫描设备发愁吗?🎯 现在只需一部智能手机,你就能轻松制作专业级三维模型!Meshroom作为开源摄影测量软件的领跑者,将复杂的3D重建技术简化到了极致。无论你是设计师、考古学家,还是普通爱好者…

张小明 2025/12/29 7:25:01 网站建设

广州营销型网站建设哪家好wordpress实现登录注册

深入探讨DevOps、Kubernetes与企业技术转型 1. 嘉宾介绍 Wian Vos是一位经验丰富的DevOps/云顾问,目前担任Red Hat的解决方案架构师。他早在DevOps概念提出之前就开始从事相关工作,自2005年起参与基础设施自动化,2013年投身容器化浪潮。他曾在ING Bank、Rabobank等机构工作…

张小明 2025/12/29 7:23:00 网站建设