嵌入式人工智能应用- 第七章 人脸识别
数贾电子科技
嵌入式人工智能应用人工智能
嵌入式人工智能应用`文章目录嵌入式人工智能应用1人脸识别1.1dlib介绍1.2dlib特点1.3dlib的安装与编译2人脸识别原理2.1ResNet3代码部署3.1安装[CUDAToolkit12.8](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubunt
React Native 性能调试指南
一个前端人
react-nativereactnativereact.jsjavascript
写在前面在开发ReactNative应用时,性能优化是一个至关重要的环节。良好的性能不仅可以提升用户体验,还能减少应用的资源消耗,提高应用的稳定性。本文将详细介绍如何对ReactNative应用进行性能调试和优化,包括性能综述、编译速度优化、列表配置优化、JavaScript加载优化以及Profiling。一、性能综述在开始性能调试之前,了解一些基本概念和工具是非常重要的。以下是一些关键点:FPS
android 基于OpenCV4.8微笑检测自动拍照
mmsx
android作业源码分享androidopencv
一,前言1、基于OpenCV4.8微笑检测自动拍照存储2、左侧有一个预览小框,有人脸时候会有红色框框。3、当真人入境时候,微笑。相机预览捕捉到了人的微笑,自动拍照保存。opencv库的编译就不说了。这篇有介绍:androidopencv导入进行编译_编译androidopencv-CSDN博客二、加载人脸特征和微笑特征文件faceCascade=loadCascade(R.raw.haarcasc
图像识别技术与应用
超帅的好吧
笔记
第一节课这节课了解了这门专业的就业职位:工资是怎么样的岗位职责和任职要求看到了人类工业文明的演变了解了人工智能的研究、开发、模拟、延伸、理论、方法和技术看到了生活方式的转变比如智能语音闹钟控制系统、自动驾驶和人脸识别考勤智能购物、医疗日常生活的智能比如指纹、淘宝、抖音还能用软件看到天气的好坏了解了典型训练和机器学习中的关键组件机器学习中的关键组件包含:数据模型目标函数优化算法这节课学习了第一节剩下
Pytorch实现之利用普通GAN的人脸修复
这张生成的图像能检测吗
优质GAN模型训练自己的数据集GAN系列pytorch生成对抗网络人工智能神经网络深度学习计算机视觉python
简介简介:利用遮挡真实样本的部分面貌,输入给生成器,让生成器输出未被遮挡的面貌,以达到修复人脸的效果。论文题目:FACERESTORATIONVIAGENERATIVEADVERSARIALNETWORKS(基于生成对抗网络的人脸恢复)会议:2023ThirdInternationalConferenceonSecureCyberComputingandCommunication(ICSCCC)摘
美颜sdk在实时音视频中的技术应用
Face Beauty美颜SDK
实时音视频美颜sdk视频特效美颜实时音视频
前言:FaceBeauty美颜SDK是由前相芯科技员工组建创办的新晋美颜厂商品牌,致力于为用户提供更真实自然的美颜效果,以极致性价比,降低高性能美颜的使用门槛。美颜SDK在实时音视频中的应用,通过集成图像处理算法与人工智能技术,实现了对视频流的实时美化处理,显著提升了用户体验。以下从技术模块、性能优化、应用场景及挑战等角度进行详细分析:一、核心技术模块与应用1.人脸检测与特征点定位美颜SDK通过深
Faster R-CNN原理详解以及Pytorch实现模型训练与推理
阿_旭
深度学习实战cnnpytorch人工智能FasterRCNN
《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【YOLOv8多目标识别与自动标注软件开发】8.【基于深度学习的行人跌倒检测系统】9.【基于深度学习的PCB板缺陷检测系统
Bug:QT不能生成可执行文件
lkasi
bug
问题描述:为了生成可执行文件,将项目以release方式进行构建,并且在.pro文件中加入TEMPLATE=app#这生成一个exeQMAKE_LFLAGS+=-no-pie并且执行runqmake,生成的仍是sharedlibrary!!!解决方法:将下面代码放在.pro靠下的位置,并且再次执行runqmake,再构建就成功了TEMPLATE=app#这生成一个exeQMAKE_LFLAGS+=
C++随机数
宁玉AC
c学习c++开发语言
目录一、名著参考二、详解1.rand()函数2.time(0)3.srand(time(0))4.获取指定范围内的随机数(含指定位数)一、名著参考可以使用cstdlib头文件中的rand()函数来获得随机整数;这个函数返回0~RAND_MAX之间的随机整数;rand()函数生成的是伪随机数。即每次在同一个系统上执行这个函数的时候,rand()函数生成同一序列的数。rand()函数的算法使用一个叫种
人脸识别,dlib优化,Dlib/OpenCV交叉编译
yiyayiya557
linux嵌入式
参考文章:GitRepo镜像使用帮助https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/交叉编译Dlib+OpenCV交叉编译移植到ARM64-v8平台(编译不通过,不可用)https://blog.csdn.net/kaychangeek/article/details/80365320Qt移植到ARM64-v8平台(NXPi.MX8M)笔记(未
C++开源库大全
大王算法
C/C++开发实战365C++入门及项目实战宝典c++开源
程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++StandardLibrary:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
人脸属性分析:年龄估计_(7).数据集构建与标注
zhubeibei168
人脸识别系统架构人工智能机器学习人脸识别计算机视觉
数据集构建与标注在人脸属性分析中,数据集的构建与标注是至关重要的一步。高质量的数据集能够显著提升模型的性能和泛化能力。本节将详细介绍如何构建和标注用于年龄估计的数据集,包括数据收集、预处理、标注工具的选择以及标注标准的设定。数据收集数据收集是构建数据集的第一步。为了确保模型能够学习到不同年龄、种族、性别等因素的特征,需要从多个来源收集数据。常见的数据来源包括:1.公开数据集公开数据集是数据收集的便
【基于手势识别的音量控制系统】
合肥玉安人工智能工作室
PythonOpenCVpythonmediapipe手势手势控制音量
基于手势识别的音量控制系统github项目效果这是一个结合了计算机视觉和系统控制的实用项目,通过识别手势来实现音量的无接触控制,同时考虑到了用户隐私,加入了实时人脸遮罩功能。核心功能实现1.手势识别与音量映射系统使用MediaPipe框架进行手部关键点检测,通过计算大拇指和食指之间的距离来控制音量:def_process_landmarks(self,hand_landmarks):#获取手指关键
“面面俱到”!人脸活体检测让应用告别假面攻击
harmonyos
随着人脸识别技术在金融、医疗等多个领域的加速落地,网络安全、信息泄露等问题愈为突出,用户对应用稳定性和安全性的要求也更为严格。HarmonyOSSDK场景化视觉服务(VisionKit)提供人脸动作活体检测能力,增强对于非活体攻击的防御能力和活体通过率。在投资理财、在线支付等高风险金融服务场景中,通过检测用户的组合动作等来验证用户为真实活体操作,抵御攻击,提高安全性,降低业务风险,全方位保障用户体
提高客户体验:人类计算在营销中的应用
AI天才研究院
ChatGPTAI大模型企业级应用开发实战DeepSeekR1&大数据AI人工智能大模型大厂Offer收割机面试题简历程序员读书硅基计算碳基计算认知计算生物计算深度学习神经网络大数据AIGCAGILLMJavaPython架构设计Agent程序员实现财富自由
人类计算与营销:开启个性化时代的未来人类计算与营销:开启个性化时代的未来关键词:人工智能、个性化营销、客户体验、数据驱动、客户关系管理摘要:本文探讨了人类计算在营销中的应用,包括语音识别、人脸识别、自然语言处理等技术,以及如何通过这些技术实现个性化营销、客户关系管理和用户体验优化。文章分析了当前技术的发展趋势和面临的挑战,并提出了未来发展的方向。引言随着人工智能技术的飞速发展,人类计算在各个领域中
眼见不一定为实,孙悟空教你AI换脸换声的技术原理及如何用火眼金睛识别新型诈骗
非知名人士
人工智能
话说俺老孙自从大闹天宫归来,闲来无事,忽闻人间兴起一门奇术——所谓“换脸换声”。听说那乃现代科学家利用人工智能之奥秘,将人脸、声音通通变换得跟戏法似的,让人真假难辨。俺老孙心生好奇,便跃上筋斗云,直奔这科技之都,打算探个究竟。今就由俺老孙来给你们摆一摆,这换脸换声究竟是咋回事,就像俺大闹天宫时施展变化,变化无穷,妙趣横生!话说那日俺老孙正在花果山上闲逛,忽然听见猪八戒捧着一部闪闪发光的“小机灵”—
全网最简单实用Android平板USB摄像头开发,同时预览多个摄像头,双目摄像头,同时打开手机前后摄像头(红外摄像头、人脸识别、活体检测、Android Camer
云启软件
Android原生笔记
老规矩,先视频8月20日背景:多摄像头有很多实现方案,手机上能实现跑通,但是Android平板USB的找了好久才实现,需要低版本API,废话不多说直接代码:工具类importandroid.graphics.SurfaceTexture;importandroid.hardware.Camera;importandroid.view.TextureView;importjava.io.IOExce
深度解析SSD2351核心板:硬核视频处理+工业级可靠性设计
明远智睿嵌入式方案商
arm开发嵌入式硬件人工智能机器人
明远智睿SSD2351核心板基于SigmaStarSSD2351芯片打造,专为高可靠性工业场景设计,其硬件配置与接口能力充分满足复杂环境下的多模态数据处理需求。芯片技术细节:视频处理能力:IVE引擎支持高斯滤波、膨胀/腐蚀等图像预处理;IPU支持人脸识别、运动检测及Transformer网络推理;显示接口支持MIPIDSI2560x1600@60fps,适配工业HMI大屏。音频处理:3通道ADC(
Centos8部署mongodb报错记录
知本知至
MongoDBmongommsagentMongoDBops
使用mongoops安装mongodb6.0.4副本集报错errorwhileloadingsharedlibraries:libnetsnmpmibs.so.35:cannotopensharedobjectfile:Nosuchfileordirectory解决yuminstallnet-snmpnet-snmp-devel-y建议:初始化系统时把官网上的依赖包都装一遍即yuminstall-
libevent交叉编译
qsqya
c++
libevent交叉编译正常编译解压tarzxvflibevent-2.0.10-stable.tar.gz进入目录cdlibevent-2.0.10-stable设置安装路径./configure--prefix=/usr编译make安装makeinstall坑:默认是安装到/usr/local下的,程序执行时找不到包,可在CmakeLists.txt中修改三方包的路径交叉编译解压tarzxvf
深度学习篇---Opencv中的机器学习和深度学习
Ronin-Lotus
深度学习篇图像处理篇深度学习opencv机器学习python
文章目录前言一、OpenCV中的机器学习1.概述2.使用步骤步骤1:准备数据步骤2:创建模型步骤3:训练模型步骤4:预测3.优点简单易用轻量级实时性4.缺点特征依赖性能有限二、OpenCV中的深度学习1.概述图像分类(如ResNet、MobileNet)目标检测(如YOLO、SSD)语义分割(如DeepLab)人脸检测(如OpenFace)2.使用步骤步骤1:加载模型步骤2:准备输入数据步骤3:推
Oracle SQL查询速度优化leading和use_nl
David+Zhao
数据库
今天写了一个SQL,表数据太大,表索引也加了,可和另一张表关联一起查一个月的数据总是很慢,大约要60多秒。优化后只用了0.07秒,记录一下防止以后忘记了。select/*+leading(t)use_nl(t,d)*/t.a,t.b,t.c,d.a,d.b,d.cfromtableat,tablebdwheret.id=d.idandt.aisnotnullandt.bisnotnullandt.
Triplet Loss原理及 Python实现
AIGC_ZY
DiffusionModelspython深度学习机器学习
Tripletloss最初是谷歌在FaceNet:AUnifiedEmbeddingforFaceRecognitionandClustering论文中提出的,可以学到较好的人脸的embeddingTripletLoss是一种用于训练特征嵌入(featureembedding)的损失函数,广泛应用于人脸识别、图像检索等需要度量相似性的任务。其核心思想是通过学习将同类样本的嵌入距离拉近,不同类样本的
RV1126笔记六:人脸识别方案<四>
殷忆枫
RV1126项目实战人工智能
若该文为原创文章,转载请注明原文出处。一、介绍人脸识别方案设计逻辑流程图,方案代码分为分为三个业务流程,主体代码负责抓取、合成图像,算法代码负责人脸识别功能。通过摄像头实时采集数据,识别人脸,并提取人脸特征,把特征值和数据库对比后,把名字合合到图像上,通过自带的RTSP库推流,在PC端播放。二、流程图说明:程序初始化后,创建了三个线程:线程一、循环获取VI数据,实时检测人脸,识别人脸,提取特征值,
使用 Dlib 库进行人脸检测和人脸识别
萧鼎
python基础到进阶教程计算机视觉人工智能python人脸识别人脸检测
使用Dlib库进行人脸检测和人脸识别什么是Dlib?Dlib是一个广泛使用的C++库,提供了多种用于机器学习和计算机视觉的工具。它包含了人脸检测、人脸识别、物体检测、图像处理等功能。Dlib具有高效、易用的Python接口,因此它也被广泛应用于Python中进行深度学习和计算机视觉任务。安装Dlib首先,我们需要在Python环境中安装Dlib库。你可以通过pip进行安装:pipinstalldl
介绍常见的图片分类模型与算法
萧鼎
python基础到进阶教程算法分类数据挖掘
介绍常见的图片分类模型与算法在机器学习和深度学习的领域中,图片分类任务是一个广泛的应用场景。随着深度学习技术的飞速发展,很多强大的图像分类算法和模型已经被提出,广泛应用于从医疗影像到自动驾驶、从人脸识别到图像检索等多个领域。本文将重点介绍多种用于图像分类的经典算法与模型,帮助你了解在图像分类任务中常用的技术。1.传统机器学习模型在深度学习崭露头角之前,传统的机器学习模型是图像分类的主流方法。这些模
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