鸿蒙--知乎评论

news2024/12/23 9:31:59

这里我们将采用组件化的思想进行开发

拆解组件

  • pages下,新建ZhiHu的文件
  • pages下,新建components, 里面新建 HmNavBar和HmCommentItem

components/HmNavBar.ets

@Entry
@Component
struct HmNavBar {
  title: string = '标题'

  build() {
    Row() {
       // 返回键
      Row() {
        Image($r("app.media.left_arrow"))
          .width(16)
          .height(16)
      }
      .width(30)
      .height(30)
      .borderRadius(15)
      .backgroundColor('#f4f4f4')
      .justifyContent(FlexAlign.Center)
      .margin({
        left: 20
      })
      Text(this.title)
        .layoutWeight(1)
        .textAlign(TextAlign.Center)
        .margin({
          right: 50
        })
    }
    .width("100%")
    .height(50)
    .border({
      color: "#f4f5f6",
      width: {
        bottom: 1
      }
    })
  }
}

export default HmNavBar

components/HmCommentItem.ets

@Entry
@Component
struct HmCommentItem {
  build() {
    Row({space: 10}) {
      Image("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F1bad8264-7428-44cf-a92d-3016a2de537b%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1711626934&t=5478cb3adef5d3e29e6952934797ca39")
        .width(40)
        .height(40)
        .borderRadius(20)
      Column() {
        Text('周杰伦')
          .fontSize(18)
          .fontColor('#303a43')
          .fontWeight(FontWeight.Bold)

        Text('黄河江最近一代都带蓝牙,意大利拌面必须使用42👌钢筋混凝土量子力学')
          .fontColor("#2f3642")
          .lineHeight(22)

        Row() {
          Text('10-21 .IP属地北京')
            .fontColor("#cacaca")
            .fontSize(12)

          Row({ space: 4 }) {
            Image($r("app.media.ic_public_like"))
              .width(12)
              .height(12)
              .fillColor("#cacaca")

            Text("100")
              .fontColor("#cacaca")
              .fontSize(12)

          }
        }
        .width('100%')
        .justifyContent(FlexAlign.SpaceBetween)
      }
      .width('100%')
      .alignItems(HorizontalAlign.Start)
      .layoutWeight(1)
    }
    .alignItems(VerticalAlign.Top)
    .padding(20)
    .width('100%')
  }
}

export default HmCommentItem;

使用

pages/ZhiHu.ets

import HmCommentItem from './components/HmCommentItem'
import HmNavBar from './components/HmNavBar'

@Entry
@Component
struct ZhiHu {
  build() {
    Column() {
      HmNavBar({
        title: '评论回复'
      })

      HmCommentItem()

      Divider().strokeWidth(6)

      Row() {
        Text("评论数50")
      }
      .width('100%')
      .height(50)
      .padding({
        left: 20
      })
      .border({
        color: '#f3f4f5',
        width: {
          bottom: 1
        }
      })
      
      ForEach([1,2,3,4], () => {
        HmCommentItem()
      })
    }
  }
}

需要出现滚动区域。

使用了List组件,子组件必须有ListItem/ListItemGroup

List() {
  ForEach([1,2,3,4,5,6], () => {
    ListItem() {
      HmCommentItem()
    }
  })
}.layoutWeight(1)

评论列表

在 pages 下新建 models 文件夹

models/index.ets

  • 定义一个评论的interface
export interface ReplyItem {
  avatar: ResourceStr // 头像
  author: string   // 作者
  id: number  // 评论的id
  content: string // 评论内容
  time: string // 发表时间
  area: string // 地区
  likeNum: number // 点赞数量
  likeFlag: boolean | null // 当前用户是否点过赞
}

安装12c

npm i -g interface2class

检测是否安装成功:i2c -V

执行带有interface的文件

cmd进入到当前文件所在目录,然后输入 ic2 ./Index.ets执行

用i2c生成对应的class

上面我们cmd进入到models目录后,运行ic2 ./index.ets,便会在models文件夹下的index.ets文件里为我们新增以下代码

export class ReplyItemModel implements ReplyItem {
  avatar: ResourceStr = ''
  author: string = ''
  id: number = 0
  content: string = ''
  time: string = ''
  area: string = ''
  likeNum: number = 0
  likeFlag: boolean | null = null

