- APO全量日志对接logstash和fluent日志采集生态
日志
APO日志介绍采集流程图APO使用ilogtail作为日志采集组件并改造支持额外功能,在vector中进行日志结构化处理。APO日志功能日志指标统计日志数并生成日志数指标。出现错误日志时,计算日志错误指标故障现场日志应用程序出现慢或者错误trace时,将这段时间内的日志收集并写入clickhouse中。使用k8s信息或pid信息关联故障链路和故障现场日志全量日志1.APO日志界面中提供了为不同应用
- APO v0.7.0 更新:日志功能完整版发布!
日志后端
在v0.6.0版本中,APO发布了基于ClickHouse开箱即用的高效日志方案,为用户提供了采集、处理和检索全量日志的基础功能。新版本在此基础上进一步强化了日志处理和检索的能力,提升了用户体验。支持为不同日志设置不同的解析规则,提取出关键信息并加速检索日志中往往存在许多关键信息,将这些关键信息提取出来能够针对性的检索数据,通过分析此类关键信息能够发现平时难以注意到的洞察。通常不同的应用在输出日志
- Tab 如何滚动居中
kilito_01
前端javascriptcss
{{item}}exportdefault{name:"TabList",props:{tabList:{type:Array,},},data(){return{currentIndex:0,};},methods:{onTabClick(index){this.currentIndex=index;},},watch:{currentIndex(newVal){consttabList=thi
- winform中的mousemove事件,click与mouseup,mousedown事件的关系,
qq_43361844
button的事件处理c#winform
首先click是mousedown和mouseup的结合,只有两个事件都发生了才会产生click事件,我在做button移动的时候,遇到了移动事件mousemove过后就会发生click事件,但是我只是想移动button,只发生mousemove事件代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel
- 【PyQt5 应用程序】PyQt基础组件:API接口调用
Mr数据杨
Python实用程序qtpyqt数据库
在构建PyQt应用程序时,理解组件的基本操作和信号槽机制至关重要。PyQt提供了丰富的组件,如按钮、文本框、滑块等,可以与用户产生交互。在这些交互中,使用API接口处理事件响应是开发的核心内容。本教程将通过几个实际应用示例,展示如何利用PyQt的信号槽机制,将组件与API接口进行有效链接,进而构建响应式应用程序。文章目录事件处理与信号槽机制QPushButton与clicked信号QLineEdi
- 【clickhouse踩坑记录】ClickHouse查询性能优化(入门级)
一条咸鱼的记录
踩坑记录数据库bigdata
背景用了一年多的ClickHouse,但好像都没系统地去学一遍,趁着最近有点时间,相对全面地去看了一圈ClickHouse的内容。发现ClickHouse虽然性能查询本身快,但如果使用不恰当,性能会被降一个级别。下面主要简单介绍一下,ClickHouse的查询可以从哪些方面做优化。可重点关注标题加粗部分!!优化方法以下,主要从表级别、语法、查询这三方面简要介绍。表级别优化填充有空值的字段对于一些表
- 支持ajax的移动webui,Vue移动端项目配合第三方ui库快速搭建开发环境
七月的流浪猫
支持ajax的移动webui
//copycnpminstall--savees6-promisecnpminstall--savebabel-polyfillcnpminstallfastclick-Scnpmilib-flexible-Scnpminstallpx2rem-loader-S-dcnpminstallvuex-Scnpminstallaxios--savecnpminstallstylus--save-dev
- a标签(普通标签如span)没有disabled属性 ,怎样利用js实现该属性
weixin_30252709
前端javascriptViewUI
a标签以及其她普通标签没有disabled属性,要想实现类似input框属性disabled可以通过css样式设置pointer-events的值来设定:aonclickdisabledaAlertspanAlert$(document).ready(function(){$('.page-next').click(function(e){e.preventDefault();alert('aaa
- Centos7安装Clickhouse单节点部署
lcz-2000
clickhouselinux服务器
部署流程1、关闭防火墙&沙盒关闭防火墙并关闭开机自启动systemctlstopfirewalld&&systemctldisablefirewalld查看selinux状态是否为disabled,否则修改[root@localhost~]#getenforceEnforcing修改为disabledvim/etc/selinux/config#修改SELINUX=disabled#重启生效reb
- centos7 安装单机 ClickHouse
小码农叔叔
大数据clickhouse安装clickhouse单机安装clickhouse单节点安装安装单机clickhouse
前言ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告本篇首先介绍下如何基于centos7环境安装单机版的clickhouse官网:https://clickhouse.com/环境准备centos7环境(虚拟机或者云服务器)clickhouse基础安装包安装前置步
- ClickHouse创建分布式表
期待着2013
clickhouse数据库
ClickHouse创建分布式表当数据量剧增的时候,clickhouse是采用分片的方式进行数据的存储的,类似于redis集群的实现方式。然后想进行统一的查询的时候,因为涉及到多个本地表,可以通过分布式表的方式来提供统一的入口。由于是涉及到分布式存储,保证高可用就必须有数据冗余—即副本(replica)。Clickhouse依靠ReplicatedMergeTree引擎族与Zookeeper实现了
- centos7安装部署clickhouse数据库 小白详细教程
这是个错觉
clickhouse数据库
目录1.系统概述...21.1服务器环境概述...31.2操作系统...31.3数据库软件...32.数据库账户说明...32.1数据库账户...33.ClickHouse运行环境安装部署...43.1上传数据库软件包到服务器...43.2解压数据库软件包安装...53.3解压软件包并运行安装...53.4更改数据库数据目录...93.5修改日志文件位置...154.ClickHouse日常...
- ClickHouse集群搭建(CENTOS7环境)
huaxia2002
大数据常用框架入门
ClickHouse集群搭建(CENTOS7环境)1.rpm包下载下载的rpm包版本-rw-r--r--1rootroot1342545月2817:07clickhouse-client-20.3.9.70-2.noarch.rpm-rw-r--r--1rootroot1169243615月2817:07clickhouse-common-static-20.3.9.70-2.x86_64.rpm
- CentOS7 部署安装ClickHouse
zhua.er
ClickHouse数据库ClickHouse
一、什么是ClickHouseClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。OLAP场景需要在大型数据集上对具有以下特征的复杂分析查询进行实时响应:数据集可以是巨大的——数十亿或数万亿行数据组织在包含多列的表中只选择少数几列来回答任何特定的查询必须以毫秒或秒为
- 5. clickhouse 单节点多实例部署
Toroidals
大数据组件安装部署教程clickhouse单节点多实例伪分布安装部署
环境说明:主机名:cmc01为例操作系统:centos7安装部署软件版本部署方式centos7zookeeperzookeeper-3.4.10伪分布式hadoophadoop-3.1.3伪分布式hivehive-3.1.3-bin伪分布式clickhouse21.11.10.1-2单节点多实例dolphinscheduler3.0.0单节点kettlepdi-ce-9.3.0.0单节点sqoop
- VUE3.0+TS用ref获取元素
ELNino_Thomas.Liang
div元素//在setup中无法使用thissetup(){//新建一个ref对象,对象命名必须与ref命名相同//在setup的中还不是一个DOM节点类型,在DOM挂载后才会是ELEMENT类型,所以要设置泛型consteleRef=ref(null)consthandleClick=()=>{if(eleRef.value){console.log(eleRef.value)}}//retur
- el-tree展开收起等一系列操作(只展开一个节点,其他方法实现全部收起/展开只一个不同,还可以滚动到选中的节点位置)
codekjy
vue.js前端javascript
//accordion只展开一个节点data(){return{Data:[],selectId:null,defaultKeys:[],//默认展开那个defaultProps:{children:'children',label:'label'},}}methods:{handleNodeClick(data,node){//点击节点console.log(data,node)//this.h
- Ape-DTS:开源 DTS 工具,助力自建 MySQL、PostgreSQL 迁移上云
数据迁移数据库
Ape-DTS是一款高效、轻量级且功能强大的开源工具,专注于解决数据迁移、同步、校验、订阅与加工的需求。无论是将自建的MySQL/PostgreSQL数据库迁移到云端,还是在不同数据库间进行数据迁移,Ape-DTS都能为您提供便捷且可靠的解决方案。它特别适合于将自建MySQL数据库迁移到其他MySQL环境(如云端MySQL、KubeBlocksMySQL),或者其他分析型数据库(例如ClickHo
- 前端 安全
海上彼尚
jsnode.js前端安全
目录一、跨站脚本攻击(XSS)1.反射型XSS2.存储型XSS3.DOM型XSSXSS通用防御二、跨站请求伪造(CSRF)三、点击劫持(Clickjacking)四、开放重定向攻击(OpenRedirect)五、HTTP头注入(HeaderInjection)六、WebSocket安全漏洞七、客户端存储泄露八、第三方SDK风险九、浏览器扩展漏洞十、JSON劫持(JSONHijacking)十一、服
- qt 控件的焦点事件
qq_43361844
QTqt控件的焦点策略设置
在Qt中,设置焦点策略是通过QWidget的setFocusPolicy()方法来实现的。焦点策略控制了一个控件何时和如何获取焦点。Qt提供了几种常见的焦点策略,以帮助管理控件的焦点行为。常见的焦点策略Qt::NoFocus:控件不接受焦点。Qt::TabFocus:控件可以通过按Tab键获得焦点。Qt::ClickFocus:控件可以通过鼠标点击获得焦点。Qt::StrongFocus:控件可以
- Dive Into Browser(一): 浏览器架构
草半
浏览器chromium浏览器架构IPC
DiveIntoBrowser(一):浏览器架构浏览器部件多进程架构RenderProcessBrowserProcess进程间通信IPCRenderProcess中的线程BrowserProcess中的线程底层浏览器进程对象高层浏览器进程对象消息通信实例Mouseclick消息的生命周期Setcursor消息的生命周期碎碎念参考资料随着Web技术的发展,现代浏览器已经具备了空前的复杂度,chro
- echarts图标-悬浮效果消失优化
子伟-H5
echarts前端javascript
1、展示描述1)当前问题:悬浮框显示后,点击图标外的其他区域,有时候浮框会消失,有时候不会消失,体验不好2)改成:悬浮框显示后,点击图标外的其他区域,浮框必须消失2、优化代码在组件挂载时添加一个全局的pointerup事件监听器,当组件销毁前移除该监听器。具体如下:组件挂载时:添加全局pointerup事件监听器,调用handleDocumentClick方法。组件销毁前:移除全局pointeru
- Axure入门教程 -- 第三章:交互设计基础
山海青风
产品设计axure交互
第三章:交互设计基础3.1交互原理与Axure的事件系统3.1.1什么是交互?交互设计是指为原型添加响应动作,使用户行为与页面元素产生互动。Axure支持多种交互类型,例如:•点击按钮跳转页面•鼠标悬停显示菜单•表单提交后显示提示信息3.1.2Axure事件系统简介Axure通过触发事件和动作组合实现交互效果,以下是常用的事件类型:1.鼠标事件:单击(OnClick)、双击(OnDoubleCli
- 写给前端工程师的-Flutter-详细教程
2401_84544495
程序员前端flutter
=和其他符号的组合:*=、~/=、&=、|=……级联操作符(Cascadenotation…)//想想这样省了多少变量声明querySelect(‘#button’)…text=“Confirm”…classes.add(‘important’)…onClick.listen((e)=>window.alert(‘Confirmed’))甚至可以重写操作符classVector{finalintx
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
harmonyos-next
1.问题描述:推送通知到手机,怎么配置拉起应用指定的页面?解决方案:1、如果点击通知栏打开默认Ability的话,actionType可以设置为0,同时可以在.clickAction.data中,指定待跳转的page页面,命名为pageUri。2、然后在UIAbility的onNewWant或者onCreate方法中解析配置的pageUri;3、如果应用进程不存在将会触发onCreate方法,可以
- 扩展Playwright自动等待方法
凌空摘星
python测试工具
扩展Playwright自动等待方法问题尝试使用Playwright自带的机制解决扩展Playwright基本思路实现方法代码解析总结问题Playwright本身自带了非常不错的自动等待机制,在page.click(selector)page.fill(selector,value)之类的元素操作会自动等待元素可见且可操作。但是在项目上进行应用的时候,还是会出现这样那样的问题,比如:页面跳转后的页
- QML | 自定义圆形图片按钮
@hdd
Qtqml
在一个项目中需要做一个圆形图片按钮的列表,就自己实现了下。此按钮有两个自定义属性,分别表示按钮按下时和未按下时候显示的图片,还有一个rbClicked信号为按钮点击的响应信号。//RoundButton.qmlimportQtQuick2.12importQtQuick.Controls2.12Rectangle{id:roundButtonwidth:30height:widthradius:w
- 深入理解 Qt 信号与槽机制:原理、用法与优势
@hdd
Qtqt
一、信号与槽的概念在Qt编程中,信号与槽机制是实现对象间通信的核心工具。信号:本质上是一种特殊的成员函数声明,它不包含函数体,仅用于通知其他对象某一事件的发生。例如,当用户点击界面上的按钮时,按钮对象就会发出clicked信号,告知系统“按钮被点击了”这一事件。槽:用于响应信号的普通成员函数。它与普通C++函数类似,可以有参数,也能被重载,并且可以定义在类的public、protected或pri
- click和tap以及事件穿透
一只桃子~
javascript开发语言ecmascript
click在移动端有太多复杂的功能是监听不到的,例如,触摸、按住和轻滑,且click事件时间上会有延迟,大概200-300ms,这时候就要用tap方法了。但是tap还有一个特点就是事件穿透,就是你执行完绑定的tap事件之后呢,如果下面如果绑定了其他事件或者是本身就存在点击事件的话,也会默认触发。解决办法1.第一种通过执行e.preventDefault()阻止touchend事件的默认行为,//第
- [WebApi]Ajax传递数组到API
厦门德仔
#WebApiajaxjavascriptjson
Ajax传递数组到后台之前有传递对象到后台。通过对象JSON.stringify(opt)方式传递。现在遇到一个问题多参数,其中一个参数是List。尝试过各种方法都无法解决,后来把非list参数组合到URL中,单独传递js数组或list对象到后台。代码如下:$("#btntest2").click(function(){
- 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