- 《从零构建大模型》系列(21):从头实现GPT模型——构建文本生成引擎
本文将带你从零构建类GPT模型:通过实现层归一化、前馈网络和Transformer块等核心组件,打造一个完整的文本生成模型架构,为后续训练奠定基础。目录一、GPT模型架构全景图1.1模型组件分解1.2GPT-2模型规格二、层归一化实现2.1为什么需要层归一化?2.2层归一化实现代码三、前馈神经网络实现3.1GPT中的前馈结构编辑3.2GELU激活函数3.3完整前馈网络实现四、Transformer
- Vue.config全局配置
辉夜真是太可爱啦
1.取消Vue所有的日志与警告。Vue.config.silent=true;2.Vue自定义键名Vue.config.keyCodes={v:86,f1:112,//camelCase不可用mediaPlayPause:179,//取而代之的是kebab-case且用双引号括起来"media-play-pause":179,up:[38,87]}3.设置为false以阻止vue在启动时生成生产提
- flutter app内跳转到其他安卓 app的方法
Wuxiaoming135
flutterandroid前端
flutter内的关键代码导包:url_launcher:^6.3.1跳转逻辑:onPressed:()async{awaitlaunchUrl(Uri.parse('demoname://'));},安卓内的关键代码安卓中仅仅添加如上代码便可以实现让外部app跳转,但是并不会新开一个应用,点击跳转按钮会发现仍旧处在原来的app中,如下:默认情况下,scheme跳转会复用已有的任务栈(Task),
- 今日欧美圈:全英音乐奖获奖名单速递,哈卷情人节遭持刀抢劫
胡萝卜音乐
今天凌晨进行的2020年全英音乐奖完整获奖名单如下:年度专辑:Dave-"PSYCHODRAMA"年度单曲:LewisCapaldi-"SomeoneYouLoved"最佳男歌手:Stormzy最佳女歌手:Mabel最佳组合:Foals最佳新人:LewisCapaldi最佳国际男歌手:Tyler,TheCreator最佳国际女歌手:BillieEilish潜力新星:Celeste英媒报道Harry
- 关于事务的传播方式
ruan114514
java数据库开发语言mysql
传播行为定义了当一个事务方法被另一个事务方法调用时,事务应该如何进行。它决定了新方法是加入已有的“事务组”,还是自己单开一个“新项目组”,或者干脆不参与“项目组”(事务)。核心传播行为详解与示例:假设我们有两个服务方法:ServiceA.methodA()和ServiceB.methodB()。methodA内部调用了methodB。1.REQUIRED(默认)-“一起干”或“开新组”含义:如果当
- zabbix自动发现告警配置
yeahzxw
监控#zabbix服务器linux运维
自动发现告警配置一、目录文件数详细配置1、编写shell自动发现脚本cd/home/yeahzxw/script/discoverdir.sh#!/bin/bashconf=/home/yeahzxw/script/conf/key_dir.cfgINDEX=0echo'{'echo'"data"':[COUNT=`cat$conf|wc-l`cat$conf|whilereadLINEDIRCO
- 如何运用心流?
彭思鹏
今天一起床就发现自己没有烧好水,又去准备烧水。生活中是不是经常有事情多而杂,有时候会忘记某些眼前的事。就像我写文章的时候,也会没有思路,就像电路突然之间短路一样,而且这种情况经常会发生。不过在这个过程中也会产生“心流”。那什么是心流呢?心流(英语:Mentalflow)在心理学中是指一种人们在专注进行某行为时所表现的心理状态。只不过我这种心流是一个瞬间,我不会让这种“心流”长时间存在。为此我还专门
- Python脚本压缩图片大小,不损害图片质量
凉风听雪
Pythonpython开发语言
Python源码:同步绑定有exe文件,可下载直接使用importosfromPILimportImagedefcompress_images(input_folder,quality):#确定输出文件夹路径为输入路径同级的"out"output_folder=os.path.join(os.path.dirname(input_folder),"out")#确保输出文件夹存在ifnotos.pa
- Springboot 实现热部署
小白的代码日记
springbootjava数据库
spring为开发者提供了一个名为spring-boot-devtools的模块来使SpringBoot应用支持热部署,提高开发者的开发效率,无需手动重启SpringBoot应用。引入依赖org.springframework.bootspring-boot-devtoolstrue修改java代码或者配置文件模板后可以通过ctrl+f9来实施热部署。启动项目:Ctrl+f9实施热部署修改项目内容
- Android Fragment 嵌套使用
Lrxc
1setUserVisibleHint只有fragment与viewpager配合使用,才会调用3onHiddenChanged的回调时机当使用add()+show(),hide()跳转新的Fragment时,旧的Fragment回调onHiddenChanged(),不会回调onStop()等生命周期方法,而新的Fragment在创建时是不会回调onHiddenChanged(),这点要切记。
- RocketMQ源码级实现原理-NameServer路由机制
每天的每一天
java-rocketmqrocketmqjava
面试题从年末生产故障解锁RocketMQ集群部署的最佳实践-求其在我-博客园操作系统tcp链接established但是没超时的问题_mob6454cc769a22的技术博客_51CTO博客net.ipv4.tcp_retries2作用介绍-郭流水-博客园TCP保活机制的根本意义,就是要让本端能够,及时感知对端的服务进程是不是挂了,或者对端服务器本身宕机了,方便本端针对此情况做出后续的处理比如上面
- OpenSearch SQL 查询完整指南
OpenSearchSQL查询完整指南目录基础查询字符串查询数值查询日期时间查询数组和嵌套查询聚合查询地理空间查询全文搜索复杂查询性能优化基础查询基本SELECT--查询所有字段SELECT*FROMindex_name;--查询特定字段SELECTname,age,emailFROMusers;--使用别名SELECTnameASuser_name,ageASuser_ageFROMusers;
- 回归损失函数2 : HUber loss,Log Cosh Loss,以及 Quantile Loss
均方误差(MeanSquareError,MSE)和平均绝对误差(MeanAbsoluteError,MAE)是回归中最常用的两个损失函数,但是其各有优缺点。为了避免MAE和MSE各自的优缺点,在FasterR-CNN和SSD中使用SmoothL1SmoothL1损失函数,当误差在[−1,1][−1,1]之间时,SmoothL1SmoothL1损失函数近似于MSE,能够快速的收敛;在其他的区间则近
- AirPlay认证是什么?AirPlay认证流程有哪些(ai)
Microtest_CS
AirPlay认证
在当今日益数字化的世界中,无线连接技术已成为我们日常生活中不可或缺的一部分。其中,AirPlay作为苹果公司推出的一种无线媒体播放技术,为用户提供了将音频、视频和照片等内容从iOS设备、Mac电脑等发送到AppleTV、HomePod或其他兼容设备的便捷方式。然而,为了确保用户能够获得最佳体验,苹果公司对于支持AirPlay的设备或软件有着严格的认证流程,这就是所谓的AirPlay认证。一、Air
- SpringBoot 3.0 挥别 spring.factories,拥抱云原生新纪元
nextera-void
java开发语言springboot
Hi,各位SpringDevelopers。如果你从SpringBoot1.x或2.x的时代一路走来,那么META-INF/spring.factories这个文件对你来说一定不陌生。它就像是SpringBoot自动配置王国里一位沉默但权势滔天的“老臣”,默默地支撑着整个自动配置体系的运转。然而,在SpringBoot3.0的浪潮中,这位“老臣”被光荣地“劝退”了。这个变化绝非小题大做。它是一次深
- SQL中EXPLAIN命令详解
FSW...
mysql数据库sql
SQL中EXPLAIN命令详解explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explainselectsurname,first_nameforma,bwherea.id=b.id1、EXPLAINtbl_nameEXPLAINtbl_name是DESCRIBE
- 将EXCEL或者CSV转换为键值对形式的Markdown文件
人工智能训练师
知识库数据库excel人工智能
#创建命令行参数解析器parser=argparse.ArgumentParser(description='将CSV或Excel文件转换为带标头的Markdown格式')#必需参数parser.add_argument('input_file',help='输入文件路径(CSV或Excel)')parser.add_argument('output_file',help='输出Markdown文
- 如何用纯 HTML 文件实现 Vue.js 应用,并通过 CDN 引入 Element UI
人工智能训练师
VUEhtmlvue.jsui
相关名词解释Vue.jsVue.js:是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,提供声明式的、组件化的编程模型,可高效开发用户界面。具有响应式数据绑定等特性,能自动跟踪数据变化并更新DOM。ElementUI:是一个基于Vue.js的流行前端UI框架,由饿了么团队开发和维护。它提供了一系列预设计的Vue组件,如按钮、输入框、表格等,可帮
- 零基础学习性能测试第一章:核心性能指标-吞吐量QPS/TPS
试着
性能测试学习性能测试零基础性能指标QPSTPS
目录零基础学习性能测试:第一章-核心性能指标:吞吐量(QPS/TPS)一、吞吐量核心概念解析1.吞吐量定义与分类2.核心区别与关系二、吞吐量关键价值与工作应用1.吞吐量的业务意义2.实际工作场景应用三、吞吐量测试实战指南1.测试工具选择2.JMeter吞吐量测试全流程3.关键配置参数四、吞吐量瓶颈分析与优化1.瓶颈定位四步法2.常见瓶颈及解决方案3.优化案例:电商系统吞吐量提升五、工作应用模板与工
- 如何通过 WebSocket 接口订阅实时外汇行情数据(PHP 示例)
quant_1986
websocketphp网络协议开发语言后端网络金融
步骤1:准备工作确保已安装PHP和Composer安装WebSocket客户端库:composerrequiretextalk/websocket步骤2:编写代码订阅行情以下是最简可运行的PHP示例,订阅EUR/USD的1分钟K线数据:60]);//构造订阅请求$initMessage=["code"=>10004,"trace"=>uniqid(),"data"=>["arr"=>[["type
- 前端------Filter
童小纯
前端系列---从入门到深化htmlvue
其实数组的很多函数需要的参数都是一样的arr.fun((item,index,arr)=>{item:数组的元素index:数组元素在的位置arr:整个数组})Filter是数组的一个用法,用来返回一个数组,满足特定条件的数组中的元素letarr=[1,2,3,4];letnewArr=arr.filter((item,index,arr)=>{console.log("数组元素${item}")
- 拖拽放大镜 购买查看照片
不惧_f01e
这里是用三张图做成一套放大镜Document*{padding:0;margin:0;list-style:none;}.box{width:400px;height:500px;margin-left:100px;/*border:3pxsolid#00f;*/}.m{width:400px;height:400px;/*border:1pxsolid#000;*/position:relati
- 零基础学习性能测试第一章:核心性能指标-并发量
试着
性能测试学习性能测试零基础性能指标并发量
目录零基础学习性能测试:第一章-核心性能指标:并发量一、并发量核心概念解析1.并发量定义与分类2.并发量关键特性二、并发量测试的核心价值1.业务意义三角模型2.实际工作场景应用三、并发量测试实战指南1.测试工具配置要点2.并发测试四步流程3.JMeter并发测试实操四、并发瓶颈分析与优化1.并发瓶颈定位矩阵2.常见并发问题解决方案3.电商系统并发优化案例五、工作应用模板与工具1.并发测试报告模板2
- 后端校招 | 高分简历 + 高频 C++ 面试题整理(附GitHub题库推荐)
壹張先森
c++java开发语言
一、为什么专门做一期C++面试题分享?我发现很多后端同学在面试准备时:Java岗位题资源非常多但C++后端面试内容分散、缺少整合所以我整理了GitHub上高频C++后端面试题+答案解析,今天精选5道送给你:二、精选高频C++面试题(附答题技巧)1.new和malloc的区别?特性newmalloc返回类型指定类型指针void*构造函数会调用构造函数不会调用释放方式deletefree重载支持支持重
- day 10用户管理
黄能能
1.为用户添加密码【root才能执行】1.为新用户添加密码【只能是root】{密码尽可能的复杂}【0-9】【a-Z】【!@#¥%&*】交互式设定密码非交互式设定密码批量创建用户,并设定固定密码2.为用户变更密码(1)为自己修改密码(ok)直接使用passwd注意密码需要复杂一点,并达到8位(2)为别人修改密码(root)passwdusername3.密码怎么才算复杂生成随机数字mkpasswd生
- MongoDB创建集合命令db.createCollection详解
ywb201314
Mongodb
完整的命令如下:db.createCollection(name,{capped:,autoIndexId:,size:,max})name:集合的名字capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义size:限制集合使用空间的大小,默认为没有限制max:集合中最大条数限制,默认为没有限制autoIndexId:是否使用_id作为索引,默认为使用(t
- 二、ubuntu+django+nginx+uwsgi+vue:部署django+vue前后端分离项目
一、创建用户和文件夹#创建www文件夹,所有网站项目都放到这里$sudomkdir/www#创建用户组sudogroupaddwww-g666#创建用户$sudouseraddwww-u666-g666-M-s/sbin/nologin#查看$idwwwid#设置www文件夹的所属组和所属用户$sudochown-Rwww.www/www/#$sudochmod-R666某一目录,所有用户对一个目
- 解析进程 /proc/pid/maps 和 /proc/pid/smaps
目录/proc//maps背景具体描述代码实现实践/proc/pid/smapssmaps各子项详解代码实现代码调用的路径如下:小结/proc//maps背景相对于/proc/meminfo和dumpsysmeminfo可以看到系统整体的内存信息,我们还需要能够具体到每一个进程内存占用统计的信息。在分析内存问题的时候,会经常依赖kernel的proc文件系统下各个进程的文件节点,从中获取当前进程的
- mongodb创建集合命令db.createCollection详解
weixin_34209851
数据库pythonshell
mongodb创建集合命令db.createCollection详解完整的命令如下:db.createCollection(name,{capped:,autoIndexId:,size:,max})name:集合的名字capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用size:限制集合使用空间的大小,默认为没有限制max:集合中最大条数限制,默认为没有限制autoInde
- mysql创建集合collection_MongoDB创建集合命令db.createCollection详解
kokosK
MongoDB创建集合命令db.createCollection详解完整的命令如下:db.createCollection(name,{capped:,autoIndexId:,size:,max})name:集合的名字capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义size:限制集合使用空间的大小,默认为没有限制max:集合中最大条数限制,默认为没
- 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