谈谈极限编程XP

敏捷开发系列之旅 第二站(走近XP极限编程) 上篇文章,我们探讨了什么是敏捷开发,以及敏捷开发的方法学。在这篇文章中,我们将继续讨论敏捷开发中的问题——XP极限编程。 在讨论之前,先让我们来了解一下XP极限编程产生的背景,软件业所具有的共同的问题。 背景 软件越来越复杂需求越来越多变过程越来越规范 了解了背景之后,那么就会想问,到底什么是极限编程呢?下面我们就做一个简单的介绍。 XP概述 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 软件业发展了几十年,软件人们一直在摸索着软件设计的完美方案。从早期的无序开发到瀑布式流程,再到现在的rup和xp,软件人们一直奋斗着。前段时间的老新闻了,vista的发布日再次推迟,本来计划会赶在今年暑期之前,现在至少要到明年了 。记得初识vista是02还是03年,那时候还叫longhorn,有次看朋友的电脑装了个内部测试版,感觉界面很眩,挺开心的,想想等不了多久久就能爽爽新系统了,然而这一等却是五年。据报道vista已经花了M$50-60亿美元了,这次的推迟发布造成了5亿损失,也只有Gates玩的起。对比下IBM的office软件,浪费了9亿美元,vista估计肯定能坐软件失败的头把交椅了。 极限编程是最近一些年来软件人们经常讨论的话题,它以其另类性而独领风骚。传统的软件设计比如RUP迭代开发是先计划,然后细化,接着编码测试,到最后的安装交货;极限编程更注重于程序员本身。它提倡在计划初期就构建代码,结对编程,测试先行,简单设计,现场用户等等。XP注重的核心是沟通,简明,反馈和勇气。因为知道计划永远赶不上变化,XP并不需要软件开发人员在软件开始初期做出很多的document,写出很多的report;提倡只制定一个大致的plan,此时编码测试等工作已经开始了,然后随着各种需求的出现逐步完善plan。XP提倡结对编程即1个小组2个人员共同书写代码,甚至这两人坐在一台桌子旁共用一台电脑。XP提倡测试先行,为了将以后出现bug的几率降到最低??? 先说说结对编程(pair-programming)。去年有机会尝试了一下结对编程,体验了XP在实际project中的作用。当时临时准备用JSF做web层的开发,所用到的开发工具为IBM的RAD(rational application developer)。之前对JSF的了解纯粹只是概念上知道这么一个MVC框架,而公司里面并没有任何人很精通JSF,之前我们做的一些project都是基于JWS的胖客户端。选择JSF是因为研究了JSF和STRUTS的架构,感觉JSF更加合理,且其将会是J2EE 5.0的标准。 确定需求之后制定了个大致的流程,画了一张简单的流程视图便开始了编码。当时公司实际写此软件的人分处香港和深圳,其中深圳的4人,香港的10人。分配工作之后深圳这边2个用JSF写UI,1个做需求测试,一个负责文档;香港那边2个做JSF层,1个美工,4个逻辑层编码及数据库,1个整合各层,2个测试。理所当然,我和深圳这边还有个同事组成了一个subgroup,受极限编程影响,我们选择了结对编程。开始的5天为学习熟悉JSF时期,我们采取的方法是分头学习,遇到想不明白的地方即提出讨论。为了使讨论尽可能便宜,我们选择了2张紧靠的办公桌。实际证明这种方法不错,大概用了3,4天我们就熟悉了JSF的实际使用方法。有时候人是存在思维障碍的,有些简单的东西可能想错方向而导致时间资源的浪费。一个礼拜后接到了新的UI之后我们便开始了实际的编码操作。初期我们决定先分开各自写页面,因为此时的工作比较简单,任何涉及到提交请求的先做成空链接,遇到比较困难的组件,则先写在纸片上,在每天固定的时间讨论具体的实现方法并在不同的web浏览器进行了一些实际的测试。在我们两人均无法解决的时候则通过jabber跟在香港的同事进行交流,共同寻求处理方法,包括寻找网络资源等等。页面的jsf化处理进行的很顺利,比预定日期提前了2天。随后我们开始了BackingBean的具体编写,包括虚拟一些数据进行单元测试。这时候我们更多的是在一起进行开发,轮流编码。结对编程客观上减少了我们实际编码期间的片面性,从而减少了以后进行debug工作时候所花费的时间。还有个注意的就是注释的使用,因为我们并不打算专门写开发的文档,为了以后查阅,我们为每个方法都写了比较详细的注释。结对编程还有个很显然的好处就是可以使程序员更全面的掌握应用软件,学习同伴的技巧,我就通过这次的结对编程知道了更多RAD工具的一些小技巧。最后,在UI完成的时候我们比在香港的同事快了3天,他们是采用传统的各自编码进行的。提个注意点,如果两个程序员都比较喜欢聊天还是不要结对编程比较好。
EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查) 本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。 阅读详情

