IOS原生地图与高德地图

 

 

原生地图

 

1、什么是LBS

LBS: 基于位置的服务   Location Based Service

实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App

 

2、定位方式

1.GPS定位      2.基站定位      3.WIFI定位

 

3、框架

MapKit:地图框架,显示地图

CoreLocation:定位框架,没有地图时也可以使用定位.

 

4、如何使用原生地图<MapKit> 和定位<CoreLocation>

 

MapKit:

1) 初始化MapView

     _mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];

    [self.view addSubview:_mapView];

 

2) 设置代理

_mapView.delegate = self;

 

3) 设置地图类型

     _mapView.mapType = MKMapTypeStandard;

 

4) 允许显示自己的位置

     _mapView.showsUserLocation = YES;

 

5) 设置地图中心坐标点

     CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(22.540396,113.951832);

     _mapView.centerCoordinate = centerCoordinate;

 

6) 设置地图显示区域

a) 设置缩放

     MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);

 

b) 设置区域

    MKCoordinateRegion region = MKCoordinateRegionMake(centerCoordinate, span);

 

c) 显示区域

    _mapView.region = region;

 

 

CoreLocation:

7) 初始化定位管理器

_manager = [[CLLocationManager alloc] init];

_manager.delegate = self;

 

8) iOS8定位

1. 在info.plist中添加 Privacy - Location Usage Description , NSLocationAlwaysUsageDescription

2. 在代码中加入     

    if ( [UIDevice currentDevice].systemVersion.floatValue >= 8.0 ) {

          [_manager requestAlwaysAuthorization];

    }

 

9) 开启定位

    [_manager startUpdatingLocation];

 

10) 定位成功代理

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

{

      NSLog(@"定位成功");

    

      //获取定位的坐标

      CLLocation *location = [locations firstObject];

    

      //获取坐标

      CLLocationCoordinate2D coordinate = location.coordinate;

      NSLog(@"定位的坐标:%f,%f", coordinate.longitude, coordinate.latitude);

 

      //停止定位

      //[_manager stopUpdatingLocation];

 

}

 

11) 定位失败代理

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

{

      NSLog(@"定位失败”);

}

 

12) 屏幕坐标转经纬度坐标

    CLLocationCoordinate2D cl2d = [_mapView convertPoint:point toCoordinateFromView:_mapView];

 

13) 反地理编码

     CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

 

//获取地标对象

          CLPlacemark *mark = [placemarks firstObject];

     }];

 

 

大头针(标注):

 

14) 添加大头针

    //创建大头针

       MKPointAnnotation *pointAnn = [[MKPointAnnotation alloc] init];

    

       //设置坐标

       pointAnn.coordinate = CLLocationCoordinate2DMake(23.181297, 113.346877);

 

       //设置标题

       pointAnn.title = @"我的第一个大头针";

    

       //设置副标题

       pointAnn.subtitle = @"副标题";

    

       //显示大头针,把大头针加入到地图上

       [_mapView addAnnotation:pointAnn];

 

 

15) 大头针的复用及定制

#pragma  mark - mapView 代理方法

//大头针View

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation

{

    

    //如果是自己当前位置的大头针,则不定制

    if ( [annotation isKindOfClass:[MKUserLocation class]]) {

        return  nil;

    }

        

#if 1

    

    // 1、自带的大头针视图

    MKPinAnnotationView *pinAnnView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"ID"];

    if ( !pinAnnView ) {

        pinAnnView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ID"];

    }

    

    //设置大头针的颜色

    pinAnnView.pinColor = MKPinAnnotationColorPurple;

    

    //设置掉落动画

    pinAnnView.animatesDrop = YES;

    

    //是否弹出气泡

    pinAnnView.canShowCallout = YES;

    

    //设置左视图

    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

    leftView.backgroundColor = [UIColor blueColor];

    pinAnnView.leftCalloutAccessoryView = leftView;

    

    //设置右视图

    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    pinAnnView.rightCalloutAccessoryView = rightBtn;

    

 

    return  pinAnnView;

    

#else

    //2、自定义大头针视图

    /*

       * 区别于MKPinAnnotationView

       * 1、可以设置大头针图片

       * 2、不可以设置大头针颜色和掉落动画

       */

    

    MKAnnotationView *customView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"ID2"];

    if ( !customView ) {

        customView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ID2"];

    }

 

    //设置点击大头针可以显示气泡

    customView.canShowCallout = YES;

    

    //设置大头针图片

    customView.image = [UIImage imageNamed:@"marker"];

    

    //设置左视图

    UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

    leftView.backgroundColor = [UIColor blueColor];

    customView.leftCalloutAccessoryView = leftView;

    

    //设置右视图

    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    customView.rightCalloutAccessoryView = rightBtn;

    

    

    return  customView;

