- JAVA架构师需要掌握的常用架构模式有哪些?
猿享天开
Java开发从入门到精通java架构开发语言
引言Java架构师必须掌握常用技术组合及其选型逻辑。技术组合的选择直接影响系统的可扩展性、性能和维护成本。以下是当前主流技术组合、选型原则及常用架构应用的详细说明:一、当前主流技术组合及其应用场景1.基础开发框架技术组合应用场景核心优势SpringBoot+MyBatis+MySQL中小型单体应用、快速迭代业务开发效率高、ORM轻量、数据库兼容性强SpringBoot+JPA+PostgreSQL
- 报错:playwright._impl._api_types.Error It looks like you are using Playwright Sync API insi
m0_74824123
python前端服务器
问题描述在正常使用playwright串行接口时报错:playwright._impl._api_types.Error:ItlookslikeyouareusingPlaywrightSyncAPIinsidetheasyncioloop.PleaseusetheAsyncAPIinstead.我个人是在自己写一个用playwright实现的webagent项目(webarena)相关时,使用脚
- 【JavaScript】异常处理详解
Peter-Lu
#JavaScriptjavascript前端ecmascript
文章目录一、JavaScript异常处理概述1.什么是异常?2.为什么需要异常处理?二、JavaScript中的异常类型1.系统异常示例2.自定义异常示例三、异常处理的基本语法1.try...catch详解2.finally详解四、throw关键字1.手动抛出异常2.自定义异常类型五、异常处理的最佳实践1.避免过度捕获异常2.提供有意义的错误信息3.使用finally释放资源4.避免在finall
- 3.Halcon3D点云滤波-降采样/去除离群点/直通滤波/平滑计算/凸包计算
黄晓魚
halcon3dPCL点云处理深度神经网络3d
对点云进行滤波的主要意义和目的有以下几点:去除噪声和异常值:由于设备本身的误差或环境因素的影响,采集到的点云数据中可能会包含一些噪声和异常值。这些噪声和异常值会影响后续的点云处理和分析,因此需要通过滤波处理加以去除。提高数据质量:滤波处理可以有效地提高点云数据的质量和精度,使得点云数据更加准确和可靠。这对于后续的点云处理和分析具有重要的意义。局部计算与调整:点云滤波主要通过局部计算的方式,获得一个
- 9、《参数校验的艺术:@Validated与Hibernate Validator深度实践》
wolf犭良
SpringBoothibernatejava后端
参数校验的艺术:@Validated与HibernateValidator深度实践一、参数校验的必要性在分布式系统架构中,参数校验是保障系统健壮性的第一道防线。根据生产环境事故统计,约35%的系统异常源于非法参数输入。传统的if-else校验方式存在以下痛点:校验逻辑与业务代码高度耦合重复校验逻辑难以复用错误提示格式不统一代码可读性差维护困难二、校验框架技术选型2.1JSR标准演进JSR版本特性发
- 报错:playwright._impl._api_types.Error: It looks like you are using Playwright Sync API insi
宇航员写代码
python前端服务器
问题描述在正常使用playwright串行接口时报错:playwright._impl._api_types.Error:ItlookslikeyouareusingPlaywrightSyncAPIinsidetheasyncioloop.PleaseusetheAsyncAPIinstead.我个人是在自己写一个用playwright实现的webagent项目(webarena)相关时,使用脚
- halcon opencv C++环境配置 | halcon opencv |C++互转opencv和Halcon图像变量(非常详细)|(msvc2015/17)(143)
虚假程序设计
opencvc++人工智能
这是本人第一次正儿八经非调侃的态度写C相关的东西;VS的C++每次环境不好配置就让人望而却步;而python的优势在于环境几乎只需要pipinstallxxx;C#多数情况下nuget点点点在添加引用就能愉快的玩耍;而pyC#背后竟然是xxx;有一被分层包养的感觉;而C/CPP头文件程序链接文件(动态|静态)动态链接库这都啥??掌握pythonnetctypes咯咯咯嘎嘎嘎%$#@#$%&^*(&
- 结合实际讲NR系列2—— SIB1
写代码写到手抽筋
NR学习实战复盘网络5G
这是在基站抓取的sib1的一条信令L3MessageContentBCCH-DL-SCH-Messagemessagec1systemInformationBlockType1cellSelectionInfoq-RxLevMin:-64q-QualMin:-19cellAccessRelatedInfoplmn-IdentityListPLMN-IdentityInfoplmn-Identity
- 记录一次vue3使用ejs文件配合vite打包的异常
前端
打包后index.html内容异常,显示exportdefault"./assets/index-DxOHZ_2H.html"原因是因为工程项目想要使用ejs,结果配置assetsInclude:['/.ejs','/.html'],解决办法,去掉'*/.html'
- 查询Oracle数据库某一张表的现有索引
爱丽丝和她的巫师帽
数据库sqlmybatis
SELECTi.index_name,i.index_type,c.column_name,c.column_positionFROMuser_ind_columnscJOINuser_indexesiONc.index_name=i.index_nameWHEREc.table_name='table_name';替换table_name为自己表名四个字段分别对应索引名称、索引类型、索引列名称和
- 莫名奇妙的nginx请求偶发400
不像程序员的程序媛
nginx
概览背景:有部分数据状态变更时,需要通过回调地址通知客户内部系统更新数据状态。网络链路如下所示:云平台----->客户nginx前置机(或其他防火墙)---->客户内网nginx---->java应用现象:有些数据回调正常,有少量数据回调异常!客户本地数据无法更新状态,导致查询本地库数据状态错误。拿具体的某个异常id查询相关日志发现以下现象(1)云平台回调客户本地服务,云平台的回调服务日志中显示c
- Ubuntu 上安装和配置 Nexus Repository Manager
java 凯
ubuntulinux运维
在Ubuntu上安装和配置NexusRepositoryManager(SonatypeNexus)通常用于管理Maven、npm、Docker等包的私有仓库。以下是详细步骤:1.系统准备更新系统并安装必要依赖:在终端运行以下命令:sudoaptupdatesudoaptupgrade-ysudoaptinstall-ywgetopenjdk-11-jdkunzip确保安装了Java(Nexus需
- SpringBoot处理全局异常详解(全面详细+Gitee源码)
黄团团
SpringBootSpringJavaspringbootgitee后端javamavenspringmybatis
前言:在日常的开发工作中,项目在运行过程中多多少少是避免不了报错的,对于报错信息肯定不可以把全部信息都抛给客户端去显示,这里就需要我们对常见的七种异常情况统一进行处理,让整个项目更加优雅。目录一、基本介绍二、项目整体结构图三、基础配置3.1、导入pom.xml依赖3.2、application.yml配置四、常用类封装4.1、HttpStatus状态码常量类4.2、AjaxResult统一封装返回
- LVS介绍
治愈*
lvs网络服务器
配置IP地址命令:nmclidevicestatus#查看网卡真实信息nmcliconnectionshow#查看网卡连接信息nmcliconnectionaddtypeethernet\con-name连接名ifname网卡真实名autoconnectyes#添加网卡连接nmcliconnectionmodify连接名\ipv4.method配置方法\ipv4.ip_addressesx.x.x
- STC8H8K64U开发板实现的串口重定向输出,附源代码
夏夜2029
单片机嵌入式硬件
STC8H8K64U开发板实现的串口重定向输出,附源代码/****实现功能:STC8H8K64U芯片的printf重映射*主频:11.0592MHz***/#include"stdio.h"//标准输入输出库#include"stc8h.h"//stc8h库typedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;#def
- null和undefined的区别
一只桃子~
javascript
undefind是全局对象的一个属性,当一个变量没有被赋值或者一个函数没有返回值或者某个对象不存在某个属性却去访问或者函数定义了形参但没有传递实参,这时候都是undefined。undefined通过typeof判断类型是'undefined'。undefined==undefinedundefined===undefined。undefined是全局对象的一个属性,当一个变量没有被赋值或者一个函
- Cocos Creator TypeScript 常用语法
我才不要写BUG
CocosCreatorcocos2d游戏引擎游戏typescript
目录数组相关字符串数字计算枚举Map数组相关编号方法描述1.concat()将两个数组连接起来并返回合并后的结果。2.copyWithin()在数组内复制一个元素序列。3.every()如果数组中的每个元素都满足提供的测试函数,则返回true。4.fill()从指定的开始到结束索引为数组填充静态值。5.indexOf()返回数组中匹配元素的索引,否则返回-1。6.includes()用于检查数组是
- Cocos Creator TypeScript 的vscode 开发教程
m0_65885101
typescriptvscodejavascript
node.js是基于JaveScript,而TypeScript是JaveScript的增强版。所以node.js开发就兼容等于TypeScript开发1.下载node.js并安装这个用于环境断点使用。2.开发工具vscode安装:插件:node.jsCocos使用TypeScript开发。使用protobuf,使用protobufjs,一个纯JavaScript实现的Protobuf库。编写pr
- cocos creator——TypeScript
好事总会发生在下个转弯
CocosCreatortypescript
cocoscreator中的TypeScript中的相关语法以及相关的内容。//LearnTypeScript://-https://docs.cocos.com/creator/manual/en/scripting/typescript.html//LearnAttribute://-https://docs.cocos.com/creator/manual/en/scripting/refe
- 【微信_小游戏_canvas_基础_笔记1】
adminwxs
1024程序员节javascript微信游戏程序
微信_小游戏_canvas_基础_笔记1game.js文件s_1.js文件你好!这是我第一次使用Markdown编辑器所展示的欢迎页。第一次分享学习经历.学习的是joke_shi教学,发表于2017-12,感觉需要修正一些东西就写了此文章https://blog.csdn.net/qq_32514043?type=bloggame.js文件基础导入,不懂的自行搜索用途import'./js/lib
- tp5接入钉钉机器人
tjg888888
TP
第一步:封装钉钉类库在common目录下新建dingding目录,dingding目录里新建DingdingSdk.php文件文件内容如下:namespaceapp\common\dingding;classDingdingSdk{//消息类型public$msgtype=array('text',"link","markdown","actionCard","feedCard");public$
- C++异常处理
饼干帅成渣
c++异常处理
一个问题是程序在执行期间产生了一个例外。C++异常是一个特殊的情况在程序运行时,比如试图除以零而引致的响应结果。异常提供一种方法来从一个程序到另一个程序的一个部分转移控制。C++异常处理建立在三个关键字:try,catch,和throw。throw:程序抛出一个异常在当问题出现时。这是通过使用一个throw关键字。catch:程序捕获异常,并在要处理的问题,程序异常处理程序地方。关键字表示异常的醒
- python 摄像头 异常,opencvpython摄像头读取错误
weixin_39580564
python摄像头异常
我有个错误VIDEOIOERROR:V4L2:PixelformatofincomingimageisunsupportedbyOpenCVUnabletostopthestream:DeviceorresourcebusyVIDEOIOERROR:V4L:can'topencamerabyindex0尝试运行代码时importtimeimportdatetimeimportcv2importbo
- Node.js 多模态图像描述服务 调用siliconflow:现代 JavaScript 实践
老大白菜
vue3/vue2nodejsnode.jsjavascriptubuntu
Node.js多模态图像描述服务:现代JavaScript实践项目背景本项目使用Node.js和TypeScript实现一个高性能的图像描述微服务,展示JavaScript在多模态AI应用中的强大能力。技术栈Node.jsTypeScriptExpress.jsOpenAIAPIdotenvRxJS(可选,用于响应式编程)项目初始化#创建项目目录mkdirimage-description-ser
- Gin框架开发教程及性能优势分析
rockmelodies
gin
第一部分:Gin框架快速入门1.Gin框架简介Gin是用Go语言编写的高性能Web框架,具有以下特点:基于httprouter实现快速路由支持中间件链式调用内置JSON/XML验证和渲染异常处理机制完善代码简洁易扩展2.环境准备#安装Gingoget-ugithub.com/gin-gonic/gin3.创建第一个Gin应用packagemainimport"github.com/gin-goni
- 基于 Tauri + Tokio + Rodio 的 Rust 简易音乐播放器桌面程序
senlizishi
rust
导读:笔者最近跟着RustCourse过了一遍Rust的知识点后写了一个练手项目加深一下理解。项目主要依赖Tauri、Tokio、Rodio库。项目中涉及到了结构体、多线程与Arc/Mutex、异步编程与channel通道、生命周期与所有权等知识点。项目概述一个用Rust编写的简单的桌面音乐播放器应用程序。前端基于Tauri(Vue+Typescript),后端主要使用Tokio(异步库)、Rod
- 面向对象中的原型
码了三年又三年
原型模式
JavaScript中的原型原型的基本概念在JS中,每个对象都有一个内部属性[[prototype]](通过__proto__访问),指向它的原型对象。原型对象也是一个普通对象,它有自己的属性和方法,并且也可以有自己的原型,从而形成原型链。当访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JS会沿着原型链向上查找,直到找到该属性或到达原型链的末端(null)。JS通过原型机制实现了继承,
- webpack学习:配置es6+,react,typescript,eslint
大神乔伊
webpackjavascriptwebpackreact.js
本文内容如下配置es6+,react,typescript,eslint如果你都有了答案,可以忽略本文章,或去webpack学习导图寻找更多答案配置打包ES6+部分浏览器只认识es5的语法,如果要使用es6以上的语法,需要配置注意:在根目录新建.babelrc或者babel.config.js,用于配置es6以上的语法兼容,webpack会自动检测有没有.babelrc文件,如果有则按里面的配置加
- 现代前端工程化实践:高效构建的秘密
程序员小续
前端javascript前端框架ecmascriptvue.js开发语言webpack
一、前端工程化错误监控这种监控可以帮助开发人员及时发现和解决问题,提高应用程序的稳定性和可靠性。1.Sentry:Sentry是一款开源的错误监控平台,可以监控前端、后端以及移动端应用程序中的错误和异常。Sentry提供了实时错误报告、错误分析和错误解决方案等功能。2.Bugsnag:Bugsnag是一款专门用于监控Web应用程序和移动应用程序的错误监控工具。它可以捕获JavaScript异常、网
- C++ 四种强制类型转换
我是纠结伦
c++c++
1.C风格的强制转换C风格的强制转换(TypeCast)容易理解,不管什么类型的转换都可以使用使用下面的方式.TypeNameb=(TypeName)a;2.C++四种强制转换类型函数2.1const_cast1、常量指针被转化成非常量的指针,并且仍然指向原来的对象;2、常量引用被转换成非常量的引用,并且仍然指向原来的对象;3、const_cast一般用于修改指针。如constchar*p形式。c
- 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