HarmonyOS 地图服务:深度解析其丰富功能与精准导航实力

news2024/11/27 4:16:22

目录

  • 前期准备
  • 打造个性化地图:聚焦创建地图功能
    • 导入`Map Kit`相关模块
    • 通过`MapOptions`初始化地图
      • 切换地图类型
      • 设置地图中心点及层级
      • 展示定位按钮
      • 展示比例尺
      • 指定地图的日间夜间模式
    • 通过`MapComponentController`对象方法控制地图
      • 切换地图类型
      • 开启3D建筑图层
      • 在指定的持续时间内以动画的形式更新相机状态
      • 在指定的持续时间内以动画的形式更新相机状态,并返回动画结果
      • 设置地图的日间夜间模式
      • 地图前后切换
    • 地图不显示异常排查和处理

在当今高度数字化时代,精准的地图服务已然成为我们日常生活与工作中不可或缺的重要组成部分。无论是日常出项规划路线,还是在工作中进行位置定位于导航,地图服务都发挥着关键作用。而HarmonyOS提供的地图服务(Map Kit)犹如一颗璀璨的明星,为开发者提供强大而便捷的地图能力,助力全球开发者实现个性化显示地图、位置搜索和路径规划等功能。地图服务(Map Kit)提供了全球3.2亿的Poi(Point of interest,兴趣点),在地图中一个Poi代表一家商铺、一栋办公楼、一处景点等等。其强大的功能涵盖创建地图、地图交互、在地图上绘制、位置搜索、路径规划、静态图、地图Picker、通过Petal地图应用实现导航等能力、地图计算工具等等,为用户提供了全方位的地图服务体验。具有广泛的应用场景,如物流配送、旅游出行、智能交通等等。

在接下来的内容中,将深入且全面地阐述地图服务所具备的创建地图这一重要功能。通过逐步剖析创建地图功能的具体实现方式,从技术层面解读其背后的原理和机制,深入探讨这一功能在不同场景下的实际应用价值,为开发者在实际应用中更好地利用这一功能提供有力的支持和指导。

前期准备

实际应用开发中,当你打算使用地图服务(Map Kit)时,首先需要在AppGallery Connect平台上创建相应的应用。在创建完成后,要准确地获取“项目设置 > 常规 > 应用”的Client ID,这里需要特别注意的是,一定不能获取项目的Client ID,两者有着明确的区分。获取正确的Client ID之后,接下来要在工程entry模块的module.json5文件中进行特定的操作。具体而言,就是要在这个文件中新增metadata,将其配置为name属性设置为client_idvalue属性为获取到的Client ID值。

在这里插入图片描述

{
  "module": {
    ...
    "metadata": [
      {
        "name": "client_id",
        "value": "xxxxxx"
      }
    ]
  }
}

当完成Client ID的配置工作后,接下来还需要在AppGallery Connect平台该应用的“项目设置 > API管理”板块中打开地图服务开关。

在这里插入图片描述

除了满足以上两个条件,还需要为应用添加公钥指纹,才能够确保地图服务(Map Kit)在应用中正常使用和发挥其强大的功能。

  • 在DevEco Studio中使用自动签名,对应用进行签名。

在这里插入图片描述

  • 在AppGallery Connect平台“项目设置 > 常规 > 应用”下的SHA256证书/公钥指纹中添加公钥指纹,勾选证书名称为auto_debug_xxxx的证书。

在这里插入图片描述

在这里插入图片描述

打造个性化地图:聚焦创建地图功能

HarmonyOS为开发者和用户带来了强大的地图功能支持,其中包括地图组件MapComponent以及地图组件的主要功能入口类MapComponentController

MapComponent在整个体系中扮演着至关重要的角色,它能够在应用程序的页面中以直观、清晰的方式呈现地图。无论是在导航类应用中为用户指引方向,还是在生活服务类应用中展示周边的地理信息,MapComponent都能发挥出其独特的优势,将丰富的地图内容呈现在用户眼前。

