Visual C++與HGE游戲引擎:創建偽2.5D斜45度視角游戲

本文還有配套的精品資源,點擊獲取 menu-r.4af5f7ec.gif

簡介:本教程專注講解如何結合Visual C++和HGE游戲引擎構建一個斜45度視角的偽2.5D游戲世界。HGE提供了DirectX的接口,簡化了圖形和音頻處理,使得開發者可以專注于游戲邏輯和視覺效果的實現。教程內容包括如何利用HGE模擬真實世界的天氣效果,如下雨下雪,以及實現日出日落和光照變化的動態效果。通過學習這些高級技術,開發者將能創建具有復雜視覺效果的2D游戲。
visual c++ HGE游戲引擎 斜45度 偽2.5D 天氣下雨下雪 日出日落 光照變化.zip

1. Visual C++在游戲開發中的應用

在當今的游戲開發領域,Visual C++作為一種高效、強大的編程工具,一直扮演著至關重要的角色。它不僅是微軟公司開發的一套成熟的集成開發環境(IDE),也是眾多游戲開發者首選的編程語言。Visual C++因其與Windows平臺的緊密集成,以及對DirectX和Windows API的無縫支持,成為了游戲開發,特別是桌面游戲開發的不二之選。

1.1 Visual C++的特點與優勢

Visual C++的主要特點包括:

  • 性能優化 :它提供了底層訪問功能,讓開發者能夠直接與硬件交互,實現性能優化。
  • 工具支持 :Visual Studio IDE提供了豐富的調試和分析工具,輔助開發者高效開發。
  • 廣泛的兼容性 :與多種Windows平臺的API兼容,易于集成各種資源和第三方庫。

1.2 Visual C++在游戲開發中的應用

在游戲開發中,Visual C++被用于開發游戲的各個層面:

  • 游戲邏輯編寫 :利用C++的強大計算能力和面向對象的特性,進行游戲邏輯的編寫和優化。
  • 資源管理 :對游戲中的資源如圖像、聲音、動畫等進行有效管理,保證游戲運行的流暢性。
  • 圖形和渲染 :通過DirectX等圖形API,實現3D圖形的渲染和其他視覺效果。

通過本章的學習,我們將更深入地了解Visual C++在游戲開發中所扮演的角色,以及如何利用其特性來提升游戲開發的效率和質量。接下來的章節,我們將詳細探討如何使用Visual C++結合HGE游戲引擎,構建一個完整的偽2.5D游戲世界。

2. HGE游戲引擎簡介及使用基礎

2.1 HGE游戲引擎概述

2.1.1 HGE引擎的起源與發展

HGE(High Game Engine)是一款由俄羅斯程序員Vitaliy Shabanov開發的免費的游戲開發引擎,它以DirectX 9為基礎,提供了簡單易用的API,使得開發者可以快速地開發出具有高質量圖形的游戲。HGE以其高效、輕量級的特點迅速吸引了小型獨立游戲開發者的目光。

從最初版本到現在,HGE經歷了幾個發展階段。最初,HGE只支持2D圖形渲染,但隨著游戲開發需求的增加,HGE逐漸加入了對3D圖形、粒子效果和音頻處理的支持。每個新版本的發布,HGE都會帶來更強大的功能和更好的性能優化,為開發者提供了更多的可能性。

2.1.2 HGE引擎的主要功能和特點

HGE引擎的主要功能涵蓋圖形渲染、音頻處理、輸入管理、資源管理等方面,它支持簡單的2D精靈和復雜的3D模型渲染,允許靈活地切換視圖。引擎內建的腳本語言可以實現快速原型開發,而無需進行復雜的編程。

HGE的主要特點包括:

  • 輕量級 :HGE引擎安裝包很小,對系統資源的占用也相對較低,非常適合資源有限的開發環境。
  • 易用性 :HGE提供的API簡潔直觀,通過簡單的函數調用即可實現復雜的功能。
  • 高效性 :HGE通過硬件加速提高了渲染效率,尤其在2D渲染方面,它能夠快速地渲染大規模的精靈。
  • 靈活性 :HGE支持多種編程語言,包括C++和內置的腳本語言,為開發者提供了靈活的開發方式。

