自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(864)
  • 资源 (26)
  • 收藏
  • 关注

原创 常用TS学习总结

/------------ 断言成string类型。//---------- jsx中使用as语法。// 类似 for...in循环属性名,然后用索引访问操作符得到---属性的类型。//---------------------- 是一个any类型。if ((<Fish>pet2).swim) { //---------------- 断言成Fish类型,就肯定有 swim 属性。if (pet.swim) { //-------------------- 报错,因为pet可能没有swim属性。

2024-09-18 14:45:40 940

转载 SpringBoot源码解读与原理分析(四十一)SpringBoot 2.3新特性:优雅停机

随后该方法会提取出嵌入式Tomcat中所有Engine中的所有Container,每隔50s检查一次Container是否停止,当所有Context中的线程全部执行完毕,即Context全部停止时,优雅停机流程执行完毕。“优雅停机”的新特性,是指在SpringBoot应用被关闭时(注意此处的关闭可以是kill -2,但不能是kill -9),会预留一小段时间,使应用内部的业务线程执行完毕。通过示例展示了如何配置和测试优雅停机,并详细剖析了嵌入式Tomcat的优雅停机实现过程。

2024-09-10 14:41:02 79

转载 Typescript类静态部分与实例部分的区别-详解

因此我们假设这么一个简单的应用场景:我们作为一个老师,要录入每个学生的id(id)和年龄(age)(即创建大量的 student对象,对象中有id和age两个字段),现在我们手上已有的条件是:班级id(classId),学生学号(code),学生年龄(age),且学生id的生成规则为:班级id后接学生学号。因此在使用class的时候,我们不仅仅是要约束最终创建的实例,更重要的是要约束类中的constructor构造器,也就是 类的静态部分。constructor存在于类的静态部分,所以不在检查的范围内。

2024-09-03 09:53:59 183

转载 TypeScript(一)TypeScript下载安装,编译运行的三种方式:tsc命令行/webpack搭建环境/tsc-node库

文章介绍了TypeScript作为JavaScript的超集,提供类型系统,并演示了如何搭建TypeScript环境,包括使用tsc编译器、通过Webpack自动化构建流程,以及配置ts-node直接运行TypeScript代码。-y 的含义:yes的意思,在init的时候省去了敲回车的步骤,生成的默认的package.json。在进行TypeScript开发时,我们会针对TypeScript进行相关的配置,而这些配置信息是存放在一个tsconfig.json文件中的。

2024-08-28 11:38:02 60

原创 Mybatis-Plus 的批量保存saveBatch 性能分析

sql/*** @date 2024年03月13日 16:34*//*** 真正的批量插入* @return*//*** @date 2024年03月13日 15:41*/@Bean。

2024-08-22 11:09:40 1242

原创 如何在 GitLab 中恢复已删除的分支

可以看到我们在恢复的过程中是根据提交message来找到,当我们开发的时候分支较多并且有bug修改的分支时我们不好定位提交号,我们示例中的message写的比较随意,是反例,家人们切勿模仿;然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。这样你就有了一个新的分支,该分支指向你想要恢复的提交,并且可以正常推送到远程仓库。dev_xj:你的分支名,可以和之前删除的一样,也可以重新命个名 d9244f1: 最后一次commit 的提交号或者引用号。

2024-08-20 14:14:05 1032

转载 MyBatis-@param注解详解

注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参)xml映射的查询字段应该为@Param注解括号内的参数例如上面查询参数应该为id而不是userId,如果xml映射的查询字段不与@Param注解的形参一样则会出现如下异常。paramn,bean时sql语句使用param1.属性值…1.如果接口方法有一个或多个参数,并且使用了@Param注解,若注解的为单一属性则sql语句中的参数用注解的value值,若为bean则sql语句中使用的参数注解的value.bean属性值。

2024-08-15 10:14:28 170

原创 Mybatis中动态SQL详解

使用批量插入执行的SQL语句应该等价于:1),(?),(?),(?在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array。

2024-08-15 09:54:59 889

原创 Mybatis中的@Param用于解决ognl的解析问题

Mybatis中的@Param用于解决ognl的解析问题

2024-08-15 09:43:26 342

转载 Stream原理与执行流程探析

只有实现了Collection接口的类才能创建流,所以Map并不能创建流,List与Set这种单列集合才可创建流。上述代码使用stream()方法创建流,也可使用Stream.of()创建任何数量引元的流,或是Array.stream(array,from,to)从数组中from到to的位置创建输入源。stream()运行结果。

2024-07-29 10:36:10 44

原创 mybatis的SQL打印说明

mybatis的SQL打印说明

2024-06-26 15:28:11 483

转载 Spring系列之集成Druid连接池及监控配置

前一篇文章我们熟悉了HikariCP连接池,也了解到它的性能很高,今天我们讲一下另一款比较受欢迎的连接池:Druid,这是阿里开源的一款数据库连接池,它官网上声称:为监控而生!他可以实现页面监控,看到SQL的执行次数、时间和慢SQL信息,也可以对数据库密码信息进行加密,也可以对监控结果进行日志的记录,以及可以实现对敏感操作实现开关,杜绝SQL注入,下面我们详细讲一下它如何与Spring集成,并且顺便了解一下它的监控的配置。Spring集成Druid。

2024-06-25 17:10:04 1126

转载 SpringIoc 容器之 Aware

Aware 是 Spring 提供的一个标记超接口,指示 bean 有资格通过回调样式的方法由 Spring 容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一。实际的方法签名由各个子接口确定,但通常只包含一个接受单个参数的 void 返回方法。

2024-06-24 16:22:01 38

原创 结构化、半结构化和非结构化数据,TS结构类型

比如,如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的,这也容易导致后台接口从数据库取数据出错。从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。:指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文档、JSON文档、E-mail等;

2024-05-22 10:27:40 964

转载 Spring Authorization Server的使用

既然涉及到签名,就涉及到签名算法,对称加密还是非对称加密,那么就需要加密的 密钥或者公私钥对。不存在签名的JWT是不安全的,存在签名的JWT是不可窜改的。,目前已经到了 0.1.2 的版本,不过该项目还是一个实验性的项目,不可在生产环境中使用,此处来使用项目搭建一个简单的授权服务器。没有用户的参与,一般可以用于内部系统之间的访问,或者系统间不需要用户的参与。的创建,这个张三是授权服务器的用户,此处即QQ服务器的用户。此模式下,没有用户的参与,只有客户端和授权服务器之间的参与。

2024-05-21 18:10:02 1008

转载 Java日志通关(二) - Slf4j+Logback 整合及排包

从前边的版本兼容性我们可以知道:如果使用JDK 8,建议选择Slf4j 2.0 + Logback 1.3;如果使用JDK 11及以上,建议选择Slf4j 2.0 + Logback 1.5;但还没完,Spring Boot的日志系统[8]对Slf4j和Logback又有额外的版本要求。我们放在下一节讨论这个问题。三、适配 Spring BootSpring Boot通过spring-boot-starter-logging[9]包直接依赖了Logback(然后再间接依赖了 Slf4j),它通过。

2024-05-17 17:24:01 709

原创 spring 约定优于配置 spring boot约定大于配置

就会自动的帮我们导入 SpringMVC 的相关依赖(包括 Json 支持的 Jackson 和数据校验的 Hibernate Validator)和一个内置的 Tomcat 容器,这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。当你觉得不合适的时候,可以用更少的改动,满足你的需要。约定优于配置,也有很多人解读为:约定大于配置,约定好于配置,习惯大于配置等。约定优于配置也就是说:系统,类库,框架应该提供有合理的默认值,而非要求提供不必要的配置。

2024-05-15 14:00:36 470

转载 oauth2.0授权码模式详解

项目结构如下:AuthzController:获取授权码 (resource owner)TokenController:获得令牌 (authorization server)ResourceController:资源服务 (resource server)ClientController:客户端 (client)前三个Controller相前于服务端 最后一个为客户端。

2024-05-15 10:12:46 302

原创 基于JWT实现的Token认证方案

服务器的受保护路由将检查授权头中是否存在有效的JWT,如果存在,则允许用户访问受保护的资源。4、JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限。签名用于验证消息在整个过程中没有更改,并且对于使用私钥进行签名的令牌,它还可以验证JWT的发送者是它所说的真实身份。一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。请注意:使用签名的Token,Token中包含的所有信息都将向用户或其他方公开,即使他们无法更改它。

2024-04-29 16:32:49 1024

转载 Spring Aware接口执行时机源码深度解读

Spring中有这样一种标记接口的存在Aware,只要是spring管理的bean实现了Aware接口,那么spring就会在bean创建的某个时机将相应的资源注入到该spring bean中,比如ApplicationContextAware, 会将spring 应用上下文ApplicationContext自动注入到bean中。

2024-04-25 17:14:49 112

原创 ResourceBundleMessageSource 和 ReloadableResourceBundleMessageSource的区别

3).小结:ResourceBundleMessageSource从classloader中加载资源文件,可以找到,ReloadableResourceBundleMessageSource加载时,默认使用DefaultResourceLoader,他会先判断资源path是否带有classpath:前缀,如果有,用 ClassPathResource去加载资源文件,如果没有试着用文件协议的url去访问,再没有就在contextPath即WEB-INF下查找。

2024-04-17 15:15:50 435

转载 Spring Cloud LoadBalancer

本模式中,在向前发送请求之前更新所选服务实例(如果原始请求cookie中的服务实例不可用,则该服务实例可能与原始请求cookie中的服务实例不同)非常有用。定期的验证这些服务实例是否存活,然后只返回健康的服务实例,除非一个健康的服务实例都没有,那么它就会返回所有获取到的服务实例。来修改该名称),如果找到一个hint请求头,就会用该请求头的hint值来筛选服务实例。设置的hint值来筛选请求实例。在这种模式中,可以设置LoadBalancer优先选择先前选择过的服务实例(如果该实例可用的话)。

2024-04-10 11:08:12 537

转载 mybatis-plus的使用

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。

2024-04-08 14:43:37 259

转载 JVM 原理三:编译期常量与运行期常量的区别及数组创建本质分析

我们用的final是一个字面量“hello world”,这次我们改一下使用UUID为常量赋值,注意:UUID是多少只有在运行期间才会被确定。对于数组来说,JavaDoc经常讲构成数组的元素称为Component,实际上就是将数组降低一个维度后的类型。newarray : 表示创建一个指定的原始类型(如int、float、char等)的数组,并将其压入栈顶。这时的程序运行时,会导致主动使用这个常量所在的类,显然会导致这个类被初始化。当一个常量的值并非编译期可以确定的,那么其值就不会被放到调用类的常量池中,

2024-04-08 08:55:41 45

转载 表单身份验证概述

在上一篇教程中 ,我们讨论了ASP.NET 提供的各种类型的身份验证、授权和用户帐户。在本教程中,我们将从讨论转向实现,特别地,我们将探讨表单身份验证的实现。我们在本教程中开始构建的Web应用程序将在后续的教程中逐步完善,从简单的表单身份验证到成员资格和角色。本文首先深入探讨表单身份验证流程,我们在前一教程中就接触过该主题。然后,我们将创建一个ASP.NET网站,通过它来阐述表单身份验证的各个概念。

2024-03-29 16:43:07 75

转载 Spring-Security-OAuth2架构及源码浅析

Spring Security OAuth2架构Spring Security OAuth2是一个基于OAuth2封装的一个类库,它提供了构建和Client三种Spring应用程序角色所需要的功能。需要与和提供的功能协同工作,在使用构建和Client的情况下,的整体架构图如下:1.资源拥有者通过UserAgent访问client,在授权允许访问授权端点的情况下,会创建OAuth2认证的REST请求,指示UserAgent重定向到的授权端点。2.UserAgent访问的授权端点的authorize。

2024-03-25 10:44:13 188

转载 Java 在Java 9中什么时候使用Stream的ofNullable()方法

在本文中,我们介绍了Java 9中Stream的ofNullable()方法的使用情况。在上面的代码中,我们首先将列表转换为Stream,然后使用flatMap()方法将每个元素转换为一个Stream,如果元素为null,则转换为空Stream。它的作用是创建一个单一元素的Stream,如果提供的元素为非空,则返回一个包含该元素的Stream,如果提供的元素为空,则返回一个空Stream。这样,我们就可以在处理可能包含空值的情况下使用Stream的ofNullable()方法来简化数据处理的过程。

2024-03-13 11:42:46 255

转载 【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析

默认只有打包的时候(package、install、deploy)会将 .flattened-pom.xml 做为当前项目的 pom 文件,但是打包类型 pom 的 pom.xml 中的占位符是不会被替换的。But,在大多数互联网公司中,几乎每个项目都处在版本快速迭代中,甚至一两周更新一个小版本,一个月更新一个大版本。我们可以在 spring-boot 和 spring-cloud-alibaba 的开源项目中看到,其就是利用 revision 占位符来进行统一版本管理的。2.1 先看一下自己构建的项目。

2024-03-12 14:02:55 3718

原创 Java泛型使用及局限

(1)在方法返回值类型前面声明的泛型形参类型,只能在当前方法中使用,用于表示形参的类型或返回值类型,或方法局部变量的类型,和别的方法无关。【修饰符】 返回值类型 方法名(【数据形参列表】)【throws 异常列表】{}T是elements对象的类型,要求Collection集合的元素类型必须是T或T的父类。super T>,在实现Comparable接口,可以指定Comparable为T或T的父类。

2024-03-11 11:05:32 620

转载 Spring Bean 注册顺序优先级总结

@Bean 方法参数注入@Configurationpublic class MytestConfigure { @Bean public BeanA beanA(BeanB demoB){ System.out.println("bean A init"); return new BeanA(); } //注参数List也一样,同上。 @Bean public BeanA2 beanA2(List beanB

2024-03-05 15:51:04 640

原创 spring事务方法调用不生效的场景

日常开发中,我们经常使用到spring事务。最近一位朋友去美团面试,被问了这么一道面试题:Spring 事务在哪几种情况下会不生效?今天田螺哥跟大家聊聊,spring事务不生效的15种场景。

2024-02-29 15:42:06 919

转载 Junit4&Junit5对比

Junit5在Junit4的基础上,增加了一些新的特性。增加了基于lambda的支持,同时简化了一些测试手法的编写,如重复性测试,参数化测试等等。Junit5中的@Test是import org.junit.jupiter.api.Test;被注解的(静态)方法将在当前类中的所有 @Test 方法前执行一次。被注解的(静态)方法将在当前类中的所有 @Test 方法后执行一次。被注解的方法将在当前类中的每个 @Test 方法前执行。被注解的方法将在当前类中的每个 @Test 方法后执行。

2024-02-28 15:58:19 262

转载 spring-boot-starter-test的junit-vintage-engine和junit-jupiter-engine之间的区别

如果你的 Spring 项目使用的新的 Spring Boot 版本的话,你应该默认使用了 JUnit 5 的引擎,因此为了兼容性,你需要在 spring-boot-starter-test 这个 POM 引用的时候将 JUnit 4 的引擎去除掉。org.junit.jupiter.api.Test 和 org.junit.Test 同时存在,如果不小心引入了org.junit.Test ,那么就会发生这个spring 属性注入为null的情况。​ 区别:自己写的以前单元测试,是public。

2024-02-28 15:33:23 251

转载 Mybatis-Plus:通用枚举-配置typeEnumsPackage

生成的sql语句为:INSERT INTO tb_user ( id, user_name, password, name, age, email, sex ) VALUES (?生成的sql语句为:SELECT id,user_name,password,name,age,email,sex FROM tb_user WHERE (sex =?为tb_user表增加sex字段,用于表示用户的性别,1表示是男生,2表示是女生。WOMAN(2, "女");// 设置貂蝉为女生。MAN(1, "男"),

2024-02-22 15:40:01 667

转载 Leaf(世界上没有两片完全相同的树叶)

Leaf中workId是基于ZooKeeper的顺序Id来生成的,每个应用在使用Leaf-snowflake时,启动时都会都在Zookeeper中生成一个顺序Id,相当于一台机器对应一个顺序节点,也就是一个workId。通常在用号段模式的时候,取号段的时机是在前一个号段消耗完的时候进行的,可刚刚才取了一个ID,数据库中却已经更新了max_id,也就是说leaf已经多获取了一个号段,这是什么操作?当前号段已消耗10%时,还没能拿到下一个号段,则会另启一个更新线程去更新下一个号段。留个悬念啊........

2024-02-22 10:41:19 37

转载 webpack模块化原理-commonjs/webpack模块化原理-ES module

我们都知道,webpack作为一个构建工具,解决了前端代码缺少模块化能力的问题。我们写的代码,经过webpack构建和包装之后,能够在浏览器以模块化的方式运行。这些能力,都是因为webpack对我们的代码进行了一层包装,本文就以webpack生成的代码入手,分析webpack是如何实现模块化的。PS: webpack的模块不仅指js,包括css、图片等资源都可以以模块看待,但本文只关注js。

2024-02-04 10:28:11 221

转载 前端模块化——彻底搞懂AMD、CMD、UMD、ESM和CommonJS

UMD是AMD和CommonJS的一个糅合。AMD是浏览器优先,异步加载;CommonJS是服务器优先,同步加载。既然要通用,怎么办呢?那就先判断是否支持node.js的模块,存在就使用node.js;再判断是否支持AMD(define是否存在),存在则使用AMD的方式加载。这就是所谓的UMD。

2024-02-04 09:32:43 1246

转载 Ts中内置类型

OmitThisParameter 从 T函数类型中移除this参数 如果不存在 返回T 存在这创建一个不带此参数的新函数类型。Extract<T,U> 从T中提取可以分配给U的属性构造成一个新的联合类型 和Exclude相反。Exclude<T,U> 从T中排除可分配给U的的类型,返回联合类型。Parameters 从 函数类型T中使用的参数类型 构造元组类型。ReturnType 构造一个由函数类型 T返回类型组成的类型。ts内置了一些类型,这些类型可以进行其他类型的类型转化。

2024-01-31 15:17:40 200

原创 typescript 的基本用法说明

function test3({ a = 1, b = 2 } = {}): void {} // 双重默认值 右边是没传参的默认值 左边是传参了但是某个字段没定义的默认值。function test2([first, second]: [number, number]) {} // 参数结构定义类型 前一个是参数 后一个是类型。let masef:<T>(arr:Array<T>):T = testmm//具体实现。

2024-01-31 15:12:04 443

转载 Markdown基础语法

接着一个方括号,里面放上图片代替文字接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的’title’属性的文字。支持HTML元素,不在Markdown涵盖范围内的标签,都可以直接在文档里面使用HTML编写。Markdown段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加回车。Markdown还没有指定图片的高度与宽度,如果你需要的话,你可以使用普通的标签。另外区块是可以嵌套的,一个>符号代表最外层,两个>符号是第一层嵌套,以此类推。| rejected。

2024-01-25 16:50:56 267

mysql.data版本集合

mysql.data版本集合,用于解决 给定关键字不在字典中 的问题。

2023-03-24

jndi-jar.zip

jdni的两个jar包:fscontext.jar,providerutil.jar。主要用于jdni的开发。

2020-07-23

Daemon tool pro虚拟光驱清除工具及强力清除工具

Daemon tool pro虚拟光驱清除工具及强力清除工具,两个工具肯定能清理。

2018-03-29

淘宝IP地址解析

淘宝IP地址解析淘宝IP地址解析

2017-06-29

castle-AOP

castle的AOP例子

2017-05-11

hibernate-validator-4.2.0.Final-dist

hibernate-validator-4.2.0.Final-dist

2017-01-05

Apache Shiro源码

Apache Shiro 源码 ,Apache Shiro 身份认证例子-源码 .

2016-12-15

Apache Shiro web

Apache Shiro,拷贝到Tomcat下运行,默认用户名/口令:admin/admin

2016-12-15

jdk动态代理和cglib

使用Java的动态代理有一个局限性就是代理的类必须要实现接口,CGLib采用非常底层的字节码生成。

2016-11-04

rest webservice开发接口所jar(javax.ws.rs.jar)

est 开发webservice必备的jar包,rest开发webservice是一个http协议轻量级组件,简单,上手快,调用方便

2016-09-30

exe4j 64位 生成exe工具

exe4j 64位 生成exe工具。

2015-12-21

C#双向链表的实现

C#双向链表的实现

2015-09-28

hammock-master

hammock-master,RESTful,.NET环境下我们想调用其它开放平台的服务接口,不需要自己去实现底层,开源的库用起来会很方便

2015-06-07

instantclient

64位oracle数据库安装32位plsql解决方法 解压缩放到你的相关地址下:比如E:\tools下 然后将你下列路径下的两个文件拷贝出来放到E:\tools\instantclient_10_2_4 a. path: G:\oracle\product\10.2.0\client_3\oui\lib\win32 filename:msvcr71.dll b. path: G:\oracle\product\10.2.0\client_3\NETWORK\ADMIN filename: tnsnames.ora

2014-10-22

Oracle odbc数据源驱动

Oracle odbc数据源驱动

2013-10-15

VC++ OLE DB 编程指导

VC+++OLE+DB+编程指导.rar

2013-10-15

wince json序列化

wince json序列化List<T> list = Json.Converter.Deserialize<List<T>>(json);

2013-05-15

cocowatcher

自动检测并启动程序,通过cocowather文件配置即可,并附件上源代码。

2013-04-24

CPU进程数执行检查

CPU进程数执行检查

2013-01-06

C#高质量仿腾讯截图程序

C#高质量仿腾讯截图程序

2012-12-10

WCFSample基于net.tcp

WCFSample基于net.tcp的WCF配置实例解析 本文主要通过文件配置来讲解如何编写一个基于net.tcp的Windows Form小程序。 使用的工具 涉及的工具有: SvcUtil.exe WCF Service Configuration Editor

2012-12-09

WCFCallBackDaemon

WCFCallBackDaemon由于WCF中提供了CallbackContract属性,所以在双工通信中,我们可以很方便的和Server进行通信

2012-12-09

C#开发EXCEL报表

开发EXCEL报表格式,直接生成EXCEL报表形式。poi生成EXCEL报表格式。

2010-06-23

ibatis架构,ibatis

ibatis架构,ibatis是一个轻量级的系统架构,在现多少系统中运用。

2010-06-23

ActiveSyncsetupchs

ActiveSyncsetupchs ActiveSyncsetupchsActiveSyncsetupchsActiveSyncsetupchs

2010-04-29

多文件falsh_upload

flash+asp.net的多文件上传的好资料

2008-11-20

空空如也

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

TA关注的人

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