导航:首页 > 操作系统 > android44源代码

android44源代码

发布时间:2025-03-22 20:42:51

⑴ 如何在android中使用OpenCV

如何在Android程序中使用OpenCV

有两种方式(重点讲后面一种):

1.使用OpenCV java API。

OpenCV安装路径"F:OpenCV-2.3.1-android-bin"下有两个文件夹


将文件夹"OpenCV-2.3.1"拷贝到你的Eclipse工作空间所在的目录,也就是在你的项目的上一级目录中,然后导入到工作空间中,在Package Explorer中选择你的项目,单机右键在弹出菜单中选择Properties,然后在弹出的Properties窗口中左侧选择Android,然后点击右下方的Add按钮,选择OpenCV-2.3.1并点击OK,


此时,展开你的项目树,你可以看到新加了一个OpenCV-2.3.1_src目录,如下图,那么就是正确添加了OpenCV Java API,否则就是你放置OpenCV-2.3.1的目录路径不正确。


然后就可以在你的Java源文件中导入OpenCV的API包,并且使用OpenCV API了,OpenCV API的包的形式如下:

Org.opencv.(OpenCV模块名).(OpenCV类名)

例如:

Org.opencv.core.Mat

2.利用JNI编写C++ OpenCV代码,通过Android NDK创建动态库(.so)

新建一个工作空间,例如"TestOpenCV",在Window->Preferences中设置好Android SDK的路径。


然后新建一个Android项目,Build Target选择Android2.2,命名为"HaveImgFun",活动名改为HaveImgFun,Package name中填写com.testopencv.haveimgfun,最后点击finish。

如同使用OpenCV Java API那样,将OpenCV-2.3.1文件夹拷贝到与工作空间同一级目录中;另外,将"F:OpenCV-2.3.1-android-binsamples"下的includeOpenCV.mk文件拷贝到和项目HaveImgFun同一级目录中:


(上面这个各个文件夹和文件的放置很重要,因为OpenCV-2.3.1下的OpenCV.mk中有很多相对路径的指定,如果不是这样放置,在NDK生成动态库时可能会报文件或文件夹无法找到的错误)

选择Package Explorer中你的项目,右键选择new->folder,新建一个名为jni的文件夹,用来存放你的c/c++代码。

然后把res->layout下的main.xml的内容改为下面所示:


1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <Button android:layout_height="wrap_content"
8 android:layout_width="fill_parent"
9 android:id="@+id/btnNDK"
10 android:text="使用C++ OpenCV进行处理" />
11 <Button android:layout_height="wrap_content"
12 android:layout_width="fill_parent"
13 android:id="@+id/btnRestore"
14 android:text="还原" />
15 <ImageView android:id="@+id/ImageView01"
16 android:layout_width="fill_parent"
17 android:layout_height="fill_parent" />
18 </LinearLayout>


上面的代码就是一个线性布局里面包含2个按钮加上一个显示图像的ImageView

在文件夹src下的com.testopencv.haveimgfun包中新建一个类用于包装使用了opencv c++代码的动态库的导出函数,类名为LibImgFun。

Eclipse会为你创建一个新的文件LibImgFun.java,将里面的内容改为:


1 package com.testopencv.haveimgfun;
2 public class LibImgFun {
3 static {
4 System.loadLibrary("ImgFun");
5 }
6 /**
7 * @param width the current view width
8 * @param height the current view height
9 */
10 public static native int[] ImgFun(int[] buf, int w, int h);
11 }


从上面的代码可以得知,我们的动态库名字应该为“libImgFun.so”,注意"public static native int[] ImgFun(int[] buf, int w, int h)"中的native关键字,表明这个函数来自native code。static表示这是一个静态函数,这样就可以直接用类名去调用。

在jni文件夹下建立一个"ImgFun.cpp"的文件,内容改为下面所示:


