对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操作流程,在整个 Rest 架构里面,会存在有大量的微服务的信息。在 SpringCloud 之中使用了大量的 Netflix 的开源项目,而其中 Eureka 就属于 Netflix 提供的发现服务组件,所有的微服务在使用之中全部向 Eureka 之中进行注册,而后客户端直接利用 Eureka 进行服务信息的获得。

Eureka 的主要作用实际上和 ZooKeeper 是非常类似的,但是在 SpringCloud 虽然支持有 ZooKeeper,不过从官方的宣传角度来说并不支持这样处理,推荐使用 Eureka,因为速度更快,同时该服务组件是以程序的形式出现的,也就是说你只需要编写一个程序的项目类,而后就可以启动 Eureka 注册服务了。2.1、定义 Eureka 服务端1、 为了方便进行统一的微服务的管理,建议创建一个新的项目:microcloud-eureka-7001;2、 【microcloud-eureka-7001】的 pom.xml 配置文件,追加相应的依赖支持库<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.4.2.RELEASE</version></dependency>
 3、 【microcloud-eureka-7001】现在修改 application.properties 配置文件,在这个配置文件里面主要进行 eureka 服务的定义。server.port=7001
eureka.instancehostname=localhost
 5、 【microcloud-eureka-7001】修改 Eureka 程序启动类,追加有 Eureka 服务声明的注解@EnableEurekaServer:package cn.study.microcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class Eureka_7001_StartSpringCloudApplication {public static void main(String[] args) {SpringApplication.run(Eureka_7001_StartSpringCloudApplication.class, args);}
}
6、 运行程序后通过浏览器执行路径:http://localhost:7001/
2.2、向 Eureka 中注册部门微服务现在 Eureka 已经可以正常启用了,那么随后就需要在项目之中将所有的微服务信息注册到 Eureka 服务之中,那么这样就可以被客户端执行并且调用了。1、 【microcloud-provider-dept-8001】修改 pom.xml 配置文件,追加有 eureka 的相关依赖支持包;<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
 2、 【microcloud-provider-dept-8001】修改 application.properties配置文件,在这个配置文件之中主要是定义要进行注册的 Eureka 服务的地址,而这个地址就是 Eureka 的客户端配置。application.propertieseureka.client.serviceUrl.defaultZone=http://localhost:7001/eureka
3、 【microcloud-provider-dept-8001】修改项目的运行主类,在这个主类上追加有 Eureka 客户端的启用注解@EnableEurekaClientpackage cn.study.microcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
public class Dept_8001_StartSpringCloudApplication {public static void main(String[] args) {SpringApplication.run(Dept_8001_StartSpringCloudApplication.class, args);}
}此时由于存在有“@EnableEurekaClient”注解信息,所以当服务启动之后该服务会自动注册到Eureka服务器之中;
 4、 【microcloud-provider-dept-8001】修改application.properties配置文件,为此微服务设置一个名字(这个名字将作为日后负载均衡)application.propertiesspring.application.name=microcloud-provider-dept
 2.3、Eureka 服务信息现在虽然成功的实现了微服务的 Eureka 注册,但是所表现出来的微服务的信息并不完整,因为给定的地址信息是你的主机名称,而我们现在是一个自定义的路径地址。1、 【microcloud-provider-dept-8001】修改 application.properties 配置文件,追加主机名称的显示:eureka.instance.instance-id=dept-8001.com重新访问eureka注册中心可以看到服务名称变了

2、 【microcloud-provider-dept-8001】在服务信息查看的时候应该以 IP 地址作为连接项。eureka.instance.prefer-ip-address=true

3、 【microcloud-provider-dept-8001】如果现在要想查看所有的微服务详细信息,则需要修改 pom.xml 文件,追加监控配置:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>microcloud/pom.xml<dependency>    <!-- SpringCloud离不开SpringBoot,所以必须要配置此依赖包 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.12.RELEASE</version><type>pom</type><scope>import</scope></dependency>
 4、 【microcloud】修改 pom.xml 文件,追加一个信息匹配的插件:<resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><delimiters><delimiter>$</delimiter></delimiters></configuration></plugin>
 5、 【microcloud-provider-dept-8001】修改 application.properties 配置文件,追加 info 的相关信息:info.app.name=study-microcloud
