- Keepalived + VIP 高可用架构设计与实践详解:实现 Nginx 入口层的高可用
要阿尔卑斯吗.
nginx运维分布式架构java
一、背景与目标在大型网站或企业系统中,“高可用性(HighAvailability,HA)”是衡量系统稳定性的关键指标之一。任何一个节点故障都不应影响整体服务的可达性。问题背景举例:Tomcat部署了集群(后端高可用)Redis配置了主从+Sentinel(缓存高可用)数据库使用了主备或分库分表(存储高可用)但入口Nginx只有一个……Nginx宕机=全站瘫痪为了解决这个“最顶层的单点问题”,我们
- Redhat 9.5 Offline Install Rke2 v1.33.2
文章目录1.版本信息2.节点信息3.系统准备4.配置互信5.安装ansible6.基础配置6.1添加hosts解析6.2文件描述符限制6.3关闭swap6.4安装软件包6.5加载模块6.6设置内核参数7.部署dns8.配置VIP高可用8.1安装nginx8.2安装keepalived9.RKE2集群部署9.1下载软件9.2分发软件9.3初始Master节点安装9.3.1安装rke2-server9
- Nginx轻松上手
oaa114龙仔
Nginxnginx运维服务器
Nginx轻松上手准备环境部署安装源码安装yum安装nginx配置文件简单使用虚拟主机与域名解析反向代理负载均衡动静分离nginx+keepalived高可用准备环境Linux操作系统IP地址功能Centos7192.168.1.20nginx_server+keepalivedCentos7192.168.1.21nginxbackup+keepalivedCentos7192.168.1.22
- day043-负载均衡算法与高可用keepalived
孙克旭
老男孩教育Linux运维99期负载均衡算法运维linux
文章目录0.老男孩思想-运维能为公司创造的价值1.负载均衡轮询算法1.1加权轮询1.2ip哈希1.3url哈希2.负载均衡模块指令补充3.高可用4.keepalived4.1部署keepalived服务4.2脑裂故障4.2.1脑裂故障常见原因4.2.2脑裂故障解决方法5.思维导图0.老男孩思想-运维能为公司创造的价值省钱:服务器设备、机房带宽、云主机云服务减少CDN流量优化、架构改造,当流量增加时
- ubuntu22.04系统kubeadm部署k8s高可用集群
l386913
kubernetes容器云原生
一、shell脚本一键部署#!/bin/bashset-e#节点配置MASTER1="192.168.177.125"MASTER2="192.168.177.126"MASTER3="192.168.177.127"WORKER1="192.168.177.128"KEEPALIVED_VIP="192.168.177.129"#当前主机IPCURRENT_IP=$(hostname-I|awk
- LVS+keepalived负载均衡
weixin_34032827
网络后端
文档参考http://bbs.linuxtone.org/thread-1077-1-1.html(netseek)lvs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。在调度器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中有通过网络地址转换(NetworkAddres
- LVS+Keepalived 高可用群集
2354838711
linux服务器运维
目录引言:一、Keepalived概述1.1keepalived服务重要功能1.管理LVS负载均衡软件2.支持故障自动切换(Failover)3.实现LVS集群中节点的健康检查(HealthChecking)4.实现LVS负载调度器、节点服务器的高可用性(HA)1.2keepalived高可用故障切换转移原理1.3VRRP通信原理1.4keepalived体系主要模块及其作用1.5Keepaliv
- LVS+Keepalived+nginx
shumeigang
lvsnginx运维
LVS+Keepalived+nginx1安装依赖sudoyuminstallipvsadmkeepalived-y查询是否安装成功rpm-q-akeepalived2配置虚拟IP并安装ipvsadm/etc/sysconfig/network-scriptscpifcfg-ens33ifcfg-ens33:1修改里面配置文件TYPE="Ethernet"PROXY_METHOD="none"BR
- LVS+Keepalived高可用群集
归梧谣
网络智能路由器运维
Keepalived概述最初是LVS的辅助工具,提供故障切换(Failover)和健康检查(HealthChecking)功能能判断LVS负载调度器和节点服务器的可用性实现master主机故障时切换到backup节点,恢复后切回master安装与使用官方网站:KeepalivedforLinux可通过YUM方式安装也可作为非LVS环境的热备软件使用热备方式采用VRRP(虚拟路由冗余协议)实现多机热
- DR模式 + keepalived
不卖豆腐脑
网络服务器负载均衡
一、LVS-DR数据包流量分析(同一局域网)1、客户端向目标VIP发送请求,负载均衡器接收2、负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送3、后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文。4、随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后
- LVS+Keepalived 高可用群集部署(一定补图,真太晚了没来得及)
wmc995620
网络linux服务器
keepalived介绍专为LVS和HA设计的一款健康检查工具支持故障自动切换(Failover)支持节点健康状态检查(HealthChecking)判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。Keepalived实现原理剖析•keepalived采用VR
- LVS+Keepalived高可用群集(更新优化版)
有吃不错咯
群集keepalived群集
此方案在重启keepalived服务之后可以自动绑定虚拟网卡原方案可参考:LVS+Keepalived高可用群集(理论+实操)主DR服务器192.168.153.10备DR服务器192.168.153.20Web服务器1192.168.153.30Web服务器2192.168.153.40vip192.168.153.188此方案只在配置负载调度器有所不同配置负载调度器(主、备相同)systemc
- LVS集群 DR模式 + keepalived
突币楠波望
lvskeepalived
文章目录一、LVS-DR数据包流量分析(同一局域网)二、LVS-DR中的ARP问题三、解决ARP的两个问题的设置方法四、LVS-DR处理问题后的流量分析五、LVS-DR特性六、KeepalivedLVS-DR模式+keepalived实验一、LVS-DR数据包流量分析(同一局域网)1、客户端向目标VIP发送请求,负载均衡器接收2、负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文
- LVS+Keepalived高可用群集
?ccc?
lvs服务器运维
目录一:Keepalived双机热备基础知识提取1:Keepalived概述2:Keepalived的安装与服务控制(1)安装Keepalived(2)控制Keepalived服务3:使用Keepalived实现双机热备(1)主服务器的配置(2)备用服务器配置(3)测试双机热备功能二:使用Keepalived实现双机热备1:基础环境配置2:配置主调度器(1)全局配置、热备配置(2)Web服务器池配
- MySQL 高可用
别骂我h
mysql数据库
一:案例概述目前MySQL已经成为市场上主流数据库之一,考虑到业务的重要性,MySQL数据库单点问题已成为企业网站架构中最大的隐患。随着技术的发展,MHA的出现就是解决MySQL单点的问题。另外随着企业数据量越来越庞大,数据库的压力又成为企业的另一个瓶颈,MySQL多主多从架构的出现可以减轻MySQL本身的压力。本章将主要围绕“MySQL主主复制+Keepalived+HAProxy”这一经典高可
- 中小型架构
KK溜了溜了
架构需求:1架构网站:zrlogwecenterwordpresscloud2要求:实现两个负载均衡器代理并介入keepalived高可用3实现全站https加密4实现两个web站点5实现nfs服务器存储网站静态资源6实现backup服务器能实时有nfs同步(rersync/lsync)过来的数据实现全网备份功能(rsync)7实现服务器内部共享上网8实现各服务器之间时间同步9实现ansible一
- MySQL——Keepalived+Mysql高可用架构实战
庄小焱
数据库域mysql
摘要在生产环境中mysql的高可用的对于整个项目而言有着至关重要的作用。因此需要将mysql设计成为高可用的架构。本博文将详细介绍的mysql+keepalived构建的mysql互为主从的架构实战。一、环境准备操作系统centos7.0数据库mysql5.7master安装mysql和keeplived192.168.128slave安装mysql和keeplived192.168.140doc
- Mysql+Keepalived实现双主热备
z.haoui
高可用方案mysql数据库linux
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短MySQL双主复制,即互为Master-Slave(默认只使用一台MasterA负责数据写入,另一台MasterB备用),可以实现数据库服务器的热备,但是一台Master宕机后不能实现动态切换。使用Keepalived,可以通过虚拟IP
- Ubuntu搭建Mysql+Keepalived高可用(双主热备)
2401_89191942
ubuntumysqladb
sudoapt-getremovemysql-*dpkg-l|grep^rc|awk‘{print$2}’|sudoxargsdpkg-P配置权限vim/etc/mysql/my.cnf#bind-address=127.0.0.1mysql-uroot-pgrantallon.toroot@‘%’identifiedby‘root’withgrantoption;flushprivileges;
- mysql+keepalived
small white poplar
web环境搭建集群Job数据库mysql运维linux容器
文章目录一、master1创建目录写入配置文件启动master1创建`slave`用户并授权获取主节点当前`binarylog`文件名和位置position二、master2创建目录写入配置文件启动master2创建`slave`用户并授权获取主节点当前`binarylog`文件名和位置position三、配置主主复制Master1Master2四、建库验证五、数据库备份master1master
- Mysql高可用
归梧谣
mysql数据库
案例概述目前MySQL已经成为市场上主流数据库之一,考虑到业务的重要性,MySQL数据库单点问题已成为企业网站架构中最大的隐患。随着技术的发展,MHA的出现就是解决MySQL单点的问题。另外随着企业数据量越来越庞大,数据库的压力又成为企业的另一个瓶颈,MySQL多主多从架构的出现可以减轻MySQL本身的压力。本章将主要围绕“MySQL主主复制+Keepalived+HAProxy”这一经典高可用架
- LVS+Keepalived 高可用群集
伤不起bb
lvs服务器linux
目录一、keepalived双机热备基础知识1.keepalived概述及安装2.keepalived的热备方式3.Keepalived的安装与服务控制(1)安装Keepalived(2)控制Keepalived服务二、LVS+keepalived案例双机热备环境部署验证一、keepalived双机热备基础知识1.keepalived概述及安装核心定位:Keepalived最初是为LVS(Linu
- LVS+Keepalived 高可用
2501_91112123
javalinux运维
目录一、核心概念1.LVS(LinuxVirtualServer)2.Keepalived二、高可用架构设计1.架构拓扑图2.工作流程三、部署步骤(以DR模式为例)1.环境准备2.主LVS节点配置(1)安装Keepalived(2)配置Keepalived主节点(/etc/keepalived/keepalived.conf)(3)配置LVS内核参数(DR模式需关闭ARP响应)3.备LVS节点配置
- LVS + Keepalived高可用群集
霖檬ing
lvs
目录Keepalived基础概念一、核心原理:VRRP协议二、健康检查机制三、Keepalived架构四、工作流程五、配置文件解析六、高级特性七、典型应用场景八、日志与调试LVS+Keepalived高可用基础部署一、LVS+Keepalived核心原理二、部署环境准备三、配置Keepalived(主/备节点)四、配置LVS直接路由(DR模式)五、
- LVS+Keepalived群集(群集)
Jay&&
lvs服务器数据库负载均衡keepalived
一.Keepalived的概述1.1Keepalived的功能keepalived主要是用来提供故障切换和健康检查功能-----判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群。1.2Keepalived的热备方式keepalivefd采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。注意:使用Keep
- LVS+Keepalived高可用群集
zhcong_
lvslinux运维
目录一,Keepalived概述及安装(1)Keepalived的热备方式1,keepalived的安装与服务控制(1)安装keepalived(2)控制keepalived服务2,使用keepalived实现双机热备(1)主服务器的配置(2)备用服务器的配置3,测试双机热备功能(1)连通性测试(2)Web访问测试(3)查看日志记录二,使用Keepalived实现双机热备(案例)第一台(调度器)和
- LVS + Keepalived高可用群集
后院那片海
lvs服务器运维
目录一:keepalived双击热备基础知识1.keepalived概述及安装1.1keepalived的热备方式1.2keepalived的安装与服务控制(1)安装keepalived(2)控制keepalived服务2.使用keepalived实现双击热备.2.1主服务器的配置2.2备用服务器的设置2.3测试双击热备功能(1)连通性测试(2)web访问测试(3)查看日志记录二:使用keepal
- Keepalived 配置 VIP 的核心步骤
jiedaodezhuti
数据库
Keepalived配置VIP的核心步骤主要涉及安装软件、主备节点配置及服务管理。以下是具体操作指南:一、安装KeepalivedUbuntu/Debian系统sudoaptupdatesudoaptinstallkeepalivedCentOS/RHEL系统sudoyuminstallkeepalived注:需确保已配置EPEL源26。二、主备节点配置
- LVS-DR高可用-Keepalived
澜兮子
lvs服务器网络
目录Keepalved双机热备核心概念关键组件工作流程实例环境配置keepalivedWeb服务器配置Keepalved双机热备Keepalived双机热备是一种基于VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)实现的高可用性解决方案,广泛应用于Linux服务器集群中,确保关键服务的持续运行核心概念VRRP协议:通过虚拟路由器(VirtualRoute
- LVS-DR+Keepalived 高可用群集部署
Sundayday47
服务安装lvs运维linux服务器
LVS-DR+Keepalived高可用群集部署Keepalived的工作原理LVS+Keepalived高可用群集部署配置负载调度器(主、备相同)关闭防火墙和核心防护及准备IPVS模块配置keeplived(主、备DR服务器上都要设置)启动ipvsadm服务调整proc响应参数,关闭Linux内核的重定向参数响应配置节点服务器测试验证Keepalived的工作原理Keepalived是一个基于V
- 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