- RTSP 公开地址
_老码
项目实战物联网音视频html
http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4亲测可用,需等待一段时间,有点卡。苹果提供的测试链接,等待时间更长,也能用。苹果提供的测试源(点播):http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8http://devimages.apple.com/iphone/sam
- The Devops Handbook 读书笔记01
Alice_HappyAlice ^_^
TheDevopsHandbook读书笔记devops
今天看了一下序,了解了一下Devops这本书是干啥的?ThepurposeoftheDevOpsHandbookistogiveyouthetheory,principles,andpracticesyouneedtosuccessfullystartyourDevOpsinitiativeandachieveyourdesiredoutcomes.Devops原则想要做到的事情,就是更快,更低风
- python模块triton安装教程
2401_85863780
1024程序员节tritonwhl
Triton是一个用于高性能计算的开源库,特别适用于深度学习和科学计算。通过预编译的whl文件安装Triton可以简化安装过程,尤其是在编译时可能会遇到依赖问题的情况下。以下是详细的安装步骤:安装前准备:Python环境:确保已经安装了Python,并且Python版本与whl文件兼容。pip:确保已经安装了pip,这是Python的包管理器,用来安装外部库。下载whl文件:从可靠的来源下载适用于
- python模块mediapipe安装教程
2401_85863780
python开发语言mediapipe
安装MediaPipe通过.whl文件的方法与安装其他Python库相似。下面是详细的步骤,指导你如何通过.whl文件安装MediaPipe。1.确认Python和pip已经安装首先,确保你的系统上已经安装了Python和pip。你可以通过打开命令行(对于Windows用户,这可以是CMD或PowerShell;对于macOS和Linux用户,这可以是终端)并运行以下命令来检查:python--v
- 【whl文件】python各版本whl下载地址汇总
2401_85863780
pythonlinux开发语言
whl文件,全称为wheel文件,是Python分发包的一种标准格式。它是预编译的二进制包,包含了Python模块的压缩形式(如.py文件和编译后的.pyd文件)以及这些模块的元数据,通常通过Zip压缩算法进行压缩。whl文件的出现,使得Python包的安装过程变得更为简单和高效,因为它允许用户快速安装Python包及其依赖项,而无需从源代码开始编译。此外,whl文件还具有良好的跨平台兼容性,可以
- 计算机网络面试题库
小孟Java攻城狮
计算机网络面试职场和发展java
HTTP1.0和2.0有什么区别?头部:1.0不支持头部压缩,2.0支持头部压缩()HPACK压缩1.0每个连接都要独立的TCP,2.0引入了stream的概念,解决了队头阻塞二进制头部,2.0使用二进制头部,成为二进制帧,提高传输效率顺序请求响应模型,1.0客户端有主动权,2.0允许服务器向客户端发送资源,而不是客户端明确请求HTTP2.0和3.0有什么区别?2.0基于TCP协议3.0基于QUI
- android 串口通信代码
weixin_44693887
移动开发androidjava开发语言androidstudio
以下是在Android平台上实现串口通信的代码示例。要实现串口通信,需要先创建一个类来处理串口通信。下面是一个名为SerialPortHelper的串口帮助类的示例:importandroid.content.Context;importandroid.os.Handler;importandroid.os.Message;importjava.io.FileDescriptor;importja
- Ubuntu中如何使用pip切换不同的python版本建立虚拟环境
挪威的深林
【Linux】操作命令linux问题python教程pipvirtualenvpython
一.前言最近遇到非常头疼的问题,在ubuntu中运行不同的项目或者downloadgithub的项目时,总是需要不同版本的python,不同版本的pkgs.因此,为不同的项目建立各自的虚拟环境是一个比较方便的事情.对于建立虚拟环境,目前本人所掌握的主要是conda,以及pip,如果使用conda去建立虚拟环境,则需要安装anaconda,或则minianaconda.在安装anaconda后才能够
- golang x509 cannot validate certificate for 192.168.2.2 because it doesn‘t contain any IP SANs
乐观主义现代人
golang服务器网络golang
此问题主要出现在有cert验证的场景中,有两种解决方案:1.修改发出请求的设备的/etc/hosts文件(这种解决方案偏运维思维,能解决问题就行)#按照要求修改/etc/hosts文件,将IP映射成符合规则的serverNameroot@SC-Server:/opt/scenter#cat/etc/hosts127.0.0.1localhost127.0.0.1SC-Server#追加内容192.
- python版本升级
HiSiri~
pythonpython开发语言
python版本升级背景在对centos机器升级Python版本从3.6到3.10后,pip安装出现了一些问题[解决pipisconfiguredwithlocationsthatrequireTLS/SSL问题]操作下载在官方主站找到合适的版本,并下载https://www.python.org/ftp/python/wgethttps://www.python.org/ftp/python/3
- RDF 规范:理解与运用
lly202406
开发语言
RDF规范:理解与运用引言资源描述框架(ResourceDescriptionFramework,RDF)是一种用于描述网络资源的框架,它允许数据以结构化的形式存储和交换。RDF规范在语义网中扮演着至关重要的角色,它为数据提供了语义描述,使得数据能够在不同的系统和应用程序之间进行有效的交换和互操作。本文将详细介绍RDF规范的基本概念、组成元素、应用场景及其重要性。RDF基本概念什么是RDF?RDF
- AJAX 与 ASP:现代 Web 开发的关键技术
csbysj2020
开发语言
AJAX与ASP:现代Web开发的关键技术引言在当今的Web开发领域,AJAX(AsynchronousJavaScriptandXML)和ASP(ActiveServerPages)是两项至关重要的技术。AJAX允许网页在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。而ASP则是一种服务器端脚本环境,用于动态生成交互性网页。本文将深入探讨AJAX和ASP的技术细节、应用场景以及
- jQuery.ajax
weixin_48357623
前端jqueryajax前端
下面是关于FetchAPI、umi-request、jQuery.ajax和axios的对比表格:FetchAPIumi-requestjQuery.ajaxaxios技术基础基于Promise的现代浏览器API基于fetch的封装,提供统一API和请求层治理原生JavaScript中的XMLHttpRequest封装基于Promise的HTTP客户端,封装XMLHttpRequest使用场景适用
- The pandas.np module is deprecated and will be removed from pandas in a future version. Import numpy
lucky多多
解决安装配置等问题
Thepandas.npmoduleisdeprecatedandwillberemovedfrompandasinafutureversion.Importnumpydirectlyinsteadfrompandasimportnp这种原因是因为我还在用frompandasimportnp看来是要升级下了pipinstall--upgradepandas之后根据控制台返回的提示作相应的更改,我这
- ipykernel-4.10.0-py2-none-any.whl文件解析与安装指南
嗹国学长
本文还有配套的精品资源,点击获取简介:PyPI是Python的软件包仓库,本篇将解析一个特定Python包——ipykernel的4.10.0版本。ipykernel是Jupyter项目的核心组件,用于创建和运行交互式Python内核。本指南将介绍其功能、特点和安装过程,并强调其在跨语言支持、异步I/O处理、调试和交互式通信等方面的重要性。用户可通过pip安装该版本,以支持Python2环境中的J
- 架构师面试(二):计算机编程基础
棕生
架构师面试架构师面试协程操作系统epollIOCPsocket编程
问题(该题目考察计算机编程基础,看看大家在学生期间有没有认真上课)下面说法正确的有哪几项?A、协程在创建、切换和销毁时,操作系统都是无法感知的;B、理论上讲,用户应用程序是可以脱离操作系统运行起来的;C、Linux下的epoll是同步IO模型,Windows下的IOCP是异步IO模型;D、在TCP网络编程中,相对于单线程来说,多个线程同时写socket效率是更高的。解析A选项:协程是轻量级的用户级
- cocos creator从零开发虚拟摇杆(04)-摇杆事件触发
cocos
编辑scripts/JoyStick.ts,添加handlers属性。@property([cc.Component.EventHandler])privatehandlers:cc.Component.EventHandler[]=[]privateringNode:cc.Node修改onTouchMove方法,结尾处添加如下代码。constdir=this.dotNode.getPositio
- cocos creator从零开发虚拟摇杆(00)-说明
cocos
软件版本CocosCreator2.4.8,安装参考cocoscreator安装编程语言TypeScript
- [解决ERROR]VScode中运行ipynb文件报错缺少ipykernel
又困又爱睡
vscodejupyter
[解决ERROR]VScode中运行ipynb文件报错缺少ipykernel1.在VScode中添加jupyter插件2.建议大家安装python版本目前不要大于3.93.在环境中安装jupyter的包,同时会帮我们下载好ipykernel的包4.如果你不幸发现自己的pyzmq包已经下载且版本是23.3.1或以上版本导致FailedtostarttheKernel5.结语前言:最近帮大家配置ana
- DHCP协议概述
周周周诶。
通信协议物联网网络协议信息与通信网络服务器嵌入式硬件
目录1.DHCP协议概述1.1什么是DHCP?1.2DHCP适用于哪些设备?2.DHCP协议标准3.DHCP详细工作原理3.1DHCP的DORA过程3.2Wi-Fi设备DHCP过程4.DHCP报文格式解析4.1DHCP报文结构(1)固定字段(2)可变字段5.DHCP服务器IP分配算法5.1DHCP服务器IP分配策略5.2DHCP续约机制6.DHCP调试&故障排查6.1Wireshark抓包分析6.
- geopandas安装报错
好玩hhr
geopandaspython
geopandas安装报错geopandas安装时经常报错,需要手动下载依赖库,实测可用geopandas安装依赖库版本如下:依赖库版本Fiona1.8.13pyproj2.6.0GDAL3.0.4Shapely1.7.01.下载网址:网址:依赖库whl文件下载地址旧网址无法登录,可以在新下载地址找2.activate虚拟环境后,pipinstall.whl文件所在位置(将文件直接拖拽到insta
- 【网络协议】【TCP/IP】精讲TCP/IP四层模型,图解超赞超详细!!!
风云说通信
网络通信协议基础精讲网络通信协议网络协议tcp/ip
目录1.TCP/IP协议是什么?2.TCP/IP分层详解2.1应用层2.2传输层2.3网际互联层2.4网络接口层3.TCP/IP是如何进行数据通信的呢?1.TCP/IP协议是什么?TCP/IP协议是一种网络体系模型的代名词,指的是多种协议的协议簇,即包含TCP、IP、MAC、UDP、HTTP、FTP等多种协议,它是四层网络模型,包含应用层、传输层、网络层、链路物理层,和OSI七层网络模型、五层网络
- 三:网络为什么要分层:OSI模型与TCP/IP模型
W楠
Web协议详解与抓包实战网络tcp/ip网络协议
引言现代网络通信离不开分层模型的支撑,它们为数据传输提供了清晰的结构和接口。常见的网络分层模型有OSI模型和TCP/IP模型,这两者各自为网络协议栈的设计提供了指导。通过网络分层,复杂的网络通信过程被分解成多个独立的层次,每一层专注于完成特定的功能,从而使得网络协议的设计、实现和维护更加高效和灵活。本文将深入探讨网络分层的意义,分析OSI和TCP/IP模型的各层功能,并探究分层模型在网络通信中的重
- Conda添加新的Kernel
_TFboy
condapython开发语言
官方说明:https://ipython.readthedocs.io/en/stable/install/kernel_install.html要向Conda添加一个新的内核(kernel),你可以按照以下步骤进行操作:确保你已经激活了你想要添加内核的Conda环境。运行以下命令激活环境:condaactivateyour_environment_name将“your_environment_n
- cocos creator从零开发简单框架(05)-ViewBase基类
cocos
新建framework/scripts/view/ViewBase.ts,内容如下。主要是用作UI和Panel的基类,有一些基本的属性和方法。exportdefaultclassViewBase{/**资源Bundle名,如果为空加载resources资源*/publicbundleName:string/**资源路径*/publicskinPath:string/**资源实例化后的对象*/pub
- 探索IPykernel:Python交互式计算的核心引擎
解然嫚Keegan
探索IPykernel:Python交互式计算的核心引擎项目地址:https://gitcode.com/gh_mirrors/ip/ipykernel是一个开放源代码项目,它是IPythonNotebook和JupyterNotebook背后的驱动力,使得在Python环境中进行交互式计算成为可能。本文将带你深入了解IPykernel的技术特性、应用及优势,引导你更有效地利用它提升开发效率。项目
- Linux nftables 命令使用详解
linux
简介nftables是iptables、ip6tables、arptables和ebtables的继承者,用于管理Linux中的包过滤和网络地址转换。它提供了一种更现代、更灵活和更有效的方式来配置防火墙,取代了旧的工具。nftables在Linux内核3.13及以上版本中可用,它是nft包的一部分。用于配置nftables的主要命令行工具是nft。基本概念Tables:用于组织规则的容器。每个表可
- 【20天快速掌握Python】day20-手动搭建HTTP服务器
菜鸟进阶站
Python后端开发编程pythonhttp服务器
演示代码: importre importsocket frommultiprocessingimportProcess classWSGIServer(): def__init__(self,server,port,root): self.server=server self.port=port self.root=root self.server_s
- 第一章嵌入式系统概论考点06数字图像
奇偶变不变
计算机三级嵌入式软件计算机视觉图像处理人工智能
第一章常考知识点有:了解嵌入式系统的特点、分类、发展与应用,熟悉嵌入式系统的逻辑组成。了解嵌入式处理芯片的主要类型,熟悉SoC的开发流程,理解IP核的重要意义。熟悉中西文字的编码和数字文本的类型与处理,掌握数字图像的参数、文件格式及其主要应用。理解计算机网络的分类与组成,熟悉IP协议的主要内容,掌握互联网的组成和常用接入技术。题型:在考试中一般情况下会出现在选择题1-3(知识类型为理论型,需多记多
- 第一章嵌入式系统概论考点03嵌入式系统的分类
奇偶变不变
计算机三级嵌入式软件armarm开发
第一章常考知识点有:了解嵌入式系统的特点、分类、发展与应用,熟悉嵌入式系统的逻辑组成。了解嵌入式处理芯片的主要类型,熟悉SoC的开发流程,理解IP核的重要意义。熟悉中西文字的编码和数字文本的类型与处理,掌握数字图像的参数、文件格式及其主要应用。理解计算机网络的分类与组成,熟悉IP协议的主要内容,掌握互联网的组成和常用接入技术。题型:在考试中一般情况下会出现在选择题1-3(知识类型为理论型,需多记多
- 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