2.2 HGE游戲引擎的環境搭建

2.2.1 Visual C++環境下的安裝與配置

要在Visual C++中使用HGE游戲引擎,首先需要下載并安裝HGE引擎的SDK。安裝過程中,需要確保選擇了Visual C++作為開發環境。以下是一個簡單的安裝和配置步驟說明:

  1. 從HGE的官方網站或可信賴的源下載最新的HGE SDK。
  2. 運行下載的安裝程序,并遵循向導指示完成安裝。
  3. 啟動Visual Studio,創建一個新的項目,并選擇Win32控制臺應用程序作為項目類型。
  4. 在項目的屬性頁中,找到“VC++目錄”并添加HGE安裝目錄下的 include lib 文件夾到相應的包含目錄和庫目錄。
  5. 將HGE庫文件(通常是 .lib 文件)添加到項目的鏈接器設置中,確保可以正確鏈接HGE庫。

2.2.2 HGE引擎資源管理機制

HGE引擎中的資源管理機制是其核心特點之一,它負責加載和管理游戲資源,如圖像、音頻文件等。在HGE中,資源被組織在一個統一的資源管理系統下,通過一個名為 hgeResourceManager 的類進行管理,這樣做的好處是簡化了資源的加載和釋放流程,提高了資源使用的效率。

下面是一個簡單的示例代碼,展示如何在HGE中加載和使用資源:

#include "hge.h" // 包含HGE頭文件
#include "hge_resources.h" // 包含資源管理頭文件hge *hgeGame = nullptr; // HGE實例指針
hgeResourceManager *hgeRm = nullptr; // 資源管理器實例指針bool init() {hgeGame = hgeCreate(HGE_VERSION); // 創建HGE實例if (!hgeGame) return false;hgeRm = hgeGame->CreateResourceManager(); // 創建資源管理器實例if (!hgeRm) {hgeGame->Release();return false;}// 加載資源hgeRm->Load("image.hge", "myimage.png", 0); // 加載圖像資源// 其他資源加載...return true;
}void release() {if (hgeRm) {hgeRm->Release(); // 釋放資源管理器hgeRm = nullptr;}if (hgeGame) {hgeGame->Release(); // 釋放HGE實例hgeGame = nullptr;}
}// 游戲循環邏輯
while (hgeGame->Run() && !hgeGame->IsGameQuitting()) {// 更新邏輯// ...// 渲染邏輯hgeGame->GfxREST(); // 等待垂直同步hgeGame->RenderBegin();// 使用資源管理器渲染資源hgeRm->Render("image.hge"); // 渲染圖像資源// ...hgeGame->RenderEnd();
}

以上代碼展示了如何創建HGE實例,初始化資源管理器,并在游戲循環中加載和渲染資源。資源管理器 hgeResourceManager 是連接HGE和游戲資源的橋梁,開發者可以輕松地通過它來管理游戲中的各種資源。

3. 斜45度視角偽2.5D游戲世界構建

3.1 視角解析與設計原理

3.1.1 斜45度視角的視覺效果分析

斜45度視角在視覺上創造出一種錯覺,使玩家能夠同時看到角色的頂部和正面。這種視角通常被用于角色扮演游戲(RPG)和策略游戲,因為它提供了比純2D更豐富的視覺體驗,同時保留了較快的游戲節奏和較低的系統要求。與傳統的垂直或水平視角相比,斜45度視角允許玩家在一個平面上觀察更多的環境元素,而不必頻繁轉動視角來查看背后或側面的物體。

3.1.2 偽2.5D游戲世界的設計原則

偽2.5D游戲世界設計要求在視覺上模擬三維空間,但仍然使用二維元素。它需要遵守一些核心設計原則來保持真實感和游戲性:

  1. 層疊設計 :物體和角色應該按照距離玩家的遠近排列在不同的層次上。
  2. 透視和遮擋 :在設計地圖時要考慮近大遠小的透視效果,以及物體之間的遮擋關系。
  3. 視覺引導 :使用顏色、對比度和光影效果來引導玩家的注意力。
  4. 交互與動畫 :確保角色和物體有自然的交互和動畫效果,以提升游戲的真實感。
  5. 環境細節 :使用豐富的紋理和細節來提升環境的深度和復雜性。

3.2 游戲世界構建實踐

3.2.1 地圖與場景的制作流程

創建一個斜45度視角偽2.5D游戲世界,首先需要完成地圖和場景的設計與制作:

  1. 概念設計 :開始之前,設計師需要繪制概念草圖來規劃游戲世界布局,包括建筑、自然地理特征和興趣點。
  2. 工具選擇 :選擇合適的游戲開發工具或引擎,比如HGE,以及適用的2D圖形編輯軟件,如Photoshop。
  3. 地圖制作 :利用2D編輯軟件創建地圖的各個部分,通常包括地面、建筑、植被等圖層。
  4. 場景裝配 :將地圖的各個圖層和游戲對象導入游戲引擎,設置圖層的順序和屬性,確保正確顯示和交互。
  5. 照明與光影效果 :為了增加深度感,開發者可以應用照明技術模擬不同的天氣和時間。

3.2.2 角色與物體的2D/3D轉換技巧

角色和物體在偽2.5D視角下的表現需要平衡二維圖像的簡潔性和三維效果的真實感:

  1. 2D模型創建 :使用2D繪圖軟件繪制角色和物體的不同面向視圖,通常包括正面、側面和背面。
  2. 動畫序列 :設計一系列幀來展示角色的動作,比如行走、跳躍或攻擊。
  3. 顏色與陰影處理 :為了模擬三維感,角色和物體需要有顏色漸變和陰影效果。
  4. 視點對應調整 :在游戲運行中,根據玩家的視角變化動態調整角色和物體的顯示效果,使其始終保持在視覺焦點。
  5. 優化與細節控制 :保持細節層次分明,不重要的細節可以簡化,以保持良好的性能表現。

接下來,我們將通過代碼示例和圖表來進一步解釋這個過程中如何實現具體的功能和技術細節。

4. DirectX硬件加速與性能提升

4.1 DirectX硬件加速機制

4.1.1 硬件加速的基本概念與重要性

DirectX硬件加速是指利用圖形處理器(GPU)來處理圖形和視頻渲染,而不是依賴于中央處理器(CPU)執行這些任務。這種機制對于游戲開發至關重要,因為它大大減少了CPU的工作負擔,優化了圖形渲染的性能,使得游戲運行更加流暢和高效。

硬件加速的優勢在于它能同時處理大量數據,這是GPU設計的核心所在。與CPU不同,GPU擁有成百上千的內核,可以并行處理多個任務,這在渲染復雜的3D場景時尤其重要。它不僅能提供更高的幀率,還能確保更高質量的視覺效果,如更細膩的紋理和更復雜的光照效果。

4.1.2 DirectX在HGE中的具體應用

HGE游戲引擎采用了DirectX作為其圖形渲染的核心技術。通過DirectX的硬件加速功能,HGE能夠實現高效的渲染管線,其中包括頂點處理、像素著色、紋理映射等步驟。

在HGE中使用DirectX進行硬件加速,開發者可以利用DirectX的各個組件,比如Direct3D進行3D圖形渲染,DirectDraw管理2D圖像和視頻,以及DirectInput來處理輸入設備。HGE封裝了這些DirectX組件,提供更簡單的接口供開發者調用,使得開發者能夠專注于游戲邏輯而非底層圖形編程。

4.2 游戲性能優化策略

4.2.1 性能瓶頸分析與診斷

在游戲開發中,性能瓶頸分析與診斷是一個持續的過程。它涉及到識別和解決游戲中影響性能的問題,比如延遲、卡頓和幀率下降等。為了有效地進行性能優化,開發者需要使用專業的性能分析工具,如Visual Studio的診斷工具、GPU PerfStudio等。

首先,開發者需要確定游戲的基準性能指標,如標準幀率、內存使用量、CPU和GPU負載等。然后,可以通過不同的測試場景來發現游戲中的性能瓶頸。例如,如果在特定的游戲場景中幀率明顯下降,可以推斷出該場景中的某些元素可能是性能問題的根源。

4.2.2 優化技術與技巧的應用實例

性能優化的過程通常包括算法優化、資源管理、渲染優化等多個方面。算法優化通常涉及到對游戲邏輯和數據結構的改進,以減少不必要的計算和內存占用。資源管理包括有效地加載和卸載游戲資源,避免內存浪費和冗余的磁盤讀寫操作。

在DirectX中,開發者可以利用各種高級渲染技術來提高游戲性能,例如使用層次細節(LOD)系統來減少遠處物體的多邊形數量,使用紋理壓縮來減少內存占用。另一個重要的技術是批處理渲染,將多個渲染調用合并成一個調用,以減少渲染狀態的切換開銷。

下面是一個簡單的代碼示例,展示如何在DirectX中使用批處理渲染來提升渲染性能:

// 假設我們有兩個頂點緩沖區,需要繪制
ID3D11Buffer* vertexBuffers[] = { vertexBuffer1, vertexBuffer2 };
UINT strides[] = { sizeof(VertexPositionColor), sizeof(VertexPositionTexture) };
UINT offsets[] = { 0, 0 };
context->IASetVertexBuffers(0, 2, vertexBuffers, strides, offsets);
context->IASetIndexBuffer(indexBuffer, DXGI_FORMAT_R16_UINT, 0);
context->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);// 繪制第一個緩沖區
context->DrawIndexed(numIndices1, 0, 0);// 繪制第二個緩沖區
context->DrawIndexed(numIndices2, numIndices1, 0);