info.company.name=www.study.cn
info.pom.artifactId=$project.artifactId$
info.pom.version=$project.version$http://10.40.8.144:8001/info{"pom":{"version":"0.0.1","artifactId":"microcloud-provider-dept-8001"},
"app":{"name":"study-microcloud"},"company":{"name":"www.study.cn"}}
 2.4、Eureka 发现管理在实际的项目运行过程之中需要通过 Eureka 作为所有微服务的监控处理程序,但是对于监控程序那么就必然要面临以下问题:· 新服务追加的时候应该立刻可以进行注册;· 当某一个服务下线之后应该可以进行清理;1、 【microcloud-eureka-7001】设置服务的清理间隔,修改 application.properties 配置文件spring.application.name=microcloud-eureka-7001
eureka.server.evictionIntervalTimerInMs=60000
eureka.client.serviceUrl.defaultZone=http://localhost:7001/eureka
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.instance.hostname=localhost一旦配置了清理的间隔为 1 秒的时间,则会在每秒的时候进行一次服务的清理过程一般情况下,该配置不建议进行修改,默认就是 60 秒,也就是说你的微服务如果 60 秒没有心跳了,那么就认为可以清理掉。
 2、 【microcloud-eureka-7001】在 Eureka 里面有一个问题,这个问题就是它默认支持有保护模式的概念,所谓的保护模式指的是 即便现在某一个微服务不可用了,eureka 不会清理,依然会进行该微服务信息的保存。如果现在要想去改变这种保护模式的启用,则可以修改 application.properties 配置文件:application.propertieseureka.server.enableSelfPreservation=true理论上只有关闭了保护模式之后才可以进行无效微服务的清理操作,但是很多时候 Eureka 里面也会自带有清除过程。
 3、 【microcloud-provider-dept-8001】微服务客户端之所以可以与 Eureka 之间保持联系,依靠的是心跳机制,也就是说你客户端 可以自己来进行心跳的配置处理,修改 application.properties 配置文件:eureka.instance.leaseRenewalIntervalInSeconds=2
eureka.instance.leaseExpirationDurationInSeconds=5由于所有的服务都注册到了 Eureka 之中,这样如果配置了“lease-expiration-duration-in-seconds”
此选项,表示距 离上一次发送心跳之后等待下一次发送心跳的间隔时间,如果超过了此间隔时间,则认为该
微服务已经宕机了。
 4、 【microcloud-provider-dept-8001】现在对于注册到 Eureka 上的微服务端也可以通过发现服务来进行一些服务信息的获取,修改 DeptRest 程序类,追加一个控制调用方法:package cn.study.microcloud.rest;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import cn.study.microcloud.service.IDeptService;
import cn.study.vo.Dept;@RestController
public class DeptRest { @Resourceprivate IDeptService deptService ;@Resourceprivate DiscoveryClient client ;    // 进行Eureka的发现服务@RequestMapping("/dept/discover")public Object discover() {    // 直接返回发现服务信息return this.client ;}@RequestMapping("/dept/sessionId")public Object id(HttpServletRequest request) {return request.getSession().getId() ;} @RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)public Object get(@PathVariable("id") long id) {return this.deptService.get(id) ;}@RequestMapping(value="/dept/add",method=RequestMethod.GET)public Object add(@RequestBody Dept dept) {return this.deptService.add(dept) ;}@RequestMapping(value="/dept/list",method=RequestMethod.GET)public Object list() {return this.deptService.list() ;}
}
5、 【microcloud-provider-dept-8001】在主程序之中加上注解@EnableDiscoveryClient启用 Eureka 发现服务项:package cn.study.microcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class Dept_8001_StartSpringCloudApplication {public static void main(String[] args) {SpringApplication.run(Dept_8001_StartSpringCloudApplication.class, args);}
}
 6、 输入访问地址:http://localhost:8001/dept/discover{"services":[],
"localServiceInstance":
{"host":"10.40.8.144","port":8001,
"serviceId":"microcloud-provider-dept",
"metadata":{},
"uri":"http://10.40.8.144:8001",
"secure":false}
}
 2.5、Eureka 安全配置现在已经成功的实现了一个 Eureka 的服务启动以及微服务的注册配置操作,但是现在的程序有一个问题,