MapComponentController则作为地图操作的核心枢纽,承担着众多关键任务。它可以实现地图类型的灵活切换,比如在标准地图和空地图之间自由切换,以满足不同场景下的需求。同时,还能够精确地改变地图状态,通过调整中心点坐标和缩放级别,让用户可以聚焦于特定的区域,获取更详细的地理信息。此外,MapComponentController还支持添加点标记(Marker),可以在地图上标注出重要的地点,方便用户识别和定位。不仅如此,它还能绘制各种几何图形,如MapPolyline(地图折线)、MapPolygon(地图多边形)、MapCircle(地图圆形)等,为用户提供更加丰富的可视化效果。最后,MapComponentController还能监听各类事件,及时响应用户的操作和地图状态的变化,为用户带来更加流畅和智能的交互体验。

接下来,我将和大家一起踏上探索之旅,逐步深入地掌握创建地图功能中一系列重要的操作。首先是如何在应用中成功地显示地图,让丰富的地理信息以清晰直观的形式呈现在我们的眼前。接着,我们将学习如何切换地图类型,无论是标注地图的详细呈现,还是简洁的空地图模式,都能根据实际需求灵活切换。然后,我们还会掌握显示自己位置的方法,以便在任何时候都能准确知晓自己所处的方位。最后,我们将深入了解如何显示自定义地图,根据特定的场景和需求,打造独一无二的地图展示效果,满足个性化的使用需求。

导入Map Kit相关模块

import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

通过MapOptions初始化地图

新建地图需要传入MapOptions参数,MapOptions提供MapComponent组件初始化的属性,用于设置诸如地图中心点坐标、层级等。

MapComponent({ mapOptions: mapCommon.MapOptions, mapCallback: AsyncCallback<map.MapComponentController> })
  • mapOptions:地图初始化参数
let mapOptions: mapCommon.MapOptions = {
  // 地图类型(可选),默认值为MapType.STANDARD(标准地图),取值还可以是MapType.NONE(空地图)、MapType.TERRAIN(地形图)
  mapType: mapCommon.MapType.STANDARD,
  // 地图相机位置(必填)
  position: {
    target: { // 地图中心位置的经纬度坐标
      latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
      longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
    },
    zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    tilt: 0,  // 相机的倾斜角度,即相机于垂直于地球表面的线的夹角,取值范围:[0, 75],默认值为0
    bearing: 0  // 地图以正北方向为0度顺时针旋转的角度,取值范围:[0, 360],默认值0
  },
  // 地图展示边界(可选),异常值根据无边界处理
  // 说明:西南角纬度不能大于东北角纬度
  bounds: {
    northeast: {  // 东北角经纬度(可选)
      latitude: 41.5, // 纬度(可选),取值范围:[-90, 90]
      longitude: 125.5  // 经度(可选),取值范围:[-180, 180]
    },
    southwest: {  // 西北角经纬度(可选)
      latitude: 37.5, // 纬度(可选),取值范围:[-90, 90]
      longitude: 100.5  // 经度(可选),取值范围:[-180, 180]
    }
  },
  // 地图最小图层(可选),有效范围:[2, 20],默认为2。异常值按默认值处理
  minZoom: 2,
  // 地图最大图层(可选),有效范围:[2, 20],默认值20,异常值按默认值处理
  maxZoom: 20,
  // 是否支持旋转手势(可选),默认为true,异常值按默认值处理。true:支持;false:不支持
  rotateGesturesEnabled: true,
  // 是否支持滑动手势(可选),默认值为true,异常值按默认值处理。true:支持;false:不支持
  scrollGesturesEnabled: true,
  // 是否支持缩放手势(可选),默认值为true,异常值按默认值处理。true:支持;false:不支持
  zoomGesturesEnabled: true,
  // 是否支持倾斜手势(可选),默认值为true,异常值按默认值处理。true:支持;false:不支持
  tiltGesturesEnabled: true,
  // 是否展示缩放控件(可选),默认值为true,异常值按默认值处理。true:支持;false:不支持
  zoomControlsEnabled: true,
  // 是否展示定位按钮(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  myLocationControlsEnabled: false,
  // 是否展示指南针控件(可选),默认值为true,异常值按默认值处理。true:展示;false:不展示
  compassControlsEnabled: true,
  // 是否展示比例尺(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  scaleControlsEnabled: false,
  // 设置地图和边界的距离(可选),默认值为{ left: 0, top: 0, right: 0, bottom: 0 }
  padding: {
    left: 0,  // 在地图左侧增加的填充距离(可选),单位:px,默认值为0
    top: 0, // 在地图顶部增加的填充距离(可选),单位:px,默认值为0
    right: 0,   // 在地图右侧增加的填充距离(可选),单位:px,默认值为0
    bottom: 0 // 在地图底部增加的填充距离(可选),单位:px,默认值为0
  },
  // 自定义样式ID(可选)
  styleId: "xxxxx",
  // 日间夜间模式(可选),默认值为DayNightMode.DAY(日间模式)
  dayNightMode: mapCommon.DayNightMode.DAY,
  // 是否一直显示比例尺(可选),只有比例尺启动时该参数才生效,默认值为false。true:始终显示;false:关闭始终显示
  // 启动比例尺可以由地图初始化时scaleControlsEnabled属性设置为true
  // 或者通过setScaleControlsEnabled方法设置为true
  alwaysShowScaleEnabled: false
};
  • mapCallback:回调函数,返回map.MapComponentController
