- Java项目中参数校验方法
DebugDiver代码深处潜水员
项目相关javapython开发语言
Java项目中参数校验方法1.参数校验的重要性2.常见的参数校验方法2.1使用`assert`关键字2.2使用`Objects.requireNonNull`2.3使用自定义异常2.4使用`Preconditions`类2.5使用HibernateValidator注解2.6使用Spring框架内的验证2.7使用JSR303/349(BeanValidation)2.8使用ApacheCommon
- Python魔法之旅-魔法方法(01)
神奇夜光杯
python开发语言魔法方法学习和成长基础知识
目录一、概述1、定义2、作用二、主要应用场景1、构造和析构2、操作符重载3、字符串和表示4、容器管理5、可调用对象6、上下文管理7、属性访问和描述符8、迭代器和生成器9、数值类型10、复制和序列化11、自定义元类行为12、自定义类行为13、类型检查和转换14、自定义异常三、学习方法1、理解基础2、查阅文档3、编写示例4、实践应用5、阅读他人代码6、参加社区讨论7、持续学习8、练习与总结9、注意兼容
- Result 和 自定义异常 在前后端交互中的作用
Tdm_888
JavaJavaWebSpringjava前端vuespringbootspringservlet
Result和自定义异常在前后端交互中扮演着重要的角色。它们可以帮助我们规范化接口返回值,提高错误处理的可读性和可维护性。Result的作用Result通常是一个封装了请求结果的类,它包含了请求的状态码、消息和数据。在前端和后端的交互中,Result的作用主要体现在以下几个方面:统一返回格式:通过Result类,后端可以将请求的结果统一封装成一个固定的格式返回给前端,这样前端可以更容易地解析和处理
- JAVA——异常的处理
章鱼丸子吖
java开发语言
目录一、异常1.异常概念2.异常体系3.异常分类4.异常的产生过程解析二、异常的处理1.抛出异常throw2.Objects非空判断3.声明异常throws4.捕获异常try…catch5.finally代码块6.异常注意事项(1)多个异常分别处理(2)多个异常一次捕获,多次处理(3)多个异常一次捕获一次处理三、自定义异常1.概述2.自定义异常的练习一、异常1.异常概念异常,就是不正常的意思。在生
- JavaSE基础学习day3--异常&&集合
yz不摆烂24124
学习java
目录1.异常1.1异常概述1.2JVM的默认处理方案1.3异常处理1.4异常处理之try...catch...1.5Throwable的成员方法1.6编译时异常和运行时异常的区别1.7异常处理之throws1.8自定义异常1.9throws和throw的区别throwsthrow2.集合引入3.Collection3.1Collection的概述3.2Collection集合使用方法3.3集合的遍
- Spring-Security(二)OAuth2认证详解(持续更新)
lbmydream
springcloud架构spring探析springjava后端
SpringSecurity&Oauth2系列:SpringSecurity(一)源码分析及认证流程SpringSecurity(二)OAuth2认证详解及自定义异常处理文章目录1、OAuth2.0简介1.1OAuth2.0相关名词解释1.2四种授权模式1.3、OAuth2框架1.4OAuth2.0客户端提供功能2、OAuth2.0认证服务2.1SpringSecurityOAuth2提供的程序实
- Java 进阶篇之try-catch-finally语句与自定义异常
code2cat
Java进阶java开发语言ideintellij-idea
引言在前面的文章中,我们介绍了创建、使用和导入包(Java进阶篇之异常处理的概念和种类),在Java编程中,异常处理是确保程序健壮性和稳定性的重要机制。通过异常处理,程序可以应对运行时错误,避免崩溃并提供友好的错误信息。本篇文章将详细介绍Java中的try-catch-finally语句及其使用方式,并深入探讨如何创建和使用自定义异常。通过本文,你将掌握异常处理的基本原则与高级技巧,写出更加健壮的
- python 异常处理
O₂883
python
在软件开发中,异常处理是保证程序健壮性的关键部分。Python提供了一套强大的机制来处理程序运行中可能出现的错误。在这篇博客中,我们将探讨Python中的异常处理机制,包括try、except、else和finally块的使用,以及如何手动抛出异常和自定义异常。1、异常处理基础try:#尝试执行可能会抛出异常的代码result=10/0exceptZeroDivisionError:#如果在try
- Java--异常处理try_catch和throws
可乐小巧粒
java小知识回顾javajvmmce异常
异常处理try_catch和throwsthrow关键字Objects非空判断第一种方式:throws处理异常第二种方式:try_catch处理异常Throwable类中3个异常处理的方式finally代码块多异常处理自定义异常throw关键字package异常学习;/**java.lang.Throwable:类是java语言中所有错误或异常的超类*Excepttion:编译期异常,进行编译Ja
- Java中的异常
呜呼~22514
java开发语言intellijideajvm
目录一、异常的概念二、异常的分类1.编译时异常2.运行时异常3.错误(Error)三、异常的处理方式1.使用try-catch语句捕获异常:2.使用try-catch-finally语句:3.使用throws关键字声明方法可能抛出的异常:四、自定义异常一、异常的概念在Java中,异常是在程序运行过程中发生的不正常情况。它可能是由于程序错误、外部环境问题(如文件不存在、网络连接失败等)或其他不可预见
- C++ 指南- 异常的处理
小虾米欸
C++指南c++开发语言
异常处理异常处理是C++中用于处理程序运行时发生的错误情况的一种机制。它允许程序在发生错误时从当前执行点跳转到事先定义的错误处理代码,而不是立即终止程序。异常的抛出和捕获抛出异常(ThrowingExceptions)在C++中,使用throw语句抛出异常。这可以是标准异常类型,如std::runtime_error,也可以是自定义异常类型。throwstd::runtime_error("Ane
- JAVA 异常处理
Aokl_LuvSic
java开发语言
目录一、异常1.1异常的概述1.2异常的体系结构1.3编译时异常和运行时异常的区别1.4JVM默认异常处理的方式二、throws方式处理异常2.1定义格式:2.2注意事项:三、throw抛出异常3.1格式:3.2注意事项3.3throws和throw的区别四、try-catch方式处理异常4.1定义格式4.2执行流程4.3注意事项五、Throwable成员方法5.1常用方法六、自定义异常6.1概述
- 自定义异常的性能问题:避免打印繁重的“栈”信息
码上一元
并发编程java
Java每实例化一个Exception,就会对当时的栈进行快照,如果该动作发生的比较频繁,对内存的开销也就不可忽略了!常见的自定义异常格式:publicclassParamExceptionextendsRuntimeException{publicParamException(){super();}publicParamException(Stringmessage){super(message
- Spring Boot 实现全局异常处理
&loopy&
springboot后端java
在SpringBoot中,实现全局异常处理是一个常见的需求,它可以帮助我们集中处理应用中可能抛出的异常,并返回统一的响应格式给前端。这不仅可以减少代码重复,还能提高应用的可维护性和用户体验。下面是一个简单的SpringBoot全局异常处理的实现步骤:1.创建自定义异常类(可选)首先,你可以根据需要创建一些自定义异常类,以便在业务逻辑中抛出这些具体的异常。这样做的好处是可以让异常更加语义化,方便后续
- 【Spring Boot】全局异常处理
努力干饭的小鱼
springbootspringbootjava后端
目录背景前言设计步骤1.定义异常信息类:2.自定义异常:3.创建全局异常处理类4.在控制器中抛出异常5.输出捕获@Valid校验异常背景去面试的时候被问到SpringBoot项目中,如何处理全局异常的,也就是如何捕获全局异常的前言在SpringBoot中捕获全局异常是一种有效的方式,可以将应用程序中的所有异常集中处理,提供统一的错误响应,并且可以避免重复编写异常处理逻辑。实现全局异常处理通常使用@
- 模拟面试总结
孤独斗士
模拟面试笔试题1024程序员节
一轮模拟面试总结:1.模拟面试前先通知大家:自我介绍重点、面试常见技术问题2.面试期间:每人提问三到四个问题。回答不了三个问题就是不通过。百分制70分通过。常见面试问题有:形式可以一次三人(抢答),或者一次一人(一对一)基本数据类型switch分支结构比较相等++--包装类oop常见概念方法重载、方法重写try-catch-finallyfinalizethrowthrows自定义异常异常分类实体
- Python 异常处理:掌握错误控制的艺术
书生有只狗᭄゛ঞ
python爬虫python开发语言
在编程的世界里,错误和异常是不可避免的。正确地处理它们是编写健壮、可靠软件的关键。Python提供了一套强大的异常处理机制,允许我们捕获和处理程序运行时出现的错误。在本文中,我们将探讨Python中的异常处理,包括try-except块、自定义异常、finally子句以及异常的传递。异常的基础知识在Python中,当发生错误时,会抛出一个异常。如果异常没有被捕获和处理,程序将中断执行并显示错误信息
- 27.Python从入门到精通—Python异常处理 抛出异常 用户自定义异常 定义清理行为 预定义的清理行为
以山河作礼。
#Python基础入门—详解版pythonjava服务器
27.从入门到精通:Python异常处理抛出异常用户自定义异常定义清理行为预定义的清理行为异常处理抛出异常用户自定义异常定义清理行为预定义的清理行为异常处理在Python中,异常处理是一种处理程序在执行期间可能遇到的错误的方法。当Python解释器遇到错误时,它会引发异常。异常是一种Python对象,它包含有关错误的信息,例如错误类型和错误位置。为了处理异常,您可以使用try-except语句。在
- springmvc的全局异常处理器开发
LJJ1338
springmvc异常
1.自定义异常类CustomException对不同的异常类型定义异常类继承EXCEPTIONpackagecn.ljj.exception;/****Title:CustomException*Description:系统自定义异常类,针对预期的异常,需要在程序中抛出此类的异常*@authorljj*@date2015-4-14上午11:52:02*@version1.0*/publicclas
- java全局异常处理
zhyaw56zhu
java开发语言
自定义异常类importlombok.Data;@DatapublicclassBusinessExceptionextendsRuntimeException{privateIntegercode;publicBusinessException(Stringmessage){super(message);this.code=500;}publicBusinessException(Integer
- 异常—JAVA
Achlorine
javajavapython开发语言
文章目录异常的概念异常的体系结构异常的分类运行时异常异常的处理防御式编程异常的抛出异常的捕获异常声明throwstry—catch捕获并处理finally异常的处理流程自定义异常类异常的概念首先在学习之前我们要先知道什么是异常,异常简单来说就是不对的地方我们说一个人某个部位疼痛不舒服,其实意思就是这个地方发生了异常了。那么人生病有大有小对应的异常也是如此,在没有学习异常之前我们对异常的处理都是交给
- 九: 异常
老干妈拌士力架
尚硅谷Javasejava
文章目录01、异常概述与异常体系结构02、常见异常03、异常处理机制一:try-catch-finally3.1、finally的使用04、异常处理机制二:throws4.1、重写方法声明抛出异常的原则05、手动抛出异常06、用户自定义异常类07、异常总结01、异常概述与异常体系结构在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)Java程序在
- 十四、java 异常
那时间总是跑得很潇洒
java系编程java开发语言
文章目录异常5.1初识异常5.1.1NullPointerException5.1.2NumberFormatException5.2异常类5.2.1Throwable5.2.2异常类体系5.2.3自定义异常5.3异常处理5.3.1try/catch匹配5.3.2重新抛出异常5.3.3finally5.3.4try-with-resources5.3.5throws5.3.6对比受检和未受检异常5
- SpringBoot全局异常处理,返回http状态码500 或 json
脑壳疼___
springboothttpjson
1.自定义异常publicclassSystemExceptionextendsRuntimeException{privatestaticfinallongserialVersionUID=1L;publicSystemException(Stringmessage){super(message);}publicSystemException(Throwablecause){super(caus
- Spring Boot3自定义异常及全局异常捕获
蒾酒
springboot实战java后端springbootjavaspring后端
⛰️个人主页:蒾酒系列专栏:《springboot实战》山高路远,行路漫漫,终有归途。目录前置条件目的主要步骤定义自定义异常类创建全局异常处理器手动抛出自定义异常前置条件已经初始化好一个springboot项目且版本为3X,项目可正常启动。作者版本为3.2.2初始化教程:新版idea(2023)创建springboot3项目-CSDN博客https://blog.csdn.net/qq_62262
- 如何正确使用Java中的final关键字:变量、方法和类的终极指南
程序吟游
JAVAjavajvm开发语言
final关键字在Java中有多种用法,它可以用来修饰类、方法、变量(包括成员变量和局部变量)1.当我们希望类不被继承时,这通常用于那些不应该有子类的类,例如工具类、单例类、自定义异常类等。publicfinalclassMyClass{//...}2.当我们希望方法不被覆盖(override)时,通常用于确保父类中的某个方法不会在子类中被改变。publicclassMyClass{publicf
- C++进阶(十三)异常
北尘_
C++c++javajvm
北尘_:个人主页个人专栏:《Linux操作系统》《经典算法试题》《C++》《数据结构与算法》☀️走在路上,不忘来时的初心文章目录一、C语言传统的处理错误的方式二、C++异常概念三、异常的使用1、异常的抛出和捕获2、异常的重新抛出3、异常安全4、异常规范四、自定义异常体系五、C++标准库的异常体系六、异常的优缺点一、C语言传统的处理错误的方式传统的错误处理机制:终止程序,如assert,缺陷:用户难
- 【Java】Sentinel自定义异常和全局异常处理器
ZealSinger
sentinel
注:本文章全由自己想法尝试和记录,若有不对或者考虑不完全的情况是十分正常的,有意见请留言,无任何恶意引导Sentinel中各种流控,熔断,授权当被拦截的时候,都是统一返回一个异常BlockedbySentinel(flowlimiting)(这是只设置流控的情况下)(这是只设置了授权规则的情况下)当然这个返回结果自然对用户来说是体验不好的因为用户不懂得到底出了什么问题他的一切返回值都是Blocke
- C++服务器端开发(8):错误处理和日志记录
Galaxy银河
C++更多语法计算机/人工智能c++开发语言
1.异常处理:使用try-catch语句块来捕获和处理异常。当出现错误时,可以抛出自定义的异常,并在调用方捕获和处理这些异常。异常应该提供足够的信息,以便于定位和解决问题。try{//可能出现错误的代码}catch(constMyException&e){//处理自定义异常}catch(conststd::exception&e){//处理标准异常}catch(...){//处理其他异常}2.返回
- springboot全局自定义异常
王大锤4391
springbootspringbootjavaspring
1.自定义异常packagecom.xxx.dzwz.util.exception;/***自定义异常*@date2024-01-1910:00:00*@authorwangwei*/publicclassCustomExceptionextendsRuntimeException{privatestaticfinallongserialVersionUID=1L;privateIntegerco
- 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