uni-app的uni-list列表组件高效使用举例 (仿知乎日报实现)

目录

前言

uni-list组件介绍

基本使用

高级配置与自定义

仿知乎日报实现

知乎的api接口

后台服务实现

知乎日报首页

轮播图界面实现

客户端接口实现

uni-list列表使用

插入日期分割线

下滑分页的实现

完整页面代码

其他资源


前言

在移动应用开发领域,列表展示是最常见的需求之一,无论是新闻列表、商品目录还是社交动态,一个清晰、响应迅速的列表组件是提升用户体验的关键。

Uni-App作为一款优秀的跨平台开发框架,提供了丰富的组件库,其中uni-list组件就是专为列表展示而设计的高效解决方案。本文将深入介绍uni-list组件的使用方法、特点及应用场景,帮助开发者快速掌握这一利器。 

uni-list组件广泛应用于各种场景,如:新闻资讯列表,展示新闻标题、摘要和配图。商品列表,展示商品图片、名称、价格和评价。社交动态,展示用户头像、用户名、动态内容和互动按钮。设置页面,展示各类开关、选项等。

uni-list组件介绍

uni-list是Uni-App框架内置的一个列表组件,它以简洁、灵活的方式封装了列表展示逻辑,支持多种列表项布局,如文本、图标、图片等组合展示。通过uni-list,开发者可以轻松创建美观、响应式的列表界面,无需从零开始编写复杂的布局代码,大大提升了开发效率。

uni-list官方文档地址:uni-app官网

uni-list 列表 - DCloud 插件市场

基本使用

在Uni-App项目中使用uni-list,首先确保在页面模板中引入uni-list组件。uni-list组件属于uni-app扩展组件uni-ui中的一个组件。要想使用它需要先引入uni-ui,引入的方法这里就不说了。

以下是一个简单的示例:

<template><view><uni-list><uni-list-item v-for="(item, index) in listData" :key="index" title="{{item.title}}" note="{{item.note}}" /></uni-list></view>
</template><script>
export default {data() {return {listData: [{ title: '列表项1', note: '详情描述1' },{ title: '列表项2', note: '详情描述2' },// 更多数据...]};}
};
</script>

在上述例子中,通过v-for指令遍历listData数组,为每个数组元素创建一个uni-list-item,展示标题(title)和备注(note)信息。

高级配置与自定义

uni-list组件的强大之处在于其高度的可定制性。

除了基本的文本展示,它还支持图片、图标、开关、滑动操作等多种元素的嵌入,以及不同的布局模式(如左图右文、上下结构等)。

图片展示:通过<uni-list-item>的thumb属性,可以为列表项添加左侧或顶部的缩略图。

图标与按钮:利用extra插槽,可以在列表项末尾添加图标或操作按钮,如删除、编辑等。

滑动操作:结合swipe-action组件,可以为列表项添加滑动时触发的操作菜单,提升交互体验。

示例:

左侧显示略缩图、图标

  • 设置 thumb 属性 ,可以在列表左侧显示略缩图
  • 设置 show-extra-icon 属性,并指定 extra-icon 可以在左侧显示图标
<uni-list><uni-list-item title="列表左侧带略缩图" note="列表描述信息" thumb="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png"thumb-size="lg" rightText="右侧文字"></uni-list-item><uni-list-item :show-extra-icon="true" :extra-icon="extraIcon1" title="列表左侧带扩展图标" ></uni-list-item>
</uni-list>

 开启点击反馈和右侧箭头

  • 设置 clickable 为 true ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 click 事件,click 事件也在此绑定
  • 设置 link 属性,会自动开启点击反馈,并给列表右侧添加一个箭头
  • 设置 to 属性,可以跳转页面,link 的值表示跳转方式,如果不指定,默认为 navigateTo
<uni-list><uni-list-item title="开启点击反馈" clickable  @click="onClick" ></uni-list-item><uni-list-item title="默认 navigateTo 方式跳转页面" link to="/pages/vue/index/index" @click="onClick($event,1)" ></uni-list-item><uni-list-item title="reLaunch 方式跳转页面" link="reLaunch" to="/pages/vue/index/index" @click="onClick($event,1)" ></uni-list-item>
</uni-list>

通过插槽扩展

名称说明
header左/上内容插槽,可完全自定义默认显示
body中间内容插槽,可完全自定义中间内容
footer右/下内容插槽,可完全自定义右侧内容

通过插槽扩展 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 如果 uni-list-item 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 uni-list-item提供了3个可扩展的插槽:headerbodyfooter

  • 当 direction 属性为 row 时表示水平排列,此时 header 表示列表的左边部分,body 表示列表的中间部分,footer 表示列表的右边部分
  • 当 direction 属性为 column 时表示垂直排列,此时 header 表示列表的上边部分,body 表示列表的中间部分,footer 表示列表的下边部分 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。

 示例:

<uni-list><uni-list-item title="自定义右侧插槽" note="列表描述信息" link><template v-slot:header><image class="slot-image" src="/static/logo.png" mode="widthFix"></image></template></uni-list-item><uni-list-item><!-- 自定义 header --><template v-slot:header><view class="slot-box"><image class="slot-image" src="/static/logo.png" mode="widthFix"></image></view></template><!-- 自定义 body --><template v-slot:body><text class="slot-box slot-text">自定义插槽</text></template><!-- 自定义 footer--><template v-slot:footer><image class="slot-image" src="/static/logo.png" mode="widthFix"></image></template></uni-list-item>
</uni-list>

仿知乎日报实现

知乎的api接口

### 当前日报列表
get https://news-at.zhihu.com/api/4/news/latest###历史日报
get https://news-at.zhihu.com/api/4/news/before/20240617### 热门日报
get http://news-at.zhihu.com/api/4/news/hot### 主题日报
get http://news-at.zhihu.com/api/4/news/theme/2024
### 2016年
get http://news-at.zhihu.com/api/4/news/before/20160101### 日报详情
get http://news-at.zhihu.com/api/4/news/9773253
curl https://news-at.zhihu.com/api/4/news/latest |python3 -m json.tool

 

后台服务实现

博主没有直接调用知乎的后台api接口,而是自己使用golang的go-zero框架,从新包装实现了一下。 如果不用golang实现后台接口,以下内容可忽略。可以直接调用知乎的接口来测试。

1.go-api文件定义

syntax = "v1"info (title:   "doc title"desc:    "zhihu background service api"version: "1.0"
)// 0.轮播图
type (SwiperData {id       int    `json:"id"`imageUrl string `json:"imageUrl"`title    string `json:"title"`desc     string `json:"description"`}SwiperResp {code    int          `json:"code"`message string       `json:"message"`data    []SwiperData `json:"data"`}
)
// ......
// 11. 知乎日报 日报列表请求
type (//请求ZhihuNewsReq {date string `path:"date"`}//应答ZhiItem {id    string `json:"id"`image string `json:"image"`title string `json:"title"`url   string `json:"url"`hint  string `json:"hint"`date  string `json:"date"`}ZhihuNewsResp {code    int       `json:"code"`message string    `json:"message"`stories []ZhiItem `json:"stories"`date    string    `json:"date"`}
)// 12. 知乎日报 日报详情
type (//请求ZhiDetailReq {id string `path:"id"`}//应答CtItem {types string `json:"types"`value string `json:"value"`}ZhiDetailResp {code    int      `json:"code"`message string   `json:"message"`content []CtItem `json:"content"`title   string   `json:"title"`author  string   `json:"author"`bio     string   `json:"bio"`avatar  string   `json:"avatar"`image   string   `json:"image"`more    string   `json:"more"`}
)service zhihu-api {@doc (summary: "zhihu api")@handler SwiperHandlerget /api/v1/swiperdata returns (SwiperResp)// 11.知乎日报 news@handler ZhihuNewsHandlerget /api/v1/zhihunews/:date (ZhihuNewsReq) returns (ZhihuNewsResp)// 12.知乎日报 详情@handler ZhiDetailHandlerget /api/v1/zhihudetail/:id (ZhiDetailReq) returns (ZhiDetailResp)
}

2.使用goctl工具自动生成后台项目代码

goctl api go -api go-zhihu/zhihu.api -dir go-zhihu/

3.实现后台接口逻辑

func (l *ZhihuNewsLogic) ZhihuNews(req *types.ZhihuNewsReq) (resp *types.ZhihuNewsResp, err error) {url := "https://news-at.zhihu.com/api/4/news/latest"parsedDate, err := time.Parse("20060102", req.Date)if err != nil {l.Errorf("Error parsing date:", err)}url = "https://news-at.zhihu.com/api/4/news/before/" + parsedDate.AddDate(0, 0, 1).Format("20060102")res, err_ := httpc.Do(l.ctx, http.MethodGet, url, nil)if err_ != nil {l.Error(err_)return nil, err_}defer res.Body.Close()body, err := io.ReadAll(res.Body)if err != nil {l.Errorf("Failed to read response body:", err)return nil, err}var zhi types.ZhiItemvar responseData []types.ZhiItemlist_ := gjson.GetBytes(body, "stories").Array()for _, item := range list_ {zhi.Id = strconv.FormatInt(item.Get("id").Int(), 10)zhi.Title = item.Get("title").String()zhi.Image = item.Get("images.0").String()zhi.Url = item.Get("url").String()zhi.Hint = item.Get("hint").String()zhi.Date = gjson.GetBytes(body, "date").String()responseData = append(responseData, zhi)}if len(list_) != 0 {resp = &types.ZhihuNewsResp{Code:    0,Message: res.Status,Stories: responseData,Date:    gjson.GetBytes(body, "date").String(),}} else {resp = &types.ZhihuNewsResp{Code:    0,Message: res.Status,Stories: responseData,Date:    "",}}return resp, nil
}

知乎日报首页

轮播图界面实现

<template>
<view class="content"><swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval":duration="duration" lazy-render><swiper-item v-for="item in swiperList" :key="item.id"><image :src="item.image" :alt="item.title" mode="widthFix" class="swiper-image"></image><view class="swiper-desc" v-if="item.title">{{ item.title }}</view></swiper-item></swiper>
</view>
</template><script>import { getZhihuNewsList } from '@/api/zhihu.js';export default {data() {return {indicatorDots: true,autoplay: true,interval: 2000,duration: 500,// 轮播图的数据列表,默认为空数组swiperList:[],// 日报数据列表,默认为空数组stories:[],currentDate: '', // 初始化为今天的日期previousDate: '', // 上一个的日期}}
}
</script>

客户端接口实现

// 知乎日报 列表页
/*** date 日期 格式:yyyymmdd*/
export const getZhihuNewsList = async (date) => {try {console.log('getZhihuNewsList request');let date_ = date.replace(/-/g, '')const response = await uni.$http.get('/zhihunews/'+date_);console.log(response);if (response.statusCode !== 200) {uni.showToast({title: '数据请求失败! ',duration: 1500,icon: 'none',});return [];}return response.data;} catch (error) {console.error('Network request failed:', error);uni.showToast({title: '网络请求失败! ',duration: 1500,icon: 'none',});return [];}
};

uni-list列表使用

<uni-list><uni-list-item direction="row" v-for="item in stories" :key="item.id" :title="item.title" ><template v-slot:body><view class="uni-list-box uni-content"><view class="uni-title uni-ellipsis-2">{{item.title}}</view><view class="uni-note"><text>{{item.hint}}</text></view></view></template><template v-slot:footer><view class="uni-thumb" style="margin: 0;"><image :src="item.image" mode="aspectFill"></image></view></template></uni-list-item>
</uni-list>

插入日期分割线

如何插入日期分割线?类似于知乎日报上,当往下滑动时会展示历史日期的日报,需要展示下日期和下滑线。如何在uni-list列表中实现这一效果呢?以下是代码:

<uni-list><template v-for="(item, index) in stories" :key="item.id"><!-- 如果是第一条或者日期有变化,则插入日期分割线 --><uni-list-item direction="row" v-if="isShowDivider(index)" ><template v-slot:header><view class="uni-divider__content"><text>{{item.date.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3')}}</text></view><view class="uni-divider__line"></view></template></uni-list-item><!-- 正常的列表项 --><uni-list-item direction="row" :title="item.title"><template v-slot:body><view class="uni-list-box uni-content"><view class="l-title uni-ellipsis-2">{{item.title}}</view><view class="uni-note"><text>{{item.hint}}</text></view></view></template><template v-slot:footer><view class="uni-thumb" style="margin: 0;"><image :src="item.image" mode="aspectFill"></image></view></template></uni-list-item></template>
</uni-list>

下滑分页的实现

当向页面下滑动时,需要展示历史日期的日报,通过onReachBottom()这一回调可以实现效果。

        /*** 上拉加载回调函数*/onReachBottom() {console.log('onReachBottom')this.getmorenews()}methods: {formatDate(date) {const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1const day = String(date.getDate()).padStart(2, '0');return `${year}-${month}-${day}`;},isShowDivider(index) {if (this.stories[index].date !== this.previousDate) {this.previousDate = this.stories[index].date;console.log(this.previousDate)if(index!==0){return true;}}return false;},// 触底之后触发函数,getmorenews() {//this.loadStatu = true//this.listStatus = 'loading'//每次滑动都递减一天const date_ = new Date(this.currentDate);console.log(date_);date_.setDate(date_.getDate() - 1); // 日期减一//console.log(date_);let currentDate_ = this.formatDate(date_);console.log('currentDate_:'+currentDate_);getZhihuNewsList(currentDate_).then(result => {console.log("getZhihuNewsList,result:");console.log(result);this.currentDate = this.formatDate(date_);this.stories = this.stories.concat(result.stories);});}},

完整页面代码

<template><view class="content"><swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval":duration="duration" lazy-render><swiper-item v-for="item in swiperList" :key="item.id"><image :src="item.image" :alt="item.title" mode="widthFix" class="swiper-image"></image><view class="swiper-desc" v-if="item.title">{{ item.title }}</view></swiper-item></swiper><!-- 通过 loadMore 组件实现上拉加载效果,如需自定义显示内容,可参考:https://ext.dcloud.net.cn/plugin?id=29 --><uni-list><template v-for="(item, index) in stories" :key="item.id"><!-- 如果是第一条或者日期有变化,则插入日期分割线 --><uni-list-item direction="row" v-if="isShowDivider(index)" ><template v-slot:header><view class="uni-divider__content"><text>{{item.date.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3')}}</text></view><view class="uni-divider__line"></view></template></uni-list-item><!-- 正常的列表项 --><uni-list-item direction="row" :title="item.title"><template v-slot:body><view class="uni-list-box uni-content"><view class="l-title uni-ellipsis-2">{{item.title}}</view><view class="uni-note"><text>{{item.hint}}</text></view></view></template><template v-slot:footer><view class="uni-thumb" style="margin: 0;"><image :src="item.image" mode="aspectFill"></image></view></template></uni-list-item></template></uni-list></view>
</template><script>import { getZhihuNewsList } from '@/api/zhihu.js';export default {data() {return {indicatorDots: true,autoplay: true,interval: 2000,duration: 500,// 轮播图的数据列表,默认为空数组swiperList:[],// 日报数据列表,默认为空数组stories:[],currentDate: '', // 初始化为今天的日期previousDate: '', // 上一个的日期}},onLoad() {this.currentDate = this.formatDate(new Date())this.previousDate = this.currentDate},methods: {formatDate(date) {const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1const day = String(date.getDate()).padStart(2, '0');return `${year}-${month}-${day}`;},isShowDivider(index) {if (this.stories[index].date !== this.previousDate) {this.previousDate = this.stories[index].date;console.log(this.previousDate)if(index!==0){return true;}}return false;},// 触底之后触发函数,getmorenews() {//this.loadStatu = true//this.listStatus = 'loading'//每次滑动都递减一天const date_ = new Date(this.currentDate);console.log(date_);date_.setDate(date_.getDate() - 1); // 日期减一//console.log(date_);let currentDate_ = this.formatDate(date_);console.log('currentDate_:'+currentDate_);getZhihuNewsList(currentDate_).then(result => {console.log("getZhihuNewsList,result:");console.log(result);this.currentDate = this.formatDate(date_);this.stories = this.stories.concat(result.stories);});}},mounted() {console.log("mounted")console.log('currentDate:'+this.currentDate);getZhihuNewsList(this.currentDate).then(result => {console.log("getZhihuNewsList,result:");console.log(result);this.stories = result.stories;this.swiperList = result.stories;});},/*** 下拉刷新回调函数*/onPullDownRefresh() {console.log('onPullDownRefresh')},/*** 上拉加载回调函数*/onReachBottom() {console.log('onReachBottom')this.getmorenews()}}
</script><style lang="scss" scoped>@import '@/common/uni-ui.scss';page {display: flex;flex-direction: column;box-sizing: border-box;background-color: #efeff4;min-height: 100%;height: auto;}.content {width: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;}.uni-list-box {margin-top: 0;}.l-title {font-weight: bold;font-size: 30rpx;color: #3b4144;}.uni-content {padding-right: 10rpx;}.uni-note {display: flex;margin: 0;justify-content: space-between;}.thumb-image {width: 100%;height: 100%;}/*布局和溢出隐藏规则*/.ellipsis {display: flex;overflow: hidden;}.uni-ellipsis-1 {overflow: hidden;white-space: nowrap;  /*nowrap;:强制文本在一行内显示,不允许换行*/text-overflow: ellipsis;}/*多行文本的省略效果*/.uni-ellipsis-2 {overflow: hidden;/*表示当文本内容超出所在容器的宽度时,用省略号来代替超出的部分*/text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}.swiper {width: 100%;height: 300rpx;}.swiper-image{width: 100%; height: auto;}.swiper-desc {position: absolute;bottom: 20px;left: 0;right: 0;color: #fff;background-color: rgba(0, 0, 0, 0.5);padding: 10px;text-align: center;}.swiper-item {display: block;height: 300rpx;line-height: 300rpx;text-align: center;}.date-divider {color: #8f8f94;font-size: 12rpx;font-weight: bold;}.line-divider {height: 1px;width: 75%;margin-left: 10rpx;margin-top: 15rpx;background-color: #D8D8D8; /* 分割线颜色 */}
</style>

完整工程源码

最后,附上测试的工程完整源码。

资源下载地址:https://download.csdn.net/download/qq8864/89377440

人到了一定年纪,你再去回首过往,曾经那些重大的时刻,我们也一步步咬紧牙关挺过去,一步步熬过许多最黑暗的日子,走到如今。关关难过,关关通过,一路上,我们也练就了一身的本领,也拥有一些处事不惊的能力和适应生活的心态。

杨绛先生说:“生活并非都是繁花锦簇,所有的好,不过是来自内心的知足,眼里的热爱,以及对万千世界删繁就简的态度。与独处相安,与万事言和。这烟火人间,事事值得,事事也遗憾。”

生活不可能都是鲜花和阳光,也充满无数的荆棘和坎坷,走过的每一段岁月,曾经都有美好照亮前行,也有一些遗憾留在心中。

生活总是喜忧参半,没有十全十美,万事只求半称心,所有的美好不过都是来自于懂得知足常乐。

生活都是在于选择之中,选择了一条路,注定也会失去另一条路的风景,遗憾是人生常态而已。不如充实自己,什么让你快乐,你就去做什么,不要非要去求什么意义。对我来说,虽然天色以晚,别人喜欢刷抖音,而我喜欢敲代码和写文字,简称码字。这使我快乐,我走在充实自己的路上,足以。

如果钓鱼的意义是为了吃鱼肉,那生活将是多么无趣。

其他资源

 uni-list 列表 - DCloud 插件市场

https://news-at.zhihu.com/api/4/news/latest

-Api/豆瓣电影.md at master · shichunlei/-Api · GitHub

https://www.cnblogs.com/oopsguy/p/5968447.html

uni-app官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt: linux 下用纯c 编写ui

在Linux下用纯C语言编写用户界面&#xff08;UI&#xff09;&#xff0c;通常会使用GTK或Xlib。GTK是一个更高级的库&#xff0c;提供了丰富的控件和功能&#xff0c;而Xlib则是一个更底层的库&#xff0c;提供了直接操作X Window系统的功能。 下面是一个使用GTK在Linux上创建…

1.3自然语言的分布式表示-word2vec

文章目录 0基于计数的方法的问题1什么是基于推理的方法2神经网络中单词的表示2.1 MatMul 层的实现 3简单word2vec的实现3.1 CBOW模型的结构3.1.1神经元视角3.1.2层的视角3.1.3多层共享权重时存在的问题 3.2 CBOW模型的学习3.3单词的分布式表示 代码都位于&#xff1a;nlp&#…

【机器学习 复习】第4章 决策树算法(重点)

一、概念 1.原理看图&#xff0c;非常简单&#xff1a; &#xff08;1&#xff09;蓝的是节点&#xff0c;白的是分支&#xff08;条件&#xff0c;或者说是特征&#xff0c;属性&#xff0c;也可以直接写线上&#xff0c;看题目有没有要求&#xff09;&#xff0c; &#xff…

报错:ZeroDivisionError_ division by zero

问题&#xff1a;除数为0 原代码错误来源 # 归一化 , 保留6位小数 w round(w / img_w, 6) h round(h / img_h, 6) cx round(cx / img_w, 6) cy round(cy / img_h, 6) # print(cls_id, cx, cy, w, h) # 结果保存到数据labels文件夹中的txt文件 out_file.write(str(cls_id) …

com.lowagie:itext:jar:2.1.7.js9 was not found

1 在 https://jaspersoft.jfrog.io/ui/native/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js9/下载com/lowagie/itext/2.1.7.js9/itext-2.1.7.js9.jar的包&#xff0c; 2 在本地maven仓库com.lowagie.itext.2.1.7的目录下&#xff0c;将itext-2.1.7.js9.jar复制更名为…

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之二,数据的预处理)

训练神经网络的几个重要组成部分 二 2 Data Preprocessing数据的预处理 数据预处理的几种方法 2&#xff0c;1 数据的零点中心化 数据的零点中心化的目的就是为了把数据的整体分布拉回到原点附近&#xff0c;也就是让数据的整体均值变为0。 ​ 2&#xff0c;2 数据的标准化 数…

JDBC(简介、入门与IDEA中导入MySQL的驱动)

&#xff08;建议学完 MySQL 的基础部分&#xff09; JDBC——简而言之&#xff1a;用 Java 语言操作数据库。 Java DataBase Connectivity&#xff08;Java 语言连接数据库&#xff09; 目录 一、引言 &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;JDBC 简…

[信号与系统]傅里叶变换、卷积定理、和为什么时域的卷积等于频域相乘。

前言 最近学习以下IIR滤波器和FIR滤波器 前置 1. 时域和频域 时域和频域代表着频率和时间与振幅的一一对应关系 2. 卷积运算 关于卷积的定义&#xff0c;详情请看 这篇文章能让你明白卷积 卷积运算是一种数学运算&#xff0c;广泛应用于信号处理、图像处理、控制系统和概…

【ARMv8/v9 GIC 系列 2 -- GIC SPI 中断的 enable和 disable 配置】

文章目录 GIC 中断 Enable 和 DisableGICD_ISENABLER<n>GICD_ICENABLER<n>参数 n使用举例代码实现注意事项 GIC 中断 Enable 和 Disable 在ARMv8架构中&#xff0c;通用中断控制器&#xff08;GIC&#xff09;负责管理处理器的中断。为了控制和管理这些中断&#…

网络安全管理组织架构复习

文章目录 安全管理机构岗位设置安全要求要求解读 安全管理机构 安全管理的重要实施条件就是有一个统一指挥、协调有序、组织有力的安全管理机构,这是网络安全管理得以实施、推广的基础。 通过构建从单位最高管理层到执行层及具体业务运营层的组织体系&#xff0c;可以明确各个…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十四)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 22 节&#xff09; P22《21.ArkUI-实现摇杆功能》 本节我们将小鱼动画案例中的按钮控制改为摇杆控制&#xff0c;用来熟悉和巩固…

【多模态论文】CLIP(Contrastive Language-Image Pre-training)

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 链接&#xff1a;https://arxiv.org/abs/2103.00020 摘要 问题&#xff1a; 对预定的类别进行预测&#xff0c;这种有监督的训练形式受限于额外标记数据 。如何利用图像的原始文本来获…

图像数字化基础

一、像素 1、获取图像指定位置的像素 import cv2 image cv2.imread("E:\\images\\2.png") px image[291,218] print("坐标(291,218)上的像素的BGR值是&#xff1a;",px) &#xff08;1&#xff09;RGB色彩空间 R通道&#xff1a;红色通道 G通道&…

RH850---注意问题积累--1

硬件规格(引脚分配&#xff0c;内存映射&#xff0c;外设功能规格、电气特性、时序图)和操作说明 注意:有关使用的详细信息&#xff0c;请参阅应用说明 ---------外围函数。。。 1:存储指令完成与后续同步指令的一代 当控制寄存器被存储指令更新时&#xff0c;从存储的执行开始…

南京邮电大学计算机网络实验二(网络路由器配置RIP协议)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验步骤四、实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;五、报告资源 一、 实验目的和要求 掌握思科路由器的运行过程&#xff0c;掌握思科路由器的硬件连线与接口&#xff0c;掌…

VBA学习(13):获取多层文件夹内文件名并建立超链接

代码使用了FileSystemObject对象和递归的方法实现文件夹和文件的遍历功能。分别将文件夹名称和文件名提取在表格的A/B列&#xff0c;并对文件名创建了超链接。 示例代码如下&#xff1a; Sub AutoAddLink()Dim strFldPath As StringWith Application.FileDialog(msoFileDialog…

如何下载DVS Gesture数据集?解决tonic.datasets.DVSGesture错误HTTP Error 403: Forbidden

1 问题 DVSGesture数据集是一个专注于动态视觉传感&#xff08;Dynamic Vision Sensor, DVS&#xff09;技术的数据集&#xff0c;它包含了基于事件的图像记录&#xff0c;用于手势识别任务。DVSGesture数据集由一系列动态图像组成&#xff0c;这些图像是通过动态视觉传感器捕…

抖音矩阵系统搭建,AI剪辑短视频,一键管理矩阵账号

目录 前言&#xff1a; 一、抖音矩阵系统有哪些功能&#xff1f; 1.AI智能文案 2.多平台账号授权 3.多种剪辑模式 4. 矩阵一键发布&#xff0c;智能发布 5.抖音爆店码功能 6.私信实时互动 7.去水印及外链 二、抖音矩阵系统可以解决哪些问题&#xff1f; 总结&#xff…

理解HTTP请求格式

HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff1b;HTTP是一个客户端&#xff08;用户&#xff09;和服务端&#xff08;网站&#xff09;之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…

Gobject tutorial 八

The GObject base class Object memory management Gobject的内存管理相关的API很复杂&#xff0c;但其目标是提供一个基于引用计数的灵活的内存管理模式。 下面我们来介绍一下&#xff0c;与管理引用计数相关的函数。 Reference Count 函数g_object_ref和g_object_unref的…