HarmonyOS4-学习入门知识总结

简单的组件学习:

/*** weip 自定义控件* 自定义构建函数也是需要充电的地方,分全局和局部的* 全局:需要添加function关键字  局部:不加function关键字* @Styles function 自定义公共样式 分全局和局部* @Extends(Text) 继承模式 只能写成全局的* export:导出组件*/
@Component
export struct Header {private title: ResourceStr;build() {// 标题部分Row() {// 资源自行替换,返回iconImage($r('app.media.app_icon')).width(30)Text(this.title).fontSize(30).fontWeight(FontWeight.Bold)Blank()// 资源自行替换,分享iconImage($r('app.media.app_icon')).width(30)}.width('100%').height(30)}
}

ImagesPage.ets:

引用header组件

/*** 导入head组件*/
import { Header } from '../components/HeadComponents'// 全局自定义构建函数  function:代表全局
@Builder function ItemCard() {}// 组件内的局部函数需要加this
// 自定义公共样式
@Styles function fillScreen() {.width('100%').height('100%').backgroundColor('#EFEFEF').padding(20)
}// 自定义字体样式 需使用Extend() 继承模式,只能写在全局位置
@Extend(Text) function priceText() {.fontSize(18).fontColor('#F36')
}@Entry
@Component
struct Index {@State imageWidth: number = 150// ForEach:循环遍历数组,根据数组内容渲染页面组件,超过屏幕的东西就看不到,也滑动不了,所以后面统一使用List组件build() {// 纵向布局 主轴/交叉轴,一般只设置主轴,不设置交叉轴Column() {// 标题Header({title: "图片详情"}).padding({left: 20, top: 20, right: 20, bottom: 20})// 横向布局 主轴/交叉轴,一般只设置主轴,不设置交叉轴Row(){Image($r('app.media.icon')).width(this.imageWidth).interpolation(ImageInterpolation.High)}.width('100%').height(400).justifyContent(FlexAlign.Center)// Row容器 放一行Row() {Text($r('app.string.width_label')).fontSize(20).fontWeight(FontWeight.Bold).fontColor('#663')TextInput({ placeholder: '请输入图片宽度', text:this.imageWidth.toFixed(0) }).width(150).backgroundColor('#FFF').type(InputType.Number).onChange(value => {console.log(value)this.imageWidth = parseInt(value)})}.width('100%').padding({left: 14,right: 14}).justifyContent(FlexAlign.SpaceBetween) // 中间留空// 分割线Divider().width('91%')// 两个按钮Row(){Button('缩小').width(80).fontSize(20).onClick(() => {if (this.imageWidth >= 10) {this.imageWidth -= 10;}})Button('放大').width(80).fontSize(20).onClick(() => {if (this.imageWidth < 300) {this.imageWidth += 10;}})}.width('100%').margin({top: 35, bottom: 35}).justifyContent(FlexAlign.SpaceEvenly)Slider({min: 100,max: 300,value: this.imageWidth,step: 10}).width('100%').blockColor('#36D').trackThickness(7).showTips(true).onChange(value => {// value:当前滑块值this.imageWidth = value;})}.width('100%').height('100%')}
}/*** struct:自定义组件 可复用的UI单元* 装饰器:用来装饰类结构、方法、变量* @Component:标记自定义组件* @Entry:标记当前组件是入口组件* @State:标记一个变量是状态变量,值变化时会触发UI更新* build():UI描述,其内部以声明式方式描述UI结构* 内置组件:ArkUI提供的组件,比如容器组件如Row、Column* 基础组件:自带样式和功能的页面元素,如Text* 属性方法:设置组件的UI样式* 事件方法:设置组件的事件回调* 组件通用属性、特有属性(图片插值)*/

Index.ets:

一般是应用程序的入口

@Entry  // 入口組件
@Component
struct Index {@State message: string = 'Hello World'build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).fontColor('#36D').onClick(() => {this.message = 'Hello ArkTS!';})// Image('https://bkimg.cdn.bcebos.com/pic/bd315c6034a85edf8db139b7db031e23dd54564edf55?x-bce-process=image/format,f_auto/quality,Q_70/resize,m_lfit,limit_1,w_536')//   .width('50%')// 引用本地图片资源地址Image($r('app.media.icon')).width(250).interpolation(ImageInterpolation.High)}.width('100%')}.height('100%')}
}/*** struct:自定义组件 可复用的UI单元* 装饰器:用来装饰类结构、方法、变量* @Component:标记自定义组件* @Entry:标记当前组件是入口组件* @State:标记一个变量是状态变量,值变化时会触发UI更新* build():UI描述,其内部以声明式方式描述UI结构* 内置组件:ArkUI提供的组件,比如容器组件如Row、Column* 基础组件:自带样式和功能的页面元素,如Text* 属性方法:设置组件的UI样式* 事件方法:设置组件的事件回调* 组件通用属性、特有属性(图片插值)*/

PropPage.ets:
/*** 自定义任务类*/
class Task {// 静态变量,所有对象共享变量static id: number = 1// 任务名称   半角:``name: string = `任务${Task.id++}`// 任务状态:是否完成finished: boolean = false
}// 统一的卡片样式
@Styles function card() {.width('95%').padding(20).backgroundColor(Color.White).borderRadius(15).shadow({radius: 6, color: '#1F000000', offsetX: 2, offsetY: 4})
}// 任务完成样式
@Extend(Text) function finishedTask() {.decoration({type: TextDecorationType.LineThrough}).fontColor('#B1B2B1')
}// 任务统计信息的实体类【c】
class StaticInfo {totalTask: number = 0;finishTask: number = 0;
}@Entry
@Component
struct PropPage {// 总任务数量@State totalTask: number = 0// 已完成任务数量@State finishTask: number = 0build() {Column({space: 10}){// 任务进度卡片 子组件TaskStatistics({finishTask:this.finishTask, totalTask: this.totalTask})// 任务列表,包含新增任务 @Link totalTask:$finishTask:变量的引用TaskList({finishTask:$finishTask, totalTask: $totalTask})}.width('100%').height('100%').backgroundColor('#F1F2F3')}
}@Component
struct TaskList {// 总任务数量@Link totalTask: number// 已完成任务数量@Link finishTask: number// 任务数组@State tasks: Task[] = []handleTaskChange(){// 更新任务总数量this.totalTask = this.tasks.length// 更新已完成任务数量this.finishTask = this.tasks.filter(item => item.finished).length}build() {Column() {// 2、新增任务按钮Button('新增任务').width(200).onClick(() => {// 新增任务数据this.tasks.push(new Task())// 更新任务总数量this.handleTaskChange()})// 3、任务列表List({space: 10}) {ForEach(this.tasks,(item: Task, index) => {ListItem() {Row() {// 任务名Text(item.name).fontSize(20)// 任务复选框Checkbox().select(item.finished).onChange(isSelected => {// 任务状态发生变更,更新当前任务状态item.finished = isSelected// 更新已完成任务数量this.handleTaskChange()})}.card().justifyContent(FlexAlign.SpaceBetween)}.swipeAction({end: this.DeleteButton(index)})})}.width('100%').layoutWeight(1).alignListItem(ListItemAlign.Center)}}@Builder DeleteButton(index: number) {Button(){Image($r('app.media.icon')).fillColor(Color.White).width(20)}.width(40).height(40).type(ButtonType.Circle).backgroundColor(Color.Red).margin(5).onClick(() => {// 从角标开始删 删1个this.tasks.splice(index, 1)this.handleTaskChange()})}
}/*** 任务进度卡片 子组件* 子组件是TaskStatistics  此时父组件是PropPage.ets* Prop:变量不能初始化 单向同步【父组件-->子组件】* Link:支持传对象 Prop:不支持传对象* provider 跨组件传输* consume 跨组件传输*/
@Component
struct TaskStatistics {// 总任务数量@Prop totalTask: number// 已完成任务数量@Prop finishTask: numberbuild() {Row() {// 任务进度Text('任务进度').fontSize(30).fontWeight(FontWeight.Bold)// 堆叠容器Stack() {// 进度条Progress({value: this.finishTask,total: this.totalTask,type: ProgressType.Ring})// 1/5Row() {Text(this.finishTask.toString()).fontSize(24).fontColor('#36D')Text(' / ' + this.totalTask.toString()).fontSize(24)}}}.card().margin({top: 20, bottom: 20}).justifyContent(FlexAlign.SpaceEvenly)}
}

预览效果图:

注解的学习:

/*** 自定义任务类*/
class Task {// 静态变量,所有对象共享变量static id: number = 1// 任务名称   半角:``name: string = `任务${Task.id++}`// 任务状态:是否完成finished: boolean = false
}// 统一的卡片样式
@Styles function card() {.width('95%').padding(20).backgroundColor(Color.White).borderRadius(15).shadow({radius: 6, color: '#1F000000', offsetX: 2, offsetY: 4})
}// 任务完成样式
@Extend(Text) function finishedTask() {.decoration({type: TextDecorationType.LineThrough}).fontColor('#B1B2B1')
}// 任务统计信息的实体类
class StatInfo {totalTask: number = 0;finishTask: number = 0;
}/*** 父组件*/
@Entry
@Component
struct PropPage {// 统计信息  【父亲】@State stat: StatInfo = new StatInfo()build() {Column({space: 10}){// 任务进度卡片 子组件TaskStatistics({finishTask:this.stat.finishTask, totalTask: this.stat.totalTask})// 任务列表,包含新增任务 @Link totalTask:$finishTask:变量的引用TaskList({stat:$stat})}.width('100%').height('100%').backgroundColor('#F1F2F3')}
}@Component
struct TaskList {// 统计信息【儿子】  Link可以传对象@Link stat: StatInfo// 任务数组@State tasks: Task[] = []handleTaskChange(){// 更新任务总数量this.stat.totalTask = this.tasks.length// 更新已完成任务数量this.stat.finishTask = this.tasks.filter(item => item.finished).length}build() {Column() {// 2、新增任务按钮Button('新增任务').width(200).onClick(() => {// 新增任务数据this.tasks.push(new Task())// 更新任务总数量this.handleTaskChange()})// 3、任务列表List({space: 10}) {ForEach(this.tasks,(item: Task, index) => {ListItem() {Row() {// 任务名Text(item.name).fontSize(20)// 任务复选框Checkbox().select(item.finished).onChange(isSelected => {// 任务状态发生变更,更新当前任务状态item.finished = isSelected// 更新已完成任务数量this.handleTaskChange()})}.card().justifyContent(FlexAlign.SpaceBetween)}.swipeAction({end: this.DeleteButton(index)})})}.width('100%').layoutWeight(1).alignListItem(ListItemAlign.Center)}}@Builder DeleteButton(index: number) {Button(){Image($r('app.media.icon')).fillColor(Color.White).width(20)}.width(40).height(40).type(ButtonType.Circle).backgroundColor(Color.Red).margin(5).onClick(() => {// 从角标开始删 删1个this.tasks.splice(index, 1)this.handleTaskChange()})}
}/*** 任务进度卡片 子组件* 子组件是TaskStatistics  此时父组件是PropPage.ets* Prop:变量不能初始化 单向同步【父组件-->子组件】* Link:支持传对象 Prop:不支持传对象* provider 跨组件传输* consume 跨组件传输*/
@Component
struct TaskStatistics {// 总任务数量@Prop totalTask: number// 已完成任务数量@Prop finishTask: numberbuild() {Row() {// 任务进度Text('任务进度').fontSize(30).fontWeight(FontWeight.Bold)// 堆叠容器Stack() {// 进度条Progress({value: this.finishTask,total: this.totalTask,type: ProgressType.Ring})// 1/5Row() {Text(this.finishTask.toString()).fontSize(24).fontColor('#36D')Text(' / ' + this.totalTask.toString()).fontSize(24)}}}.card().margin({top: 20, bottom: 20}).justifyContent(FlexAlign.SpaceEvenly)}
}

跨组件传输数据:

@Provider @Consume

这种相对比较费内存,非跨组件不建议使用

