java 和 ssh命令的一点收获心得

java读取配置文件,和结果处理:

String url = "D://workspace//Web//WebContent//WEB-INF//nodeIp.properties";
String empUrl = url.replace("%20", " ");// 如果你的文件路径中包含空格,是必定会报错的
System.out.println(empUrl);
File files = new File(empUrl);
try {
    InputStream in = new BufferedInputStream(new FileInputStream(files));
    BufferedReader bReader = new BufferedReader(new InputStreamReader(in));
    String Result = null;
    while((Result = bReader.readLine()) != null)
    {
        Result = Result.trim(); //清除多余空格
        System.out.println(",,,,,,,nodeIp="+Result );
        nodeName[Num] = Result.substring(0,Result.indexOf("="));
        nodeIp[Num] = Result.substring(Result.indexOf("=")+1,Result.length());
        System.out.println(",,,,,,,nodeName="+nodeName[Num]);
        System.out.println(",,,,,,,nodeIp="+nodeIp[Num] );
        Num++;    
    }
    bReader.close();
    in.close();
} catch (IOException e) {
    e.printStackTrace();
}

心得:1.文件绝对路径需要经过除空格处理,否则可能出现读取不到的错误。

            2.还有不能将while((Result = bReader.readLine().trim()) != null)放在一起,否则会出现空指针错误。

java 执行Linux ssh命令

      String[]cmd = {"ssh","IP","sh","/root/excute.sh","2>/dev/null","-c"}

        Process pro = null;
         BufferedReader br = null;
         pro = Runtime.getRuntime().exec(cmd);
         pro.waitFor();
         br = new BufferedReader(new InputStreamReader(pro.getInputStream()));
         String result = null;
         if((result = br.readLine())== null)
         {
             isFirst = false;
         }
         result=result.trim();    //清除多余空格
         System.out.println(result);

心得:1.ssh 远程执行可以用建立2台机子信任关系的方法,跳过输入密码环节。

           2.用java获取结果时,肯能需要对linux命令加“-c”以保证最后能够获取正确的值。

jfreeChart 插件画柱形图

double[][] data = new double[][] {{count[i]}};
                String[] rowKeys = rowkeys[i];
                String[] columnKeys = columnkeys[j];
                CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
                JFreeChart chart = ChartFactory.createBarChart3D(ChartName[i],
                "type",
                "Utilization rate",
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                false);
                CategoryPlot plot = chart.getCategoryPlot();
                //设置网格背景颜色
                plot.setBackgroundPaint(Color.green);
                //设置网格竖线颜色
                plot.setDomainGridlinePaint(Color.pink);
                //设置网格横线颜色
                plot.setRangeGridlinePaint(Color.pink);
                
                //显示每个柱的数值,并修改该数值的字体属性
                
                org.jfree.chart.axis.CategoryAxis domainAxis = plot.getDomainAxis();
                domainAxis.setLowerMargin(0.1);//设置距离图片左端距离此时为10%
                domainAxis.setUpperMargin(0.1);//设置距离图片右端距离此时为百分之10
                domainAxis.setCategoryLabelPositionOffset(10);//图表横轴与标签的距离(10像素)
                domainAxis.setCategoryMargin(0.2);//横轴标签之间的距离20%
    
                //数据轴精度
                NumberAxis na = (NumberAxis) plot.getRangeAxis();
                na.setAutoRangeIncludesZero(true);
                DecimalFormat df = new DecimalFormat("#0.0000");
                //数据轴数据标签的显示格式
                na.setNumberFormatOverride(df);
                
              
                org.jfree.chart.axis.ValueAxis rAxis = plot.getRangeAxis();
                rAxis.setLowerBound(0);
                rAxis.setFixedAutoRange(1);
                rAxis.setRange(0.0000, 1.0000);
                
                BarRenderer3D renderer = new BarRenderer3D();
                renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
                renderer.setBaseItemLabelsVisible(true);
                //默认的数字显示在柱子中,通过如下两句可调整数字的显示
                //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
                renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
                renderer.setItemLabelAnchorOffset(10D);
                //设置每个地区所包含的平行柱的之间距离
                renderer.setItemMargin(0.2);
                
    
                plot.setRenderer(renderer);
                //设置地区、销量的显示位置
                //将下方的“Time”放到下方
                plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
                //将默认放在左边的“利用率”放到左方
                plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
                String filename = ServletUtilities.saveChartAsPNG(chart, 240, 220, null, session);
                String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;            
                request.setAttribute("graphURL"+Number, graphURL);

   主要步骤:1.先安装jfreeChart插件的jar包。方法是将jfreeChart插件lib目录下的包加入你所用到的lib包下。

                       2.写生成柱形图的代码,最后将图片以servlet流对象输出,这个需要配置相应的servlet。具体代码如下:

    <servlet>
            <servlet-name>DisplayChart</servlet-name>
            <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
        </servlet>
    <servlet-mapping>
            <servlet-name>DisplayChart</servlet-name>
            <url-pattern>/DisplayChart</url-pattern>
    </servlet-mapping>

   将这段代码加入你的web.xml中就可以。

              3.jsp显示所需的图片方法:<img src="<%=request.getAttribute(picPath) %>" width=240 height=220 border=0>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值