// 地图初始化的回调
let callback = async (err: BusinessError, mapController: map.MapComponentController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
  }
}

切换地图类型

Map Kit支持以下三种地图类型:

  • STANDARD:标准地图,展示道路、建筑物以及河流等重要的自然特征。
  • NONE:空地图,没有加载任何数据的地图。
  • TERRAIN:地形图。
// 将默认的标准地图(STANDARD)切换地形图(TERRAIN)
aboutToAppear(): void {
  // 地图初始化参数,设置地图中心点及层级
  this.mapOptions = {
  	// 地图类型(可选),默认值为MapType.STANDARD(标准地图),取值还可以是MapType.NONE(空地图)、MapType.TERRAIN(地形图)
  	mapType: mapCommon.MapType.TERRAIN,
    // 地图相机位置(必填)
    position: {
      target: { // 地图中心位置的经纬度坐标
        latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
        longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
      },
      zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    },
  };
}

在这里插入图片描述

设置地图中心点及层级

aboutToAppear(): void {
  // 地图初始化参数,设置地图中心点及层级
  this.mapOptions = {
    // 地图相机位置(必填)
    position: {
      target: { // 地图中心位置的经纬度坐标
        latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
        longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
      },
      zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    },
  };
}

在这里插入图片描述

展示定位按钮

aboutToAppear(): void {
  // 地图初始化参数,设置地图中心点及层级
  this.mapOptions = {
    // 地图相机位置(必填)
    position: {
      target: { // 地图中心位置的经纬度坐标
        latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
        longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
      },
      zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    },
    // 是否展示定位按钮(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  	myLocationControlsEnabled: true
  };
}

在这里插入图片描述

展示比例尺

aboutToAppear(): void {
  // 地图初始化参数,设置地图中心点及层级
  this.mapOptions = {
    // 地图相机位置(必填)
    position: {
      target: { // 地图中心位置的经纬度坐标
        latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
        longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
      },
      zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    },
    // 是否展示定位按钮(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  	myLocationControlsEnabled: true,
		// 是否展示比例尺(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  	scaleControlsEnabled: true
  };
}

在这里插入图片描述

指定地图的日间夜间模式

aboutToAppear(): void {
  // 地图初始化参数,设置地图中心点及层级
  this.mapOptions = {
    // 地图相机位置(必填)
    position: {
      target: { // 地图中心位置的经纬度坐标
        latitude: 38.5, // 纬度(可选),取值范围:[-90, 90]
        longitude: 106.2  // 经度(可选),取值范围:[-180, 180]
      },
      zoom: 10, // 屏幕中心附近的缩放级别,取值范围:[2, 20],默认值为2
    },
    // 是否展示定位按钮(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  	myLocationControlsEnabled: true,
		// 是否展示比例尺(可选),默认值为false,异常值按默认值处理。true:展示;false:不展示
  	scaleControlsEnabled: true,
    // 日间夜间模式(可选),默认值为DayNightMode.DAY(日间模式),指定为自动模式
  	dayNightMode: mapCommon.DayNightMode.AUTO,
  };
}

