自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 资源 (52)
  • 收藏
  • 关注

原创 使用vaadin在后端写前端

从原古的SSH和现在的前后端分离架构,大部分WEB前端的开发都需要脚本语言,不论是JSP还是HTML或者angular,那有没有一种可以用后端代码写前端代码的实现呢?而以上个页面的所有代码都在后台,用JAVA编写,如下是一个继承com.vaadin.ui.UI的自定界面。由于上面的Servlet相对模式固定,所以在启动时根据自动扫描,完成Servlet的注册。学习过Swing的同学大概可以知道CS架构里是可以的,那BS架构里呢?可以集成到Dropwizard框架中,指定路径了Servlet。

2023-03-04 14:39:29 257 1

原创 利用Kafka实现延迟队列实践

上面的实践存在什么样的问题,考虑一个场景,有一个延迟一小时的队列,这样消息发出后,实际上一个小时后在该主题上的消息拉取才有意义(之前即使拉取下来也发送不出去),但上面的实现仍然会不停阻塞唤醒,相当于在做无用功。主要实践原理是通过定阅原始主题,并判断是否满足延迟时间要求,满足要求后转发新主题,不满足则阻塞等待,同时外置一个定时器,每1秒进行唤醒锁协作。这边的原理是通过定阅原始主题,并判断是否满足延迟时间要求,满足要求后转发新主题,不满足则停止消费并等待。kafka本身是不支持延迟队列功能,我们可以通过。

2022-09-27 19:51:49 4472 1

原创 Nacos的长轮询实践

Nacos长轮询的基本思路是通过Servlet3.0后提供的异步处理能力,把请求的任务添加至队列中,在有数据发生变更时,从队列中取出相应请求,然后响应请求,负责拉取数据的接口通过延时任务完成超时处理,如果等到设定的超时时间还没有数据变更时,就主动推送超时信息完成响应。关于心跳检测参考:https://blog.csdn.net/sunquan291/article/details/126556366。

2022-09-19 14:28:56 1703

原创 代理对象上的注解获取失败总结

1、从上文的分析来看,如果是CGLIB代理的原理,通过增加@Inherited可以保证注解信息不丢失。2、而JDK代理,只有在接口上的注解才不会丢失最后框架提供的根据注解获取对象,作为框架其并不知道使用了何种代理。

2022-09-17 15:43:35 870

原创 最佳实践-SQL语法校验

在系统的版本发现过程,随需求的叠加,出现了多次版本的升级脚本填写不对或忘写的情况,虽然项目内严格要求研发必须针对SQL脚本手动执行且无报错前提下,才能验证通过。系统提供一前置检查框架,所以在前置检查框架中叠加对应的校验项即可,通过技术选型,使用alibaba的SQLParserUtils进行检查。一些常见的低级问题还是可以检查出来,将功能嵌入到微服务的前置检查中,一定程度上可以避免人为的失误。系统中,所以对于特定不支持的语法SQL,代码中进行了人为的异常保护。

2022-09-17 15:17:53 3010 1

原创 DropWizard的AOP扩展点最佳实践

本文中FrameInterceptionService,通过判断方法上是否有注解Record,进而决定是否使用MethodInterceptor进行切面处理。DW框架提供了对应的扩展点接口,我们只需要实现接口InterceptionService并发布成Bean。方法拦截器功能实现,针对方向执行进行相关调用明细的记录,方便后序数据分析。该接口中定义了三个回调接口,分别是。

2022-09-17 15:01:25 481 2

原创 Nacos服务注册与心跳机制源码分析

Nacos是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。

2022-09-17 14:55:15 541

原创 DropWizard框架里关于异常统一处理实践

javax.ws.rs.ext.ExceptionMapper提供了可以进行异常处理的接口类。最后通过引入自定义的异常处理扩展点,原理是通过配置文件指导具体类,并反射加载实例化,填充。最终构造对象 ExceptionResult返回。其中针对系统内置的异常进行定制的额外处理,如。

2022-09-16 18:18:32 309

