- CDP中的Hive3之Apache Hive3特性
对许
#Hive#Sparkhivecdp
CDP中的Hive3之ApacheHive3特性1、ApacheHive3特性2、Hive不支持的接口和功能3、HiveonTez简介4、ApacheHive3架构概述CDP中采用的是ApacheHive3版本,相比Hive1/2,该版本在事务和安全性等方面有重大改进,了解这些版本之间的主要差异对于SQL用户至关重要,包括使用ApacheSpark和ApacheImpala的用户1、ApacheH
- Hadoop 与 Spark:大数据处理的比较
王子良.
大数据经验分享hadoopspark大数据
欢迎来到我的博客!非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。博客内容包括:Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Fli
- Hive关于数据表的增删改(内部表、外部表、分区表、分桶表 & 数据类型、分隔符类型)
黄饱饱_bao
Hivehive数据分析
建表基本语句格式CREATE[external]TABLEifnotexistsstudent#默认建立内部表,加上external则是建立外部表(idintCOMMENT'学号',snamestringCOMMENT'用户名',ageintCOMMENT'年龄')#字段名称,字段类型,字段描述信息COMMENT'记录学生学号'#表的描述信息PARTITIONBY(departmentstring
- Hive(11):Transactional Tables事务表
不死鸟.亚历山大.狼崽子
hivehivehadoop数据仓库
1Hive事务背景知识Hive本身从设计之初时,就是不支持事务的,因为Hive的核心目标是将已经存在的结构化数据文件映射成为表,然后提供基于表的SQL分析处理,是一款面向分析的工具。且映射的数据通常存储于HDFS上,而HDFS是不支持随机修改文件数据的。这个定位就意味着在早期的Hive的SQL语法中是没有update,delete操作的,也就没有所谓的事务支持了,因为都是select查询分析操作。
- Hive建表时开启事务机制导致insert失败
大数据学习与分享
HadoopHive大数据hivehadoop
建表语句:createtableA(table_codestring,data_dtstring,update_dtstring)clusteredby(table_code)into1bucketsrowformatdelimitedfieldsterminatedby'\033'storedasorc--orc格式tablproperties('transactional'='true');执
- 【YashanDB知识库】归档日志清理
数据库
本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7281311.html?templateId=171...问题:按照官方文档提供的清理归档日志三种方式,手动删除归档日志文件返回succeed后,发现归档日志文件仍然存在原因:按照Yashan的默认配置,如果archivelog没有备份,没有同步到备机时,归档日志是不能删除的。因此考
- 基于MRS-Hudi构建数据湖的典型应用场景介绍
华为云技术精粹
云计算华为云
一、传统数据湖存在的问题与挑战传统数据湖解决方案中,常用Hive来构建T+1级别的数据仓库,通过HDFS存储实现海量数据的存储与水平扩容,通过Hive实现元数据的管理以及数据操作的SQL化。虽然能够在海量批处理场景中取得不错的效果,但依然存在如下现状问题:问题一:不支持事务由于传统大数据方案不支持事务,有可能会读到未写完成的数据,造成数据统计错误。为了规避该问题,通常控制读写任务顺序调用,在保证写
- hvie SQL优化之where子句过滤模式
三生暮雨渡瀟瀟
hive调优hive
本篇文章来源于《Hive性能调优实现》。在HiveSQL里面经常用到的过滤方法就是使用where子句,例如:explainselect*fromstudent_tb_seqwheres_age=19ands_namelike'%红%'ands_scorein(100,50,22);where子句在执行计划中以filter操作表示,代码如下:STAGEPLANS:Stage:Stage-1MapRe
- git 常用命令 git archive
张紫娃
GITgit
gitarchive是Git中用于创建一个包含指定提交或分支中所有文件的归档文件(如.tar或.zip)的命令。这个命令非常适合用于分发项目快照、备份代码库或导出特定版本的文件。gitarchive--format=zip--output=project.zipHEAD创建整个项目的.zip归档gitarchive--format=zip--output=project.zipHEAD-v-v查看
- Android Studio 找不到 uploadArchives 入口
程思扬
Android记录androidstudioandroidide
在4.2之前版本的AndroidStudio中想要module打包arr,上传Maven我们只需要在对应module的build.gradle文件顶部添加applyplugin:'maven'然后每一次修改记得要修改版本号,相同版本号提交失败,是不会覆盖的defaultConfig{......versionName"1.0.0"//版本号...</
- 基于飞腾平台的Hive的安装配置
后端hive大数据数据库运维
【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧本文分享至飞腾开发者平台《飞腾平台Hive3.1.2
- scrapy学习之爬虫练习平台爬取
LLLibra146
爬虫python
本文章首发于个人博客,链接为:https://blog.d77.xyz/archives/35dbd7c9.html前言为了练习Scrapy,找了一个爬虫练习平台,网址为:https://scrape.center/,目前爬取了前十个比较简单的网站,在此感谢平台作者提供的练习平台。环境搭建开始爬取前,首先要先把环境搭建起来,Pycharm新建项目learnscrapy和对应的虚拟环境,安装好Scr
- Docker+gitlab+jenkins实现项目自动部署
Java小海.
springjava后端
一、Docker安装(CentOS)1、准备工作系统要求以下为官网原文ToinstallDockerEngine,youneedamaintainedversionofCentOS7or8.Archivedversionsaren’tsupportedortested.Thecentos-extrasrepositorymustbeenabled.Thisrepositoryisenabledby
- 在VS-Code配置Anaconda环境
m0_47563195
配置pythonconda编辑器
准备工作:一台没有安装Python,Anaconda及VS-Code的window10系统的电脑第一步:安装Anaconda由于在官网下载安装包比较慢,所以可以选择在清华大学开源软件镜像站进行下载(Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror),具体安装过程及环境配置可参考文章Anaconda环境与Python的配置方
- hive电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]
QQ-1305637939
毕业设计大数据毕设计算机毕业设计hivespringboot爬虫
hive电影数据分析Springboot协同过滤-余弦函数推荐系统爬虫2万+数据大屏数据展示+[手把手视频教程和开发文档]【功能介绍】1.java爬取【豆瓣电影】网站中电影数据,保存为data.csv文件,数据量2万+2.data.csv上传到hadoop集群环境3.MR数据清洗data.csv4.Hive汇总处理,将Hive处理的结果数据保存到本地Mysql数据库中5.Springboot+Vu
- 360校招——最后赢家(C++)
c++
⭐文章链接:www.mengyingjie.com/archives/39/⭐最后赢家时间限制:C/C++语言1000MS;其他语言3000MS内存限制:C/C++语言65536KB;其他语言589824KB题目描述:最强的不一定是最后的赢家。某赛事有n名选手参加,但是不同于其他的比赛,本比赛采取的是擂台赛的形式,n名选手排成一排,每次队伍的第一位和第二位选手进行比赛,输的一方会排到队尾。当某位选
- 大数据学习(36)- Hive和YARN
viperrrrrrr
大数据学习hive
&&大数据学习&&系列专栏:哲学语录:承认自己的无知,乃是开启智慧的大门如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦当客户端提交SQL作业到HiveServer2时,HiveServer2会根据用户提交的SQL作业及数据库中现有的元数据信息生成一份可供计算引擎执行的计划。每个执行计划对应若干MapReduce作业,Hive会将所有的MapReduce作业都提交到YARN中。Y
- hive-04-Hive函数大全
九师兄
大数据-hivehive函数
一、关系运算:1.等值比较:=语法:A=B操作类型:所有基本类型描述:如果表达式A与表达式B相等,则为TRUE;否则为FALSE举例:hive>select1fromlxw_dualwhere1=1;12.不等值比较:B
- Hive PERCENTILE_APPROX 函数详解
_Magic
hivehadoop数据仓库
HivePERCENTILE_APPROX函数详解PERCENTILE_APPROX是Hive中一个重要的函数,用于近似计算数据的百分位数。本文介绍PERCENTILE_APPROX的原理、参数以及核心概念B值等信息。函数语法PERCENTILE_APPROX(expression,percentage[,B])expression:输入的数值列,通常是需要计算百分位数的字段。percentage
- Hive SQL 分组与连接操作详解
大数据深度洞察
Hive数据库hive大数据数据仓库sql
目录分组GroupBy语句1.案例实操Having语句1.having与where不同点2.案例实操Join语句等值Join1.案例实操表的别名1.好处2.案例实操内连接左外连接右外连接满外连接多表连接1.创建位置表2.导入数据3.多表连接查询笛卡尔集1.笛卡尔集会在下面条件下产生2.案例实操联合(union&unionall)1.union&unionall上下拼接2.案例实操分组GroupBy
- Hadoop 常用命令
ZenPower
hadoop大数据分布式
查看指定目录下的文件及文件夹hadoopfs-ls/user/hive/warehouse/查看指定目录下的文件及文件夹大小#文件大小(单位Byte)hadoopfs-du/user/hive/warehouse#文件大小(单位人性化)hadoopfs-du-h/user/hive/warehouse#文件大小(只显示汇总)hadoopfs-du-s/user/hive/warehouse删除指定
- MySQL字段约束条件,外键约束条件,表关系
Yietong309
MySQL数据库mysql数据库开发语言
目录字符编码与配置文件统一字符编码存储引擎修改存储引擎的方式自定义选项存储引擎不同存储引擎产生的表文件有几个?MERGEInnoDBArchiveBLACKHOLEblackhole与memory存取数据的特征Blackhole:丢弃写操作,读操作会返回空内容Memory:置于内存的表创建表的完整语法字段类型之整型字段类型之浮点型字段类型之字符类型字段类型之枚举与集合字段类型之日期类型约束条件自增
- 麒麟系统下载依赖到本地
乙龙
linuxkylin
在麒麟系统中下载依赖到本地,主要有以下几种方法:使用apt命令只下载不安装:在连接互联网的电脑上,使用sudoapt-get-dinstall命令,可以只下载软件包及其依赖到/var/cache/apt/archives目录下,而不进行安装。例如,要下载minicom及其依赖,可分别执行sudoapt-get-dinstallminicom*和sudoapt-get-dinstalllibtinf
- Apache Hive
_从头再来_
大数据
一、ApacheHive简介官方网址:https://hive.apache.org/TheApacheHive™datawarehousesoftwarefacilitatesreading,writing,andmanaginglargedatasetsresidingindistributedstorageusingSQL.Structurecanbeprojectedontodataalr
- tar命令详解:解压与压缩的技巧
wx_tangjinjinwx
tarlinux
tar命令详解:解压与压缩的技巧大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在日常的系统管理和文件处理过程中,tar命令是一个非常重要的工具。它不仅用于压缩文件,还可以用于解压缩。本文将详细介绍tar命令的用法,包括压缩和解压缩的技巧。一、tar命令概述tar(tapearchive)是一个用于打包和压缩文件的命令行工具。它可以将多个文件和目录打包成一个文件,也可
- Hadoop 和 Spark 的内存管理机制分析
王子良.
经验分享hadoopspark大数据
欢迎来到我的博客!非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。博客内容包括:Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Fli
- 在线格式化XML
weixin_34250709
有时候要格式化一下XML,有没有好的小工具,这里有一个在线版本,好使!http://xmlindent.com/转载于:https://www.cnblogs.com/DotNetNuke/archive/2010/07/14/1777096.html
- Hive小文件合并
云掣YUNCHE
hivehadoop数据仓库
作者:振鹭一、参数配置:在Map输入的时候,把小文件合并。--每个Map最大输入大小,决定合并后的文件数setmapred.max.split.size=256000000;--一个节点上split的至少的大小,决定了多个datanode上的文件是否需要合并setmapred.min.split.size.per.node=100000000;--一个交换机下split的至少的大小,决定了多个交换
- hive小文件合并机制_hive小文件的问题弊端以及合并
做生活的创作者
hive小文件合并机制
小文件的弊端1、HDFS中每个文件的元数据信息,包括位置大小分块信息等,都保存在NN内存中,在小文件数较多的情况下,会造成占用大量内存空间,导致NN性能下降;2、在读取小文件多的目录时,MR会产生更多map数,造成GC频繁,浪费集群资源;3、现在大数据平台文件总数超过30亿,单个NS文件数超过4亿的时候,读写性能会急剧下降,影响到所有读写该NS的任务性能;4、如果队列限制最大map数是20000,
- 数仓建模(五)选择数仓技术栈:Hive & ClickHouse & 其它
昊昊该干饭了
数仓建模大数据hiveclickhousehadoop
在大数据技术的飞速发展下,数据仓库(DataWarehouse,简称数仓)成为企业处理和分析海量数据的核心工具。市场上主流数仓技术栈丰富,如Hive、ClickHouse、Druid、Greenplum等,对于初学者而言,选择合适的技术栈是一项挑战。本文将详细解析Hive、ClickHouse及其他数仓技术,帮助读者根据场景需求选择最佳工具。目录一、数据仓库的基础概念和技术选型原则1.1什么是数据
- 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