- Vue3生命周期钩子函数
说好不emo
javascript前端vue.js
一、Vue3中的生命周期1、setup():开始创建组件之前,在beforeCreate和created之前执行,创建的是data和method2、onBeforeMount():组件挂载到节点上之前执行的函数;3、onMounted():组件挂载完成后执行的函数;4、onBeforeUpdate():组件更新之前执行的函数;5、onUpdated():组件更新完成之后执行的函数;6、onBefo
- 实战|springboot+redis+拦截器 实现接口幂等性校验
ApesKingMan
1概念幂等性,通俗的说就是一个接口,多次发起同一个请求,必须保证操作只能执行一次比如:订单接口,不能多次创建订单支付接口,重复支付同一笔订单只能扣一次钱支付宝回调接口,可能会多次回调,必须处理重复回调普通表单提交接口,因为网络超时等原因多次点击提交,只能成功一次等等2常见解决方案唯一索引--防止新增脏数据token机制--防止页面重复提交悲观锁--获取数据的时候加锁(锁表或锁行)乐观锁--基于版本
- 微软面向所有用户推出 Xbox Game Pass Standard
吴脑的键客
游戏microsoftxbox
2024年8月下旬,微软启动了XboxGamePassStandard的公开测试,这是其不断发展的GamePass套餐中的一个新层级。几周后的今天,XboxGamePass标准版已向支持地区的所有Xbox用户开放。XboxGamePass标准版每月收费14.99美元。以这个价格,Xbox用户可以访问数百款主机游戏、在线多人游戏和会员独享折扣,其中有些折扣可高达50%。不过,与XboxGamePas
- SpringBoot学习(17)Actuator
星河漫漫l
springboot开发语言运维开发学习
Actuator监控SpringBoot使用“习惯优于配置的理念”,采用包扫描和自动化配置的机制来加载依赖Jar中的Springbean,不需要任何Xml配置,就可以实现Spring的所有配置。虽然这样做能让我们的代码变得非常简洁,但是整个应用的实例创建和依赖关系等信息都被离散到了各个配置类的注解上,这使得我们分析整个应用中资源和实例的各种关系变得非常的困难。Actuator是SpringBoot
- 物体动态阴影的制作
Kyle_An
1、场景中创建摄像机,将ClearFlags设置为SolidColor;2、在project视图创建RenderTexture,并且拖到摄像机上;3、在场景创建Plane,将RenderTexture拖到Plane下面;4、设置物体的Layer层级;5、修改此摄像机的渲染层级;
- EFCore中利用原生sql进行联表/多表查询
xk_hypothesis
EFCore
EFCore中利用原生sql进行联表/多表查询EFCore的多表查询可以使用join,include这些进行查询,但是写起来比较复杂,它们一般适用于单表查询(个人觉得),对于多表查询,我更喜欢使用原生SQL这种方式。具体方式如下(这里以2张表关联为例):首先,创建两张数据库中对应的实体类:[Table("Sys_User")]publicclassSys_User{//////自增主键///[Ke
- Spring Boot 注解探秘:@Validated 开启数据验证之旅(下)
coding侠客
springbootjava后端springcloud
今天我们继续来探究自定义验证规则以及@Validated结合@RestControllerAdvice实现全局异常处理。首先来看自定义验证规则。假设有一个场景,需要批量解绑手机号和微信,为了确保请求数据的有效性和一致性,我们应当如何对请求参数进行严格的校验呢?首先,创建用于数据验证的实体类。@DatapublicclassAccount{@NotBlank(message="手机号不能为空")@P
- linux多个sh 同时执行命令,sh, 批量执行Linux命令
一颗橙子君
linux多个sh同时执行命令
step1:创建一个sh批处理命令文件#vim/etc/batch_ssh/install_redis.shstep2:给当前用户,能够执行sh脚本权限#chmodinstall_redis.sh777step3:编写要批量执行的命令,read表示等待前端用户输入,sleep表示等待时间单位为秒。echo'\nbegintoinstall01plugin\n';yuminstallcpp-y;ec
- flask sqlalchemy 动态创建表
llc的足迹
数据库flasksqlalchemy
创建模型defget_model(suffix):classBaseModel(Base):__tablename__=f'table_{suffix}'__table_args__={'extend_existing':True}target_name=db.Column(db.String(64),nullable=False,unique=True,comment="名称")target_i
- sqlalchemy判断表是否存在及动态创建表
llc的足迹
数据库sqlalchemy
defget_model(suffix):classTableModel(Base):__tablename__=f'table_{suffix}'__table_args__={'extend_existing':True}name=db.Column(db.String(64),comment="名称")desc=db.Column(db.String(32),comment="描述")ret
- 2021-04-13
等我攒够六便士_就去找月亮
其实要不是PS老师讲到以后晚上上课要点名,我可能还不回去听课,我们自己专业课就是ps,一度我认为没必要去听课。但是晚上去听了感受颇深,ps部分老师早已讲完,现在学习AU创建和编辑形状,以及更换对象,等知识,创建出螺丝刀的模型,感觉比ps制出来的效果好很多,就是全程没有鼠标,阿西,面对这些需要移动的工作没有鼠标,手都快废了。对程序设计可能没什莫智慧,但是这些修修补补,添加零件,知道他的结构后,让设计
- 如何在Android 12 aosp系统源码中添加三指下滑截图功能
一航jason
androidpython开发语言
如何在Android12aosp系统源码中添加三指下滑截图功能系统中截图api非常简单:privatestaticScreenshotHelpersScreenshotHelper;sScreenshotHelper=newScreenshotHelper(mContext);//调用sScreenshotHelper.takeScreenshot(WindowManager.TAKE_SCREE
- LeetCode | 0235. 二叉搜索树的最近公共祖先【Python】
Wonz
ProblemLeetCodeGivenabinarysearchtree(BST),findthelowestcommonancestor(LCA)oftwogivennodesintheBST.AccordingtothedefinitionofLCAonWikipedia:“Thelowestcommonancestorisdefinedbetweentwonodespandqasthelo
- python组合数据类型
路口不会转弯
python数据类型概览python组合数据类型表.png重要知识点:1,通过索引的方式提取元素或切片,只适用于有序序列,而无序序列则不行2,可变序列和不可变序列的区别在于可变序列可以对变量本身修改,而不可变序列不能对变量本身修改,但是我们可以创建一个新的变量。考点一:list1)list的特点:所有元素放在[]中,相邻元素用逗号分隔列表内元素有顺序,可以使用索引,且元素类型可以不同线性的数据结构
- 客户端绑定本地端口与服务器建立连接的详细实现
醉心编码
通信软件c/c++技术类服务器TCP数据结构网络
客户端绑定本地端口与服务器建立连接的详细实现一、网络编程基础1.1TCP/IP协议1.2套接字(Socket)1.3客户端与服务器模型二、客户端程序的设计2.1需求分析2.2流程设计三、具体代码实现3.1伪代码3.2C代码实现四、代码详解4.1初始化套接字库4.2创建套接字4.3绑定本地端口4.4准备服务器地址和端口信息:4.5连接到服务器**:在网络编程中,客户端与服务器之间的通信是一个非常重要
- 1、.Net UI框架:Blazor Hybrid - .Net宣传系列文章
lzhdim
ui
BlazorHybrid是.NET6中引入的一个新特性,它允许开发者使用Blazor技术开发跨平台的桌面和移动应用程序。BlazorHybrid结合了BlazorWebAssembly和BlazorServer的优势,提供了一种在桌面和移动设备上运行Blazor应用的方法。BlazorHybrid的关键特性包括:跨平台应用:可以创建在Windows、macOS、Linux、iOS和Android上
- HTML5 `<button>` 标签深入全面解析
软考鸭
html5html5前端html
引言在HTML5中,标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一。与相比,标签提供了更多的灵活性和样式化的可能性。本文将深入解析HTML5中的标签,详细介绍其属性、样式以及实际应用。标签的基本用法标签内部可以放置内容,如文本、图像或其他HTML元素。这使得标签比更加灵活。点击我在这个简单的例子中,我们创建了一个普通的按钮,其上的文本是“点击我”。标签的属性标签支持多种属性,用于定
- Android里的设计模式
jim_dayday_up
#Android_基础知识设计模式java开发语言
一:设计模式分类经典的23种设计模式是由ErichGamma、RichardHelm、RalphJohnson和JohnVlissides(合称“GangofFour”)在他们的书《设计模式:可复用面向对象软件的基础》中定义的。以下是这些设计模式的分类和简要介绍。1.1创建型模式单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。抽象工厂模式(AbstractFactor
- Linux学习-模拟容器网络
丢爸
Linuxlinux学习
注:在Rocky8.6中使用brctl命令需安装需要下载源码编译安装,下载地址模拟容器间网络通信处在不同namespace的容器网络可以通过vethpair与bridge相连的方式来相互打通#添加虚拟网桥[root@es1~]#brctladdbrbr0[root@es1~]#iplinksetbr0up#创建ns0命名空间,添加IP,并将接口连接到虚拟网桥上[root@es1~]#ipnetns
- 前端工程化——脚手架及自动化构建
Jelly-JK
前端工程化javascriptnode.jshtml
定义一切以提高效率、降低成本、质量保证为目的的手段,都属于工程化前端工程化主要解决的问题传统语言或语法的弊端无法使用模块化/组件化重复性的机械工作代码风格统一、质量保证依赖后端服务接口的保证整体依赖后端项目工程化的表现体现在项目的整个流程:创建项目创建项目结构创建特定类型文件编码格式化校验校验代码风格编译/构建/打包预览/测试WebServer/MockLiveReloading/HMRSourc
- 初见flyway
simple哇
数据库数据库
flyway(一种数据库版本控制工具document)两种文件V和RV:V开头是不可重复执行的文件,每次修改完都该更改名称R:R开头是可重复执行的文件,需要保证内部sql都是可以重复执行的名称格式:V__table_name.sql,R__table_name.sql操作baseline:以现在数据库状态为基准,创建flyway_schema_history表,以及相关信息填充[类似初始化]mig
- Holoviews 创建复杂的可视化布局
步入烟尘
Python超入门指南全册Holoviewspython
如何使用Holoviews创建复杂的可视化布局在数据科学和数据可视化领域,Holoviews是一个非常强大的Python库,它可以帮助我们轻松地创建各种复杂的可视化布局。Holoviews提供了一个高层次的接口,使得创建交互式和静态可视化变得简单而直观。本文将介绍如何使用Holoviews来创建复杂的可视化布局,让你的数据以最直观的方式展现出来。安装Holoviews首先,确保你已经安装了Holo
- android fork 子进程,fork子进程
那你干哈
androidfork子进程
title:fork子进程data:2019/3/2120:24:39toc:true这里实在学习socket编程前的小知识点,用来创建多个服务端学习文档速记fork并不保证父子进程的执行顺序,会存在父进程先比子进程结束,这个时候子进程的就可能由系统进程1(PID为1的init)接管子进程返回0父进程返回子进程的进程号(PID)粗浅的理解就是fork之后创建了一个一模一样的上下文,子进程也是从下一
- 使用java代码实现操作数据库的创建等系列操作
两点王爷
数据库javaoracle
创作背景:使用代码实现对PostgreSQL数据库的创建用户、授权用户、删除用户系列操作!1、导入相关的依赖org.projectlomboklombokcn.hutoolhutool-all5.8.262、具体实现创建实体类@Data@ApiModel(value="EntityDataBase",description="实体数据库相关内容")publicclassEntityDataBase
- Vue解說
白总Server
vue.js前端javascript数据库架构网络协议ssl网络
Vue.js(通常简称为Vue)是一个开源的JavaScript框架,用于构建用户界面和单页应用程序(SPA)。它由前谷歌工程师尤雨溪(EvanYou)创建,并首次发布于2014年。Vue被设计为易于上手、灵活且高效,它允许开发者通过组件化的方式构建复杂的前端应用。Vue.js的关键特点:渐进式框架:Vue可以从简单的界面元素开始,逐步扩展到复杂的单页应用。响应式数据绑定:Vue使用双向数据绑定,
- 使用Ananconda prompt创建环境时出现:UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel simple
小新eQ
promptpythonpip
出现以下问题:UnavailableInvalidChannel:HTTP404NOTFOUNDforchannelsimple Thechannelisnotaccessibleorisinvalid.Youwillneedtoadjustyourcondaconfigurationtoproceed.Use`condaconfig--showchannels`toviewyourconfigu
- class-dump 安装 和使用
奋斗的小马达
安装我的硬件环境环境:macOSHighSierra10.13.4Xcode9.3.1class-dump下载地址:https://link.jianshu.com/?t=http://stevenygard.com/projects/class-dump/1,终端输入mkdir~/bin,在当前用户根目录下创建一个bin目录。2,把下载下来的dmg打开,复制文件里面的class-dump到创建的
- Conda创建环境失败:000和404错误
柚柚柚柚柚
conda
一、首先下载Anaconda1.打开网址Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror,滑到最底部,下载Anaconda3-5.3.1-Linux-x86_64.sh。2.使用winscp拖动本地的Anaconda3-5.3.1-Linux-x86_64.sh到服务器的个人工作目录下。二、安装Anaconda软件,创建虚
- vue源码分析-挂载流程和模板编译
yyzzabc123
vue.js
前面几节我们从newVue创建实例开始,介绍了创建实例时执行初始化流程中的重要两步,配置选项的资源合并,以及响应式系统的核心思想,数据代理。在合并章节,我们对Vue丰富的选项合并策略有了基本的认知,在数据代理章节我们又对代理拦截的意义和使用场景有了深入的认识。按照Vue源码的设计思路,初始化过程还会进行很多操作,例如组件之间创建关联,初始化事件中心,初始化数据并建立响应式系统等,并最终将模板和数据
- 3. 部署Fabric2.2 集群(使用官方Demo)
明神特烦恼
Fabric2.2全面学习fabric区块链部署
我们将一步一步搭建Fabric2.2版本的区块链网络,从0开始搭建服务器环境、到运行官方Demo集群、创建通道、安装合约,以及从零完成基于区块链的农产品溯源项目开发。适用于无区块链开发经验的朋友们,已经有经验的请绕行。上节作者新购买云服务器,并且安装docker以及docker-compose,接下来作者与大家一起操作,不遗漏每个操作步骤(之前有一些同学操作结果出现错误,大多数是步骤有遗漏),保证
- 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