/*** 自定义任务类*/
class Task {// 静态变量,所有对象共享变量static id: number = 1// 任务名称   半角:``name: string = `任务${Task.id++}`// 任务状态:是否完成finished: boolean = false
}// 统一的卡片样式
@Styles function card() {.width('95%').padding(20).backgroundColor(Color.White).borderRadius(15).shadow({radius: 6, color: '#1F000000', offsetX: 2, offsetY: 4})
}// 任务完成样式
@Extend(Text) function finishedTask() {.decoration({type: TextDecorationType.LineThrough}).fontColor('#B1B2B1')
}// 任务统计信息的实体类
class StatInfo {totalTask: number = 0;finishTask: number = 0;
}/*** 父组件*/
@Entry
@Component
struct PropPage {// 统计信息  【父亲】@Provide stat: StatInfo = new StatInfo()build() {Column({space: 10}){// 任务进度卡片 子组件TaskStatistics()// 任务列表,包含新增任务 @Link totalTask:$finishTask:变量的引用TaskList()}.width('100%').height('100%').backgroundColor('#F1F2F3')}
}@Component
struct TaskList {// 统计信息【儿子】  Link可以传对象@Consume stat: StatInfo// 任务数组@State tasks: Task[] = []handleTaskChange(){// 更新任务总数量this.stat.totalTask = this.tasks.length// 更新已完成任务数量this.stat.finishTask = this.tasks.filter(item => item.finished).length}build() {Column() {// 2、新增任务按钮Button('新增任务').width(200).onClick(() => {// 新增任务数据this.tasks.push(new Task())// 更新任务总数量this.handleTaskChange()})// 3、任务列表List({space: 10}) {ForEach(this.tasks,(item: Task, index) => {ListItem() {Row() {// 任务名Text(item.name).fontSize(20)// 任务复选框Checkbox().select(item.finished).onChange(isSelected => {// 任务状态发生变更,更新当前任务状态item.finished = isSelected// 更新已完成任务数量this.handleTaskChange()})}.card().justifyContent(FlexAlign.SpaceBetween)}.swipeAction({end: this.DeleteButton(index)})})}.width('100%').layoutWeight(1).alignListItem(ListItemAlign.Center)}}@Builder DeleteButton(index: number) {Button(){Image($r('app.media.icon')).fillColor(Color.White).width(20)}.width(40).height(40).type(ButtonType.Circle).backgroundColor(Color.Red).margin(5).onClick(() => {// 从角标开始删 删1个this.tasks.splice(index, 1)this.handleTaskChange()})}
}/*** 任务进度卡片 子组件* 子组件是TaskStatistics  此时父组件是PropPage.ets* Prop:变量不能初始化 单向同步【父组件-->子组件】* Link:支持传对象 Prop:不支持传对象* provider 跨组件传输* consume 跨组件传输*/
@Component
struct TaskStatistics {// 统计信息@Consume stat: StatInfobuild() {Row() {// 任务进度Text('任务进度').fontSize(30).fontWeight(FontWeight.Bold)// 堆叠容器Stack() {// 进度条Progress({value: this.stat.finishTask,total: this.stat.totalTask,type: ProgressType.Ring})// 1/5Row() {Text(this.stat.finishTask.toString()).fontSize(24).fontColor('#36D')Text(' / ' + this.stat.totalTask.toString()).fontSize(24)}}}.card().margin({top: 20, bottom: 20}).justifyContent(FlexAlign.SpaceEvenly)}
}

// bind(this)

/*** 自定义任务类*/
@Observed
class Task {// 静态变量,所有对象共享变量static id: number = 1// 任务名称   半角:``name: string = `任务${Task.id++}`// 任务状态:是否完成finished: boolean = false
}// 统一的卡片样式
@Styles function card() {.width('95%').padding(20).backgroundColor(Color.White).borderRadius(15).shadow({radius: 6, color: '#1F000000', offsetX: 2, offsetY: 4})
}// 任务完成样式
@Extend(Text) function finishedTask() {.decoration({type: TextDecorationType.LineThrough}).fontColor('#B1B2B1')
}// 任务统计信息的实体类
class StatInfo {totalTask: number = 0;finishTask: number = 0;
}/*** 父组件*/
@Entry
@Component
struct PropPage {// 统计信息  【父亲】@Provide stat: StatInfo = new StatInfo()build() {Column({space: 10}){// 任务进度卡片 子组件TaskStatistics()// 任务列表,包含新增任务 @Link totalTask:$finishTask:变量的引用TaskList()}.width('100%').height('100%').backgroundColor('#F1F2F3')}
}@Component
struct TaskList {// 统计信息【儿子】  Link可以传对象@Consume stat: StatInfo// 任务数组@State tasks: Task[] = []handleTaskChange(){// 更新任务总数量this.stat.totalTask = this.tasks.length// 更新已完成任务数量this.stat.finishTask = this.tasks.filter(item => item.finished).length}build() {Column() {// 2、新增任务按钮Button('新增任务').width(200).onClick(() => {// 新增任务数据this.tasks.push(new Task())// 更新任务总数量this.handleTaskChange()})// 3、任务列表List({space: 10}) {ForEach(this.tasks,(item: Task, index) => {ListItem() {// bind(this)  绑定父组件的thisTaskItem({item: item, onTaskChange: this.handleTaskChange.bind(this)})}.swipeAction({end: this.DeleteButton(index)})})}.width('100%').layoutWeight(1).alignListItem(ListItemAlign.Center)}}@Builder DeleteButton(index: number) {Button(){Image($r('app.media.icon')).fillColor(Color.White).width(20)}.width(40).height(40).type(ButtonType.Circle).backgroundColor(Color.Red).margin(5).onClick(() => {// 从角标开始删 删1个this.tasks.splice(index, 1)this.handleTaskChange()})}
}/*** 自定义任务的item项* 方法传递*/
@Component
struct TaskItem {@ObjectLink item: Task// 变量的类型是个函数类型onTaskChange: () => voidbuild() {Row() {// 任务名 如果完成,需要变灰if (this.item.finished) {Text(this.item.name).fontSize(20).finishedTask()} else {Text(this.item.name).fontSize(20)}// 任务复选框Checkbox().select(this.item.finished).onChange(isSelected => {// 任务状态发生变更,更新当前任务状态this.item.finished = isSelected// 更新已完成任务数量//this.handleTaskChange()this.onTaskChange()})}.card().justifyContent(FlexAlign.SpaceBetween)}
}/*** 任务进度卡片 子组件* 子组件是TaskStatistics  此时父组件是PropPage.ets* Prop:变量不能初始化 单向同步【父组件-->子组件】* Link:支持传对象 Prop:不支持传对象* provider 跨组件传输* consume 跨组件传输*/
@Component
struct TaskStatistics {// 统计信息@Consume stat: StatInfobuild() {Row() {// 任务进度Text('任务进度').fontSize(30).fontWeight(FontWeight.Bold)// 堆叠容器Stack() {// 进度条Progress({value: this.stat.finishTask,total: this.stat.totalTask,type: ProgressType.Ring})// 1/5Row() {Text(this.stat.finishTask.toString()).fontSize(24).fontColor('#36D')Text(' / ' + this.stat.totalTask.toString()).fontSize(24)}}}.card().margin({top: 20, bottom: 20}).justifyContent(FlexAlign.SpaceEvenly)}
}

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

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

