Idea中启动Nacos
第一步:打开服务编辑配置,例如:

第二步:添加Shell Script,例如:

第三步:添加nacos相关信息,例如:

Nacos概述
Nacos(DynamicNaming and Configuration Service)是一个应用于服务注册与发现、配置管理的平台。它孵化于阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。其官网地址如下:
https://nacos.io/zh-cn/docs/quick-start.html

构建Nacos服务
下载与安装
第一步:Nacos下载,可在浏览器直接输入如下地址:
nacos
第二步:选择对应版本,直接下载,如图所示:

第三步:解压Nacos(最好不要解压到中文目录下),其目录结构如下:

初始化配置
第一步:找到/conf/nacos-mysql.sql文件里的sql脚本(最后用老师给大家的),然后登陆mysql,然后基于脚本文件中的描述创建数据库(名字nacos_config,编码方式utf8mb4),并执行脚本文件,脚本执行成功会创建一些表,如图所示:

在此 nacos-mysql.sql 文件中添加如下内容:


在此 nacos-mysql.sql 文件中添加如下内容:

 DROP DATABASE IF EXISTS `nacos_config`;
CREATE DATABASE `nacos_config` DEFAULT character set utf8mb4;
SET names utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `nacos_config`;


执行脚本文件时,我们可以使用mysql自带客户端,在命令行首先登录mysql,然后执行如下指令:

source d:/nacos-mysql.sql

说明:在执行此文件时,要求mysql的版本大于5.7版本(MariaDB最好10.5.11),否则会出现如下错误:

 第二步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉):### If use MySQL as datasource:
spring.datasource.platform=mysql### Count of DB:
db.num=1### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

服务启动与访问

第一步:启动Nacos服务。

Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):

./startup.sh -m standalone

Windows启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

说明:
1)执行执行令时要么配置环境变量,要么直接在nacos/bin目录下去执行 cmd 上面为执行命令.
2)nacos启动时需要本地环境变量中配置了JAVA_HOME(对应jdk的安装目录),

第二步:访问Nacos服务。

打开浏览器,输入http://localhost:8848/nacos地址,出现如下登陆页面:


其中,默认账号密码为nacos/nacos.

服务注册与调用入门(重点)
业务描述
创建两个项目Module分别为服务提供者和服务消费者,两者都要注册到NacosServer中(这个server本质上就是一个web服务,端口默认为8848),然后服务提供者可以为服务消费者提供远端调用服务(例如支付服务为服务提供方,订单服务为服务消费方),如图所示:

生产者服务创建及注册
第一步:parent工程(01-sca),其pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

4.0.0

<!--项目坐标(groupId->01-sca)-->
<groupId>com.jt</groupId>
<artifactId>01-sca</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version><!--这个元素是自动添加的,创建当前工程下的子工程时,会自动添加此元素-->
<modules><module>sca-provider</module><module>sca-consumer</module><module>sca-demos</module>
</modules><!--工程中默认定义的或自己定义的属性,例如一些版本信息-->
<properties><spring.boot.version>2.3.2.RELEASE</spring.boot.version><spring.cloud.version>Hoxton.SR9</spring.cloud.version><spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
</properties><dependencyManagement><dependencies><!--Spring boot 依赖(微服务基础)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><!--这里的import表示在其它工程中需要时直接可以引用--><scope>import</scope><!--假如依赖的scope属性值为scope,则type类型必须为pom--><type>pom</type></dependency><!--Spring Cloud 依赖(定义了微服务规范)--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><scope>import</scope><type>pom</type></dependency><!--Spring Cloud Alibaba依赖(基于spring微服务规范做了具体落地实现)--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><scope>import</scope><type>pom</type></dependency></dependencies>
</dependencyManagement>

创建服务提供者工程(module名为sca-provider)其pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

01-sca
com.jt
1.0-SNAPSHOT

4.0.0

<artifactId>sca-provider</artifactId><dependencies><!--Web服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--服务的注册和发现(我们要讲服务注册到nacos)--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>


第二步:服务提供方 实现服务注册,关键代码如下:

package com.jt;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}/**定义Controller对象(这个对象在spring mvc中给他的定义是handler),* 基于此对象处理客户端的请求*/@RestControllerpublic  class ProviderController{//@value 默认读取项目配置文件中配置的内容@Value("${server.port:8080}")private String server;//http://localhost:8084/provider/echo/tedu@GetMapping("/provider/echo/{msg}")public String doRestEcho1(@PathVariable String msg) throws InterruptedException {Thread.sleep(50000);  //在此增加此阻塞,是为了测试 服务出现问题时  调用其他方法处理该异常问题return server + "say hello "+ msg;}}
}

创建并修改配置文件application.yml(或者application.properties)

server:port: 8084
spring:application:name: sca-providercloud:nacos:discovery:server-addr: localhost:8848 #服务注册和发现(默认是注册到这个地步)

第四步:启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:

第五步:打开浏览器,输入http://localhost:8084/provider/echo/msa,然后进行访问。

消费者服务发现及调用
第一步:创建服务消费者(module名为sca-consumer),继承parent工程(01-sca),其pom.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

01-sca
com.jt
1.0-SNAPSHOT

4.0.0

<artifactId>sca-consumer</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target>
</properties><dependencies><!--Web服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--服务的注册和发现(我们要讲服务注册到nacos)--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--当基于feign方式进行服务调用时就需要此依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>

**第二步:修改配置文件application.yml,关键代码如下:**

server:port: 8090
spring:application:name: sca-consumercloud:nacos:discovery:server-addr: localhost:8848 #从哪里去查找服务# feign方式访问超时配置
#ribbon:#ConnectTimeout: 50000 #连接超时(主要是针对网络阻塞)#ReadTimeout: 50000 #请求处理超时#feign方式的服务熔断处理
feign:hystrix: #hystrix 含义是熔断(就相当于服务停止了)或降级enabled: true #默认值为false

四种服务注册的方式:

第三步:创建启动类并实现服务消费,关键代码如下: 直接调用(非负载均衡方式)

第一种方式
package com.jt;
@SpringBootApplication
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);}/**创建RestTemplate对象,然后基于此对象进行远程服务调用* @Bean 注解用于描述方法,用于告诉spring框架这个方法的返回值交给spring管理,* spring默认会这个方法返回对象起一个bean的名字(key),默认为方法名.当然也可以* 对一个bean的名字进行自定义,例如@Bean("自己定义的名字").* 思考:spring框架中为什么会给出这样的注解,用于描述方法,在方法中构建对象?* 第一:Spring是一个资源整合框架.* 第二:何为资源? (内存中对象)* 第三:所有对象是否都有类型?   是* 第四:所有对象的类型都是你自己定义的吗?不一定(有自己,有第三方)* 第五:第三方的类,我们能在类上直接添加注解描述吗(例如@Component)?不可以*/@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}@RestControllerpublic class ConsumerController{@Value("${spring.application.name}")private String appName;@Autowiredprivate RestTemplate restTemplate;//直接调用(非负载均衡方式)//http://localhost:8090/consumer/doRestEcho1@GetMapping("/consumer/doRestEcho1")public String doRestEcho01(){String url = "http://localhost:8084/provider/echo/"+appName;System.out.println("request url:"+url);return restTemplate.getForObject(url, String.class);}}
}

第五步:启动消费者服务,并在浏览器输入http://localhost:8090/consumer/doRestEcho1地址进行访问,假如访问成功会出现,如图所示效果:

服务负载均衡设计及实现
一个服务实例可以处理请求是有限的,假如服务实例的并发访问比较大,我们会启动多个服务实例,让这些服务实例采用一定策略均衡(轮询,权重,随机,hash等)的处理并发请求,在Nacos中服务的负载均衡(Nacos客户端负载均衡)是如何应用的?

第二种方式

第一步:修改ConsumerController类,注入LoadBalancerClient对象,并添加doRestLoadBalancerClientEcho方法,然后进行服务访问.