你自己公司的 Eureka 服务应该可以注册的服务只能够是满足于认证要求的微服务,所以这样一来在之前所
进行的 Eureka 里面配置缺少关键性的一步: 安全认证,所以应该为 Eureka 配置上安全认证处理。1、 【microcloud-eureka-7001】修改 pom.xml 配置文件,引入 SpringSecurity 的依赖包:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
2、 【microcloud-eureka-7001】一旦我们的项目之中导入了 Security 开发包,则每一次启动微服务的
时候都会自动生成一个密码, 而这个密码由于会改变,所以一般都不使用,所以要修改pplication.properties配置文件,追加密码的配置项:security.basic.enabled=true
security.user.name=edmin
security.user.password=studyjavaeureka.client.serviceUrl.defaultZone=http://edmin:studyjava@localhost:7001/eureka此时访问 eureka 的服务地址为:http://edmin:studyjava@localhost:7001/
 3、 【microcloud-provider-dept-8001】修改 application.properties配置文件,进行授权的注册连接:application.propertieseureka.client.serviceUrl.defaultZone=http://edmin:studyjava@localhost:7001/eureka
2.6、Eureka-HA(高可用) 机制现在已经成功的实现了一个 Eureka 服务器,但是现在属于单节点的服务运行过程,如果说现在单节点
的 Eureka 出现了错误, 导致无法使用,那么对于所有的微服务的架构就将出现整体的瘫痪,就需要
进行 Eureka 集群搭建,同时利用集群可以有效的实现 HA 的处理机制,如果要进行集群的搭建一定要
选择两台或以上的电脑完成,而基本的流程如下:说明:Eureka集群是两两相互注册,当然了传递注册也是可以实现集群的
1、 修改 hosts 配置文件进行多个主机名称的定义:127.0.0.1 eureka-7001.com
127.0.0.1 eureka-7002.com
127.0.0.1 eureka-7003.com
 2、 【 microcloud-eureka-7001 】 为 了 方 便 进 行 Eureka 操 作 , 建 议 将“ microcloud-eureka-7001 ”的进行复制,复制为 “microcloud-eureka-7002”、
“ microcloud-eureka-7003”。
3、 【microcloud-eureka-7001】修改 application.properties 配置文件,这个配置文件主要注意端口号以及 Eureka 服务注册位置;eureka.instance.hostname=eureka1eureka.client.serviceUrl.defaultZone
=http://edmin:studyjava@eureka2:7002/eureka,http://edmin:studyjava@eureka3:7003/eureka
 4、 【microcloud-eureka-7002】修改 application.properties 配置文件:server.port=7002
eureka.instance.hostname=eureka2spring.application.name=microcloud-eureka-7002
eureka.server.evictionIntervalTimerInMs=60000
eureka.client.serviceUrl.defaultZone
=http://edmin:studyjava@eureka1:7001/eureka,http://edmin:studyjava@eureka3:7003/eureka
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false#eureka.server.enableSelfPreservation=truesecurity.basic.enabled=true
security.user.name=edmin
security.user.password=studyjava
 5、 【microcloud-eureka-7003】修改 application.properties 配置文件:
server.port=7003
eureka.instance.hostname=eureka3spring.application.name=microcloud-eureka-7003
eureka.server.evictionIntervalTimerInMs=60000
eureka.client.serviceUrl.defaultZone
=http://edmin:studyjava@eureka1:7001/eureka,http://edmin:studyjava@eureka2:7002/eureka
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false#eureka.server.enableSelfPreservation=truesecurity.basic.enabled=true
security.user.name=edmin
security.user.password=studyjava
 6、 启动所有的 eureka 服务,而后进入到每一个服务的后台去观察运行的副本效果:· 登录 7001 控制台:http://edmin:studyjava@localhost:7001/· 登录 7002 控制台:http://edmin:studyjava@localhost:7002/· 登录 7003 控制台:http://edmin:studyjava@localhost:7003/
eureka.client.serviceUrl.defaultZone配置项的地址,不能使用localhost
要使用eureka1之类的域名,通过host映射到127.0.0.1
在hosts中添加:127.0.0.1  eureka1
127.0.0.1  eureka2
127.0.0.1  eureka3
7、 【microcloud-provider-dept-8001】修改 application.properties 配置文件,进行多台主机注册:eureka.client.serviceUrl.defaultZone=
http://edmin:studyjava@eureka1:7001/eureka,
http://edmin:studyjava@eureka2:7002/eureka,
http://edmin:studyjava@eureka3:7003/eureka
 2.7、Eureka 服务打包部署现在已经成功的实现了 Eureka 编写,但是在实际的运行之中,需要将 Eureka 发布到具体的服务器上进行
