- 大语言模型原理基础与前沿 基于相似性搜索的多模态对齐
AI天才研究院
计算DeepSeekR1&大数据AI人工智能大模型计算科学神经计算深度学习神经网络大数据人工智能大型语言模型AIAGILLMJavaPython架构设计AgentRPA
大语言模型原理基础与前沿基于相似性搜索的多模态对齐1.背景介绍近年来,大语言模型(LargeLanguageModels,LLMs)在自然语言处理(NaturalLanguageProcessing,NLP)领域取得了显著的进展。LLMs通过在海量文本数据上进行预训练,学习到了丰富的语言知识和生成能力,在许多NLP任务上表现出色,如问答、摘要、翻译等。然而,LLMs目前主要局限于单一模态,即文本。
- 详细介绍Qt中用于断言的宏 Q_ASSERT
阳光_你好
qt开发语言
Q_ASSERT是Qt框架中用于调试的核心宏之一,其作用类似于标准C/C++的assert,但针对Qt的特性进行了优化。它用于在开发阶段验证程序的逻辑正确性,帮助开发者快速定位潜在的错误。1.基本用法Q_ASSERT(condition);功能:在调试模式下(DebugBuild),如果condition为false,则会触发断言失败,终止程序并输出错误信息。示例:voidprocessData(
- python 网格_python 栅格处理利器之Rasterio
weixin_40003512
python网格
本文主要是Automatizedatadownloadautomating-gis-processes.github.io中栅格图像处理的学习笔记,分享给大家,同时也便于自己记忆以及查看,节省时间。数据准备如果手头有数据,可以跳过该步骤,如果没有,可以按照原文提供的下载链接,保存数据。importosimporturllibdefget_filename(url):"""Parsesfilenam
- ElasticSearch7学习笔记之重建索引、预处理、数据建模与压力测试
coder_szc
ElasticSearchelasticsearch
文章目录重建索引使用场景UpdateByQuery1、插入数据2、改变Mapping3、变更生效4、查询测试Reindex1、新建索引2、重建索引3、查询测试IngestNode与数据预处理简介Pipeline与Processor_ingest/pipeline/_simulate管道api通过管道插入数据通过管道重建索引Painless脚本管道与painless脚本painless脚本更新数据保
- 带你解析原子化css引擎unocss的工作原理
谁能挡我成仙
css前端
最近荒废了,几天没写文章,今天抽时间水一篇内容。带你解析原子化css引擎unocss的工作原理@unocss/core首先,你得知道什么是CustomRulesShortcutsPreflightCustomvariantsThemeLayersUtilitiesPreprocess&Prefixing我们将围绕上述功能来实现一个mini-unocss工作流程在了解此之前我希望你能读完unocss
- Windows内核中根据PID查找兄弟进程和父进程
爱学习的大牛123
windows驱动内核开发windows内核父进程兄弟进程
在Windows内核驱动开发中,根据进程ID(PID)查找相关进程(如兄弟进程和父进程)是一个常见需求。这涉及到对Windows内核进程管理机制的理解和使用。下面我将详细介绍实现这一功能的方法。基本概念在Windows内核中:父进程:创建当前进程的进程兄弟进程:由同一个父进程创建的其他进程进程关系:通过EPROCESS结构中的信息可以获取方法实现1.查找父进程/**根据PID查找父进程信息*@pa
- Redis单进程、单线程、多线程之详解(Redis Single Process, Single Thread, and Multi Thread Explanation)
Linux运维老纪
用心耕耘开启数据库之门redis数据库缓存运维开发云计算linux
Redis是单进程单线程?支持多线程?Redis是单线程还是多线程?是单进程还是单线程?.具体来说,Redis使用一个单独的线程处理绝大部分的任务,包括:数据读写...等,但最新的版本已经包含多线程的功能。首先,从单线程谈起,单线程依然是核心处理。Redis单线程处理数据的方式之所以高效,是因为它利用了:I/O多路复用机制,可以同时处理多个客户端的请求。I/O多路复用机制(I/OMultiplex
- 利用python调接口获取物流标签,并转成PDF保存在指定的文件夹。
xiaoli_panpan
#python练习pythonpdf开发语言
需求调用getlabel接口将接口返回的base64文件转换成pdf文件命名用接口返回值的单号命名保存再指定的文件夹重实现代码#-*-coding:utf-8-*-importrequestsimportbase64importosimportjson#新增json模块导入url="http://releasud.com/api/label/LableApi/GalProcess"#替换为实际AP
- 在学东西的时候,大脑为什么会欺骗自己学会了
图书馆钉子户
笔记
在学习过程中,大脑“欺骗”自己以为已经学会的现象,通常与认知偏差、记忆机制和学习策略的局限性有关。以下是具体原因及应对方法:一、大脑产生“学会的错觉”的常见原因短期记忆的迷惑性新知识最初存储于短期记忆,此时大脑会因“暂时记住”而产生熟悉感。但这种记忆未经巩固,容易快速遗忘(如艾宾浩斯遗忘曲线所示)。例子:刚看完书觉得内容清晰,但第二天几乎忘光。处理流畅性(ProcessingFluidity)当信
- MIPI(Mobile Industry Processor Interface)详解
美好的事情总会发生
高速接口嵌入式硬件硬件工程智能硬件
一、MIPI的定义与核心特性MIPI(移动行业处理器接口)是由MIPI联盟制定的低功耗、高带宽、模块化接口标准,专为移动设备设计,现已扩展至汽车、IoT、医疗等领域。其核心特性包括:低功耗:动态功耗管理(如ULPS超低功耗状态)。高带宽:MIPIC-PHY2.0支持11.6Gsps(符号率),等效带宽达34.8Gbps(三线制)。抗干扰性:差分信号(D-PHY)或三线制(C-PHY)设计,适应复杂
- GPU的架构&原理解析
大数据追光猿
大模型架构语言模型python人工智能docker
GPU(GraphicsProcessingUnit,图形处理单元)是一种专门设计用于并行计算的硬件设备,最初用于加速图形渲染任务,但随着技术的发展,GPU已经成为通用计算(GPGPU,General-PurposecomputingonGraphicsProcessingUnits)的重要工具。以下是GPU的架构和工作原理的详细解析:1.GPU的基本架构(1)核心组件GPU的架构由以下几个关键组
- uni-app网络请求封装Request
weixin_42269070
uni-app
第一步:创建request.js文件letbaseUrl='';if(process.env.NODE_ENV=='development'){baseUrl='http://192.168.1.25:8081/app'//开发环境}else{baseUrl=''//生产环境}functionrequest(url,method,data,header={}){uni.showLoading({t
- 大规模文档处理利器:Amazon Textract 参考架构
裘珑鹏Island
大规模文档处理利器:AmazonTextract参考架构amazon-textract-serverless-large-scale-document-processingProcessdocumentsatscaleusingAmazonTextract项目地址:https://gitcode.com/gh_mirrors/am/amazon-textract-serverless-large-
- nginx 配置m3u8播放视频
超级小龙虾
nginxnginx音视频运维
第一步nginx配置:参考csdn-CircleMouseNginx配置搭建m3u8格式的视频播放服务userwwwwww;worker_processesauto;error_log/www/wwwlogs/nginx_error.logcrit;pid/www/server/nginx/logs/nginx.pid;worker_rlimit_nofile51200;stream{log_fo
- 人与马分类
楚歌汉水
第一步,导入库importosimportzipfileimportmatplotlib.pyplotaspltimportmatplotlib.imageasmpimgimporttensorflowastfimportnumpyasnpfromtensorflowimportkerasfromtensorflow.keras.preprocessing.imageimportImageData
- 【已解决】OCI runtime exec failed: open /dev/pts/1: operation not permitted: unknown
blackome
linuxubuntu运维docker容器
具体报错情况:autboc@s1:~$sudodockerexec-it--userrootautpr_tainer_731/bin/bashOCIruntimeexecfailed:execfailed:unabletostartcontainerprocess:open/dev/pts/1:operationnotpermitted:unknown原因是因为可能某一次daemon-reload
- 第二十章:类型属性的重载_《C++ Templates》notes
郭涤生
c/c++c++开发语言笔记
类型属性的重载核心知识点测试用例与编译验证多选题设计题测试用例说明关键总结核心知识点基于类型属性的函数重载通过type_traits和SFINAE实现条件编译,选择不同函数实现:#include#include//基础模板:处理非指针类型template,int>=0>voidprocess(constT&value){std::cout,int>=0>voidprocess(Tptr){std:
- 基础知识九、Python解析网络报文之搭建基本框架
旺旺小小超
python网络协议socket
文章目录一、实现报文解析任务对象二、搭建基本框架为进一步加深对计算机网络中网路协议的理解,经过前几节实现了线程池之后下面几节我们基于线程池进行网络协议报文的解析,本节我们通过socket监听本机ip和port,循环读取数据并交由异步的任务处理对象进行报文的解析。一、实现报文解析任务对象继承第六节的异步任务对象,在异步处理方法process中编写解析逻辑classServerProcessTask(
- Python多进程、线程技术
Stalker_DAs
Python技术开发语言python
在Python中,multiprocessing.Process是用于创建和管理多进程的类,提供了将任务分配给多个进程并行执行的功能。多进程可以有效利用多核CPU来加速计算密集型任务,因为Python中的全局解释器锁(GIL)会限制单进程并行执行多线程任务,但多进程能够避开这个限制。而Python的多线程技术允许程序在多个线程之间并行执行任务,从而在某些场景下提升程序的执行效率。Python的多线
- linux进程 线程详解
Lntano__y
CMake学习c++linux
进程在Linux操作系统中,进程是执行中的程序的实例。理解进程及其管理是系统编程、性能调优和系统管理的基础。以下是对Linux进程的详细介绍,包括进程的基本概念、生命周期、管理以及常用的命令和工具。基本概念进程(Process):进程是程序在执行中的实例。每个进程都有一个唯一的进程标识符(PID)以及一组资源(如内存、文件描述符等)。线程(Thread):线程是进程内的一个执行单元。一个进程可以包
- openresty整合modsecurity实现简单的防止DDOS攻击
ciqingloveless
openrestyddos
openresty配置确保已经正确整合openresty和modsecurity完整配置如下,增加了白名单和黑名单已经限制请求次数load_modulemodules/ngx_http_modsecurity_module.so;#usernobody;worker_processes4;#error_loglogs/error.log;#error_loglogs/error.lognotice
- mybatis:父子表查询一对多(collection)
敢敢变成了憨憨
mybatisjava数据库
-->select语句:SELECTt1.idASworkOrderTaskId,t1.process_nameASprocessName,t1.numASbeforeRemainNum,t2.id,/*t2.work_order_task_idASworkOrderTaskId,*/t3.NAMEASoperatorName,t2.submitted_numASsubmittedNum,t2.c
- 【CUDA】了解GPU架构
GG_Bond21
GPUgpu算力
目录一、初步认识二、Fermi架构三、Kepler架构3.1动态并行3.2Hyper-Q一、初步认识SM(StreamingMultiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。以Fermi架构为例,其包含以下主要组成部分:CUDAcoresSharedMemory/L1CacheRegisterFileLoad/StoreUnitsSpecialFun
- WebSocket:现代实时通信协议的深度解析与实践
这个懒人
websocket网络协议网络
一、背景与演进历程1.1传统实时通信的困境//典型的HTTP轮询伪代码while(true){autoresponse=http_client.get("/messages");if(response.has_data())process(response);std::this_thread::sleep_for(1s);//固定间隔轮询}高延迟:轮询间隔导致消息传递延迟带宽浪费:重复传输Head
- 领域驱动设计模式、原理与实践_领域驱动设计学习之路—DDD的原则与实践
餘弦Inverse
领域驱动设计模式原理与实践
本文是我学习ScottMillett&NickTune编著的《领域驱动设计模式、原理与实践》一书的学习笔记,一共会分为4个部分如下,此文为第1部分:领域驱动设计的原则与实践战略模式:在有界上下文之间通信战术模式:创建有效的领域模型有效应用程序的设计模式一、什么是领域驱动设计脑图浏览:https://www.processon.com/view/5cb49b14e4b0a13c9de1042d#ma
- python 内存监控模块之memory_profiler
weixin_33736832
python
0.memory_profiler是干嘛的Thisisapythonmoduleformonitoringmemoryconsumptionofaprocessaswellasline-by-lineanalysisofmemoryconsumptionforpythonprograms.Itisapurepythonmoduleandhasthepsutilmoduleasoptional(bu
- 希冀 操作系统 实验四 段式存储管理
ssr——ssss
希冀操作系统实验希冀操作系统实验
目录一.补全代码及分析二.思考题三.总结一.补全代码及分析申请进程apply()函数完成了新开进程的功能,同时还记录了该进程需要的内存空间段数和每段的具体大小,你需要补全该函数。补全的代码为:voidapply(){printf("请输入进程的名字:");scanf("%s",duanbiaos[duanbiaonum].processname);printf("请输入该进程的段数:");scan
- 过程奖励模型PRM的定义和特点;过程奖励模型prm和orm结果奖励模型的区别和优劣是什么
强化学习曾小健
人工智能机器学习
过程奖励模型PRM的定义和特点过程奖励模型(ProcessRewardModel,简称PRM)是一种专注于对推理链中每一步进行评估和反馈的机制,旨在提高模型在复杂任务中的表现。其核心特点如下:细粒度反馈:PRM通过为推理链中的每一步分配奖励,提供即时的、详细的反馈,帮助模型识别并纠正错误,从而优化推理路径[11][17][20]。强化逻辑一致性:PRM模仿人类的逻辑推理方式,通过逐步监督确保推理过
- 在 Python 中执行 BASH 命令——在同一进程中
潮易
pythonbashchrome
在Python中执行BASH命令——在同一进程中在Python中执行BASH命令,可以使用`os.system()`或`subprocess`模块。以下是两种方法的详细步骤:方法一:使用`os.system()````pythonimportos#执行一个bash命令,例如显示当前目录下的所有文件command="ls"output=os.system(command)print("Command
- 大模型微调方法之Delta-tuning
空 白II
大语言模型论文解读微调方法介绍微调方法delta-tuning论文解读大语言模型
大模型微调方法之Delta-tuning大模型微调方法自从23年之后可谓是百花齐放,浙大有团队在8月将关于大模型微调方法的综述上传了ArXiv。论文将微调方法总结为等几个类别。本次讨论的1大模型业务分类当前的大模型行业可谓百花齐放,自然语言处理(naturallanguageprocessing,NLP)、计算机视觉(computervision,CV)、音频处理(audioprocessing,
- 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