  constructor(model: ReplyItem) {
    this.avatar = model.avatar
    this.author = model.author
    this.id = model.id
    this.content = model.content
    this.time = model.time
    this.area = model.area
    this.likeNum = model.likeNum
    this.likeFlag = model.likeFlag
  }
}
  • 定义一个评论列表数据

因为我们需要的是class对象,所以每个对象都需要new一下

pages/ZhiHu.ets

import HmCommentItem from './components/HmCommentItem'
import HmNavBar from './components/HmNavBar'
import { ReplyItemModel } from './models'

@Entry
@Component
struct ZhiHu {

  @State commentList: ReplyItemModel[] = [
    new ReplyItemModel({
      id: 1,
      avatar: 'https://picx.zhimg.com/027729d02bdf060e24973c3726fea9da_l.jpg?source=06d4cd63',
      author: '偏执狂-妄想家',
      content: '更何况还分到一个摩洛哥[惊喜]',
      time: '11-30',
      area: '海南',
      likeNum: 34,
      likeFlag: false
    }) ,
    new ReplyItemModel({
      id: 2,
      avatar: 'https://pic1.zhimg.com/v2-5a3f5190369ae59c12bee33abfe0c5cc_xl.jpg?source=32738c0c',
      author: 'William',
      content: '当年希腊可是把1:0发挥到极致了',
      time: '11-29',
      area: '北京',
      likeNum: 58,
      likeFlag: false
    }),
    new ReplyItemModel({
      id: 3,
      avatar: 'https://picx.zhimg.com/v2-e6f4605c16e4378572a96dad7eaaf2b0_l.jpg?source=06d4cd63',
      author: 'Andy Garcia',
      content: '欧洲杯其实16队球队打正赛已经差不多,24队打正赛意味着正赛阶段在小组赛一样有弱队。',
      time: '11-28',
      area: '上海',
      likeNum: 10,
      likeFlag: false
    }),
    new ReplyItemModel({
      id: 4,
      avatar: 'https://picx.zhimg.com/v2-53e7cf84228e26f419d924c2bf8d5d70_l.jpg?source=06d4cd63',
      author: '正宗好鱼头',
      content: '确实眼红啊,亚洲就没这种球队,让中国队刷',
      time: '11-27',
      area: '香港',
      likeNum: 139,
      likeFlag: false
    }),
    new ReplyItemModel({
      id: 5,
      avatar: 'https://pic1.zhimg.com/v2-eeddfaae049df2a407ff37540894c8ce_l.jpg?source=06d4cd63',
      author: '柱子哥',
      content: '我是支持扩大的,亚洲杯欧洲杯扩到32队,世界杯扩到64队才是好的,世界上有超过200支队伍,欧洲区55支队伍,亚洲区47支队伍,即使如此也就六成出现率',
      time: '11-27',
      area: '旧金山',
      likeNum: 29,
      likeFlag: false
    }),
    new ReplyItemModel({
      id: 6,
      avatar: 'https://picx.zhimg.com/v2-fab3da929232ae911e92bf8137d11f3a_l.jpg?source=06d4cd63',
      author: '飞轩逸',
      content: '禁止欧洲杯扩军之前,应该先禁止世界杯扩军,或者至少把亚洲名额一半给欧洲。',
      time: '11-26',
      area: '里约',
      likeNum: 100,
      likeFlag: false
    })
  ]


  build() {
    Column() {
      HmNavBar({
        title: '评论回复'
      })

      HmCommentItem({
        item: new ReplyItemModel({
          id: 999,
          author: '周杰伦',
          avatar: $r("app.media.startIcon"),
          likeNum: 10,
          likeFlag: false,
          time: '03-02',
          area: '北京',
          content: '人到了一定的年龄新陈代谢就慢了,吃了胖不吃瘦了皱纹就多,要靠锻炼 '
        })
      })

      Divider().strokeWidth(6)

      Row() {
        Text("评论数50")
      }
      .width('100%')
      .height(50)
      .padding({
        left: 20
      })
      .border({
        color: '#f3f4f5',
        width: {
          bottom: 1
        }
      })

      List() {
        ForEach(this.commentList, (item: ReplyItemModel) => {
          ListItem() {
            HmCommentItem({ item })
          }
        })
      }.layoutWeight(1)
    }
  }

components/HmCommentItem.ets

import { ReplyItem, ReplyItemModel } from '../models';

@Entry
@Component
struct HmCommentItem {
  // 接收渲染的选项
  item: ReplyItemModel = new ReplyItemModel({} as ReplyItem) // 初始值 只是为了语法不报错

