鴻蒙案例---生肖抽卡

案例源碼:

Zodiac_cards: 鴻蒙生肖抽獎卡片

效果演示

初始布局

1. Badge 角標組件

此處為語雀內容卡片,點擊鏈接查看:https://www.yuque.com/kevin-nzthp/lvl039/rccg0o4pkp3v6nua

2. Grid 布局

// 定義接口
interface ImageCount {url: ResourceStr,count: number
}@Entry@Componentstruct Index {@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 1 },{ url: '/images/bg_02.png', count: 2 },{ url: '/images/bg_03.png', count: 3 },{ url: '/images/bg_04.png', count: 4 },{ url: '/images/bg_05.png', count: 5 },]// 控制遮罩的顯隱@State maskOpacity: number = 0 // 透明度@State maskIndex: number = -1; // 顯示層級// 控制圖片的縮放@State maskImgX: number = 0 // 水平縮放比@State maskImgY: number = 0 // 垂直縮放比build() {Stack() {Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {badgeSize: this.maskImgX,fontSize: this.maskImgY}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').width('100%').height(300).margin({ top: 100 })Button('立即抽卡').width(200).backgroundColor('#ed5b8c').margin({ top: 50 }).onClick(()=>{// 點擊時,修改遮罩參數,讓遮罩顯示this.maskOpacity = 1this.maskIndex = 99// 圖片需要縮放this.maskImgX = 1this.maskImgY = 1})}.width('100%').height('100%').backgroundColor(Color.Pink)// 抽卡遮蓋層Column({space: 30}) {Text('獲得生肖卡').fontColor('#f5ebcf').fontSize(25).fontWeight(FontWeight.Bold)Image('/images/img_00.png').width(200)//控制元素的縮放.scale({x: this.maskImgX,y: this.maskImgY})Button('開心收下').width(200).height(50).backgroundColor(Color.Transparent).border({ width: 2 ,color:'#fff9e0'}).onClick(()=>{// 控制彈層顯隱this.maskOpacity = 0this.maskIndex = -1// 重置縮放比為0,便于下一次進行縮放this.maskImgX = 0this.maskImgY = 0})}.justifyContent(FlexAlign.Center).width('100%').height('100%').backgroundColor('#cc000000')// 設置透明度.opacity(this.maskOpacity).zIndex(this.maskIndex)// 動畫 animation 當我們元素有狀態的改變,可以添加animation做動畫.animation({duration: 500})}}}

抽卡遮罩層

靜態頁面

點擊立即抽卡按鈕后,會進入遮罩層,顯示抽取的卡片,此時抽卡的頁面轉換為背景圖,使用層疊布局