在這個示例中,通過連續調用 DrawIndexed 方法,我們在一個渲染通道中繪制了兩個不同的頂點緩沖區。這減少了對GPU狀態的更改次數,提高了渲染效率。對于更復雜的場景,可能需要進一步管理批處理的邏輯,以確保不會超出GPU的處理能力。

表格和mermaid流程圖將在這部分內容中補充展示,以提供更多維度的信息和更好的閱讀體驗。

5. 天氣效果模擬與光照模型

5.1 天氣效果模擬實現

5.1.1 下雨下雪粒子系統的原理與設計

在游戲開發中,天氣效果模擬能夠極大地增強場景的真實感和沉浸感。對于下雨和下雪效果,粒子系統是實現這些效果的核心技術之一。粒子系統通過生成大量的小粒子來模擬自然界中連續的、動態的現象。

粒子系統設計包含以下幾個關鍵部分:
- 粒子生成器 :定義了粒子在世界空間中的起始位置,以及粒子的生命周期。
- 粒子行為 :描述了粒子如何隨時間改變狀態,如速度、旋轉、透明度等。
- 渲染器 :負責將粒子的最終狀態轉換為在屏幕上的像素,使用不同的著色器和紋理可以改變粒子的外觀。

實現下雨效果時,粒子通常設置為垂直下落,模擬重力影響。對于下雪效果,則可以賦予粒子隨機的水平移動,以模擬雪花飄落的不規則路徑。

5.1.2 粒子效果的渲染與控制方法

渲染粒子效果時,通常需要對每個粒子進行如下計算:

for each particle in particle_system {update particle.position += particle.velocity;update particle.color += particle.fade;update particle.size += particle.growth_rate;render particle with appropriate texture;
}

控制粒子效果的關鍵在于合理設計粒子的生命周期、顏色變化和大小增長速率等屬性。例如,可以通過改變粒子的 fade 值來模擬雨滴和雪花逐漸消融的視覺效果。