  build() {
    Row({space: 10}) {
      Image(this.item.avatar)
        .width(40)
        .height(40)
        .borderRadius(20)
      Column() {
        Text(this.item.author)
          .fontSize(18)
          .fontColor('#303a43')
          .fontWeight(FontWeight.Bold)

        Text(this.item.content)
          .fontColor("#2f3642")
          .lineHeight(22)

        Row() {
          Text(`${this.item.time} .IP属地${this.item.area}`)
            .fontColor("#cacaca")
            .fontSize(12)

          Row({ space: 4 }) {
            Image($r("app.media.ic_public_like"))
              .width(12)
              .height(12)
              .fillColor("#cacaca")

            Text("100")
              .fontColor("#cacaca")
              .fontSize(12)

          }
        }
        .width('100%')
        .justifyContent(FlexAlign.SpaceBetween)
      }
      .width('100%')
      .alignItems(HorizontalAlign.Start)
      .layoutWeight(1)
    }
    .alignItems(VerticalAlign.Top)
    .padding(20)
    .width('100%')
  }
}

export default HmCommentItem;

底部回复按钮

components/HmReplyInput.ets

@Component
struct HmReplyInput {
  @State
  content: string = ""
  build() {
    Row({ space: 10 }) {
      TextInput({ text: $$this.content, placeholder: '~请留下您的神评论' })
        .layoutWeight(1)
        .height(40)
      Button("发布")
    }
    .padding({ left: 10, right: 10 })
    .width('100%')
    .height(60)
  }
}
export { HmReplyInput }

pages/ZhiHu.ets

import HmCommentItem from './components/HmCommentItem'
import HmNavBar from './components/HmNavBar'
import { HmReplyInput } from './components/HmReplyInput'
import { ReplyItemModel } from './models'

@Entry
@Component
struct ZhiHu {

  @State commentList: ReplyItemModel[] = [
   ...
  ]


  build() {
    Column() {
      HmNavBar({
        title: '评论回复'
      })

      HmCommentItem({
        ...
      })

      Divider().strokeWidth(6)

      Row() {
        Text("评论数50")
      }
      .width('100%')
      .height(50)
      .padding({
        left: 20
      })
      .border({
        color: '#f3f4f5',
        width: {
          bottom: 1
        }
      })

      List() {
        ...
      }.layoutWeight(1)

     ++ HmReplyInput()
    }
  }
}

实现评论点赞

涉及知识点:子组件如何调用父组件的函数

  • 子组件要声明一个函数
test: () => void = () => {}  // test:变量类型 = 初始值
  • 父组件需要给子组件传入这个参数
Child({
  test: () => {
    this.abc()
  }
})

实现点赞

components/HmCommentItem.ets

import { ReplyItem, ReplyItemModel } from '../models';

@Entry
@Component
struct HmCommentItem {
  // 接收渲染的选项
  item: ReplyItemModel = new ReplyItemModel({} as ReplyItem) // 初始值 只是为了语法不报错

  // 点赞
 ++ changeLike: () => void = () => {}

