精华内容
下载资源
问答
  • Java代码质量监控工具Sonar安装

    千次阅读 2014-08-12 20:41:39
    Sonar是Java代码质量管理工具,具有代码静态检查、单元测试覆盖率分析、代码复杂度分析、jar依赖关系分析等多种功能。本文记录了其安装过程,以备后查。

    1.  代码质量七宗罪

    Sonar是一个代码质量管理系统,它的帮助文档开篇明义,提出了代码质量的七宗罪,总结的比较到位,不妨一看:

    1.        Bug和隐藏Bug(Bugs and Potential Bugs

    2.        违反编码规范(Coding Standards Breach

    3.        复制粘贴(Duplications

    4.        缺乏单元测试(Lack of Unit Tests

    5.        恶劣的复杂度分布(Bad Distribution of Complexity

    6.        意大利面式设计(Spaghetti Design

    7.        注释不足或过多(Not Enough or Too Many Comments

    2.  安装Sonar服务器

    首先看一下sonar对安装环境的需求,见文档:

    http://docs.codehaus.org/display/SONAR/Requirements

    2.1. 安装JRE

    不再详述。

    2.2. 安装数据库

    Sonar支持MySQL、Oracle、PostgreSQL、SQL Server等多种数据库,本文选取MySQL。

    参考文档:http://docs.codehaus.org/display/SONAR/Installing

    2.3. 配置数据库

    Sonar启动前需要数据库中有特定的用户名和数据库。以下为MySQL的配置脚本。

    # https://github.com/SonarSource/sonar-examples/tree/master/scripts/database/mysql

    #Create SonarQubedatabase and user.

    #

    # Command: mysql-u root-p < create_database.sql

    #

    CREATE DATABASE sonarCHARACTER SET utf8COLLATE utf8_general_ci;

    CREATE USER'sonar' IDENTIFIED BY'sonar';

    GRANT ALL ON sonar.* TO'sonar'@'%' IDENTIFIED BY'sonar';

    GRANT ALL ON sonar.* TO'sonar'@'localhost' IDENTIFIED BY'sonar';

    FLUSH PRIVILEGES;


    2.4. 下载并配置sonar

    本文下载的是SonarQube 3.7.4 LTS,不需要下载其他工具。

    修改sonar-3.7.4/conf/sonar.properties文件中的sonar.jdbc.url、sonar.jdbc.username和sonar.jdbc.password属性,具体要参照前面mysql服务器的配置。

    本文中设置的值是:

    sonar.jdbc.username:                       sonar

    sonar.jdbc.password:                       sonar

    sonar.jdbc.url:   jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8

    sonar.properties配置文件还可以设置其他项,比如HTTP监听端口,暂时保持默认。

    2.5. 启动sonar服务器

    执行sonar-3.7.4/bin/目录下指定操作系统的脚本,启动sonar。

    Sonar启动后:

    (1)会连接mysql服务器,并在sonar数据库中建立相关的表格;

    (2)启动一个http服务器,监听端口为9000,当然这个端口号是可以配置的。

    当然,Sonar也可以作为服务安装到操作系统中,本文不再描述。

    2.6. 登录服务器

    通过浏览器登录sonar服务器,可以对sonar进行配置、安装插件等。

    URL地址默认是http://{sonar_server_ip}:9000。

    默认的用户名和密码是admin/admin。

    本文保持sonar的默认配置。

    3.  利用maven向sonar服务器提交分析任务

    可以有多种方法向sonar提交分析任务,本文利用maven。注意sonar 3.7.4只支持maven3.1版本。

    3.1. 修改maven的settings.xml文件。

    参考文档:http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven

    <profile>

          <properties>

            <sonar.jdbc.url>jdbc:mysql://192.168.150.11:3306/sonar?useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url>

            <sonar.jdbc.username>sonar</sonar.jdbc.username>

            <sonar.jdbc.password>sonar</sonar.jdbc.password>

            <sonar.host.url>http://192.168.150.11:9000</sonar.host.url>

          </properties>

        </profile>

      </profiles>

    3.2. 修改pom.xml文件,以增加mysql驱动

    <build>

        <extensions>

                <extension>

                        <groupId>mysql</groupId>

                        <artifactId>mysql-connector-java</artifactId>

                        <version>5.1.24</version>

                </extension>

            </extensions>

        </build>

    3.3. 提交分析任务

    参考文档:http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven

    执行以下maven命令:

    mvn clean install

    mvn sonar:sonar

    注意sonar:sonar必须单独执行。如果把sonar:sonar和其他target混在一起,比如mvn clean install sonar:sonar,可能导致不可预期的问题。

    3.4. 查看分析结果

    通过浏览器登录sonar服务器,查看分析结果。

    展开全文
  • java 局域网监控代码实现 实现网络拦截
  • Java远程监控代码

    2013-10-27 21:19:29
    资源是用JAVA远程监控 本资源与Blog《“指尖上的遥控”项目——Java远程监控》配套。 如果您下载到了本资源。请去blog上看原文,方便一起学习交流。 本资源对应博客地址为: http://yacare.iteye.com
  • java本地屏幕监控代码

    2015-11-18 11:24:46
    代码放到 myeclipse里面,建立相应的包和类就可以跑起来了
  • 主要介绍了Java实现文件监控器FileMonitor的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 一、使用JAVA类库 空闲内存: Runtime.getRuntime().freeMemory() 总内存: Runtime.getRuntime().totalMemory() 最大内存: Runtime.getRuntime().maxMemory() 已占用的内存: Runtime.getRuntime().totalMemory() ...

    一、使用JAVA类库

    空闲内存:
    Runtime.getRuntime().freeMemory()
    总内存:
    Runtime.getRuntime().totalMemory()
    最大内存:
    Runtime.getRuntime().maxMemory()
    已占用的内存:
    Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()

    原文:https://blog.csdn.net/json5/article/details/78406545

    展开全文
  • JAVA编写的简单网络监控软件,包含了完整的源代码JAVA编写的简单网络监控软件,包含了完整的源代码JAVA编写的简单网络监控软件,包含了完整的源代码JAVA编写的简单网络监控软件,包含了完整的源代码
  • java 监控代码执行

    千次阅读 2018-08-10 18:56:04
    1.打开jdk的VM监控器:C:\Program Files\Java\jdk1.7.0_17\bin\jvisualvm.exe 2.打开cmd,先切换到项目的bin目录,然后执行java -Xms100m test.ThreadsDemo命令   3.在jvisualvm.exe中就可以看到test....

    1.打开jdk的VM监控器:C:\Program Files\Java\jdk1.7.0_17\bin\jvisualvm.exe

    2.打开cmd,先切换到项目的bin目录,然后执行java -Xms100m test.ThreadsDemo命令

     

    3.在jvisualvm.exe中就可以看到test.ThreadsDemo的监控情况了。

    4.查看堆栈信息

    展开全文
  • 基于JAVA CS远程监控系统软件的实现(源代码+论文),希望对你有帮助
  • 基于JAVA C/S远程监控系统软件突破了空间的限制,使用者不用亲临,在自己的电脑面前就能轻松的实现对被监控端机器的监控。本系统采用Java网络编程和Java图形编程实现。笔者在开发过程中将网络技术与远程监控理论基础...
  • 基于JAVA CS远程监控系统软件的实现(源代码+论文).rar 基于JAVA CS远程监控系统软件的实现(源代码+论文).rar 基于JAVA CS远程监控系统软件的实现(源代码+论文).rar
  • 主要介绍了SHELL脚本监控JAVA进程,需要的朋友可以参考下
  • java中远程监控Linux主机CPU及内存代码实现
    对于远程监控Linux主机系统CPU,内存使用情况,以前也使用了top等命令,但是最后还是觉得使用vmstat比较好.
    


    运行top命令获得系统CPU使用情况有两个缺点,


    第一运行top命令,执行的shell语句相对复杂.
    用top命令获得CPU使用情况的shell语句
    top -b -n 2 | grep Cpu |sed 1d | awk '{print $5}' | cut -f 1 -d "."
    第二:有时候系统峰值时间很短暂,容易造成误判.




    注意:运行本例子,你还需要下载第三方ganymed-ssh2-build251beta1.jar,改软件主要用于通过ssh远程登录被监控主机.


    import ch.ethz.ssh2.Connection;
    import ch.ethz.ssh2.Session;
    import java.io.*;
    public class test{

    public static void main(String[] args) {
    Connection conn = null;
    boolean isAuthenticated = false;
    try
    {
    /* Create a connection instance */


    conn = new Connection(hostname); // hostname 你要远程登录的主机IP地址,如10.0.2.1


    /* Now connect */

    conn.connect();

    /* Authenticate.
    * If you get an IOException saying something like
    * "Authentication method password not supported by the server at this stage."
    * then please check the FAQ.
    */


    isAuthenticated = conn.authenticateWithPassword(username, password); //你要远程登录的主机的用户名及密码,如admin/123456
    //System.out.println("authenticate sucess ...........................");
    if (isAuthenticated == false)
    System.out.println("SSH Login  Authentication failed.");
    else
    {
    /* Create a session */
    Session sess = conn.openSession();
    System.out.println(new SysCpuInfo(sess).getCPUInfo());
    /*注意,一个session只能执行一次shell,因此,如果你要再执行shell的话,必须重新创建一个session*/
    sess.close();
    sess = conn.openSession();
    System.out.println(new SysMemInfo(sess).getMEMInfo());
    sess.close();
    }
    }catch(Exception e){System.out.println(e.toString());}


    }


    1.读取CPU信息(SysCpuInfo.java)


    import java.io.*;
    import java.lang.*;
    import java.util.StringTokenizer;


    import ch.ethz.ssh2.Session;
    import ch.ethz.ssh2.StreamGobbler;


    public class SysCpuInfo {


    private int CPU_IDLE=0;
    int processStatus =0;

    public SysCpuInfo(Session session)
    {
    InputStream is = null;
    BufferedReader brStat = null;
    StringTokenizer tokenStat=  null ;
    Session sess = null;
    String str = "";
    int i=0,j=0,cpuidle=0;

    /**
    * 对于执行linux shell.
    */
    try{
    sess = session;
    sess.execCommand("vmstat 2 10 ");
    /**
    * 执行vmstat命令获得系统CPU负载情况,vmstat 2 10表示2秒钟输出一次共输出10组数据
    * 显示结果如下:
    * [mon724@v0A-202-40-18 ~]$ vmstat 2 10
    * procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
    * r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    * 1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
    * 0  0  41328  58744 199292 1877884    0    0     0     0 1080 1057  3  0 96  0  0
    * 0  0  41328  58084 199300 1878036    0    0     0   250 1310 1258  6  0 94  0  0
    * 0  0  41328  57844 199300 1878148    0    0     0    32  761  697  3  0 97  0  0
    * 0  0  41328  57852 199304 1878224    0    0     0   214  630  593  1  1 98  0  0
    * 0  0  41328  56984 199304 1878372    0    0     0    50 1033  881  6  0 94  0  0
    * 0  0  41328  56860 199304 1878440    0    0     0     0  536  578  2  0 98  0  0
    * 1  0  41328  56868 199308 1878552    0    0     0   200  545  581  1  0 99  0  0
    * 0  0  41328  56876 199308 1878644    0    0     0   102  628  663  1  0 99  0  0
    * 0  0  41328  56876 199308 1878696    0    0     0   118  615  580  3  0 96  0  0 
    */
    is = new StreamGobbler(sess.getStdout());


    brStat = new BufferedReader(new InputStreamReader(is));
    /*先读取第一行Title信息
    * procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
    * */
    brStat.readLine();
    /*读取第二行Title信息读取第三行信息
    *  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    * */
    brStat.readLine();

    /*读取第三行信息
    *  1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
    *  注意每次执行vmstat命令时,此行信息基本不变,因此不做为抽取数据使用
    * */
    brStat.readLine();
    /*读取第4行到第12行信息
    */
    for(j=0;j<9;j++)
    {
    str = brStat.readLine();
    if(str==null)
    break;
    tokenStat = new StringTokenizer(str);
    for(i=0;i<14;i++)
    {
    tokenStat.nextToken();
    }
    cpuidle = cpuidle+new Integer(tokenStat.nextToken()).intValue();
    }
    CPU_IDLE = new Double(cpuidle/9).intValue();

    }catch(Exception e){System.out.println(e.toString());}
    }

    public int getCPUInfo()
    {
    return CPU_IDLE;
    }


    }


    2.读取内存信息(SysMemInfo.java)
    import java.io.*;
    import java.lang.*;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.util.StringTokenizer;


    import ch.ethz.ssh2.Session;
    import ch.ethz.ssh2.StreamGobbler;


    public class SysMemInfo {




    private int MEM_INFO=0;



    public SysMemInfo(Session session,String hostname)
    {
    InputStream is = null;
    BufferedReader brStat = null;
    StringTokenizer tokenStat=  null ;
    Session sess = null;
    String str = "";
    int i=0,j=0,free=0,buff=0,cache=0,totalmemory=0,memidle=0;
    double memused=0;
    DataBaseCon datacon = null;
    ResultSet reset ;
    Statement stmt = null;
    /**
    * 对于执行linux shell中存在重定向和管道过滤的命令,需要使用命令组的形式.
    */
    try{
    datacon = new DataBaseCon();
    stmt = datacon.getDBconnection().createStatement();

    reset = stmt.executeQuery("select TOTAL_MEMORY from machine_info where machine_ip='"+hostname+"'");
    while(reset.next())
    {
    totalmemory = reset.getInt("TOTAL_MEMORY");
    }
    sess = session;
    sess.execCommand("vmstat 2 10 ");
    /**
    * 执行vmstat命令获得系统CPU负载情况,vmstat 2 10表示2秒钟输出一次共输出10组数据
    * 显示结果如下:
    * [mon724@v0A-202-40-18 ~]$ vmstat 2 10
    * procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
    * r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    * 1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
    * 0  0  41328  58744 199292 1877884    0    0     0     0 1080 1057  3  0 96  0  0
    * 0  0  41328  58084 199300 1878036    0    0     0   250 1310 1258  6  0 94  0  0
    * 0  0  41328  57844 199300 1878148    0    0     0    32  761  697  3  0 97  0  0
    * 0  0  41328  57852 199304 1878224    0    0     0   214  630  593  1  1 98  0  0
    * 0  0  41328  56984 199304 1878372    0    0     0    50 1033  881  6  0 94  0  0
    * 0  0  41328  56860 199304 1878440    0    0     0     0  536  578  2  0 98  0  0
    * 1  0  41328  56868 199308 1878552    0    0     0   200  545  581  1  0 99  0  0
    * 0  0  41328  56876 199308 1878644    0    0     0   102  628  663  1  0 99  0  0
    * 0  0  41328  56876 199308 1878696    0    0     0   118  615  580  3  0 96  0  0 
    */
    is = new StreamGobbler(sess.getStdout());


    brStat = new BufferedReader(new InputStreamReader(is));
    /*先读取第一行Title信息
    * procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
    * */
    brStat.readLine();
    /*读取第二行Title信息读取第三行信息
    *  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    * */
    brStat.readLine();

    /*读取第三行信息
    *  1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0
    *  注意每次执行vmstat命令时,此行信息基本不变,因此不做为抽取数据使用
    * */
    brStat.readLine();
    /*读取第4行到第12行信息
    */
    for(j=0;j<9;j++)
    {
    str = brStat.readLine();

    if(str==null)
    break;
    tokenStat = new StringTokenizer(str);
    /*跳过每行前3列信息
    * r  b   swpd   
        * 1  0  41328
    * */
    for(i=0;i<3;i++)
    {
    tokenStat.nextToken();
    }
    /*
    * 读取每行中free,buff,cache列信息
    * r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
        * 1  0  41328  58860 199292 1877728    0    0     2    23    0    0  2  0 98  0  0

    * */
    /*读取free的信息*/
    free =  free+new Integer(tokenStat.nextToken()).intValue();
    //SysLogger.log("free is :"+free);
    /*读取buff的信息*/
    buff =  buff+new Integer(tokenStat.nextToken()).intValue();
    //SysLogger.log("buff is :"+buff);
    /*读取cache的信息*/
    cache = cache+new Integer(tokenStat.nextToken()).intValue();
    //SysLogger.log("cache is :"+cache);

    }
    /*
    * ===========================================================
    * 获得内存IDLE的平均值,因为读取了9行数据因此需要除于9得出平均值
    * 对于应用程序来说系统真正的内存空余是free+buff+cache之和
    * ===========================================================
    * */
    memidle = (free+buff+cache)/9;
    /*获得内存占用率*/
    memused = ((totalmemory-memidle)*100)/totalmemory;
    //SysLogger.log("SysMemInfo memidle is :"+memidle+"===memused is :"+memused);
    MEM_INFO = new Double(memused).intValue();
    SysLogger.log("SysMemInfo MEM_INFO IS : "+MEM_INFO);
    }catch(Exception e){SysLogger.log("SysMemInfo error at line 39 :"+e.toString());}
    }


    public int getMEMInfo()
    {
    return MEM_INFO;
    }
    }

    展开全文
  • JAVA手机监控代码

    2010-03-16 15:51:30
    该项目是小型手机开发实例,可以更好的理解、易懂。
  • * 要求写一段监控代码,一旦foo的成员变量值发生变化(调用setX方法), * 控制台输出变化的成员变量和变化前后的内容,如: * foo.setA(1);//输出:a:0->1 * foo.setB(2);//输出:b:1->2 * foo.setC...
  • Java远程监控

    2013-07-30 13:59:35
    本人自己写的Java远程监控,超简单,代码清晰易懂,使用UDP不可靠连接,cpu占用少,不过只有远程桌面监控,目前尚不能远程...纯Java代码无扩展jar包。 另免费附送基于JMF的远程摄像头监控,xp可用win7有些电脑有问题
  • 机房环境监控系统VX交流 -- jfjkrj 本代码是从串口服务器获取到温湿度探头设备方法,并非全部代码 1.java TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示demo 2.java...
  • 我们在日常进行Java语言开发时,可能需要监控不同方法的运行时间,知道性能瓶颈在哪。利用springframework框架的工具类StopWatch可以快速方便的查看到每段代码运行的时间,准确确定性能瓶颈所在。 原文:...
  • Java代码测试线程死锁 用jvisualvm监控

    千次阅读 2017-07-14 17:29:18
    测试线程死锁,运行以下代码: public class Test1 { private static Object o1 = new Object(); private static Object o2 = new Object(); public static void main(String[] args) { for( int i = 0;i;i++)...
  • java写的远程屏幕监控程序,用Robot实现,截取远程桌面图片,通过socket发送到监控端!!!
  • sonar监控java代码质量使用说明

    千次阅读 2013-01-10 15:35:35
    # path to project binaries (optional),for example directory of Java #bytecode # binDir--------修改成你的二进制文件夹路径 binaries=binDir   # path to project libraries (optional) ...
  • Java远程监控源码

    2013-07-30 14:01:41
    本人自己写的Java远程监控,超简单,代码清晰易懂,使用UDP不可靠连接,cpu占用少,不过只有远程桌面监控,目前尚不能远程...纯Java代码无扩展jar包。 另免费附送基于JMF的远程摄像头监控,xp可用win7有些电脑有问题
  • windows服务器监控代码

    2019-12-13 17:31:49
    监控windows内存、cpu、硬盘等各种信息java代码 监控windows内存、cpu、硬盘等各种信息java代码 监控windows内存、cpu、硬盘等各种信息java代码 监控windows内存、cpu、硬盘等各种信息java代码 监控windows内存...
  • 基于JAVA网络远程监控系统软件的实现(源码)。基于JAVA网络远程监控系统软件的实现(源码)。基于JAVA网络远程监控系统软件的实现(源码)。
  • 本文概要: 1、监控JVM的哪些指标; 2、一目了然的JVM监控的UI界面; 3、Java代码获取JVM监控状态。 1、监控JVM的哪些指标 javaVersion /** Java版本号 */ ...
  • java监控系统

    2018-05-15 14:35:41
    java监控系统,跟物联网打交道,公司项目------------------------------
  • sigar java 监控 本地

    2015-01-26 13:21:12
    java 监控本地 cpu 内存 磁盘 源代码
  • Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 245,573
精华内容 98,229
关键字:

java代码加监控

java 订阅