package com.jt;
@SpringBootApplication
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);}@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}@RestControllerpublic class ConsumerController{@Autowiredprivate LoadBalancerClient loadBalancerClient;@Value("${spring.application.name}")private String appName;@Autowiredprivate RestTemplate restTemplate;//负载均衡应用方式1@GetMapping("/consumer/doRestEcho2")public String doRestEcho2(){//手动自己写负载均衡算法(随机调用服务列表中的服务对象)//调用谁?sca-provider中的一个url
//            String url1="http://localhost:8080/provider/echo/"+appName;
//            String url2="http://localhost:8081/provider/echo/"+appName;
//            String url3="http://localhost:8082/provider/echo/"+appName;
//            String urls[]=new String[]{url1,url2,url3};
//            //随机获取一个小于urls数组长度的整数
//            int n=new Random().nextInt(urls.length);
//            System.out.println("n="+n);
//            //如何调用?
//            return restTemplate.getForObject(urls[n],String.class);//基于loadBalancerClient方式获取服务实例String serviceId="sca-provider";//这个名字要在nacos的服务列表中ServiceInstance choose = loadBalancerClient.choose(serviceId);String ip = choose.getHost();int port = choose.getPort();//String url="http://"+ip+":"+port+"/provider/echo/"+appName;String  url=String.format("http://%s:%s/provider/echo/%s",ip,port,appName);return restTemplate.getForObject(url, String.class);}}
}

第二步:打开Idea服务启动配置,如图所示:

第三步:修改并发运行选项(假如没有找到这个选项我们需要通过搜索引擎基于组合查询的方法,去找到对应的解决方案,例如搜索 idea allow parallel run),如图所示:

第四步:修改sca-provider的配置文件端口,分别以8081,8082端口方式进行启动。

启动成功以后,访问nacos的服务列表,检测服务是否成功注册,如图所示:

第四步:启动sca-consumer项目模块,打开浏览器,输入如下网址进行反复服务访问:

http://localhost:8090/consumer/doRestEcho2

然后会发现sca-provider的两个服务都可以处理sca-consumer的请求。

这里多个实例并发提供服务的方式为负载均衡,这里的负载均衡实现默认是因为Nacos集成了Ribbon来实现的,Ribbon配合RestTemplate,可以非常容易的实现服务之间的访问。Ribbon是Spring Cloud核心组件之一,它提供的最重要的功能就是客户端的负载均衡(客户端可以采用一定算法,例如轮询访问,访问服务端实例信息),这个功能可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡方式的服务调用。

第三种方式

@LoadBalanced

package com.jt;
@SpringBootApplication
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class,args);}//当使用RestTemplate进行远程服务调用时,假如需要负载均衡,可以在RestTemplate对象构建时,使用@LoadBalanced对构建RestTemplate的方法进行修饰,例如在ConsumerApplication中构建RestTemplate对象:@Bean@LoadBalanced  //这个注解描述RestTemplate对象时,系统底层会对RestTemplate对象的请求进行拦截  性能较为差一些public RestTemplate loadBlanceRestTemplate(){return new RestTemplate();}@RestControllerpublic class ConsumerController{@Value("${spring.application.name}")private String appName;//在需要RestTemplate实现负载均衡调用的地方进行依赖注入.例如在ConsumerController类中添加loadBalancedRestTemplate属性//负载均衡客户端对象(基于此对象可以从nacos中获取服务列表,并且可以基于一定的算法//从列表中获取一个服务实例)@Autowiredprivate  RestTemplate loadBlanceRestTemplate;/*** @Autowired  注解描述属性时,会告诉spring框架,要优先属性类型进行对象的查找和注入,假如此类型的对象存在多个* 此时还会按照属性名进行查找和比对,有相同的则直接注入(DI),没有相同的则出错,* 当然也可以在属性上添加@Qualifier("bean的名字")注解,指定要注入的具体对象*///接下来,可以在对应的服务端调用方的方法内,基于RestTemplate借助服务名进行服务调用, 例如://负载均衡应用方式2:@LoadBalanced  //此方法性能没有第二种好一点@GetMapping("/consumer/doRestEcho3")public String doRestEcho3(){//基于loadBalancerClient方式获取服务实例String serviceId="sca-provider";//这个名字要在nacos的服务列表中String  url=String.format("http://%s/provider/echo/%s",serviceId,appName);return loadBlanceRestTemplate.getForObject(url, String.class);}}
}

