目录

简述

1.Dubbo性能高的原因

2.Dubbo框架

3.Dubbo支持的协议

4.Dubbo直连案例

4.1服务提供者provider项目:

4.2服务消费者Consumer:

4.3测试直连项目

5.dubbo直连方式-官方推荐方式

(1)创建服务提供者web工程

(2)创建服务消费者web工程

(3)创建java接口工程

(4)接口工程DubboInteface01中添加业务接口和实体类

(5)提供者DubboProvider01项目需要在pom.xml中引入DubboInteface01工程

(6)提供者DubboProvider01项目实现DubboInteface01中的接口方法

(7)提供者DubboProvider01项目,配置dubbo信息

(8)消费者DubboConsumer01项目需要在pom.xml中引入DubboInteface01工程

(9)消费者DubboConsumer01项目创建视图控制层

(10)消费者DubboConsumer01项目添加dubbo配置

(11)消费者DubboConsumer01项目添加视图jsp页面

(12)为提供者DubboProvider01项目、消费者DubboConsumer01配置tomcat

(13)启动这两个tomcat访问系统


简述

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

1.Dubbo性能高的原因

高性能要从底层的原理说起,既然是一个RPC框架,主要干的就是远程过程(方法)调用,那么提升性能就要从最关键、最耗时的两个方面入手:序列化和网络通信。

序列化:我们学习java网络开发的时候知道,本地对象要在网络上传输,必须要实现Serializable接口,也就是必须序列化。我们序列化的方案很多:xml、json、二进制流,其中效率最高的就是二进制流(因为计算机就是二进制的)。然而Dubbo采用的就是效率最高的二进制。

网络通信:不同于HTTP需要进行7步走(三次握手和四次挥手),Dubbo采用Socket通信机制,一步到位,提升了通信效率,并且可以建立长连接,不用反复连接,直接传输数据。

2.Dubbo框架

服务容器(Container):服务容器负责启动、加载、运行服务提供者。

服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。

服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选一台服务调用。

注册中心(Registry):注册中心范围服务提供者地址列表给消费者,如果有变更,注册中心将依据长连接推送变更数据给消费者。

监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

3.Dubbo支持的协议

支持多种协议:dubbo、http、webservice、memcached、redis等,dubbo官方推荐使用dubbo协议,dubbo协议默认端口20880。

使用dubbo协议,spring配置文件中加入

<dubbo:protocol name="dubbo" port="20880"/>

4.Dubbo直连案例

只有提供者和消费者,不添加注册中心的方式。

4.1服务提供者provider项目:

(1)创建provider提供者maven项目

(2)pom.xml添加需要的jar包

    <!--dubbo依赖--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.1</version></dependency><!--spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.16.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.16.RELEASE</version></dependency>

(3)开发对外暴露的接口

/*** 对外暴露的一些接口*/
public interface SomeService {String sayHello(String msg);}

(4)接口的实现类

/*** 接口实现类*/
public class SomeServiceImpl implements SomeService {public String sayHello(String msg) {return "Hello:"+msg;}
}

(5)resources目录下添加dubbo的相关spring配置文件dubbo-provider.xml

需要声明提供者名称、协议方式、端口、提供的服务、接口实现类

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!--声明服务提供者名称,保证它的唯一性,它是dubbo内部使用的唯一标识--><dubbo:application name="dubbo-provider"/><!--指定dubbo服务的协议名称和端口号,指定dubbo,默认端口号20880--><dubbo:protocol name="dubbo" port="20880"/><!--暴露服务dubbo:serviceinterface:暴露服务的接口全限定类名ref:引用接口在spring容器中的标识名称register:注册方式,使用直连方式,不适用注册中心,配置为N/A--><dubbo:service interface="com.qingyun.service.SomeService"ref="someServiceImpl" registry="N/A"/><!--把接口实现类添加到spring容器中--><bean id="someServiceImpl" class="com.qingyun.service.impl.SomeServiceImpl"/></beans>

(6)在webapp/WEB-INF目录下的web.xml中配置文本加载监听,把配置的dubbo配置文件加载进去

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:dubbo-provider.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

4.2服务消费者Consumer:

(1)创建maven项目

(2)pom.xml添加需要的jar包

    <!--dubbo依赖--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.1</version></dependency><!--spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.16.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.16.RELEASE</version></dependency>

(3)注入provider提供者jar包

maven项目默认打出的是jar包,但是提供者项目DubboProvider中的pom.xml文件中的包方式为war包,需要注释包方式

打开项目的maven管理,在Lifecycle中先clean再install,打出jar包,并且放到本地maven私服中去

在消费者中添加我们打出来的DubboProvider项目jar包,pom.xml添加配置:

        <!--注入提供者打出的jar包--><dependency><groupId>com.qingyun</groupId><artifactId>DubboProvider</artifactId><version>1.0-SNAPSHOT</version></dependency>

(4)创建后台调用的controller控制层,注入SomeService接口并调用其方法

@Controller
public class SomeController {@Autowiredprivate SomeService someService;@RequestMapping(value = "/hello")public String hello(Model model){String hello = someService.sayHello("World");model.addAttribute("hello",hello);return "hello";}
}

(5)在resources目录下,创建dubbo的配置dubbo-consumer.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 声明服务消费者名称,保证它的唯一性,它是dubbo内部服务名称的唯一标识--><dubbo:application name="dubbo-consumer"/><!-- 引用远程接口id:远程接口服务的代理对象名称interface:接口的全限定类名url:调用远程接口服务的url地址,协议方式和端口都需要和提供者配置中的一致registry:直连方式,不适用注册中心,N/A--><dubbo:reference id="someService" interface="com.qingyun.service.SomeService"url="dubbo://localhost:20880" registry="N/A"/></beans>

(6)在resources目录下,创建springmvc.xml配置中央调试器,配置视图方面的访问信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"><!-- 自动扫描包,实现支持注解的IOC --><context:component-scan base-package="com.qingyun.controller" /><!-- Spring MVC不处理静态资源 --><mvc:default-servlet-handler /><!-- 支持mvc注解驱动 --><mvc:annotation-driven /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean>
</beans>

(7)配置中央调试器,在web.xml中配置上加载的资源,拦截的资源

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><!--名称 --><servlet-name>springmvc</servlet-name><!-- Servlet类 --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:springmvc.xml,classpath*:dubbo-consumer.xml</param-value></init-param><!-- 启动顺序,数字越小,启动越早 --><load-on-startup>1</load-on-startup></servlet><!--所有请求都会被springmvc拦截 --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

(8)创建jsp页面,测试数据

<%--Created by IntelliJ IDEA.User: zhanglizengDate: 2021/7/3Time: 16:09To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>${hello}</h1>
</body>
</html>

(9)idea添加tomcat服务器,需要添加两个tomcat,一个启动提供者项目,一个启动消费者项目

①创建tomcat为启动提供者项目

添加提供者war包依赖

②创建tomcat为消费者提供服务,注意端口冲突问题

添加上需要引入的war包

4.3测试直连项目

(1)启动提供者项目的tomcat,打印dubbo的映射地址,版本、主机地址等信息

(2)启动消费者consumer项目,通过http://localhost:8082/hello访问页面,说明已经调用到注入的提供者provider项目中的方法,是使用的接口调用的方式

5.dubbo直连方式-官方推荐方式

dubbo官方推荐使用的项目结构如下:

1)服务提供者工程:实现接口工程中的业务接口,web工程

2)服务消费者工程:消费服务提供者提供的业务接口,web工程

3)接口工程:业务接口和实体类,java工程

(1)创建服务提供者web工程

创建过程与4.1一致

(2)创建服务消费者web工程

创建过程与4.2一致

(3)创建java接口工程

不勾选create from archetype创建maven java工程

(4)接口工程DubboInteface01中添加业务接口和实体类

SomeService接口

/*** 接口提供*/
public interface SomeService {String sayHello(String msg);User getUserById(Integer id);
}

User实体

public class User {private Integer id;private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}
}

(5)提供者DubboProvider01项目需要在pom.xml中引入DubboInteface01工程

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qingyun</groupId><artifactId>DubbboProvicer01</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--dubbo依赖--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.1</version></dependency><!--spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.16.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.16.RELEASE</version></dependency><!--引入java接口工程--><dependency><groupId>com.qingyun</groupId><artifactId>DubboInterface01</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

