- Spring 测试(第二部分)
木西爷
SpringSpringTest
3.6SpringMVC测试框架SpringMVC测试框架为测试SpringMVC代码提供了一流的支持,使用流畅的API可以与JUnit、TestNG或任何其他测试框架一起使用。它是在spring-test模块的ServletAPI模拟对象上构建的,因此不使用正在运行的Servlet容器。它使用DispatcherServlet来提供完整的SpringMVC运行时行为,并支持使用TestConte
- 基于javaweb+mysql的ssm+maven机房管理系统(java+ssm+vue+mysql)
java毕业
javamysqlmaven
基于javaweb+mysql的ssm+maven机房管理系统(java+ssm+vue+mysql)私信源码获取及调试交流运行环境Java≥8、MySQL≥5.7、Tomcat≥8、Node.js≥10开发工具后端:eclipse/idea/myeclipse/sts等均可配置运行前端:WebStorm/VSCode/HBuilderX等均可适用课程设计,大作业,毕业设计,项目练习,学习演示等功
- 在Struts中使用JFreeChart生成图表
碧海饮冰
分布式和技术框架们jfreechartstrutsstringactionjspclass
web.xmlDisplayChartorg.jfree.chart.servlet.DisplayChartDisplayChart/servlet/DisplayChartAction层Java代码:publicclassChartGenerateActionextendsSupportAction{publicstaticfinalintWIDTH_CHART=500;publicstati
- 我为何不使用SSH框架,我对SSH框架的看法
老紫竹
Java框架sshstrutshibernatesliverlightextjs
首先声明,我没领导过甚至没有参与过一个项目超过20人的的开发团队(仅考虑代码开发人员,设计测试都不算),所以我的看法绝对是很片面的。我个人用的做多的是Spring,我觉得这个东西还不错,我只使用其核心的东西,比如IOC,事务管理等。其次是Hibernate,原因并不是因为他很好,而是因为我很懒。我以前用jdbc时,经常因为要修改表结构(客户需求又变动了,不改还不行),我已经很讨厌去修改所有涉及到的
- 软件工程面试题(三十八)
a18007931080
java软件工程面试开发语言
1、Hibernate运行的流程?优缺点?为什么insert比select快?可以批量insert一些数据吗?Hibernate应该是建立在JDBC基础上的一个开源的ORM映射框架,很好的封装了实体映射实现,提供友好的实体操作接口,以及基于HQL的查询接口,在开发中可以减少编写SQL相关代码,提高效率和减少出错。以面向对象的方式操作数据库,进行增删改很方便,但执行复杂的查询时则很费事麻烦。sele
- Java面试宝典带你复习--第二章Servlet篇
编程的一拳超人
Java面试javaservlet
目录第二章Servlet篇2.1Servlet概述2.1.1Servlet生命周期2.1.2线程安全问题2.1.3与MVC框架的关系2.2九大隐式对象2.3page和pageContext的区别2.4GET和POST的区别2.5转发与重定向的区别2.6四大作用域介绍2.7session和cookie的区别2.8request和session的区别2.9报错状态码2.10常见协议及默认端口号2.11
- IDEA快速入门
石头dhf
idea
IDEA快速入门loadingIntelliJIDEA像Eclipse一样打开多个项目。https://blog.csdn.net/zht666/article/details/47831893ntelliJIDEA在Mac下格式化代码快捷键:Command+Option+LOption+shift+c打开最近修改的文件command+Y删除行⌘⌫删除当前行或选定的块的行command+optio
- SpringBoot编程基础教程:Spring MVC框架
AI天才研究院
Java实战编程实践大数据人工智能语言模型JavaPython架构设计
作者:禅与计算机程序设计艺术1.背景介绍Spring是一个开源的Java开发框架,它提供了基于Java的轻量级WEB开发的最佳实践。在WEB应用开发中,SpringMVC是其中的一个重要组件。它基于ServletAPI构建,帮助开发者快速创建、测试及部署WEB应用。但是,学习SpringMVC并不是一件容易的事情。对于初级到中级开发人员来说,掌握SpringMVC可能比较困难。因此,本文将从以下几
- JavaWeb注解的原理
小钻风3366
hivehadoop数据仓库
@WebServlet("/mayikt")是JavaServlet3.0及以上版本中引入的注解,用于简化Servlet的配置。其原理和与Servlet映射关系的知识点如下:1.注解的作用与原理核心功能:@WebServlet注解的作用是将当前类声明为一个Servlet,并指定其URL映射路径。例如:@WebServlet("/mayikt")publicclassMyServletextends
- Java计算机毕业设计党员信息管理系统2021源码+系统+数据库+lw文档
清清科技
java数据库开发语言
Java计算机毕业设计党员信息管理系统2021源码+系统+数据库+lw文档Java计算机毕业设计党员信息管理系统2021源码+系统+数据库+lw文档本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码地址:htt
- 手撕Tomcat
编程就是如此
tomcatjava
后端开发进阶:WebAPP->Web服务器JerrymouseServer设计目标如下:1、支持Servlet6的大部分功能:支持Servlet组件;支持Filter组件;支持Listener组件;支持Sesssion(仅限Cookie模式);不支持JSP;不支持async模式与WebSocket;2、可部署一个标准的WebApp;3、不支持同时部署多个WebApp;4、不支持热部署。一、设计服务
- 从零开始学Spring MVC:轻松构建Web应用的利器
Mikey_n
javaspring
一、Web开发的进化之路在传统Servlet时代,每个请求都要自己写doGet/doPost方法,处理参数解析、视图渲染等繁琐操作。SpringMVC的出现就像给Web开发装上了智能导航系统,让开发者可以更专注于业务逻辑的实现。二、SpringMVC核心组件:餐厅服务模型我们用餐厅服务流程来类比SpringMVC的工作原理:SpringMVC组件餐厅角色职责说明DispatcherServlet餐
- SpringMVC与SpringCloud的区别
kfhj
springcloudspring后端
SpringMVC与SpringCloud的核心区别功能定位•SpringMVC:基于Spring框架的Web层开发模块,采用MVC(Model-View-Controller)模式,专注于处理HTTP请求、路由分发(如DispatcherServlet)和视图渲染(如ViewResolver),适用于单体应用的Web开发示例:开发一个电商网站的前后端交互逻辑。•SpringCloud:基于Spr
- Spark零基础入门实战(五)使用Eclipse创建Scala项目
大数据张老师
Spark3.X零基础入门实战scala开发语言后端
本节讲解在Windows中使用ScalaforEclipseIDE编写Scala程序。安装ScalaforEclipseIDEScalaforEclipseIDE为纯Scala和混合Scala与Java应用程序的开发提供了高级编辑功能,并且有非常好用的Scala调试器、语义突出显示、更可靠的JUnit测试查找器等。ScalaforEclipseIDE的安装有两种方式:一种是在Eclipse中单击H
- Spring Data JPA中的List底层:深入解析ArrayList的奥秘!!!
小丁学Java
SpringDataJPAlist数据库数据结构
SpringDataJPA中的List底层:深入解析ArrayList的奥秘你是否好奇过,为什么SpringDataJPA的查询方法返回的List总是默认为ArrayList?本文将通过技术原理解析、验证实验和性能优化指南,为你揭开这一设计的神秘面纱!一、核心原理:为什么是ArrayList?1.ORM框架的默认选择SpringDataJPA底层采用Hibernate作为JPA实现。当执行查询时,
- [C#] .Net 2.0 新功能:重构(Refactoring)[ZT]
weixin_34342905
c#开发工具
1.前言本来不想写重构,因为VS2005的加了重构功能但目前和Resharper、Eclipse等还是没有可比性。但既然已经有了重构,那么预计VS系列将加强这方面的功能,所以还是先来体验下吧。2.什么是重构重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程。目的是提高其可理解性,降低其修改成本。通俗的说法就是,程序的功能和结果没有任何的变化。重构只是对程序内部结
- .Net 2.0 新功能:重构(Refactoring)
董浩
.NET新特性refactoring.netstring通讯socketobject
重构(Refactoring)1.前言本来不想写重构,因为VS2005的加了重构功能但目前和Resharper、Eclipse等还是没有可比性。但既然已经有了重构,那么预计VS系列将加强这方面的功能,所以还是先来体验下吧。2.什么是重构重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程。目的是提高其可理解性,降低其修改成本。通俗的说法就是,程序的功能和结果没有任
- Java EE期末总结(第四章)
码农新猿类
期末复习java-eejava
目录一、ORM框架二、MyBatis与Hibernate1、概念与设计理念2、SQL控制3、学习成本4、开发效率三、MyBatisAPI1、SqlSessionFactoryBuilder2、SqlSessionFactory3、SqlSession四、MyBatis配置1、核心依赖与日志依赖2、建立.XML映射文件3、建立映射接口文件4、数据源特性文件5、框架配置文件6、封装MyBatisUti
- Java基础语法(三)
java
JavaHibernate框架1.引言Java是主流编程语言之一,78.JavaHibernate框架是开发中非常重要的内容。2.基础知识介绍78.JavaHibernate框架的核心概念和使用场景。3.示例代码//示例代码System.out.println("Hello,Java!");4.深入解析分析该代码的工作原理、应用场景以及优化建议。5.结论通过学习78.JavaHibernate框架
- Java基础语法(三)
java
JavaHibernate框架1.引言Java是主流编程语言之一,78.JavaHibernate框架是开发中非常重要的内容。2.基础知识介绍78.JavaHibernate框架的核心概念和使用场景。3.示例代码//示例代码System.out.println("Hello,Java!");4.深入解析分析该代码的工作原理、应用场景以及优化建议。5.结论通过学习78.JavaHibernate框架
- 深入解析 Spring MVC 中的 DispatcherServlet 及其实现方法
android-studio
一:概述在SpringMVC框架中,DispatcherServlet是一个核心组件,它作为前端控制器,负责接收所有HTTP请求,并将它们分发到相应的处理器(Controller)进行处理。本文将深入探讨DispatcherServlet的工作原理,并通过不同的实现方法和实际案例来展示其强大的功能。二:具体说明一、DispatcherServlet的工作原理(一)初始化过程当Web应用启动时,Se
- Java web 开发常用的框架详解
鹅鹅鹅呢
java前端开发语言
JavaWeb开发是一项庞大而复杂的任务,有许多框架旨在简化和加速这个过程。这些框架提供了一套工具和规范,帮助开发者更高效地构建强大、可扩展和维护的Web应用程序。在这篇文章中,详细讲解一些JavaWeb开发中常用的框架,包括Spring、Hibernate、Struts、Servlet、以及一些与前端交互的框架。1.Spring框架简介:Spring是Java开发中最流行的企业级框架之一。它提供
- 拦截器Interceptor实现登录校验
A尘埃
拦截器Interceptor登录校验ThreadLocal
登录校验①、准备工具类AuthContextUtil创建ThreadLocalpublicclassAuthContextUtil{privatestaticfinalThreadLocalthreadLocal=newThreadLocalredisTemplate;/**表示方法之前执行*/@OverridepublicbooleanpreHandle(HttpServletRequestre
- Spring Boot学习笔记-7
W1nchester
SpringBoot学习笔记javaspringboot
SpringBoot学习笔记-7一、嵌入式Servlet容器(1)Servlet运行原理1.浏览器依据ip,port建立与容器之间的连接。2.浏览器将相关数据打包(按照http协议创建一个请求数据包),然后发送请求。3.容器将请求数据包解析出来,然后将解析到的数据放到request对象里面,同时还会创建一个response对象。4.容器创建servlet对象,然后调用该对象的service方法(将
- org.hibernate.HibernateException: identifier of an instance 错误可能出现的情况
evolution_language
spring异常处理javahibernate
最近在使用hibernatejpa中出现了该错误org.hibernate.HibernateException:identifierofaninstance并且反复检查没有映射没有任何问题最后发现问题竟然是主键的问题比如我在一个合同对象中包含一个附件即1对1的关系那么该合同的主键id假如在丢失后,进行插入不会有问题无非是一个是JpaRepository进行保存操作一个是修改操作区分是通过主键的i
- was altered from xxx to null; nested exception is org.hibernate.HibernateException
evolution_language
spring异常处理spring异常hibernatejava
wasalteredfromxxxtonull;nestedexceptionisorg.hibernate.HibernateException直接上干货:在使用JPA时如果使用的保存方法在保存数据库已存在的对象时,而这时你将数据库的已存在的数据传过来并使其主键id为null这时如果调用JPA的修改方法就出出现这个错误.解决办法在一个事务中当使其主键id为null调用JPA自带的save方法而不
- Spring Boot项目连接MySQL数据库及CRUD操作示例
小小鸭程序员
javamysqlspringspringbootpython
概述在SpringBoot项目中集成MySQL数据库是常见的开发需求。本文将演示如何快速配置MySQL数据库连接,并通过JPA实现基本的增删改查(CRUD)操作。环境准备JDK1.8+MySQL5.7+(推荐8.0+)SpringBoot2.7.x+IDE(IntelliJIDEA/Eclipse)实现步骤1.创建SpringBoot项目通过SpringInitializr或IDE创建项目,选择以
- 软件工程面试题(三十)
a18007931080
软件工程开发语言面试java
将ISO8859-1字符串转成GB2312编码,语句为?Strings=newString(text.getBytes(“iso8859-1”),”gb2312”).说出你用过的J2EE标准的WEB框架和他们之间的比较?答:用过的J2EE标准主要有:JSP&Servlet、JDBC、JNDI、JavaMail、JTA、XML、RMI、WebServices等。这些标准主要提供了对于WEB框架的全方
- springMVC-04-Controller配置总结和restful风格
哇哦y
springMVC学习restfulspringjava
Controller配置总结和restful风格一、用controller接口实现SpringMVC1、新建一个项目,导入web支持2、导入相关jar包3、编写web.xml,注册DispatcherServlet4、编写SpringMVC配置文件5、编写controller类//只要实现了Controller接口的类,说明这就是一个控制器publicclassControllerTest1imp
- tomcat与spring-web
NaughtyBo
tomcattomcatspring
文章目录SpringServletContainerInitializerWebApplicationInitializerWebApplicationInitializer接口AbstractContextLoaderInitializer抽象类AbstractDispatcherServletInitializer抽象类AbstractAnnotationConfigDispatcherSer
- 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