自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

そうふくのスタジオ

ひとにとって たいせつなものは じぶんにじしんをもってるかどうかじゃないか。みんなはたいせつなものだった いらないものはありません。

  • 博客(104)
  • 资源 (59)
  • 收藏
  • 关注

转载 web性能优化14法则

Web 应用性能优化黄金法则:先优化前端程序 (front-end) 的性能,因为80% 或以上的最终用户响应时间的花费所在。法则 1. 减少 HTTP 请求次数80%的最终用户响应时间花在前端程序上,而其大部分时间则花在各种页面元素, 如图片、 样式表、 脚本和 Flash 等的下载上。 减少页面元素将会减少 HTTP 请求次数,是快速显示页面的关键所在。 一种减少页面元素个数的

2013-08-31 15:56:32 500

web性能优化14法则

户响应时间花在前端程序上,而其大部分时间则花在各种页面元素, 如图片、 样式表、 脚本和 Flash 等的下载上。 减少页面元素将会减少 HTTP 请求次数,是快速显示页面的关键所在。 一种减少页面元素个数的方法是简化页面设计。 但是否存在其他方式,能做到既有丰富内容,又能获得快速响应时间呢?可以参考以下一些技术: Image maps 组合多个图片到一张图片中。总文件大小变化不大,但减少了 HTTP 请求次数从而加快了页面显示速度。 该方式只适合图片连续的情况;同时坐标的定义是烦人又容易出错的工作。

2013-08-31 15:56:00 35

转载 大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行

2013-08-31 15:55:07 425

大型网站架构演变和知识体系

2013-08-31 15:55:00 36

转载 大型互联网站解决海量数据的常见策略

信息时代,海量数据处理已成为一个老话题,今天看到一篇不错的文章,分享给大家   大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等多个部分组成的复杂系统。分为 业务数据层、计算层、数据仓储、数据备份,通过应用服务器软件提供数据存储服务,并且通过监控工具对存储单元监控。    随着系统中用户数据量的线

2013-08-31 15:53:47 570

大型互联网站解决海量数据的常见策略

2013-08-31 15:53:00 59

原创 java并发面试题(一)基础

本文整理了常见的Java并发面试题,希望对大家面试有所帮助,欢迎大家互相交流。多线程java中有几种方法可以实现一个线程?如何停止一个正在运行的线程?notify()和notifyAll()有什么区别?sleep()和 wait()有什么区别?什么是Daemon线程?它有什么意义?java如何实现多线程之间的通讯和协作?锁什么是可重入锁(ReentrantLock)?当

2013-08-31 15:18:10 876

java并发面试题(一)基础

行的线程?notify()和notifyAll()有什么区别?sleep()和 wait()有什么区别?什么是Daemon线程?它有什么意义?java如何实现多线程之间的通讯和协作?锁什么是可重入锁(ReentrantLock)?当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法?synchronized和java.util.concurrent.locks.Lock的异同?乐观锁和悲观锁的理解及如何实现,有哪些实现方式?并发

2013-08-31 15:18:00 44

原创 java中堆和堆栈的区别(一)

1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。   2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收

2013-08-29 02:06:36 479

java中堆和堆栈的区别(一)

快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。3. Java中的数据类型有两种。  一种是基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char(注意

2013-08-29 02:06:00 39

原创 spring下的bean单例模式与设计模式(GOF)中的单例模式区别

一般的单例是指JVM中只有一个实例,Spring的单例是spirng 容器中只有一个实例。 当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该be

2013-08-28 19:17:41 642

spring下的bean单例模式与设计模式(GOF)中的单例模式区别

2013-08-28 19:17:00 75

原创 Java中HashMap和TreeMap的区别深入理解

首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不

2013-08-28 19:13:02 414

Java中HashMap和TreeMap的区别深入理解

的对象叫做value。这就是我们平时说的键值对。HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。HashMap 非线程安全 TreeMap 非线程安全 线程安全 在Java里,线程安全一般体现在两个方面: 1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchroniz

2013-08-28 19:13:00 52

原创 深入Java集合学习系列:LinkedHashMap的实现原理

1. LinkedHashMap概述:   LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。   LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序

2013-08-28 19:09:40 370

深入Java集合学习系列:LinkedHashMap的实现原理

2013-08-28 19:09:00 39

原创 JVM调优总结(五)-分代垃圾回收详述1

为什么要分代    分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。     在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程

2013-08-27 22:02:39 375

原创 JVM调优总结(四)-垃圾回收面临的问题

如何区分垃圾     上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进

2013-08-27 22:02:02 401

JVM调优总结(五)-分代垃圾回收详述1

2013-08-27 22:02:00 43

JVM调优总结(四)-垃圾回收面临的问题

方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所以要获取哪些对象正在被使用,则需要从Java栈开始。同时,一个栈是与一个线程对应的,因此,如果有多个线程的话,则必须对这些线程对应的所有的栈进行检查。 同时,除了栈外,还有系统运行时的寄存器等,也是存储程序运行数据的。这样,以栈或寄存

2013-08-27 22:02:00 44

原创 JVM调优总结(三)-基本垃圾回收算法

可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep):  此算法执行分两阶段。第一阶段从引用根节点开始标记所有

2013-08-27 22:01:27 444

JVM调优总结(三)-基本垃圾回收算法

2013-08-27 22:01:00 47

原创 JVM调优总结(二)-一些概念

Java对象的大小    基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。    在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object();    这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte

2013-08-27 22:00:29 460

JVM调优总结(二)-一些概念

2013-08-27 22:00:00 34

转载 JVM调优总结(一)-- 一些概念

转自:http://hllvm.group.iteye.com/group/wiki/?category_id=301数据类型    Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本

2013-08-27 21:41:35 454

JVM调优总结(一)-- 一些概念

始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型,接口类型和数组。堆与栈 堆和栈是程序运行的关键,很有必要把他们的关系说清楚。 栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数

2013-08-27 21:41:00 40

原创 JVM 几个重要的参数

最近对JVM的参数重新看了下, 把应用的JVM参数调整了下。  几个重要的参数-server -Xmx3g -Xms3g -XX:MaxPermSize=128m -XX:NewRatio=1  eden/old 的比例-XX:SurvivorRatio=8  s/e的比例 -XX:+UseParallelGC -XX:ParallelGCThreads=8 

2013-08-27 21:39:55 548

JVM 几个重要的参数

Xmx3g -Xms3g -XX:MaxPermSize=128m -XX:NewRatio=1 eden/old 的比例-XX:SurvivorRatio=8 s/e的比例 -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseParallelOldGC 这个是JAVA 6出现的参数选项-XX:LargePageSizeInBytes=128m 内存页的大小, 不可设置过大, 会影响Perm的大小。-XX:+UseFastAccessorMe

2013-08-27 21:39:00 36

原创 慢慢琢磨JVM——恭喜JavaEye重新开张

1 JVM简介 JVM是我们Javaer的最基本功底了,刚开始学Java的时候,一般都是从“Hello World”开始的,然后会写个复杂点class,然后再找一些开源框架,比如Spring,Hibernate等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存溢出什么的,今天是交易系统报了StackOverfl

2013-08-27 21:38:42 509

慢慢琢磨JVM——恭喜JavaEye重新开张

pring,Hibernate等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存溢出什么的,今天是交易系统报了StackOverflowError,明天是网站系统报了个OutOfMemoryError,这种错误又很难重现,只有分析Javacore和dump文件,运气好点还能分析出个结果,运行遭的点,就直接去庙里烧香吧!每天接客户的电话都是战战兢兢的,生怕再出什么幺蛾子了。我想Java做的久一点的都有这样的经历,那这些问题的最

2013-08-27 21:38:00 87

原创 JVM内存管理:深入垃圾收集器与内存分配策略

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。概述:  说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期,人们

2013-08-27 21:36:26 401

JVM内存管理:深入垃圾收集器与内存分配策略