相关推荐

RYU+Mininet的SDN架构-设计校园网络(一)

现有一个中学,需要设计一个中小型网络满足学校的网络需求。学校有教学区,实验室区域和服务器区域。教学区为了满足接入的灵活性和信号强度要求,需要满足设计WIFI满足日常教室和同学需求,接入上限为200人。实验室区域需要有一台教师主机方便管理实验室其余电脑,并且教师主机可以访问学校服务器,方便为同学们实验室授课。学校服务器区域设有学校相关重要文件和学校网页相关内容。最后学校还会接入互联网。

weixin_53284122的博客 8035

简单单谈谈极限编程(ExtremeProgramming,简称XP编程)

基本概念          极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的。kent仔细的观察和分析了各种简化软件开发的前提条件、可行性以及面临的困难后,引入了这套新的软件开发观念。   极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。要让客户能方便地与开发人员沟通,一定要用客户理解

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 1572

零基础Python实战:手把手教你用PyGame制作动态烟花效果(附完整代码)

本文为零基础Python编程爱好者提供了一份详细的PyGame实战教程,手把手教你从环境搭建到代码实现,逐步构建一个动态烟花模拟器。教程涵盖了粒子系统、物理模拟(重力与阻力)、效果优化(拖尾与爆炸形态)以及完整的交互式主程序,帮助你通过Python烟花代码项目深入理解图形编程与面向对象设计。

weixin_29062255的博客 257

谈谈“极限编程(Extreme Programming)”

极限编程Extreme Programming审校 BigMac[AKA]译者 march-bird lucian yjf taopin wl jazz韩伟 nullgate Simon[AKA]As we have explored in several issues of eAD, the two most pressing issues in information technolo

雪客之无聊日记 3269

verilog学习——Verilog的行为建模/Behavioral modeling(2)

函数的用途是返回要在表达式中使用的值。函数定义始终以关键字function开始,后跟返回类型、名称和在参数中的端口列表。函数以关键字endfunction结束。函数至少有一个输入,如果不返回任何内容,则返回类型为void。由两种方法可以声明函数的输入;函数定义隐式地创建一个与函数同名的内部变量。通过将函数结果分配给内部变量来初始化返回值。函数调用是带有表达式的操作数。① 函数不能包含任何时间控制语句,如#、@、wait、posedge、negedge;

LXY241638的博客 1367

测站坐标系统 -- 东北天(ENU)坐标系、站心坐标系