1 #include <jni.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <opencv2/opencv.hpp>
5 using namespace cv;
6
7 extern "C"
8 {
9 JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h);
10 JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h){
11
12 jint *cbuf;
13 cbuf = env->GetIntArrayElements(buf, false);
14 if(cbuf == NULL)
15 {
16 return 0;
17 }
18
19 Mat myimg(h, w, CV_8UC4, (unsigned char*)cbuf);
20 for(int j=0;j<myimg.rows/2;j++)
21 {
22 myimg.row(j).setTo(Scalar(0,0,0,0));
23 }
24
25 int size=w * h;
26 jintArray result = env->NewIntArray(size);
27 env->SetIntArrayRegion(result, 0, size, cbuf);
28 env->ReleaseIntArrayElements(buf, cbuf, 0);
29 return result;
30 }
31 }


上面的代码中#include <jni.h>是必须要包含的头文件,#include <opencv2/opencv.hpp>是opencv要包含的头文件。

动态库要导出的函数如下声明:

JNIEXPORT jintArray JNICALL Java_com_testopencv_haveimgfun_LibImgFun_ImgFun(JNIEnv* env, jobject obj, jintArray buf, int w, int h);

JNIEXPORT 和JNICALL是必须要加的关键字

jintArray就是int[],这里返回类型要么为空,要么为jni中定义的类型,事实上就是CC++类型前面加上j,如果是数组,则在后面加上Array。

函数名的命名规则如下:

Java_(包路径)_(类名)_(函数名) (JNIEnv *env, jobject obj, 自己定义的参数...)

包路径中的"."用"_"(下划线)代替,类名就是上面包装该动态库函数的类的名字,最后一个才是真正的函数名;JNIEnv *env和jobject obj这两个参数时必须的,用来调用JNI环境下的一些函数;后面就是你自己定义的参数。在这里,jintArray buf代表了传进来的图像的数据,int w是图像的宽,int h是图像的高。

这个函数的功能是将传进来的图像的上半部分涂成黑色。

然后再在jni下新建两个文件"Android.mk"文件和"Application.mk"文件,这两个文件事实上就是简单的Makefile文件。

其中将Android.mk的内容改为如下所示:

LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

include../includeOpenCV.mk

ifeq("$(wildcard$(OPENCV_MK_PATH))","")

#trytoloadOpenCV.mkfromdefaultinstalllocation

