首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin入门(23)适配器的进阶表达

前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。随着用户的下拉或者上拉手势,已经被回收的列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统的资源开销。所以ViewHolder便应运而生,它在列表项首次初始化时,就将其视图对象保存起来,后面再次加载该视图时,即可直接从持有者处获得先前的视图对象,从而减少了系统开销,提高了系统的运行效率。 视图持有者的设计理念固然美好,却苦了Android开发者,每次由BaseAdapter派生新的适配器类,都必须手工处理视图持有者的相关逻辑,实在是个沉重的负担。有鉴于此,循环视图的适配器把视图持有者的重用逻辑剥离出来,由系统自行判断并处理持有者的重用操作。开发者继承RecyclerView.Adapter之后,只要完成业务上的代码逻辑即可,无需进行BaseAdapter视图持有者的手工重用。 现在由Kotlin实现循环视图的适配器类,综合前面两小节提到的优化技术,加上视图持有者的自动重用,适配器代码又得到了进一步的精简。由于循环视图适配器并不提供列表项的点击事件,因此开发者要自己编写包括点击、长按在内的事件处理代码。为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码:

04

通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[中]:管道如何处理请求

从上面的内容我们知道ASP.NET Core请求处理管道由一个服务器和一组中间件构成,所以从总体设计来讲是非常简单的。但是就具体的实现来说,由于其中涉及很多对象的交互,很少人能够地把它弄清楚。如果想非常深刻地认识ASP.NET Core的请求处理管道,我觉得可以分两个步骤来进行:首先,我们可以在忽略具体细节的前提下搞清楚管道处理HTTP请求的总体流程;在对总体流程有了大致了解之后,我们再来补充这些刻意忽略的细节。为了让读者朋友们能够更加容易地理解管道处理HTTP请求的总体流程,我们根据真实管道的实现原理再造

09

ECCV2020 | RecoNet:上下文信息捕获新方法,比non-local计算成本低100倍以上

上下文信息在语义分割的成功中起着不可或缺的作用。事实证明,基于non-local的self-attention的方法对于上下文信息收集是有效的。由于所需的上下文包含空间和通道方面的注意力信息,因此3D表示法是一种合适的表达方式。但是,这些non-local方法是基于2D相似度矩阵来描述3D上下文信息的,其中空间压缩可能会导致丢失通道方面的注意力。另一种选择是直接对上下文信息建模而不进行压缩。但是,这种方案面临一个根本的困难,即上下文信息的高阶属性。本文提出了一种新的建模3D上下文信息的方法,该方法不仅避免了空间压缩,而且解决了高阶难度。受张量正则-多态分解理论(即高阶张量可以表示为1级张量的组合)的启发,本文设计了一个从低秩空间到高秩空间的上下文重建框架(即RecoNet)。具体来说,首先介绍张量生成模块(TGM),该模块生成许多1级张量以捕获上下文特征片段。然后,使用这些1张量通过张量重构模块(TRM)恢复高阶上下文特征。大量实验表明,本文的方法在各种公共数据集上都达到了SOTA。此外,与传统的non-local的方法相比,本文提出的方法的计算成本要低100倍以上。

02

再介绍一篇最新的Contrastive Self-supervised Learning综述论文

自监督学习(Self-supervised learning)最近获得了很多关注,因为其可以避免对数据集进行大量的标签标注。它可以把自己定义的伪标签当作训练的信号,然后把学习到的表示(representation)用作下游任务里。最近,对比学习被当作自监督学习中一个非常重要的一部分,被广泛运用在计算机视觉、自然语言处理等领域。它的目标是:将一个样本的不同的、增强过的新样本们在嵌入空间中尽可能地近,然后让不同的样本之间尽可能地远。这篇论文提供了一个非常详尽的对比自监督学习综述。 我们解释了在对比学习中常用的前置任务(pretext task),以及各种新的对比学习架构。然后我们对不同的方法做了效果对比,包括各种下游任务例如图片分类、目标检测、行为识别等。最后,我们对当前模型的局限性、它们所需要的更多的技术、以及它们未来的发展方向做了总结。

03
领券