#endif

    

}

 

 

16) 移除大头针

      [_mapView removeAnnotations:_mapView.annotations];

 

17)  添加长按手势,实现在地图的长按点添加一个大头针

  //4、长按地图显示大头针

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];

    [_mapView addGestureRecognizer:longPress];

 

#pragma  mark - 长按手势

-(void)longPress:(UILongPressGestureRecognizer *)gesture

{

    //避免多次调用 只允许开始长按状态才添加大头针

    if (gesture.state != UIGestureRecognizerStateBegan) {

        return;

    }

    

    //获取长按地图上的某个点

    CGPoint point = [gesture locationInView:_mapView];

    

    //把point转换成在地图上的坐标经纬度

    CLLocationCoordinate2D coordinate = [_mapView convertPoint:point toCoordinateFromView:_mapView];

    

    //添加长按的大头针

    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];

    annotation.coordinate = coordinate;

    annotation.title = @"长按的大头针";

    annotation.subtitle = @"副标题";

    [_mapView addAnnotation:annotation];

    

}

 

 

高德地图

 

1、高德地图申请Appkey流程:

a) 在浏览器中打开网址:http://lbs.amap.com/api/ios-sdk/guide/verify/

b) 访问:http://lbs.amap.com/console/key/,使用高德开发者账号登陆

c) 2.在“KEY管理”页面点击上方的“获取key”按钮,依次输入应用名,选择绑定的服务为“iOS平台SDK”,输入Bundle Identifier(Bundle Identifier获取方式为Xcode->General->Identity)

<Bundle Identifier : com.qianfeng.gaodedemo >

<APIKEY : e848d391f9c4b98db0935052777f99d2 >

 

2、高德地图配置工程流程:

a)下载高德地图iOS SDK

b)添加高德地图的库文件MAMapKit.framework

c)添加8个关联库QuartzCore, CoreLocation, SystemConfiguration, CoreTelephony, libz, OpenGLES, libstdc++6.09, Security(MAMapView)

d)添加AMap.bundle(MAMapKit.framework->Resources)

e) TARGETS-Build Settings-Other Linker Flags 中添加内容: -ObjC;

f)在代码中添加用户Key: [MAMapServices sharedServices].apiKey =@"您的key"; 

 

 

3、单独使用搜索服务包:

a)添加搜索库文件AMapSearchKit.framework

b)添加关联库SystemConfiguration, CoreTelephony, libz, libstdc++6.09

c)在代码中添加AMapSearchAPI *search = [[AMapSearchAPI alloc] initWithSearchKey: @"您的key" Delegate:self];

 

    

4、如何使用高德地图<MAMapKit> 和 搜索<AMapSearchKit>

 

MAMapKit:

0)  配置高德地图API

#define  APIKEY @"e848d391f9c4b98db0935052777f99d2"

     [MAMapServices sharedServices].apiKey = APIKEY;

 

1) 初始化MAMapView

_maMapView = [[MAMapView alloc] initWithFrame:self.view.bounds];

     [self.view addSubview:_maMapView];  

 

2) 设置代理

     _maMapView.delegate = self; 

 

3) 设置地图类型

     _maMapView.mapType = MAMapTypeStandard; 

 

4) 允许显示自己的位置(如使用定位功能,则必须设置为YES)

    _maMapView.showsUserLocation = YES;  

 

5) 设置logo位置

    _maMapView.logoCenter = CGPointMake(100, 100);

 

6) 显示罗盘

    _maMapView.showsCompass = YES;

 

7) 显示交通

    _maMapView.showTraffic = YES;

 

8) 是否支持旋转

    _maMapView.rotateEnabled = YES;

 

9) 是否支持拖动

    _maMapView.scrollEnabled = YES;

 

  10) 是否支持缩放

    _maMapView.zoomEnabled = NO;

 

11) 设置地图显示区域

a) 设置坐标

    CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(23.181297, 113.346877);

 

b) 设置缩放

    MACoordinateSpan span = MACoordinateSpanMake(0.1, 0.1);

 

c) 设置区域

    MACoordinateRegion region = MACoordinateRegionMake(coordinate, span);

 

d) 显示区域

    _maMapView.region = region;

 

