java工具(一)----如何在java程序中调用linux命令或者shell脚本及 画图
1. 方法方法一:Runtime类接Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运行的环境交互的接口,这就是Runtime类。场景:在运行的java程序linux环境的linux命令缺点:不能在任意主机上运行linux命令使用参考:http://wangbaoaiboy.blog.163.co
1. 方法
方法一:Runtime类
方法二:远程执行SSH2主机并运行SHELL命令--ganymed-ssh2
方法三:jsch.jar
方法四:j2ssh jar
SSHTools 是一组 Java 的 SSH 应用和开发包,包括:Java SSH API, SSH Terminal, SSH secured VNC client, SFTP client and SSH Daemon.
j2ssh 也包含在该项目中
2. ganymed-ssh2
实现原理
Ganymed SSH-2 java在整个访问过程中担当SSH的客户端,由于Linux系统自带SSH服务,所以可以直接访问Linux系统并执行相关命令,而 Windows系统则需要首先安装SSH服务。使用步骤
1.首先构造一个连接器,传入一个需要登陆的ip地址
Connection conn = new Connection(ipAddr);
conn.connect(); // 连接
2.模拟登陆目的服务器 传入用户名和密码 ,
boolean isAuthenticated = conn.authenticateWithPassword(username, password);它会返回一个布尔值,true 代表成功登陆目的服务器,否则登陆失败
3.打开一个session,有点象Hibernate的session ,执行你需要的linux 脚本命令 。
Session sess = conn.openSession();
sess.execCommand("last");
4.接收目标服务器上的控制台返回结果,读取br中的内容
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
注: 此时可进一步解析br获取更清晰易读的返回结果
5.得到脚本运行成功与否的标志 :0-成功 非0-失败
System.out.println("ExitCode: " + sess.getExitStatus());
6.关闭session和connection
sess.close();
conn.close();
使用前注意
方法二:
InputStream stderr = new StreamGobbler(mysession.getStderr());
入门例子
3. java画图类库
库名 | 描述 |
JFreeChart - 多功能Java图表类库 | 完全开源免费的 图表还能以PNG和JPEG格式的图片输出 生成的图表操作起来非常流畅 |
ECharts-Java - Java版ECharts图表库 | ECharts是一款功能非常强大的JavaScript图表库,ECharts-Java是ECharts的Java版 |
Android图表绘制引擎 - AChartEngine | 在Android应用中添加可视化统计的功能 |
Java快速报表组件- DynamicReports | 完全免费开源的。和之前介绍的JFreeChart不同,DynamicReports是报表和可视化图表相结合的,可以更加直观地展现和统计数据 |
Android开源图表库 - MPAndroidChart | 不仅可以在Android设备上绘制各种统计图 表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活 |
Java图表类库 - jCharts | jCharts是一款基于Java的图表绘制类库 |
Java智能图表类库 - JChartLib | 不仅有着漂亮的外观,而且支持图表坐标数值的自动调整,这样我们在图表中 显示数值就比较简单,不用我们计算处理; 保持为 jpg 和 png 格式图片 |
基于SWT的Java图表类库 - SWTChart | SWTChart是一款基于SWT的Java图表类库,也正因为是基于SWT的缘故,SWTChart应用起来非常方便,而且也相当轻巧 |
1) 简介
在一些开发环境中,可以使用 JFreeChart 有效地生成面向数据的图表,这些环境包括:
◆生成的文件为可移植网络图形 (PNG) 或 JPEG 格式
◆基于 Java SE Swing 的应用程序,包括小程序
◆Java EE servlet 和 JavaServer 页面 (JSP)
◆与 iText 集成创建 PDF
◆与 Batik 集成创建 SVG 格式
2)主要类
类 | 作用 |
JFreeChart 类 | JFreeChart 库中最重要的类之一是它本身,名为 JFreeChart。 该类提供一种 Java 二维图表的表示。利用该类上的方法,开发人员可以控制生成的图表的各个方面,并可以创建表示图表的抽象窗口工具包 (AWT) BufferedImage。 您只需非常少的额外工作即可直接使用 JFreeChart 创建几种简单的图表类型 |
ChartFactory 类 | ChartFactory 类用于创建不同类型的图表。该类的每种静态方法都根据其生成的图表类型命名,无论调用何种类型的图表,每种方法都返回一个通用的 JFreeChart 类实例。扫描该类的 Javadoc 文档可以加深了解 |
ChartUtilities 类 | 与 ChartFactory 类相似,ChartUtilities 类也具有大量静态方法。 该类提供的大多数方法都可以将图表转换为一种图像格式或基本的 HTML 图像映射。 |
3) 入门实例
package ssh2;
import java.awt.Font;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class TestJfree2 {
public static void main(String[] args) {
DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图
dpd.setValue("管理人员", 25); //输入数据
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
JFreeChart chart=ChartFactory.createPieChart("标题",dpd,true,true,false);
//可以查具体的API文档,第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL
// 中文不能显示,都变成了一个个的小方框
Font titleFont = new Font("黑体", Font.BOLD, 20);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(titleFont);// 为标题设置上字体
Font plotFont = new Font("宋体", Font.PLAIN, 16);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelFont(plotFont); // 为饼图元素设置上字体
Font LegendFont = new Font("楷体", Font.PLAIN, 18);
LegendTitle legend = chart.getLegend(0);
legend.setItemFont(LegendFont);// 为图例说明设置字体
//显示每一种情况占用的百分比是多少
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {2}",NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));// 显示百分比
ChartFrame chartFrame=new ChartFrame("某公司人员组织数据图",chart);
//chart要放在Java容器组件中,ChartFrame继承自java的Jframe类。该第一个参数的数据是放在窗口左上角的,不是正中间的标题。
chartFrame.pack(); //以合适的大小展现图形
chartFrame.setVisible(true);//图形是否可见
}
}
5. js中画图
1) 分类
2)ECharts
更多推荐
所有评论(0)