Flutter 框架跨平台鸿蒙开发 - 智能植物生长记录应用

欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图

1.1 应用简介

智能植物生长记录是一款专业的植物生长管理工具应用,通过拍照记录、数据测量、观察日记等功能,全方位记录植物的生长过程。应用内置智能分析引擎,支持生长曲线可视化、生长阶段识别,还能与植物爱好者社区交流分享,让植物养护更加科学有趣。

应用以清新的绿色为主色调,象征生机与活力。涵盖生长记录、数据测量、观察日记、社区交流四大模块。用户可以拍照记录生长状态、测量植物高度叶片、撰写观察日记、分享养护经验,让每一株植物的成长历程都被完整记录。

1.2 核心功能

功能模块 功能描述 实现方式
拍照记录 定期拍照记录生长状态 相机集成
数据测量 高度、叶片数、茎粗测量 手动输入
观察日记 文字记录观察心得 文本编辑
生长曲线 可视化生长数据趋势 图表绘制
阶段识别 自动识别生长阶段 规则引擎
提醒功能 浇水、施肥、修剪提醒 定时任务
社区分享 分享植物成长故事 社交功能
经验交流 与植物爱好者互动 评论系统

1.3 植物类型定义

序号 植物类型 Emoji 描述
1 观叶植物 🌿 绿萝、龟背竹、发财树等
2 开花植物 🌸 玫瑰、茉莉、栀子花等
3 多肉植物 🌵 仙人掌、景天、芦荟等
4 蔬菜水果 🥬 番茄、辣椒、草莓等
5 草本植物 🌱 薄荷、罗勒、迷迭香等
6 水培植物 💧 绿萝、富贵竹、铜钱草等

1.4 生长阶段定义

序号 阶段名称 Emoji 天数范围 描述
1 种子期 🌱 0-7天 播种发芽阶段
2 幼苗期 🌿 8-30天 初步生长阶段
3 生长期 🌳 31-90天 快速生长阶段
4 成熟期 🌻 91-180天 稳定生长阶段
5 开花期 🌸 视品种 开花结果阶段
6 休眠期 🍂 视品种 冬季休眠阶段

1.5 测量指标定义

序号 指标名称 Emoji 单位 测量频率
1 植株高度 📏 厘米 每周
2 叶片数量 🍃 每周
3 茎粗 📐 毫米 每两周
4 叶片长度 🌿 厘米 每周
5 花苞数量 🌸 开花期
6 果实数量 🍎 结果期

1.6 养护提醒定义

序号 提醒类型 Emoji 频率 描述
1 浇水提醒 💧 视品种 保持土壤湿润
2 施肥提醒 🌱 每月 补充营养
3 修剪提醒 ✂️ 每季 整理株型
4 换盆提醒 🪴 每年 更换盆土
5 防虫提醒 🐛 每月 检查病虫害
6 光照提醒 ☀️ 每日 调整光照位置

1.7 技术栈

技术领域 技术选型 版本要求
开发框架 Flutter >= 3.0.0
编程语言 Dart >= 2.17.0
设计规范 Material Design 3 -
状态管理 Provider >= 6.0.0
数据存储 SharedPreferences >= 2.0.0
图表库 FL Chart >= 0.55.0
图片选择 Image Picker >= 0.8.0
目标平台 鸿蒙OS / Web API 21+

1.8 项目结构

复制代码
lib/
└── main_plant_growth_tracker.dart
    ├── PlantGrowthTrackerApp           # 应用入口
    ├── PlantType                       # 植物类型枚举
    ├── GrowthStage                     # 生长阶段枚举
    ├── ReminderType                    # 提醒类型枚举
    ├── Plant                           # 植物模型
    ├── GrowthRecord                    # 生长记录模型
    ├── Observation                     # 观察日记模型
    ├── Measurement                     # 测量数据模型
    ├── CommunityPost                   # 社区帖子模型
    ├── PlantGrowthTrackerHomePage      # 主页面(底部导航)
    ├── _buildRecordPage                # 记录页面
    ├── _buildDataPage                  # 数据页面
    ├── _buildDiaryPage                 # 日记页面
    ├── _buildCommunityPage             # 社区页面
    ├── GrowthCurvePainter              # 生长曲线绘制器
    └── PlantCardPainter                # 植物卡片绘制器

二、系统架构