执行,而这就需要对 项目进行打包处理,同样在进行打包处理的时候也必须考虑到项目的各种环境:
开发(dev)、测试(beta)、生产(product),那么 下面也将基于这样的方式进行 eureka 项目打包
操作。1、 【microcloud-eureka-server】修改 application.yml 配置文件spring:profiles:active:- dev-7001
---
spring:profiles: dev-7001application: name: microcloud-eureka1
server:port: 7001
security:basic:enabled: true   # 启用安全认证处理user:name: edmin     # 用户名password: studyjava  # 密码
eureka: client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://edmin:studyjava@eureka2.com:7002/eureka,http://edmin:studyjava@eureka3.com:7003/eurekaregister-with-eureka: false    # 当前的微服务不注册到eureka之中fetch-registry: false     # 不通过eureka获取注册信息instance: # eureak实例定义hostname: eureka1.com # 定义Eureka实例所在的主机名称
---
spring:profiles: dev-7002application: name: microcloud-eureka2
server:port: 7002
security: basic:enabled: true   # 启用安全认证处理user:name: edmin     # 用户名password: studyjava  # 密码
eureka: client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://edmin:studyjava@eureka1.com:7001/eureka,http://edmin:studyjava@eureka3.com:7003/eurekaregister-with-eureka: false    # 当前的微服务不注册到eureka之中fetch-registry: false     # 不通过eureka获取注册信息instance: # eureak实例定义hostname: eureka2.com # 定义Eureka实例所在的主机名称
---
spring:profiles: dev-7003application:name: microcloud-eureka3
server:port: 7003
security:basic:enabled: true   # 启用安全认证处理user:name: edmin     # 用户名password: studyjava  # 密码
eureka: client: # 客户端进行Eureka注册的配置service-url:defaultZone: http://edmin:studyjava@eureka1.com:7001/eureka,http://edmin:studyjava@eureka2.com:7002/eurekaregister-with-eureka: false    # 当前的微服务不注册到eureka之中fetch-registry: false     # 不通过eureka获取注册信息instance: # eureak实例定义hostname: eureka3.com # 定义Eureka实例所在的主机名称
pom.xml<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>microcloud-eureka-server</groupId><artifactId>microcloud-eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><thymeleaf-layout-dialect.version>2.3.0</thymeleaf-layout-dialect.version><!-- 布局功能的支持程序 thymeleaf3主程序 layout2以上版本 --><!-- thymeleaf2 layout1 --><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version></properties>  <dependencies><dependency><!-- 引入web模块 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.4.2.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId><version>1.4.2.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency></dependencies><build><finalName>eureka-server</finalName><plugins><plugin>    <!-- 该插件的主要功能是进行项目的打包发布处理 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration>    <!-- 设置程序执行的主类 --><mainClass>cn.study.microcloud.Eureka_StartSpringCloudApplication</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
package cn.study.microcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class Eureka_StartSpringCloudApplication {public static void main(String[] args) {SpringApplication.run(Eureka_StartSpringCloudApplication.class, args);}
}
2、 【microcloud-eureka-server】添加一个打包的处理插件,修改 pom.xml 配置文件:<build><finalName>eureka-server</finalName><plugins><plugin>    <!-- 该插件的主要功能是进行项目的打包发布处理 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration>    <!-- 设置程序执行的主类 --><mainClass>cn.study.microcloud.Eureka_StartSpringCloudApplication</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
 3、 运行 maven:clean install package;随后就可以在项目的目录之中发现生成的“eureka-server.jar”文件。
 4、 采用默认的方式执行 eureka-server.jar,那么此时将运行在 7001 端口上:java -jar eureka-server.jar
 5、 运行其它的两个 profile 配置:· 运行“dev-7002”profile:java -jar eureka-server.jar --spring.profiles.active=dev-7002;· 运行“dev-7003”profile:java -jar eureka-server.jar --spring.profiles.active=dev-7003。