渲染時,為了提高性能,可以將粒子劃分為多個批次,并利用現代圖形API的特性進行批量渲染。另外,粒子系統可以對遠處粒子進行剔除處理,從而減少渲染負擔。

5.2 光照模型與時間周期處理

5.2.1 光照模型的設計與實現

光照模型是游戲視覺效果中至關重要的部分,它直接影響到游戲場景的氛圍與現實感。在偽2.5D游戲中,盡管我們只處理2D視覺效果,但光照模型仍可以用來模擬光線與物體的相互作用。

實現光照模型時,我們可以采用以下步驟:
- 光源設置 :定義光源類型(點光源、方向光源、聚光燈等),并設置光源的位置、顏色和強度。
- 材質定義 :為游戲中的對象定義不同的材質屬性,如漫反射、鏡面反射、透明度等。
- 著色算法 :應用合適的著色算法(如Phong或Blinn-Phong)來計算像素的最終顏色。

// 示例著色器代碼片段,使用Blinn-Phong模型
float3 light_dir = normalize(light_position - vertex_position);
float3 view_dir = normalize(view_position - vertex_position);
float3 half_dir = normalize(light_dir + view_dir);
float3 specular_color = specular.rgb * pow(max(0, dot(normal, half_dir)), specular_power);
float3 diffuse_color = max(dot(normal, light_dir), 0) * diffuse.rgb;
float3 ambient_color = ambient.rgb;float3 final_color = ambient_color + diffuse_color + specular_color;

在偽2.5D游戲中,通常會為場景添加動態陰影效果,以增加深度感和立體感。

5.2.2 日出日落與時間循環的模擬技術

為了進一步增強游戲世界的沉浸感,開發者通常會實現一個時間循環系統,使得游戲世界中的時間可以根據設定進行模擬,包括日出、日中和日落等。

實現日出日落效果的關鍵在于:
- 光環境變化 :動態調整環境光、散射光和直射光的顏色與強度。
- 視角與陰影調整 :隨時間變化調整攝像機的視角以及物體的陰影。
- 天空盒變化 :在天空盒中實現太陽的位置移動,以及相應的云層與天空顏色變化。

通過在游戲循環中加入時間控制邏輯,可以在一天中不同的時間段,通過預設的光照設置和環境模型,自動調整游戲世界的光線效果和視覺呈現。

代碼示例:

void UpdateTimeOfDay() {float time = GetGameTime(); // 獲取當前游戲時間float day_fraction = time / (24.0f * 3600.0f); // 計算一天中的比例// 更新光照設置SunLightIntensity = Lerp(day_fraction, 1.0f, 0.5f, nightIntensity);SunLightColor = CalculateSunLightColor(day_fraction);// 更新環境和天空UpdateSkybox(day_fraction);
}Color CalculateSunLightColor(float day_fraction) {float sun_angle = 2.0f * PI * day_fraction;// 假設太陽的起始角度為東南方向float sun_elevation = 0.5 * PI * (1 - cos(sun_angle));// 根據角度計算太陽光顏色的變化return Lerp(Color::White, Color::Yellow, sun_elevation);
}

通過這種循環模型,游戲可以模擬出日夜交替和季節變換,極大地增強游戲的視覺多樣性和玩家的游戲體驗。

本文還有配套的精品資源,點擊獲取 menu-r.4af5f7ec.gif

簡介:本教程專注講解如何結合Visual C++和HGE游戲引擎構建一個斜45度視角的偽2.5D游戲世界。HGE提供了DirectX的接口,簡化了圖形和音頻處理,使得開發者可以專注于游戲邏輯和視覺效果的實現。教程內容包括如何利用HGE模擬真實世界的天氣效果,如下雨下雪,以及實現日出日落和光照變化的動態效果。通過學習這些高級技術,開發者將能創建具有復雜視覺效果的2D游戲。