2.1 整体架构图

Data Layer
Business Layer
Presentation Layer
主页面

PlantGrowthTrackerHomePage
记录页
数据页
日记页
社区页
拍照记录
数据测量
观察日记
生长曲线
数据分析
阶段识别
日记列表
日记详情
帖子列表
发布分享
评论互动
生长分析引擎

GrowthAnalyzer
阶段识别器

StageDetector
提醒管理器

ReminderManager
Plant

植物信息
GrowthRecord

生长记录
Observation

观察日记
CommunityPost

社区帖子

2.2 类图设计

has
in
belongs to
belongs to
references
PlantGrowthTrackerApp
+Widget build()
<<enumeration>>
PlantType
+String label
+String emoji
+String description
+foliage()
+flowering()
+succulent()
+vegetable()
+herb()
+hydroponic()
<<enumeration>>
GrowthStage
+String label
+String emoji
+int minDays
+int maxDays
+seed()
+seedling()
+growth()
+mature()
+flowering()
+dormant()
<<enumeration>>
ReminderType
+String label
+String emoji
+String frequency
+water()
+fertilize()
+prune()
+repot()
+pest()
+light()
Plant
+String id
+String name
+PlantType type
+String variety
+DateTime plantDate
+String location
+String avatar
+GrowthStage currentStage
+DateTime createdAt
GrowthRecord
+String id
+String plantId
+DateTime recordDate
+String photoPath
+double height
+int leafCount
+double stemDiameter
+double leafLength
+int flowerBuds
+int fruits
+String notes
Observation
+String id
+String plantId
+DateTime date
+String title
+String content
+List<String> photos
+String weather
+String mood
CommunityPost
+String id
+String userId
+String userName
+String userAvatar
+String plantId
+String title
+String content
+List<String> photos
+int likes
+int comments
+DateTime createdAt

2.3 页面导航流程

记录
数据
日记
社区
应用启动
记录页
底部导航
选择植物
查看曲线
日记列表
帖子列表
拍照记录
数据测量
写日记
选择指标
查看趋势
阶段分析
查看详情
编辑日记
发布分享
查看详情
评论互动

2.4 生长记录流程

提醒系统 阶段识别 生长分析 记录页 用户 提醒系统 阶段识别 生长分析 记录页 用户 选择植物 显示植物信息 拍照记录 保存照片 返回保存结果 输入测量数据 提交数据 分析生长阶段 返回阶段信息 更新提醒 推送下次提醒


三、核心模块设计

3.1 数据模型设计

3.1.1 植物类型枚举 (PlantType)
dart 复制代码
enum PlantType {
  foliage(label: '观叶植物', emoji: '🌿', description: '绿萝、龟背竹、发财树等'),
  flowering(label: '开花植物', emoji: '🌸', description: '玫瑰、茉莉、栀子花等'),
  succulent(label: '多肉植物', emoji: '🌵', description: '仙人掌、景天、芦荟等'),
  vegetable(label: '蔬菜水果', emoji: '🥬', description: '番茄、辣椒、草莓等'),
  herb(label: '草本植物', emoji: '🌱', description: '薄荷、罗勒、迷迭香等'),
  hydroponic(label: '水培植物', emoji: '💧', description: '绿萝、富贵竹、铜钱草等');

  final String label;
  final String emoji;
  final String description;
}
3.1.2 生长阶段枚举 (GrowthStage)
dart 复制代码
enum GrowthStage {
  seed(label: '种子期', emoji: '🌱', minDays: 0, maxDays: 7),
  seedling(label: '幼苗期', emoji: '🌿', minDays: 8, maxDays: 30),
  growth(label: '生长期', emoji: '🌳', minDays: 31, maxDays: 90),
  mature(label: '成熟期', emoji: '🌻', minDays: 91, maxDays: 180),
  flowering(label: '开花期', emoji: '🌸', minDays: 0, maxDays: 0),
  dormant(label: '休眠期', emoji: '🍂', minDays: 0, maxDays: 0);

