JavaEE线程安全的线程池实现
sugar high
Javajava-eejava开发语言
线程虽然比进程更轻量,但是如果创建销毁的频率进一步增加,开销还是很大解决方案:线程池or协程线程池:把线程提前创建好放到池子里,后续用到线程直接从池子里取不必这边申请了。线程用完了也不是还给系统而是放回池子,以备下次再用。为什么线程放在池子里就比从系统申请释放来得更快呢?用户写的代码就是在最上面的应用程序来运行,这里的代码都称为“用户态”运行的代码,有些代码需要调用API进一步的逻辑就会在内核中执
Node.js——文件上传
项哈哈想做前端
Node.jsnode.js
文件上传插件:formidable,地址:https://www.npmjs.com/package/formidable,参考里面withExpress.js部分。html部分截图参考:用express-generator生成的示例代码:constformidable=require('formidable');varexpress=require('express');varrouter=ex
30段极简Python代码:这些小技巧你都Get了么
Python 学习者
Python
学Python怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则。本文是30个极简任务,初学者可以尝试着自己实现;本文同样也是30段代码,Python开发者也可以看看是不是有没想到的用法。Python是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性。如果读者对基本的Python语法已经有一些了解,那么这篇文章可能会给你一些启发。作者简单概览了30段代码,它们都是平常非常
python代码示例-python 示例代码1
编程大乐趣
第一章python基础一在此不再赘述为什么学习python这门编程,网上搜索一箩筐。我在此仅说一句python的好,用了你就会爱上它。本python示例代码1000+带你由浅入深的了解python基础知识,基本语法,基本编程技巧,脚本编写到项目编写。本书所有示例代码在Ubuntu16.04+Python3.5.2+pycharm下运行成功。示例1:HelloWorld程序1、在解释器下编写程序2、
动态粒子代码
C_VuI
有趣的代码pygamepython开发语言
代码importpygameimportrandom#初始化pygamepygame.init()#设置屏幕尺寸width,height=800,600screen=pygame.display.set_mode((width,height))pygame.display.set_caption("DynamicParticleEffect")#定义颜色BLACK=(0,0,0)#粒子类class
C++ MySQL ORM接口设计优化:从宏污染到现代流式API
C语言小火车
C语言c++mysqljava
(基于编译期反射与链式调用的ORM框架重构实践)在C++中设计一个优雅的MySQLORM接口,既要兼顾易用性,又要保障性能与类型安全。本文针对开发者常见的宏污染、元数据冗余、API臃肿等问题,结合现代C++特性提出一套优化方案,并提供可直接复用的代码示例。一、问题分析:传统ORM接口的痛点1.宏污染严重示例代码问题:通过META_INJECTION等宏手动绑定元信息,导致代码侵入性强、可读性差。维
python 正则表达式
李昊哲小课
大数据人工智能pythonpython正则表达式数据分析人工智能大数据
#coding:utf-8importre常用函数代码3-1使用match函数匹配文本match函数,从字符串起始位置匹配正则表达式,返回Match对象(匹配失败返回None)。text1='自然语言处理是研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。'print('匹配的结果是:',re.match(r'自然语言处理
各类语言的比较
Xia0Mo
java开发语言
1.设计理念Java:面向对象,强调“一次编写,到处运行”,通过JVM实现跨平台兼容性。Go:简洁高效,注重并发性和编译速度,适合构建高性能分布式系统。C++:面向对象与过程式编程的结合,强调高性能和底层控制,适合系统级编程。Python:强调代码可读性和简洁性,支持多种编程范式(面向对象、函数式、过程式),适合快速开发。2.语法Java:语法严谨,支持类、接口、继承等面向对象特性,代码较为冗长。
Java基础语法练习37(枚举、注解(@Override、@Deprecated和@SuppressWarnings))
橙序研工坊
小白Java的成长java开发语言
一、枚举在Java中,枚举(enum)是一种特殊的数据类型,它允许开发者定义一组命名的常量集合先看正常示例,如下代码:publicclassEnum01{publicstaticvoidmain(String[]args){System.out.println(Season.SPRING.getName());}}classSeason{privateStringname;privateStrin
创建者——工厂模式
每天减 1/5kg
python设计模式简单工厂模式
工厂模式工厂模式的目的是将对象的创建与使用分离,通过统一的接口或工厂类来封装对象的实例化过程。特点解耦:客户端代码无需直接依赖具体类,只需关注接口。复用:集中管理对象的创建逻辑,减少重复代码。扩展:通过扩展工厂类,可以动态地创建新的对象类型。简单工厂模式通过一个工厂类集中处理所有产品的创建逻辑的模式。简单工厂模式,也称为静态工厂方法模式,在创建对象时,不需要提供具体的类信息,只需要传入参数即可。f
java继承后 赋值返回_Java基础进阶 第三天 单例模式、继承、final
weixin_39757212
java继承后赋值返回
今日任务1、能够理解单例设计模式2、能够独立使用继承3、能够独立使用final关键字1.代码块1.1.代码块的概念和格式代码块,就是使用大括号括起来的一段代码;书写格式:{代码;}1.2.代码块的分类1.2.1.静态代码块静态代码块,就是使用static修饰的代码块,直接写在类中的代码块;classDemo{static{System.out.pintln("静态代码块")}}2.png静态代码块
JavaWeb——HTML
Clrove.11
JavaWebhtml前端
一、什么是HTMLHTML(HyperTextMarkupLanguage):超文本标记语言超文本:超越了文本的限制,比普通文本更强大。除了文字信息还可以定义图片,音频,视频等。标记语言:由标签构成的语言HTML语言都是预定义好的。例如:使用展示超链接,使用展示图片,展示视频。HTML代码直接在浏览器中运行,HTML标签由浏览器解析。二、HTML基础语法HTML基本结构标题填写内容HTML标签不区
java面试题-微服务(一)
qq_51598807
java面试题大全微服务云原生
一、相关概念1、什么是集群集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事,一起来工作,从而提高工作能力。可以分散服务器压力解决高并发的问题,同时也能预防单节点故障,即一台服务器故障不影响其他服务器正常运行,但没有解决单体应用代码臃肿,业务复杂,维护性差等等问题。2、什么是负载均衡使用了集群后,解决高并发同时有一个新的问题,就是客户端的请求如何分配到多台服务。因此需要通过负载
操作系统专栏之进程管理——进程与线程,进程调度算法,进程间通信方式
文弱书生子
操作系统后端
一、进程与线程之间的关系及对比1.进程(Process)定义:进程是操作系统中运行的程序实例,它是系统资源分配的基本单位。特性:具有独立的地址空间(代码段、数据段、堆栈等)。拥有自己的资源(文件句柄、内存空间等)。进程之间相互独立,一个进程的崩溃不会影响其他进程。进程之间的通信需要进程间通信(IPC)机制,如管道(Pipe)、消息队列、共享内存等。进程切换需要较多的系统资源(如上下文切换的开销大)
差点被开除的哈佛学子,最后为创业选择主动休学 | 比尔盖茨自传《源代码》
量子位
关注前沿科技量子位1973年,比尔·盖茨高中毕业,进入哈佛大学就读。彼时的他尚未意识到,未来三年,这座承载着三十四位诺贝尔奖得主荣光的学府,将在他的人生中交织出最激烈的矛盾与最果决的抉择。哈佛的舞台远比他想象中广阔:各路精英云集,竞争的浪潮汹涌澎湃。在学术的碰撞与现实的冲击下,盖茨的命运轨迹开始悄然扭转。当时,计算机还只是个新兴且略显晦涩的领域,年轻的盖茨已在哈佛大学开启了他的逐梦之旅——从数学领
【完整汇总】近 5 年 JavaScript 新特性完整总览
Hey,我是沉浸式趣谈本文首发于【沉浸式趣谈】,我的个人博客https://yaolifeng.com也同步更新。转载请在文章开头注明出处和版权信息。如果本文对您有所帮助,请点赞、评论、转发,支持一下,谢谢!本文深度解析近5年来JavaScript的所有重要更新,帮助你快速了解JavaScript新特性。ES2024:不断增强的实用性API了解最新的JavaScript特性可以让你的代码更简洁优雅
微服务100道面试题
_TokaiTeio
java后端面试题目java微服务
一、基础概念1.什么是微服务架构?与单体架构的区别?微服务架构是一种将应用程序设计为一组小型、独立部署的服务的架构风格。每个服务运行在自己的进程中,通过轻量级机制(通常是HTTP/REST或消息队列)进行通信。单体架构则是将整个应用程序作为一个整体构建和部署,所有功能模块都在同一个代码库中。区别:特性微服务架构单体架构模块化独立开发、测试、部署集中开发、测试、部署扩展性按需扩展特定服务整体扩展技术
C++和Unity相比易语言有哪些优势?
c++unity
C++和Unity(主要使用C#)相比易语言,具有以下显著优势:性能优势高效计算:C++是一种编译型语言,能够直接与硬件交互,提供高性能的计算能力,尤其适合处理复杂的数学运算、物理模拟和图形渲染。内存管理:C++允许开发者手动管理内存,能够更高效地利用系统资源,减少内存泄漏和性能瓶颈。功能强大底层访问:C++可以访问底层系统资源,如硬件设备、操作系统API等,这在开发高性能游戏或复杂应用时非常关键
Java基础语法练习33(单例模式:饿汉式和懒汉式)
橙序研工坊
小白Java的成长java开发语言
单例模式:1.饿汉式2.懒汉式饿汉式:步骤如下:1.构造器私有化(防止new)2.类的内部创建对象3.向外暴露一个静态的公共方法个人理解:饿(等不及)就是已经创建好了对象等你来用示例代码如下:publicclasseTon{publicstaticvoidmain(String[]args){//第四步通过方法可以获取对象girlFiendinstance1=girlFiend.getInstan
C# 如何使用 webview2 调用本地html文件
花咔咔
c#
1.下载Microsoft.Web.WebView22.工具箱里面会出现一个webview2的控件3.把这个控件拖到窗体上4.写如下代码://窗体装载事件privatevoidProductChartForm_Load(objectsender,EventArgse){this.webView2_main.CoreWebView2InitializationCompleted+=newEventH
C#批量压缩并上载CSV数据文件到Box企业云盘
weixin_30777913
c#开发语言
C#.NET8实现Windows下批量压缩csv文件为zip文件,然后异步上传到box企业云服务网盘路径,实现异常处理和写入运行状态日志,参数来自ini配置文件。C#.NET8代码示例,包含INI配置读取、CSV文件压缩、Box上传、异步处理和日志记录功能:usingSystem.Collections.Concurrent;usingSystem.IO.Compression;usingIniP
C#将Box企业网盘里的文件批量上载到S3,并导入Redshift
weixin_30777913
c#开发语言aws
用C#.NET8将Box企业网盘里一个目录下的所有文件全部上载到S3的一个目录下,这些文件假设全是gzip压缩文件,然后全部导入AmazonRedshift数据库,要实现异步处理,异常处理和输出运行状态日志,所有参数信息来自ini配置文件。将Box企业网盘里的文件上传到AmazonS3,你需要分别使用BoxAPI和AmazonS3API。在C#.NET8中,你可以使用相应的SDK来简化这个过程。以
【C#】内存的使用和释放
wangnaisheng
C#c#
在C#中,内存管理主要是由.NET的垃圾回收器(GarbageCollector,GC)自动处理的。然而,了解如何正确地使用和释放内存对于编写高效且可靠的代码非常重要。以下是一些关键点和最佳实践:1.内存分配托管资源:托管资源是由CLR自动管理的,例如对象实例、字符串等。当创建一个对象时,CLR会从托管堆中分配内存。非托管资源:非托管资源包括文件句柄、数据库连接、GDI+对象等。这些资源需要显式地
【知识分享】C语言中的设计模式——表驱动模式
知识噬元兽
知识分享#设计模式c语言设计模式开发语言
背景 其实在《设计模式——可利用面向对象软件的基础》一书中,提及的23种设计模式里并没有表驱动这种模式,因为《设计模式》一书更多的是根据面向对象的应用提取出来的设计方法。而表驱动模式本身是强烈依赖于数组这种数据结构的,跟对象扯不上关系,所以没有被收录在此书中。但由于它在C语言中的影响力之大,适用面之广,所以被收录在了《代码大全》(这可是另一本经典著作呀)一书中。名词释义 表驱动本身是强
代码随想录算法训练营第五十六天| 图论02
Rachela_z
算法图论
99.岛屿数量注意深搜的两种写法,熟练掌握这两种写法以及知道区别在哪里,才算掌握的深搜。注意广搜的两种写法,第一种写法为什么会超时,如果自己做的录友,题目通过了,也要仔细看第一种写法的超时版本,弄清楚为什么会超时,因为你第一次幸运没那么想,第二次可就不一定了。代码随想录深度搜索,定义上下左右四个方向,找到一个第一个邻接矩阵就递归该点的上下左右,避免重复计算。版本一:direction=[[0,1]
大模型推理速度测评的实战代码
herosunly
大模型推理速度人工智能实战代码
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。 今天给大家带来的文章是大模型推理速度测评的实战代码,希望能对学习大模型的同学们有所帮助
(c#) 销毁资源和释放内存
潘达小新
C#c#销毁释放资源内存
0.什么是资源?.NET框架中如何访问资源?所谓的资源就是程序中可利用的数据,譬如:字符串、图片和任何二进制数据,包括任何类型的文件。在面向对象的环境中,每一个类型都标识为某些程序所用的资源,要想使用这些资源,必须为相应的类型分配一定的内存空间。访问一个资源需要如下几个步骤:1)分配内存空间:调用中间语言(IL)中的newobj指令(使用new操作符时,将产生newobj指令),为某个特定资源的类
六足仿生机器人地形自适应步态规划研究
HH予
机器人
六足仿生机器人地形自适应步态规划研究第1章绪论第2章机器人系统建模第3章地形感知与建模第4章自适应步态生成算法第5章动力学仿真与实验第6章驱动代码设计与实现源码&文档链接第1章绪论1.1研究背景与意义1.2国内外研究现状1.2.1多足机器人步态规划1.2.2地形适应技术1.3关键技术挑战1.4本文主要贡献第2章机器人系统建模2.1机械结构参数%机器人参数配置robotParams=struct(.
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