n,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期,人们就在思考GC需要完成的3件事情:哪些内存需要回收?什么时候回收?怎么样回收?  经过半个世纪的发展,目前的内存分配策略与垃圾回收技术已经相当成熟,一切看起来都进入“自动化”的时代,那为什么我们还要去了解GC和内存分配?答案很简单:当需要排查各种内存溢出、泄漏问题时,当垃圾收集成为系统达到

2013-08-27 21:36:00 62

原创 JVM内存管理:深入Java内存区域与OOM

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述:对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete/f

2013-08-27 21:35:03 460

JVM内存管理:深入Java内存区域与OOM

人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。对于Java程序员来说,不需要在为每一个new操作去写配对的delete/free,不容易出现内容泄漏和内存溢出错误,看起来由JVM管理内存一切都很美好。不过,也正是因为Java程序员把内存控制的权力交给了JVM,一旦出现泄漏和溢出,如果不了解JVM是怎样使用内存的,那排查错误将会是一件非常困难的事情。VM运行时数据区域 JVM执行J

2013-08-27 21:35:00 32

原创 深入理解JVM

1   Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1   Java四个方面的关系运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.

2013-08-27 21:33:06 433

深入理解JVM

a虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1 Java四个方面的关系运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。从上图也可以看出Java平台由Java虚拟机和 Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。这个

2013-08-27 21:33:00 49

原创 Java内存管理基础篇- Java内存分配

1.简介  现摘录一段Java5内存管理白皮书中的一段话: One strength of the Java™ 2 Platform, Standard Edition (J2SE™) is that it performs automatic memorymanagement, thereby shielding the developer from the complexi

2013-08-27 21:29:45 375

Java内存管理基础篇- Java内存分配

shielding the developer from the complexity of explicit memory management.由上面我们可以知道,Java平台采用了自动的内存管理方式,那么JVM是如何进行内存管理的呢?Java的内存管理实际上包含两个方面: 1).Java内存分配2).Java的内存回收 搞清楚了这两个问题,Java的内存管理就清楚了。写这篇文章之前,问了自己一个问题:Java采用了自动的内存管理方式,程序员实际上不用关

2013-08-27 21:29:00 79

原创 JAVA多线程与并发学习总结

1.      计算机系统使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的缓存数据不一致的情况,则同步回主内存时需要遵循一些协议。乱序执行优化:为了使得处理

2013-08-27 10:40:41 421

JAVA多线程与并发学习总结

内存之中,这样处理器就无需等待缓慢的内存读写了。缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的缓存数据不一致的情况,则同步回主内存时需要遵循一些协议。乱序执行优化:为了使得处理器内部的运算单位能尽量被充分利用。2. JAVA内存模型目标是定义程序中各个变量的访问规则。(包括实例字段、静态字段和构成数组的元素,不包括局部变量和方法参数)所有的变量都存储在主内存中(虚拟机内存的一部分)。每条线程都由自己的工作内存,线程

2013-08-27 10:40:00 46

JavaScript源代码集锦

JavaScript源代码集锦,受益匪浅。

2011-11-19

JavaScript动画制作.zip

JavaScript动画制作,javascript是一个很流行的WEB开发技术。

2011-11-19

Rational+Rose+2003+汉化版.rar

\Rational+Rose+2003+汉化版.rar ,共享下。

2011-11-13

AxureRP6(UI设计工具)

AxureRP6,UI设计好工具。====================================

2011-11-11

Axure6部件库.rar

Axure6部件库.rar ,Axure6部件库.rar Axure6部件库.rar Axure6部件库.rar Axure6部件库.rar

2011-11-10

Struts2+Spring+Hibernate+ExtJS开发实例

Struts2+Spring+Hibernate+ExtJS开发实例,详细的一个CRUD操作代码,是你学习Struts2+Spring+Hibernate+ExtJS架构的启蒙老师。

2011-10-27

项目管理工具高级运用

项目管理工具高级运用,project的高级运用。

2011-10-23

oracle高层次知识

oracle高层次知识,OCP经常用到的知识。

2011-10-23

jquery-api-1.4.4.zip