  final String label;
  final String emoji;
  final int minDays;
  final int maxDays;
}
3.1.3 植物模型 (Plant)
dart 复制代码
class Plant {
  final String id;              // 植物ID
  final String name;            // 植物名称
  final PlantType type;         // 植物类型
  final String variety;         // 品种
  final DateTime plantDate;     // 种植日期
  final String location;        // 位置
  final String avatar;          // 头像路径
  final GrowthStage currentStage; // 当前阶段
  final DateTime createdAt;     // 创建时间
}
3.1.4 生长记录模型 (GrowthRecord)
dart 复制代码
class GrowthRecord {
  final String id;              // 记录ID
  final String plantId;         // 植物ID
  final DateTime recordDate;    // 记录日期
  final String photoPath;       // 照片路径
  final double height;          // 高度(厘米)
  final int leafCount;          // 叶片数量
  final double stemDiameter;    // 茎粗(毫米)
  final double leafLength;      // 叶片长度(厘米)
  final int flowerBuds;         // 花苞数量
  final int fruits;             // 果实数量
  final String notes;           // 备注
}
3.1.5 植物类型分布

35% 25% 20% 10% 7% 3% 植物类型分布示例 观叶植物 多肉植物 开花植物 草本植物 蔬菜水果 水培植物

3.2 页面结构设计

3.2.1 主页面布局

PlantGrowthTrackerHomePage
IndexedStack
记录页
数据页
日记页
社区页
NavigationBar
记录 Tab
数据 Tab
日记 Tab
社区 Tab

3.2.2 记录页结构

记录页
SliverAppBar
植物选择器
快速统计
拍照记录
数据测量
观察日记
养护提醒
植物卡片列表
记录次数
最近记录
生长天数
相机拍照
相册选择
高度测量
叶片计数
茎粗测量

3.2.3 数据页结构

数据页
SliverAppBar
植物选择器
生长曲线
数据统计
阶段分析
数据导出
高度曲线
叶片曲线
对比分析
平均值
增长率
最大最小值
当前阶段
阶段进度
预测下一阶段

3.2.4 社区页结构

社区页
SliverAppBar
热门帖子
最新帖子
我的分享
发布按钮
帖子卡片
点赞评论
时间线列表
我的帖子
我的收藏

3.3 生长分析逻辑

种子期
幼苗期
生长期
成熟期
开花期
获取生长记录
计算生长天数
识别生长阶段
当前阶段
计算发芽率
计算成活率
计算生长速度
计算稳定度
计算开花率
生成分析报告
更新植物状态
推送养护建议

3.4 社区交流逻辑

点赞
评论
收藏
用户发布帖子
上传照片
填写内容
选择关联植物
发布到社区
其他用户浏览
用户互动
增加热度
增加互动
保存到个人
更新推荐
推送通知


四、UI设计规范

4.1 配色方案

应用以清新的绿色为主色调,象征生机与活力:

颜色类型 色值 用途
主色 #4CAF50 (Green) 导航、主题元素
辅助色 #66BB6A 记录页面
第三色 #81C784 数据页面
强调色 #A5D6A7 日记页面
背景色 #FAFAFA 页面背景
卡片背景 #FFFFFF 信息卡片
警告色 #FF9800 提醒通知
成功色 #4CAF50 操作成功

4.2 生长阶段配色

阶段 色值 视觉效果
种子期 #8BC34A 浅绿色
幼苗期 #4CAF50 嫩绿色
生长期 #388E3C 深绿色
成熟期 #2E7D32 墨绿色
开花期 #E91E63 粉红色
休眠期 #795548 棕色

4.3 字体规范

元素 字号 字重 颜色
页面标题 24px Bold 主色
植物名称 18px Bold #000000
数据数值 20px Bold 主色
日记标题 16px Bold #000000
日记内容 14px Regular #333333
提示文字 12px Regular #666666

4.4 组件规范

