- SeaTunnel 社区月报(5-6 月):全新功能上线、Bug 大扫除、Merge 之星是谁?
SeaTunnel
bugSeaTunnel开源数据集成大数据
在5月和6月,SeaTunnel社区迎来了一轮密集更新:2.3.11正式发布,新增对Databend、Elasticsearch向量、HTTP批量写入、ClickHouse多表写入等多个连接器能力,全面提升了数据同步灵活性。同时,近100个修复与优化PR合入,涵盖Spark引擎并行性修复、Paimon精度兼容性增强、Mongo-CDCExactlyOnce默认值优化、OracleDDL类型支持补全
- 微软:LLM训练数据组织框架DELT
大模型任我行
大模型-模型训练人工智能自然语言处理语言模型论文笔记
标题:DataEfficacyforLanguageModelTraining来源:arXiv,2506.21545摘要数据是语言模型(LM)训练的基础。最近的研究一直致力于数据效率,其目的是通过选择训练数据的最小或最优子集来最大限度地提高性能。数据过滤、采样和选择等技术在这一领域起着至关重要的作用。为了补充这一点,我们定义了数据效能,它侧重于通过优化训练数据的组织来最大限度地提高性能,目前尚未得
- c++实现TCP&UDP
做网络通信作业之前的学习!(>。#include#include#pragmacomment(lib,"ws2_32.lib")intmain(){//windows上使用网络功能需要开始网络权限WSADATAwsaData;WSAStartup(MAKEWORD(2,2),&wsaData);//1.创建socket套接字/*socket(intaf,//协议地址簇ipv4/ipv6对应AF_I
- 基于 SASL/SCRAM 让 Kafka 实现动态授权认证
zlt2000
Javajavaspringbootkafka
一、说明在大数据处理和分析中ApacheKafka已经成为了一个核心组件。然而在生产环境中部署Kafka时,安全性是一个必须要考虑的重要因素。SASL(简单认证与安全层)和SCRAM(基于密码的认证机制的盐化挑战响应认证机制)提供了一种方法来增强Kafka集群的安全性。本文将从零开始部署ZooKeeper和Kafka并通过配置SASL/SCRAM和ACL(访问控制列表)来增强Kafka的安全性。二
- 头歌 当HBase遇上MapReduce
敲代码的苦13
头歌hbasemapreduce数据库
头歌当HBase遇上MapReduce第1关:HBase的MapReduce快速入门代码行:packagecom.processdata;importjava.io.IOException;importjava.util.List;importjava.util.Scanner;importorg.apache.hadoop.conf.Configuration;importorg.apache.
- python实现数据库两个表之间的更新操作(模糊匹配)示例
半吊子的程序狗
python
frompymongoimportMongoClientimportpandasaspd#连接到MongoDB(这里假设MongoDB运行在本地默认端口上)mgclient=MongoClient('localhost',27017)#选择数据库(如果你没有指定数据库,MongoDB会使用默认的'test'数据库)db=mgclient['test']#替换'your_database_name'
- linux环境安装达梦数据库
一只小菜鸟啊
数据库linux数据库运维
linux环境安装达梦数据库1安装前准备:1.1安装包准备提前下载达梦的iso安装包下载地址:https://eco.dameng.com/download/1.2新建dmdba用户创建用户组:groupadddinstall创建用户,命令如下:useradd-gdinstalldmdba创建达梦数据库安装目录mkdir-p/dm8/{dminstall,dmdata,dmarch,dabak}将
- 以智能楼宇自动化控制系统为基石,构筑绿色建筑节能增效新标杆
ctrlworks
楼宇自控康沃思物联楼宇自控系统厂家ba系统厂商建筑管理系统厂家ibms系统厂家
在全球“双碳”目标加速推进与能源危机日益凸显的背景下,建筑行业作为能源消耗与碳排放的重点领域,正面临从传统建造向绿色智能化转型的迫切需求。数据显示,我国建筑运行阶段能耗占全社会总能耗超30%,碳排放占比达21.9%,而传统建筑管理模式下设备低效运行、能源浪费等问题普遍存在。智能楼宇自动化控制系统(BACS)凭借物联网、大数据、人工智能等技术,通过对建筑设备的精准监控、智能调度与协同管理,成为破解绿
- uniapp 拦截器
满楼、
前端uni-appvue.js
exportdefault{config:{baseURL:'https://xxx.xxx.com',header:{},dataType:'json',//#ifndefMP-ALIPAY||APP-PLUSresponseType:'text',//#endif//注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部
- MapReduce01:基本原理和wordCount代码实现
冬至喵喵
大数据mapreduce
本篇文章中,笔者记录了自己对于MapReduce的肤浅理解,参考资料主要包括《大数据Hadoop3.X分布式处理实战》和网络视频课程。下文介绍了MapReduce的基本概念、运行逻辑以及在wordCount代码示例。一、MapReduce概述1.概述google为解决其搜索引擎中的大规模网页数据的并行化处理问题,设计了MapReduce,在发明MapReduce之后首先用其重新改写了搜索引擎中we
- Gartnet《Solution Path for Implementing Hybrid Cloud Applications With On-Premises Data》学习心得
架构师学习成长之路
大数据架构
一、引言随着企业数字化转型的深入,混合云架构逐渐成为一种中长期的现实选择。软件架构师们在将应用逻辑迁移到云端的同时,往往面临着数据层难以同步迁移的困境。Gartner的这份报告《SolutionPathforImplementingHybridCloudApplicationsWithOn-PremisesData》为我们提供了一条实施混合云应用的清晰路径,涵盖了从迁移策略的确定、应用与数据层的整
- el-cascader 设置可以手动输入也可以下拉选择
满楼、
vue.jselementuijavascript
el-cascader设置可以手动输入也可以下拉选择稍微修改一下就可食用//datastationNameInput:'',//展示输入框内容isManualInput:false,//判断用户是否在输入//methods//输入框打开CascadertoggleCascader(){constinputEl=this.$refs.cascaderAddr.$el.querySelector('i
- MySQL(114)如何进行数据库负载均衡?
辞暮尔尔-烟火年年
MySQL数据库mysql负载均衡
为了进行数据库负载均衡,我们可以使用SpringBoot和MySQL,并结合AbstractRoutingDataSource来实现数据源的动态切换。下面的实现包括配置多数据源、定义数据源上下文和实现负载均衡策略(如轮询和随机)。项目依赖首先在pom.xml中添加必要的依赖:org.springframework.bootspring-boot-starter-data-jpamysqlmysql
- opencv入门(6) TrackBar调整图片和键盘响应
千殃sama
opencv学习笔记
文章目录1创建trackbar2使用userdata传入函数3键盘响应1创建trackbar1.trackbar名称2.创建在哪个窗口上3.拖动trackbar改变的值4.trackBar的最大值5.trackbar改变时的回调函数6.带入回调函数的数据,可以不用带,是一个void指针createTrackbar(“Valuebar”,“亮度调整”,&lightness,max_value,on_
- php数据导出pdf文件
Z单单
pdf
一.导出pdf文件,首先要安装相关的类库文件,我用的是dompdf类库。1.安装类库文件:composerrequiredompdf/dompdf2.引入类库文件到你的控制器中,创建方法:publicfunctiongeneratePdf(){//你需要打印的查询内容$data=['name'=>'烦烦烦','content'=>'哈哈哈计划经济','img'=>'https:://www.tup
- kafka问题解决笔记
Leo_Hu666
kafka笔记分布式
1.ERRORShutdownbrokerbecausealllogdirsin/tmp/kafka-logshavefailed(kafka.log.LogManager)修改:/data3/kafka_2.12-3.9.1/config/server.propertieslog.dirs=/tmp/kafka-logs-new
- Python爬虫设置代理IP
菜鸟驿站2020
python
配置代理ipfrombs4importBeautifulSoupimportrequestsimportrandom#从ip代理网站获取ip列表defget_ip_list(url,headers):web_data=requests.get(url,headers=headers)soup=BeautifulSoup(web_data.text,'lxml')ips=soup.find_all(
- 知识积累----空转转录因子TF活性的计算框架
追风少年ii
空间数据分析hotspot傅里叶变换机器学习
作者,EvilGenius关于我们外显子的分析课程,我们来一次预报名吧,课表如下第一节:外显子分析基础知识与框架(包括基础文件的格式等)第二节:fastq数据处理到callSNV+基础认知(简单判断谱系突变和体系突变、以及GT:AD:AF:DP等基础信息)第三节(可能需要拆分成2节课):各大数据库如何注释突变信息(clinvar、cosmic、gnomad、HGMD、hotspot、oncoKB、
- golang实现从request请求返回的response中提取网站图标的faviconMMH3, faviconMD5, faviconPath, faviconData, faviconURL
golang实现从request请求返回的response中提取网站图标的faviconMMH3,faviconMD5,faviconPath,faviconData,faviconURL,其中faviconData类型为[]byte,其余为string类型。在Go中提取网站的favicon(网站图标)并计算其MMH3和MD5哈希值,同时获取路径、原始数据和URL,可以通过以下步骤实现:packa
- 08_Excel 导入 - 用户信息批量导入
耀耀_很无聊
【后端开发】Java碎碎念exceljava开发语言
08_Excel导入-用户信息批量导入1.VO类java复制编辑@Data@AllArgsConstructor@NoArgsConstructorpublicclassUserInfoBatch4ExcelReq{@ExcelProperty(value="用户姓名")@Schema(description="用户姓名")privateStringuserName;@ExcelProperty(
- 大数据项目-Django基于大数据技术实现的农产品销售系统
IT实战课堂-玲琳娜
计算机毕业设计大数据javaspark爬虫
《[含文档+PPT+源码等]Django基于大数据技术实现的农产品销售系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog后台管理系统涉及技术:后台使用框架:Django前端使用技术:Vue,HTML5,CSS3、JavaScrip
- Android Jetpack架构组件(四)之LiveData
xiangzhihong8
深入Android应用开发
一、LiveData简介LiveData是Jetpack架构组件Lifecycle库的一部分,是一个可感知生命周期的可观察容器类(Observable)。与常规的可观察类不同,LiveData具有生命周期感知能力,这意味着它具有感知应用组件(如Activity、Fragment或Service)的生命周期的能力,并且LiveData仅更新处于活跃生命周期状态的应用组件观察者。因此,LiveData
- 掌握Android Jetpack,优化移动开发体验
移动开发前沿
移动端开发宝典androidjetpackandroidai
掌握AndroidJetpack,优化移动开发体验关键词:AndroidJetpack、组件化开发、ViewModel、LiveData、Room、Navigation、Compose摘要:本文深入探讨AndroidJetpack组件库的核心架构和使用方法,通过系统化的讲解和实战演示,帮助开发者理解如何利用Jetpack系列组件提升开发效率、构建健壮的Android应用。文章将从基础概念入手,逐步
- MVI+Compose架构实战
Android洋芋
MVIJetpackComposeKotlinFlow状态管理声明式UI
简介本文将深入探讨为什么LiveData不适合在JetpackCompose中使用,并通过完整代码示例展示MVI+Compose架构的实现。从Android架构演进历史到Composable函数的重组机制,从单向数据流原理到StateFlow的线程安全特性,全面解析这一技术趋势背后的深层原因。一、为什么LiveData不适合在JetpackCompose中使用?LiveData与Compose的单
- 树莓派实验——人脸识别
Rounie
opencvpython计算机视觉
importnumpyasnp#导入numpy科学计算库importcv2#导入OpenCV函数库#装载人脸识别特征文件face_cascade=cv2.CascadeClassifier('/usr/local/lib/python3.5/dist-packages/cv2/data/haarcascade_frontalface_alt.xml')cap=cv2.VideoCapture(0)
- JVM调优实战 Day 14 :大数据处理中的JVM调优
在未来等你
JVM调优实战JVMJava性能优化调优虚拟机
【JVM调优实战Day14】大数据处理中的JVM调优文章标签jvm调优,大数据处理,Java性能优化,JVM参数配置,JVMGC调优,Java开发,大数据架构,Jvm实战文章简述在大数据处理场景中,Java应用通常面临内存占用高、GC频率频繁、堆内存不足等挑战。本文作为“JVM调优实战”系列的第14天,深入探讨了大数据处理中的JVM调优策略。文章从概念解析、技术原理、常见问题、诊断方法、调优策略到
- 数据中心双活架构解决方案
数据中心双活架构解决方案数据中心双活架构(Active-ActiveDataCenter)旨在实现业务高可用、负载均衡和灾难自动切换。以下是完整的解决方案,涵盖架构设计、关键技术、实施步骤及最佳实践。1.双活架构设计1.1基本架构模型同城双活(MetroActive-Active)两个数据中心距离≤100km(低延迟,通常100km(延迟较高,通常>10ms)采用异步数据复制(如Kafka+CDC
- [第一章 web入门]SQL注入-2
weixin_40546436
渗透测试
1通过updatexml取数据从页面发现有一个提示如果加上?tips=1的话,通过burpsuite发包可以通过updatexml来查看回显,可以通过这个取到数据下面是通过updatexml来注入,这时4步中用到语句name=admin’andupdatexml(1,concat(0x7e,(select(database())),0x7e),1)#&pass=bbname=admin’andup
- 鸿蒙开发必备技能:六种数据存储方式全解析+实战代码
harmonyos
摘要在当前多设备互联的时代,移动端应用不再局限于单一设备,而是需要在多个终端上保持状态一致、数据同步与持久管理。鸿蒙系统提供了多种数据存储机制,从轻量级状态存储到复杂的数据持久化方案,满足不同场景下的需求。本文将结合实战案例,深入讲解鸿蒙系统中的六大数据存储方式,并配有可运行的代码,帮助开发者快速掌握数据管理方法。引言随着鸿蒙系统的不断发展,越来越多的开发者开始构建面向多设备、多用户、多场景的智能
- IT 行业深度洞察:从技术革命到产业重构的全景图谱
XQR.小白
重构
摘要本文系统梳理IT行业的发展脉络,深入剖析云计算、人工智能、大数据、物联网等核心技术的演进逻辑与协同效应,揭示IT产业在数字化转型浪潮中的生态重构与价值创造。通过典型案例分析与数据支撑,探讨行业面临的技术挑战、伦理困境与全球化竞争格局,展望IT技术如何持续驱动社会变革与产业升级。全文结合2025年最新技术动态与市场趋势,为从业者、投资者与研究者提供兼具理论深度与实践指导的行业参考。目录摘要一、I
- 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