OpenHarmony KMP财务投资分析
本文介绍了一个基于Kotlin Multiplatform框架的智能财务投资分析系统。该系统提供五大核心功能:资产评估与分析、投资机会识别、投资组合优化、风险评估与管理以及收益分析与预测。系统通过分析各类资产的风险收益特征,结合投资者的风险偏好,提供科学的投资建议。文章详细展示了资产评估功能的Kotlin实现代码,包括价格分析、波动率计算和估值评估等功能模块。该系统旨在帮助投资者实现智能化、科学化

文章概述
在当今复杂多变的金融市场中,投资者面临着众多的投资选择和风险。智能财务投资分析系统通过采集和分析财务数据、市场数据、经济指标等信息,建立投资分析模型,为投资者提供投资建议、风险评估、资产配置等服务,帮助投资者做出更科学的投资决策。该系统通过实时监测投资组合、分析投资机会、评估投资风险,实现投资的智能化和科学化。
智能财务投资分析系统在实际应用中有广泛的用途。在资产评估中,需要评估各种资产的价值。在投资分析中,需要分析投资机会和风险。在组合管理中,需要管理和优化投资组合。在风险评估中,需要评估投资风险。在收益预测中,需要预测投资收益。
本文将深入探讨如何在KMP(Kotlin Multiplatform)框架下实现一套完整的智能财务投资分析系统,并展示如何在OpenHarmony鸿蒙平台上进行跨端调用。我们将提供多种投资分析功能,包括资产评估、投资分析、组合优化等,帮助投资者实现财富增长。
工具功能详解
核心功能
功能1:资产评估与分析(Asset Valuation and Analysis)
评估和分析各种投资资产的价值。这是投资分析的基础。
功能特点:
- 多资产类型支持
- 价值评估
- 历史对比分析
- 估值指标计算
功能2:投资机会识别(Investment Opportunity Identification)
识别和评估潜在的投资机会。
功能特点:
- 机会扫描
- 机会评分
- 风险评估
- 收益预测
功能3:投资组合优化(Investment Portfolio Optimization)
优化投资组合以实现风险和收益的平衡。
功能特点:
- 多资产配置
- 风险优化
- 收益优化
- 再平衡建议
功能4:风险评估与管理(Risk Assessment and Management)
评估和管理投资风险。
功能特点:
- 多维度风险评估
- 风险等级划分
- 风险对冲建议
- 压力测试
功能5:收益分析与预测(Return Analysis and Forecasting)
分析历史收益并预测未来收益。
功能特点:
- 收益率计算
- 趋势分析
- 收益预测
- 收益对标
Kotlin实现
完整的Kotlin代码实现
/**
* 智能财务投资分析系统 - KMP OpenHarmony
* 提供投资分析和资产管理的多种功能
*/
object SmartFinancialInvestmentUtils {
// 资产类型和风险等级
private val assetRiskProfile = mapOf(
"股票" to mapOf("风险等级" to 0.8, "流动性" to 0.9, "收益潜力" to 0.85),
"债券" to mapOf("风险等级" to 0.3, "流动性" to 0.7, "收益潜力" to 0.4),
"基金" to mapOf("风险等级" to 0.6, "流动性" to 0.8, "收益潜力" to 0.65),
"房产" to mapOf("风险等级" to 0.5, "流动性" to 0.2, "收益潜力" to 0.6),
"黄金" to mapOf("风险等级" to 0.4, "流动性" to 0.8, "收益潜力" to 0.5)
)
// 投资者风险承受能力
private val investorProfiles = mapOf(
"保守型" to mapOf("风险承受度" to 0.3, "投资期限" to 3, "推荐债券比例" to 0.6),
"稳健型" to mapOf("风险承受度" to 0.5, "投资期限" to 5, "推荐债券比例" to 0.4),
"激进型" to mapOf("风险承受度" to 0.8, "投资期限" to 10, "推荐债券比例" to 0.2)
)
/**
* 功能1:资产评估与分析
*/
fun assessAssets(
assetType: String,
currentPrice: Double,
historicalPrices: List<Double>,
marketCap: Double
): Map<String, Any> {
val assessment = mutableMapOf<String, Any>()
val riskProfile = assetRiskProfile[assetType] ?: return assessment
// 价格分析
val avgPrice = historicalPrices.average()
val maxPrice = historicalPrices.maxOrNull() ?: 0.0
val minPrice = historicalPrices.minOrNull() ?: 0.0
val priceChange = ((currentPrice - avgPrice) / avgPrice) * 100
// 波动率计算
val variance = historicalPrices.map { (it - avgPrice) * (it - avgPrice) }.average()
val volatility = Math.sqrt(variance) / avgPrice * 100
// 估值评估
val valuation = when {
currentPrice < avgPrice * 0.8 -> "低估"
currentPrice > avgPrice * 1.2 -> "高估"
else -> "合理"
}
assessment["资产类型"] = assetType
assessment["当前价格"] = String.format("%.2f", currentPrice)
assessment["平均价格"] = String.format("%.2f", avgPrice)
assessment["最高价格"] = String.format("%.2f", maxPrice)
assessment["最低价格"] = String.format("%.2f", minPrice)
assessment["价格变化"] = String.format("%.1f%%", priceChange)
assessment["波动率"] = String.format("%.1f%%", volatility)
assessment["市值"] = String.format("%.0f 亿元", marketCap)
assessment["估值"] = valuation
assessment["风险等级"] = String.format("%.1f", (riskProfile["风险等级"] as Double) * 10)
return assessment
}
/**
* 功能2:投资机会识别
*/
fun identifyOpportunities(
assets: Map<String, Double>,
benchmarkReturns: Map<String, Double>
): Map<String, Any> {
val identification = mutableMapOf<String, Any>()
val opportunities = mutableListOf<String>()
val opportunityScores = mutableMapOf<String, Double>()
for ((asset, currentReturn) in assets) {
val benchmarkReturn = benchmarkReturns[asset] ?: 0.0
val returnDifference = currentReturn - benchmarkReturn
// 机会评分
val score = when {
returnDifference > 5 -> 0.9
returnDifference > 2 -> 0.7
returnDifference > 0 -> 0.5
returnDifference > -2 -> 0.3
else -> 0.1
}
opportunityScores[asset] = score
if (score > 0.6) {
opportunities.add("$asset: 收益超基准 ${String.format("%.1f%%", returnDifference)}")
}
}
// 排序机会
val sortedOpportunities = opportunityScores.entries.sortedByDescending { it.value }
identification["发现机会数"] = opportunities.size
identification["机会列表"] = opportunities
identification["最佳机会"] = if (sortedOpportunities.isNotEmpty()) sortedOpportunities[0].key else "无"
identification["机会评分"] = opportunityScores
return identification
}
/**
* 功能3:投资组合优化
*/
fun optimizePortfolio(
investorType: String,
totalCapital: Double,
currentAllocation: Map<String, Double>
): Map<String, Any> {
val optimization = mutableMapOf<String, Any>()
val profile = investorProfiles[investorType] ?: return optimization
val bondRatio = profile["推荐债券比例"] as Double
val stockRatio = 1 - bondRatio
// 优化后的配置
val optimizedAllocation = mutableMapOf<String, Double>()
optimizedAllocation["债券"] = totalCapital * bondRatio
optimizedAllocation["股票"] = totalCapital * stockRatio * 0.6
optimizedAllocation["基金"] = totalCapital * stockRatio * 0.3
optimizedAllocation["其他"] = totalCapital * stockRatio * 0.1
// 对比分析
val currentRisk = calculatePortfolioRisk(currentAllocation)
val optimizedRisk = calculatePortfolioRisk(optimizedAllocation)
val riskReduction = ((currentRisk - optimizedRisk) / currentRisk) * 100
optimization["投资者类型"] = investorType
optimization["总资本"] = String.format("%.0f 万元", totalCapital)
optimization["当前配置"] = currentAllocation
optimization["优化配置"] = optimizedAllocation
optimization["当前风险"] = String.format("%.2f", currentRisk)
optimization["优化后风险"] = String.format("%.2f", optimizedRisk)
optimization["风险降低"] = String.format("%.1f%%", riskReduction)
optimization["再平衡建议"] = "建议按优化配置进行调整"
return optimization
}
/**
* 功能4:风险评估与管理
*/
fun assessRisk(
portfolio: Map<String, Double>,
volatilities: Map<String, Double>,
correlations: Map<String, Double>
): Map<String, Any> {
val assessment = mutableMapOf<String, Any>()
// 计算组合风险
var portfolioRisk = 0.0
var totalValue = 0.0
for ((asset, value) in portfolio) {
val volatility = volatilities[asset] ?: 0.0
val weight = value / portfolio.values.sum()
portfolioRisk += (weight * volatility) * (weight * volatility)
totalValue += value
}
portfolioRisk = Math.sqrt(portfolioRisk)
// 风险等级
val riskLevel = when {
portfolioRisk > 0.25 -> "高风险"
portfolioRisk > 0.15 -> "中风险"
else -> "低风险"
}
// 风险对冲建议
val hedgingSuggestions = mutableListOf<String>()
if (portfolioRisk > 0.20) hedgingSuggestions.add("考虑增加债券配置以降低风险")
if (portfolio.size < 5) hedgingSuggestions.add("增加资产种类以分散风险")
hedgingSuggestions.add("定期进行压力测试评估极端情况")
assessment["组合总值"] = String.format("%.0f 万元", totalValue)
assessment["组合风险"] = String.format("%.2f", portfolioRisk)
assessment["风险等级"] = riskLevel
assessment["资产数量"] = portfolio.size
assessment["风险对冲建议"] = hedgingSuggestions
assessment["建议行动"] = if (portfolioRisk > 0.20) "立即调整" else "定期监测"
return assessment
}
/**
* 功能5:收益分析与预测
*/
fun analyzeReturns(
historicalReturns: List<Double>,
investmentPeriod: Int
): Map<String, Any> {
val analysis = mutableMapOf<String, Any>()
if (historicalReturns.isEmpty()) return analysis
// 收益率计算
val avgReturn = historicalReturns.average()
val maxReturn = historicalReturns.maxOrNull() ?: 0.0
val minReturn = historicalReturns.minOrNull() ?: 0.0
// 收益波动
val variance = historicalReturns.map { (it - avgReturn) * (it - avgReturn) }.average()
val stdDev = Math.sqrt(variance)
// 收益预测(简单线性外推)
val trend = if (historicalReturns.size >= 2) {
(historicalReturns.last() - historicalReturns.first()) / (historicalReturns.size - 1)
} else {
0.0
}
val predictedReturn = avgReturn + trend * investmentPeriod
// 收益评级
val returnGrade = when {
avgReturn > 15 -> "优秀"
avgReturn > 10 -> "良好"
avgReturn > 5 -> "一般"
else -> "较差"
}
analysis["平均收益率"] = String.format("%.1f%%", avgReturn)
analysis["最高收益率"] = String.format("%.1f%%", maxReturn)
analysis["最低收益率"] = String.format("%.1f%%", minReturn)
analysis["收益波动"] = String.format("%.1f%%", stdDev)
analysis["历史数据点"] = historicalReturns.size
analysis["预测收益率"] = String.format("%.1f%%", predictedReturn)
analysis["预测周期"] = "$investmentPeriod 年"
analysis["收益评级"] = returnGrade
analysis["建议"] = if (avgReturn > 10) "值得投资" else "需谨慎"
return analysis
}
/**
* 生成完整的投资分析报告
*/
fun generateCompleteInvestmentReport(
investorType: String,
totalCapital: Double,
assets: Map<String, Double>,
historicalReturns: List<Double>
): Map<String, Any> {
val report = mutableMapOf<String, Any>()
// 资产评估
val assetAssessment = mutableMapOf<String, Any>()
for ((asset, value) in assets) {
assetAssessment[asset] = assessAssets(asset, value, listOf(value * 0.9, value, value * 1.1), value * 10)
}
report["资产评估"] = assetAssessment
// 机会识别
val benchmarks = assets.mapValues { it.value * 0.05 }
report["机会识别"] = identifyOpportunities(assets, benchmarks)
// 组合优化
report["组合优化"] = optimizePortfolio(investorType, totalCapital, assets)
// 风险评估
val volatilities = assets.mapValues { 0.15 }
report["风险评估"] = assessRisk(assets, volatilities, emptyMap())
// 收益分析
report["收益分析"] = analyzeReturns(historicalReturns, 5)
return report
}
private fun calculatePortfolioRisk(allocation: Map<String, Double>): Double {
var risk = 0.0
val total = allocation.values.sum()
for ((asset, value) in allocation) {
val weight = value / total
val assetRisk = when (asset) {
"债券" -> 0.05
"股票" -> 0.20
"基金" -> 0.12
"房产" -> 0.10
else -> 0.15
}
risk += weight * assetRisk
}
return risk
}
}
// 使用示例
fun main() {
println("KMP OpenHarmony 智能财务投资分析系统演示\n")
// 资产评估
println("=== 资产评估 ===")
val assessment = SmartFinancialInvestmentUtils.assessAssets("股票", 25.0,
listOf(20.0, 22.0, 25.0, 24.0, 26.0), 500.0)
assessment.forEach { (k, v) -> println("$k: $v") }
println()
// 收益分析
println("=== 收益分析 ===")
val returns = SmartFinancialInvestmentUtils.analyzeReturns(
listOf(8.0, 10.0, 12.0, 11.0, 13.0, 15.0), 5)
returns.forEach { (k, v) -> println("$k: $v") }
println()
// 组合优化
println("=== 组合优化 ===")
val optimization = SmartFinancialInvestmentUtils.optimizePortfolio("稳健型", 100.0,
mapOf("股票" to 60.0, "债券" to 40.0))
optimization.forEach { (k, v) -> println("$k: $v") }
}
Kotlin实现的详细说明
Kotlin实现提供了五个核心功能。资产评估与分析评估资产价值。投资机会识别识别投资机会。投资组合优化优化资产配置。风险评估与管理评估投资风险。收益分析与预测分析和预测收益。
JavaScript实现
完整的JavaScript代码实现
/**
* 智能财务投资分析系统 - JavaScript版本
*/
class SmartFinancialInvestmentJS {
static assetRiskProfile = {
'股票': { '风险等级': 0.8, '流动性': 0.9, '收益潜力': 0.85 },
'债券': { '风险等级': 0.3, '流动性': 0.7, '收益潜力': 0.4 },
'基金': { '风险等级': 0.6, '流动性': 0.8, '收益潜力': 0.65 },
'房产': { '风险等级': 0.5, '流动性': 0.2, '收益潜力': 0.6 },
'黄金': { '风险等级': 0.4, '流动性': 0.8, '收益潜力': 0.5 }
};
static investorProfiles = {
'保守型': { '风险承受度': 0.3, '投资期限': 3, '推荐债券比例': 0.6 },
'稳健型': { '风险承受度': 0.5, '投资期限': 5, '推荐债券比例': 0.4 },
'激进型': { '风险承受度': 0.8, '投资期限': 10, '推荐债券比例': 0.2 }
};
/**
* 功能1:资产评估与分析
*/
static assessAssets(assetType, currentPrice, historicalPrices, marketCap) {
const assessment = {};
const riskProfile = this.assetRiskProfile[assetType];
if (!riskProfile) return assessment;
const avgPrice = historicalPrices.reduce((a, b) => a + b) / historicalPrices.length;
const maxPrice = Math.max(...historicalPrices);
const minPrice = Math.min(...historicalPrices);
const priceChange = ((currentPrice - avgPrice) / avgPrice) * 100;
const variance = historicalPrices.map(p => (p - avgPrice) * (p - avgPrice)).reduce((a, b) => a + b) / historicalPrices.length;
const volatility = (Math.sqrt(variance) / avgPrice) * 100;
const valuation = currentPrice < avgPrice * 0.8 ? '低估' :
currentPrice > avgPrice * 1.2 ? '高估' : '合理';
assessment['资产类型'] = assetType;
assessment['当前价格'] = currentPrice.toFixed(2);
assessment['平均价格'] = avgPrice.toFixed(2);
assessment['最高价格'] = maxPrice.toFixed(2);
assessment['最低价格'] = minPrice.toFixed(2);
assessment['价格变化'] = priceChange.toFixed(1) + '%';
assessment['波动率'] = volatility.toFixed(1) + '%';
assessment['市值'] = Math.floor(marketCap) + ' 亿元';
assessment['估值'] = valuation;
assessment['风险等级'] = (riskProfile['风险等级'] * 10).toFixed(1);
return assessment;
}
/**
* 功能2:投资机会识别
*/
static identifyOpportunities(assets, benchmarkReturns) {
const identification = {};
const opportunities = [];
const opportunityScores = {};
for (const [asset, currentReturn] of Object.entries(assets)) {
const benchmarkReturn = benchmarkReturns[asset] || 0;
const returnDifference = currentReturn - benchmarkReturn;
const score = returnDifference > 5 ? 0.9 :
returnDifference > 2 ? 0.7 :
returnDifference > 0 ? 0.5 :
returnDifference > -2 ? 0.3 : 0.1;
opportunityScores[asset] = score;
if (score > 0.6) {
opportunities.push(`${asset}: 收益超基准 ${returnDifference.toFixed(1)}%`);
}
}
const sortedOpportunities = Object.entries(opportunityScores)
.sort((a, b) => b[1] - a[1]);
identification['发现机会数'] = opportunities.length;
identification['机会列表'] = opportunities;
identification['最佳机会'] = sortedOpportunities.length > 0 ? sortedOpportunities[0][0] : '无';
identification['机会评分'] = opportunityScores;
return identification;
}
/**
* 功能3:投资组合优化
*/
static optimizePortfolio(investorType, totalCapital, currentAllocation) {
const optimization = {};
const profile = this.investorProfiles[investorType];
if (!profile) return optimization;
const bondRatio = profile['推荐债券比例'];
const stockRatio = 1 - bondRatio;
const optimizedAllocation = {
'债券': totalCapital * bondRatio,
'股票': totalCapital * stockRatio * 0.6,
'基金': totalCapital * stockRatio * 0.3,
'其他': totalCapital * stockRatio * 0.1
};
const currentRisk = this.calculatePortfolioRisk(currentAllocation);
const optimizedRisk = this.calculatePortfolioRisk(optimizedAllocation);
const riskReduction = ((currentRisk - optimizedRisk) / currentRisk) * 100;
optimization['投资者类型'] = investorType;
optimization['总资本'] = Math.floor(totalCapital) + ' 万元';
optimization['当前配置'] = currentAllocation;
optimization['优化配置'] = optimizedAllocation;
optimization['当前风险'] = currentRisk.toFixed(2);
optimization['优化后风险'] = optimizedRisk.toFixed(2);
optimization['风险降低'] = riskReduction.toFixed(1) + '%';
optimization['再平衡建议'] = '建议按优化配置进行调整';
return optimization;
}
/**
* 功能4:风险评估与管理
*/
static assessRisk(portfolio, volatilities, correlations) {
const assessment = {};
let portfolioRisk = 0;
let totalValue = 0;
for (const [asset, value] of Object.entries(portfolio)) {
const volatility = volatilities[asset] || 0;
const weight = value / Object.values(portfolio).reduce((a, b) => a + b);
portfolioRisk += (weight * volatility) * (weight * volatility);
totalValue += value;
}
portfolioRisk = Math.sqrt(portfolioRisk);
const riskLevel = portfolioRisk > 0.25 ? '高风险' :
portfolioRisk > 0.15 ? '中风险' : '低风险';
const hedgingSuggestions = [];
if (portfolioRisk > 0.20) hedgingSuggestions.push('考虑增加债券配置以降低风险');
if (Object.keys(portfolio).length < 5) hedgingSuggestions.push('增加资产种类以分散风险');
hedgingSuggestions.push('定期进行压力测试评估极端情况');
assessment['组合总值'] = Math.floor(totalValue) + ' 万元';
assessment['组合风险'] = portfolioRisk.toFixed(2);
assessment['风险等级'] = riskLevel;
assessment['资产数量'] = Object.keys(portfolio).length;
assessment['风险对冲建议'] = hedgingSuggestions;
assessment['建议行动'] = portfolioRisk > 0.20 ? '立即调整' : '定期监测';
return assessment;
}
/**
* 功能5:收益分析与预测
*/
static analyzeReturns(historicalReturns, investmentPeriod) {
const analysis = {};
if (historicalReturns.length === 0) return analysis;
const avgReturn = historicalReturns.reduce((a, b) => a + b) / historicalReturns.length;
const maxReturn = Math.max(...historicalReturns);
const minReturn = Math.min(...historicalReturns);
const variance = historicalReturns.map(r => (r - avgReturn) * (r - avgReturn)).reduce((a, b) => a + b) / historicalReturns.length;
const stdDev = Math.sqrt(variance);
const trend = historicalReturns.length >= 2 ?
(historicalReturns[historicalReturns.length - 1] - historicalReturns[0]) / (historicalReturns.length - 1) : 0;
const predictedReturn = avgReturn + trend * investmentPeriod;
const returnGrade = avgReturn > 15 ? '优秀' :
avgReturn > 10 ? '良好' :
avgReturn > 5 ? '一般' : '较差';
analysis['平均收益率'] = avgReturn.toFixed(1) + '%';
analysis['最高收益率'] = maxReturn.toFixed(1) + '%';
analysis['最低收益率'] = minReturn.toFixed(1) + '%';
analysis['收益波动'] = stdDev.toFixed(1) + '%';
analysis['历史数据点'] = historicalReturns.length;
analysis['预测收益率'] = predictedReturn.toFixed(1) + '%';
analysis['预测周期'] = investmentPeriod + ' 年';
analysis['收益评级'] = returnGrade;
analysis['建议'] = avgReturn > 10 ? '值得投资' : '需谨慎';
return analysis;
}
/**
* 生成完整的投资分析报告
*/
static generateCompleteInvestmentReport(investorType, totalCapital, assets, historicalReturns) {
const report = {};
const assetAssessment = {};
for (const [asset, value] of Object.entries(assets)) {
assetAssessment[asset] = this.assessAssets(asset, value,
[value * 0.9, value, value * 1.1], value * 10);
}
report['资产评估'] = assetAssessment;
const benchmarks = {};
for (const [asset, value] of Object.entries(assets)) {
benchmarks[asset] = value * 0.05;
}
report['机会识别'] = this.identifyOpportunities(assets, benchmarks);
report['组合优化'] = this.optimizePortfolio(investorType, totalCapital, assets);
const volatilities = {};
for (const asset of Object.keys(assets)) {
volatilities[asset] = 0.15;
}
report['风险评估'] = this.assessRisk(assets, volatilities, {});
report['收益分析'] = this.analyzeReturns(historicalReturns, 5);
return report;
}
static calculatePortfolioRisk(allocation) {
let risk = 0;
const total = Object.values(allocation).reduce((a, b) => a + b);
for (const [asset, value] of Object.entries(allocation)) {
const weight = value / total;
const assetRisk = asset === '债券' ? 0.05 :
asset === '股票' ? 0.20 :
asset === '基金' ? 0.12 :
asset === '房产' ? 0.10 : 0.15;
risk += weight * assetRisk;
}
return risk;
}
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = SmartFinancialInvestmentJS;
}
JavaScript实现的详细说明
JavaScript版本充分利用了JavaScript的对象和计算功能。资产评估评估资产价值。机会识别识别投资机会。组合优化优化资产配置。风险评估评估投资风险。收益分析分析和预测收益。
ArkTS调用实现
ArkTS版本为OpenHarmony鸿蒙平台提供了完整的用户界面。通过@State装饰器,我们可以管理应用的状态。这个实现包含了投资者类型、资本金额、资产选择、历史收益等功能,用户可以输入投资信息,选择不同的分析工具,查看投资分析和优化建议。
应用场景分析
1. 资产评估与选择
投资者需要评估资产。使用系统可以获得资产评估报告。
2. 投资机会识别
投资者需要发现投资机会。使用系统可以识别优质机会。
3. 组合配置与优化
投资者需要优化投资组合。使用系统可以获得优化建议。
4. 风险评估与管理
投资者需要评估风险。使用系统可以进行全面评估。
5. 收益分析与预测
投资者需要预测收益。使用系统可以进行收益分析。
性能优化建议
1. 实时数据接入
集成实时金融数据源。
2. 高级分析模型
使用机器学习进行更精准预测。
3. 风险管理工具
提供更多风险管理工具。
4. 可视化展示
提供丰富的投资数据可视化。
总结
智能财务投资分析系统是现代投资的重要工具。通过在KMP框架下实现这套系统,我们可以在多个平台上使用同一套代码,提高开发效率。这个系统提供了资产评估、机会识别、组合优化、风险评估和收益分析等多种功能,可以满足大多数投资者的需求。
在OpenHarmony鸿蒙平台上,我们可以通过ArkTS调用这些工具,为投资者提供完整的投资分析体验。掌握这套系统,不仅能够帮助投资者做出更科学的投资决策,更重要的是能够在实际项目中灵活应用,解决资产管理、投资优化等实际问题。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐



所有评论(0)