- 经验笔记:Node.js 中的 process.nextTick
漆黑的莫莫
笔记node.js
Node.js中的process.nextTick经验笔记引言在Node.js环境中,process.nextTick是一个非常重要的API,用于在当前执行栈的所有同步操作完成后立即执行一个回调函数。这使得开发者能够在异步I/O操作和其他异步事件之前,执行一些需要立即响应的任务。本文将探讨process.nextTick的工作原理、使用场景以及注意事项。process.nextTick的工作机制N
- Vue 中 nextTick 的最主要作用是什么,为什么要有这个 API
m0_73882020
vue.jsjavascriptecmascript
在Vue.js中,nextTick是一个用于在DOM更新后执行代码的API。它的主要作用是确保在某个操作完成后,DOM已经更新且可以被访问或操作。这个API在处理需要等待DOM更新完成的逻辑时非常有用。nextTick的最主要作用确保DOM更新完成:Vue的响应式系统会在数据变化后异步更新DOM。当你更改数据并立即访问DOM时,可能会发现DOM尚未反映最新的变化。nextTick允许你在DOM更新
- js(vue)如何实现页面截图,向后端传递,生成PDF
R-sz
vue.jsjavascript前端
利用htmm12canvas首先引入npminstallexpressmulter#或者yarnaddexpressmulter代码如下:-->中间代码省略import{nextTick,ref,provide}from"vue";import{useGetResizeBodySize}from'@/hooks/useGetScaleHeight'importEquConsumeSpareRank
- 【面试题系列Vue04】Vue.js中 $nextTick 原理及作用
周三有雨
面试题vuevue.js前端javascript
作用:$nextTick主要用于延迟执行某个函数,直到下一次DOM更新循环结束之后。这通常在你修改了一些数据,并且想要等待Vue完成DOM的重新渲染后,才执行依赖于新DOM的操作时使用。常见的使用场景包括:在DOM更新后执行DOM依赖的操作,如操作滚动位置、聚焦输入框、或是基于新布局的计算。在进行了一系列数据更新后,确保所有的DOM变更都已完成。原理:Vue.js使用异步队列的方式来处理DOM更新
- v-masonry踩坑 数据不重绘问题
黎明寄波澜*
javascript前端vue.js
在一堆数据中数据发生改变但是页面没有发生重绘(nextTick)描述场景我的小组里边有很多数据但是当我退出小组回来之后瀑布流出现空白情况请看图通过查看文档发现$redrawVueMasonry可以实现重绘于是各种调用不生效,最后发现把他写在nextTick里边才生效有当数据发生改变之后!!!请求完毕之后再去调用方法才有用所以从watch里边进行监听getCurrentInstance是vue里边的
- vue3+element-plus实现table表格整列的拖拽
不恰香菜辣baga
vue.jselementui
参考文章:https://blog.csdn.net/candy0521/article/details/136470284一、为防止原文章不见了将参考文章代码拷过来了(不好意思):这是参考文章的代码可直接复制粘贴运行import{nextTick,onMounted,reactive,ref}from"vue";importSortablefrom'sortablejs';consttableD
- vue如何获取div的宽度_vue 动态获取div宽高有时候为0的情况
weixin_39801613
vue如何获取div的宽度
项目背景:需要使用echarts进行图表展示。由于div宽高是不固定的,因此需要先获取父级的宽高再把值赋予到图表的div中。需要使用this.$nextTick(()=>{});方法,在mounted中,保证DOM渲染完全后,在进行echarts初始化。importechartsfrom'echarts';exportdefault{name:"wifiCollect",props:{classN
- 基于vue3和audio封装的简易音频播放器
九号窗口
音视频javascriptvue.js
样式如图所示{{fileName}}{{transTime(audioCurrent)}}{{transTime(audioDuration)}}import{ref,onBeforeMount,onUnmounted,onMounted,watch,nextTick}from'vue';constprops=defineProps({//音频地址url:{type:String,required
- Vue项目-Table添加Form表单校验
呆呆的小草
Vuevue.jselementuijavascript
一、HTML新增表格数据{{row.name}}{{row.age}}{{row.sex}}删除任务信息生成二、JS//------------------->-------------------import{ref,reactive,onMounted,nextTick}from"vue";import{ElMessage}from"element-plus";//--------------
- resetFields()失效
虾仁不眨眼ok
前端javascripthtmlvue
问题描述先点击新增,再取消弹窗。resetFields()正常运行,清空表单内容。先点击编辑,再新增,表单内容不能清空。解决方法在nextTick里赋值表单内容,因为弹窗会把第一次赋值的内容当成初始值,所以要在弹窗加载完之后再赋值constopenModal=(data)=>{base.visible=true;nextTick(()=>{base.formData=Object.assign({
- vue3+element-plus el-input 自动获取焦点
Hico、
vue.js前端elementui
虽然element有提供input的autofocus属性,但是当我们第二次进入页面就会发现autofocus已经不再生效,需要通过onMounted去触发input的focus解决这个问题。1.先给el-input绑定一个ref:2.定义一个函数去触发这个input的focus:constfocusInput=()=>{nextTick(()=>{inputRef.value.focus()})
- uniapp:APP端webview拦截H5页面跳转,华为市场发布需要限制webview的H5页面跳转
Mosowe
uni-app
在使用uniapp开发APP项目时,华为市场上线APP会被打回来:您的应用内容存在点击跳转至第三方应用市场或游戏中心下载渠道的问题,不符合华为应用市场审核标准。华为审核指南4.6因此可以考虑下面的处理方式,通过拦截webview页面的url实现:onReady(()=>{nextTick(()=>{plusReady();});});constplusReady=()=>{letpages=get
- 10 分钟了解 nextTick ,并实现简易版的 nextTick
秋の本名
程序员前端vue.js前端javascript
前言在Vue.js中,有一个特殊的方法nextTick,它在DOM更新后执行一段代码,起到等待DOM绘制完成的作用。本文会详细介绍nextTick的原理和使用方法,并实现一个简易版的nextTick,加深对它的理解。一.什么是nextTick简单的说,nextTick方法是在Vue.js中常见的一种异步更新DOM的机制。它的原理是利用JavaScript的事件循环机制以及浏览器的渲染流程来实现延迟
- vue3导入文件夹、导入文件、导出zip、导出
摇头的金丝猴
vuevue.jsjavascript前端
记录一下之前项目用到的导入文件夹和导入文件出现的一些注意的点,直接上代码注意:在传相同的文件时,会发现无法触发change事件nextTick(()=>{planFileRef.value.value="";planWordRef.value.value="";});上传文件夹上传文件import{ref}from"vue";letplanFileRef=ref();letplanWordRef=
- [uniapp生命周期]详细讲解uniapp中那些属于vue生命周期,那些属于uniapp独有的生命周期,以及这中间的区别 相关的内容和api 代码注释
门前大桥下.
uniappvue.jsuni-app前端
目录1.Vue.js生命周期函数2.Vue生命周期函数代码beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed$nextTick$forceUpdate$destroy3.UniApp独有的生命周期函数onLaunchonShowonHideonError4.总结在UniApp中,除了Vue.j
- Vue性能「十九」-- Vue常见优化方式 ***
loushumei
合理使用v-show和v-if合理使用computed(缓存)v-for中加key,避免和v-if同时使用自定义事件和DOM事件及时销毁(否则会导致内存泄露)合理使用异步组件(import)合理使用缓存组件(keep-alive)合理使用异步渲染($nextTick)data层级不要太深(导致深度监听时递归的次数比较多)使用vue-loader在开发环境做模板编译(预编译)使用SSR(服务端渲染)
- 1000字带你掌握nextTick背后的原理
m0_70273331
Web前端经验分享前端前端框架
答:如果我们需要获取数据更新后的dom信息,比如动态获取dom的宽高、位置等,就需要使用nextTick。handleClick(){this.msg=‘helloworld’;this.$nextTick(()=>{console.log(this.$refs.message.innerText)//helloworld})}如vue官网的描述:Vue在更新DOM时是异步执行的。只要侦听到数据变
- VUE 生成二维码插件qrcodejs2踩的坑
老街老街
使用步骤:1.安装qrcodejs2(注意:安装的是qrcodejs2,不要安装qrcode--->会报错)npminstallqrcodejs2--save2.页面引入image.png3。注意引入的时候://注意:在需要调用的地方这样必须这样调用否则会出现appendChildnull就是id为qrcode的dom获取不到返回结果为nullthis.$nextTick(function(){t
- vue element-ui table 对获取的数据进行toggleRowSelection
小狼在IT
data(){return{Detail:[]}}methods:{get_Detail(){letgetDetail=[]//获取的数据this.Detail=getDetaillet_this=this//必须要在$nextTick里面执行,否则toggleRowSelection无效_this.$nextTick(function(){_this.$refs.DetailTable.togg
- $nextTick
林键燃
$nextTick就是用来知道什么时候DOM更新完成异步更新队列(重要概念)Vue在观察到数据变化时并不是直接更新DOM,而是开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。在缓冲时会去除重复数据,从而避免不必要的计算和DOM操作。然后,在下一个事件循环tick中,Vue刷新队列并执行实际(已去重的)工作。语法this.$nextTick(callback)callback函数中完成我们操
- 一道经典的异步试题
华子Code1024
javascript前端面试
JavaScript任务可以分为同步任务和异步任务异步任务:微任务和宏任务微任务:Promise回调:当一个异步操作通过`newPromise`函数执行并返回后,可以注册一个回调函数以在异步操作完成时被调用。Node.js中process.nextTick:这是一个在Node.js中用于运行微任务的机制。MutationObserver对DOM变更的监听:这个API可以用来监听文档中元素的属性或子
- vue 一键复制文本
欧小肥OuO
handleCopy(val){this.$axios.get('后台路径',{params:{mdjid:val.mdjid,jdid:val.jdid}}).then(rs=>{if(rs){this.$nextTick().then(()=>{this.copyText(rs)})}})},copyText(data){leturl=dataletoninput=document.creat
- vue中什么时候使用$nextTick
得知此事须躬行
vue前端开发vue
vue的dom元素渲染是异步的,有的场景中在页面元素还没渲染就执行了需渲染后才执行的代码,就会报错,那么只要在this.$nextTick中执行该代码即可解决报错的问题。this.$nextTick(()=>{//要执行的代码})
- vue的nextTick的作用
阿里超级工程师
H5移动开发
很多人不明白,vue的nextTick是干什么用的。要理解nextTick,就要理解dom,nextTick是解决dom没有渲染的时候,无法做一些操作,我们想在dom完成后执行的。比如你有一个标签用了然后你有一个函数设置了this.showComp=true这个时候假如你使用this.$refs.mycomp去获取组件,获取的是空值,因为刚才showComp还是false,刚刚才设置成true,d
- vue中的this.$nextTick和Vue.nextTick
tenro
首先this.$nextTick其实就是Vue.nextTick,因为this指向的就是Vue官方说法:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。(似乎有点云里雾里)普及一下异步执行的运行机制如下:(1)所有同步任务都在主线程上执行,形成一个执行栈(executioncontextstack)。(2)主线程之外,还存在一个"任务队列"(taskq
- 3分钟带你了解Vue3的nextTick()
_Minato_
vue.js前端javascripthtml前端框架es6css3
前言Vue实现响应式并不是数据发生变化之后DOM立即变化,而是按一定的策略进行DOM的更新。简单来说,Vue在修改数据后,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新,nextTick()方法就会在这样的DOM更新循环结束后调用指定的函数。概念在Vue3中nextTick()方法的行为和Vue2中基本相似,但它进行了一些优化,以提高性能和稳定性。nextTick
- 使用canvas根据坐标集合绘制坐标点 + 更改坐标轴 + 旋转y轴
王拾羽
javascript前端开发语言
效果场景根据坐标点使用canvas在画布上展示出来html浏览器版本过低,请去下载最新版本浏览器data数据coordinates:[{x:100,y:50,},{x:100,y:-50,},{x:-50,y:50,},{x:-50,y:-50,},],绘制created(){this.$nextTick(()=>{this.canvas=this.$refs.canvasImg;this.ctx
- Ant Design Vue上传多个图片
ᥬ 小月亮
UI框架vue.js前端javascript
模板代码:定义变量:文件限制的函数:上传的函数:样式函数:完整代码:上传图片tab:tab1:确定取消import{defineComponent,reactive,toRefs,watch,nextTick}from'vue'import{message}from'ant-design-vue'importGfrom'@/request/G'importaxiosfrom'axios'expor
- Vue Error in nextTick: "RangeError: Maximum call stack size exceeded"
Marissa_z
报错问题如下:ErrorinnextTick:"RangeError:Maximumcallstacksizeexceeded",经过一系列的问题查询,发现问题所在,原来两个组件的name重复了!!!修改组件名就OK了!exportdefault{name:"main-table",}
- useEcharts更加方便的使用echarts,echarts动态尺寸,
Time202051
echartsvue3
import{ref,unref,nextTick,onMounted}from"vue";importemptyfrom"@/assets/image/public/empty.png";importtype{Ref}from"vue";importechartsfrom"@/libs/echarts";//import{EChartsOption}from"echarts";import{us
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro