在Java应用程序性能优化的领域,有多种策略可以帮助提升程序运行效率和响应速度。以下是一些实用的技巧,涵盖代码层面、JVM调优、以及设计模式等方面,旨在全面优化应用性能。1.代码层面优化避免不必要的对象创建频繁的对象创建和销毁会占用大量的CPU时间和内存资源。尽量重用对象,特别是在循环中。Java//优化前for(inti=0;i
useblackbox黑箱AI编码助理
百态老人
python开发语言
黑箱AI是一个人工智能的编码助理可以让代码快10倍。它使您能够把任何问题变成代码和功能,如从任何视频提取代码和代码自动完成。它有以下几个特点:可以从视频、图片、PDF等格式中复制代码。可以将任何问题转换成代码。可以快速找到任何代码片段,并开始编码。支持20多种编程语言的代码自动补全。有Chrome扩展和VSCode扩展。这个网站有不同的收费方案,根据你需要的功能和使用量而定。它有以下几种选择:好开
Python——文件读取
一颗小松松
python开发语言
Python可以读取不同格式的文件,下面简单来介绍一下:1、使用read_excel或read_csv读取文件,若在路径前加r,使用“\”importpandasaspd#在路径前加r,使用“\”df=pd.read_excel(r'C:\Users\merit\Desktop\测试.xlsx')#导入.csv文件,以“,”为分隔符data=pd.read_csv(r'C:\Users\merit
【AI】Transformer布道:让AI学会“左顾右盼”的超级大脑!(扫盲帖)
碣石潇湘无限路
人工智能transformer深度学习
在LLM爆火的时代,如果还不了解Transformer就太落伍了,下面我第一次尝试用一种更日常、更口语化的方式,把Transformer这个模型讲个大概。你可以想象我们是从“什么是注意力”开始,一步步搭积木,直到把整个Transformer这台“机器”组装起来,然后再看看它能干什么、怎么训练、为什么厉害。主要目的就是帮助更多的非AI专业的人群入门和了解实现AGI的底层架构。1.为什么要有Trans
【云原生】深入浅出 K8s 设备插件技术(Device Plugin)
碣石潇湘无限路
kubernetes容器云原生
摘要:Kubernetes提供了DevicePlugin机制,用于向kubelet上报硬件信息并配置容器资源。本文以NVIDIAGPUPlugin为例,通俗易懂并深入浅出地剖析注册、ListAndWatch、Allocate及kubelet管理流程,介绍常见问题和配置要点。先用一张原理概览图把DevicePlugin和kubelet之间的交互勾勒出来,让大家感受下插件技术的整体架构(示例以NVID
LINUX下的tcp协议
Ccc030.
linuxtcp/ip运维
TCP1.面向数据流(流式套接字)2.建立连接3.安全可靠的传输协议应用场景:HTTP,MQTT,FTP三次握手:TCP建立连接时,需要进行三次握手,确保收发数据前,双方都已准备就绪。四次挥手:TCP断开连接时,需要进行四次挥手,从而确保通信双发都已收发数据结束。C/S模型:ssize_trecv(intsockfd,void*buf,size_tlen,intflags);功能:从tcp套接字接
BOE(京东方)绵阳“零碳工厂”探访活动圆满落幕 树立显示产业绿色转型新标杆
资讯分享周
人工智能大数据
2025年3月13日,BOE(京东方)“零碳工厂”探访活动在绵阳成功举办,此次活动邀请KOL及媒体代表齐聚京东方绵阳第6代柔性AMOLED生产线,深度探访国内显示行业首个“零碳工厂”。通过实地观摩与技术交流,BOE(京东方)全方位展示了其在绿色制造领域的突破性成果——从100%可再生能源覆盖到全流程碳足迹管理,从技术创新驱动减排到低碳模式行业复制,见证了公司多年来在可持续发展领域的持续投入与引领作
焊接机器人与线激光视觉系统搭配的详细教程
自动化专业爱好者
机器人opencv人工智能
以下是关于焊接机器人与线激光视觉系统搭配的详细教程,包含核心程序框架、调参方法及源码实现思路。本文综合了多个技术文档与专利内容,结合工业应用场景进行系统化总结。一、系统硬件配置与视觉系统搭建1.硬件组成焊接机器人系统通常由以下模块构成:线激光视觉传感器:用于发射线激光并采集焊缝图像(如英莱科技PF系列传感器,支持4K视频监控与微间隙焊缝检测)。机器人本体与焊枪:需支持外部轴控制,传感器通过夹具安装
3D FFT在波束形成中的详细解释
DuHz
算法信息与通信信号处理
3DFFT在波束形成中的详细解释1.引言在雷达、声呐和无线通信等领域,为了从空间中获取目标或信号的方向信息,通常需要用到波束形成(Beamforming)技术。波束形成可以理解为一种通过数字信号处理手段,将天线阵列(或传感器阵列)接收的多路信号进行加权和,形成对特定方向(或多个方向)的增强或抑制,从而实现对目标/信号的方位估计与检测的技术。1.11D,2D,和3D波束形成1D波束形成通常针对线阵(
快速幂学习
KuaCpp
学习
求出a^k%p的结果,时间复杂度是O(logk)把k拆成2的次方和。最多是logk个a^2^0%pa^2^1%pa^2^2%p…………a^2^logk%p预处理:#includeusingnamespacestd;typedeflonglongLL;intqmi(inta,intk,intp){intres=1;while(k){if(k&1)res=(LL)res*a%p;k>>=1;a=(LL
【CSS 面经】如何画一条 0.5px 的线 ️
Peter-Lu
#CSS面经css前端javascriptcss3html
文章目录一、为什么浏览器中0.5px难以实现?二、实现0.5px线条的几种方法1.使用`transform:scale()`实现缩放2.使用`border`和`transform`结合3.使用`box-shadow`实现0.5px4.使用伪元素`::after`结合`transform`三、如何选择合适的方法?在前端开发中,我们经常会遇到这样一个问题:如何画一条0.5px的线?由于像素是浏览器渲染
前端CSS:CSS画一条0.5px的线的方法
DTcode7
HTML网站开发#前端基础入门三大核心之CSSHTMLCSSwebcss3网页开发
前端CSS:CSS画一条0.5px的线的方法引言基本概念和作用说明基本概念作用说明示例一:使用`transform:scale()`方法代码示例说明示例二:使用透明度技巧代码示例说明示例三:使用伪元素代码示例说明示例四:使用`border`属性代码示例说明示例五:结合媒体查询和像素比例代码示例说明功能使用思路不同角度的功能使用实际开发中的使用技巧自行拓展内容实现自定义宽度线条使用CSS动画增强视觉
【深度学习与大模型基础】第3章-张量
lynn-66
深度学习与大模型基础深度学习人工智能
大家好!今天我们来聊聊张量(Tensor)。别被这个词吓到,其实它没那么复杂。什么是张量?简单来说,张量就是一个多维数组。你可以把它看作是一个装数据的容器,数据的维度可以是一维、二维,甚至更高。标量(0维张量):就是一个单独的数字,比如3。向量(1维张量):一串数字,比如[1,2,3]。矩阵(2维张量):一个表格,比如[[1,2],[3,4]]。更高维张量:比如[[[1,2],[3,4]],[[5
FPGA为何要尽量减少组合逻辑的使用
昇柱
fpga开发
在FPGA设计中,组合逻辑的使用确实需要谨慎,尤其是要尽量减少它的复杂性。这并不是因为组合逻辑本身不好,而是因为它在实际应用中容易引发一系列问题,而这些问题往往与FPGA的设计哲学和硬件特性相冲突。让我从几个关键点来和你聊聊这件事。组合逻辑的即时性,是一把双刃剑组合逻辑的最大特点是即时性——它的输出完全由当前输入决定,没有存储功能。这种特性让它在某些场景下非常高效,比如简单的逻辑判断或者快速的数据
第一章 数据结构绪论
超神的你
数据结构与算法笔记数据结构与算法
第一章数据结构绪论数据数据对象:性质相同的数据元素的集合,数据的子集数据元素:人数据项:眼、耳、鼻、嘴、手、脚等不可分割的项数据结构:存在特定关系(搭配和排列)的数据元素的集合逻辑结构集合结构:元素之间没有关系线性结构:元素之间一对一关系(兄弟排行)树形结构:元素之间一对多关系(父子)图形结构:元素之间多对多关系(好朋友)物理结构/存储结构:逻辑结构的存储形式顺序存储(数组)链式存储(取号):需要
Python中的eval函数
a1274646034
python
一、简介:eval函数就是实现list、dict、tuple与str之间的转化,而str函数实现把list、dict、tuple转换成字符串1、字符串转化为列表1#字符串转化为列表2a="[[1,2],[3,4],[5,6],[7,8],[9,10]]"3print(type(a))4b=eval(a)5print(type(b))6print(b)123[[1,2],[3,4],[5,6],[7
C语言刷题第三章(中)
乞丐1469
C语言刷题c语言算法
二.题目4.成绩的输入输出(1)题目描述:输入三科成绩,然后把三科成绩输出,成绩为整数形式。(2)输入描述:一行,三科成绩,用空格分割,范围(0~100)。(3)输出描述:一行,把三科成绩显示出来,输出格式见样例。(4)示例:输入:608090输出:score1=60,score2=80,score3=90(5)代码样例:方法一:#includeintmain(){doubles1,s2,s3;s
向量存储与检索器
小码农0912
AI应用开发向量存储与检索器向量存储检索器langchain
文章目录向量存储如何创建和查询向量存储相似性搜索按向量进行相似性搜索异步操作检索器如何使用向量存储作为检索器从向量存储创建检索器最大边际相关性检索传递搜索参数相似性得分阈值检索指定前k案例案例1案例2langchain支持从向量数据库和其他来源检索数据,以便与LLM(大型语言模型)工作流程集成。它们对于应用程序来说非常重要,这些应用程序需要获取数据以作为模型推理的一部分进行推理,就像检索增强生成(
VIM使用小技巧
ka__ka__
工具技巧vim
VIM的优势如果做LinuxC/C++开发,经常ssh到Linux服务器编辑各种文件,那么熟练使用VIM绝对可以提高工作效率。VIM的高效体现在多模式,可以很方便快速的对文件进行各种编辑修改,而这恰恰是在软件开发中经常遇到的场景。VIM流行这么多年,很多操作都是经过多年沉淀下来的高效操作,熟练的VIM操作可以让编辑与思维尽可能同步,快速的反复修改,把代码写成想要的样子。并且,在Linux上很多的操
浅析AI对前端程序员工作的威胁和机遇
minstbe
AI应用与观察人工智能前端
这几年,AI技术发展得很快,尤其是像ChatGPT这种工具,搞得不少前端程序员开始担心饭碗问题。这种担心倒也不是没道理,因为AI确实在某些方面很“卷”,但咱们换个角度想想,也许这背后藏着更多的机会呢?咱们今天就i来聊聊这个事儿。威胁:有些活,AI真能干了基础代码不求人以前写个网页小功能,要查文档、搜StackOverflow、试错调试啥的,但现在不一样了,你问ChatGPT,分分钟把代码甩给你,而
Python如何快速计算技术指标的金叉死叉?
量化问财
量化软件QMT量化交易Python量化炒股PTradeQMT量化交易量化软件deepseek
推荐阅读:《【最全攻略】免费的量化软件有哪些?券商的交易接口怎么获取?》引言在股票市场中,技术分析是一种重要的工具,它可以帮助投资者识别市场趋势和潜在的买卖点。技术指标金叉死叉是技术分析中常用的一种方法,它涉及到两个移动平均线(MA)的交叉点。金叉是指短期移动平均线从下方穿过长期移动平均线,通常被视为买入信号;而死叉则是短期移动平均线从上方穿过长期移动平均线,通常被视为卖出信号。本文将介绍如何使用
IO流体系
NaZiMeKiY
java算法
一.分类1.字节流(1).InputStream(字节输入流)定义:操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中书写步骤:1.创建字节输入流对象,2.读数据,3.释放资源importjava.io.FileInputStream;importjava.io.IOException;publicclassIO{publicstaticvoidmain(String[]args)thr
无线路由器配置
wespten
网络协议栈网络设备5G物联网网络工具开发WindowsPowerShell系统管理安全运维智能路由器网络
路由器是网络的关键设备,它的上方链路连接Modem,下方链路连接交换机或电脑,同时带有无线功能的路由器还具有向周围一定范围内发射无线信号的功能。它相当于整个网络的“神经中枢”,一旦路由器配置不当或存在故障,整个网络就会出现异常,甚至瘫痪。因此在组建无线和有线网络时,一定要注意路由器的配置。1、登录路由器管理界面要想配置路由器,首先要知道路由器的地址,大多数路由器的地址是“192.168.1.1”;
Python csv库
xiaoming0018
pythonpython开发语言
CSV文件又称为逗号分隔值文件,是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。CSV是电子表格和数据库中最常见的输入、输出文件格式,可参考《CSV介绍》。通过爬虫将数据抓取的下来,然后把数据保存在文件,或者数据库中,这个过程称为数据的持久化存储。本节介绍Python内置模块CSV的读写操作。CSV库Python中集成了专用于处理csv文件的库,名为:csv。csv库中有4个
【系统架构设计师】论文:论软件产品线技术
数据知道
系统架构中间件论文系统架构设计师软考高级软件产品线
论文:论软件产品线技术文章目录摘要正文总结摘要根据“十五”国防科技重点实验室—“机载XXPD火控雷达性能开发与评估实验室”的建设需求。我所在的中国x集团公司x所电子对抗研究部组织了用于该实验室目布式联网试验,主要任务是试验机载雷达的各项技术指标,模拟较逼真的雷达信号环境和其他电磁信号环境,检查机载雷达工作性能、探测和跟踪精度及飞机综合火控系统性能。我担任了该软件系统负责人。我成功的将软件产品线技术
贪心算法--将数组和减半的最小操作数
4C++
数据结构与算法贪心算法算法
本题是力扣2208---点击跳转题目思路:要尽快的把数组和减小,那么每次挑出数组中最大的元素减半即可,由于每次都是找出最值元素,可以用优先队列来存储这些数组元素每次取出最值,减半后再放入优先队列中,操作次数+1,直到数组和小于等于原总和的一半代码:classSolution{public:inthalveArray(vector&nums){doublesum=0;intcnt=0;priorit
flutter 跑马灯+渐变透明度背景
烟花下的孤独
flutterdartflutter
之前也是记录了很多小组件的实现,这次把所有代码都给放到这里吧这是效果:数据(后台数据,不过我这是没的,不要在意这些小细节,忽略吧)Http().post(url,pathParams:params,data:params,success:(json){studyModel=FindStudyModel.fromJson(json);},errorCallback:(error){print('er
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