4.4.1 植物卡片
复制代码
┌─────────────────────────────────────┐
│  我的植物                            │
│                                     │
│  ┌─────────────────────────────┐   │
│  │  🌿 绿萝                    │   │
│  │                             │   │
│  │  种植: 2024-01-01           │   │
│  │  阶段: 🌳 生长期            │   │
│  │  高度: 45cm                 │   │
│  │  叶片: 28片                 │   │
│  │                             │   │
│  │  [记录] [数据] [日记]       │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
4.4.2 生长曲线卡
复制代码
┌─────────────────────────────────────┐
│  生长曲线                            │
│                                     │
│  高度变化                            │
│  ━━━━━━━━━━━━━━━━━━━━━━             │
│  📈 30天增长: +15cm                 │
│  📊 平均增长率: 0.5cm/天            │
│                                     │
│  叶片数量                            │
│  ━━━━━━━━━━━━━━━━━━━━━━             │
│  📈 30天增加: +8片                  │
│  📊 平均增长率: 0.27片/天           │
└─────────────────────────────────────┘
4.4.3 观察日记卡
复制代码
┌─────────────────────────────────────┐
│  观察日记                            │
│                                     │
│  📅 2024-03-15  ☀️ 晴天             │
│                                     │
│  标题: 绿萝长出新叶啦!              │
│                                     │
│  今天发现绿萝又长出了两片新叶,      │
│  颜色很嫩绿,看起来很健康。最近      │
│  天气转暖,应该多给它晒晒太阳...     │
│                                     │
│  [📷 2张照片]                       │
│                                     │
│  💚 12  💬 3                        │
└─────────────────────────────────────┘
4.4.4 测量表单
复制代码
┌─────────────────────────────────────┐
│  数据测量                            │
│                                     │
│  记录日期: [2024-03-15 ▼]           │
│                                     │
│  植株高度: ──────●──────── 45cm      │
│                                     │
│  叶片数量: ─────●───────── 28片      │
│                                     │
│  茎粗: ────●──────────── 5.2mm       │
│                                     │
│  备注:                              │
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  └─────────────────────────────┘   │
│                                     │
│  [保存记录]                         │
└─────────────────────────────────────┘
4.4.5 社区帖子卡
复制代码
┌─────────────────────────────────────┐
│  👤 小明  🌿 绿萝                   │
│  2024-03-15                         │
│                                     │
│  我的绿萝终于开花了!                │
│                                     │
│  养了三年的绿萝,今天终于看到花      │
│  苞了,太开心了!分享给大家看看...   │
│                                     │
│  [📷 照片预览]                      │
│                                     │
│  💚 128  💬 32  ⭐ 收藏             │
└─────────────────────────────────────┘

五、核心功能实现

5.1 生长曲线绘制实现

dart 复制代码
class GrowthCurvePainter extends CustomPainter {
  final List<double> heightData;
  final List<DateTime> dates;
  final Color color;

  @override
  void paint(Canvas canvas, Size size) {
    if (heightData.isEmpty || heightData.length < 2) return;

    final path = Path();
    final stepX = size.width / (heightData.length - 1);
    final maxVal = heightData.reduce(max);
    final minVal = heightData.reduce(min);
    final range = maxVal - minVal == 0 ? 1.0 : maxVal - minVal;

    // 绘制曲线
    for (int i = 0; i < heightData.length; i++) {
      final x = i * stepX;
      final y = size.height - ((heightData[i] - minVal) / range) * size.height;
      
      if (i == 0) {
        path.moveTo(x, y);
      } else {
        path.lineTo(x, y);
      }
    }

    final paint = Paint()
      ..color = color
      ..style = PaintingStyle.stroke
      ..strokeWidth = 3;

    canvas.drawPath(path, paint);

    // 绘制数据点
    for (int i = 0; i < heightData.length; i++) {
      final x = i * stepX;
      final y = size.height - ((heightData[i] - minVal) / range) * size.height;
      
      canvas.drawCircle(
        Offset(x, y),
        4,
        Paint()..color = color,
      );
    }
  }
}

5.2 阶段识别实现

dart 复制代码
class StageDetector {
  GrowthStage detectStage(DateTime plantDate, DateTime currentDate) {
    final days = currentDate.difference(plantDate).inDays;

    if (days <= 7) {
      return GrowthStage.seed;
    } else if (days <= 30) {
      return GrowthStage.seedling;
    } else if (days <= 90) {
      return GrowthStage.growth;
    } else if (days <= 180) {
      return GrowthStage.mature;
    } else {
      return GrowthStage.mature;
    }
  }

  double calculateStageProgress(DateTime plantDate, DateTime currentDate, GrowthStage stage) {
    final days = currentDate.difference(plantDate).inDays;
    
    if (stage.maxDays == 0) return 1.0;
    
    final stageDays = days - stage.minDays;
    final stageDuration = stage.maxDays - stage.minDays;
    
    return (stageDays / stageDuration).clamp(0.0, 1.0);
  }
}

5.3 生长分析实现

