flutter高德地图大头针

1、效果图
在这里插入图片描述
2、pub get

#地图定位
amap_flutter_map: ^3.0.0
amap_flutter_location: ^3.0.0

3、上代码

import 'dart:async';
import 'dart:io';
 
import 'package:amap_flutter_location/amap_flutter_location.dart';
import 'package:amap_flutter_location/amap_location_option.dart';
import 'package:fate_blind_box/theme/theme_color.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
 
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_base/amap_flutter_base.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../utils/loading.dart';
import '../../Home/map/canteen.dart';
 
class AMapPage extends StatelessWidget {
 
  final String title;
  final String iosKey;
  final String androidKey;
 
  final LatLng? latLng;
 
 
 
  final void Function(AMapController controller)? onMapCreated;
 
  AMapPage(this.title,this.iosKey, this.androidKey, {Key? key, this.latLng, this.onMapCreated}) : super(key: key);
 
 
  // 添加线段
  //lines 结构   [LatLng(26.642386, 106.65195799999998), LatLng(26.641542, 106.65062999999998), LatLng(26.641402, 106.65063499999997), LatLng(26.641411, 106.65086300000002), LatLng(26.641334, 106.65067099999999), LatLng(26.641374, 106.650688), LatLng(26.641567, 106.65078499999998), LatLng(26.641656, 106.651207), LatLng(26.641708, 106.651408), LatLng(26.641413, 106.65066100000001), LatLng(26.641484, 106.65012100000001)]
  //定义
 
 
  @override
  Widget build(BuildContext context) {
 
    List<Marker> markers = [
      Marker(position: const LatLng(39.909215, 116.41005),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon1.png"),
        infoWindow: const InfoWindow(
          title: '东城区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(39.9305, 116.36003),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon2.png"),
        infoWindow: const InfoWindow(
          title: '西城区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
      Marker(position: const LatLng(39.9484, 116.48548),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon3.png"),
        infoWindow: const InfoWindow(
          title: '朝阳区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
      Marker(position: const LatLng(39.8585, 116.28625),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon4.png"),
        infoWindow: const InfoWindow(
          title: '丰台区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
      Marker(position: const LatLng(39.90564, 116.2229),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon5.png"),
        infoWindow: const InfoWindow(
          title: '石景山区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
      Marker(position: const LatLng(39.95931, 116.29812),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon1.png"),
        infoWindow: const InfoWindow(
          title: '海淀区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
      Marker(position: const LatLng(39.94043, 116.10137),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon2.png"),
        infoWindow: const InfoWindow(
          title: '门头沟区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(39.74786, 116.14257),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon3.png"),
        infoWindow: const InfoWindow(
          title: '房山区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(39.90564, 116.2229),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon4.png"),
        infoWindow: const InfoWindow(
          title: '石景山区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.65716, 39.90966),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon5.png"),
        infoWindow: const InfoWindow(
          title: '通州区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.65417, 40.1302),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon1.png"),
        infoWindow: const InfoWindow(
          title: '顺义区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.2312, 40.22072),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon3.png"),
        infoWindow: const InfoWindow(
          title: '昌平区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.34149, 39.72668),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon4.png"),
        infoWindow: const InfoWindow(
          title: '大兴区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.63168, 40.31602),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon5.png"),
        infoWindow: const InfoWindow(
          title: '怀柔区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(117.12133, 40.14056),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon1.png"),
        infoWindow: const InfoWindow(
          title: '平谷区',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
 
      Marker(position: const LatLng(116.84295, 40.37618),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon2.png"),
        infoWindow: const InfoWindow(
          title: '密云县',
          snippet: '',
        ),
        onTap: (marker){
         
        },
      ),
 
      Marker(position: const LatLng(115.97494, 40.45672),
        icon:BitmapDescriptor.fromIconPath("images/ic_mapIcon3.png"),
        infoWindow: const InfoWindow(
          title: '延庆县',
          snippet: '',
        ),
        onTap: (marker){
          
        },
      ),
    ];
    final size = MediaQuery.of(context).size;
    CameraPosition kInitialPosition = CameraPosition(
      target: latLng ?? const LatLng(39.909187, 116.397451),
      zoom: 10.0,
    );
 
    return Scaffold(
      appBar: title.isNotEmpty ? AppBar(
        title: Text(
          title,
          style: const TextStyle(
              color: Colors.black, fontSize: 18, fontWeight: FontWeight.bold),
        ),
        // title:title,
        elevation: 0,
        backgroundColor: Colors.white,
 
      ) :null,
 
      backgroundColor: ThemeColor.sendMsgColor,
      body: AMapWidget(
 
        initialCameraPosition: kInitialPosition,
        buildingsEnabled: false,
        onMapCreated: onCreated,
        privacyStatement: const AMapPrivacyStatement(hasShow: true, hasAgree: true, hasContains: true),
        apiKey: AMapApiKey(
          iosKey: iosKey,
          androidKey: androidKey,
 
        ),
 
        markers:Set<Marker>.of(markers),
        // Set<marker>.of(markers.values),
        onTap: (marker){
 
        },
        onPoiTouched: (marker){
 
          print('object');
        },
 
      ),
 
    );
  }
 
  /// 高德地图
  static Future<bool> gotoGaoDeMap(keywords,longitude, latitude) async {
    var url = '${Platform.isAndroid ? 'android' : 'ios'}amap://navi?sourceApplication=amap&lat=$latitude&lon=$longitude&dev=0&style=2';
 
    bool canLaunchUrl = await canLaunch(url);
 
    if (!canLaunchUrl) {
      toast('未检测到高德地图~');
 
      return false;
    }
 
    await launch(url);
 
    return true;
  }
 
 
  /// 腾讯地图
  static Future<bool> gotoTencentMap(longitude, latitude) async {
    var url = 'qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&tocoord=$latitude,$longitude&referer=IXHBZ-QIZE4-ZQ6UP-DJYEO-HC2K2-EZBXJ';
    bool canLaunchUrl = await canLaunch(url);
 
    if (!canLaunchUrl) {
      toast('未检测到腾讯地图~');
      // ToastUtil.show('未检测到腾讯地图~');
      return false;
    }
 
    await launch(url);
 
    return canLaunchUrl;
  }
 
  void onCreated(AMapController controller) {
    AMapApprovalNumber.setApprovalNumber(controller);
    if (onMapCreated != null) onMapCreated!(controller);
  }
 
}
 
 
 
 
/// 获取审图号
/// 这里设计的很奇怪,当地图创建后才知道这个号码,但是这个号码不一定要显示在地图之上,却一定要显示在app之内,主要是和上架后的合规有关
class AMapApprovalNumber {
  static String? mapContentApprovalNumber;
  static String? satelliteImageApprovalNumber;
 
  static Function(String? mapContentApprovalNumber, String? satelliteImageApprovalNumber)? _listener;
 
  static void addListener(Function(String? mapContentApprovalNumber, String? satelliteImageApprovalNumber) run) {
    _listener = run;
  }
 
  static void setApprovalNumber(AMapController? mapController) async {
    //普通地图审图号
    mapContentApprovalNumber = await mapController?.getMapContentApprovalNumber();
    //卫星地图审图号
    satelliteImageApprovalNumber = await mapController?.getSatelliteImageApprovalNumber();
 
    if (kDebugMode) {
      print('地图审图号(普通地图): $mapContentApprovalNumber');
      print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
    }
 
    if (_listener != null) _listener!(mapContentApprovalNumber, satelliteImageApprovalNumber);
  }
}
 
 
 
 
///需要在程序启动时向用户展示隐私政策等
///高德地图的定位插件,可以进行连续定位,返回当前位置的经纬度以及转译过的位置信息
mixin AMapLocationStateMixin<WIDGET extends StatefulWidget> on State<WIDGET> {
 
  String get title;
  String get iosKey;
  String get androidKey;
 
 
  /// 是否拥有定位权限
  bool get hasLocationPermission => _hasLocationPermission;
 
  ///获取到的定位信息
  Map<String, Object> get locationResult => _locationResult ?? {};
  ///整理过的数据
  LocationInfo get locationInfo => LocationInfo(locationResult);
 
  ///开始定位
  void startLocation() {
    ///开始定位之前设置定位参数
    _setLocationOption();
    _locationPlugin.startLocation();
  }
 
  ///停止定位
  void stopLocation() {
    _locationPlugin.stopLocation();
  }
 
 
  Map<String, Object>? _locationResult;
 
  StreamSubscription<Map<String, Object>>? _locationListener;
  final AMapFlutterLocation _locationPlugin = AMapFlutterLocation();
  // final List<LatLng> _traackPath = [];
  late AMapController _mapController;
 
  @override
  void initState() {
    super.initState();
    setPath();
 
    AMapFlutterLocation.updatePrivacyShow(true, true);
 
    AMapFlutterLocation.updatePrivacyAgree(true);
 
    /// 动态申请定位权限
    _requestLocationPermission();
 
    AMapFlutterLocation.setApiKey(androidKey, iosKey);
 
    ///iOS 获取native精度类型
    if (Platform.isIOS) {
      _requestAccuracyAuthorization();
    }
 
    ///注册定位结果监听
    _locationListener = _locationPlugin.onLocationChanged().listen((Map<String, Object> result) {
      setState(() {
        _locationResult = result;
      });
    });
  }
 
  // AMapController _mapController;
  Map mapMakerListMap = <dynamic, Marker>{};
  Map mapPolylineListMap = <dynamic, Polyline>{};
  final List<LatLng> _trackPath = [];
  late final List trackList;
  late final List<LatLng> pointList;
 
  late final LatLng center;
  late final double zoom;
 
// 设置轨迹路径
  setPath() {
    if (trackList.isNotEmpty) {
      for (var item in trackList) {
        if (item is Map<String, dynamic>) {
          LatLng? latLng = LatLng.fromJson(item);
          if (latLng != null) {
            _trackPath.add(latLng);
          }
        }
        if (item is List && item.length == 2) {
          LatLng latLng = LatLng(item[0], item[1]);
          _trackPath.add(latLng);
        }
      }
    }
    mapClean();
  }
 
  mapClean() async {
    mapMakerListMap.clear();
    mapPolylineListMap.clear();
    setState(() => null);
  }
 
  @override
  void dispose() {
    super.dispose();
 
    ///移除定位监听
    if (null != _locationListener) {
      _locationListener?.cancel();
    }
 
    ///销毁定位
    _locationPlugin.destroy();
  }
 
  ///设置定位参数
  void _setLocationOption() {
    AMapLocationOption locationOption = AMapLocationOption();
 
    ///是否单次定位
    locationOption.onceLocation = false;
 
    ///是否需要返回逆地理信息
    locationOption.needAddress = true;
 
    ///逆地理信息的语言类型
    locationOption.geoLanguage = GeoLanguage.DEFAULT;
 
    locationOption.desiredLocationAccuracyAuthorizationMode = AMapLocationAccuracyAuthorizationMode.ReduceAccuracy;
 
    locationOption.fullAccuracyPurposeKey = "AMapLocationScene";
 
    ///设置Android端连续定位的定位间隔
    locationOption.locationInterval = 2000;
 
    ///设置Android端的定位模式<br>
    ///可选值:<br>
    ///<li>[AMapLocationMode.Battery_Saving]</li>
    ///<li>[AMapLocationMode.Device_Sensors]</li>
    ///<li>[AMapLocationMode.Hight_Accuracy]</li>
    locationOption.locationMode = AMapLocationMode.Hight_Accuracy;
 
    ///设置iOS端的定位最小更新距离<br>
    locationOption.distanceFilter = -1;
 
    ///设置iOS端期望的定位精度
    /// 可选值:<br>
    /// <li>[DesiredAccuracy.Best] 最高精度</li>
    /// <li>[DesiredAccuracy.BestForNavigation] 适用于导航场景的高精度 </li>
    /// <li>[DesiredAccuracy.NearestTenMeters] 10米 </li>
    /// <li>[DesiredAccuracy.Kilometer] 1000米</li>
    /// <li>[DesiredAccuracy.ThreeKilometers] 3000米</li>
    locationOption.desiredAccuracy = DesiredAccuracy.Best;
 
    ///设置iOS端是否允许系统暂停定位
    locationOption.pausesLocationUpdatesAutomatically = false;
 
    ///将定位参数设置给定位插件
    _locationPlugin.setLocationOption(locationOption);
  }
 
 
  ///获取iOS native的accuracyAuthorization类型
  Future<AMapAccuracyAuthorization> _requestAccuracyAuthorization() async {
    AMapAccuracyAuthorization currentAccuracyAuthorization = await _locationPlugin.getSystemAccuracyAuthorization();
    if (kDebugMode) {
      if (currentAccuracyAuthorization == AMapAccuracyAuthorization.AMapAccuracyAuthorizationFullAccuracy) {
        print("精确定位类型");
      } else if (currentAccuracyAuthorization == AMapAccuracyAuthorization.AMapAccuracyAuthorizationReducedAccuracy) {
        print("模糊定位类型");
      } else {
        print("未知定位类型");
      }
    }
 
    return currentAccuracyAuthorization;
  }
 
 
  bool _hasLocationPermission = false;
 
  /// 申请定位权限
  Future<void> _requestLocationPermission() async {
    //获取当前的权限
    var status = await Permission.location.status;
    if (status == PermissionStatus.granted) {
      //已经授权
      _hasLocationPermission = true;
    } else {
      //未授权则发起一次申请
      status = await Permission.location.request();
      if (status == PermissionStatus.granted) {
        _hasLocationPermission = true;
      } else {
        _hasLocationPermission = false;
      }
    }
 
    if (kDebugMode) {
      if (_hasLocationPermission) {
        print("定位权限申请通过");
      } else {
        print("定位权限申请不通过");
      }
    }
 
  }
}
 
 
class LocationInfo {
 
  //TODO:应当再此类对信息做转换,明确数据类型
 
  String? locTime;
  String? province;
  String? callbackTime;
  String? district;
  double? speed;
 
  double? latitude;
  double? longitude;
 
  String? country;
  String? city;
  String? cityCode;
  String? street;
  String? streetNumber;
  String? address;
  String? description;
 
  double? bearing;
  double? accuracy;
  String? adCode;
  double? altitude;
  int? locationType;
 
  LocationInfo(Map<String, Object> locationResult) {
    locTime = locationResult["locTime"] as String;
    province = locationResult["province"] as String;
    callbackTime = locationResult["callbackTime"] as String;
    district = locationResult["district"] as String;
    speed = locationResult["speed"] as double;
 
    latitude = double.parse(locationResult["latitude"] as String);
    longitude = double.parse(locationResult["longitude"] as String);
 
    country = locationResult["country"] as String;
    city = locationResult["city"] as String;
    print(city);
    cityCode = locationResult["cityCode"] as String;
    street = locationResult["street"] as String;
    streetNumber = locationResult["streetNumber"] as String;
    address = locationResult["address"] as String;
    description = locationResult["description"] as String;
 
    bearing = locationResult["bearing"] as double;
    accuracy = locationResult["accuracy"] as double;
    adCode = locationResult["adCode"] as String;
    altitude = locationResult["altitude"] as double;
    locationType = locationResult["locationType"] as int;
  }
 
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化...

全文链接&#xff1a;http://tecdat.cn/?p30605 应用关联规则、聚类方法等数据挖掘技术分析治疗的中药专利复方组方配伍规律&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 方法检索治疗中药专利复方&#xff0c;排除外用中药及中西药物合用的复方。最近我们…

每天 26,315 美元罚款?交通安全局要求特斯拉提供 Autopilot数据

根据美国国家公路交通安全管理局&#xff08;NHTSA&#xff09;最近的特别命令&#xff0c;特斯拉公司被要求提供关于其自动驾驶功能Autopilot的相关信息。这一命令是继NHTSA于2021年8月启动初步评估后&#xff0c;在2022年6月升级为正式调查的一部分&#xff0c;NHTSA近期对特…

网络安全法+网络安全等级保护

网络安全法 2014年2月&#xff0c;中央网络安全和信息化领导小组成立&#xff0c;习主席当组长 2017年6月1日&#xff0c;网络安全法正式成立 网络安全是国家安全的重要组成部分没有网络安全就没有国家安全&#xff0c;没有信息化就没有现代化 网络安全法21条 网络安全法31条 …

angular抛出 ExpressionChangedAfterItHasBeenCheckedError错误分析

当变更检测完成后又更改了表达式值时&#xff0c;Angular 就会抛出 ExpressionChangedAfterItHasBeenCheckedError 错误。Angular 只会在开发模式下抛出此错误。 在开发模式下&#xff0c;Angular 在每次变更检测运行后都会执行一次附加检查&#xff0c;以确保绑定没有更改。这…

Nginx到底是什么,他能干什么?

目录 Ngnix是什么&#xff0c;它是用来做什么的呢&#xff1f; 一。Nginx简介 二&#xff0c;为什么要用Nginx呢&#xff1f; 二。Nginx应用 1.HTTP代理和反向代理 2.负载均衡 Ngnix是什么&#xff0c;它是用来做什么的呢&#xff1f; 一。Nginx简介 Nginx是enginex的简写&…

Redis——如何解决redis穿透、雪崩、击穿问题

目录 一、查询商品信息的常规代码示例二、缓存击穿2.1、缓存击穿的理解2.2、缓存击穿的解决方案2.3、解决缓存击穿的代码示例 三、缓存雪崩3.1、缓存雪崩的理解3.2、缓存雪崩的解决方案3.2.1、缓存集中过期的情况3.2.2、缓存服务器宕机的情况3.2.3、缓存服务器断电的情况 3.3、…

springBoot打印精美logo

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;文本logo &#x1f412;个人主页 &#x1f3c5;JavaEE系列专栏 &#x1f4d6;前言&#xff1a; 本篇博客主要以提供springBoot打印精美logo &#x1f380;文本logo ??…

IDEA遇到 git pull 冲突的几种解决方法

1 忽略本地修改&#xff0c;强制拉取远程到本地 主要是项目中的文档目录&#xff0c;看的时候可能多了些标注&#xff0c;现在远程文档更新&#xff0c;本地的版本已无用&#xff0c;可以强拉 git fetch --all git reset --hard origin/dev git pull关于commit和pull的先后顺…

Web服务器-Tomcat详细原理与实现

Tomcat 安装与使用 &#xff1a;MAC 安装配置使用Tomcat - 掘金 安装后本计算机就相当于一台服务器了&#xff01;&#xff01;&#xff01; 方式一&#xff1a;使用本地安装的Tomcat 1、将项目文件移动到Tomcat的webapps目录下。 2、启动Tomcat 3、在浏览器输入想要加载的…

小程序运营方式有哪些?如何构建小程序运营框架?

​如今&#xff0c;每个企业基本都做过至少一个小程序&#xff0c;但由于小程序本身不具备流量、也很少有自然流量&#xff0c;因此并不是每个企业都懂如何运营小程序。想了解小程序运营方式方法有哪些&#xff1f; 在正式运营小程序前&#xff0c;了解小程序的功能与企业实际经…

天润融通「微藤大语言模型平台2.0」以知识驱动企业高速增长

8月23日&#xff0c;天润融通&#xff08;又称“天润云”,2167.HK&#xff09;&#xff0c;正式发布「微藤大语言模型平台2.0」。 “大模型企业知识企业知识工程”。 “不能有效记录和管理知识的企业是不能持续进步的。在企业的生产流程中&#xff0c;相比于其他场景&#xff0…

Git小白入门——了解分布式版本管理和安装

Git是什么&#xff1f; Git是目前世界上最先进的分布式版本控制系统&#xff08;没有之一&#xff09; 什么是版本控制系统&#xff1f; 程序员开发过程中&#xff0c;对于每次开发对各种文件的修改、增加、删除&#xff0c;达到预期阶段的一个快照就叫做一个版本。 如果有一…

Git分布式版本控制系统与github

第四阶段提升 时 间&#xff1a;2023年8月29日 参加人&#xff1a;全班人员 内 容&#xff1a; Git分布式版本控制系统与github 目录 一、案例概述 二、版本控制系统 &#xff08;一&#xff09; 本地版本控制 &#xff08;二&#xff09;集中化的版本控制系统 &…

AI 绘画Stable Diffusion 研究(十六)SD Hypernetwork详解

大家好&#xff0c;我是风雨无阻。 本期内容&#xff1a; 什么是 Hypernetwork&#xff1f;Hypernetwork 与其他模型的区别&#xff1f;Hypernetwork 原理Hypernetwork 如何下载安装&#xff1f;Hypernetwork 如何使用&#xff1f; 在上一篇文章中&#xff0c;我们详细介绍了 …

理解底层— —Golang的log库,二开实现自定义Logger

理解底层— —Golang的log库&#xff0c;实现自定义Logger 1 分析实现思路 基于golang中自带的log库实现&#xff1a;对日志实现设置日志级别&#xff0c;每天生成一个文件&#xff0c;同时添加上前缀以及展示文件名等 日志级别&#xff0c;通过添加prefix&#xff1a;[INFO]、…

(2023)Linux安装pytorch并使用pycharm远程编译运行

&#xff08;2023&#xff09;Linux安装pytorch并使用pycharm远程编译运行 安装miniconda 这部分参考我这篇博客的前半部分Linux服务器上通过miniconda安装R&#xff08;2022&#xff09;_miniconda 安装r_Dream of Grass的博客-CSDN博客 创建环境 创建一个叫pytorch的环境…

Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

Docker基础入门&#xff1a;容器数据卷与Dockerfile构建镜像&#xff08;发布&#xff09; 一、docker容器数据卷1.1、使用docker容器数据卷1.2、具名挂载、匿名挂载1.3、如何确定是具名挂载还是匿名挂载 二、使用dockerfile2.1 初识Dockerfile2.2 Dockerfile构建过程2.3 Docke…

SpringBoot工具类—基于定时器完成文件清理功能

直接复制粘贴既可&#xff01;&#xff01; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOff…

高并发幂等计数器的设计与实现

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Prompt GPT推荐社区

大家好&#xff0c;我是荷逸&#xff0c;这次给大家带来的是我日常学习Prompt社区推荐 Snack Prompt 访问地址&#xff1a;http://snackprompt.com Snack Prompt是一个采用的Prompts诱导填空式的社区&#xff0c;它提供了一种简单的prompt修改方式&#xff0c;你只需要输入关…