12)  定位

  #pragma  mark - 定位 回调方法

  -(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation

  {

      NSLog(@"定位成功");

    

      CLLocation *location = userLocation.location;

      CLLocationCoordinate2D coordinate = location.coordinate;

    

      NSLog(@"我的坐标位置:%f, %f", coordinate.longitude, coordinate.latitude);

    

      // 定位后,可设置停止定位

      // _maMapView.showsUserLocation = NO;

  }

 

 

  13) 添加标注(大头针)

    //添加标注

      MAPointAnnotation *annotation = [[MAPointAnnotation alloc] init];

      annotation.coordinate = coordinate; //设置标注的坐标

      annotation.title = @"高德地图标题"; //设置标题

      annotation.subtitle = @"副标题"; //设置副标题

      [_maMapView addAnnotation:annotation]; //将标注添加在地图上

 

14) 标注的复用及定制

  #pragma  mark - 定制标注视图(和原生地图定制方式类似)

  - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation

  {

      //不定制自己位置的标注视图

      if ( [annotation isKindOfClass:[MAUserLocation class]]) {

          return nil;

      }

    

  #if 1

    

      // 1、自带的标注视图

      MAPinAnnotationView *pinAnnView = (MAPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"ID"];

      if ( !pinAnnView ) {

          pinAnnView = [[MAPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ID"];

      }

    

      // 是否可弹出视图

      pinAnnView.canShowCallout = YES;

    

      // 设置掉落动画

      pinAnnView.animatesDrop = YES;

    

      // 设置标注颜色

      pinAnnView.pinColor = MAPinAnnotationColorGreen;

    

      // 设置左视图

      UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

      leftView.backgroundColor = [UIColor blueColor];

      pinAnnView.leftCalloutAccessoryView = leftView;

    

      //设置右视图

      UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

      pinAnnView.rightCalloutAccessoryView = rightBtn;

    

      return pinAnnView;

    

  #else 

    

      //2、自定义标注视图

      MAAnnotationView *customView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"ID2"];

      if ( !customView ) {

          customView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ID2"];

      }

    

      //设置点击大头针可以显示气泡

      customView.canShowCallout = YES;

    

      //设置大头针图片

      customView.image = [UIImage imageNamed:@"marker"];

    

      //设置左视图

      UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

      leftView.backgroundColor = [UIColor blueColor];

      customView.leftCalloutAccessoryView = leftView;

    

      //设置右视图

      UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

      customView.rightCalloutAccessoryView = rightBtn;

    

      return  customView;

    

  #endif

  }

 

15) 添加长按手势

 

      UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];

      [_maMapView addGestureRecognizer:longPress];

 

 

  #pragma  mark -- 长按手势Action

  -(void)longPress:(UILongPressGestureRecognizer *)longPress

  {

      if (longPress.state != UIGestureRecognizerStateBegan) {

          return;

      }

    

      //获取点位置

      CGPoint point = [longPress locationInView:_maMapView];

    

      //将点位置转换成经纬度坐标

      CLLocationCoordinate2D coordinate = [_maMapView convertPoint:point toCoordinateFromView:_maMapView];

    

      //在该点添加一个大头针(标注)

      MAPointAnnotation *pointAnn = [[MAPointAnnotation alloc] init];

      pointAnn.coordinate = coordinate;

      pointAnn.title = @"长按的大头针";

      pointAnn.subtitle = @"副标题";

      [_maMapView addAnnotation:pointAnn];

    

  }

 

 

AMapSearchKit:

  1) 搜索周边

 

0)  创建AMapSearchAPI对象,配置APPKEY,同时设置代理对象为self

    searchAPI = [[AMapSearchAPI alloc] initWithSearchKey:APIKEY Delegate:self];

 

a) 创建搜索周边请求类

    AMapPlaceSearchRequest *searchRequest = [[AMapPlaceSearchRequest alloc] init];

 

b) 设置搜索类型(按关键字搜索)

    searchRequest.searchType = AMapSearchType_PlaceKeyword;

 

c) 设置关键字

    searchRequest.keywords = keywordsTextField.text;

 

d) 设置搜索城市

    searchRequest.city = @[@"广州"];

 

e) 开始搜索

    [searchAPI AMapPlaceSearch:searchRequest];

 

 

  2) 搜索周边回调方法

a) 搜索失败

- (void)searchRequest:(id)request didFailWithError:(NSError *)error

{

    NSLog(@"搜索失败");

}

 

b) 搜索成功

-(void)onPlaceSearchDone:(AMapPlaceSearchRequest *)request response:(AMapPlaceSearchResponse *)response