include$(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk

else

include$(OPENCV_MK_PATH)

endif

LOCAL_MODULE:=ImgFun

LOCAL_SRC_FILES:=ImgFun.cpp

include$(BUILD_SHARED_LIBRARY)

Application.mk的内容改为如下所示:

APP_STL:=gnustl_static

APP_CPPFLAGS:=-frtti-fexceptions

APP_ABI:=armeabiarmeabi-v7a

其中APP_ABI指定的是目标平台的CPU架构。(经过很多测试,android2.2必须指定为armeabi,android2.2以上的使用armeabi-v7a,如果没有设置对,很有可能安装到android虚拟机失败,当然你同时如上面写上也是可以的)

上面的步骤完成后,就可以使用NDK生成动态库了,打开cygwin,cd到项目目录下:


输入$NDK/ndk-build命令,开始创建动态库。


这时候刷新Eclipse的Package Explorer会出现两个新的文件夹obj和libs。

现在,只剩最后一步完成这个测试程序。

将一张图片,例如"lena.jpg"放到项目res->drawable-hdpi目录中并刷新该目录。

然后将HaveImgFun.java的内容改为下面所示:


1 package com.testopencv.haveimgfun;
2
3 import android.app.Activity;
4 import android.graphics.Bitmap;
5 import android.graphics.Bitmap.Config;
6 import android.graphics.drawable.BitmapDrawable;
7 import android.os.Bundle;
8 import android.widget.Button;
9 import android.view.View;
10 import android.widget.ImageView;
11
12 public class HaveImgFun extends Activity{
13 /** Called when the activity is first created. */
14 ImageView imgView;
15 Button btnNDK, btnRestore;
16
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21
22 this.setTitle("使用NDK转换灰度图");
23 btnRestore=(Button)this.findViewById(R.id.btnRestore);
24 btnRestore.setOnClickListener(new ClickEvent());
25 btnNDK=(Button)this.findViewById(R.id.btnNDK);
26 btnNDK.setOnClickListener(new ClickEvent());
27 imgView=(ImageView)this.findViewById(R.id.ImageView01);
28 Bitmap img=((BitmapDrawable) getResources().getDrawable(R.drawable.lena)).getBitmap();
29 imgView.setImageBitmap(img);
30 }
31
32 class ClickEvent implements View.OnClickListener{
33 public void onClick(View v){
34 if(v == btnNDK){
35 long current=System.currentTimeMillis();
36 Bitmap img1=((BitmapDrawable) getResources().getDrawable(R.drawable.lena)).getBitmap();
37 int w=img1.getWidth(),h=img1.getHeight();
38 int[] pix = new int[w * h];
39 img1.getPixels(pix, 0, w, 0, 0, w, h);
40 int[] resultInt=LibImgFun.ImgFun(pix, w, h);
41 Bitmap resultImg=Bitmap.createBitmap(w, h, Config.RGB_565);
42 resultImg.setPixels(resultInt, 0, w, 0, 0,w, h);
43 long performance=System.currentTimeMillis()-current;
44 imgView.setImageBitmap(resultImg);
45 HaveImgFun.this.setTitle("w:"+String.valueOf(img1.getWidth())+",h:"+String.valueOf(img1.getHeight())+"NDK耗时"+String.valueOf(performance)+" 毫秒");
46 } else if(v == btnRestore){
47 Bitmap img2=((BitmapDrawable) getResources().getDrawable(R.drawable.lena)).getBitmap();
48 imgView.setImageBitmap(img2);
49 HaveImgFun.this.setTitle("使用OpenCV进行图像处理");
50 }
51 }
52 }
53 }


点击全部保存,OK,现在可以选择一个Android虚拟机运行看一下效果,配置好Run Configuration然后点击Run,得到下面的结果:

⑵ 信号强度里的asu 是什么意思

ASU仅仅代表手b机将它的位置传递给附近的信号塔的速率。

它和dBm测量的是一样的东西,但是是以一种更加线性的方式来表示。可以用这个公式将ASU转换成dBm:dBm=-113+(2*ASU)例如:-63 dBm 25 asu-63 dBm = -113 + (2*25)

GSM网络下是网传的dbm=-113+2*asu,

UMTS网络下,dbm=asu-116,

LTE网络下,(asu-141)<=dbm<(asu-140)

(2)android44源代码扩展阅读:

手机的asu应该为6.5,四舍五入的话,就应该是7了.所以,一般情况下,大家能够看到10-30,都是很正常的.数字越大,信号强度越好.

独立信号单元也是一种模拟信号,与模拟信号对应的是数字信号,后者采取分立的逻辑值,而前者可以取得连续值。模拟信号的概念常常在涉及电的领域中被使用,不过经典力学、气动力学(pneumatic)、水力学等学科有时也会使用模拟信号的概念。

模拟信号利用对象的一些物理属性来表达、传递信息。例如,非液体气压表利用指针螺旋位置来表达压强信息。在电学中,电压是模拟信号最普遍的物理媒介,除此之外,频率、电流和电荷也可以被用来表达模拟信号。

⑶ wav音频怎么去掉header播放

WAV格式的细节在互联网上都可以找到,你仅仅需要在Google上搜索下。但是,遗憾的是,我并没有搜索到一个很好的Java库来读取WAV文件,而且可以移植到Android下。因此,我自己写了一些简单的代码。

下面这个方法就是如何读取一个WAV文件的头部:

private static final String RIFF_HEADER = "RIFF";
private static final String WAVE_HEADER = "WAVE";
private static final String FMT_HEADER = "fmt ";
private static final String DATA_HEADER = "data";

private static final int HEADER_SIZE = 44;