dart 复制代码
class GrowthAnalyzer {
  GrowthAnalysis analyzeGrowth(List<GrowthRecord> records) {
    if (records.length < 2) {
      return GrowthAnalysis(
        averageGrowthRate: 0,
        maxHeight: 0,
        minHeight: 0,
        totalGrowth: 0,
      );
    }

    final sortedRecords = records..sort((a, b) => a.recordDate.compareTo(b.recordDate));
    
    final firstHeight = sortedRecords.first.height;
    final lastHeight = sortedRecords.last.height;
    final totalGrowth = lastHeight - firstHeight;

    final days = sortedRecords.last.recordDate
        .difference(sortedRecords.first.recordDate)
        .inDays;
    
    final averageGrowthRate = days > 0 ? totalGrowth / days : 0.0;

    final heights = records.map((r) => r.height).toList();
    final maxHeight = heights.reduce(max);
    final minHeight = heights.reduce(min);

    return GrowthAnalysis(
      averageGrowthRate: averageGrowthRate,
      maxHeight: maxHeight,
      minHeight: minHeight,
      totalGrowth: totalGrowth,
    );
  }
}

5.4 提醒管理实现

dart 复制代码
class ReminderManager {
  List<PlantReminder> generateReminders(Plant plant) {
    List<PlantReminder> reminders = [];

    // 浇水提醒
    reminders.add(PlantReminder(
      type: ReminderType.water,
      plantId: plant.id,
      nextDate: _calculateNextWaterDate(plant.type),
      message: '该给${plant.name}浇水啦!',
    ));

    // 施肥提醒
    reminders.add(PlantReminder(
      type: ReminderType.fertilize,
      plantId: plant.id,
      nextDate: _calculateNextFertilizeDate(plant.type),
      message: '该给${plant.name}施肥啦!',
    ));

    // 修剪提醒
    reminders.add(PlantReminder(
      type: ReminderType.prune,
      plantId: plant.id,
      nextDate: _calculateNextPruneDate(plant.type),
      message: '该给${plant.name}修剪啦!',
    ));

    return reminders;
  }

  DateTime _calculateNextWaterDate(PlantType type) {
    int interval;
    switch (type) {
      case PlantType.succulent:
        interval = 7;
        break;
      case PlantType.hydroponic:
        interval = 3;
        break;
      default:
        interval = 2;
    }
    return DateTime.now().add(Duration(days: interval));
  }
}

5.5 记录保存实现

dart 复制代码
void _saveRecord() {
  setState(() {
    _isSaving = true;
  });

  final record = GrowthRecord(
    id: 'record_${DateTime.now().millisecondsSinceEpoch}',
    plantId: _currentPlant.id,
    recordDate: DateTime.now(),
    photoPath: _photoPath,
    height: _height,
    leafCount: _leafCount,
    stemDiameter: _stemDiameter,
    leafLength: _leafLength,
    flowerBuds: _flowerBuds,
    fruits: _fruits,
    notes: _notes,
  );

  _growthRecords.insert(0, record);

  // 分析生长数据
  final analysis = _growthAnalyzer.analyzeGrowth(_growthRecords);
  
  // 更新植物阶段
  final newStage = _stageDetector.detectStage(
    _currentPlant.plantDate,
    DateTime.now(),
  );

  setState(() {
    _isSaving = false;
    _currentPlant = _currentPlant.copyWith(currentStage: newStage);
  });

  // 生成提醒
  _reminderManager.generateReminders(_currentPlant);
}

六、交互设计

6.1 记录流程

分析引擎 相机 记录页 用户 分析引擎 相机 记录页 用户 选择植物 显示植物信息 点击拍照 打开相机 返回照片 输入测量数据 提交数据 分析生长情况 返回分析结果 显示保存成功

6.2 数据查看流程

曲线图
数据表
分析
打开数据页
选择植物
选择指标
查看类型
显示生长曲线
显示数据列表
显示分析报告
选择时间范围
导出数据
分享报告

6.3 社区交流流程

点击帖子
点击点赞
点击评论
点击收藏
点击发布
选择照片
输入文字
点击发布
浏览帖子
查看详情
点赞
评论
收藏
发布帖子
上传照片
填写内容
发布


七、扩展功能规划

7.1 后续版本规划

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 2024-03-31 2024-04-07 基础UI框架 植物管理功能 记录功能实现 生长曲线绘制 阶段识别算法 社区交流功能 AI识别植物 智能养护建议 数据云同步 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 智能植物生长记录应用开发计划