测站坐标系统以观测站(或地面上某一个观测点为中心建立坐标系统,将这类坐标系称为测站坐标系统。测站坐标系通常以用户所在的位置点P为坐标原点三个坐标轴分别是相互垂直的东向北向和天向,因而测站坐标系又称为东北天(ENU)坐标系。由于测站坐标系以站心为坐标原点,因此也称为站心坐标系。如图所示,测站坐标系的天向与大地坐标系(LLA经纬度坐标系)在此点的高程方向一致。测站坐标系固定在地球上,本质上是一种地固坐标系。(1)以站心为坐标原点。(2)Z轴与站心点的椭球法线重合,向上为正。

qq_43381998的博客 1万+

谈谈android的类xp Ghost时代

前言   很早以前,我们装系统,无外乎买一套微软的系统碟,然后,进入漫长的等待才能安装完毕,后来,ghost的这款软件的出现,被人应用到安装系统这块,让装系统的操作简化到只需要一键,而装系统的时间也由当初的好几个小时,变成几分钟即可,大大的提升了装机的效率.同时,xp盗版的时代也从此开始了…当然,今天,我们谈的不是xp盗版史,而是谈谈,目前android的类似的情况 系统   ...

weixin_33734785的博客 82

从0开始图形学(光栅化)

从0开始图形学

A112459的专栏 2397

XP明年就被停止技术支持,这会带来什么?谈谈如何做决策

XP是MS的一款老牌操作系统,相信大家都不陌生,甚至还有继续使用的人,当然了,在虚拟机里用它也是很好用的,不过,再漂亮的姑娘,也有嫁人的时候,作为XP的父母,MS微软明年四月将停止支持有十多年历史的 Windows XP 和 IE6,数数只有不到半年时间了。 Firefox将会在微软终止支持后继续支持XP用户 亲生父母不管了,不等于这孩子就废了,看上去XP还是个好孩子...

aibo110110的博客 134

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1930

《YOLO26/YOLO11/YOLOv8改进与系统实战》,改进与系统实战专栏目录和介绍

YOLOv8 是目前比较火和比较成熟的深度学习框架,是2023年1月发布的,由 Ultralytics 团队开发。Ultralytics自YOLOv5 开始一直积极维护和更新 YOLO 框架,因此 YOLOv8 也享有持续的维护与升级支持。因此我写下《手把手教你YOLOv8实战》专栏,专门为那些对计算机视觉、深度学习、以及目标检测技术感兴趣的读者设计。通过本专栏,你将深入理解 YOLOv8 的核心原理与实际应用,从0 开始学习并掌握如何使用 YOLOv8 完成各类目标检测任务,帮助你快速上手并掌握 YOLO

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

谈谈windows xp 的IEEE 802.1x 认证

某些时候,如果你的网络是属于实用IEEE 802.1x 认证计费的话, 你可以使用windows xp 的网络连接那里的IEEE 802.1x 认证,而不安装服务商提供的专用客户端程序。 具体步骤如下: 网络连接属性/ 认证/ 启用IEEE802.1X, 在EAP类型中选择"MD5-chal...

weixin_33834075的博客 437

一、适配显示服务

基于rk3568适配显示服务,调动gpu;

XiaoC_Android的博客 1001

谈谈装xp官方纯净系统屡次失败的深刻体会

有木有,小硬盘小内存的电脑竟然装不了五六百m大小的xp却能装win7之类的而感到痛失,如果去装win7电脑果断卡死, 用了最流行的制作u盘启动的软件都不行, 任何直接点击安装也不行,点不了安装的那个选项, 然后呢,…………………… 后来想到了系统还原, 里面没有系统, 怎么还原呢 ,,,,,,,, 然后想到了我的虚拟机里面有xp系统 怎么将他弄到另一台电脑里面 ………………...

weixin_34174105的博客 181

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android系统中的ghost,谈谈android的类xp Ghost时代

现在的android手机就有类似情况的出现,与电脑不同,卖电脑的时候有预装系统,和自己买系统装电脑的方式,android手机的话,就只有预装系统,不过,与其它系统的手机相比,android手机可以选择安装同样的android系统,但是又有不一样的地方.就好比,我们知道的番茄花园,雨林木风,电脑城XXXX版一样,虽然都是xp,但是,有好用,和不好用的区别.这点,目前的android手机非常的相似.可...

weixin_34520503的博客 639

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

极限编程简述

在敏捷方法中,极限编程(XP:eXtreme Programming)是其中最著名的一个,它由一系列简单却互相依赖的实践组成。。。 本篇博客,对极限编程做一个简述,以及个人的一些理解,主要从以下几点进行。。。 客户作为团队成员 良性计划 简单设计 结对编程 持续集成 TDD和UAT 重构 隐喻 一、客户作为团队成员 关键词:面对面沟通 首先明确一点,这里的客户不仅仅指...

一只苟延残喘的卑微蝼蚁 939

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

极限编程(xp编程)总结

转自http://rayzhl25.iteye.com/blog/422604         作者rayzhl25 1.什么是xp编程(极限编程):             XP是勇气,交流,反馈和简单。 XP是软件开发过程中的纪律,它规定你:必须在编程前些测试,必须两个人一起编程,必须遵守编程规范……。 XP是把最好的实践经验提取出来,形成了一个崭新的开发方法

剑有偏锋的窝 938

谈谈你对xp和rup开发过程的理解

先记下到时候看完了在总结(*^__^*) 嘻嘻……

jenny0810的专栏 661

【原】发布一段关于对XP占有率的评价,简单说说IT未来是什么?谈谈个人的一点点观点...

发布一段本人对XP占有率的评价,见博客园新闻: http://news.cnblogs.com/n/44653/(Windows XP仍占据71%的企业用户市场)Ubuntu 8.04 实现的功能和XP差不多!就是播放媒体方面差点。 Ubuntu 8.10 不是很稳定(目前我一直使用Ubuntu 8.04),但是Ubuntu 是免费的,Windows XP 是要收费的!就目前我个人观点来看,个...

weixin_30436101的博客 97

软件工程概述部分:可行性分析部分,需求分类

本文主要是讲解软件工程考试过程中的常见概念与题目的解答,本文涉及,面相构件,基于构件,极限编程,结对编程,现场客户,持续集成,测试驱动等知识点。

jakelihua 525

对极限编程四个核心的理解(一)

极限编程的核心有四个,交流、简单、反馈和勇气,这四个原则大家在平时做项目的过程中一定也注意到了。但是两位大师Kent Beck 和 Martin Fowler能够把这四点归结在一起,使他们能够共同组成极限编程这架四轮马车,却是一个不小的创造的。下面仅就自己的学习和简单的实践过程中遇到的问题来谈谈自己对这四个核心的一些理解。一、交流1)       开发人员与客户

凌云工作室 5192
上一篇: 从女娲造人,看JAVA中"类"的应用
下一篇: Ant与Eclipse的集成
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值