private static final String CHARSET = "ASCII";

/* ... */

public static WavInfo readHeader(InputStream wavStream) throws IOException,
DecoderException {

ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE);
buffer.order(ByteOrder.LITTLE_ENDIAN);

wavStream.read(buffer.array(), buffer.arrayOffset(), buffer.capacity());

buffer.rewind();
buffer.position(buffer.position() + 20);
int format = buffer.getShort();
checkFormat(format == 1, "Unsupported encoding: " + format); // 1 means
// Linear
// PCM
int channels = buffer.getShort();
checkFormat(channels == 1 || channels == 2, "Unsupported channels: "
+ channels);
int rate = buffer.getInt();
checkFormat(rate <= 48000 && rate >= 11025, "Unsupported rate: " + rate);
buffer.position(buffer.position() + 6);
int bits = buffer.getShort();
checkFormat(bits == 16, "Unsupported bits: " + bits);
int dataSize = 0;
while (buffer.getInt() != 0x61746164) { // "data" marker
Log.d(TAG, "Skipping non-data chunk");
int size = buffer.getInt();
wavStream.skip(size);

buffer.rewind();
wavStream.read(buffer.array(), buffer.arrayOffset(), 8);
buffer.rewind();
}
dataSize = buffer.getInt();
checkFormat(dataSize > 0, "wrong datasize: " + dataSize);

return new WavInfo(new FormatSpec(rate, channels == 2), dataSize);
}
上面的代码中,缺少的部分应该是显而易见的。正如你所看到的,仅仅支持16位,但在你可以修改代码以支持8位(AudioTrack不支持任何其他分辨率的)。

下面这个方法,则是用来读取文件剩余的部分 – 音频数据。

public static byte[] readWavPcm(WavInfo info, InputStream stream)
throws IOException {
byte[] data = new byte[info.getDataSize()];
stream.read(data, 0, data.length);
return data;
}
我们读取的WavInfo结构体,包含采样率,分辨率和声道数已经足够让我们去播放我们读取的音频了。

如果我们不需要将全部音频数据一次性放入内存中,我们可以使用一个InputStream,一点一点地读取。

⑷ 电脑开源工具哪个好用常用的开源软件有哪些

‘壹’ php开源工具哪些比较受欢迎

众所周知,软件行业是一个相对苦逼的行业,特别是遇到赶项目,很多程序猿就只有累成狗了。为了提高开发效率,让开发任务更简便、快捷,开源工具的使用是少不了的。今天小编整理了10款最受欢迎的php开源工具,分享给大家,希望可以帮助大家更便捷的开发php应用。
1、Monsta FTP
如果想在浏览器中设置一个FTP文件管理,你需要有一款像Monsta FTP一样的开源PHP或者Ajax Cloudware。不仅支持屏幕上的文件编辑,而且文件还可以被拖放到浏览器上实现快速上传。经测试Monsta FTP,支持所有主流浏览器,如:火狐,Chrome,IE浏览器,Safari浏览器等,并配备了多语言支持。
2、Pinba
Pinba使用只读格式的MySQL作为实时统计/监督服务器,几乎是一个MySQL存储引擎。它可以生成格式简单的统计报表,处理后通过UDP发送累计数据,并且还可以创建复杂的报表。
3、CaseBox
CaseBox是一个用于管理任务、记录和文档的开源PHP Web应用程序。它允许我们创建大量的目录,并将数据存储在一个类似于桌面界面的首选结构中。通过将指定了期限的任务分配给用户并跟踪性能,CaseBox极大地简化了工作流程。
4、Sylius
Sylius是一个基于Symfony 2的php开源工具,它允许你创建一个电子商务网站,并管理产品和类别复杂的网上商店。同时,Sylius还支持多种功能,如管理不同税率和运输方式。此外,Sylius还与支付网关(payment gateway)OmniPay集成而成为一款完美的电子商务工具。如果你用php开发了一个电子商务商城,不妨可以试试这个工具,它将极大的简化你的工作量。
5、Pico
Pico是一款开源的内容管理程序,使用Flat File文件作为其数据库,无需安装即可使用。使用这个开源工具,可以方便你在你所喜爱的文本编辑器中编辑储存在.md文件中的内容。
6、Munee
全面网站图书馆Munee,作为一款开源的php工具,可以让你优化和操作网站website assets、实现客户端和服务器端的资源缓存。同时Munee也可以集成PHP图像处理库,方便调整或裁剪图像并对它们进行缓存。
7、Phalcon PHP
Phalcon PHP是一款由C语言编写的web框架,提供了低资源消耗和高性能,适用于任何操作系统。
8、phpMyFAQ
phpMyFAQ是PHP FAQ(常见问题解答)的应用程序,同时也是一个优秀的FAQ系统。它可以管理用户、项目、类别和统计数据。phpMyFAQ中还自带一个先进的搜索系统,可帮助用户快速寻找到相关答案。
9、PHPImageWorkshop
PHP Image Workshop使用GD库来管理图像,允许以类似于Photoshop的方式编辑照片。同时,这款php开源工具也非常灵活,允许你叠加大量图像,使用旋转功能甚至缩略图。
10、DebugBar
DebugBar也是php开源应用程序中常用的一款工具,免费提供在线版本,并且可以集成到PHP 项目中。它包括通用库和流行库,支持Ajax请求,并且在页脚有一个JavaScript栏。
不管是什么语言的开发,要提高开发效率,掌握一些开源的工具都是少不了的。熟悉并掌握以上这10款PHP 开源工具,可极大的简化你的开发进程。如果你还没有使用过这些工具,不妨可以试试。

‘贰’ 有没有什么开源报表工具比较好用的,介绍下

开源报表的话有jasperreport、BIRT、jasperreport,但是貌似都不是怎么发展了,还是找一些商业软件吧。国产的报表工具主要有润乾报表、帆软finereport等等。

‘叁’ 常用的开源软件有哪些

1、Dolibarr

Dolibarr是一个免费的开源ERP软件包,该软件为中小型实体、基金会和自由职业者提供大量的业务和组织解决方案。它的主要特点是企业资源规划(ERP)和客户关系管理(CRM),这些是当今复杂和数据丰富的组织的基本功能。

2、WinSSHTerm

WinSSHTerm是一款绿色单文件SSH客户端工具,这款工具结合了PuTTY/KiTTY,Winscp和VcXsrv等多个开源工具,还包括对复制文件和启动X应用程序的内置支持,方便用户直接使用。

3、IconMeter

IconMeter是一款开源免费,简单实用的系统监测工具,它是一个适用于MSWindows的小型notifyicon系统性能表。采用c#制作,显示小的notifyicon,可以在小条形图中显示当前的CPU、内存、磁盘和网络负载等信息,直观方便。

4、RedisDesktopManagerwindows

RedisDesktopManagerwindows是一款简单快速、跨平台的Redis桌面管理工具,也被称作Redis可视化工具,是一款开源软件,支持通过SSHTunnel连接,支持windows、mac等多平台。

5、Catfish(鲶鱼)Blog

Catfish(鲶鱼)Blog是一款开源的PHPBlog系统,其衍生于优秀的内容管理系统:Catfish(鲶鱼)CMS,秉承了Catfish(鲶鱼)CMS的先进设计理念,并且专注于个人博客系统,使用十分便捷。

‘肆’ 开源史上最成功的八个开源软件有哪些为什么

linux

上榜理由:Linux + GNU = GNU/Linux 。从Linus Torvalds在1991年宣布他在Minix基础上创建一新OS内核到现在已经接近20年了。在这段时间内,大部分网络服务器都是Linux系统。

BSD

上榜理由:长久以来,FreeBSD, NetBSD和OpenBSD是服务器众操作系统之中广为人知的3个OS。上世纪90年代,三者均是脱胎于伯克利的Unix系统,故把三者组团上榜。另外,Apple的Mac OS脱胎于FreeBSD。

MySQL

上榜理由:MySQL是全球使用范围最广的数据库系统。2009年,全球的MySQL安装数量已达1千1百万。它是LAMP架构(Linux, Apache, MySQL, PHP)中的M。众多知名网站和产品均使用MySQL,比如:维/基网络、Facebook、Google和Wordpress。(Google和Facebook均改造了MySQL,以满足自身需求。详情可见本文末尾推荐阅读文章)。

Apache

上榜理由:Apache HTTP服务器从它诞生的1996年开始,它是全球使用最为广泛的Web服务器,其市场占有率远远超过第二名的IIS。2009年,全球超过1亿个网站使用Apache。

据Netcraft2010年8月11日的数据统计表明,全球目前已有119,664,128个网站使用Apache;目前Apache市场占有率为56.06%,IIS为25.03%。
Firefox

上榜理由:目前为止,它是Mozilla的最成功产品。2004年11月9日,FireFox 1.0问世。目前Firefox虽无法撼动IE的霸/主地位,但它是众多技术人员的首选浏览器。Firefox浏览器进化史:2002年9月23日Phoenix -> 2003年5月17日改为FireBird -> 2004年2月9日改为FireFox。

根据Net Market Share 2010年7月份最新统计,Firefox市场占有率为22.91%,IE为60.74% 。

WordPress

上榜理由:从2004年Wordpress作为b2博客软件一分支面世后,它开始主宰博客平台市场。据Pingdom 2009年的调查表明,全球Top 100博客中27%使用Wordpress。如果加上Wordpress.com和Automattic的Wordpress服务博客,该数据上升至32%。

2010年8月份,Wordpress 3.0下载量已超过1250万。

BIND

上榜理由:BIND(Berkeley Internet Name Domain Server)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的90%。BIND的第一个版本要追溯到20世纪80年代,它由伯克利大学的4位研究生共同开发,它和4.3 BSD一起发布。可以这样说,它就是全球的标准DNS服务器。

不接触Linux的朋友应该很少听过BIND。因为全球大多数服务器的OS均为Linux/Unix,而这些Linux/Unix均绑捆BIND,所以BIND的份额才非常高。

Ubuntu

上榜理由:2004年10月20日,Ubuntu首个版块发布。迄今为止,它是Linux流传最广的分支,尤其是其出色的桌面系统。鉴于Ubuntu近些年来的巨大成功,榜上有名,应受之无愧。

希望可以帮到楼主

‘伍’ Java开发工具哪个好

1.Eclipse
尽管IntelliJ IDEA、NetBeans和一些其他的IDE正在日益普及,但是有调查表明,Eclipse仍然是几乎半数Java开发人员首选的开发环境。 Eclipse是IDE领域的瑞士军刀,有着大量定制的接口和无数的插件。它无处不在,后面本文将推荐的其他所有工具都提供Eclipse插件。
Eclipse的工作流程可分为三个方面:工作台,工作空间和视角。工作台作为到IDE的出发点。工作空间将项目、文件和配置设置组合在一个单独的 目录下。视角定义工具、视图和有效设置。虽然新手开发人员可能会觉得相比Netbeans和IntelliJ IDEA,Eclipse使用起来更难,但Eclipse的灵活性,使其成为企业开发的首选IDE。
Luna,Eclipse的最新版本,支持Java 8、分屏编辑、新的黑色主题,以及一个功能齐全的命令行终端。

官方网站:https://eclipse.org/
2.Gradle
Gradle是一个自动化项目工具,建立在Apache Maven和Apache Ant的功能上。虽然Gradle并不是最流行的构建工具(最流行的是Maven,64%的Java开发人员会选择它),但它的普及速度很快。它也可作为默认的Android构建工具。
Gradle引以为傲的是它的简单。Gradle使用Groovy编程语言,与Maven和Ant使用XML语法截然相反。一个基本的Gradle构建文件由一行简单的代码组成:
apply plugin: 'java'.
下面的命令会生成一个Gradle构建文件,创建项目文件的目录树,并附带一个项目便携式Gradle封装:
$ gradle init --type java-library
Gradle还有可用于添加新的语言,生成支持IDE的项目文件,构建本地二进制文档,检查依赖性更新等等的插件。
想要了解更多信息,请参见Gradle的Java / JVM入门指南。