{

    //清空原来的标注(大头针)

    [_maMapView removeAnnotations:_maMapView.annotations];

 

    //判断是否为空

    if (response) {

        

        //取出搜索到的POI(POI:Point Of Interest)

        for (AMapPOI *poi in response.pois) {

            

            //poi的坐标

            CLLocationCoordinate2D coordinate = 

CLLocationCoordinate2DMake(poi.location.latitude, poi.location.longitude);

            

            //地名

            NSString *name = poi.name;

            

            //地址

            NSString *address = poi.address;

            

            //用标注显示

            MAPointAnnotation *pointAnn = [[MAPointAnnotation alloc] init];

            pointAnn.coordinate = coordinate;

            pointAnn.title = name;

            pointAnn.subtitle = address;

            [_maMapView addAnnotation:pointAnn];

        }

    }

 

}

 

  3)  添加折线

#pragma  mark - 画折线

-(void)drawPolyLine

{

    //初始化点

    NSArray *latitudePoints =[NSArray arrayWithObjects:

                              @"23.172223",

                              @"23.163385",

                              @"23.155411",

                              @"23.148765",

                              @"23.136935", nil];

    NSArray *longitudePoints = [NSArray arrayWithObjects:

                                @"113.348665",

                                @"113.366056",

                                @"113.366128",

                                @"113.362391",

                                @"113.356785", nil];

    

    // 创建数组

    CLLocationCoordinate2D polyLineCoords[5];

    

    for (int i=0; i<5; i++) {

        polyLineCoords[i].latitude = [latitudePoints[i] floatValue];

        polyLineCoords[i].longitude = [longitudePoints[i] floatValue];

 

    }

    

    // 创建折线对象

    MAPolyline *polyLine = [MAPolyline polylineWithCoordinates:polyLineCoords count:5];

    

    // 在地图上显示折线

    [_maMapView addOverlay:polyLine];

    

}

 

#pragma  mark - 定制折线视图

-(MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id<MAOverlay>)overlay

{

    if ([overlay isKindOfClass:[MAPolyline class]]) {

        

        MAPolylineView *polyLineView = [[MAPolylineView alloc] initWithPolyline:overlay];

        polyLineView.lineWidth = 2; //折线宽度

        polyLineView.strokeColor = [UIColor blueColor]; //折线颜色

        polyLineView.lineJoinType = kMALineJoinRound; //折线连接类型

        

        return polyLineView;

    }

    return nil;

}

转载于:https://www.cnblogs.com/lijiehai/p/4432328.html

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

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

相关文章

想说爱你不容易 | 使用最小 WEB API 实现文件上传

前言在 .NET 6 之前&#xff0c;实现文件上传功能十分简单&#xff1a;[HttpPost("upload")] public async Task<IActionResult> Upload(IFormFile file) {//对file执行操作return Ok(file.FileName); }但是&#xff0c;当使用 .NET 6 的最小 WEB API 来实现相…

python商用_python实现sm2和sm4国密(国家商用密码)算法的示例

GMSSL模块介绍GmSSL是一个开源的加密包的python实现&#xff0c;支持SM2/SM3/SM4等国密(国家商用密码)算法、项目采用对商业应用友好的类BSD开源许可证&#xff0c;开源且可以用于闭源的商业应用。安装模块pip install gmsslSM2算法RSA算法的危机在于其存在亚指数算法&#xff…

Android下载文件

2019独角兽企业重金招聘Python工程师标准>>> package com.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.content.Intent…

C++之operator关键字(重载操作符) 使用总结

operator是C++的关键字,它和运算符一起使用,表示一个运算符函数, 一、为什么使用操作符重载 简单的说我们基本数据比如int float 都可以比较大小 有>、<、=,但是对象需要比较大小怎么办,我们也可以用>、<、=,只不过我们需要一个通用的规范比较对象的属性…

#HTTP协议学习# (七)cookie

本文转自&#xff1a;http://www.cnblogs.com/TankXiao/archive/2012/12/12/2794160.html Cookie是HTTP协议中非常重要的东西&#xff0c; 之前拜读了Fish Li 写的【细说Cookie】&#xff0c; 让我学到了很多东西。Fish的这篇文章写得太经典了。 所以我这篇文章就没有太多内容了…

C#中的类型~存储~变量

欢迎您成为我的读者&#xff0c;希望这篇文章能给你一些帮助。前言今天在群里看到朋友讨论把粉丝称为读者&#xff0c;这让我内心特别激动。以前我还是比较关注自己的文章阅读量&#xff0c;有没有人转发&#xff0c;今天新增多少个关注。而现在&#xff0c;我的关注点变了&…

sql-逻辑循环while if

