- 自然语言处理_tf-idf
_feivirus_
算法机器学习和数学自然语言处理tf-idf逆文档频率词频
importpandasaspdimportmath1.数据预处理docA="Thecatsatonmyface"docB="Thedogsatonmybed"wordsA=docA.split("")wordsB=docB.split("")wordsSet=set(wordsA).union(set(wordsB))print(wordsSet){'on','my','face','sat',
- 【高阶数据结构】并查集
椿融雪
数据结构与算法数据结构并查集
文章目录一、并查集原理二、并查集实现三、并查集应用一、并查集原理在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-findset)。比如:某公司今年校招全国总共招生10人,西安招4人,成都招3人,
- 上传文件到钉盘流程详解
jspyth
开发场景案例分析开发语言java后端
文章目录前言准备工作实现过程Maven依赖封装一个工具类获取文件上传信息unionId获取钉盘目录spaceId创建上传到钉盘前言 本文详解如何通过钉钉的API实现上传文件到钉盘目录,代码通过JAVA实现。准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用;2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;3、应用中配置好所需权限:企业存储文件上传
- C#文件被占用的解决方案
花北城
C#项目文件占用
问题打更新包时,提示文件被占用。System.IO.IOException:文件“D:\RS\RS_CCVI20111210.exe”正由另一进程使用,因此该进程无法访问该文件。在System.IO.__Error.WinIOError(Int32errorCode,StringmaybeFullPath)在System.IO.FileStream.Init(Stringpath,FileMode
- Python国内常用镜像源和使用方法
wfqlt163
Python基础操作python开发语言
常用的镜像源:1、企业镜像:豆瓣https://pypi.doubanio.com/simple/网易https://mirrors.163.com/pypi/simple/阿里云https://mirrors.aliyun.com/pypi/simple/腾讯云https://mirrors.cloud.tencent.com/pypi/simple2、高校镜像:清华大学(推荐):https:/
- 【C语言】C语言中的构造类型(自定义类型)
写代码也摆烂
#C语言笔记c语言
构造类型:也称自定义类型,构造类型是由基本数据类型组成的复合类型。一般用于存储较为复杂的数据。常见的构造类型有结构体(struct)、共用体(union)和枚举(enum)。目录正文一、结构体(struct)1、结构体概念:2、定义结构体类型与结构体变量3、结构体变量的初始化与引用3、结构体数组4、结构体指针*二、共用体(union)三、枚举类型四、用typedef声明新的类型名1、常用的方法有:
- 互联网 Java 工程师面试题(Java 面试题四)
苹果酱0567
面试题汇总与解析java中间件开发语言springboot后端
下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底层Java最佳实JDBCDate,Time与CalendarJava处理XMLJUnit编程现在是时候给
- 【Java将File完美转为MultipartFile】:亲测有效
阿火~
java
由于multipartFile有很多有用的api,但是有时候我们接收到前台的参数是文件名和文件内容,而不是文件,此时不能使用multipartFile接收,导致处理起来很不方便,比如我用minio上传文件,minio需要multipartFile类型的文件,而我拿到前端传来的文件名和文件内容只能自己通过File类创建文件,所以如果想用multipartFile类型就需要自己转换,然而天不遂人愿,并
- Docker-compose minio集群部署
有点菜的运维
docker容器运维
一、虚机准备192.168.40.174192.168.40.174192.168.40.176二、下载docker-compose离线安装docker及docker-compose_docker-compose离线安装-CSDN博客三、docker-compose.yml文件按docker-compose文件启动,minio的api端口为9000,控制台端口为9001174version:"3"
- docker-compose部署minio分布式集群
伏案惊涛
docker分布式容器
1、节点情况建议:minio节点数最好4节点以上,nginx独立部署在其他服务器。主机IP操作系统部署情况minio1192.168.16.34centos7miniominio2192.168.16.35centos7miniominio3192.168.16.36centos7miniominio4192.168.16.40centos7minio、nginx2、安装docker、docker
- 2024年CSP-J初赛备考建议
再临TSC
c++杂谈c++学习
针对2024年CSP-J(ComputerSciencePrinciplesJunior,即计算机科学原理初级认证)的备考,首先,先来看考试可能考的东西:动规(包括背包问题),主要在程序阅读还有程序补全题考,这方面,了解动规的原理就可以轻松拿分高精,也是在阅读和补全题,了解原理即可,Z2~Z3应该就学高精了深搜广搜,基础题可能会给你一个片段,然后问你这是什么算法,或者,问你下列选项中哪个正确,给你
- Netty权威指南:Netty总结-高性能与可靠性
Ty_1106
Nettyjava网络rpc
第二十二章高性能之道22.1RPC调用性能模型分析22.1.1传统RPC调用性能差三宗罪:网络传输采用同步阻塞I/O导致经常性阻塞序列化性能差线程模型问题22.1.2I/O通信性能三要素传输:BIO、NIO或者AIO协议:HTTP公有协议,内部私有协议线程:数据报如何读取,Reactor线程模型22.2Netty高性能之道22.2.1异步非阻塞通信I/O多路复用技术22.2.2高效的Reactor
- Linux+Docker:3分钟实现MinIO在线部署与Java集成
码龄23年
linuxdockerjava
Linux下使用Docker安装MinIO1.拉取MinIO镜像dockerpullminio/minio2.创建挂载目录mkdir-p/opt/minio/datamkdir-p/optl/minio/config3.检查端口占用sudolsof-i:9000...4.启动MinIO容器dockerrun--nameminio\#容器名称-p9010:9000\#映射主机端口9010到容器端口9
- NIO笔记03-文件编程
齐 飞
nio笔记后端java
文章目录1FileChannel获取读取写入关闭位置大小强制写入2两个Channel传输数据3Path4Files检查文件是否存在创建一级目录创建多级目录用拷贝文件(和transferTo效率相仿)移动文件删除文件删除目录遍历目录文件拷贝多级目录1FileChannel⚠️FileChannel工作模式:FileChannel只能工作在阻塞模式下获取不能直接打开FileChannel,必须通过Fi
- struct 和 union 的区别?
-Max-静-
日常学习知识点c++
struct和union的分对应点总结存储方式:struct:struct中的每个成员都拥有独立的内存空间。一个struct变量的总长度是其所有成员的长度之和,且通常会根据编译器的内存对齐规则进行适当调整。union:union中的所有成员共享同一段内存空间。一个union变量的长度等于其最长成员的长度。在任何时候,union中只有一个成员的值是有效的。内存分配与使用:struct:适合将不同类型
- Java网络编程:IO,NIO与Netty
坚持是一种态度
javajava网络编程NettyJavaIONIONIO与Netty
Java网络编程:IO,NIO与NettyJava网络编程:IO,NIO与NettyJavaI/O相关概念同步与异步阻塞与非阻塞OIONIOAIOreactor模型proactor模型JavaIO应用场景Netty简介NIO与Netty生产使用Java网络编程:IO,NIO与Netty新公司新项目,项目需要在硬件和软件平台进行信息传递,具体来说使用Netty。硬件和软件使用socket连接,硬件作
- 谈谈BIO、NIO、AIO
会飞的架狗师
jvmjavalinux
1.JAVA中的IOIO是Input/Output的简称,经常写作I/O即输入/输出。通常指数据在内存和硬盘之间的输入和输出。输入/输出是信息处理系统与外部世界之间的通信,比如计算机和人类之间。输入是系统接收的信号或数据,输出则是从其发送的信号或数据。JAVA中提供了一些API,可以提供开给发者来读写外部数据或文件,通常称这些API为JavaIO。随着JAVA的不断发展,目前有三种IO,分别是BI
- NIO 一 缓冲区
柠檬睡客
JavajavaNIO
文章目录一缓冲区1.1什么是缓冲区1.2直接缓冲区1.3NIO缓冲区实现二核心参数2.1参数介绍2.2参数限定条件2.3参数终值2.4参数操作API2.4.1获取缓冲区尺寸2.4.2获取缓冲区可读写尺寸限制2.4.3设置缓冲区可读写尺寸限制2.4.4获取缓冲区可读写数据索引2.4.5设置缓冲区可读写位置索引2.4.6获取可用缓冲区大小2.4.7标记重置位置2.4.8重置核心参数2.4.9写读模式转
- struct 和 union 的区别
松小白song
C++八股文算法
目录1.内存布局2.内存使用3.用途4.初始化和访问5.例子1.内存布局struct:每个成员都有自己的内存空间,所有成员的内存地址是彼此独立的。struct的大小是所有成员大小的总和,可能还包括内存对齐所需要的填充字节。union:所有成员共享相同的内存空间,union的大小等于最大成员的大小。这意味着一个时间点上,union只能存储一个成员的值。2.内存使用struct:允许同时访问所有成员,
- 【BIO、NIO、AIO适用场景分析】
代码哲学
niojava
BIO、NIO、AIO适用场景分析1.适用场景:2.BIO基本介绍2.1BIO示例3.JavaNIO基本介绍3.1NIO中三个核心部分:3.2NIO非阻塞3.3buffer案例3.4比较1.适用场景:BIO方式适用于连接数目比较少且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用之内,jdk1.4以前的唯一选择,但程序简单易理解。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比
- Python镜像源
「已注销」
镜像源官方:https://pypi.python.org/pypi豆瓣:https://pypi.doubanio.com/simple/阿里:http://mirrors.aliyun.com/pypi/simple/中科大:https://mirrors.ustc.edu.cn/pypi/web/simple/清华:https://pypi.tuna.tsinghua.edu.cn/simp
- 【408DS算法题】041进阶-并查集基本操作
Owlet_woodBird
算法数据结构
Index题目分析实现总结题目编写函数,实现并查集的基本操作(查找、合并)。分析实现并查集中包含数据结构parent数组,存储每个结点的父结点。对于查找操作,可以通过递归找到当前结点的根结点,然后进行路径压缩——令当前结点的父结点为根节点,最后返回根节点。对于合并操作,只需要将两节点的根结点进行合并即可。具体实现如下:classUnionFind{private:vectorparent;publ
- 使用minio给存储的对象添加过期时间
[奸笑]这个不是斜眼笑[奸笑]
springboot开发语言javaspringboot后端
在一些场景中,储存的对象需要定时清理保证留出足够的磁盘空间,如果时linux的本地文件,需要采取定时任务清理,但是minio提供了这样的能力环境软件版本docker24.0.4minioRELEASE.2023-10-24T05-18-28Z(commit-id=97cc12fdc539361cf175ffc2f00480eec0836d82)客户端(浏览器)打开对应的桶在这里添加通过代码(这里以
- mysql 把多条符合条件的数组 json 合并成一条
KingFu28
mysqljson
selectc.PROC_INST_ID_,sfj.file_jsonfrombpm_check_opinioncleftjoinsys_file_jsonsfjontimestampdiff(minute,sfj.create_time,c.CREATE_TIME_)between0and3--三分钟内wherec.PROC_INST_ID_='10000005440002';查询结果:1000
- uniapp微信授权应该在哪里做
linlinlove2
uni-app微信
在uniapp开发中,微信授权应当在用户界面组件中进行。授权流程包括:获取用户code、用code换取openid和unionid、应用使用openid或unionid进行后续操作。具体位置取决于业务场景,例如可在需要授权的按钮点击事件处理函数中进行授权。uniapp微信授权应当在哪里做在uniapp开发中,微信授权应当在用户界面组件中进行。详细说明:uniapp提供了微信SDK,用于实现与微信平
- UNIOP ERT-16 工业 PLC
w15305925923
服务器网络运维自动化linux
UNIOPERT-16工业PLC描述ERT-16可满足对功能强大但成本低廉的操作员界面系统的需求。显示屏为16行单色像素LCD。这些可寻址的像素显示屏允许使用我们的DesignerforWindows软件包进行图形处理。每页可显示16行。每行最多可包含40个字符。亮度控制可调节显示屏,以方便在几乎任何条件下观看。ERT-16-工业PLC工作站16行x40个字符LCD全图形320x240像素分辨率触
- 使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
qq_42750608
linuxansibleansible
虚拟机版本:RockyLinuxrelease8.6(GreenObsidian)准备几台虚拟机ipv4地址主机名192.168.137.13center192.168.137.14sp-1192.168.137.15sp-2192.168.137.16sp-3一、center主机的配置1.vim/etc/hosts127.0.0.1localhostlocalhost.localdomainlo
- mysql之连接符函数使用sql顺序以及键约束介绍
calmtho
数据库mysql
文章目录单表查询1.格式2.关键字连接符操作符等3.分组函数/聚合函数/多行处理函数2.连接查询3.进阶类关键字1.union合并查询结果集2.limit分页时间表的键存储引擎mysql执行脚本指令案例sql脚本单表查询1.格式select...from...where...groupby...having...orderby...执行顺序:1.from2.where3.groupby4.havi
- 关于使用spire.pdf的错误问题
码农小伙
Javapdfspringbootjava
javaCausedby:java.util.ServiceConfigurationError:java.nio.charset.spi.CharsetProvider:Providercom.spire.ms.charsets.CharsetProvidernotfound关于使用spire.pdf的错误问题关于使用spire.pdf的错误问题我也整了许久,后面换版本才解决的我用的spring
- 自定义类型:联合和枚举
Ajiang2824735304
c++算法开发语言
1.联合体联合体跟结构体一样,由一个或多个成员构成,这些成员类型可以不同。但是编译器只为最大的成员分配足够的空间。特点是所有成员共用同一块空间。所以也称共用体。1.1定义unionUn{charc;inta;};跟结构体一样,需要有分号。1.2空间大小计算联合体的大小至少是最大成员的大小。当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍。例如:#includeunionUn1{
- 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