相关文章

150个 HTML5 网站模版 量大慢选

HTML5 网站模版 No.1 HTML5 网站模版 No.1

计算机网络之同轴电缆,集线器,网桥,交换机,路由器

ping的过程 两台主机用交叉线连接&#xff0c;通过88.2ping88.3发现底层是先经过广播&#xff0c;通过arp协议&#xff0c;告诉我要找的ip是88.3,然后88.3主机收到后就把自己的mac地址发送回去&#xff0c;同理88.2发现是发给自己的后就进行接收&#xff0c;有了mac地址然后再通…

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别分类效果基…

字体体积压缩

环境:python3 关键步骤: pip install fontTools目录详情: 执行 pyftsubset.exe SourceHanSansCN-Medium.ttf --text-file3500.txt然后打开:TTF To Woff2,选择文件上传,等待处理,下载,使用 附常用汉字,字体文件请善用百度 3500.txt 工才下寸丈大与万上小口山巾千乞川亿个…

【C++算法竞赛 · 图论】图的存储

前言 图的存储 邻接矩阵 方法 复杂度 应用 例题 题解 邻接表 方法 复杂度 应用 前言 上一篇文章中&#xff08;【C算法竞赛 图论】图论基础&#xff09;&#xff0c;介绍了图论相关的概念和一种图的存储的方法&#xff0c;这篇文章将会介绍剩下的两种方法&#xff…

【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库)&#xff0c;用户可以通过搜索关键字来进行查询关联度最高的News&#xff0c;实现对文本的搜索引擎&#xff1a; 1. 导入数据集 from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…

zookeeper和kafka消息队列

zookeeper zookeeper介绍 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 zookeeper特点 zookeeper是由一个领导者(leader)&#xff0c;多个跟随者(follower)组成的集群 Zookeepe集群中只要有半数以上节点存活&#xff0c;Zookeeper集群…

使用Postman发送跨域请求实验

使用Postman发送跨域请求 1 跨域是什么&#xff1f;2 何为同源呢?3 跨域请求是如何被检测到的&#xff1f;4 Postman跨域请求测试4.1 后端准备4.2 测试用例4.2.1 后端未配置跨域请求(1) 前端不跨域&#xff08;2&#xff09;前端跨域 4.2.2 后端配置跨域信息&#xff08;1&…

数据结构-链表刷题集(长期更新)

文章目录 1. leetcode 2 两数之和1.1 解法一 1. leetcode 2 两数之和 1.1 解法一 题目及其相关实例如下 要做这个题,首先我们要学会模拟竖式的加法,我们知道即使是java基本数据中最大的long类型范围也是有限的,那如果超出范围了我们该怎么办呢,我们就需要用字符串来模拟这个…

Mac 下 Python+Selenium 自动上传西瓜视频

背景 研究下 PythonSelenium 自动化测试框架&#xff0c;简单实现 Mac 下自动化批量上传视频西瓜视频并发布&#xff0c;分享给需要的同学&#xff08;未做过多的异常处理&#xff09;。 脚本实现 首先通过手工手机号登录&#xff0c;保存西瓜视频网站的 cookie 文件 之后加载…

【蓝桥杯】第十五届蓝桥杯大赛软件赛省赛(Java研究生组)个人解题思路及代码分享

文章目录 试题A&#xff1a;劲舞团试题B&#xff1a;召唤数字精灵试题C&#xff1a;封闭图形的个数试题D&#xff1a;商品库存管理试题E&#xff1a;砍柴试题F&#xff1a;回文字符串试题G&#xff1a;最大异或节点试题H&#xff1a;植物生命力 试题A&#xff1a;劲舞团 【问题…

napi系列学习高阶篇——通过IDE集成C/C++三方库并开发napi接口

简介 应用在调用系统固件集成的C/C三方库时&#xff0c;可能会由于系统固件集成端与IDE的NDK中libc版本不一致导致调用失败&#xff0c;而且系统固件集成的C/C三方库对于应用的调式也很不友好&#xff0c;需要多方编译调试&#xff0c;很不方便。因此本文将通过在IDE上适配ope…

mp3怎样才能转换成wav格式?音频互相转换的方法

一&#xff0c;什么是WAV WAV&#xff0c;全称为波形音频文件&#xff08;Waveform Audio File Format&#xff09;&#xff0c;是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来&#xff0c;WAV格式因其无损的音频质量和广泛的兼容性&#xff0c;成为了多…

【opencv】示例-morphology2.cpp 形态学操作:膨胀、腐蚀、开运算、闭运算

element_shape MORPH_ELLIPSE; element_shape MORPH_RECT element_shape MORPH_CROSS; // 包含必要的OpenCV头文件 #include "opencv2/imgproc.hpp" // 图像处理 #include "opencv2/imgcodecs.hpp" // 图像编码解码 #include "opencv2/highgui.hpp…

Zynq学习笔记--AXI 总线概述

目录 1. AXI总线概述 1.1 主要特点 1.2 通道功能 1.3 信号概览 2. AXI Interconnect 2.1 信号说明 2.2 内部结构 3. PS-PL AXI Interface 3.1 AXI FPD/LFP/ACP 3.2 Address Editor 3.3 地址空间 3.4 AXI-DDR 4. 通过ILA观察AXI信号 4.1 AXI 读通道 1. AXI总线概述…

uniapp开发小程序手写板、签名、签字

可以使用这个插件进行操作 手写板-签名签字-lime-signature - DCloud 插件市场 但是目前这个插件没有vue3 setup Composition API的写法。所以对于此文档提供的可以直接使用,需要使用Composition API方式实现的,可以继续看。 因为Composition API方式,更加的简单、灵活,…

在Windows中用命令行编译C项目

在Windows中可以用命令行编译C项目 官方指导文档&#xff1a; 演练&#xff1a;在命令行上编译 C 程序 | Microsoft Learn 在官方文档中可以看到&#xff0c;可以只安装VS的命令行工具集&#xff0c;如下图所示

2.0 Hadoop 运行环境

2.0 Hadoop 运行环境 分类 Hadoop 教程 由于 Hadoop 是为集群设计的软件&#xff0c;所以我们在学习它的使用时难免会遇到在多台计算机上配置 Hadoop 的情况&#xff0c;这对于学习者来说会制造诸多障碍&#xff0c;主要有两个&#xff1a; 昂贵的计算机集群。多计算机构成的…

JVM性能调优——GC日志分析

文章目录 1、概述2、生成GC日志3、Parallel垃圾收集器日志解析3.1、Minor GC3.2、FULL GC 4、G1垃圾收集器日志解析4.1、Minor GC4.2、并发收集4.3、混合收集4.4、Full GC 5、CMS垃圾收集器日志解析5.1、Minor GC5.2、Major GC5.3、浮动垃圾 6、日志解析工具6.1、GCeasy6.2、GC…

SpringBoot项目 jar包方式打包部署

SpringBoot项目 jar包方式打包部署 传统的Web应用进行打包部署&#xff0c;通常会打成war包形式&#xff0c;然后将War包部署到Tomcat等服务器中。 在Spring Boot项目在开发完成后&#xff0c;确实既支持打包成JAR文件也支持打包成WAR文件。然而&#xff0c;官方通常推荐将Sp…