RestTemplate在发送请求的时候会被LoadBalancerInterceptor拦截,它的作用就是用于RestTemplate的负载均衡,LoadBalancerInterceptor将负载均衡的核心逻辑交给了loadBalancer,核心代码如下所示(了解):

public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) throws IOException {final URI originalUri = request.getURI();String serviceName = originalUri.getHost();return this.loadBalancer.execute(serviceName, requestFactory.createRequest(request, body, execution));
}

@LoadBalanced注解是属于Spring,而不是Ribbon的,Spring在初始化容器的时候,如果检测到Bean被@LoadBalanced注解,Spring会为其设置LoadBalancerInterceptor的拦截器。
第四种方式

Feign是什么
Feign 是一种声明式Web服务客户端,底层封装了对Rest技术的应用,通过Feign可以简化服务消费方对远程服务提供方法的调用实现。如图所示:

Feign 最早是由 Netflix 公司进行维护的,后来 Netflix 不再对其进行维护,最终 Feign 由一些社区进行维护,更名为 OpenFeign。

Feign应用实践
第一步:在服务消费方,添加项目依赖(SpringCloud团队基于OpenFeign研发了starter),代码如下:`<?xml version="1.0" encoding="UTF-8"?>

01-sca
com.jt
1.0-SNAPSHOT

4.0.0

<artifactId>sca-consumer</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target>
</properties><dependencies><!--Web服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--服务的注册和发现(我们要讲服务注册到nacos)--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--当基于feign方式进行服务调用时就需要此依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>

`

第二步:在启动类上添加@EnableFeignClients注解,代码如下:

@EnableFeignClients
@SpringBootApplication
public class ConsumerApplication {…}

第三步:定义Http请求API,基于此API借助OpenFeign访问远端服务,代码如下:

package com.jt.feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;/***  @FeignClient 注解用于描述远程服务调用接口,这个接口不需要你写实现类,你*  只需要定义访问规则即可(例如请求方式,请求url ,请求参数).*  @FeignClient注解描述的接口的实现类对象会默认交给spring管理,这个bean对象*  的名字默认就是name属性指定的值,这个name还有一个层面的含义,就是你远程调用的服务名*  说明:假如@@FeignClient注解中添加 contextId属性,则这个属性值,默认会当做bean对象的名字*  此时name的值仅仅作为要调用的服务名对待,一般推荐contextId的值默认为@FeignClient注解描述的*  接口的名字(首字母小写)*/@FeignClient(name = "sca-provider",contextId = "remoteProviderService",fallbackFactory = ProviderFallbackFactory.class)
public interface RemoteProviderService {//@GetMapping表示以get请求方式调用远端服务//"/provider/echo/{msg}"为远程调用服务的url@GetMapping("/provider/echo/{msg}")String echoMessage(@PathVariable("msg") String msg);
}

其中,@FeignClient描述的接口底层会为其创建实现类。

第四步:创建FeignConsumerController中并添加feign访问,代码如下:

package com.jt.controller;import com.jt.feign.RemoteProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/consumer")
public class FeignConsumerController {@Autowiredprivate RemoteProviderService remoteProviderService;/**基于feign方式的服务调用*/@GetMapping("/echo/{msg}")public String doFeignEcho(@PathVariable String msg){//基于feign方式进行远端服务调用(前提是服务必须存在)return remoteProviderService.echoMessage(msg);}
}

第五步:启动消费者服务,在浏览器中直接通过feign客户端进行访问,如图所示(反复刷新检测其响应结果):

Feign配置进阶实践
一个服务提供方通常会提供很多资源服务,服务消费方基于同一个服务提供方写了很多服务调用接口,此时假如没有指定contextId,服务
启动就会失败,例如假如在服务消费方再添加一个如下接口,消费方启动时就会启动失败,例如:

此类为测试所用!!!

@FeignClient(name=“sca-provider”)
public interface RemoteOtherService {
@GetMapping("/doSomeThing")
public String doSomeThing();
}
其启动异常:

The bean ‘optimization-user.FeignClientSpecification’, defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
此时我们需要为远程调用服务接口指定一个contextId,作为远程调用服务的唯一标识即可,例如:

@FeignClient(name=“sca-provider”,contextId=“remoteProviderService”)//sca-provider为服务提供者名称
interface RemoteProviderService{
@GetMapping("/provider/echo/{string}")//前提是远端需要有这个服务
public String echoMessage(@PathVariable(“string”) String string);
}
还有,当我们在进行远程服务调用时,假如调用的服务突然不可用了或者调用过程超时了,怎么办呢?一般服务消费端会给出具体的容错方案,例如:
第一步:定义FallbackFactory接口的实现,代码如下:

package com.jt.feign;import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
//此对象可以作为Feign方式的远程调用异常处理对象
@Component
public class ProviderFallbackFactoryimplements FallbackFactory<RemoteProviderService> {//当正常远程调用的服务不可用时,系统可以调用此方法进行请求处理/***  此方法会在RemoteProviderService接口服务调用时,出现了异常后执行.* @param throwable 用于接收异常* @return*/@Overridepublic RemoteProviderService create(Throwable throwable) {return new RemoteProviderService() {//匿名内部类@Overridepublic String echoMessage(String msg) {//...通知运维人员(发短信,发邮件,电话)...return "服务维护中";}};}
}

第二步:在Feign访问接口中应用FallbackFactory对象,例如:

@FeignClient(name = "sca-provider", contextId = "remoteProviderService",fallbackFactory = ProviderFallbackFactory.class)//sca-provider为nacos中的服务名
public interface RemoteProviderService {@GetMapping("/provider/echo/{msg}")public String echoMsg(@PathVariable String msg);
}

第三步:在配置文件application.yml中添加如下配置,启动feign方式调用时的服务中断处理机制.

server:port: 8090
spring:application:name: sca-consumercloud:nacos:discovery:server-addr: localhost:8848 #从哪里去查找服务

feign方式访问超时配置

#ribbon:#ConnectTimeout: 50000 #连接超时(主要是针对网络阻塞)#ReadTimeout: 50000 #请求处理超时#feign方式的服务熔断处理    启动feign方式调用时的服务中断处理机制
feign:hystrix: #hystrix 含义是熔断(就相当于服务停止了)或降级enabled: true #默认值为false

第四步:在服务提供方对应的方法中添加Thread.sleep(500000)模拟耗时操作,然后启动服务进行访问测试.

Feign 调用过程分析(了解)
Feign应用过程分析(底层逻辑先了解):
1)通过 @EnableFeignCleints 注解告诉springcloud,启动 Feign Starter 组件。
2) Feign Starter 在项目启动过程中注册全局配置,扫描包下所由@FeignClient注解描述的接口,然后由系统底层创建接口实现类(JDK代理类),并构建类的对象,然后交给spring管理(注册 IOC 容器)。
3) 接口被调用时被动态代理类逻辑拦截,将 @FeignClient 请求信息通过编码器生成 Request对象,基于此对象进行远程过程调用。
4) 请求对象经Ribbon进行负载均衡,挑选出一个健康的 Server 实例(instance)。
5) 通过 Client 携带 Request 调用远端服务返回请求响应。
6) 通过解码器生成 Response 返回客户端,将信息流解析成为接口返回数据。

