- Linux(centos7)部署hive
灯下夜无眠
Linuxlinuxhive运维dbeaverhive客户端
前提环境:已部署完hadoop(HDFS、MapReduce、YARN)1、安装元数据服务MySQL切换root用户#更新密钥rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysqL-2022#安装Mysqlyum库rpm-Uvhhttp://repo.mysql.com//mysql57-community-release-el7-7.noarch.
- 关于HDP的20道高级运维面试题
编织幻境的妖
运维
1.描述HDP的主要组件及其作用。HDP(HortonworksDataPlatform)的主要组件包括Hadoop框架、HDFS、MapReduce、YARN以及Hadoop生态系统中的其他关键工具,如Spark、Flink、Hive、HBase等。以下是对这些组件及其作用的具体描述:Hadoop框架:Hadoop是一个开源的分布式计算框架,用Java语言编写,用于存储和处理大规模数据集。它广义
- linux安装单机版spark3.5.0
爱上雪茄
大数据JAVA知识spark大数据分布式
一、spark介绍是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等.Spark主要用于大数据的计算二、spark下载spark3.5.0三、spark环境变量配置exportJAVA_HOME=/usr/local/jdk1.8.0_391exportJRE_HOME=/usr/local/jdk1.8.0_391/jr
- 03hive数仓安装与基础使用
daydayup9527
hadoop_hive运维hadoop
hiveHive概述Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,本质上还是一个文件底层是将sql语句转换为MapReduce任务进行运行本质上是一种大数据离线分析工具学习成本相当低,不用开发复杂的mapreduce应用,十分适合数据仓库的统计分析hive可以用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop
- HDFS
weixin_51987187
笔记大数据
(一)HDFS简介及其基本概念 HDFS(HadoopDistributedFileSystem)是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件,在整个Hadoop中的地位非同一般,是最基础的一部分,因为它涉及到数据存储,MapReduce等计算模型都要依赖于存储在HDFS中的数据。HDFS是一个分布式文件系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件
- 基于MapReduce的汽车数据清洗与统计案例
醉里挑灯代码
MapReduce学习mapreduce汽车大数据
数据简介ecar168.csv(汽车销售数据表):字段数据类型字段说明rankingString排名manufacturerString厂商vehicle_typeString车型monthly_sales_volumeString月销量accumulated_this_yearString本年累计last_monthString上月chain_ratioString环比corresponding
- 大数据开发(Hadoop面试真题-卷二)
Key-Key
大数据hadoop面试
大数据开发(Hadoop面试真题)1、在大规模数据处理过程中使用编写MapReduce程序存在什么缺点?如何解决这些问题?2、请解释一下HDFS架构中NameNode和DataNode之间是如何通信的?3、请解释一下Hadoop的工作原理及其组成部分?4、HDFS读写流程是什么样子?5、Hadoop中fsimage和edit的区别是什么?6、Spark为什么比MapReduce更快?7、详细描述一
- hbase、hive、clickhouse对比
freshrookie
hbasehivehadoop
概念架构hbasemaster存储元数据、regionServer实际控制表数据,存储单位是Region,底层数据存储使用HDFShive通过driver将sql分解成mapreduce任务元数据需要单独存储到一个关系型数据库,一般是mysql实际数据存储可以是外表,也可以是内表clickhouse单体架构分层类似mysql,集群状态下是多主,通过zookeeper通信数据存储看引擎,最重要的引擎
- EMR StarRocks实战——Mysql数据实时同步到SR
爱吃辣条byte
#StarRocks数仓建设大数据数据仓库
文章摘抄阿里云EMR上的StarRocks实践:《基于实时计算Flink使用CTAS&CDAS功能同步MySQL数据至StarRocks》前言CTAS可以实现单表的结构和数据同步,CDAS可以实现整库同步或者同一库中的多表结构和数据同步。下文主要介绍如何使用Flink平台和E-MapReduceStarRocks,通过CTAS&CDAS功能实现实时数仓中TP(TransactionProcessi
- JAVA基础之Fork/Join框架
冰河winner
1、核心思想Fork/Join框架是Java7提供的一个用于并行执行任务的框架,核心思想就是把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果,其实现思想与MapReduce有异曲同工之妙。Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+…+10000,可以分割成10个子任务,每个子任务分别对100
- HIVE中MAP和REDUCE数量
这孩子谁懂哈
HIVEhivehadoopmapreduce
一、总览MR执行过程一般的MapReduce程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Finalresult)。1、输入就不用说了,数据一般放在HDFS上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。2、输入分片:在进行Map阶段之前,MapReduce框架会根据输入文件计算输
- 粉丝:什么情况下,hive 只会产生一个reduce任务,而没有maptask
浪尖聊大数据-浪尖
mapreducehive大数据sparkjava
今天下午,在微信群里看到粉丝聊天,提到了一个某公司的面试题:什么情况下,hive只会产生一个reduce任务,而没有maptask这个问题是不是很神奇?我们常规使用的mapreducer任务执行过程大致如下图:appmaster通过某种策略计算数据源可以做多少分片(getSplits方法),对应的生成固定数量的maptask,假如存在shuffle的话,就根据默认或者指定的reducer数,将数据
- Hive 基于MapReduce引擎 map和reduce数的参数控制原理与调优经验
abcdggggggg
大数据Hive大数据hadoophivemapreducemap
1.概述主要对基于MR的map数和reduce数测试与调优2.数据准备(1)表信息本次测试的表和sql都是使用的TPC-DS,表文件存储格式为text表名是否压缩总数占用空间文件数date_dim否730499.8M1item否4800012.9M1store否11830.5K1store_sales否230396418723109G8000store_sales_compress是2303964
- hive中控制map和reduce数量的简单实现方法
数仓大山哥
hiveHadoop系列map数reduce数
0、先说结论:由于mapreduce中没有办法直接控制map数量,所以只能曲线救国,通过设置每个map中处理的数据量进行设置;reduce是可以直接设置的。控制map和reduce的参数setmapred.max.split.size=256000000; --决定每个map处理的最大的文件大小,单位为Bsetmapred.min.split.size.per.node=1; --节点
- Hadoop生态圈
陈超Terry的技术屋
生态圈1.HBase的数据存储在HDFS里2.MapReduce可以计算HBase里的数据,也可以计算HDFS里的数据3.Hive是数据分析数据引擎,也是MapReduce模型,支持SQL4.Pig也是一个数据分析引擎,不支持SQL,有自己的PigLatin数据5.Sqoop是数据采集工具,针对关系数据库6.Flume是针对文件等数据的采集7.Hadoop的HA通过Zookeeper来实现8.HU
- 基于腾讯云基础,如何最大限度的提升出海效率?
九河云
服务器运维腾讯云
随着出海业务的需求量逐步增大,国内企业也逐步开始向海外扩展。在出海过程中,大部分企业都会为接收国内外的庞大数据以及资源如何安全管理而苦恼,这其中的成本控制、数据管理与运维、如何达成高效率、安全稳定等一直都是出海企业的痛点之一。九河云作为多云的合作伙伴并且基于自身多年从云经验,针对这些痛点为出海企业选择腾讯云的弹性MapReduce(EMR)助力企业出海顺利。弹性MapRduce(EMR)是什么?该
- spark为什么比mapreduce快?
后端
spark为什么比mapreduce快?首先澄清几个误区:1:两者都是基于内存计算的,任何计算框架都肯定是基于内存的,所以网上说的spark是基于内存计算所以快,显然是错误的2;DAG计算模型减少的是磁盘I/O次数(相比于mapreduce计算模型而言),而不是shuffle次数,因为shuffle是根据数据重组的次数而定,所以shuffle次数不能减少所以总结spark比mapreduce快的原
- 大数据Map Reduce (Hadoop) 和 MPP数据库 的区别
山哥Samuel
原理的角度出发,mapreduce其实就是二分查找的一个逆过程,不过因为计算节点有限,所以map和reduce前都预先有一个分区的步骤.二分查找要求数据是排序好的,所以MapReduce之间会有一个shuffle的过程对Map的结果排序.Reduce的输入是排好序的.MR分而治之的策略和数据库行业中另一种数据库MassivelyParallelProcessor即大规模并行处理数据库(典型代表AW
- Vue技术栈
Shansec~
vuevuejavascript前端
Vue的声明周期声明周期的函数Vue中的指令计算属性计算属性复杂操作对象字面量增强写法条件判断v-if的原理:案例小问题:v-show和v-if的区别数组中响应式方法JavaScript中的高阶函数filtermapreducev-model双向绑定v-model原理v-model的修饰符组件化开发父组件和子组件注册组件的语法糖格式父子组件间的通信父子组件的访问方式slot插槽插槽的基本使用具名插
- Hive切换引擎(MR、Tez、Spark)
落空空。
hivemrspark
Hive切换引擎(MR、Tez、Spark)1.MapReduce计算引擎(默认)sethive.execution.engine=mr;2.Tez引擎sethive.execution.engine=tez;1.Spark计算引擎sethive.execution.engine=spark;
- 测试环境搭建整套大数据系统(三:搭建集群zookeeper,hdfs,mapreduce,yarn,hive)
宇智波云
大数据项目zookeeperhdfsmapreducehive
一:搭建zkhttps://blog.csdn.net/weixin_43446246/article/details/123327143二:搭建hadoop,yarn,mapreduce。1.安装hadoop。sudotar-zxvfhadoop-3.2.4.tar.gz-C/opt2.修改java配置路径。cd/opt/hadoop-3.2.4/etc/hadoopvimhadoop-env.
- Hadoop Streaming原理
可乐加冰丶丶
Streaming简介•MapReduce和HDFS采用Java实现,默认提供Java编程接口•Streaming框架允许任何程序语言实现的程序在HadoopMapReduce中使用•Streaming方便已有程序向Hadoop平台移植Streaming原理Streaming优点•开发效率高–方便移植Hadoop平台,只需按照一定的格式从标准输入读取数据、向标准输出写数据就可以–原有的单机程序稍加
- 以内存为核心的开源分布式存储系统
这次靠你了
大数据Tachyonhdfs大数据
是一个以内存为核心的开源分布式存储系统,也是目前发展最迅速的开源大数据项目之一。Tachyon为不同的大数据计算框架(如ApacheSpark,HadoopMapReduce,ApacheFlink等)提供可靠的内存级的数据共享服务。此外,Tachyon还能够整合众多现有的存储系统(如AmazonS3,ApacheHDFS,RedHatGlusterFS,OpenStackSwift等),为用
- 马士兵 day4_Yarn和Map/Reduce配置启动和原理讲解
PC_Repair
day4_Yarn和Map/Reduce配置启动和原理讲解云计算:分布式计算,分布在多台机器上同时运行的运算。分布式计算原则:移动计算,而不是移动数据hadoop默认包含了hdfs、yarn、mapReduce三个组件yarn(YetAnotherResourceNegotiater)是资源调度系统,yarn调配的是内存和cpu,不参入计算。map/reduce是计算引擎配置vim/usr/loc
- 学习篇-Hadoop-YARN-环境搭建
东东爱编码
hadoop大数据hadoop
文章目录一、Hadoop-YARN-环境搭建一、Hadoop-YARN-环境搭建官网参考:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html配置:etc/hadoop/mapred-site.xmlmapreduce.framework.nameyarnmapreduc
- hadoop-yarn资源分配介绍-以及推荐常用优化参数
Winhole
hadoopLinux
根据网上的学习,结合工作进行的一个整理。如果有什么不正确的欢迎大家一起交流学习~Yarn前言作为Hadoop2.x的一部分,YARN采用MapReduce中的资源管理功能并对其进行打包,以便新引擎可以使用它们。这也简化了MapReduce,使其能够做到最好,处理数据。使用YARN,您现在可以在Hadoop中运行多个应用程序,所有应用程序都共享一个公共资源管理。那资源是有限的,YARN如何识别资源并
- (15)Hive调优——数据倾斜的解决指南
爱吃辣条byte
#Hive大数据hive
目录前言一、什么是数据倾斜二、发生数据倾斜的表现2.1MapReduce任务2.2Spark任务三、如何定位发生数据倾斜的代码四、发生数据倾斜的原因3.1key分布不均匀3.1.1某些key存在大量相同值3.1.2存在大量异常值或空值3.2业务数据本身的特性3.3SQL语句本身就有数据倾斜3.4建表时考虑不周四、触发数据倾斜的SQL操作五、数据倾斜的解决方案5.1Map长尾优化5.1.1Map读取
- MapReduce
诺冰1314
大数据haoopMapReducehadoopmapreduce大数据
MapReduce定义mapReduce是一个分布式运算程序的编程框架,是用户开发基于hadoop的数据分析应用的核心框架。mapreduce的核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并运行在一个hadoop集群上。MapReduce的优缺点优点:易于编程良好的扩展性高容错性适合tb/pb级以上海量数据的离线处理缺点:不擅长实时计算不擅长流式计算不擅长DAG
- EMS5730 MapReduce program
areyousure7
网络windows数据库
EMS5730Spring2024Homework#0Releasedate:Jan10,2024Duedate:Jan21,2024(Sunday)23:59pm(Note:Thecourseadd-dropperiodendsat5:30pmonJan22.)Nolatehomeworkwillbeaccepted!EveryStudentMUSTincludethefollowingstat
- 排序的区别
incover
orderby(全局排序)对输入的数据做排序,故此只有一个reduce(多个reduce无法保证全局有序);只有一个reduce,会导致当输入规模较大时,需要较长的计算时间。sortby(非全局排序)在数据进入reduce前完成排序;当mapreduce.task>1时,只能保证每个reduce的输出有序,不能保证全局有序。distributeby按照指定的字段对数据进行划分输出到不同的reduc
- 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