jquery-api-1.4.4.zip ,最新的JS框架一种。

2011-10-22

hibernate-3.3.2帮助文档PDF版本

hibernate-3.3.2帮助文档PDF版本,受益匪浅。可以帮助你熟悉HIBERNATE 的源码,可以使你以后运用HIBERNATE游刃有余。

2011-10-22

hibernate-3.3.2.API帮助HTML版本

hibernate-3.3.2.API帮助HTML版本,很详细的介绍了最新的HIBERNATE技术的细节。

2011-10-22

dorado展现中间件深入浅出

dorado展现中间件深入浅出,学习dorado的首选资料。

2011-10-20

FLEX项目简单的小例子

FLEX项目简单的小例子,是初学FLEX的好东东。

2011-10-20

FLEX+快速入门.CHM

FLEX+快速入门.CHM ,精辟的好东西,值得收藏。

2011-10-20

Flex开发实例.

Flex开发实例,典型的学习FLEX的好资料,实例代码。

2011-10-20

整合Flex和Java--配置篇.pdf

整合Flex和Java--配置篇,详细介绍了如何在项目中整合FLEX框架。

2011-10-20

JBPM工作流开发指南

JBPM工作流开发指南.介绍如何运用,好资料。

2011-10-20

JBPM工作流开发指南

JBPM工作流开发指南,工作流的好资料。

2011-10-20

JBPM3.2与Spring结合时任务调度的实现

JBPM3.2与Spring结合时任务调度的实现.

2011-10-20

Java语言基础知识

很详细的JAVA基础知识总汇,很好的面试资料。

2011-10-20

JQuery_插件FlexiGrid_之完全配置与使用

JQuery_插件FlexiGrid_之完全配置与使用

2013-06-08

jquery-easyui中文详细说明文档完整

jquery-easyui中文详细说明文档完整

2013-06-08

软件开发流程图.pdf

软件开发流程图,可以看出一个软件开发的流程。

2012-02-29

jdk1.5.0_12源码下载

jdk1.5.0_12源码,多看看,可以熟悉后台是如何运行并加载类文件的。

2012-02-05

分布式数据库原理

分布式数据库原理

2011-12-08

分布式数据库系统及其应用课件.rar

分布式数据库系统及其应用课件.rar

2011-12-08

基于MySQL的分布式数据库实践_公开.pdf

基于MySQL的分布式数据库实践_公开.pdf

2011-12-08

高可用可扩展数据库架构方案探讨.pdf

高可用可扩展数据库架构方案探讨.pdf

2011-12-08

分布式系统概念与设计.part2.rar

分布式系统概念与设计.part2.rar

2011-12-08

分布式系统概念与设计.part1.rar

分布式系统概念与设计.part1.rar

2011-12-08

分布式数据库设计

分布式数据库设计分布式数据库设计分布式数据库设计分布式数据库设计

2011-12-07

Oracle+的分布式数据库设计与技术.pdf

Oracle+的分布式数据库设计与技术.pdf

2011-12-07

ibatis源码

ibatis源码

2011-12-02

struts2源代码分析

struts2源代码分析struts2源代码分析struts2源代码分析struts2源代码分析struts2源代码分析struts2源代码分析struts2源代码分析struts2源代码分析

2011-11-23

网页特效.chm

网页特效.chm 网页特效.chm 网页特效.chm 网页特效.chm

2011-11-22

JSP技巧集.php.chm

JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm JSP技巧集.php.chm

2011-11-22

Jdk1.5Doc_CN.chm

Jdk1.5Doc_CN.chm Jdk1.5Doc_CN.chm Jdk1.5Doc_CN.chm Jdk1.5Doc_CN.chm

2011-11-22

javaAPI 中文版.chm

javaAPI 中文版.chm

2011-11-22

olap,jpivot-1.8.0.zip

olap,jpivot-1.8.0.zip ,很好的东西。

2011-11-22

javascript源码大全 v1.0.chm

javascript源码大全 v1.0.chm ,Javascript是目前必不可少的一门技术。

2011-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除