本文還有配套的精品資源,點擊獲取
menu-r.4af5f7ec.gif

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

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

相關文章

打造個人數字圖書館:LeaNote+cpolar如何成為你的私有化知識中樞?

文章目錄前言1. 安裝Docker2. Docker本地部署Leanote螞蟻筆記3. 安裝cpolar內網穿透4. 固定Leanote螞蟻筆記公網地址前言 在信息爆炸的時代,如何系統管理知識資產并實現價值輸出?螞蟻筆記(Leanote)提供了一種全新解決方案。這款開…

[特殊字符]? 整個鍵盤控制無人機系統框架

🎯 五大核心模塊詳解1. 📥 輸入處理模塊keyboard_control_node ├── 功能:捕獲鍵盤輸入并轉換為ROS消息 ├── 文件:keyboard_control.cpp ├── 輸入:鍵盤按鍵 (W/A/S/D/R/F/Q/E/L/ESC) ├── 輸出:g…

機器學習第三課之邏輯回歸(三)LogisticRegression

目錄 簡介 1.下采樣 2.過采樣 簡介 接上兩篇篇博客最后,我們使用了K折交叉驗證去尋找最合適的C值,提升模型召回率,對于選取C的最優值,我們就要把不同C值放到模型里面訓練,然后用驗證集去驗證得到結果進行比較&#x…

1.Java語言有什么特點

1.Java語言有什么特點 1.面向對象編程,擁有封裝,繼承和多態的特性,所有可以很好的設計出低耦合的項目工程。 2.很好的可移植性,在Java中有java虛擬機(JVM)的支持,每寫一個類都是.Class文件。J…

部署 Kibana 8.2.2 可視化管理 Elasticsearch 8.2.2 集群

? 適用版本:Elasticsearch 8.2.2 Kibana 8.2.2 一、環境準備 組件版本示例地址Elasticsearch8.2.2192.168.130.61:9200, 192.168.130.62:9200, 192.168.130.65:9200Kibana8.2.2部署在 192.168.130.651操作系統CentOS 7?? 嚴格版本匹配:Kibana 8.2.2…

7.2 I/O接口 (答案見原書 P305)

第7章 輸入/輸出系統 7.1 I/O系統基本概念 (答案見原書 P301) & 7.2 I/O接口 (答案見原書 P305) 01. 在統一編址的方式下,區分存儲單元和I/O設備是靠( A )。 題目原文 在統一編址的方式下,區分存儲單元和I/O設備是靠( )。 A. 不同的地址碼 B. 不同的地址線 C. 不同…

并發編程常用工具類(上):CountDownLatch 與 Semaphore 的協作應用

在 Java 并發編程領域,JDK 提供的工具類是簡化多線程協作的重要武器。這些工具類基于 AQS(AbstractQueuedSynchronizer)框架實現,封裝了復雜的同步邏輯,讓開發者無需深入底層即可實現高效的線程協作。本文作為并發工具…

Go 工程化全景:從目錄結構到生命周期的完整服務框架

今天天氣很好, 正好手頭有個小項目, 整理了一下中小項目標準化的痛點問題, 如下, 希望可以幫到大家. 一個成熟的 Go 項目不僅需要清晰的代碼組織,還需要完善的生命周期管理。本文將詳細講解生產級 Go 服務的目錄設計(包含 model 等核心目錄)、…

【C++】2. 類和對象(上)

文章目錄一、類的定義1、類定義格式2、訪問限定符3、類域二、實例化1、實例化概念2、對象??三、this指針四、C和C語?實現Stack對?一、類的定義 1、類定義格式 class為定義類的關鍵字,Stack為類的名字,{ }中為類的主體,注意類定義結束時…

UnityURP 扭曲屏幕效果實現

UnityURP 扭曲屏幕效果實現前言項目下載URPGrabPass空間扭曲著色器實現添加可視化控制創建材質球并設置補充粒子使用步驟CustomData映射移動設備優化鳴謝前言 在Unity的Universal Render Pipeline (URP) 中,傳統的GrabPass功能被移除,借助URPGrabPass工…