官方网站:https://gradle.org/
3.Javadoc
Javadoc是Oracle提供的文档生成器。它可以将特殊格式的注释解析为HTML文档。以下截图就是Javadoc生成的Java SE 8 API规范:
Javadoc注释使用开放标签、关闭标签,以及一个或多个描述性标签的格式。开放式标签类似于标准Java多行注释标记,使用两个星号的除外。Javadoc也解析普通的HTML标签。
Javadoc自动格式化标签和关键字,除非另有规定。Javadoc广泛使用超链接,允许你参考和链接到代码的不同区域。许多IDE——包括 Eclipse——可以自动添加Javadoc注释模块到变量、类和方法中。支持Maven、Gradle和Ant的插件在编译代码的同时也可以构建 Javadoc HTML。
想要了解更多信息,请参阅Oracle关于如何为Javadoc工具写文档注释的文章。

官方网站:http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html
4.JUnit
JUnit是用于编写和运行单元测试的开源框架。一个基本的JUnit测试包括测试类、测试方法、以及执行测试的功能。 JUnit使用标注来确定测试如何构造和运行。例如,如果你的程序有一个类叫做MathClass,具有乘法和除法的方法,你可以创建JUnit测试来检 查不符合预期的值。输入数字2和5到乘法方法,你希望得到的结果为10。当输入0作为除法方法的第二个参数时,你会期望给出一个数字计算异常的警告因为除 数不能为0:
@Test标注规定,MathClass方法是一个测试用例。 在JUnit提供额外的标注,比如@Before,这样你就可以在测试运行之前设置环境。 JUnit还可以设置规则用于定义测试方法的行为。例如,TemporaryFolder规则使得一旦测试完成,由测试创建的文件或文件夹就会被删除。
想要了解更多信息,请参考JUnit入门。 此外还有使用JUnit单元测试的教程。
官方网站:http://junit.org/
5.Cobertura
Cobertura可用于分析Java代码的测试覆盖率。Cobertura根据没有被测试覆盖的代码生成基于HTML的报告。
Cobertura提供可用于插装、检查和测试代码的工具。通过监控可测试的代码,Cobertura允许你使用你选择的测试框架,甚至不需要测试框架就可以运行程序。
Cobertura根据行、分支和程序包三个方面给出代码覆盖报告。每个类别都有一个可自定义的阈值,如果覆盖面低于阈值,就会触发警告。Cobertura还集成了Maven和Gradle 的自动检测功能。
Mkyong.com提供了一个将Cobertura与Maven整合的示例。

官方网站:http://cobertura.github.io/cobertura/
6.FindBugs
FindBugs是一个匹配编译代码模式,而非使用bug数据库的工具。当提供源代码时,FindBugs还可高亮显示检测出bug的代码行。
在它的3.0.1版本中,FindBugs继续保持着数以百计的bug描述。根据bug的严重程度,FindBugs将bug分为四个水平:相关 的,令人困扰的,可怕的,以及最可怕的。除了图形用户界面,FindBugs还提供一个命令行界面,Ant任务,以及Eclipse插件。

官方网站:http://findbugs.sourceforge.net/
7.VisualVM
包含在JDK中的VisualVM是监控和审查Java应用程序性能的工具。 VisualVM检测并重视活跃的JVM实例来检索有关进程的诊断信息。
VisualVM可以很容易地实时诊断性能问题。它提供了全套的分析工具,包括JConsole、jstack、jmap、jinfo和jstat等。此外,你还可以对JVM做一个快照,这样以后在任何时都能审查。