SpringCloud 定义Eureka服务端、Eureka服务信息、Eureka发现管理、Eureka安全配置、Eureka-HA机制、 Eureka服务打包部署相关推荐

  1. 【HMS Core】华为登录后返回错误码 8 、账号服务如何授权、推送服务端获取用户信息异常

    1.[HMS core][游戏登陆][问题描述] 调用华为登录后返回错误码 8 [解决方案] 错误码8的话一般在定义为内部错误(引起该错误码的原因很多),但是一般重试基本可以解决该问题(错误码).如果 ...

  2. 【游戏客户端】如何高效地和服务端交互“领奖信息”

    [游戏客户端]如何高效地和服务端交互"领奖信息"       Hallo大家好~~我是Lampard猿奋,今天在做需求的时候学习到了一种如何高效地交互获奖信息的方法,在这里分享给大 ...

  3. asp.net获取服务端和客户端信息

    为什么80%的码农都做不了架构师?>>>    asp.net获取服务端和客户端信息 获取服务器名:Page.Server.ManchineName 获取用户信息:Page.User ...

  4. 弹弹堂服务器如何修改,弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程...

    弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程 系统centos 7.2 64位 安装宝塔 yum install -y wget && wget -O in ...

  5. java comet_用java实现comet,基于 HTTP长连接的实现,用于从服务端实时发送信息到客户端...

    http://homelink.javaeye.com/blog/293328#comments 参考文档 http://www.ibm.com/developerworks/cn/web/wa-lo ...

  6. 巧用 maxTimeMS 服务端超时,避免承载亿级用户的腾讯云数据库MongoDB服务雪崩

    腾讯云数据库MongoDB作为一款基于开源社区MongoDB版本的文档数据库产品,其承载着公司内外包括微信.看点.QQ音乐在内的亿级用户重量级APP产品.在某些场景的使用过程中,用户在客户端请求超时后 ...

  7. java cxf服务端_webservice概述及cxf在Java开发中应用(二) 简单搭建cxf服务端

    首先我们下载cxf的jar包,我这里下载的是apache-cxf-3.0.4这个版本,目前最新的. Eclipse里面新建一个Java project,在工程中引入需要的jar: 这些包里面包含了je ...

  8. No5.由内存存储改为数据库存储和redis存储(主要是授权服务端的用户信息、客户端信息、客户授权信息;资源端是没有存储的,每次解析token拿到用户信息)

    代码地址与接口看总目录:[学习笔记]记录冷冷-pig项目的学习过程,大概包括Authorization Server.springcloud.Mybatis Plus~~~_清晨敲代码的博客-CSDN ...

  9. 同步syslog日志到服务端

    目录结构 前言 Windows下安装syslog服务端(Syslog Watcher Manager) java同步日志代码块 日志同步测试 前言 系统同步日志到syslog服务器,此文章记录以下内容 ...

  10. 微服务发现组件Eureka:简介以及Eureka服务端开发

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

最新文章

  1. 从特斯拉Autopilot看车载计算平台技术挑战与发展趋势
  2. 解题报告 『生活大爆炸版石头剪刀布(模拟)』
  3. oracle表分析 示例
  4. Exchange 2016部署实施案例篇-01.架构设计篇(上)
  5. rect函数_R函数不会写,quot;抄quot;总会吧!
  6. [转载] C++学习之异常处理详解
  7. 动态规划--总体理解
  8. 125. 如何修改PHP的memory_limit限制
  9. OpenCV-3.4.3图像通道处理
  10. java网上销售外文文献_基于java网上购物论文英文的参考文献欣赏
  11. nEO iMAGING——400K的图像处理软件(应急处理照片的好帮手)
  12. 身份证扫描到一个PDF或图片
  13. mybatis中显示更新数据成功 ,控制台显示成功,数据库数据却没有修改
  14. Windows文件夹用“命令行窗口”打开
  15. PyTorch学习系列教程:构建一个深度学习模型需要哪几步?
  16. 7.Python 文件I/O
  17. MPQ6533驱动程序
  18. 无限网络性能 -- 移动网络优化
  19. 大学中学的档案与计算机管理,中学生学籍档案信息化管理探究.doc
  20. 常见可燃气体爆炸限汇总

热门文章

  1. C语言基础:C语言宏定义(4) - 多文件编译
  2. 解决Ubuntu上的phpMyAdmin 404 错误
  3. Java过滤掉map集合中key或value为空的值
  4. Class.getResource()、ClassLoader.getResource()和this.class.getClassLoader()解析
  5. 如何判断京东达人文章是否下线
  6. TypeError: atlas.getSpriteFrame is not a function
  7. 1 第一次画PCB总结
  8. rgba的兼容性 IE
  9. Linux C一站式学习 第八章第三小节习题一答案
  10. WebIDE,让开发更简单