(6)提供者DubboProvider01项目实现DubboInteface01中的接口方法

SomeServiceImpl接口实现类

/*** 接口实现类*/
public class SomeServiceImpl implements SomeService {public String sayHello(String msg) {return "hello"+msg;}public User getUserById(Integer id) {User user = new User();user.setId(id);user.setName("张三"+id);return user;}
}

(7)提供者DubboProvider01项目,配置dubbo信息

dubbo-provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!--声明服务提供者名称,保证它的唯一性,它是dubbo内部使用的唯一标识--><dubbo:application name="dubbo-provider"/><!--指定dubbo服务的协议名称和端口号,指定dubbo,默认端口号20880--><dubbo:protocol name="dubbo" port="20880"/><!--暴露服务dubbo:serviceinterface:暴露服务的接口全限定类名ref:引用接口在spring容器中的标识名称register:注册方式,使用直连方式,不适用注册中心,配置为N/A--><dubbo:service interface="com.qingyun.service.SomeService"ref="someServiceImpl" registry="N/A"/><!--把接口实现类添加到spring容器中--><bean id="someServiceImpl" class="com.qingyun.service.impl.SomeServiceImpl"/></beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:dubbo-provider.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

(8)消费者DubboConsumer01项目需要在pom.xml中引入DubboInteface01工程

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qingyun</groupId><artifactId>DubboConsumer01</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--dubbo依赖--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.1</version></dependency><!--spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.16.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.16.RELEASE</version></dependency><!--接口工程--><dependency><groupId>com.qingyun</groupId><artifactId>DubboInterface01</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

(9)消费者DubboConsumer01项目创建视图控制层

使用官方推荐的方式,此时注入的选项里面没有实现类impl类的选项了

SomeController类

/*** 控制层*/
@Controller
public class SomeController {@Autowiredprivate SomeService someService;@RequestMapping(value="hello")public String hello(Model model){String world = someService.sayHello("world");model.addAttribute("hello",world);return "hello";}@RequestMapping(value="userDetail")public String userDetail(Model model,Integer id){User user = someService.getUserById(id);model.addAttribute("user",user);return "userDetail";}}

(10)消费者DubboConsumer01项目添加dubbo配置

dubbo-consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 声明服务消费者名称,保证它的唯一性,它是dubbo内部服务名称的唯一标识--><dubbo:application name="dubbo-consumer"/><!-- 引用远程接口id:远程接口服务的代理对象名称interface:接口的全限定类名url:调用远程接口服务的url地址,协议方式和端口都需要和提供者配置中的一致registry:直连方式,不适用注册中心,N/A--><dubbo:reference id="someService" interface="com.qingyun.service.SomeService"url="dubbo://localhost:20880" registry="N/A"/></beans>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"><!-- 自动扫描包,实现支持注解的IOC --><context:component-scan base-package="com.qingyun.controller" /><!-- Spring MVC不处理静态资源 --><mvc:default-servlet-handler /><!-- 支持mvc注解驱动 --><mvc:annotation-driven /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><!--名称 --><servlet-name>springmvc</servlet-name><!-- Servlet类 --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:springmvc.xml,classpath*:dubbo-consumer.xml</param-value></init-param><!-- 启动顺序,数字越小,启动越早 --><load-on-startup>1</load-on-startup></servlet><!--所有请求都会被springmvc拦截 --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

(11)消费者DubboConsumer01项目添加视图jsp页面

(12)为提供者DubboProvider01项目、消费者DubboConsumer01配置tomcat

配置步骤见4.2(9)

(13)启动这两个tomcat访问系统

hello页面:

userDetail页面:

由于查询结果使用User实体返回,user实体需要序列化,否则会报错

java.lang.IllegalStateException: Serialized class
com.qingyun.model.User must implement java.io.Serializable

DubboInteface01项目中的User实体实现序列化

此时访问正常

