-
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
2017-04-08 18:16:57spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、...它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的。本文主要介绍了服务的注册与发现。转载请标明出处:
https://www.fangzhipeng.com/springcloud/2017/06/01/sc01-eureka.html
本文出自方志朋的博客点击获取SpringCloud 、Spring Boot视频
个人博客纯净版:https://www.fangzhipeng.com/springcloud/2017/06/01/sc01-eureka.html
最新Finchley版本请访问:
https://www.fangzhipeng.com/springcloud/2018/08/01/sc-f1-eureka.html
或者
http://blog.csdn.net/forezp/article/details/81040925一、spring cloud简介
spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章:2小时学会springboot。另外对于“微服务架构” 不了解的话,可以通过搜索引擎搜索“微服务架构”了解下。
二、创建服务注册中心
在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。
2.1 首先创建一个maven主工程。
**2.2 然后创建2个model工程:**一个model工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client。
下面以创建server为例子,详细说明创建过程:
右键工程->创建model-> 选择spring initialir 如下图:
下一步->选择cloud discovery->eureka server ,然后一直下一步就行了。创建完后的工程的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.forezp</groupId> <artifactId>eurekaserver</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eurekaserver</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.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> </properties> <dependencies> <!--eureka server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- spring boot test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
2.3 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:
@EnableEurekaServer @SpringBootApplication public class EurekaserverApplication { public static void main(String[] args) { SpringApplication.run(EurekaserverApplication.class, args); } }
**2.4 **eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件application.yml:
server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
2.5 eureka server 是有界面的,启动工程,打开浏览器访问:
http://localhost:8761 ,界面如下:No application available 没有服务被发现 ……_
因为没有注册服务当然不可能有服务被发现了。三、创建一个服务提供者 (eureka client)
当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。
创建过程同server类似,创建完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.forezp</groupId> <artifactId>service-hi</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-hi</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.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> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
通过注解@EnableEurekaClient 表明自己是一个eurekaclient.
@SpringBootApplication @EnableEurekaClient @RestController public class ServiceHiApplication { public static void main(String[] args) { SpringApplication.run(ServiceHiApplication.class, args); } @Value("${server.port}") String port; @RequestMapping("/hi") public String home(@RequestParam String name) { return "hi "+name+",i am from port:" +port; } }
仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8762 spring: application: name: service-hi
需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。
启动工程,打开http://localhost:8761 ,即eureka server 的网址:你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为7862
这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 :
hi forezp,i am from port:8762
源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/chapter1
更多阅读
四、参考资料
springcloud eureka server 官方文档
springcloud eureka client 官方文档
优秀文章推荐:
- 史上最简单的 SpringCloud 教程 | 终章
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
扫码关注公众号有惊喜(转载本站文章请注明作者和出处 方志朋的博客)
-
史上最简单的 SpringCloud 教程 | 终章
2017-04-12 23:14:39本文出自方志朋的博客 错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝。赶快上船吧,老船长带你飞。...转载请标明出处:
http://blog.csdn.net/forezp/article/details/70148833
本文出自方志朋的博客
扫码关注有惊喜(转载本站文章请注明作者和出处 方志朋的博客)
个人博客纯净版https://www.fangzhipeng.com/spring-cloud.html
错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝。赶快上船吧,老船长带你飞。终章不是最后一篇,它是一个汇总,未来还会写很多篇。
我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: miles02@163.com .
码农下载:https://git.oschina.net/forezp/SpringCloudLearning
github下载:https://github.com/forezp/SpringCloudLearning,记得star哦!
欢迎大家访问我的个人博客:https://www.fangzhipeng.com/
点击获取SpringCloud 、Spring Boot视频
《史上最简单的 SpringCloud 教程》系列:
Spring Cloud Alibaba教程
- Spring Cloud Alibaba教程:使用Nacos作为服务注册发现组件
- Spring Cloud Alibaba教程:使用Nacos作为配置中心
- Spring Cloud Alibaba教程:Sentinel的使用
Greenwich版本
- Spring Cloud Consul 之Greenwich版本全攻略
- spring cloud config将配置存储在数据库中
- Spring Cloud Sleuth 之Greenwich版本全攻略
- Spring Boot Admin 2.1.0 全攻略
- 阿里分布式事务框架GTS开源了!
Finchley版本
Spring Cloud Finchley; Spring Boot 2.0.3
-
史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
-
史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
-
史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
-
史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
-
史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本)
-
史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)(Finchley版本)
源码篇:
进阶篇
- Spring Cloud Sleuth超详细实战
- 拜托!面试请不要再问我Spring Cloud底层原理
- 微服务注册中心如何承载大型系统的千万级访问?
- 每秒上万并发下的Spring Cloud参数优化实战
D版本
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
- 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
- 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心
- 史上最简单的SpringCloud教程 | 第十一篇:docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)
- 史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)
- 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)
- 未完。。。
- 还有很多篇。。。
番外篇:
- 如何使用MongoDB+Springboot实现分布式ID?
- 如何在springcloud分布式系统中实现分布式锁?
- 如何用Redlock实现分布式锁
- 如何在IDEA启动多个Spring Boot工程实例
- JWT如何在Spring Cloud微服务系统中在服务相互调时传
怎么支持我?
-
这个系列会持续更新,敬请关注!
-
关注我的公众号,精彩内容不能错过!
扫码关注有惊喜(转载本站文章请注明作者和出处 方志朋的博客)
-
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
2018-07-14 10:04:27转载请标明出处: ... 本文出自方志朋的博客 ...鉴于《史上最简单的Spring Cloud教程》很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为F...转载请标明出处:
http://blog.csdn.net/forezp/article/details/81040925
本文出自方志朋的博客个人博客纯净版:https://www.fangzhipeng.com/springcloud/2018/08/01/sc-f1-eureka.html
一、spring cloud简介
鉴于《史上最简单的Spring Cloud教程》很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。
Finchley版本的官方文档如下:
http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.htmlspring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这篇文章:2小时学会springboot。另外对于“微服务架构” 不了解的话,可以通过搜索引擎搜索“微服务架构”了解下。
二、创建服务注册中心
在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍。
2.1 首先创建一个maven主工程。
首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样。再次说明一下,以后不再重复引入。代码如下:
<?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.forezp</groupId> <artifactId>sc-f-chapter1</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>sc-f-chapter1</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> </parent> <modules> <module>eureka-server</module> <module>service-hi</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
**2.2 然后创建2个model工程:**一个model工程作为服务注册中心,即Eureka Server,另一个作为Eureka Client。
下面以创建server为例子,详细说明创建过程:
右键工程->创建model-> 选择spring initialir 如下图:
下一步->选择cloud discovery->eureka server ,然后一直下一步就行了。
创建完后的工程,其pom.xml继承了父pom文件,并引入spring-cloud-starter-netflix-eureka-server的依赖,代码如下:
<?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.forezp</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.forezp</groupId> <artifactId>sc-f-chapter1</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> </project>
2.3 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run( EurekaServerApplication.class, args ); } }
**2.4 **eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml:
server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring: application: name: eurka-server
通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
2.5 eureka server 是有界面的,启动工程,打开浏览器访问:
http://localhost:8761 ,界面如下:No application available 没有服务被发现 ……_
因为没有注册服务当然不可能有服务被发现了。三、创建一个服务提供者 (eureka client)
当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。
创建过程同server类似,创建完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.forezp</groupId> <artifactId>service-hi</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-hi</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.forezp</groupId> <artifactId>sc-f-chapter1</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
通过注解@EnableEurekaClient 表明自己是一个eurekaclient.
@SpringBootApplication @EnableEurekaClient @RestController public class ServiceHiApplication { public static void main(String[] args) { SpringApplication.run( ServiceHiApplication.class, args ); } @Value("${server.port}") String port; @RequestMapping("/hi") public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) { return "hi " + name + " ,i am from port:" + port; } }
仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:
server: port: 8762 spring: application: name: service-hi eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。
启动工程,打开http://localhost:8761 ,即eureka server 的网址:你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为7862
这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 :
hi forezp,i am from port:8762
源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter1
更多阅读
四、参考资料
http://blog.csdn.net/forezp/article/details/69696915
http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html
扫码关注公众号有惊喜(转载本站文章请注明作者和出处 方志朋的博客)
-
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
2019-10-30 20:17:58于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: ...今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。
于是乎用h5 audio的加上js简单的播放器完工了。
欢迎 改进 留言。
演示地点跳到演示地点html代码如下`<!DOCTYPE html> <html> <head> <title>music</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="music.css"> </head> <body> <div id = love> <audio src="" controls class="music"></audio> <ul class="mlist"> <li class="">这个年纪</li> <li>七月的风</li> <li>音乐</li> </ul> </div> <script type="text/javascript" src="music.js"></script> </body> </html>`
然后就是css`
*{ margin: 0; padding: 0; text-decoration: none; list-style: none; } #love{ position: relative; height: 250px; width: 300px; border: 3px solid black; border-radius: 10%; background-image: url(demo.jpg); background-size: cover; } .play{ color: white; background-color: #87CEFA; margin:0 6px; } #love .mlist{ margin:10px; background-color: rgba(1,1,1,0.5); height: 165px; border-radius: 5px; } #love ul li{ line-height:30px; text-align: center; cursor:pointer; border-radius: 4px; } #love ul li:hover{ line-height:45px; text-align: center; cursor:pointer; margin:0 5px; background-color: #F0F8FF; border-radius:6px; }
`下面就是js了
你的点赞是我最大的动力。。。萌新前进中。- 然后有人说让我写个歌词滚动,额
- 歌词滚动本来想用ajax的,发现了很自己很多不足、
- 附加歌词滚动的链接;https://blog.csdn.net/qq_44210563/article/details/104077613
var musicNode = document.getElementsByClassName('music')[0]; var mlist = document.getElementsByClassName('mlist')[0]; var lis = document.getElementsByTagName('li'); var len = lis.length; var musicsrc =[ ];//这个数组用来放歌单的url。详情可以看我的网页demo musicNode.src = musicsrc[0]; for (var i = 0; i < len; i++) {//单击改变playmusic (function(i){ lis[i].onclick =function(){ musicNode.src = musicsrc[i]; musicNode.load(); musicNode.play(); for (var j= 0; j < len; j++) { lis[j].className = ''; } this.className = 'play'; }})(i); } musicNode.onended =function(){//音乐播放完后自动下一曲 var ended = getPlay(); if (ended == len-1) {//若为最后一曲则放第一曲 musicNode.src = musicsrc[0]; lis[0].className = 'play' lis[ended].className = ''; musicNode.load(); musicNode.play(); }else{ musicNode.src = musicsrc[ended + 1]; lis[ended + 1].className = 'play'; lis[ended].className = ''; musicNode.load(); musicNode.play(); } } function getPlay(){//获取正在播放music的li for (var i = 0; i < len; i++) { if (lis[i].getAttribute('class') == 'play') { return i } } }
-
Win7如何简单的关闭445端口及445端口入侵详解
2017-05-13 11:07:03最近永恒之蓝病毒攻击了很多教育网的同学,下面我们就来看一下如何关闭445端口 根据网络安全机构通报,这是不法分子利用NSA黑客武器库泄漏的“永恒之蓝”发起的病毒攻击事件。“永恒之蓝”会扫描开放445文件共享... -
c语言一些简单的程序
2018-06-17 17:30:51三个数找最大值#include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); int maxs=max(a,max(b,c)); printf("%d"...g... -
JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
2014-04-07 17:36:10在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你... -
python超简单爬虫教程
2020-06-12 17:24:44python超简单爬虫教程python超简单爬虫教程七大步骤:1发送数据请求2请求网站源码3数据筛选4存储数据5数据可视化6数据分析7公司决策 python超简单爬虫教程 大家好!在这里给大家交流一下小编总结得python超简单爬虫... -
简单的python GUI例子,写一个简单的界面
2019-04-16 20:05:25写一个简单的界面很容易,即使是什么都不了解的情况下,这个文本转载了最简单的界面编写,下个文本介绍了TK的简单但具体的应用 在python中创建一个窗口,然后显示出来。 就3行就能够把主窗口显示出来了。root... -
史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
2017-04-10 21:24:15当服务很多时,都需要同时从配置中心读取文件的时候,这时我们可以考虑将配置中心做成一个微服务,并且将其集群化,从而达到高可用,架构图如下:一、准备工作继续使用上一篇文章的工程,创建一个eureka-server工程... -
简单理解token机制
2018-07-17 20:45:47简单理解token机制 人人都是产品经理 百家号17-12-1520:15 在简单理解cookie/session机制这篇文章中,简要阐述了cookie和session的原理。本文将要简单阐述另一个同cookie/session同样重要的技术术语:token。 ... -
简单感悟
2019-03-02 09:34:54保持简单——不要问题复杂化 认真倾听,多提问题 为自己从事的工作保持自豪感 客观看待一切事物 反复沟通 学会有效的辩论——不论输赢,理性沟通 ... -
C语言链表超简单教程
2018-04-05 16:19:22笔者作为一名C语言的初学者,在刚...好吧,即使这篇教程会相对简单,但是在阅读之前,读者还是需要首先简单了解结构体部分和指针部分的内容。好,那我们就开始吧。首先通俗地解释一下:链表是一种特殊的结构体,创建... -
简单工厂模式 简单例子
2018-08-29 21:07:42一、概述 ...简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 -------------来自百度百科 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定... -
大话设计模式(一)简单工厂模式
2015-04-12 16:35:37今天主要设计简单工厂模式即静态工厂设计模式与工厂模式即抽象模式。 其中,简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建 其他类的实例,被创建的实例通常都具有共同的... -
超简单集成Android Zxing实现扫一扫二维码
2016-10-13 10:54:352017-10-20更新 最新版本的请看... ...因为按下文方法集成起来相对麻烦,所以就封了一下,放在github上了,需要的可以直接添加依赖,用起来简单很多。 推荐直接去gi... -
简单说 如何做一个chrome 去广告插件
2017-10-10 08:53:55这次我们先来简单接触一下,了解一点入门知识,先做一个简单的demo,就先去除一下CSDN网页上的广告。 解释 这次做的这个插件真的很简单,不涉及什么加密解密,也不是去拦截特定的网络请求,就是用 -
python爬虫入门教程(二):开始一个简单的爬虫
2017-09-12 15:02:21python爬虫入门教程,介绍编写一个简单爬虫的过程。 -
简单游戏代码_简单游戏
2020-07-20 02:24:17简单游戏代码 Here are a few simple, working, games that you can use as-is or as the basis for your own games. 这里有一些简单,有效的游戏,您可以按原样使用或作为自己游戏的基础。 Tic-Tac-Toe井字游戏 ... -
DataSource数据源简单理解
2018-06-22 11:40:17DataSource数据源简单理解 因为热爱,所以拼搏。 –RuiDer 什么是数据源 JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时 不必编写连接数据库的代码,... -
常用设计模式-简单工厂
2019-05-13 10:34:59在三种工厂模式中,简单工厂模式是最基础的一个。该模式的核心思想是把创建对象过程和对象本身业务处理分离。假设需要创建多个对象,每个对象的创建模式比较复杂,那么我们把这些过程放在逻辑代码中,会使得逻辑代码... -
9.Vue中mounted的简单理解
2019-07-31 16:22:16Vue小白笔记9——mounted的简单理解 -
简单了解第一,二,三范式(图文详细)
2020-06-27 11:37:23简单了解第一,二,三范式什么是范式第一范式第二范式第三范式 什么是范式 范式:范式是符合某一种级别的关系模式的集合,表示一个关系内部属性之间的联系何合理化程度 粗略理解:就是一张数据表的表结构所符合的... -
html简单登录页面代码
2016-12-06 10:18:50简单登录HTML -
c语言写一个简单的小游戏-推箱子
2018-08-04 23:18:08在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力。 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图。 /*************************... -
JAVA设计模式--简单工厂模式
2016-05-18 10:39:23一、什么是简单工厂模式 二、简单工厂模式的结构 三、简单工厂模式的优缺点 一、什么是简单工厂模式 简单工厂模式属于类的创建型模式。提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以... -
简单工厂/工厂方法/抽象工厂
2020-10-25 22:56:141 简单工厂 根据参数由工厂类来创建对象 /** * 简单工厂 * 目的:根据参数获取对象 * 缺点:新增实现类时,需要修改代码,不好动态扩展(可参考工厂方法) */ public class SimpleFactoryDP { public final... -
分位数的简单理解
2017-05-05 15:25:19在统计学里经常提到分位数的概念,下面我们通过一个例子来简单解释一下。假设有一千名学生参加了某次考试, 学生A得了75分,排名603,603/1000=60.3% 学生B得了94分,排名28,28/1000=2.8% 此时,A大约在60.3%的... -
使用Vue.js和Element-UI做一个简单的登录页面
2017-06-22 10:02:50使用Vue.js和Element-UI做一个简单的登录页面 -
c# 简单的串口通信 新手篇
2018-09-26 11:17:10最近自己闲着 自学了C# ,本人不是搞软件的 ,搞嵌入式的 ,经常要用串口调试工具来调试 ,有时候还要处理一些数据但是市面上的不能满足我的要求 ,正好一个项目需要学习C#,借此机会来开发一个串口 ,说不定对我也...
-
1.Django流程
-
转行做IT-第7章 数组
-
电动汽车无线充电松耦合变压器仿真研究
-
基于电光采样的超快脉冲波形参数实验研究
-
高效率永磁同步电机及其在车载空调中的应用研究
-
【评测】ELISPOT技术到底有哪些优势?
-
轻气炮加载下蓝宝石的辐射光谱特性
-
转行做IT-第10章 常用类-String、static、Array等
-
荒漠背景下典型伪装目标的高光谱偏振特性
-
基于层次遗传算法的人力资源供应链平台研究
-
UnitySocket异步聊天室
-
计算机网络地址 菜鸟教程
-
UE4游戏逆向与安全+FPS游戏逆向与安全
-
基于本振数字延时的合成孔径激光雷达信号相干性保持方法
-
机器学习知识总结——模型评估标准之混淆矩阵
-
硅基光电子集成光控相控阵的研究进展
-
[转载] python3 numpy函数_Python numpy总结(3)——常用函数用法
-
软件的完整开发流程
-
一种基于示波器的时域EMI测量技术
-
各种乱七八糟工具使用的学习笔记