Nacos概述,下载与安装,初始化配置,服务注册应用,RestTemplate,Feign相关推荐

  1. MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题

    第01章_数据库概述 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储 ...

  2. mysql5.7.10安装_MySQL5.7.10下载及安装及配置-阿里云开发者社区

    MySQL5.7.10下载及安装及配置 一.下载 自MySQL版本升级到5.7以后,其安装及配置过程和原来版本发生了很大的变化,下面详细介绍5.7版本MySQL的下载.安装及配置过程. 图1.1 My ...

  3. mysql5.7.28下载安装_Windows下mysql-5.7.28下载、安装、配置教程

    MySQL 数据库 Windows下mysql-5.7.28下载.安装.配置教程 最近需要更换mysql数据库的版本,写一篇文章,记录一下 一.下载mysql数据库 我这里选择5.7.28-Windo ...

  4. MySQL Win7 64位 下载、安装与配置图文教程

    MySQL是目前十分流行的一种关系型数据库管理系统.官网推出的安装包有两种格式,分别是:ZIP格式和MSI格式.其中MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,一般MySQL将会安装在 ...

  5. 大数据学习笔记32:Hive - 下载、安装与配置

    文章目录 一.初步了解Hive 1.Hadoop开发存在的问题 2.OLTP系统与OLAP系统 (1)OLTP - 在线联机事务处理系统 (2)OLAP - 在线联机分析处理系统 3.Hive概述 ( ...

  6. mongodb数据库的下载、安装、配置与使用

    一:下载.安装.配置.使用 为了方便下载,我把当时下载的这个解压包,放在百度的云盘上. 1.百度链接:https://pan.baidu.com/s/1xhFsENTVvU-tnjK9ODJ7Ag 密 ...

  7. 详细图解mongodb下载、安装、配置与使用

    一:下载.安装.配置.使用 为了方便下载,我把当时下载的这个解压包,放在百度的云盘上. 1.百度链接:https://pan.baidu.com/s/1xhFsENTVvU-tnjK9ODJ7Ag 密 ...

  8. 保姆级-MySQL 8.0的下载、安装、配置

    MySQL 8.0的下载.安装.配置 说明:适用于B站康师傅数据库教程 MySQL8.0 的安装 B站地址,点击我跳转 一. 软件的下载 1. 下载地址 官网: https://www.mysql.c ...

  9. MySQL8.0的下载、安装、配置

    1.MySQL的下载.安装.配置 1.1 MySQL四大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户. MySQL E ...

最新文章

  1. jQuery Mobile开发1-UI components
  2. c语言 int64 t占位符,为什么我会得到“您必须为dtype int64提供占位符张量输出值”?...
  3. 前端处理跨域的几种方式
  4. 解密昇腾AI处理器--Ascend310简介
  5. Java FilePermission暗含()方法与示例
  6. 34 FI配置-财务会计-应收账款和应付账款-定义应付汇票的备选统驭科目
  7. 2020年4月数据库流行度排行:MySQL 成事实王者,国产openGauss引期待
  8. oracle数据库用户创建_权限分配_以及导入_导出数据,oracle数据库用户创建、权限分配,以及导入,导出数据...
  9. [Erlang 0079] RabbitMQ 初探
  10. 分享整理的 Python 学习路线图,(附工具+视频+书籍+面试)
  11. R语言中文社区世界读书日图书推荐(含赠书活动)
  12. 采用SVM和神经网络的车牌识别(流程图及详细解释)
  13. 使用sql语句查询access数据库
  14. 手把手教你架构3D引擎高级篇系列四
  15. mysql用户角色权限表设计_用户角色权限设计(转)
  16. 大数据服务器环境准备(三台服务)
  17. 【GD32学习】五、片内Flash读写实验-闪存控制器FMC
  18. besiege机器人_《围攻》双脚机器人制作图文教程 双脚机器人怎么制作
  19. python正则表达式的学习
  20. Markdown教程常用语法随笔

热门文章

  1. cjuiautocomplete ajax,Yii CJuiAutoComplete小部件:空响应消息事件
  2. python画spc控制图_SPC控制图的制作方法和步骤
  3. android报错:org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
  4. windows 安装 mysql5.7.17
  5. 【Alpha】第九次Scrum meeting
  6. 为ASP.NET MVC Client-side Resource Combine 添加中文支持
  7. 使用T-SQL配置日志传送
  8. 篮球战术谈之经典配合
  9. 关于异常信息未找到成员
  10. pandas的dataframe