Dubbo入门到实战(一)相关推荐

  1. SpringBoot学习之zookeeper、dubbo入门项目实战(七)

    项目结构 dubbo-demo dubbo-api:提供api接口,一般存储实体类和接口服务 dubbo-provider:dubbo生产者提供服务,一般存储接口具体实现 dubbo-customer ...

  2. 一、dubbo入门与实战

    目录 开始 一.什么是dubbo? 二.dubbo的优势 三.springboot与dubbo整合 ①提供者相关代码 父类pom文件 提供者pom文件 整个项目结构 application.yml配置 ...

  3. Dubbo 一篇文章就够了:从入门到实战

    一 为什么需要 dubbo 很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知 ...

  4. 开放下载 | 和 4000+Java 开发者共读《Spring Cloud Alibaba 从入门到实战》

    Spring Cloud Alibaba 脱胎于阿里中间件团队内部,经受了阿里多年海量业务场景的考验,是目前最成熟.功能最丰富也最有前景的 Spring Cloud 实现.相信在未来 Spring C ...

  5. docker入门与实战pdf_Docker-Kubernetes-k8s微服务实战视频教程+Docker技术入门精讲课程资料分享...

    一.简介 1)Docker Docker是Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源 ...

  6. 开发工具篇第三讲:Maven从入门到实战

    本文是开发工具篇第三讲:maven 从入门到实战 文章目录 1.什么是maven? 2.Maven能为我们解决什么问题? 3.说说maven有什么优缺点? 4.什么是Maven的坐标? 5.讲一下ma ...

  7. 【技术手册】Java 开发者必备手册《Spring Cloud Alibaba 从入门到实战》

    Java 开发者必备手册<Spring Cloud Alibaba 从入门到实战> 简介 大咖寄语 目录 精彩导读 基础知识篇 分布式配置 服务注册与发现 分布式服务调用 服务熔断和限流 ...

  8. dubbo入门--Hello World

    Dubbo入门--Hello World 转载自:http://blog.csdn.net/hanmov/article/details/66973957?locationNum=2&fps= ...

  9. 《Go语言从入门到实战》学习笔记(1)——Go语言学习路线图、简介

    非常有幸在<极客时间>上看到<Go语言从入门到实战>这门课程,本课程的作者给出了较为详细的学习路线图,具体如下: 学习路线图  学习目的 个人学习的目的主要是了解Go语言的基本 ...

最新文章

  1. python与建筑设计_建筑学是学c语言好还是Python好?
  2. JavaScript四(DOM编程)
  3. 什么是指利用计算机和现代,现代计算机一般指什么计算机?
  4. get请求,参数值为json字符串如何传值
  5. linux sata raid,linux – 两个SIL RAID卡的SATA驱动器问题
  6. 2学习率调整_Keras的Adam优化器参数理解及自适应学习率
  7. Linux字符集的修改方法
  8. spring - ioc和aop
  9. 群晖 半洗白_群晖6.17/6.21二合一引导启动系统盘
  10. c语言简单计算器减编程,C语言实现简单的计算器(加、减、乘、除)
  11. NeoKylin7配置DM8数据库实例
  12. 使用python读取官方节假日文件,获取放假日期
  13. 字符串统计(2017)
  14. 计算机仿真稿件没有消息,计算机核心期刊排名和投稿信息(2)
  15. 利用tensorflow训练自己的图片数据集——数据准备
  16. 数据治理:元数据及元数据管理策略、方法和技术
  17. 戴尔服务器找不到网卡驱动终极解决办法
  18. Fixturlaser对中仪维修GO/NXA Pro系列
  19. 曹操煮酒论英雄谈龙(转)
  20. 简述造成软件危机的原因

热门文章

  1. 白盒测试——NextDate函数测试(基本路径覆盖法)
  2. 关于樱桃键盘锁定alt键和win键这件事
  3. javad八大基本数据类型
  4. 参禅静坐--虚极静笃--快速恢复脑力体力
  5. mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页
  6. Android中收货地址管理Demo
  7. Django的列表分页
  8. python图像识别依赖包安装和环境配置
  9. C++ 中父类与子类赋值,取地址,引用的理解关系
  10. selenium 如何在已打开的浏览器上直接自动化脚本