- maven根据不同的环境打包不同的配置文件
诺浅
其他maven多环境配置
缘起我们在做项目的时候经常会遇到有多个环境每个环境的配置不一样的问题,比如我们的生产环境的数据库和测试环境的数据库肯定不会一样,我们每次在本机测试的时候可能配置的URL是测试环境的,要打生产war包的时候又需要把配置改成生产的,来回很容易出错,那么有没有什么简单的办法呢?有的,首先需要你的项目中有使用maven.使用maven插件打包不同的配置文件首先我们需要在pom.xml进行如下配置定义不同的
- Mybatis框架
蓝眸少年CY
#SSM框架mybatis
目录一、三层架构二、使用JDBC的缺陷三、快速入门1、概述2、解决的主要问题3、入门案例添加Maven坐标加入Maven插件编写Student实体类编写Dao接口StudentDao编写Dao接口Mapper映射文件StudentDao.xml创建MyBatis主配置文件创建测试类MyBatisTest配置日志功能insert操作(1)StudentDao接口中增加方法(2)StudentDao.
- maven工程使用sonar
tommyhxh
maven项目配置maven的setting.xml文件Maven插件会自动把所需数据(如单元测试结果、静态检测结果等)上传到Sonar服务器上,Sonar的配置并不在每个工程的pom.xml文件里,而是在Maven的配置文件settings.xml里。在标签添加:sonartruejdbc:mysql://10.16.8.96:3306/sonar?useUnicode=true&cha
- Spring Boot应用部署 - JAR包部署
闫小甲
SpringBootspringboot
SpringBoot应用部署采用打包成JAR文件的方式,旨在利用其内置的嵌入式Tomcat或其他Servlet容器,简化传统Web应用部署流程。以下是详细的步骤和说明:1.使用Maven或Gradle进行打包Maven在SpringBoot项目中,确保pom.xml文件已经包含了SpringBootMaven插件。如果未添加,需添加如下配置:org.springframework.bootspri
- SpringBoot 项目 pom.xml 中 设置 Docker Maven 插件
青灯文案
微服务架构springbootxmldocker
在SpringBoot项目中,使用DockerMaven插件(通常是docker-maven-plugin或者fabric8io/docker-maven-plugin)来自动化构建Docker镜像并将其推送到远程仓库。这里分别介绍这两种插件的基本配置,并说明如何设置远程仓库推送。1、使用docker-maven-plugindocker-maven-plugin插件实际上是由spotify提供的
- 运行Maven插件的命令提示插件版本在仓库中找不到
KwokRoot
JavaMavenmavenjava
例:运行mvndependency:copy-dependencies-DoutputDirectory=lib命令出现异常:[WARNING]ThePOMfororg.apache.maven.plugins:maven-dependency-plugin:jar:3.1.2ismissing,nodependencyinformationavailable[WARNING]Failedtore
- Spring-Boot入门(雷丰阳)
baidu_34298344
SpringBootspringbootjavaspring
spring启动原理分析一、spring-Boot启动依赖1、pom文件分析1️⃣maven插件2️⃣Spring-Boot父项目3️⃣spring-boot-starter启动器2、主程序类,主入口类3、使用SpringInitializer快速创建SpringBoot项目二、spring-Boot配置文件1、配置文件2、YAML语法:1️⃣基本语法2️⃣值的写法字面量:普通的值(数字,字符串,
- Servlet JSP-Eclipse安装配置Maven插件
Damon小智
Javajavaeclipsemavenjarjava-eespringservlet
Maven是一款比较常用的Java开发拓展包,它相当于一个全自动jar包管理器,会导入用户开发时需要使用的相应jar包。使用Maven开发Java程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在Eclipse里安装和配置Maven插件。一、Maven核心功能介绍Maven是一个强大的项目管理和构建工具,旨在简化Java项目的构建、依赖管理和部署过程。它提供了一种结构化的方式来组织项
- springboot-使用assembly进行项目打包
沉沦2014
springboot-maven插件springboot-maven插件repackage目标声明RequiresaMavenprojecttobeexecuted.Requiresdependencyresolutionofartifactsinscope:compile+runtime.Sinceversion:1.1.Bindsbydefaulttothelifecyclephase:pac
- 解决IDEA使用maven插件时乱码
小迷糊紫靈
问题复现:在IDEA使用maven时,经常会出现乱码的情况,如下图:乱码图片解决方案如图将maven运行时vm文件编码设置为本地windows默认编码.解决问题.修改参数解决结果正常显示,不存在乱码了解决结果问题原因中文其编码是windows下的本地编码(GBK)在idea整合的maven中使得默认vm的编码是utf-8.所以出现控制台乱码.
- 分布式springboot 3项目集成mybatis官方生成器开发记录
缘友一世
#mybatis分布式springbootmybatis
文章目录说明实现思路实现步骤第一步:创建generator子模块第二步:引入相关maven插件和依赖第三步:编写生成器配置文件第四步:运行·查看结果说明该文章为作者开发学习记录,方便以后复习和交流主要内容为:分布式springboot3项目集成mybatis官方生成器开发记录,创建单独的generator模块进行单表的domain、mapper和mapper.xml的内容生成这里以Mysql8为案
- maven插件maven-jar-plugin构建jar文件详细使用
老码龙
玩转Mavenmavenjarpycharmjavaidedockerjvm
文章目录前言一、使用方式二、常用配置详解1.classesDirectory2.outputDirectory3.excludes4.includes5.archive添加Implementation和Specification属性添加manifestEntries添加键值对属性ManifestSections自定义manifest配置设置一个可执行的jar文件精确设置Classpath根据目录设
- maven java 如何打纯源码zip包
程序男
java基础专题软件工程专题git&mavenjavamavenpycharm
一、背景打纯源码包给第三方进行安全漏洞扫描二、maven插件项目中加入下面的maven插件maven-source-plugin2.4true*.propertiesfreemarker/*.ftlmapper/*.xmlwebapp/*.xmllicense/*.*compilejar三、使用步骤3.1产出源码jar包ideamaven执行cleancompile命令在target目录下找到*-
- Maven依赖一直报错解决办法
xiangduanjava
mavenjava
如果本地仓库已经下载了依赖包,但是使用maven插件打包还是提示无法找到依赖包,可以试试这个方法在本地仓库依赖包位置,删除掉多余的文件,只留下.jar文件和.pom文件就可以了使用命令删除本地maven仓库文件(*.lastUpdated):for/r%iin(*.lastUpdated)dodel%i删除远程仓库文件(_remote.repositories):for/r%iin(*.repos
- Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin
豆豆子i
eclipsemavenjava
问题:Eclipse导入maven项目或者创建maven项目时,报错Couldnotcalculatebuildplan:Plugin1.上述问题大概是项目不能加载此maven插件,在pom文件中添加依赖项org.apache.maven.pluginsmaven-resources-plugin2.62.首先先要排除是不是maven配置文件原因:检查自己maven配置文件是否添加阿里云镜像ali
- 在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插件
老码龙
玩转Mavenlinuxmavenjarapachejava中间件
系列文章目录在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包文章目录系列文章目录在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包前言一、插件需求二、maven自定义插件开发1、准备项目2、打包发布二、在项目中使用插件二、测试结果总结前言在上一节中我们分享了怎么
- (五)ATP应用测试平台常用技术栈案例整合——license-maven-plugin插件实现代码一键式版权信息添加
厉害哥哥吖
ATP应用测试平台#工具maven
前言在项目代码开发中,我们会有需求在代码中标识软件的一些版权信息,或者是申请软件著作权中用到版权信息。本小节作者推介一款maven插件,能够通过maven的打包命令或者插件的命令,轻松实现在我们的源码中植入版权信息。那就是我们的license-maven-plugin插件。本小节的演示项目依然使用我们的ATP应用测试平台。欢迎fork哦。正文pom文件中引入license-maven-plugin
- Spring Boot--03--POM.xml文件说明
知行合一。。。
Spring基础知识--SSMspringbootxml后端
SpringBoot框架高级说明1parent标签的作用2关于maven插件的说明3关于Maven属性的配置4关于Maven依赖说明4.1依赖与本地仓库的关系2).本地仓库内容3).规则说明如果以后下载jar包时,遇到maven依赖异常.则首先查询本地仓库中是否有该jar包的完整版本.如果发现jar包文件下载不完全,则需要删除之后重新下载.4.2jar包与jar包之间的依赖传递性说明1.说明:ma
- maven 继承
Mr-Wanter
【JAVA基础知识】mavenjava
文章目录前言一、dependencyManagement一、dependencies传递规则二、引用顺序统一声明三、maven插件默认行为声明四、动态server.name前言系统整理一下用到的maven继承关系一、dependencyManagement版本控制3.2.1org.springframework.bootspring-boot-dependencies${spring-boot.v
- maven插件构建docker镜像报错Caused by: java.net.SocketException: Connection reset by peer: socket write error
代码人生520
mavnemaven
具体报错如下:Causedby:org.apache.http.client.ClientProtocolExceptionatorg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)atorg.apache.http.impl.client.CloseableHttpClient.e
- idea的maven clean打包无法彻底删除target文件夹问题
weixin_45456834
javamaven
这里写自定义目录标题打包遇到问题废话不多说mvnclean报错,并且手动不能删除target文件夹,显示访问权限问题mvnclean会成功。但是在mvninstall,或者mvnpackage-Dmaven.test.skip=true的时候,会报一个maven插件错误,查询仓库的依赖存在,并且不是残包。后来才发现是因为使用xftp占用tartget文件的问题,将远程的xftp关掉。就OK
- Tomcat在Java web的应用
5-StarrySky
JAVAWEB基础知识javatomcat
Tomcat在Javaweb的应用本来这篇博客顺应之前的内容,应该是需要写Tomcat的简介、基本使用、配置和部署项目、Web的项目结构、创建MavenWeb、idea本地集成以及Tomcat的Maven插件的笔记内容,但是总觉得没必要,因为这些内容网上肯定很多了,而且写这些东西总感觉没啥必要,但是Tomcat做了哪些操作,使得后面开发变得更为简单这件事情,是很必要的,因此基于这一点,我写了这篇博
- Maven:Dmaven.multiModuleProjectDirectory system propery is not set.
dingcho
Javamavenjava
eclipse中使用maven插件的时候,运行runasmavenbuild的时候报错-Dmaven.multiModuleProjectDirectorysystemproperyisnotset.Check$M2_HOMEenvironmentvariableandmvnscriptmatch.直接的解决方法:使用低版本的maven可以设一个环境变量M2_HOME指向你的maven安装目录M2
- docker部署jar包的几种方式
豆浆加糖
javadockerdockerjarjava
docker部署jar包的几种方式前言使用Dockerfile手动打包jar简单打包运行进化:可复用容器究极进化:jdk镜像直接创建可复用容器超究极进化:maven插件打包(不推荐)无聊的进化:maven打包自动推送镜像到指定服务器(不推荐,研发环境随便玩)关于docker容器启动后注册到nacos的ip是docker容器ip问题!总结前言简单记录一下docker打包jar部署的几种方式,避免以后
- 使用Dockerfile为SpringBoot应用构建Docker镜像
Dashesand
springbootdocker后端
使用Dockerfile为SpringBoot应用构建Docker镜像摘要上次写过一篇使用Maven插件为SpringBoot应用构建Docker镜像,讲述了通过docker-maven-plugin来构建docker镜像的方式,此种方式需要依赖自建的Registry镜像仓库。本文将讲述另一种方式,使用Dockerfile来构建docker镜像,此种方式不需要依赖自建的镜像仓库,只需要应用的jar
- 使用IntelliJ IDEA快速搭建springboot 基础模板项目
yrldjsbk
springbootspringbootintellij-ideajava
使用IntelliJIDEA快速搭建springboot基础模板项目!今天和大家分享一下,如何使用IntelliJIDEA里面的maven插件,来快速搭建一个简单的Springboot基础项目。第一步,菜单里面找到,文件-》新建-项目。如图。我们勾选了是maven管理插件包。打包方式选择了,是jar。第二步:下一步,进入插件的勾选,我们选择了,springweb。和前端模板插件(Thymeleaf
- Cursor攻略,吃个螃蟹
天罚神
深度学习springbootjavavscodeidea
Cursor攻略,吃个螃蟹1.1工具下载与安装1.2工具的原理2、Apikey生成与配置2.1生成Apikey2.2设置Apikey3、工具插件多元化使用手册3.1汉化插件3.2SpringBoot、Maven插件(ctrl+shit+x)3.3Git插件(ctrl+shit+x)4、工具功能4.1快捷键4.2ChatGPT提问(ctrl+L)4.3ChatGPT代码分析(ctrl+k)4.4代码
- 在您的Maven项目中使用
咔啡
添加maven插件添加SpringCloudContractBOMorg.springframework.cloudspring-cloud-dependencies${spring-cloud-dependencies.version}pomimport接下来,SpringCloudContractVerifierMaven插件org.springframework.cloudspring-cl
- 使用maven插件启动tomcat服务器
_借东西的小人
有的人启动项目时不希望用自己配置的tomcat启动,而是想用maven自带的插件启动,接下来给大家分享下我用插件启动的过程。在pom.xml中加入下列代码org.apache.tomcat.maventomcat7-maven-plugin2.180/UTF-8tomcat7image.pngimage.png然后访问http://localhost:80即可。image.png
- 【Maven教程】(十五):编写 Maven 插件—— 编写 Maven 插件的一般步骤及案例、Mojo 标注与参数、错误处理和日志 ~
小山code
Maven教程mavenmojojava学习开发语言
Maven·编写Maven插件1️⃣编写Maven插件的一般步骤2️⃣案例:编写一个用于代码行统计的Maven插件3️⃣Mojo标注4️⃣Mojo参数5️⃣错误处理和日志6️⃣测试Maven插件总结前面文章已经讲过,Maven的任何行为都是由插件完成的,包括项目的清理、编译、测试以及打包等操作都有其对应的Maven插件。每个插件拥有一个或者多个目标,用户可以直接从命令行运行这些插件目标,或者选择将
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http