  build() {
    Row({space: 10}) {
      Image(this.item.avatar)
        .width(40)
        .height(40)
        .borderRadius(20)
      Column() {
        ...

        Row() {
          Text(`${this.item.time} .IP属地${this.item.area}`)
            .fontColor("#cacaca")
            .fontSize(12)

          Row({ space: 4 }) {
            Image($r("app.media.ic_public_like"))
              .width(12)
              .height(12)
              .fillColor(this.item.likeFlag ? Color.Red : "#cacaca")

            Text(this.item.likeNum.toString())
              .fontColor(this.item.likeFlag ? Color.Red :"#cacaca")
              .fontSize(12)

          }
          .onClick(() => {
            this.changeLike()
          })
        }
        .width('100%')
        .justifyContent(FlexAlign.SpaceBetween)
      }
      .width('100%')
      .alignItems(HorizontalAlign.Start)
      .layoutWeight(1)
    }
    .alignItems(VerticalAlign.Top)
    .padding(20)
    .width('100%')
  }
}

export default HmCommentItem;

pages/ZhiHu.ets

changeLike (item: ReplyItemModel) {
    // 需要拿到点击的数据 拿到数据更新数据即可
    // item.likeNum
    // item.likeFlag
    if(item.likeFlag) {
      // 点过赞
      item.likeNum--
    }
    else {
      // 没有点过赞
      item.likeNum++
    }
    item.likeFlag = !item.likeFlag // 取反
    // State的修饰符的更新机制
    // 只能监测到第一层
    const index = this.commentList.findIndex(obj => obj.id === item.id)
    //this.commentList[index] = item // 这么写为什么不行 // 引用类型 基础类型
    this.commentList[index] = new ReplyItemModel(item)
  }

List() {
  ForEach(this.commentList, (item: ReplyItemModel) => {
    ListItem() {
      HmCommentItem({ item,changeLike: () => {
        this.changeLike(item)
      } })
    }
  })
}.layoutWeight(1)

更新的秘密

  • 鸿蒙里面的所有的更新都只能监测到一层的更新
  • 如果要更新数组里面的某一项的话
  • this.list[index] = 新值
  • this.list.splice(index, 1, 新值)
  • 关于key的秘密

尝试给了一个id作为key,为什么没有更新

因为鸿蒙会根据key的不同来更新的内容,如果key前后一样,它认为你没有变,那就不更新

顶部的点赞

pages/ZhiHu.ets

import HmCommentItem from './components/HmCommentItem'
import HmNavBar from './components/HmNavBar'
import { HmReplyInput } from './components/HmReplyInput'
import { ReplyItemModel } from './models'

@Entry
@Component
struct ZhiHu {

  @State commentList: ReplyItemModel[] = [
     ...
  ]

 ++ @State
  showTop: boolean = true
 ++ @State
  currentComment: ReplyItemModel = new ReplyItemModel({
    id: 999,
    author: '周杰伦',
    avatar: 'https://picx.zhimg.com/027729d02bdf060e24973c3726fea9da_l.jpg?source=06d4cd63',
    likeNum: 10,
    likeFlag: false,
    time: '03-02',
    area: '北京',
    content: '人到了一定的年龄新陈代谢就慢了,吃了胖不吃瘦了皱纹就多,要靠锻炼 '
  })

 ++ changeLike (item: ReplyItemModel, type?: "top" | "bottom") {
    // 需要拿到点击的数据 拿到数据更新数据即可
    // item.likeNum
    // item.likeFlag
    if(item.likeFlag) {
      // 点过赞
      item.likeNum--
    }
    else {
      // 没有点过赞
      item.likeNum++
    }
    item.likeFlag = !item.likeFlag // 取反
    // promptAction.showToast({ message: JSON.stringify(item), duration: 300000 })
    if(type !== "top") {
      // State的修饰符的更新机制
      // 只能监测到第一层
      const index = this.commentList.findIndex(obj => obj.id === item.id)
      //this.commentList[index] = item // 这么写为什么不行 // 引用类型 基础类型
      //  this.commentList[index] = new ReplyItemModel(item)
      this.commentList.splice(index, 1, new ReplyItemModel(item))
    }
  }

  build() {
    Column() {
      HmNavBar({
        title: '评论回复'
      })

      // HmCommentItem({
      //   item: new ReplyItemModel({
      //     id: 999,
      //     author: '周杰伦',
      //     avatar: $r("app.media.startIcon"),
      //     likeNum: 10,
      //     likeFlag: false,
      //     time: '03-02',
      //     area: '北京',
      //     content: '人到了一定的年龄新陈代谢就慢了,吃了胖不吃瘦了皱纹就多,要靠锻炼 '
      //   })
      // })
   ++   if(this.showTop) {
        HmCommentItem({
          item: this.currentComment,
          changeLike: () => {
            this.changeLike(this.currentComment, "top")
            this.showTop = false
            setTimeout(() => {
              this.showTop = true
            }, 100)
          }
        })
      }

      Divider().strokeWidth(6)

      Row() {
        Text("评论数50")
      }
      .width('100%')
      .height(50)
      .padding({
        left: 20
      })
      .border({
        color: '#f3f4f5',
        width: {
          bottom: 1
        }
      })

      List() {
        ForEach(this.commentList, (item: ReplyItemModel) => {
          ListItem() {
            HmCommentItem({ item,changeLike: () => {
              this.changeLike(item)
            } })
          }
        })
      }.layoutWeight(1)

      HmReplyInput()
    }
  }
}

回复评论