(三)軟件架構設計

2024年博主考軟考高級系統架構師沒通過,于是決定集中精力認真學習系統架構的每一個環節,并在2025年軟考中取得了不錯的成績,雖然做信息安全的考架構師很難,但找對方法,問題就不大! 本文主要是博主在學習過程…

切記使用mt19937構造隨機數

在做 Kazaee CodeForces - 1746F 這個問題的時候,最初的時候使用了ran(),然后一直WA,遂改成mt19937,順利通過本道題。 mt19937 Rand(time(0)); 調用隨機數時候,使用: Rand() & 1 注意看&#xff0…

基于N32G45x+RTT驅動框架的定時器外部計數

時鐘選擇 高級控制定時器的內部時鐘:CK_INT: 兩種外部時鐘模式: 外部輸入引腳 外部觸發輸入 ETR 內部觸發輸入(ITRx):一個定時器用作另一個定時器的預分頻器 外部時鐘原理 通過配置 TIMx_SMCTRL.SMSEL=111 選擇該模式。 計數器可以配置為在所選輸入的時鐘上升沿或下降沿 …

[特殊字符] Ubuntu 下 MySQL 離線部署教學(含手動步驟與一鍵腳本)

適用于 Ubuntu 20.04 / 22.04 無網絡環境部署 MySQL。 建議初學者先按手動方式部署一遍理解原理,再使用自動化腳本完成批量部署。📁 一、準備工作 ? 1. 虛擬機環境 系統:Ubuntu 22.04(或兼容版本)環境:無網…

系統一個小時多次Full GC,導致系統線程停止運行,影響系統的性能,可靠性

背景: 某一天系統出現了請求超時,然后通過日志查看,程序執行到某一個位置,直接停下來來了,或者說所有的線程的執行都停下來了。而且是該時間段,請求處理變慢。排查相關的服務,并沒有出現死鎖&am…

使用OMV+NextCloud搭建私有云

原文地址:使用OMVNextCloud搭建私有云 – 無敵牛 歡迎參觀我的網站:無敵牛 – 技術/著作/典籍/分享等 OpenMediaVault(簡稱OMV)是一款基于Debian的開源網絡存儲(NAS)操作系統,提供Web管理界面&…

Codeforces Round 1008 (Div. 2)

A. Final Verdict 題目大意 給你一個數組a,每次把他拆分為等長的k個子序列,然后用子序列的平均數替換掉這個子序列,問最后能不能讓數組只剩下一個數字x 解題思路 無論怎么劃分,最后的總值是不變的,所以只需要看總和…

python轉移安裝目錄到D盤

遷移python安裝路徑第一步:移動目錄第二步:修改環境變量之前沒有設置之前設置過第一步:移動目錄 源路徑: C:\Users\Emma.ZRF\AppData\Local\Programs\Python\Python38 原環境變量 C:\Users\Emma.ZRF\AppData\Local\Programs\Pyth…

C#垃圾回收機制:原理與實踐

C#垃圾回收機制:原理與實踐 一、垃圾回收:C#內存管理的“幕后功臣”? 二、GC的核心引擎:基于代的優化策略 三、Demo展示 1. 簡單對象的垃圾回收示例 2. 基于代的回收示例 四、常用方法 五、推薦使用的場景 六、注意事項 管住手:避免濫用 GC.Collect() 析構函數:保持輕量 …

基于SpringBoot+MyBatis+MySQL+VUE實現的名城小區物業管理系統(附源碼+數據庫+畢業論文+開題報告+部署教程+配套軟件)

摘要 當下,正處于信息化的時代,許多行業順應時代的變化,結合使用計算機技術向數字化、信息化建設邁進。以前相關行業對于物業信息的管理和控制,采用人工登記的方式保存相關數據,這種以人力為主的管理模式已然落后。本人…