- Tomcat 8.0.12安装流程
小魚資源大雜燴
tomcatjavalinux
需要确保系统已经安装了JavaDevelopmentKit(JDK)7或更高版本。可以通过以下命令检查Java是否安装以及版本信息:shjava-version如果未安装Java,需要先下载并安装适合你操作系统的JDK。Windows系统安装流程步骤1:下载Tomcat8.0.12打开浏览器,访问ApacheTomcat的存档页面:https://archive.apache.org/dist/t
- 京东Hive SQL面试题实战:APP路径分析场景解析与幽默生存指南
数据大包哥
#大厂SQL面试指南hivesqlhadoop
京东HiveSQL面试题实战:APP路径分析场景解析与幽默生存指南“数据开发工程师的终极浪漫,就是把用户路径写成诗——用HiveSQL押韵。”——某不愿透露姓名的SQL诗人一、题目背景:来自京东的真实需求假设你是京东APP的数据工程师,现在需要分析用户在APP中的访问路径特征。原始日志表user_behavior结构如下:字段名类型说明user_idBIGINT用户ID(脱敏)session_id
- 【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据
oo寻梦in记
ApachePaimonapacheflinkmysqlapachepaimon
利用PaimonSchemaEvolution核心特性同步变更的mysql表结构和数据1、背景信息在Paimon诞生以前,若mysql/pg等数据源的表结构发生变化时,我们有几种处理方式(1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中(2)使用flink消费DDLbinlog,然后自动更新Hive的外部表和内部表schema那么现在,有了Paimon,我们可以利用其特性,自动
- jdbc连接数据库步骤oracle,jdbc连接oracle数据库的步骤
weixin_39726044
使用E-MapReduce集群sqoop组件同步云外Oracle数据库数据到集群hiveE-MapReduce集群sqoop组件可以同步数据库的数据到集群里,不同的数据库源网络配置有一些差异网络配置。最常用的场景是从rdsmysql同步数据,最近也有用户询问如何同步云外专有Oracle数据库数据到hive。云外专有数据库需要集群所有节点通过公网访问,要创建VPC网络,使用VPC网络...文章鸿初2
- Anaconda配置tensorflow-gpu教程
rubisco214
tensorflow人工智能python
最近在入门tensorflow深度学习,配置环境吃了不少苦头,写个完整的教程首先得在自己主机上装cuda(我之前就是主机上没装cuda,只在虚拟环境里面装了,结果jupyter里面怎么调都识别不到GPU)打开Nvidia控制面板,左上角帮助-系统信息-组件NVCUDA64.DLL后面的NVIDIACUDA12.1就是你的显卡支持的CUDA版本,去CUDA官网CUDAToolkitArchive|N
- linux压缩解压文件夹命令 zip unzip 和 tar
luoluosheng07
linuxlinux运维服务器
1.zip和unzip(处理.zip文件)压缩文件夹zip-r压缩包名.zip文件夹名-r:递归压缩子目录内容。示例:zip-rmyarchive.zipmydir解压文件unzip压缩包名.zip-d目标目录-d:指定解压目录(默认当前目录)。示例:unzipmyarchive.zip-d/path/to/extract查看压缩包内容unzip-l压缩包名.zip2.tar(处理.tar、.ta
- python 一小时 教程
wsf_123456
pythonPython编程CC#C++
1序言面向读者本文适合有经验的程序员尽快进入Python2.x世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序.Python3.x用户请参考:http://www.cnitblog.com/yunshichen/archive/2009/04/01/55924.html(由于Django不支持python3,所以为了你的发展
- HIVE 面试题总结
小余真旺财
Hivehive
Hive依赖于HDFS存储数据,Hive将HQL转换成MapReduce执行,所以说Hive是基于Hadoop的一个数据仓库工具,实质就是一款基于HDFS的MapReduce计算框架,对存储在HDFS中的数据进行分析和管理。一、Hive架构用户接口:CLI(hiveshell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)元数据:元数据包括:表名、表所属的数据库(默
- Hive 面试题
昨夜为你摘星
什么是Hive?Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的意义(最初研发的原因)?降低程序员使用Hadoop的难度,降低学习成本Hive的内部组成模块,作用
- hivePB级迁移方案
我要用代码向我喜欢的女孩表白
数据库bigdata-大数据专栏hive
1、评估磁盘空间大小、调整副本数、设置heapsize大小2、distcp-i-skipcrccheck源端到目标端,迁移3、元数据迁移,建表,替换location地址,或者导出db4、表分区修复5、配置增量T-1迁移或者T-26、校验历史分区脚本,表结构,大小,文件数7、根据ditcp不对的,进行补数脚本,删分区,重拉8、任务校验,客户跑完任务后,校验指定分区的count数和内容的md59、任务
- Hive基本操作
小肥柴呀
ApacheHivehive数据库
Hive基本操作1.Hive常用命令1.1Hive启动1.2Hive退出1.3Hive查看历史命令1.4Hive常用交互命令2.数据库基本操作2.1创建数据库2.2创建数据库并指定hdfs存储位置2.3删除空数据库2.4强制删除非空数据库2.5查看所有数据库2.6查看数据相关信息2.7数据库切换2.8修改数据库3.数据表基本操作3.1创建表3.1.1创建表的方式3.1.2创建内部表3.1.3创建外
- hive迁移补数脚本细粒度 表名-分区唯一键
我要用代码向我喜欢的女孩表白
hivehadoop数据仓库
假设我通过对数脚本发现,这些表对不上。假设检测出来是这样的(这些表存在于源端,但不存在目标端)我们需要从源端迁移过去。diff.txtads_xx1dt=20250219ads_xx2dt=20250217ads_xx2dt=20250218ads_xx2dt=20250219ads_xx3dt=20250217ads_xx4dt=20250217bak_xx1dt=20250109bak_xx1
- 国产唯一开源湖仓框架LakeSoul 2.0 重磅升级:支持快照回滚、Flink和Hive对接
元灵数智
大数据数据库spark
首先,附上Github链接LakeSoul:https://github.com/meta-soul/LakeSoul,可搜索公众号元灵数智,在底部菜单了解我们-用户交流获取官方技术交流群二维码,进群与业内大佬进行技术交流。DMetaSoul团队于7月初发布了LakeSoul2.0版本,对1.0版本进行了多方面升级优化,提高了自身架构设计的灵活性,也更好地适应客户未来业务高速发展的需要。2.0版本
- shell字典数组
吃不到的烤鱼
shell脚本
转自:http://www.firefoxbug.com/index.php/archives/2369/#shell字典数组#!/bin/bashecho"shell定义字典"#必须先声明declare-Adicdic=([key1]="value1"[key2]="value2"[key3]="value3")#打印指定key的valueecho${dic["key1"]}#打印所有key值e
- HTTP 协议
星竹
服务器http网络协议服务器
项目:csdn:https://blog.csdn.net/2303_76953932/article/details/142704176?spm=1001.2014.3001.5501halo:https://xingzhu.top/archives/webfu-wu-qi-xiao-xiang-mu-linux-c-epoll说明:参考学习:https://www.bilibili.com/v
- Flink连接kerberos认证的hive 并使用table API
lisacumt
flinkhive大数据
有个问题flink的kerveros通过配置设置。但是HiveCatalog还需要再次使用UserGroupInformation再次认证。直接上代码:importcom.amihaiemil.eoyaml.*;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importorg.apa
- Hive SQL 使用及进阶详解
小四的快乐生活
hivesqlhadoop
一、Hive简介Hive是建立在Hadoop之上的数据仓库基础架构,它提供了类似于SQL的查询语言HiveSQL(也称为HQL),用于对存储在Hadoop分布式文件系统(HDFS)中的大规模数据进行数据查询和分析。Hive将SQL查询转换为MapReduce、Tez或Spark等分布式计算任务,使得不熟悉Java编程的数据分析人员也能方便地处理大规模数据。二、HiveSQL基础使用(一)环境准备在
- linux 打包解压命令
luoluosheng07
linuxlinux服务器运维
1.Linux打包和解压命令打包命令tar命令是最常用的打包工具,可以用来创建归档文件。创建一个名为archive.tar的tar包:tar-cvfarchive.tar/path/to/directory/这里:c表示创建新的归档文件。v表示在打包过程中显示文件。f指定归档文件的名称。zip命令用于创建zip格式的压缩文件。zip-rarchive.zip/path/to/directory/这
- Hadoop 基础原理
disgare
数据库hadoop大数据分布式
Hadoop基础原理基本介绍Hadoop的必要性Hadoop核心组件Hadoop生态系统中的附加组件HDFSHDFS集群架构HDFS读写流程HDFS写流程HDFS读流程NameNode持久化机制MapReduce底层原理示例Hadoop是一个由Apache基金会开发的分布式系统基础架构,主要解决海量数据的存储和计算问题,广义上Hadoop指的是Hadoop生态圈,包含HDFS、Hive、MapRe
- nodejs npm run build 打包压缩zip文件
xiaoxiao_0721
vue
步骤1:安装npminstallarchiver-D步骤2:根目录下新建zip.js,内容如下constfs=require('fs')constarchiver=require('archiver')//创建文件输出流letoutput=fs.createWriteStream(__dirname+'/dist.zip')letarchive=archiver(
- 本地Oracle数据库复制数据到Apache Hive的Linux服务器集群的分步流程
weixin_30777913
数据库大数据hive
我们已经有安装ApacheHive的Linux服务器集群,它可以连接到一个OracleRDS数据库,需要在该Linux服务器上安装配置sqoop,然后将OracleRDS数据库中所有的表数据复制到Hive。为了将本地Oracle数据库中的所有表数据复制到ApacheHiveLinux服务器集群中,您可以遵循以下详细步骤:第一步:安装和配置Sqoop1.下载并安装Sqoop您可以从ApacheSqo
- preview_220624,Day08_DM层建设实战,
啊六六六
Python大数据数据挖掘数据仓库
DM名称:数据集市层DataMarket功能:基于DWS层日统计宽表,上卷出周、月、年等统计宽表,即粗粒度汇总。解释从理论层面来说,数据集市是一个小型的部门或工作组级别的数据仓库。一些公司早期的数据集市后期可能会演变成为数仓系统。本项目中在数据集市层面主要进行粗粒度汇总,也可以将这些功能下放至DWS层完成。抛弃DM.使用DataGrip在Hive中创建dm层注意,对于建库建表操作,需直接使用Hiv
- MySQL 8 公用表表达式(CTE)—— WITH关键字深入用法
gmHappy
大数据学习javawebJavamysql数据库with递归
一、前言公用表表达式(CTE)是一个命名的临时结果集,它存在于单个语句的范围内,可以在该语句中引用,可能多次。对于逻辑复杂的SQL,可以大大减少临时表的数量,提升代码的可读性、可维护性。更多介绍请查看官网:https://dev.mysql.com/blog-archive/mysql-8-0-labs-recursive-common-table-expressions-in-mysql-cte
- jar、war、pom
JIU_WW
jarjava
1.jar定义与用途用途:默认打包类型,生成JAR文件(JavaArchive),适用于普通Java应用或库。场景:开发工具类库(如commons-lang.jar)。构建可执行应用(通过java-jar运行)。关键行为构建流程:执行mvnpackage后,生成target/.jar。包含编译后的.class文件、资源文件(如.properties)和META-INF/MANIFEST.MF。依赖
- MAC电脑 初始化 开发环境(Java + Node)
Kevin_K2
macosjava开发语言
1.后端1.1Java下载地址https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html1.2Maven安装https://archive.apache.org/dist/maven/maven-3/1.3maven环境变量exportMAVEN_HOME=/Users/kevin/Soft/a
- centOS 7.9 安装JDK MYSQL
he25819
centosjavamysql
jdk:JavaArchiveDownloads-JavaSE17.0.12andearlierCentOS安装JDK17教程(完整版)-秦胜飞-博客园sudoyumupdatewgethttps://download.oracle.com/java/17/archive/jdk-17.0.3.1_linux-x64_bin.rpmyuminstall./jdk-17.0.3.1_linux-x6
- 显卡3050ti等安培架构的GPU安装paddlepaddle
社会闲散人员中的代码爱好者
python环境搭建python人工智能深度学习
3050ti等安培架构的GPU安装paddlepaddle官网原话如果您使用的是安培架构的GPU,推荐使用CUDA11.2如果您使用的是非安培架构的GPU,推荐使用CUDA10.2,性能更优其他配套确定软件版本后,到官网下载对应版本的软件CUDA:CUDAToolkitArchive|NVIDIADevelopercuDNN:cuDNNArchive|NVIDIADeveloper这里需要下载CU
- Oracle 19C DataGuard GAP 修复过程(RECOVER STANDBY DATABASE FROM SERVICE)
莳花微语
Oracleoracle数据库ADG
1.介绍DGGAP顾名思义就是:DG不同步,当备库不能接受到一个或多个主库的归档日志文件时候,就发生了GAP。那么,如果遇到GAP如何修复呢?DGGAP主要分为以下两类情况:主库归档日志存在,可以通过配置FetchArchiveLog(FAL)参数,自动解决归档GAP;主库归档日志丢失,需要人工干预来修复;不同Oracle版本的GAP修复方式也不尽相同,下面分别介绍不同版本的方式!11G的处理步骤
- 利用Python imaplib和email模块 读取邮件文本内容及附件内容
aobian2884
python
python使用imap接收邮件的过程探索https://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html#!encoding:utf8'''环境:Win1064位Python2.7.5参考:http://www.pythonclub.org/python-network-application/email-formathttp://blog
- hive运维
花泽啸
Hivehive
hive锁相关showlocks;查看锁unlocktable表名;释放锁发现释放不了锁,执行下面sethive.support.concurrency=false;sethive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager;然后在unlock还是不行的的话:select*fromHIVE_LOCKS;关闭hivese
- 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