  • 底部输入组件双向绑定

components/HmReplyInput.ets

@Component
struct HmReplyInput {
  @State
  content: string = ""

  publishComment: (content: string) => void = () => {}

  build() {
    Row({ space: 10 }) {
      TextInput({ text: $$this.content, placeholder: '~请留下您的神评论' })
        .layoutWeight(1)
        .height(40)
        .onSubmit(() => {
          // 键盘的确定事件
          if(this.content) {
            this.publishComment(this.content)
            this.content = ""
          }
        })
      Button("发布")
        .onClick(() => {
          if(this.content) {
            this.publishComment(this.content)
            this.content = ""
          }
        })
    }
    .padding({ left: 10, right: 10 })
    .width('100%')
    .height(60)
  }
}
export { HmReplyInput }

  • 调用父组件传入的publishComment的方法
  • 父组件实现的方法

pages/ZhiHu.ets

//创建scroller
scroller:Scroller = new Scroller()
// 新增评论
addComment(content: string) {
  this.commentList.unshift(new ReplyItemModel({
    id: Math.random() ,
    avatar: 'https://foruda.gitee.com/avatar/1705232317138324256/1759638_itcast_panpu_1705232317.png',
    author: '梧桐',
    content,
    time: `${(new Date().getMonth() + 1).toString().padStart(2, "0")}-${new Date().getDate().toString().padStart(2,  "0")}`,
    area: '北京',
    likeNum: 0,
    likeFlag: false
  }))

  // 控制滚动条
  this.scroller.scrollEdge(Edge.Top)
}

// 创建scroller
List({ scroller: this.scroller }) {
  ForEach(this.commentList, (item: ReplyItemModel) => {
    ListItem() {
      HmCommentItem({ item,changeLike: () => {
        this.changeLike(item)
      } })
    }
  })
}.layoutWeight(1)

HmReplyInput({
  publishComment: (content: string) => {
    this.addComment(content)
  }
})

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

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

相关文章

数据湖数据仓库数据集市数据清理以及DataOps

一提到大数据我们就知道是海量数据,但是我们并不了解需要从哪些维度去考虑这些数据的存储。比如 数据湖、数据仓库、数据集市,以及数据自动化应用DataOps有哪些实现方式和实际应用,这篇文章将浅显的做一次介绍。 数据湖 数据湖是一种以自然…

Spring Boot 学习之路 -- Thymeleaf 模板引擎

前言 最近因为业务需要,被拉去研究后端的项目,代码框架基于 Spring Boot,后端对我来说完全小白,需要重新学习研究…出于个人习惯,会以 Blog 文章的方式做一些记录,文章内容基本来源于「 Spring Boot 从入门…

Python爬虫之正则表达式于xpath的使用教学及案例

正则表达式 常用的匹配模式 \d # 匹配任意一个数字 \D # 匹配任意一个非数字 \w # 匹配任意一个单词字符(数字、字母、下划线) \W # 匹配任意一个非单词字符 . # 匹配任意一个字符(除了换行符) [a-z] # 匹配任意一个小写字母 […

获取淘宝直播间弹幕数据的技术探索实践方法

在数字时代,直播已成为电商营销的重要渠道之一,而弹幕作为直播互动的核心元素,蕴含着丰富的用户行为和情感数据。本文将详细介绍如何获取淘宝直播间弹幕数据的技术方法和步骤,同时分析不同工具和方法的优缺点,并提供实…

夜莺监控的机器支持挂载到多个业务组了

夜莺开源项目于国庆前夕发布了 v7.4.1 版本,修复了一些 bug,同时也带来了一些新功能。其中最重要的一个功能是:机器支持挂载到多个业务组了。本文将介绍几个重要的变更。 所有变更点 feat: 左侧栏业务组新设计feat: 机器支持了绑定到多个业…

GAN(Generative Adversarial Nets)

GAN(Generative Adversarial Nets) 引言 GAN由Ian J. Goodfellow等人提出,是Ian J. Goodfellow的代表作之一,他还出版了大家耳熟能详的花书(Deep Learning深度学习),GAN主要的思想是同时训练两个模型,生成…

CentOS 7 安装并部署 Mysql

安装 Mysql 下载并添加库 sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装 Mysql 包(一路键入y即可) yum -y install mysql mysql-server --nogpgcheck- -nogpgcheck 作用为 禁掉GPG验证检查 配…

Serilog文档翻译系列(七) - 应用设置、调试和诊断、开发接收器

01应用设置 Serilog 支持在 App.config 和 Web.config 文件中使用简单的 配置语法,以设置最低日志级别、为事件添加额外属性以及控制日志输出。 Serilog 主要通过代码进行配置,设置支持旨在作为补充功能。虽然不是全面的,但大多数日志记录配…

SpringBoot3实战:实现接口签名验证

有时候我们要把自己的服务暴露给第三方去调用,为了防止接口不被授权访问,我们一般采用接口签名的方式去保护接口。 接下来松哥和大家聊一聊这个话题。 一 场景分析 什么时候需要接口签名? 接口签名是一种重要的安全机制,用于确…

Jmeter链接数据库、分布式

目录 一、Jmeter链接数据库 连接准备 有两种添加驱动的方法 第一种: 第二种: 连接方法: 1.先添加一个配置元件中的jdbc connection configuration 2、配置内容 使用: 二、Jmeter做分布式操作 1、准备多台电脑 2、多台电…

顶象生僻字点选模型识别

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 该文章模型已经上线ocr识别网站,欢迎测试!!,地址:http://yxlocr.nat300.top/ocr/textclick/5 某网站使用顶象的生僻字点选模型,部分数据集如下: 这种数据集…

【Vue3 + TS + Vite】从0到1搭建后台管理系统

前言 没搭建过Vue3的项目,从0开始搭建一下,记录一下自己的步骤。 技术栈: vue3 ts scss pinia vite 我尽量写的详细一些,后续也会记录我在项目过程中,遇到的一些问题。 文章目录 前言环境搭建一、创建项目1. 使用…

使用IOT-Tree Server制作一个边缘计算设备(Arm Linux)

最近实现了一个小项目,现场有多个不同厂家的设备,用户需要对此进行简单的整合,并实现一些联动控制。 我使用了IOT-Tree Server这个软件轻松实现了,不外乎有如下过程: 1)使用Modbus协议对接现有设备&#…