官方网站:http://visualvm.java.net/
8.Groovy
Groovy是一种编程语言,通过添加新的关键字,自动导入常用的类,以及可选类型变量声明,既简化又扩展了Java。
Groovy的核心优势之一是它的脚本功能。类可以被编译为Java字节码或使用Groovy Shell动态执行。Groovy的Java基础使得它相较于Jython和JRuby更容易为Java开发人员所接受。
想要了解更多信息,请参见Groovy的入门指南。
官方网站:http://www.groovy-lang.org/

‘陆’ Java开源的报表工具哪个好用

JasperReports
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。
还有好多..http://www.open-open.com/19.htm

‘柒’ 有比较好用的开源项目管理工具推荐吗

使用太多的工具造成的另外一个问题就是各个系统之间的数据无法共享,邮件分散的各自的邮箱里,IM聊天记录在各个成员的电脑里,Dropbox里的文件怎么跟Basecamp结合,怎么跟缺陷跟踪工具结合?经常想起一件事的时候,不知道应该去Dropbox里找文件还是去Email里面查找附件,又或者去Basecamp里找。工具应该是为人服务,人不应该被工具所牵绊。

‘捌’ 有哪些比较好用的开源项目管理工具

许多企业在项目开发的过程中,都会面临预算,人员,时间等各种琐碎的问题,如果这时候能有一款项目管理软件无疑可以解决大部分的情况,节省大量的时间。但现在市面上的项目管理软件收费又过高,如果购买会加重项目成本,那么有没有免费的开源项目管理软件呢?答案是有的,下面就为大家提供几款个人觉得不错的免费开源项目管理软件。

OpenProj

OpenProj作为一款免费开源的项目管理软件,由于其在Unix、Linux、Windows或Mac系统都能完美的运行,成为了所有微软项目桌面应用的替代品。除了管理项目以外,在打开本地项目文件方面也有着比较不错的效果。

OpenProj特色功能:成本核算、Gantt图表、网络图(PERT图表)、RBS以及WBS图表。

这些都是现在市场上受追捧的项目管理软件,个人觉得并不比其他收费软件差在那里,特别的他的开源,给我们提供了DIY的可能,如果有朋友现在刚好有项目要进入,那么完全可以了解试用下,相信不会让你失望。

‘玖’ 请问哪种开源网站建设工具最好

动易的相对好用些,能生成WAP和静态页面
一个会了,别的也差不多.

全球手机网站建设网总部位于北京,并在上海、广州、武汉设有分支机构;汇集 策划、设计、技术、客服等专业人才。公司资金充足,技术力量雄厚,提供:wap网站空间,手机网站和无线网站服务,我们专业提供各种wap虚拟主机服务.为用户建立稳定可靠的3G网络环境。

商务应用型WAP空间
800MB空间+200MB MSSQL数据
> 支持WML、ASP、ASP.Net(Windows)/PHP、JSP(linux) > Access、200M MSSQL数据库(Windows)/100M MySQL数据库(linux)

第一年建WAP网站时免费使用,第二年WAP主机续费800元/年,WAP网站维护也包含在内。

阅读全文

与android44源代码相关的资料

热点内容
macos终端查找文件命令 浏览:703
刑法学第五版pdf 浏览:335
方舟本地服务器为什么连接超时 浏览:977
有什么和天眼查一样的app 浏览:494
通达信高级模式选股公式源码 浏览:430
沙包缓解压力 浏览:159
java正则组 浏览:143
如何开通qq邮箱imap服务器 浏览:66
程序ide可以编译吗 浏览:235
建设银行怎么通过app改取款密码 浏览:530
有什么看漫画的网站或者app 浏览:497
通达信底部形成副图源码 浏览:354
java运行命令行参数 浏览:166
盲盒小程序源码下载 浏览:500
视频如何删除加密的 浏览:416
php点菜系统源码 浏览:802
java线程传参 浏览:529
Java编程全能词典 浏览:74
javasdk64位 浏览:372
全随文pdf 浏览:603