通过MapComponentController对象方法控制地图

切换地图类型

除在地图初始化时指定地图类型外,还可以通过MapComponentController对象的setMapType方法在地图创建后动态设置地图类型。

/**
 * 设置地图类型
 * mapType:地图类型
 */
setMapType(mapType: mapCommon.MapType): void

// 地图初始化的回调
this.callback = async (err, mapController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
    // 动态设置地图类型
    this.mapController.setMapType(mapCommon.MapType.TERRAIN);
  }
}

开启3D建筑图层

调用MapComponentController对象的setBuildingEnabled方法开启3D建筑图层,可通过两个手指向上滑动倾斜地图查看3D建筑图层效果。

// 地图初始化的回调
this.callback = async (err, mapController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
    // 开启3D建筑图层
    this.mapController.setBuildingEnabled(true);
  }
}

在这里插入图片描述

在指定的持续时间内以动画的形式更新相机状态

/**
 * 在指定的持续时间内以动画的形式更新相机状态。
 * CameraUpdate: 相机状态将要发生的变化。
 * duration:动画的持续时间(单位:ms),默认值为250ms,值需大于0,异常值按默认值处理。
 */
animateCamera(update: CameraUpdate, duration?: number): void

// 地图初始化的回调
this.callback = async (err, mapController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
    // 新建CameraUpdate对象
    const cameraPosition: mapCommon.CameraPosition = {
      target: {
        latitude: 39.9,
        longitude: 116.4
      },
      zoom: 10
    };
    const cameraUpdate: map.CameraUpdate = map.newCameraPosition(cameraPosition);
    // 在10000ms内以动画的形式移动相机
    this.mapController.animateCamera(cameraUpdate, 10000);
  }
}

在这里插入图片描述

在指定的持续时间内以动画的形式更新相机状态,并返回动画结果

/**
 * 在指定的持续时间内以动画的形式更新相机状态,并返回动画结果
 * CameraUpdate: 相机状态将要发生的变化。
 * duration:动画的持续时间(单位:ms),默认值为250ms,值需大于0,异常值按默认值处理。
 * return Promise<AnimateResult> 动画结果
 */
animateCameraStatus(update: CameraUpdate, duration?: number): Promise<AnimateResult>
  
// 地图初始化的回调
this.callback = async (err, mapController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
    // 新建CameraUpdate对象
    const cameraPosition: mapCommon.CameraPosition = {
      target: {
        latitude: 39.9,
        longitude: 116.4
      },
      zoom: 10
    };
    const cameraUpdate: map.CameraUpdate = map.newCameraPosition(cameraPosition);
    // 在10000ms内以动画的形式移动相机
    const animateResult = await this.mapController?.animateCameraStatus(cameraUpdate, 10000);
    console.log(`[AppLogger]动画结果:${JSON.stringify(animateResult)}`);
  }
}

在这里插入图片描述

设置地图的日间夜间模式

除在地图初始化时指定地图的日间夜间模式,还可以通过MapComponentController对象的setDayNightMode方法在地图创建后动态设置地图的日间夜间模式。

/**
 * 设置地图的日间夜间模式
 * mode:日间夜间模式。包含:DAY(日间模式)、NIGHT(夜间模式)、AUTO(自动模式)
 */
setDayNightMode(mode: mapCommon.DayNightMode): void

// 地图初始化的回调
this.callback = async (err, mapController) => {
  if (!err) {
    // 获取地图的控制器类,用来操作地图
    this.mapController = mapController;
    // 设置地图为夜间模式
    this.mapController.setDayNightMode(mapCommon.DayNightMode.NIGHT);
  }
}

在这里插入图片描述

地图前后切换

// 将地图切换到前台,开发者在绘制地图页面的生命周期onPageShow中调用
onPageShow(): void {
  if (this.mapController !== undefined) {
    this.mapController.show();
  }
}

// 将地图切换到后台,开发者在绘制地图页面的生命周期onPageHide中调用
onPageHide(): void {
  if (this.mapController !== undefined) {
    this.mapController.hide();
  }
}