探索循环神经网络RNN:解锁序列数据的奥秘

在这个数据驱动的时代,机器学习模型已经深入到我们生活的方方面面,从智能推荐系统到自然语言处理,无一不彰显其强大的能力。在众多模型中,循环神经网络(Recurrent Neural Network, RNN)以其独特的结构和对序…

Java日志(总结)

一、logback日志 Logback是由log4j创始人设计的又一个开源日记组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J …

elasticsearch创建索引

1对比关系型数据库,创建索引就等同于创建数据库 在postman中,向ES服务器发PUT请求 显示已经创建成功了 http://192.168.1.108:9200/shopping 请求方式get http://192.168.1.108:9200/shopping 请求全部的index的url地址 get 请求 http://192.168.1.10…

OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【扩展组件】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… C支持 基本概念 C作为目前使用最广泛的编程语言之一,…

同样的颜色在iOS和Flutter中显示不一样?色域差异解析

同样的颜色在iOS和Flutter中显示不一样?色域差异解析 在移动应用开发中,颜色的一致性对于提供良好的用户体验至关重要。然而,开发者有时会遇到一个令人困惑的问题:为什么同样的颜色代码在iOS的xib和Flutter的Container中显示的效…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-09

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-09 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-09目录1. Can LLMs plan paths with extra hints from solvers?摘要创新点算法模型实验效果重要数据与结论 推荐阅读指数 2. Sc…

数据库软题8-数据库的控制功能

一、事务管理 题1-事物的四个特性(原子、一致、隔离、永久) 1.隔离性 2.持久性 3.原子性 二、数据库的备份与恢复 题1-数据库恢复就是回到故障发生前的状态 题2 题3 三、并发控制 题1-排它锁 选D题2.共享锁排他锁 1. 加了排他锁,不能再加…