// 定義圖片接口
interface ImageCount {url: ResourceStr,count: number
}@Entry@Componentstruct Index {// 定義圖片渲染數組@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 1 },{ url: '/images/bg_02.png', count: 2 },{ url: '/images/bg_03.png', count: 3 },{ url: '/images/bg_04.png', count: 4 },{ url: '/images/bg_05.png', count: 5 },]build() {Stack(){Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {fontSize: 12,badgeSize: 16}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').height(300).margin({top: 50, bottom: 50})// .backgroundColor(Color.Pink)Button('立即抽卡').width(200).backgroundColor('#ED5B8C')}Column({space: 30}){Text('獲得生肖卡').fontColor('#F3EAD3').fontWeight(700).fontSize(24)Image('/images/img_00.png').width(200)Button('開心收下').width(200).border({width: 2,color:'#9F9C90',}).backgroundColor(Color.Transparent)}.backgroundColor('#cc000000').width('100%').height('100%').justifyContent(FlexAlign.Center)}}}

抽卡遮罩層- 顯隱效果控制

添加狀態變量控制遮罩層 Z 軸 和 不透明度的數值.

當點擊 “立即抽卡”按鈕時,顯示遮罩層。(此時不能隱藏)

當點擊 遮罩層“開心收下”按鈕時,隱藏遮罩層。

添加動畫

添加遮罩層圖片的縮放

效果

// 定義圖片接口
interface ImageCount {url: ResourceStr,count: number
}@Entry@Componentstruct Index {// 定義圖片渲染數組@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 1 },{ url: '/images/bg_02.png', count: 2 },{ url: '/images/bg_03.png', count: 3 },{ url: '/images/bg_04.png', count: 4 },{ url: '/images/bg_05.png', count: 5 },]// 控制遮罩的顯隱@State maskOpacity: number = 0 // 透明度@State maskIndex: number = -1; // 顯示層級// 控制遮罩層圖片的縮放@State maskImgScaleX: number = 0 // 水平縮放比@State maskImgScaleY: number = 0 // 垂直縮放比// 獲取圖片build() {Stack() {// 抽卡層Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {fontSize: 12,badgeSize: 16}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').height(300).margin({ top: 50, bottom: 50 })// .backgroundColor(Color.Pink)Button('立即抽卡').width(200).backgroundColor('#ED5B8C').onClick(() => {// 點擊時,修改遮罩參數,讓遮罩顯示this.maskOpacity = 1this.maskIndex = 99// 點擊時修改遮罩層圖片的縮放比this.maskImgScaleX = 1this.maskImgScaleY = 1})}// 遮罩層Column({ space: 30 }) {Text('獲得生肖卡').fontColor('#F3EAD3').fontWeight(700).fontSize(24)Image('/images/img_00.png').width(200).scale({//控制圖片的縮放x: this.maskImgScaleX,y: this.maskImgScaleY}).animation({// 動畫duration: 500})Button('開心收下').width(200).border({width: 2,color: '#9F9C90',}).backgroundColor(Color.Transparent).onClick(() => {// 點擊時,修改遮罩參數,讓遮罩隱藏this.maskOpacity = 0this.maskIndex = -1//   // 點擊時修改遮罩層圖片的縮放比為1:1this.maskImgScaleX = 0this.maskImgScaleY = 0})}.zIndex(this.maskIndex).opacity(this.maskOpacity).backgroundColor('#cc000000').width('100%').height('100%').justifyContent(FlexAlign.Center)}}}

隨機卡片

效果演示:

要獲得 0-5 的整數索引,隨機抽取卡片

此時可以獲取隨機卡片,接下來要將抽到的隨機卡片顯示在主頁面并右上角角標顯示。

// 定義圖片接口
interface ImageCount {url: ResourceStr,count: number
}@Entry@Componentstruct Index {// 定義圖片渲染數組@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 0 },{ url: '/images/bg_02.png', count: 0 },{ url: '/images/bg_03.png', count: 0 },{ url: '/images/bg_04.png', count: 0 },{ url: '/images/bg_05.png', count: 0 },]// 控制遮罩的顯隱@State maskOpacity: number = 0 // 透明度@State maskIndex: number = -1; // 顯示層級// 控制遮罩層圖片的縮放@State maskImgScaleX: number = 0 // 水平縮放比@State maskImgScaleY: number = 0 // 垂直縮放比// 獲取遮罩層選擇的圖片Index@State maskImgIndex: number = 0build() {Stack() {// 抽卡層Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {fontSize: 12,badgeSize: 16}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').height(300).margin({ top: 50, bottom: 50 })// .backgroundColor(Color.Pink)Button('立即抽卡').width(200).backgroundColor('#ED5B8C').onClick(() => {// 點擊時,修改遮罩參數,讓遮罩顯示this.maskOpacity = 1this.maskIndex = 99// 點擊時修改遮罩層圖片的縮放比this.maskImgScaleX = 1this.maskImgScaleY = 1//   // 隨機獲取圖片的Indexthis.maskImgIndex = Math.floor(Math.random() * 6)})}// 遮罩層Column({ space: 30 }) {Text('獲得生肖卡').fontColor('#F3EAD3').fontWeight(700).fontSize(24)Image(`/images/img_0${this.maskImgIndex}.png`).width(200).scale({//控制圖片的縮放x: this.maskImgScaleX,y: this.maskImgScaleY}).animation({// 動畫duration: 500})Button('開心收下').width(200).border({width: 2,color: '#9F9C90',}).backgroundColor(Color.Transparent).onClick(() => {// 點擊時,修改遮罩參數,讓遮罩隱藏this.maskOpacity = 0this.maskIndex = -1//   // 點擊時修改遮罩層圖片的縮放比為1:1this.maskImgScaleX = 0this.maskImgScaleY = 0//   開心收下this.images[this.maskImgIndex] = {url: `/images/img_0${this.maskImgIndex}.png`,count: this.images[this.maskImgIndex].count + 1}})}.zIndex(this.maskIndex).opacity(this.maskOpacity).backgroundColor('#cc000000').width('100%').height('100%').justifyContent(FlexAlign.Center)}}
}

抽大獎遮罩層

靜態頁面

// 定義圖片接口
interface ImageCount {url: ResourceStr,count: number
}@Entry
@Component
struct Index {// 定義圖片渲染數組@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 0 },{ url: '/images/bg_02.png', count: 0 },{ url: '/images/bg_03.png', count: 0 },{ url: '/images/bg_04.png', count: 0 },{ url: '/images/bg_05.png', count: 0 },]// 控制遮罩的顯隱@State maskOpacity: number = 0 // 透明度@State maskIndex: number = -1; // 顯示層級// 控制遮罩層圖片的縮放@State maskImgScaleX: number = 0 // 水平縮放比@State maskImgScaleY: number = 0 // 垂直縮放比// 獲取遮罩層選擇的圖片Index@State maskImgIndex: number = 0build() {Stack() {// 抽卡層Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {fontSize: 12,badgeSize: 16}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').height(300).margin({ top: 50, bottom: 50 })// .backgroundColor(Color.Pink)Button('立即抽卡').width(200).backgroundColor('#ED5B8C').onClick(() => {// 點擊時,修改遮罩參數,讓遮罩顯示this.maskOpacity = 1this.maskIndex = 99// 點擊時修改遮罩層圖片的縮放比this.maskImgScaleX = 1this.maskImgScaleY = 1//   // 隨機獲取圖片的Indexthis.maskImgIndex = Math.floor(Math.random() * 6)})}// 遮罩層Column({ space: 30 }) {Text('獲得生肖卡').fontColor('#F3EAD3').fontWeight(700).fontSize(24)Image(`/images/img_0${this.maskImgIndex}.png`).width(200).scale({//控制圖片的縮放x: this.maskImgScaleX,y: this.maskImgScaleY}).animation({// 動畫duration: 500})Button('開心收下').width(200).border({width: 2,color: '#9F9C90',}).backgroundColor(Color.Transparent).onClick(() => {// 點擊時,修改遮罩參數,讓遮罩隱藏this.maskOpacity = 0this.maskIndex = -1//   // 點擊時修改遮罩層圖片的縮放比為1:1this.maskImgScaleX = 0this.maskImgScaleY = 0//   開心收下this.images[this.maskImgIndex] = {url: `/images/img_0${this.maskImgIndex}.png`,count: this.images[this.maskImgIndex].count + 1}})}.zIndex(this.maskIndex).opacity(this.maskOpacity).backgroundColor('#cc000000').width('100%').height('100%').justifyContent(FlexAlign.Center)// 抽大獎遮罩層Column({space: 30}) {Text('恭喜獲得手機一部').fontColor('#E4DDC7').fontWeight(700).fontSize(25)Image('/images/hw.png').width(300)Button('再來一次').width(200).height(50).border({width: 2,color: '#E4DDC7'}).backgroundColor(Color.Transparent)}.justifyContent(FlexAlign.Center).width('100%').height('100%').backgroundColor('#cc000000')}}
}

抽大獎遮罩層的顯隱

前提:

六張卡片集齊,顯示 --- 中大獎頁面

默認為 false,不顯示此抽大獎遮罩層

判斷數組項的count, 是否都大于0, 只能有一個等于0,就意味著沒及其

最終效果演示

隨機獎品 & 再來一次

獎品隨機抽 -》準備一個獎品數組, Math

再來一次 -》重置數據

獎品隨機抽

準備獎品數組,默認抽中的獎品為空

準備隨機數

在“”開心收下“”按鈕下,判斷是否中獎,如果中獎了,準備抽獎。

效果:

再來一次

將數據重置

效果演示:

完整代碼:

import { trustedAppService } from '@kit.DeviceSecurityKit';// 定義圖片接口
interface ImageCount {url: ResourceStr,count: number
}@Entry@Componentstruct Index {// 定義圖片渲染數組@State images: ImageCount[] = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 0 },{ url: '/images/bg_02.png', count: 0 },{ url: '/images/bg_03.png', count: 0 },{ url: '/images/bg_04.png', count: 0 },{ url: '/images/bg_05.png', count: 0 },]// 獎品池@State prizePool: string[] = ['/images/pg.png','/images/hw.png','/images/xm.png']//抽中的獎品@State prize: string = '' // 默認沒中獎// 控制遮罩的顯隱@State maskOpacity: number = 0 // 透明度@State maskIndex: number = -1; // 顯示層級// 控制遮罩層圖片的縮放@State maskImgScaleX: number = 0 // 水平縮放比@State maskImgScaleY: number = 0 // 垂直縮放比// 獲取遮罩層選擇的圖片Index@State maskImgIndex: number = 0// 控制中大獎的顯隱@State isGet: boolean = false // 中大獎顯隱build() {Stack() {// 抽卡層Column() {Grid() {ForEach(this.images, (item: ImageCount) => {GridItem() {Badge({count: item.count,position: BadgePosition.RightTop,style: {fontSize: 12,badgeSize: 16}}) {Image(item.url).width(80)}}})}.rowsTemplate('1fr 1fr').columnsTemplate('1fr 1fr 1fr').height(300).margin({ top: 50, bottom: 50 })// .backgroundColor(Color.Pink)Button('立即抽卡').width(200).backgroundColor('#ED5B8C').onClick(() => {// 點擊時,修改遮罩參數,讓遮罩顯示this.maskOpacity = 1this.maskIndex = 99// 點擊時修改遮罩層圖片的縮放比this.maskImgScaleX = 1this.maskImgScaleY = 1//   // 隨機獲取圖片的Indexthis.maskImgIndex = Math.floor(Math.random() * 6)})}// 遮罩層Column({ space: 30 }) {Text('獲得生肖卡').fontColor('#F3EAD3').fontWeight(700).fontSize(24)Image(`/images/img_0${this.maskImgIndex}.png`).width(200).scale({//控制圖片的縮放x: this.maskImgScaleX,y: this.maskImgScaleY}).animation({// 動畫duration: 500})Button('開心收下').width(200).border({width: 2,color: '#9F9C90',}).backgroundColor(Color.Transparent).onClick(() => {// 點擊時,修改遮罩參數,讓遮罩隱藏this.maskOpacity = 0this.maskIndex = -1//   // 點擊時修改遮罩層圖片的縮放比為1:1this.maskImgScaleX = 0this.maskImgScaleY = 0//   開心收下this.images[this.maskImgIndex] = {url: `/images/img_0${this.maskImgIndex}.png`,count: this.images[this.maskImgIndex].count + 1}// 每次收完,要進行簡單檢索,判斷是否集齊// 需求:判斷數組項的count, 是否都大于0, 只能有一個等于0,就意味著沒及其let flag: boolean = true // 假設集齊// 驗證是否集齊for (let item of this.images) {if (item.count === 0) {flag = false // 沒集齊break; // 只要沒集齊,便可退出循環}}this.isGet = flagif (flag) {let randIndex: number = Math.floor(Math.random() * 3)this.prize = this.prizePool[randIndex]}})}.zIndex(this.maskIndex).opacity(this.maskOpacity).backgroundColor('#cc000000').width('100%').height('100%').justifyContent(FlexAlign.Center)// 抽大獎遮罩層if (this.isGet) {Column({ space: 30 }) {Text('恭喜獲得手機一部').fontColor('#E4DDC7').fontWeight(700).fontSize(25)Image(this.prize).width(300)Button('再來一次').width(200).height(50).border({width: 2,color: '#E4DDC7'}).backgroundColor(Color.Transparent).onClick(() => {this.isGet = falsethis.prize = ''this.images = [{ url: '/images/bg_00.png', count: 0 },{ url: '/images/bg_01.png', count: 0 },{ url: '/images/bg_02.png', count: 0 },{ url: '/images/bg_03.png', count: 0 },{ url: '/images/bg_04.png', count: 0 },{ url: '/images/bg_05.png', count: 0 },]})}.justifyContent(FlexAlign.Center).width('100%').height('100%').backgroundColor('#cc000000')}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76320.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于RV1126開發板實現自學習圖像分類方案

1. 方案簡介 自學習:在識別前對物體圖片進行模型學習,訓練完成后通過算法分類得出圖像的模型ID。 方案設計邏輯流程圖,方案代碼分為分為兩個業務流程,主體代碼負責抓取、合成圖像,算法代碼負責訓練和檢測功能。 2. 快速…

cat命令查看文件行數

在Linux和Unix-like操作系統中,cat命令主要用于查看文件內容,而不是直接用來查看文件行數。如果你想要查看一個文件的行數,可以使用以下幾種方法: 方法1:使用wc命令 wc(word count)命令可以用…

git清理已經刪除的遠程分支

目錄 命令作用 使用場景 示例流程 注意事項 常見問題 git remote update origin --prune git remote update origin --prune 是一個 Git 命令,用于 更新本地遠程跟蹤分支 并 清理(刪除)本地已失效的遠程分支引用。以下是詳細分解&#…

NLP高頻面試題(四十)——什么是 BitFit?

BitFit(Bias-term Fine-tuning)是一種參數高效的微調方法,專注于在預訓練模型中僅調整偏置項(bias term),而將其他參數保持不變。這種方法在自然語言處理領域,尤其是在中小規模數據集上,展現出了與全量微調相媲美的性能,同時顯著減少了計算資源的消耗。 什么是 BitFi…

Java-servlet(完結篇)過濾器亂碼解決與監聽器

Java-servlet(完結篇)過濾器亂碼解決與監聽器 前言一、過濾器亂碼解決二、監聽器1. HttpSessionListener2. ServletContextListener3. ServletRequestListener 三、監聽器的使用場景Java-servlet 結語 前言 在之前的 Java Servlet 學習中,我…

為了避免unboundLocalError和為什么X的值一直不變呢?

## 1.為了避免unboundLocalError 發生unboundLocalError! def generate_integer(level):if level 1:X randint(1,9)return X這里出錯的原因在于,一旦if 后面的條件沒有成立,然后X根本沒出生,然后你去使用它,這是有…

opencv-python基礎

一.opencv-python簡述 其使用Numpy,所有OpenCV數組結構都轉換為Numpy數組,是一個高度優化的數據庫操作庫。 二.環境安裝 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python 三.基本概念 - 像素是圖像的基本單元,每個…

ReentrantLock 實現公平鎖和非公平鎖的原理!

🌟我的其他文章也講解的比較有趣😁,如果喜歡博主的講解方式,可以多多支持一下,感謝🤗! 🌟了解 ThreadLocal請看: ThreadLocal有趣講解,小白也能聽懂&#xff…

NLP高頻面試題(四十一)——什么是 IA3 微調?

隨著大型語言模型的廣泛應用,如何高效地將這些模型適配到特定任務中,成為了研究和工程實踐中的重要課題。IA3(Infused Adapter by Adding and Adjusting)微調技術,作為參數高效微調的一種新穎方法,提供了在保持模型性能的同時,顯著減少可訓練參數數量的解決方案。 IA3 …

swift菜鳥教程14(閉包)

一個樸實無華的目錄 今日學習內容:1.Swift 閉包1.1閉包定義1.2閉包實例1.3閉包表達式1.3.1sorted 方法:據您提供的用于排序的閉包函數將已知類型數組中的值進行排序。1.3.2參數名稱縮寫:直接通過$0,$1,$2來順序調用閉包的參數。1.3.3運算符函…

藍橋杯-藍橋幼兒園(Java-并查集)

并查集的核心思想 并查集主要由兩個操作構成: Find:查找某個元素所在集合的根節點。并查集的特點是,每個元素都指向它自己的父節點,根節點的父節點指向它自己。查找過程中可以通過路徑壓縮來加速后續的查找操作,即將路…

ruby內置全局變量

以下是 Ruby 中常見的 內置全局變量 及其用途的詳細說明。這些變量以 $ 開頭,由 Ruby 解釋器自動管理,用于訪問系統狀態、異常、輸入輸出等核心信息。 一、異常處理相關 全局變量說明示例$!當前作用域最后拋出的異常對象(等同于 rescue >…

tcp轉串口

windows 在 Windows 系統上,可以使用以下成熟的串口轉 TCP 工具: HW VSP3 (HW Virtual Serial Port) 提供串口到 TCP/IP 的映射功能。支持虛擬串口和網絡通信。下載地址:HW Group com0com com2tcp 開源工具,支持虛擬串口和 TCP…

HTML視頻和音頻

<video>元素 <video>元素用于在HTML文檔中嵌入視頻內容。 <video controls><source src"movie.mp4" type"video/mp4"><source src"movie.ogg" type"video/ogg">您的瀏覽器不支持 HTML5 video 標簽。 …

DeepSeek:重構辦公效率的AI新范式

目錄 一、效率躍遷的三重引擎 二、效率提升的量級突破 三、智能辦公的范式轉移 四、未來辦公的效率奇點 當企業主面對堆積如山的文件審批、跨時區協作的溝通損耗、重復機械的數據整理時&#xff0c;是否想過這些場景正在吞噬團隊的生產力&#xff1f;據麥肯錫研究顯示&…

redis 延遲雙刪

Redis延遲雙刪是一種用于解決緩存與數據庫數據一致性問題的策略&#xff0c;通常在高并發場景下使用。以下是其核心內容&#xff1a; 1. 問題背景 當更新數據庫時&#xff0c;如果未及時刪除或更新緩存&#xff0c;可能導致后續讀請求仍從緩存中讀取舊數據&#xff0c;造成數…

Python設計模式:策略模式

1. 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;將每個算法封裝起來&#xff0c;并使它們可以互換。策略模式使得算法的變化獨立于使用算法的客戶。換句話說&#xff0c;策略模式允許在運…

SpringBoot集成Ollama本地模型

SpringBoot集成Ollama本地模型 目錄 項目準備創建Ollama服務客戶端創建控制器配置應用屬性創建前端界面添加靜態資源支持完整項目結構啟動應用高級功能擴展部署注意事項性能優化 1. 項目準備 創建一個SpringBoot項目&#xff0c;可以使用Spring Initializr或IDE創建添加必要…

ResNet改進(19):基于PyTorch的ResNet改進方案詳解:Mish激活+SPP模塊+MixUp數據增強

1. 前言 ResNet作為深度學習領域里程碑式的網絡架構,在圖像分類等計算機視覺任務中表現出色。然而,隨著研究的深入和技術的發展,原始的ResNet架構仍有改進空間。本文將詳細介紹一種基于PyTorch的ResNet改進方案,該方案融合了Mish激活函數、SPP模塊和MixUp數據增強等先進技…

leetcode68.左右文本對齊

思路源自 leetcode-字符串篇 68題 文本左右對齊 難度高的模擬類型題目&#xff0c;關鍵點在于事先知道有多少單詞要放在本行并且還要知道本行是不是最后一行&#xff08;最后一行需要全部單空格右對齊&#xff0c;不是最后一行就空格均攤&#xff09;&#xff0c;非最后一行的空…