原创 airtest_touch未点击失效

在使用Airtest进行WEB测试自动化相关功能开发过程中,突然发现在本地机器上使用airtest_touch函数时,对于截图扫描后却无法点击对应页面中图片。当我们打开测试报告,发现对于图片识别算法,已经是准确识别到了对应的截图位置,那获取的坐标点也应该是正常的,为什么点击不了?尝试着使用找到的坐标67,32进行强制touch(点击),最后发现也点击不成功,奇怪的是反而点击到了界面的其它位置。尝试从网络上进行搜索,有同学说是版本的问题,不置可否!从命令行中找到对应日志,最终图片中心坐标点为67,32。

2022-09-15 20:36:30 1598

原创 还有一次修改JAVA源码机会,要不要?

APT(Annotation Processing Tool) 注解处理器,是 javac 的一个工具,它可以在源码生成class的时候,处理Java语法树。在系统运行过程中,有经常需要为Bean进行JSON序列化或反序列化的需求,(本节YY的需求,不必较真)所以如果每个Bean里自带如toJson方法,可以获得对应的字符串,那便是极好的。第二即是字节码的改进逻辑,这块需要对于JCTree操作十分熟悉,更多操作细节可以自行上网查找。编译后的class文件反编译后,结果如下,toJson方法已经增加。

2022-09-13 09:40:34 381

原创 最佳实践-LinkBlockingQueue改进

