- ✨JMH(Java Microbenchmark Harness)✨
魔镜前的帅比
java开发语言
JMH(JavaMicrobenchmarkHarness)是一个专门用于编写、运行和分析Java微基准测试的工具。它由OpenJDK团队开发,旨在提供精确的基准测试结果,避免常见的基准测试陷阱,如JVM的优化、即时编译(JIT)等影响。核心知识点基准测试的目的基准测试用于测量代码的性能,通常是在微秒或纳秒级别。它可以帮助开发者识别性能瓶颈,优化代码。JMH的特点精确性:JMH通过多次迭代和预热来
- java后端开发面试常问
躲在没风的地方
java面试题java面试spring
面试常问问题1spring相关(1)@Transactional失效的场景@Transactional注解默认只会回滚运行时异常(RuntimeException),如果方法中抛出了其他异常,则事务不会回滚(数据库数据仍然插入成功了)。@Transactional(rollbackFor=Exception.class)如果方法中有trycatch语句,并且抛出的异常的代码被try捕获,那么方法上
- Amaze UI web mobile 前端框架
iteye_20240
ui前端框架移动开发
目录结构index.html-空白HTML模板;blog.html-博客页面模板(预览);landing.html-LandingPage模板(预览);login.html-登录界面模板(预览);sidebar.html-带边栏的文章模板(预览);在app.css中编写CSS;在app.js中编写JavaScript;移动端首选Zepto,桌面端选jQuery,这应该是大多数开发者的共识。那对于跨
- Java中Long类型处理精度丢失问题
原冰洋
javabug
Long类型处理精度丢失问题描述后端给前端传一个long类型的数据,如果数据过大,前端js接收就会精度丢失,如果再传过来给后端,后端接收到的数据也是精度丢失的数据解决方案只需要将后端从传给前端的long类型的数据变成string类型就好了。1.提供对象转换器jacksonObjectMapper,基于jackson进行java对象到json数据的转换2.在webMvcConfig配置类中扩展Spr
- 后端Long类型19位返回前端丢失精度问题
19940719
JAVA
后端Long类型19位返回前端丢失精度问题问题原因:由于Long类型最大19位而JavaScript最大接收数字为16位,固存在精度丢失问题解决方案1.导入Maven依赖com.fasterxml.jackson.corejackson
- 【设计模式】【行为型模式】访问者模式(Visitor)
FLZJ_KL
设计模式设计模式访问者模式java
hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD2025本人正在沉淀中…博客更新速度++欢迎点赞、收藏、关注,跟上我的更新节奏当你的天空突然下了大雨,那是我在为你炸乌云文章目录一、入门什么是访问者模式?为什么需要访问者模式?怎么实现访问模式?二、访问者模式在源码中的运用ASM框架(Java字节码操作)三、总结访问者模式的优点访问者模式的缺点访问者模式的适用场景一、
- 【JavaScript】Day01
boy快快长大
前端javascript开发语言ecmascript
1.介绍1.1JS是什么一种运行在客户端(浏览器)的编程语言,实现人机交互效果。1.2作用网页特效(监听用户的一些行为让网页做出对应的反馈)表单验证(针对表单数据的合法性做出判断)数据交互(获取后台的数据,渲染到前端)服务端编程(node.js)1.3JS的组成ECMAScript:规定了JS基础的语法知识WebAPIs:DOM与BOMDOM:操作文档,比如对页面元素进行移动、大小、添加删除等操作
- DeepSeek接入Python,一般电脑也能飞速跑,确实可以封神了!
算法channel
python开发语言
你好,我是郭震今天这篇教程介绍:DeepSeep最新推理模型R1接入Python编程,在本地电脑从零搭建方法。1这样做有哪些好处?1)大模型在本地搭建,除了能够方便个人知识库管理,详见上一篇介绍,还能提效编程学习,比如Python,Java等,学编程就像学做事的思路和逻辑,挺重要也很有意思。2)DeepSeek最近开源了推理模型R1,开源免费,性能强劲,本文接入的正是DeepSeek的R1;Pyt
- 华为OD最新机试真题-最小的调整次数-C++-OD统一考试(E卷)
ai因思坦
华为odc++算法华为开发语言面试
最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述:有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。小A依次执行2n个指令往队列中添加数据和移出数据。其
- Maven 引入外部依赖
lsx202406
开发语言
Maven引入外部依赖引言Maven是一个强大的项目管理和构建自动化工具,广泛应用于Java项目的开发中。在Maven的项目中,引入外部依赖是构建项目不可或缺的一环。本文将详细介绍如何在Maven中引入外部依赖,包括依赖的类型、配置方式以及常见问题解决。一、依赖的类型在Maven中,依赖可以分为以下几类:Compile依赖:编译依赖,用于项目的编译过程。这类依赖通常包含了项目的编译时需要用到的类库
- golang之基础库
丑阳璐
go语言golangjson
从这小节开始,就变得尤为重要,希望小伙伴们打起精神包管理工具(gomodule)使用gomodule来管理0包之间的依赖关系和Java类似,类似于文件夹。当我们需要使用某个包时,导入某个包即可导包时,必须从GOPATH最初的包路径开始//查看环境变量PSD:\gowork\goProiect\Go01Test>goenvsetGO111MODULE=on//模块化setGOARCH=amd64se
- 高德地图JS API地址解析
天马3798
JavaScriptjavascriptjava数据库
- Java内存回收(GC)新贵的抉择,G1与ZGC!
颯沓如流星
javajvm架构
前言Java的垃圾回收(GarbageCollection,GC)是确保内存管理高效和稳定的关键机制。随着JDK的不断演进,各种垃圾回收器也应运而生,其中G1和ZGC作为两大明星产品,各自拥有独特的特性和适用场景。本文将详细解析G1和ZGC的特性和回收方式。关键概念解析Region在G1和ZGC中,Region是堆内存的一个逻辑分区。G1将堆划分为多个大小相同的Region,用于存放对象。而ZGC
- 【Java】已解决:java.util.concurrent.ExecutionException
屿小夏
java开发语言android
个人简介:某不知名博主,致力于全栈领域的优质博客分享|用最优质的内容带来最舒适的阅读体验!文末获取免费IT学习资料!文末获取更多信息精彩专栏推荐订阅收藏专栏系列直达链接相关介绍书籍分享点我跳转书籍作为获取知识的重要途径,对于IT从业者来说更是不可或缺的资源。不定期更新IT图书,并在评论区抽取随机粉丝,书籍免费包邮到家AI前沿点我跳转探讨人工智能技术领域的最新发展和创新,涵盖机器学习、深度学习、自然
- 静态类型和动态类型
老赵骑摩托
go语言
静态类型和动态类型定义编程语言按照类型检查可以分为两大类:静态类型(StaticTyping)和动态类型(DynamicTyping)。在现在比较流行的这些语言里,静态类型的代表人物有Java、C/C++、Golang等,动态类型有Python、Ruby等。静态类型语言中,变量具有类型,而且在编译期确定,具有某一类型的变量只能持有相同类型的数据。动态类型语言中,变量没有类型,只有数据有类型,变量可
- 走进Java:JDK和JRE分别是什么?它们有什么区别?
老鼠只爱大米
javaJava面试Java面试攻略Java高频面试题JREJDK
目录引言一、概述二、JRE(JavaRuntimeEnvironment)三、JDK(JavaDevelopmentKit)四、安装和配置五、区别和联系六、总结引言 Java是一门非常流行的编程语言,被广泛应用于各个领域的软件开发。在Java开发中,JRE和JDK是两个重要的概念,它们有着不同的作用和功能。本篇技术博客将会介绍JRE和JDK的概念、组成部分、安装和配置、以及它们之间的区别和联系。
- javascript的成熟分类:“成熟分类”之路
lizi88888
javascript开发语言ecmascript
JavaScript是一门广泛应用于Web前端开发的高级编程语言,具有交互性强、界面效果丰富等优点。其在Web开发中的广泛应用越来越受到业界的关注,从最初的“套壳”式编程到现在的成熟分类,JavaScript已经发生了巨大的变化。ES5ES5标准于2009年发布,是JavaScript发展的一个重要里程碑。这个版本添加了一些新的语言特性,例如:严格模式、Object.create()方法、Func
- Http connect timed out
不像程序员的程序媛
http网络网络协议
客户向云端服务请求时,连接云端域名显示连接超时,为什么呢,偶尔会有。java.net.SocketTimeoutException:connecttimedoutatjava.net.PlainSocketImpl.socketConnect(NativeMethod)atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketI
- String的基础知识
GordonH1991
java
前提:androidsdk和jdk版本对照中可以看到从android5.0后就需要使用jdk7以上的版本,这里讨论的默认字符串常量池放置在虚拟机的堆内存中,不再过多讨论永久代(PermanentGeneration,PermGen)的方法区,事实上从java8后,JVM就已经没有永久代了,取而代之的是元空间(MetaSpace)1.String.java的开头注释TheStringclassrep
- 总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
ideal-cs
总结javasslhttps自签证书验证ssl验证https忽略证书验证https工具类
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证一·HttpsUtil工具类二·SSLUtil工具类一·HttpsUtil工具类packagecom.example.util;importjavax.net.ssl.HttpsURLConnection;importjavax.net.ssl.SSLContext;imp
- new的过程发生了什么,手写实现new
零合一
前端基础知识点原型模式javascript开发语言
new的过程当使用new关键字调用函数时,该函数将被用作构造函数。new将执行以下操作:创建空对象:创建一个空的简单JavaScript对象。为方便起见,我们称之为newInstance。绑定原型:如果构造函数的prototype属性是一个对象,则将newInstance的[[Prototype]]指向构造函数的prototype属性,否则newInstance将保持为一个普通对象,其[[Prot
- new操作中发生了什么?
木头没有瓜
js
比较直观的感觉,当我们new一个构造函数,得到的实例继承了构造器的构造属性(this.name这些)以及原型上的属性。在《JavaScript模式》这本书中,new的过程说的比较直白,当我们new一个构造器,主要有三步:•创建一个空对象,将它的引用赋给this,继承函数的原型。•通过this将属性和方法添加至这个对象•最后返回this指向的新对象,也就是实例(如果没有手动返回其他的对象)例子,大概
- 详解 Java 基础的多态机制
红烧白开水。
后端JAVA多态java开发语言后端java基础多态
一、什么是多态?多态(Polymorphism)是面向对象编程(OOP)的三大核心特性之一,指同一操作作用于不同对象时,可以产生不同的行为。在Java中,多态通过以下两种形式体现:编译时多态:方法重载(Overload),根据参数列表在编译时确定调用哪个方法。运行时多态:方法重写(Override),通过继承和接口实现,在运行时动态绑定具体方法(本文重点)。二、多态的核心实现机制1.三个必要条件继
- 混合开发框架整理:使用Crosswalk + WebViewJavascriptBridge进行混合开发
hwj3747
Android混合开发androidhtml5javascriptjqueryhtml
作者:hwj3747转载请注明Crosswalk介绍目前APP的开发模式大多基于H5+原生壳的开发模式,这时候使用到的WebView的性能就至关重要。我们知道,Android平台上,系统的碎片化比较严重,同Android版本的WebView的H5解析能力也有较大差异,导致相应的HTML5应用一致性难以保证。所以在做混合开发的时候,对Android系统的适配是一个比较麻烦的问题。这个时候,如果能在我
- 跟我学C++中级篇——C++编码的几点建议
fpcc
C++c++软件工程
一、C++编码C++语言做为一种为大多数人认为难度较大的开发语言,因其灵活多变的风格和技术导致其应用开发不易为开发者掌握。有过较长C++开发经验的程序员可能发现,在C++开发的人员中,鱼龙混杂,各色开发人员都有。它不象Js或Java等高级语言,大家的开发水平在三五年后基本都差不多。C++编码的程序员可能有的十几年如一日的编写着让人头大的代码。二、如何更好的编写C++代码为了方便描述如何更好的编写C
- jdbc连接数据库时 java.lang.RuntimeException错误怎么解决
脑袋坏掉了
数据库javamysql
Exceptioninthread"main"java.lang.RuntimeException:com.mysql.cj.jdbc.exceptions.CommunicationsException:CommunicationslinkfailureThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhas
- java进阶篇--Docker 有什么优点?使用时需要注意什么问题?
爱分享的淘金达人
Java源码剖析(30讲)Dockerdocker使用docker注意事项
Docker从2013年发展到现在,它的普及率已经可以和最常用的MySQL和Redis并驾齐驱了,从最初偶尔出现在面试中,到现在几乎成为面试中必问的问题之一。如果再不了解Docker相关的知识点,可能就会与自己心仪的职位擦肩而过。所以本课时将会带领你对Docker相关的知识做一个全面的认识。我们本课的问题是,Docker有什么优点?使用时需要注意什么问题?回答:Docker是一个开源(开放源代码)
- Go语言函数:比Java更简单优雅的函数设计
后端
Go语言函数:比Java更简单优雅的函数设计前言嘿,各位开发者!今天我们来聊一个有趣的话题:Go语言的函数。如果你是从Java阵营过来的,准备好被惊艳到了!因为Go的函数设计其实就是优雅到极致的艺术品。一、函数定义:告别繁文缛节1.简洁的语法Java:publicstaticintadd(inta,intb){returna+b;}Go:funcadd(a,bint)int{returna+b;}
- Java面试题--设计模式
m0_74823892
面试学习路线阿里巴巴java设计模式开发语言
答案以及所有23种设计模式详细介绍,请参考:https://blog.csdn.net/doymm2008/article/details/13288067设计模式的分类有哪些?工厂模式:概念:实现方法:普通工厂方法、静态工厂方法使用场景:有哪些问题单例模式:好处:单例模式的实现代码:最简单的,以及优化后的适配器模式:概念核心思想实现代码装饰模式:概念:实现代码:应用场景代理模式:概念:实现代码:
- 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