地图不显示异常排查和处理

  • 检查网络状态,设备是否已经正确联网。
  • 检查AppGallery Connnect平台应用是否已经添加公钥指纹,如果重新进行自动签名,需要重新添加公钥指纹,公钥指纹变更后10分钟后生效。
  • 检查module.json5配置文件中是否配置Client ID。
  • 检查AppGallery Connect平台是否开通地图权限,权限开通存在延迟。

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

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

相关文章

【安当产品应用案例100集】008-UKEY在工业自动化数据传输中应用

工业自动化中的数据传输是确保生产过程高效、稳定运行的关键环节。工业自动化系统中&#xff0c;一般会有一个远程的客户端&#xff0c;负责将各个传感器、控制器等设备产生的信息传递到服务端&#xff0c;以实现生产过程的自动化控制和监控。它对于提高生产效率、降低生产成本…

SQL Server 2017上服务端设置强制加密启用SSL

在数据库服务端设置&#xff0c;强制所有客户端使用 SSL&#xff0c;设置完后&#xff0c;后续客户端所有连接&#xff0c;都将以密文传送&#xff0c;不论客户端是否指定安全连接&#xff08;即EncryptTrue/False&#xff09; 一、服务端强制加密使用 SSL 1.在数据库服务器上…

C++ 模板进阶知识

目录 一. 非类型模板参数 与类型模板参数确认的区别 何时确认 确认方式 二. 模板的特化 1. 概念 2. 函数模板特化 3. 类模板特化 3.1 全特化 3.2 偏特化 (1). 部分特化 (2). 进一步限制 4. 实际应用 三. 模板分离编译 1. 概念 2. 模板的分离编译 3. 解决方法 四…

【学习笔记】STM32F407探索者HAL库开发(一)STM32F4资源概要

【学习笔记】STM32F407探索者HAL库开发&#xff08;一&#xff09;STM32F4资源概要 1 硬件资源2 STM32命名规则3 STM32数据手册3.1 数据手册各章节内容概要3.2 引脚分布3.3 引脚定义3.4 引脚定义表的具体说明 1 硬件资源 STM32F407ZGT6具体的 内部资源如表 资源数量资源数量内…

鸿蒙Harmony实战开发:Touchscreen驱动器件硬件接口使用实例

功能简介 Touchscreen驱动用于驱动触摸屏使其正常工作&#xff0c;该驱动主要完成如下工作&#xff1a;对触摸屏驱动IC进行上电、配置硬件管脚并初始化其状态、注册中断、配置通信接口&#xff08;I2C或SPI&#xff09;、设定Input相关配置、下载及更新固件等操作。 在HDF&am…

考试:数据库系统(01)

数据库系统 ◆数据&#xff1a;是数据库中存储的基本对象&#xff0c;是描述事物的符号记录。 数据的种类&#xff1a;文本、图形、图像、音频、视频、学生的档案记录、货物的运输 情况等。 ◆数据库DB: 是长期存储在计算机内、有组织的、可共享的大量数据的集合。 ◆数据库…

安恒信息总裁宋端智,辞职了!活捉一枚新鲜出炉的餐饮人!

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

雅菲奥朗 FinOps 认证培训:开启企业云财务管理转型之路

前言&#xff1a; 在当今快速变化的商业环境中&#xff0c;企业面临着前所未有的IT财务挑战。随着云计算和数字化转型的推进&#xff0c;传统的财务管理方式已经不能满足“企业上云”的需求。FinOps&#xff0c;即“云财务管理”应运而生&#xff0c;成为帮助企业实现IT财务流…

Compose TextField详解

首先明确Compose TextField的底层依赖是&#xff1a; TextField BasicTextField CoreTextField 相较于Text&#xff0c;TextField需要提供可输入的能力以及渲染效果动态更新的能力。 // CompositionLocals// If the text field is disabled or read-only, we should not d…

智能菜谱推荐系统_ct3p7

TOC springboot575智能菜谱推荐系统_ct3p7--论文 第一章 概述 1.1 研究背景 近些年&#xff0c;随着中国经济发展&#xff0c;人民的生活质量逐渐提高&#xff0c;对网络的依赖性越来越高&#xff0c;通过网络处理的事务越来越多。随着智能菜谱推荐管理的常态化&#xff0c…