7.2 功能扩展建议

7.2.1 AI智能识别

识别功能:

  • 拍照识别植物品种
  • 自动检测病虫害
  • 智能诊断健康状态
  • 推荐养护方案
7.2.2 智能养护建议

建议功能:

  • 个性化养护计划
  • 环境监测提醒
  • 季节养护指南
  • 专家在线咨询
7.2.3 数据云同步

同步功能:

  • 多设备数据同步
  • 数据备份恢复
  • 团队协作管理
  • 数据导出分享

八、注意事项

8.1 开发注意事项

  1. 数据准确性:测量数据需确保准确记录

  2. 照片管理:大量照片需优化存储和加载

  3. 隐私保护:社区分享需保护用户隐私

  4. 性能优化:大量数据查询需优化性能

  5. 用户体验:记录操作需简单便捷

8.2 常见问题

问题 原因 解决方案
照片加载慢 图片过大 压缩图片质量
数据不同步 网络问题 添加离线缓存
阶段识别错误 算法不准确 优化识别逻辑
提醒不及时 后台限制 使用系统通知
社区加载慢 数据量大 分页加载优化

8.3 使用技巧

🌱 植物生长记录技巧 🌱

记录要点

  • 定期记录:每周固定时间记录
  • 持续跟踪:连续记录才能发现趋势
  • 多角度拍照:全方位记录生长状态
  • 详细备注:记录环境变化和养护操作

测量技巧

  • 高度测量:从土面到最高点
  • 叶片计数:只计算完全展开的叶片
  • 茎粗测量:在固定位置测量
  • 拍照角度:保持相同角度便于对比

养护建议

  • 浇水适量:根据植物类型调整
  • 光照充足:保证光合作用
  • 适时施肥:生长期补充营养
  • 定期修剪:保持良好株型

九、运行说明

9.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
鸿蒙OS API 21+
Web浏览器 Chrome 90+

9.2 运行命令

bash 复制代码
# 查看可用设备
flutter devices

# 运行到Web服务器
flutter run -d web-server -t lib/main_plant_growth_tracker.dart --web-port 8142

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_plant_growth_tracker.dart

# 代码分析
flutter analyze lib/main_plant_growth_tracker.dart

十、总结

智能植物生长记录应用通过生长记录、数据测量、观察日记、社区交流四大模块,为植物爱好者提供了一个全方位的植物管理平台。应用支持6种植物类型、6个生长阶段、6项测量指标、6种养护提醒,让植物养护更加科学便捷。

核心功能涵盖拍照记录、数据测量、观察日记、生长曲线四大模块。拍照记录支持相机拍照和相册选择,全方位记录生长状态;数据测量支持高度、叶片、茎粗等多维度测量;观察日记支持文字记录和照片上传;生长曲线可视化展示生长趋势。

应用采用 Material Design 3 设计规范,以清新的绿色为主色调,象征生机与活力。通过本应用,希望能够帮助植物爱好者更好地记录植物成长历程,分享养护经验,让每一株植物的成长都被完整记录。

智能植物生长记录------见证每一株植物的成长


相关推荐
每日任务(希望进OD版)2 小时前
线性DP、区间DP
开发语言·数据结构·c++·算法·动态规划
放羊郎2 小时前
机器人跟随算法
算法·机器人
以太浮标2 小时前
华为eNSP模拟器综合实验之- DHCP、DNS、HTTP和FTP服务器配置案例Client-Server
linux·服务器·windows·http·华为·信息与通信
liu****2 小时前
第十五届蓝桥杯大赛软件赛国赛C/C++大学B组
c++·算法·蓝桥杯·acm
We་ct2 小时前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
轻微的风格艾丝凡2 小时前
三相不平衡电流调试经验记录
算法·dsp
世人万千丶2 小时前
开源鸿蒙跨平台Flutter开发:成语接龙游戏应用
学习·flutter·游戏·华为·开源·harmonyos·鸿蒙
浮芷.2 小时前
开源鸿蒙跨平台Flutter开发:校园闲置物品交换应用
科技·flutter·华为·开源·ar·harmonyos·鸿蒙
老虎06272 小时前
LeetCode热题100 刷题笔记(第五天)双指针法 「 三数之和 」
笔记·算法·leetcode