使用线程池的同学对于标题中的队列想必都有过使用,但上述队列使用不当时则会造成程序OOM,那怎么来控制呢?使用ArrayBlockingQueue?如何来评估长度?是否有一个完美的解决方案呢,MemorySafeLinkedBlockingQueue则通过对内存的限制判断尽面控制队列的容量,完成解决了可能存在的OOM问题。获取内存大小(注:单位大B;线程池在excute任务时,放队列,放不进去,使用新线程运行任务。这个放不进行,是使用的offer??非阻塞方法吗?

2022-09-08 18:15:00 379

原创 SQL优化-数据库自优化

因此在优化进入深水区后,需要了解到数据库进行优化后的SQL语句是什么?针对各类数据库,其是有自己的优化引擎,针对SQL语句会尝试优化,但优化的结果,有时并不是系统想要的。可以发现其是先join再where查询的,从SQL优化角度看,先子查询,再in效率会有提升。可以看到mysql优化器将普通的多表查询的sql优化成了连接查询,提升效率。–explain执行对应SQL语句。

2022-09-05 18:21:49 292

原创 SpringBoot的条件装配

果然在spring-boot-autoconfigure的POM依赖里,有对应的spring-data-redis依赖,但需要注意的optional为true。在进行Maven管理的项目中,依赖中存在一个optional的配置,默认为false,设置为true时,表示为当前的这个依赖不会被传递依赖。由于optional的存在,所以不会传递依赖到spring-data-redis,当确实需要使用Redis的功能时,则需要显示在工程中。通过自动装配,获取RedisAutoConfiguration.java。

2022-09-04 21:35:46 532

原创 OpenResty应用-数据库访问

OpenResty是一个基于Ngin与Lua的高性能Web平台,集成了大量Lua库、第三方模块及大多数依赖项,可以方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。

2022-09-04 21:29:16 828

原创 SpringBoot事件机制

复用SpringBoot内置事件机制,自定义,参考:context.publishEvent(new ExitCodeEvent(context, exitCode));定阅事件// 发送短信 LOGGER . info("新注册用户 {} 短信发送成功" , userRegisterEvent . getUser() . getUserName());} }发布事件。...

2022-09-01 11:01:50 187

原创 可删除的BloomFilter

众所周知,Guava提供的BloomFilter是不支持删除操作的,本文简单实现了一个支持删除的布隆过滤器,实现的原理很简单,高手绕行,通过将删除的数据暂存,并加入判断,同时通过定时器和阀值控制过滤器的重建。...

2022-08-30 17:34:25 651

原创 Bean初始化扩展点

知道上述原理后,考虑这样一个场景,设计一个注解用于控制Bean初始化最后一步额外操作。这里要复用到BeanPostProcessor#postProcessAfterInitialization,可以看到其是初始化方法中最后一行代码,正好满足要求。}...

2022-08-27 09:02:17 130

原创 SpringBoot测试实践

SpringBoot测试实践前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言SpringBoot提供了一组方便使用的工具注解帮助开发人员测试应用。主要包括了以下两个模块spring-boot-testspring-boot-test-autoconfigure实践中直接使用spring-boot-starter-test则可以全部包含上述模块,同时还附赠JUnit、AssertJ、Hamcrest等工具库。https://docs.spring.io/spring-bo

2022-08-25 18:38:04 376

原创 PG索引失败排查记录

首先系统使用的是postgre数据库,突然业务逻辑中存在性能问题,最终慢查询定位后,跟踪到有一个过滤查询,耗时严重。如果只有前模糊查询需求(字符串 like ‘xx%’),使用collate "C"的b-tree索引;当collate不为"C"时,可以使用类型对应的pattern ops(例如text_pattern_ops)建立b-tree索引。

2022-08-25 16:32:15 2371

原创 自适应分组多级并发框架

自适应多级并发框架一、问题背景一、框架原理图二、自适应的消息采集框架三、分级处理框架四、保序并发处理五、总结六、源码一、问题背景关于自适应的问题和细节可以参考 文章 :Kafka消息消费之性能提升实践多级并发含义是指针对批量数据的处理,不能完全并发,但是有条件可以分组进行并发处理,简单举例来说,针对数据集A、B、C、D、E、F、G,其中由于业务关系,其中ABC和DE和FG三组,组与为组间无法并发,但组内数据可以并发处理。所以针对上述应用场景,需要开发相对应的技术框架,分离业务和技术关注点,降低业务复

2022-08-25 11:38:39 212

原创 多级分组并发处理-实践

多线程分组并发处理前言一、代码逻辑二、改进型前言在一些性能提升的并发方案中,按关键字hash分组并发处理较为常见,在实际应用中,我们采用的自己管理线程,创建出固定数量的线程同时准备多个阻塞缓冲的数据队列,完成分组多线程并发处理的流程。一、代码逻辑public class SerialThreadExecutor<K> implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLog

2022-08-25 11:11:53 173

原创 SpringBoot使用配置文件若干方式

SpringBoot使用配置文件若干方式前言一、使用@Value引入二、使用ConfigurationProperties引入三、使用Environment四、使用@PropertySource + @Value前言在软件开发过程中,经常会使用到配置文件,本文基于SpingBoot如何引入相关的配置项的几种常规方式。一、使用@Value引入在需要引入配置信息的Bean类中,使用@Value注解可以方便引入对应配置项的内容,但需要将引入配置项的key全名填写正确。application.proper

2022-08-24 17:01:38 245

原创 JAVA工程目录-最佳实践

使用了插件maven-jar-plugin和maven-assembly-plugin完成。maven-assembly-plugin主要是通过assembly.xml进行控制。可以看到MANIFEST.MF中。

2022-08-24 15:27:41 225

原创 分页查询的SQL优化

当一个数据库表过于庞大,LIMIT offset, length中的offset值过大,则SQL查询语句会非常缓慢,你需增加order by,并且order by字段需要建立索引。如果使用子查询去优化LIMIT的话,则子查询必须是连续的,某种意义来讲,子查询不应该有where条件,where会过滤数据,使数据失去连续性。参考:https://www.cnblogs.com/azhaozhao/articles/15080807.html。...

2022-08-11 14:19:54 1721

原创 postgre慢查询实践

postgre慢查询一、配置二、分析三、实践一、配置检查慢查询开关是否打开–查询慢查询开关状态show logging_collector;–打开慢查询开关,需要重启PGalter system set logging_collector=‘on’;查看慢查询日志信息–查询日志目录show log_directory;–查询日志文件名show log_filename;–查询日志输出方式show log_destination;查看慢查询时间阀值–查询慢S

2022-07-23 01:00:00 654

原创 【工具思维】IDE的辅助plugin

在带团队的时候,不止一次跟团队强调做技术要有从编码思维-工具思维-产品思维的上升意识,不要只做基础的编码实现。本文也算抛砖引玉,介绍下在系统演进过程复用IDE的plugin机制实现的辅助小工具,解决一系列组件运维测试过程中的痛点问题。编码思维-工具思维-产品思维,当老板交给你一个活,编码也许需要2周,工也许需要5天,产品也许2天就可以搞定。共勉!!!httpshttpshttpshttpshttpshttpshttpshttps。......

2022-07-18 17:14:38 474

原创 耗时统计(JAVA)

项目中根据该API可以封装一套性能优化的统计框架,方便地进行热点耗时的代码热点定位。

2022-07-15 23:24:27 2188

原创 最佳实践-静默检查

项目的业务存在如下场景:当系统启动后,定阅对应的kafka主题后,可能会存在积压的大量消息需要处理,此时如果开放本系统的服务,由于本身正在进行剧烈的数据处理,此时提供的服务并不可靠。基于些,则需要一种机制在尽可能处理完消息后(或系统处于一个相对稳定的状态)再开放服务。出于将业务与技术关注点分离的思路,则提炼出本文的所谓静默检查小框架。SilentTimer仅需要传入二个参数和一个方法,分别是:...

2022-07-14 17:32:30 345

原创 实践-DW框架中的hibernate多线程读写问题

使用hibernate进行多线程读写,需要绑定session到线程中,否则会出现本文针对DW中如何使用hibernate并发操作数据库进行指导,上面报错的代码位置:ManagedSessionContext.java,是当无法从线程的本地变量中获取session时,抛出的异常。串并行查询(Rest进入)基于上述场景,我们从测试用例脚本出发,设计串并行查询的用例在如上的并发操作中都产生了No session currently bound to execution context异常。如上的并发操作中都

2022-07-13 22:41:59 504

原创 EChart中时间线控件实践

EChart中时间线控件实践前言一、echarts的timeline二、使用 axisType: 'time',二、事件timelinechanged前言项目中前端(angular)开发中需要使用到基于时间线的UI控件,初步调研两种,可以参考下面链接https://ng.ant.design/components/slider/zhhttps://echarts.apache.org/zh/cheat-sheet.htmlhttps://echarts.apache.org/zh/option.

2021-12-16 20:23:26 2125

原创 项目中ThreadLocal使用实践踩坑

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、实践场景:二、分析1. InheritableThreadLocal变量拷贝2、利用引用传递总结一、实践场景:项目中有个功能点是需要从第三方系统中定阅链路up/down消息,进行业务处理后最终持久化,由于性能要求,采用批量方式进行消息处理,简单来说就是针对一批消息,复用线程池并发处理,同时处理完后最终入库也是使用批量的方式入库,两处批量用来提升性能。原理示意图如下:在并发线程将消息处理完,数据入库后,总是概率性发现会缺

2021-11-05 20:20:18 146

原创 处理链模式应用实践

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档责任链模式应用实践前言一、可中断的责任链实现前言业务开发过程中,存在一个场景,需要针对一条上报的原始链路up消息进行处理,处理流程包括消息合法性较难、两端节点的处理、两端端口的处理、异厂商的处理主要处理流程,且这些流程处理存在先后关系,任何一处处理失败,该条链路up消息处理可提前中止。上述的业务流程与责任链所能解决的场景调度稳合。一、可中断的责任链实现测试用例:public class TestMain { publ

2021-09-08 16:39:54 122

原创 LRU简单实践

LRU简单实践LRU简单实践LRU简单实践package com.zte.sdn.oscp.xls.read;import lombok.Data;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * @Author 10184538 * @Date 2021/7/29 10:44 **/public class LRU { private int capacity = 5;

2021-08-19 20:18:08 93

原创 PG10前分区实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档PG10前分区实现前言一、基本步骤二、实践1.创建父表2.创建子表3.创建触发器4.查询总结前言文章https://blog.csdn.net/sunquan291/article/details/113436954介绍了PG10的分区实现,本节介绍PG10之前版本如何实现分区一、基本步骤创建父表,所有的分区都从它继承,这个表中没有数据,不要在这个表上定义任何检查和约束,除非你想约束所有的分区,同样在其上定义任何索引和约束也没有

2021-08-02 09:49:16 473

原创 Spring中MyBatis集成原理分析

Spring中MyBatis集成原理分析前言一、Mapper接口的实例化二、使用@Bean实例化三、使用ImportBeanDefinitionRegister实例化四、使用工厂方法实例化五、使用FactoryBean实例化六、AutowireMode分析模拟MyBatis前言启动MyBatis功能的入口注解是@MapperScan()定义的Mapper接口,则可以如何Bean一样,在程序的任何地方被调用public interface LtpDaoMapper { LtpSimpleInf

2021-07-24 11:31:40 122

原创 Kafka常见使用实践

Kafka常见使用实践前言一、测试先行二、主题监听灵活启停1.原始KafkaConsumer2.使用KafkaListener三、多监听不同配置四、Topic赋值参数化五、动态新增Topic前言在Java中引入并使用kafka,有很多方式,如可以直接使用原生kafka-clients这样的API;也可以使用Spring对其的包装API,即spring-kafka <dependency> <groupId>org.springframew

2021-06-24 18:43:11 84

原创 Spring集成Ssh Shell

Spring集成Ssh Shell前言一、ssh-shell-spring-boot-starter二、编写命令前言原项目使用是OSGI框架,在linux后台启动后,可以通过ssh再次连接到控制台且提供了命令接口,可以编写命令与程序进行交互,切换到Spring框架后,同样想增加该功能。但原先支持的spring-boot-starter-remote-shell在springBoot 2.0.1.RELEASE版本已经废弃。本文介绍另一款starter,即ssh-shell-spring-boot-st

2021-06-05 17:01:52 287

原创 Java通过-jni调用c语言

Java通过-jni调用c语言一、编写JAVA程序二、编译h头文件编写C方法实现生成对象文件生成动态链接库执行一、编写JAVA程序public class TestNative { public native void SayHello(); public static void main(String[] args){ }}针对所以引用的C语言方法,增加关键字nativepublic native void SayHello();二、编译h头文件javac TestNative

2021-05-27 20:46:01 202

原创 JDK与Cglib动态代理区别与原理

JDK与Cglib动态代理区别与原理前言一、嵌套方法二、原理分析前言如题的区别,大多数同学第一回答基本都是JDK的动态代理需要被代理类实现接口,而Cglib动态代理无须这个要求,由于继承所以无法代码初final修饰的类。一、嵌套方法public interface UserService { String name(); String forName();}public class UserServiceImpl implements UserService { @Ov

2021-05-15 14:17:32 350

原创 面试必问-kafka可靠性

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试必问-kafka可靠性前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤

2021-03-20 17:03:44 106

SpringDemo实践源码系列

SpringDemo实践源码系列

2022-11-30

手写Spring源码+MVC架构

手写Spring源码+MVC架构

2022-11-30

csdn_export_md.md

csdn_export_md.md CSDN markdown编辑器默认模板

2020-03-21

spark-graphx

spark graphx google用于网页排名计算的拓扑图状关系数据结构

2018-08-07

jung-jung-2.1.1

拓扑开源控件jung源码实现。。。。。。拓扑开源控件jung源码实现

2018-08-07

Eclipse/Intel Xtend

org.eclipse.xtend 模型化开发工具

2017-05-10

yang相关GitHub中源码

yang相关源码

2017-02-27

onos-yang-src-code

onos-yang-src-code onos使用的相关yang转化源码

2017-02-27

CompletedFuture

CompletedFuture

2016-12-23

360浏览器(个人备份专用)

360浏览器(个人备份专用)

2016-12-22

OpenFlow相关说明

OpenFlow相关说明 协议 l2switch

2016-10-19

ODL_L2Switch加Feature

ODL_L2Switch加Feature

2016-09-02

FABRICL2Switch自定义流表

FABRICL2Switch自定义流表 流表下发操作

2016-08-03

L2Switch总结文档

L2Switch总结文档

2016-08-02

JDK配置文件

JDK配置文件 相关指导

2016-07-29

switch.zip

对于交换机处理的代码内容。

2016-07-29

ODL-MD-SAL-APP架构入门

ODL-MD-SAL-APP架构入门-Final

2016-07-26

sample123示例

sample123示例

2016-07-01

NOTE_PRIVATE

NOTE_PRIVATE

2016-06-24

czjbe脚本onos

安装脚本

2016-06-04

mininet_2.2.1.orig.tar.gz

mininet_2.2.1.orig.tar.gz 源码 有示例python脚本

2016-06-02

CXFProject002

CXF学习例子 自动生成桩

2014-05-24

Perspective切换

Perspective切换

2013-10-12

Eclipse搜索插件

Eclipse搜索插件

2013-10-12

TelMan_RCP发布版

RCP Eclipse SWT JFace TelMan_RCP发布版 TelMan_RCP发布版

2013-05-07

TelManagement_RCP源程序

TelManagement_RCP源程序

2013-05-07

MessageBeanTest

MessageBeanTest 代码

2013-04-30

EntityBeanTest

EntityBeanTest 代码

2013-04-30

HelloWorldEJB

HelloWorldEJB 代码

2013-04-30

Eclipse Enum插件示例

Eclipse Enum插件示例 介绍插件开发的基本流程,采用jet的代码生成功能。

2013-04-18

暑期实习项目-电信计费管理系统

暑期实习项目-电信计费管理系统 采用java开发语言,c/s结构! 有源代码,有数据库,有发成功软件。 更重要的是有全部标准文档。 04组概要设计说明书(GB8567——88)1.doc 04组软件需求说明书(GB856T——88)小组4.doc 04组软件需求说明书(GB856T——88)小组4.doc 04组软件需求说明书(GB856T——88)小组4.doc 04组软件需求说明书(GB856T——88)小组4.doc 计费标准测试计划(GB8567——88)1.doc 计费标准测试计划(GB8567——88)1.doc 月报表测试计划(GB8567——88)1.doc

2011-12-10

j2ee网络编程标准教程

j2ee 网络编程标准教程 想掌握网络吗?熟悉网络吗?

2011-09-16

超越对手--软件项目经理的18种实用技能

超越对手--软件项目经理的18种实用技能 超越对手--软件项目经理的18种实用技能 超越对手--软件项目经理的18种实用技能 软件开发的不可多得的材料,对于系统分析师的考试也有很好的帮助,特别是最后的论文,本人就是看了这个,受益匪浅!!!!!值得收藏!绝对!Que!!!!

2011-08-27

企业应用系统与设计模式.

企业应用系统与设计模式. 企业应用系统与设计模式. 企业应用系统与设计模式.

2011-08-23

android九宫格游戏源码

android九宫格游戏源码。入门学习的好项目。

2011-07-28

android mp3player mp3播放器

android mp3player 播放器 android mp3player 播放器 android mp3player 播放器 android mp3player 播放器

2011-07-28

抓图工具+HprSnap6中文特别版

抓图工具+HprSnap6中文特别版 抓图工具+HprSnap6中文特别版 抓图工具+HprSnap6中文特别版

2011-07-28

PetShop 3.0 Installer.msi

PetShop 3.0 Installer.msi 微软一款相当不错的小项目。

2011-07-25

《数据结构》算法实现与解释(严蔚敏)高一凡著

数据结构 数据结构 严蔚敏 高一凡 权威书籍!

2011-07-21

C# winform .net图片管理系统

C# winform .net 图片 管理 系统 如题! 实现图片的管理,包括上上传至服务器!本地上传,远程下载! 运行环境vs2008

2011-07-21

空空如也

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

TA关注的人

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