--计算1-100的和declare int int1;declare total int0;while(int<100)beginset totaltotalint;set intint 1;endselect total--计算1-100偶数的和declare index int;declare sum int;set index1;set sum0;while(index<100)beginif(index%20)beginset sumsumindexendset i…

mysql常用cmd指令_Mysql cmd 常用命令

连接&#xff1a;mysql -h主机地址 -u用户名 &#xff0d;p用户密码 (注:u与root可以不用加空格&#xff0c;其它也一样)断开&#xff1a;exit (回车)创建授权&#xff1a;grant select on 数据库.* to 用户名登录主机 identified by \"密码\"修改密码&#xff1a;my…

C++之typename

1、typename和class 在模板前,typename和class没有区别 template<typename T> class A; template<class T> class A;typename和class对编译器而言却是不同的东西 2、声明一个类型 看下面的代码 我们编译下结果如下 编译器不知道T::const_iterator是个类型。如果…

ubuntu 的QT4的qmake失败的处理方法

安装qt4以后使用命令行编译时出现一下错误&#xff1a;administratorubuntu:~/qt/qt-book/chap01/hello$ qmake hello.pro程序 qmake 已包含在以下软件包中&#xff1a;* qt3-dev-tools* qt4-qmake试试&#xff1a;sudo apt-get install <选定的软件包>bash: qmake&#…

gulp与webpack的区别

常有人拿gulp与webpack来比较&#xff0c;知道这两个构建工具功能上有重叠的地方&#xff0c;可单用&#xff0c;也可一起用&#xff0c;但本质的区别就没有那么清晰。 gulp gulp强调的是前端开发的工作流程&#xff0c;我们可以通过配置一系列的task&#xff0c;定义task处理的…

mooc数据结构与算法python版期末考试_数据结构与算法Python版-中国大学mooc-试题题目及答案...

数据结构与算法Python版-中国大学mooc-试题题目及答案更多相关问题婴儿出生一两天后就有笑的反应&#xff0c;这种笑的反应属于()。【判断题】填制原始凭证&#xff0c;汉字大写金额数字一律用正楷或草书书写&#xff0c;汉字大写金额数字到元位或角位为止的&#xff0c;后面必…

使用 NetCoreBeauty 优化 .NET CORE 独立部署目录结构

在将一个 .NET CORE \ .NET 5.0 \ .NET 6.0 程序进行独立部署发布时&#xff0c;会在发布目录产生很多系统类库&#xff0c;导致目录非常不简洁。这给寻找入口程序造成了困难&#xff0c;特别是路遥工具箱这种绿色软件&#xff0c;不会在开始菜单、系统桌面创建快捷方式&#x…

关于注释

在编写程序时&#xff0c;应当给程序添加一些注释&#xff0c;用于说明某段代码的作用&#xff0c;或者说明某个类的用途&#xff0c;某个方法的功能&#xff0c;以及该方法的参数和返回值类型和意义等。 很多初学者开始学习编程语言时&#xff0c;会很努力写程序&#xff0c;但…

从此不再惧怕URI编码:JavaScript及C# URI编码详解

混乱的URI编码 JavaScript中编码有三种方法:escape、encodeURI、encodeURIComponent C#中编码主要方法&#xff1a;HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString JavaScript中的还好&#xff0c;只提供了三个&#xff0c;C#中主要用的…

ios之最简单的程序

1、构建学生对象并且打印相关信息 代码&#xff1a;#import <UIKit/UIKit.h> #import "AppDelegate.h"interface Student : NSObject //变量 property NSString *name; property int age; property float score;//method -(void)show;endimplementation Studen…

网站前端_EasyUI.基础入门.0009.使用EasyUI Layout组件的最佳姿势?

1. 基础布局<div id"l" class"easyui-layout" data-options"width:500,height:250"><div data-options"region:north,title:north,height:50"></div><div data-options"region:west,title:west,width:100&q…

MySQL数据库如何管理与维护_mysql数据库的管理与维护

mysql数据库的管理与维护云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样…

[转载]Javascript异步编程的4种方法

NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中&#xff0c;使用“回调”是最常见的。 其实还有其他4种实现异步的方法&#xff1a; 在此以做记录 --- http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html --- 你可能知道&am…

继 SpringBoot 3.0,Elasticsearch8.0 官宣:拥抱 Java 17

大家好&#xff0c;我是君哥。新版任你发&#xff0c;我用 Java 8&#xff0c;这可能是当下 Java 开发者的真实写照。不过时代可能真的要抛弃 Java 8&#xff0c;全面拥抱 Java 17 了。Spring Boot 3.0前些天&#xff0c;相信小伙伴们都注意到了&#xff0c;SpringBoot 发布了 …