F1 F4 Fn lock 指示灯不亮 联想笔记本 thinkpad

问题描述&#xff1a;F1 F4 Fn lock 指示灯开机的时候亮&#xff0c;但是使用的时候虽然能够发挥正常功能&#xff0c;但是指示灯一直熄灭&#xff0c;指示灯不亮。 电脑型号&#xff1a;联想笔记本 thinkpad E14 Gen 2 。本方案应该适用于所有联想电脑。 解决方法&#xff1a;…

嵌入式和单片机有什么区别?

目录 &#xff08;1&#xff09;什么是嵌入式&#xff1f; &#xff08;2&#xff09;什么是单片机&#xff1f; &#xff08;3&#xff09;嵌入式和单片机的共同点 &#xff08;4&#xff09;嵌入式和单片机的区别 &#xff08;1&#xff09;什么是嵌入式&#xff1f; 关…

掉毛不愁!浮毛怎么去掉比较干净?这宠物空气净化器用上真能解决

这阵子天气热得让人只想宅家&#xff0c;门窗紧闭&#xff0c;空调一开就是一整天。室内凉爽宜人&#xff0c;但一出门再回来&#xff0c;那满屋的浮毛和异味简直让人措手不及&#xff0c;仿佛从天堂跌入地狱。幸好&#xff0c;我家有台宠物空气净化器这位“救星”&#xff0c;…

【Linux】线程控制|POSIX线程库|多线程创建|线程终止|等待|线程分离|线程空间布局

目录 ​编辑 POSIX线程库 多线程创建 独立栈结构 获取线程ID pthread_self 线程终止 return终止线程 pthread_exit pthread_cancel 线程等待 退出码问题 线程分离 测试 线程ID及地址空间布局 ​编辑 POSIX线程库 pthread线程库是 POSIX线程库的一部分&#xf…

MySQL运维学习(1):4种日志

1.错误日志 mysql错误日志记录了mysql发生任何严重错误时的信息&#xff0c;若数据库无法正常使用时&#xff0c;可以先查看错误日志 默认情况下错误日志是开启的&#xff0c;文件名为/var/log/mysqld.log&#xff0c;如果文件不在默认位置&#xff0c;可以通过下面的命令查看…

【Java】Junit的使用

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 Junit测试方法的使用4.2 测试规范 五、总结 一、前言 学习测试JunitMock后…

LLM如何理解图数据? Graph+LLM综述

对图推理&#xff08;RoG&#xff09;&#xff1a;忠实可解释的大语言模型推理方法&#xff08;ICLR2024&#xff09; https://github.com/RManLuo/reasoning-on-graphs 推理图&#xff08;Reasoning on Graphs, RoG&#xff09;提出了一个计划-检索-推理框架&#xff0c;该…

『基础』OS-1计算机系统概述_操作系统发展历程及它的运行环境

操作系统发展历程 常考的三种操作系统对比 批操作系统脱机使用计算机&#xff1b;作业是分批处理的&#xff1b;系统内多道程序并发执行&#xff1b;交互能力差分时操作系统多个用户同时使用计算机&#xff1b;人机交互强&#xff1b;具有每个用户独立使用计算机的独占性&…

学习大数据DAY42 hive 分桶表

目录 分桶表 分桶表注意事项 hive 分桶表-创建分桶表 hive 排序关键字 hive 排序语句 上机练习 分桶表 分区提供一个隔离数据和优化查询的便利方式。不过&#xff0c;并非所有的数据集都可形 成合理的分区。对于一张表或者分区&#xff0c;Hive 可以进一步组织成桶&…

8.21T1 草莓蛋糕(拆max + 权值线段树)

http://cplusoj.com/d/senior/p/NODSX2302A 看到式子&#xff1a; 我们就应该想到拆max 若 我们可以整理推出&#xff1a; 记&#xff1a; 由 L L L 算 C C C&#xff0c;我们满足 h a ≤ h b h_a\le h_b ha​≤hb​&#xff0c;找 c c c 的最小值 C C C 算 L L L 同…