java

阅读 / 问答 / 标签

如何在gradle配置java home

首先当然是到官网gradle.org下载最新的gradle版本了,这里我下的是1.1版本,最新是2.0,不过没影响我们使用下载完成后,放到任意的位置,我的是在D:/gradle-1.1,然后需要放到换进配置,步骤是右键“计算机”-“属性”,进入“高级配置”,选择“环境变量”,点击”新建“,配置”GRADLE_HOME“继续在此处选择“path”,进行修改,加入“;%GRADLE_HOME%in”,注意此处没有引号,记得前面要加分号,这样就配置好gradle的环境变量了在命令窗口输入”gradle -version“,进行验证,出现以下提示则表示成功接下来是构建一个java项目,可以随便建一个文件夹,如:D:javapro1,按照gradle的规约新建相应的文件目录,类似于maven的一样,如下最主要的是在该目录下新建一个gradle文件,build.gradle,文件内容只要一句话即可:apply plugin:"java"在命令窗口中,进入项目对应文件夹,输入gradle build,即可完成构建,然后可以在项目文件夹中发现多了一些构建完的文件,这时就完成了一个最简单的项目构建后面的一些基本命令就是clean、check、assemble等待,具体也可以直接查看官网文档

如何使用gradle创建一个简单的java工程

方法/步骤1、根据需要,从官网下载最新jenkins软件包,同时下载最新的gradle软件包,jenkins插件,设置好环境变量,配置好端口,启动。2、点击新建任务输入项目名称和使用的jdk,同时还输入节点,不输入默认为master节点3、选择源码管理工具为CVS,Git或subversion,根据自身情况而定,然后填写URL路径@HEAD4、在构建一栏里增加构建步骤选择Invoke Gradle script,同时选择你的Gradle Version,Switches,Root Build script,对于多工程,需要添加多个Invoke Gradle script5、上传脚本:在每个子工程的根目录下放置名为gradle.build的脚本,内容如下:6、点击步骤1里面截图的立即构建,通过Console Output 查看结果。

java 中的Graph 怎么用

可以用一些库来实现,比如 http://jgrapht.org/

仙剑奇侠传java

上宝软下,有两种版本

我写的Java里面的一个窗体程序运行之后显示的用Graphic画出来的图形总是一直在刷新怎么办

public class Exercise2 extends JFrame{ private final int WINDOW_WIDTH = 500; // the width of a window private final int WINDOW_HEIGHT = 420; // the height of a window private JMenuBar menuBar; private JPanel panel; private JMenu shapesMenu, colorMenu,drawingModeMenu; private JMenuItem rectangleItem,ovalItem,polygonItem,colorChooserItem; private JRadioButtonMenuItem fillItem,unfillItem; private Color selectedColor; private int i; public void paint(Graphics g) { int[] xCoords = { 200, 300, 395, 300, 200, 100}; int[] yCoords = { 105, 105, 210, 315, 315, 210}; super.paint(g); g.setColor(selectedColor); if(i == 1){ if(unfillItem.isSelected()){ g.drawRect(150, 140, 200, 140); }else{ g.fillRect(150, 140, 200, 140); } } else if(i == 2){ if(unfillItem.isSelected()){ g.drawOval(150, 140, 200, 140); }else{ g.fillOval(150, 140, 200, 140); } } else if(i == 3){ if(unfillItem.isSelected()){ g.drawPolygon(xCoords, yCoords, 6); }else{ g.fillPolygon(xCoords, yCoords, 6); } } Exercise2.this.repaint(); } public class MenuListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { if(unfillItem.isSelected()){ if(e.getSource() == rectangleItem){ i = 1; }else if(e.getSource() == ovalItem){ i = 2; } else if(e.getSource() == polygonItem){ i = 3; } else if(e.getSource() == colorChooserItem){ i = 4; } } else{ if(e.getSource() == rectangleItem){ i = 1; } else if(e.getSource() == ovalItem){ i = 2; } else if(e.getSource() == polygonItem){ i = 3; } else if(e.getSource() == colorChooserItem){ i = 4; } } } }}总是一直刷新是不是哪里死循环了,检查一下代码。

java Graphics类中getGraphics()方法有什么用?希望能详细一点...真心感谢

首先给你看个方法public void update(Graphics g) {if(offScreenImage == null) {offScreenImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);}Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(Color.darkGray);gOffScreen.fillRect(0,0,GAME_WIDTH,GAME_HEIGHT);gOffScreen.setColor(c);paint(gOffScreen);g.drawImage(offScreenImage,0,0,null);}这个是游戏加入双缓冲的片段。如果需要这个类的所有源码再联系我

JAVA中如何用graphics 作圆环

画两个圆不就好了?

谁可以跟我讲讲java中的Graphics是用来干什么的???具体点,通俗点~

画图的吧

java的Graphics跟Graphics2D有没有区别呀?

Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。基本上用Graphics 就够平时绘图用了

JAVA中的Graphics怎么用啊。

1楼正解

graphics类 java 怎么用

Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力。Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。1. 画线在窗口画一条线段,可以使用Graphics类的drawLine()方法: drawLine(int x1,int y1,int x2,int y2)例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画一个点。 g.drawLine(3,3,50,50);//画一条线段 g.drawLine(100,100,100,100);//画一个点。2. 画矩形有两种矩形:普通型和圆角型。(1) 画普通矩形有两个方法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。其中参数x和y指定左上角的位置,参数width和height是矩形的宽和高。fillRect(int x,int y,int width,int height):是用预定的颜色填充一个矩形,得到一个着色的矩形块。以下代码是画矩形的例子: g.drawRect(80,100,40,25);//画线框 g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着色块(2)画圆角矩形也有两个方法:drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是用线围起来的圆角矩形。其中参数x和y指定矩形左上角的位置;参数width和heigth是矩形的宽和高;arcWidth和arcHeight分别是圆角弧的横向直径和圆角弧的纵向直径。fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是用预定的颜色填充的圆角矩形。各参数的意义同前一个方法。以下代码是画矩形的例子: g.drawRoundRect(10,10,150,70,40,25);//画一个圆角矩形 g.setColor(Color.blue); g.fillRoundRect(80,100,100,100,60,40);//涂一个圆角矩形块 g.drawRoundRect(10,150,40,40,40,40);//画圆 g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//画圆块可以用画圆角矩形方法画圆形,当矩形的宽和高相等,圆角弧的横向直径和圆角弧的纵向直径也相等,并等于矩形的宽和高时,画的就是圆形。参见上述例子中的注释,前一个是画圆,后一个是涂圆块。3. 画三维矩形画三维矩形有两个方法:draw3DRect(int x,int y,int width,int height, boolean raised):画一个突出显示的矩形。其中x和y指定矩形左上角的位置,参数width和height是矩形的宽和高,参数raised是突出与否。fill3DRect(int x,int y,int width,int height,boolean raised):用预定的颜色填充一个突出显示的矩形。以下代码是画突出矩形的例子: g.draw3DRect(80,100,40,25,true);//画一个线框 g.setColor(Color.yellow); g.fill3DRect(20,70,20,30,true);//画一个着色块4.画椭圆形椭圆形由椭圆的横轴和纵轴确定。画椭圆形有两个方法:drawOval(int x,int y,int width,int height):是画用线围成的椭圆形。其中参数x和参数y指定椭圆形左上角的位置,参数width和height是横轴和纵轴。fillOval(int x,int y,int width,int height):是用预定的颜色填充的椭圆形,是一个着色块。也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形。以下代码是画椭圆形的例子: g.drawOval(10,10,60,120);//画椭圆 g.setColor(Color.cyan);g.fillOval(100,30,60,60);//涂圆块 g.setColor(Color.magenta);g.fillOval(15,140,100,50);//涂椭圆5. 画圆弧画圆弧有两个方法:drawArc(int x,int y,int width,int height,int startAngle, int arcAngle):画椭圆一部分的圆弧线。椭圆的中心是它的外接矩形的中心,其中参数是外接矩形的左上角坐标(x,y),宽是width,高是heigh。参数startAngle的单位是 “度”,起始角度0度是指3点钟方位.参数startAngle和arcAngle表示从startAngle角度开始,逆时针方向画arcAngle度的弧,约定,正值度数是逆时针方向,负值度数是顺时针方向,例如-90度是6点钟方位。fillArc(int x,int y,int width, int height, int startAngle, int arcAngle):用setColor()方法设定的颜色,画着色椭圆的一部分。以下代码是画圆弧的例子: g.drawArc(10,40,90,50,0,180);//画圆弧线 g.drawArc(100,40,90,50,180,180);//画圆弧线 g.setColor(Color.yellow); g.fillArc(10,100,40,40,0,-270);//填充缺右上角的四分之三的椭圆 g.setColor(Color.green); g.fillArc(60,110,110,60,-90,-270);//填充缺左下角的四分之三的椭圆6. 画多边形多边形是用多条线段首尾连接而成的封闭平面图。多边形线段端点的x坐标和y坐标分别存储在两个数组中,画多边形就是按给定的坐标点顺序用直线段将它们连起来。以下是画多边形常用的两个方法:drawPolygon(int xpoints[],int yPoints[],int nPoints):画一个多边形fillPolygon(int xPoints[],int yPoints[],int nPoints):用方法setColor()设定的颜色着色多边形。其中数组xPoints[]存储x坐标点,yPoints[]存储y坐标点,nPoints是坐标点个数。注意,上述方法并不自动闭合多边形,要画一个闭合的多边形,给出的坐标点的最后一点必须与第一点相同.以下代码实现填充一个三角形和画一个八边形。 int px1[]={50,90,10,50};//首末点相重,才能画多边形 int py1[]={10,50,50,10}; int px2[]={140,180,170,180,140,100,110,140}; int py2[]={5,25,35,45,65,35,25,5}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4); g.setColor(Color.red); g.drawPolygon(px2,py2,9);也可以用多边形对象画多边形。用多边形类Polygon创建一个多边形对象,然后用这个对象绘制多边形。Polygon类的主要方法:Polygon():创建多边形对象,暂时没有坐标点。Polygon(int xPoints[],int yPoints[],int nPoints):用指定的坐标点创建多边形对象。addPoint():将一个坐标点加入到Polygon对象中。drawPolygon(Polygon p):绘制多边形。 fillPolygon(Polygon p):和指定的颜色填充多边形。例如,以下代码,画一个三角形和填充一个黄色的三角形。注意,用多边形对象画封闭多边形不要求首末点重合。 int x[]={140,180,170,180,140,100,110,100}; int y[]={5,25,35,45,65,45,35,25}; Polygon ponlygon1=new Polygon(); polygon1.addPoint(50,10); polygon1.addPoint(90,50); polygon1.addPoint(10,50); g.drawPolygon(polygon1); g.setColor(Color.yellow); Polygon polygon2 = new Polygon(x,y,8); g.fillPolygon(polygon2);7. 擦除矩形块当需要在一个着色图形的中间有一个空缺的矩形的情况,可用背景色填充一矩形块实现,相当于在该矩形块上使用了 “橡皮擦”.实现的方法是: clearRect(int x,int y, int width,int height):擦除一个由参数指定的矩形块的着色。例如,以下代码实现在一个圆中擦除一个矩形块的着色: g.setColor(Color.blue); g.fillOval(50,50,100,100);g.clearRect(70,70,40,55);8. 限定作图显示区域用一个矩形表示图形的显示区域,要求图形在指定的范围内有效,不重新计算新的坐标值,自动实现超出部分不显示。方法是clipRect(int x,int y,int width,int height),限制图形在指定区域内的显示,超出部分不显示。多个限制区有覆盖时,得到限制区域的交集区域。例如,代码: g.clipRect(0,0,100,50);g.clipRect(50,25,100,50);相当于 g.clipRect(50,25,50,25);9. 复制图形利用Graphics类的方法copyArea()可以实现图形的复制,其使用格式是: copyArea(int x,int y,int width,int height, int dx, int dy),dx和dy分别表示将图形粘贴到原位置偏移的像素点数,正值为往右或往下偏移是,负值为往左或往上偏移量。位移的参考点是要复制矩形的左上角坐标。例如,以下代码示意图形的复制,将一个矩形的一部分、另一个矩形的全部分别自制。 g.drawRect(10,10,60,90); g.fillRect(90,10,60,90); g.copyArea(40,50,60,70,-20,80); g.copyArea(110,50,60,60,10,80);

java中关键字const是什么意思?

定义一个变量为常量,在程序运行过程中不可改变

Java的const怎么用

如果定义常量用final

在java里Composite是什么

是java的一种设计模式

java servlet 怎么获得connection

那要看你用的是什么数据库了,各种数据库的连接语句是有差别的。我这有几种数据库的连接语句,希望能有你需要的:1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String password="test"; Connection conn= DriverManager.getConnection(url,user,password); 2、DB2数据库 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 String user="admin"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; //mydb为数据库 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase数据库 Class.forName("com.sybase.jdbc.SybDriver").newInstance(); String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 Properties sysProps = System.getProperties(); SysProps.put("user","userid"); SysProps.put("password","user_password"); Connection conn= DriverManager.getConnection(url, SysProps); 5、Informix数据库 Class.forName("com.informix.jdbc.IfxDriver").newInstance(); String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; user=testuser;password=testpassword"; //myDB为数据库名 Connection conn= DriverManager.getConnection(url); 6、MySQL数据库 Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" //myDB为数据库名 Connection conn= DriverManager.getConnection(url); 7、PostgreSQL数据库 Class.forName("org.postgresql.Driver").newInstance(); String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名 String user="myuser"; String password="mypassword"; Connection conn= DriverManager.getConnection(url,user,password); 8、access数据库直连用ODBC的 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb"); Connection conn = DriverManager.getConnection(url,"",""); Statement stmtNew=conn.createStatement() ;

Java 最简单的socket编程,连接不上本地,一直都有Connection refused: connect

朋友,你要确定你先运行server端,让后运行client端。读取流的地方有问题,还有,流管道用完了要关闭。

java中的Connection怎么用?

Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。注:在配置 Connection 时,JDBC 应用程序应该使用适当的 Connection 方法,比如 setAutoCommit 或 setTransactionIsolation。在有可用的 JDBC 方法时,应用程序不能直接调用 SQL 命令更改连接的配置。默认情况下,Connection 对象处于自动提交模式下,这意味着它在执行每个语句后都会自动提交更改。如果禁用了自动提交模式,那么要提交更改就必须显式调用 commit 方法;否则无法保存数据库更改。使用 JDBC 2.1 核心 API 创建的新 Connection 对象有一个与之关联的最初为空的类型映射。用户可以为此类型映射中的 UDT 输入一个自定义映射关系。在使用 ResultSet.getObject 方法从数据源中获取 UDT 时,getObject 方法将检查该连接的类型映射是否有对应该 UDT 的条目。如果有,那么 getObject 方法将该 UDT 映射到所指示的类。如果没有条目,则使用标准映射关系映射该 UDT。用户可以创建一个新的类型映射,该映射是一个 java.util.Map 对象,可在其中创建一个条目,并将该条目传递给可以执行自定义映射关系的 java.sql 方法。在这种情况下,该方法将使用给定的类型映射,而不是与连接关联的映射。例如,以下代码片段指定 SQL 类型 ATHLETES 将被映射到 Java 编程语言中的 Athletes 类。该代码片段为 Connection 对象 con 获取类型映射,并在其中插入条目,然后使用新的条目将该类型映射设置为连接的类型映射。java.util.Map map = con.getTypeMap();map.put("mySchemaName.ATHLETES", Class.forName("Athletes"));con.setTypeMap(map);

java中的Connection是什么,有哪些方法? 每个方法的返回值是什么意思?

connection是java中的一个类,在java.sql包下,用于获得数据库的连接,用的比较多的是返回createStatement和prepareStatement,用来返回一个statement,这些查api吧,我也说不清楚,太多了

在Java中connection的常用方法及其描述是什么

下个jdk的api手册,作用,用法一目了然

java中的Connection怎么用?

Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。注:在配置 Connection 时,JDBC 应用程序应该使用适当的 Connection 方法,比如 setAutoCommit 或 setTransactionIsolation。在有可用的 JDBC 方法时,应用程序不能直接调用 SQL 命令更改连接的配置。默认情况下,Connection 对象处于自动提交模式下,这意味着它在执行每个语句后都会自动提交更改。如果禁用了自动提交模式,那么要提交更改就必须显式调用 commit 方法;否则无法保存数据库更改。使用 JDBC 2.1 核心 API 创建的新 Connection 对象有一个与之关联的最初为空的类型映射。用户可以为此类型映射中的 UDT 输入一个自定义映射关系。在使用 ResultSet.getObject 方法从数据源中获取 UDT 时,getObject 方法将检查该连接的类型映射是否有对应该 UDT 的条目。如果有,那么 getObject 方法将该 UDT 映射到所指示的类。如果没有条目,则使用标准映射关系映射该 UDT。用户可以创建一个新的类型映射,该映射是一个 java.util.Map 对象,可在其中创建一个条目,并将该条目传递给可以执行自定义映射关系的 java.sql 方法。在这种情况下,该方法将使用给定的类型映射,而不是与连接关联的映射。例如,以下代码片段指定 SQL 类型 ATHLETES 将被映射到 Java 编程语言中的 Athletes 类。该代码片段为 Connection 对象 con 获取类型映射,并在其中插入条目,然后使用新的条目将该类型映射设置为连接的类型映射。java.util.Map map = con.getTypeMap();map.put("mySchemaName.ATHLETES", Class.forName("Athletes"));con.setTypeMap(map);

Java:关于Java线程的中断(interrupt)的描述,这句话是什么意思呢?

不要用翻译机直接翻译,这样是有偏差的,interrupt的意思就是中断一个正在执行的线程。就这么简单

关于java中的interrupt()方法疑问

我也想问这问题

Java 线程调用interrupt的作用

interrupt()只是改变中断状态而已. interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,给受阻塞的线程抛出一个中断信号, 这样受阻线程就得以退出阻塞的状态。更确切 的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞, 那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。 如果线程没有被阻塞,这时调用interrupt()将不起作用;否则,线程就将得到InterruptedException异常(该线程必须事先预备好处理此状况),接着逃离阻塞状态。 interrupt和stop不同的是,它不会终止整个线程,而是终止Object.wait, Thread.join和Thread.sleep三种方法造成的阻塞状态,如果在调用它时,线程处于阻塞状态了,调用interrupt会抛出InterruptedException

java中interrupt

JDK API的说明如下:public void interrupt()中断线程。 如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。 如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方法,或者该类的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int) 方法过程中受阻,则其中断状态将被清除,它还将收到一个 InterruptedException。 如果该线程在可中断的通道上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException。 如果该线程在一个 Selector 中受阻,则该线程的中断状态将被设置,它将立即从选择操作返回,并可能带有一个非零值,就好像调用了选择器的 wakeup 方法一样。 如果以前的条件都没有保存,则该线程的中断状态将被设置。中断一个不处于活动状态的线程不需要任何作用。 抛出: SecurityException - 如果当前线程无法修改该线程。注意这句:如果当前线程没有中断它自己(这在任何情况下都是允许的)说明调用interrupt方法不一定会真的中断线程。

java scheduled 多个定时任务会冲突吗

定时任务本身不会有冲突,有冲突的是任务中操作处理的资源或数据,需要对有写入的文件或数据进行排它锁,保障线程处理的安全性。

有关Java Swing动态增加组件

这简单啊,创建一个全局变量,增加按钮后++就好了啊

问一下java里面timestamp时间类型的怎么比较大小,比如说我想判断我的time是不是在18点以后,该怎么写

timestamp对象有compareTo方法.

java uuid 和guid 的区别

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。GUID一词有时也专指微软对UUID标准的实现。UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32=2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。

java中生成的guid是多少位

是一个32位的字符串

java中File fileDir = new File(fileDirName)是什么意思;

对!这里的file可以是目录也可以是文件。。

如何用java获取linux下某文件夹的大小

通过FileInputStream来获取的文件大小:public static void main(String[] args) { FileInputStream fis= null; try{ File f= new File("D:\CentOS-6.5-x86_64-bin-DVD1.iso"); fis= new FileInputStream(f); logger.info(fis.available()); }catch(Exception e){ logger.error(e); } finally{ if (null!=fis){ try { fis.close(); } catch (IOException e) { logger.error(e); } } }}下面是运行结果:2147483647它是Integer.MAX_VALUE,也就是有符号整型能表示的最大数值。

如何用Java得到硬盘空间

   一般来讲 要用java得到硬盘空间 有 种方法:    调用system的mand 然后分析得到的结果 这种方法有很强的系统依赖性 linux下和win下要分别写程序  下面是一个win下的例子 编译成功之后 运行java Diskspace yourdir(比如c:)  import java io BufferedReader;  import java io InputStreamReader;    /**  * Determine free disk space for a given directory by  * parsing the output of the dir mand   * This class is inspired by the code at  * Works only under Windows under certain circumstances   * Yes it s that shaky   * Requires Java or higher   * @[EMAIL PROTECTED]  *Marco Schmidt  */  public class Diskspace  {  private Diskspace()  {  // prevent instantiation of this class  }    /**  * Return available free disk space for a directory   * @[EMAIL PROTECTED]  dirName name of the directory  * @[EMAIL PROTECTED]  free disk space in bytes or if unknown  */  public static long getFreeDiskSpace(String dirName)  {  try  {  // guess correct dir mand by looking at the  // operating system name  String os = System getProperty( os name );  String mand;  if (os equals( Windows NT ) ||  os equals( Windows ))  {  mand = cmd exe /c dir + dirName;  }  else  {  mand = /c dir + dirName;  }  // run the dir mand on the argument directory name  Runtime runtime = Runtime getRuntime();  Process process = null;  process = runtime exec(mand);  if (process == null)  {  return ;  }  // read the output of the dir mand  // only the last line is of interest  BufferedReader in = new BufferedReader(  new InputStreamReader(process getInputStream()));  String line;  String freeSpace = null;  while ((line = in readLine()) != null)  {  freeSpace = line;  }  if (freeSpace == null)  {  return ;  }  process destroy();  // remove dots & mas & leading and trailing whitespace  freeSpace = freeSpace trim();  freeSpace = freeSpace replaceAll( \ );  freeSpace = freeSpace replaceAll( );  String[] items = freeSpace split( );  // the first valid numeric value in items after(!) index   // is probably the free disk space  int index = ;  while (index < items.length)  {  try  {  long bytes = Long.parseLong(items[index++]);  return bytes;  }  catch (NumberFormatException nfe)  {  }  }  return -1;  }  catch (Exception exception)  {  return -1;  }  }    /**  * Command line program to print the free diskspace to stdout  * for all 26 potential root directories A: to Z:* (when no parameters are given to this program)  * or for those directories (drives) specified as parameters.  * @[EMAIL PROTECTED]  args program parameters  */  public static void main(String[] args)  {  if (args.length == 0)  {  for (char c = "A"; c <= "Z"; c++)  {  String dirName = c + ":\";  System.out.println(dirName + " " +  getFreeDiskSpace(dirName));  }  }  else  {  for (int i = 0; i < args.length; i++)  {  System.out.println(args[i] + " " +  getFreeDiskSpace(args[i]));  }  }  }  }     方法二:使用Jconfig,可以跨平台   从上下载jconfig.  下载的包的sample里有很简单的例子,如果是要得到磁盘空间的话:  用FileRegistry.getVolumes()得到DiskVolume  然后call getFreeSpace()和getMaxCapacity()  就是这么简单..:)     方法三:jni   这个是解决所有和os相关的操作的万能利器了.  例子我也懒得写了.  写一个dll然后call之即可.   lishixinzhi/Article/program/Java/Javascript/201311/25405

Java创建文件夹及文件

  package xj util;   import java io File;   import java io IOException;   public class CreateFileUtil {   public static boolean CreateFile(String destFileName) {   File file = new File(destFileName);   if (file exists()) {   System out println( 创建单个文件 + destFileName + 失败 目标文件已存在! );   return false;   }   if (destFileName endsWith(File separator)) {   System out println( 创建单个文件 + destFileName + 失败 目标不能是目录! );   return false;   }   if (!file getParentFile() exists()) {   System out println( 目标文件所在路径不存在 准备创建 );   if (!file getParentFile() mkdirs()) {   System out println( 创建目录文件所在的目录失败! );   return false;   }   }   // 创建目标文件   try {   if (file createNewFile()) {   System out println( 创建单个文件 + destFileName + 成功! );   return true;   } else {   System out println( 创建单个文件 + destFileName + 失败! );   return false;   }   } catch (IOException e) {   e printStackTrace();   System out println( 创建单个文件 + destFileName + 失败! );   return false;   }   }   public static boolean createDir(String destDirName) {   File dir = new File(destDirName);   if(dir exists()) {   System out println( 创建目录 + destDirName + 失败 目标目录已存在! );   return false;   }   if(!destDirName endsWith(File separator))   destDirName = destDirName + File separator;   // 创建单个目录   if(dir mkdirs()) {   System out println( 创建目录 + destDirName + 成功! );   return true;   } else {   System out println( 创建目录 + destDirName + 成功! );   return false;   }   }   public static String createTempFile(String prefix String suffix String dirName) {   File tempFile = null;   try{   if(dirName == null) {   // 在默认文件夹下创建临时文件   tempFile = File createTempFile(prefix suffix);   return tempFile getCanonicalPath();   }   else {   File dir = new File(dirName);   // 如果临时文件所在目录不存在 首先创建   if(!dir exists()) {   if(!CreateFileUtil createDir(dirName)){   System out println( 创建临时文件失败 不能创建临时文件所在目录! );   return null;   }   }   tempFile = File createTempFile(prefix suffix dir);   return tempFile getCanonicalPath();   }   } catch(IOException e) {   e printStackTrace();   System out println( 创建临时文件失败 + e getMessage());   return null;   }   }   public static void main(String[] args) {   // 创建目录   String dirName = c:/test/test /test ;   CreateFileUtil createDir(dirName);   // 创建文件   String fileName = dirName + /test /testFile txt ;   CreateFileUtil CreateFile(fileName);   // 创建临时文件   String prefix = temp ;   String suffix = txt ;   for(int i = ; i < ; i++) {   System out println( 创建了临时文件: + CreateFileUtil createTempFile(prefix suffix dirName));   }   } lishixinzhi/Article/program/Java/hx/201311/25690

javaScript中hack是什么意思

hack是为了兼容不同的浏览器写不同的css代码

java程序开发中对JDBC、JNDI、RMI、JMS、EJB、JTA、JNI等技术的应用都有多大,哪些重要,哪些不重要

789123123

Java RMI中Naming.lookup的性能问题

这个是你测试的问题,你写在里面测试的是循环一次的时间,如果你写在外边,时间上是测试的4500次的时间,当时是里面的时间少了,当时你把里面的时间乘上4500肯定是比外边大的,你对for循环的机制理解的不是非常正确,希望对你理解有帮助

telnet可以拼通端口,但是用java的rmi就无法连接了,请教各位大神,这是怎么回事啊。。

协议不一样。Telnet协议和rmi协议。

请问C#是否有类似Java的RMI功能

有的。详情可参看此帖。此为他人博客,本人于数年前项目遇阻之时,受到此帖启发,便收藏在收藏夹中,对其中内容并无丝毫贡献。今转发此帖,以惠众人,因与博主素不相识,未敢掠人之美,特此声明。我不生产代码,我只是帖子的搬运工。网页链接

如何用java编写RMI多人聊天室

建议可以查找下comet,用comet来实现聊天室的功能会比较好

安卓的RMI报错:java.lang.NoClassDefFoundError

把JDK重新设置下,并且清空重新编译下,这个是 JDK自带的包

求救!java rmi 启动出错

首先在server端需要一个接口,继承自java.rmi.Remotepublic interface Hello extends Remote { public String say() throws RemoteException;}其次实现这个接口并继承java.rmi.server.UnicastRemoteObjectpublic class SayHello extends UnicastRemoteObject implements Hello{ protected SayHello() throws RemoteException{ super(); } public String say() throws RemoteException { return "Hello"; }}接着注册服务,绑定端口public class Reg { public static void main(String[] args) throws RemoteException,MalformedURLException{ LocateRegistry.createRegistry(1099); SayHello sh = new SayHello(); Naming.rebind("rmi://localhost:1099/sh", sh); System.out.println("注册完毕"); }}然后在客户端public class Client { public static void main(String[] args) throws RemoteException,MalformedURLException,NotBoundException{ Hello h = (Hello)Naming.lookup("rmi://localhost:1099/sh"); System.out.println(h.say()); }}即可 jdk1.5及以上版本已经不需要生成存根和骨架了也不用去start rmicregistry什么了 只要先运行那个Reg类,再运行Client就OK了

通过Java RMI的定时GC触发,JVM垃圾回收就无法自动触发FULL GC了吗

除直接调用System.gc外,触发FullGC执行的情况有如下四种。1.旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行FullGC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError:Javaheapspace为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在MinorGC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。2.PermanetGeneration空间满PermanetGeneration中存放的为一些class的信息等,当系统中要加载的类、反射的类和调用的方法较多时,PermanetGeneration可能会被占满,在未配置为采用CMSGC的情况下会执行FullGC。如果经过FullGC仍然回收不了,那么JVM会抛出如下错误信息:java.lang.OutOfMemoryError:PermGenspace为避免PermGen占满造成FullGC现象,可采用的方法为增大PermGen空间或转为使用CMSGC。3.CMSGC时出现promotionfailed和concurrentmodefailure对于采用CMS进行旧生代GC的程序而言,尤其要注意GC日志中是否有promotionfailed和concurrentmodefailure两种状况,当这两种状况出现时可能会触发FullGC。promotionfailed是在进行MinorGC时,survivorspace放不下、对象只能放入旧生代,而此时旧生代也放不下造成的;concurrentmodefailure是在执行CMSGC的过程中同时有对象要放入旧生代,而此时旧生代空间不足造成的。应对措施为:增大survivorspace、旧生代空间或调低触发并发GC的比率,但在JDK5.0+、6.0+的版本中有可能会由于JDK的bug29导致CMS在remark完毕后很久才触发sweeping动作。对于这种状况,可通过设置-XX:CMSMaxAbortablePrecleanTime=5(单位为ms)来避免。4.统计得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间这是一个较为复杂的触发情况,Hotspot为了避免由于新生代对象晋升到旧生代导致旧生代空间不足的现象,在进行MinorGC时,做了一个判断,如果之前统计所得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间,那么就直接触发FullGC。例如程序第一次触发MinorGC后,有6MB的对象晋升到旧生代,那么当下一次MinorGC发生时,首先检查旧生代的剩余空间是否大于6MB,如果小于6MB,则执行FullGC。当新生代采用PSGC时,方式稍有不同,PSGC是在MinorGC后也会检查,例如上面的例子中第一次MinorGC后,PSGC会检查此时旧生代的剩余空间是否大于6MB,如小于,则触发对旧生代的回收。除了以上4种状况外,对于使用RMI来进行RPC或管理的SunJDK应用而言,默认情况下会一小时执行一次FullGC。可通过在启动时通过-java-Dsun.rmi.dgc.client.gcInterval=3600000来设置FullGC执行的间隔时间或通过-XX:+DisableExplicitGC来禁止RMI调用System.gc。

JAVA RMI无法远程调用

java.lang.ClassNotFoundException: server.SayHello (no security manager: RMI class loader disabled)缺少jar包,异常显示是缺少server.SayHello这个方法,确认新项目中是不是少了jar包。

java windows项目 到linux下 rmi异常

学习下

在java RMI服务器端是否可以写多个接口,从而注册多个不同的远程对象呢

你想实现几个接口都是可以的,只要符合远程接口的规范类似下面的代码这样写啊远程接口实例import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; } 它定义了一个方法,sayHello,实现向调用者返回一个字符串Server类import java.rmi.registry.Resistry; import java.rmi.registry.LocateRegistry; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server implements Hello { public Server(){} public String sayHello() { return “Hello,World!”; } public static void main(String args[]) { Try{ Server obj=new Server (); Hello stub=(Hello)UnicastRemoteObject.explortObject(obj,0); //Bind the remote object" s stub in the registry Registry registry=LocateRegistry.getRegistry(); Registry.bind(“Hello”,stub); System.err.println(“Server ready”); }catch(Exception e) { System.err.println(“Server exception:”+e.toString()); e.printStackTrace(); } } }

java远程调用接口的原理和范例,谢谢

请参考 http://zhidao.baidu.com/question/458410920.html和http://zhidao.baidu.com/question/229357602.html和http://zhidao.baidu.com/question/169082054.html

java RMI如何停止服务器。

public static void main(String[] args) { loginFrame lf=new loginFrame(); lf.setVisible(true); lf.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); }}class mainFrame extends JFrame implements ActionListener{ MenuBar myMenuBar=new M

请教一个关于java rmi远程调用 传递自定义对象的问题

  RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。在过去,TCP/IP套接字通讯是远程通讯的主要手段,但此开发方式没有使用面向对象的方式实现开发,在开发一个如此的通讯机制时往往令程序员感觉到乏味,对此RPC(Remote Procedure Call)应运而生,它使程序员更容易地调用远程程序,但在面对复杂的信息传讯时,RPC依然未能很好的支持,而且RPC未能做到面向对象调用的开发模式。针对RPC服务遗留的问题,RMI出现在世人面前,它被设计成一种面向对象的通讯方式,允许程序员使用远程对象来实现通信,并且支持多线程的服务,这是一次远程通讯的革命,为远程通信开辟新的里程碑。  RMI的开发步骤  先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote  开发一个类来实现远程接口及远程方法,值得注意的是实现类需要继承UnicastRemoteObject  通过javac命令编译文件,通过java -server 命令注册服务,启动远程对象  最后客户端查找远程对象,并调用远程方法  简单实例  首先为服务建立一个Model层,注意因为此对象需要现实进行远程传输,所以必须继承Serializable  代码  创建远程接口PersonService,注意远程接口需要继承Remote  代码  建立PersonServiceImpl实现远程接口,注意此为远程对象实现类,需要继承UnicastRemoteObject  代码  建立服务器端,在服务器端注册RMI通讯端口与通讯路径,然后通讯javac命令编译文件,通过java -server 命令注册服务。以下面代码为例,如果阁下将项目建立于D:\RMIRemotingService文件夹上时,则先输入D:\RMIRemotingServicesrc>javac rmi/remotingservice/Program.java获取Program.class(如何阁下使用的MyEclipse等开发工具,可跳过此步,直接在*/bin文件夹中直接调用已经生成的Program.class),然后输入D:\RMIRemotingServicesrc>java rmi/remotingservice/Program启动服务。  代码  最后建立客户端进行测试,注意客户调用的RMI路径必须服务器配置一致  代码  常见错误  在命令提示符调用java命令时,显示并无此命令。这是因为未在“环境变量”中绑定JAVA的JDK命令造成的,你首先单击“计算机右键”->“属性”->“高级”->“环境变量”。在系统变量Path设置中加载为JDK的路径 .;D:Program FilesGenuitecCommoninarycom.sun.java.jdk.win32.x86_1.6.0.013in。然后在ClassPath加载服务器端的Program.class地址 .;D:\RMIRemotingServicein  在调用javac命令时出现“javac 找不到文件 ..... ”此错误,可能是因为阁下输入的文件路径出现错误造成,注意不要把D:\RMIRemotingServicesrc>javac rmi/remotingservice/Program.java写错为D:\RMIRemotingServicesrc>javac rmi.remotingservice.Program.java  在调用D:\RMIRemotingServicein>java rmi/remotingservice/Program命令时出现“Exception in thread "main" java.lang.NoClassEdfoundError”错误,第一这可能是阁下把Program错写为Program.class,注意java命令不需要加后缀名。第二可能是阁下把“java rmi/remotingservice/Program”错写为“java rmi emotingserviceProgram"。

Java的RMI/FJB属于什么中间件?

1、Java RMI,即 远程方法调用(Remote Method Invocation),一种用于实现远程过程调用(RPC)(Remote procedure call)的Java API, 能直接传输序列化后的Java对象和分布式垃圾收集。它的实现依赖于Java虚拟机(JVM),因此它仅支持从一个JVM到另一个JVM的调用。2、应该是EJB吧,它是早与Spring之前的一个 EJB (Enterprise Java Beans) 是基于分布式事务处理的企业级应用程序的组件。Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。如满意,请采纳!

java 用rmi 远程连接access 数据库,但总报错,请高人指点。

另一端缺少类了?

Java RMI调用远程程序抛出异常

背景要求:定时监控远程主机上mongodb数据库内存使用的情况,当内存使用过大时暂停逻辑处理线程后启动内存空间的释放处理线程,释放完成后再启动逻辑处理线程。操作系统:CentOS 64bit (Linux)步骤(代码省略):1.创建Socket远程服务器2.创建客户端 配置: #查找对象stub端口 RMI_PORT=9902 #服务端口 RMI_SERV_RMI_PORT=9903 #注册服务地址端口要和查找对象stub端口一致 RMI_URL=rmi://192.168.0.118:9902/MongoServer #绑定IP RMI_IP=192.168.0.118 #检查内存shell RMI_MEMQUERY_COMMAND=sh /home/test/BI/smartshow14/MongoDBRMIServer/memquery.sh #释放内存shell RMI_MEMFREE_COMMAND=sh /home/test/BI/smartshow14/MongoDBRMIServer/memclear.sh #释放内存容量阀值,单位M RMI_MEM_CAPACITY_LIMIT=30003.启动服务器客户端线程通过 rmi://192.168.0.118:9902/MongoServer 访问时出现异常:--定时扫描MONGODB内存线程--:开始运行!java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: com.linkage.iface.IMongoDBScan (no security manager: RMI class loader disabled) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at com.linkage.querytool.QueryRMICaller.ramCapacityScan(QueryRMICaller.java:87) at com.linkage.querytool.MongoDBARMScanThread$TimerWorkTask.run(MongoDBARMScanThread.java:94) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462)Caused by: java.lang.ClassNotFoundException: com.linkage.iface.IMongoDBScan (no security manager: RMI class loader disabled) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:535) at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628) at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294) at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) ... 6 more--定时扫描MONGODB内存线程--:处理结束!=======================================================================================================--定时扫描MONGODB内存线程--:开始运行!java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.118:9902 connect,resolve) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034) at java.net.Socket.connect(Socket.java:524) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:189) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at com.linkage.querytool.QueryRMICaller.ramCapacityScan(QueryRMICaller.java:89) at com.linkage.querytool.MongoDBARMScanThread$TimerWorkTask.run(MongoDBARMScanThread.java:94) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462)--定时扫描MONGODB内存线程--:处理结束!============================================================================================================--定时扫描MONGODB内存线程--:开始运行!java.security.AccessControlException: access denied (java.lang.RuntimePermission createSecurityManager) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.<init>(SecurityManager.java:282) at java.rmi.RMISecurityManager.<init>(RMISecurityManager.java:45) at com.linkage.querytool.QueryRMICaller.ramCapacityScan(QueryRMICaller.java:88) at com.linkage.querytool.MongoDBARMScanThread$TimerWorkTask.run(MongoDBARMScanThread.java:94) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462)--定时扫描MONGODB内存线程--:处理结束!==========================================================================================================以上异常都有可能出现,通过以下方式可解除问题:1.在客户端程序前打开安全管理器:try { System.setSecurityManager(new java.rmi.RMISecurityManager()); mds = (IMongoDBScan) Naming.lookup(urlStr);} catch (MalformedURLException e) { //..........} 2.修改/usr/java/jdk1.6.0_21/jre/lib/security/java.policy后重启 grant { permission java.security.AllPermission; }

Java远程方法调用(1)

  概述       Java Remote Method Invocation ( RMI Java远程方法调用)允许您使用Java编写分布式对象 本文将介绍RMI的优点以及如何将其连接到现有的和原有的系统中 以及与用Java 编写的组件的连接       RMI为采用Java对象的分布式计算提供了简单而直接的途径 这些对象可以是新的Java对象 也可以是围绕现有API的简单的Java包装程序 Java体现了 编写一次就能在任何地方运行的模式 而RMI可将Java模式进行扩展 使之可在任何地方运行       因为RMI是以Java为核心的 所以 它将Java的安全性和可移植性等强大功能带给了分布式计算 您可将代理和梢?务逻辑等属性移动到网络中最合适的地方 如果您要扩展Java在系统中的使用 RMI将使您充分利用其强大功能       RMI可利用标准Java本机方法接口JNI与现有的和原有的系统相连接 RMI还可利用标准JDBC包与现有的关系数据库连接 RMI/JNI和RMI/JDBC相结合 可帮助您利用RMI与目前使用非Java语言的现有服务器进行通信 而且在您需要时可扩展Java在这些服务器上的使用 RMI可帮助您在扩展使用时充分利用Java的强大功能     优点       从最基本的角度看 RMI是Java的远程过程调用(RPC)机制 与传统的RPC系统相比 RMI具有若干优点 因为它是Java面向对象方法的一部分 传统的RPC系统采用中性语言 所以是最普通的系统 它们不能提供所有可能的目标平台所具有的功能       RMI以Java为核心 可与采用本机方法与现有系统相连接 这就是说 RMI可采用自然 直接和功能全面的方式为您提供分布式计算技术 而这种技术可帮助您以不断递增和无缝的方式为整个系统添加Java功能     RMI的主要优点如下      面向对象 RMI可将完整的对象作为参数和返回值进行传递 而不仅仅是预定义的数据类型 也就是说 您可以将类似Java哈希表这样的复杂类型作为一个参数进行传递 而在目前的RPC系统中 您只能依靠客户机将此类对象分解成基本数据类型 然后传递这些数据类型 最后在服务器端重新创建哈希表 RMI则不需额外的客户程序代码(将对象分解成基本数据类型) 直接跨网传递对象    可移动属性 RMI可将属性(类实现程序)从客户机移动到服务器 或者从服务器移到客户机 例如 您可以定义一个检查雇员开支报告的接口 以便察看雇员是否遵守了公司目前实行的政策 在开支报告创建后 客户机就会从服务器端获得实现该接口的对象 如果政策发生变化 服务器端就会开始返回使用了新政策的该接口的另一个实现程序 您不必在用户系统上安装任何新的软件就能在客户端检查限制条件 从而向用户提供烁?快的反馈 并降低服务器的工作量 这样就能具备最大的灵活性 因为政策改变时只需要您编写一个新的Java类 并将其在服务器主机上安装一次即可    设计方式 对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能 如二层和三层结构系统 如果您能够传递属性 那么您就可以在您的解决方案中使用面向对象的设计方式 所有面向对象的设计方式无不依靠不同的属性来发挥功能 如果不能传递完整的对象 包括实现和类型 就会失去设计方式上所提供的优点    安  全 RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全 RMI使用专门为保护系统免遭恶意小应用程序侵害而设计的安全管理程序 可保护您的系统和网络免遭潜在的恶意下载程序的破坏 在情况严重时 服务器可拒绝下载任何执行程序   便于编写和使用 RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松 简单 远程接口实际上就是Java接口 服务程序大约用三行指令宣布本身是服务程序 其它方面则与任何其它Java对象类似 这种简单方法便于快速编写完整的分布式对象系统的服务程序 并快速地制做软件的原型和早期版本 以便于进行测试和评估 因为RMI程序编写简单 所以维护也简单    可连接现有/原有的系统 RMI可通过Java的本机方法接口JNI与现有系统进行进行交互 利用RMI和JNI 您就能用Java语言编写客户端程序 还能使用现有的服务器端程序 在使用RMI/JNI与现有服务器连接时 您可以有选择地用Java重新编写服务程序的任何部分 并使新的程序充分发挥Java的功能 类似地 RMI可利用JDBC 在不修改使用数据库的现有非Java源代码的前提下与现有关系数据库进行交互    编写一次 到处运行 RMI是Java 编写一次 到处运行 方法的一部分 任何基于RMI的系统均可 %地移植到任何Java虚拟机上 RMI/JDBC系统也不例外 如果使用RMI/JNI与现有系统进行交互工作 则采用JNI编写的代码可与任何Java虚拟机进行编译 运行    分布式垃圾收集 RMI采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象 与Java 虚拟机内部的垃圾收集类似 分布式垃圾收集功能允许用户根据自己的需要定义服务器对象 并且明确这些对象在不再被客户机引用时会被删除    并行计算 RMI采用多线程处理方法 可使您的服务器利用这些Java线程更好地并行处理客户端的请求 Java分布式计算解决方案 RMI从JDK 开始就是Java平台的核心部分 因此 它存在于任何一台 Java虚拟机中 所有RMI系统均采用相同的公开协议 所以 所有Java 系统均可直接相互对话 而不必事先对协议进行转换    lishixinzhi/Article/program/Java/hx/201311/26469

java的远程调试是基于什么协议

可以是http协议,和socket协议

中间件有多种类型,Java的RMI FJB 属于()中间件。

【答案】:B通常将中间件分为数据库访问中间件、远程过程 调用中间件、面向消息中间件、事务中间件、分布式对象中间件等。(1)数据库访问中间件:通过一个抽象层访问数据库,从而允许使用相同或相似的 代码访问不同的数据库资源。典型技术如Windows平台的ODBC和Java平台的JDBC等。(2)远程过程调用中间件(Remote Procedure Call,RPC):是一种分布式应用程序 的处理方法。一个应用程序可以使用RPC来“远程”执行一个位于不同地址空间内的过 程,从效果上看和执行本地调用相同。一个RPC应用分为服务器和客户两个部分。服务器提供一个或多个远程操作过程; 客户向服务器发出远程调用。服务器和客户可以位于同一台计算机,也可以位于不同的 计算机,甚至可以运行在不同的操作系统之上。客户和服务器之间的网络通讯和数据转 换通过代理程序(Stub与Skeleton)完成,从而屏蔽了不同的操作系统和网络协议。(3)面向消息中间件(Message-OrientedMiddleware,MOM):利用高效可靠的消息 传递机制进行平台无关的数据传递,并可基于数据通信进行分布系统的集成。通过提供 消息传递和消息队列模型,可在分布环境下扩展进程间的通信,并支持多种通讯协议、 语言、应用程序、硬件和软件平台。典型产品如IBM的MQSeries。(4)分布式对象中间件:是建立对象之间客户/服务器关系的中间件,结合了对象技 术与分布式计算技术。该技术提供了一个通信框:架,可以在异构分布计算环境中透明_ 传递对象请求。典型产品如OMG的CORBA、Java的RMI/FJB、Microsoft的DCOM[等。(5)事务中间件:也称事务处理监控器(Transaction Processing Monitor, TPM),提供特大规模事务处理的可靠运行环境。TPM位于客户和服务器之间,完成事务管理与 调、负载平衡、失效恢复等任务,以提高系统的整体性能。典型产品如IBM/BEA的 Tuxedo结合对象技术的对象事务监控器(object Transaction Monitor, OTM)如支持 EJB的JavaEE应用服务器等。

java RMI问题

你先PING一下172.30.34.59这台电脑吧,你们连接都没有通啊

通过Java RMI的定时GC触发,JVM垃圾回收就无法自动触发FULL GC了吗

除直接调用System.gc外,触发FullGC执行的情况有如下四种。1.旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行FullGC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError:Javaheapspace为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在MinorGC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。2.PermanetGeneration空间满PermanetGeneration中存放的为一些class的信息等,当系统中要加载的类、反射的类和调用的方法较多时,PermanetGeneration可能会被占满,在未配置为采用CMSGC的情况下会执行FullGC。如果经过FullGC仍然回收不了,那么JVM会抛出如下错误信息:java.lang.OutOfMemoryError:PermGenspace为避免PermGen占满造成FullGC现象,可采用的方法为增大PermGen空间或转为使用CMSGC。3.CMSGC时出现promotionfailed和concurrentmodefailure对于采用CMS进行旧生代GC的程序而言,尤其要注意GC日志中是否有promotionfailed和concurrentmodefailure两种状况,当这两种状况出现时可能会触发FullGC。promotionfailed是在进行MinorGC时,survivorspace放不下、对象只能放入旧生代,而此时旧生代也放不下造成的;concurrentmodefailure是在执行CMSGC的过程中同时有对象要放入旧生代,而此时旧生代空间不足造成的。应对措施为:增大survivorspace、旧生代空间或调低触发并发GC的比率,但在JDK5.0+、6.0+的版本中有可能会由于JDK的bug29导致CMS在remark完毕后很久才触发sweeping动作。对于这种状况,可通过设置-XX:CMSMaxAbortablePrecleanTime=5(单位为ms)来避免。4.统计得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间这是一个较为复杂的触发情况,Hotspot为了避免由于新生代对象晋升到旧生代导致旧生代空间不足的现象,在进行MinorGC时,做了一个判断,如果之前统计所得到的MinorGC晋升到旧生代的平均大小大于旧生代的剩余空间,那么就直接触发FullGC。例如程序第一次触发MinorGC后,有6MB的对象晋升到旧生代,那么当下一次MinorGC发生时,首先检查旧生代的剩余空间是否大于6MB,如果小于6MB,则执行FullGC。当新生代采用PSGC时,方式稍有不同,PSGC是在MinorGC后也会检查,例如上面的例子中第一次MinorGC后,PSGC会检查此时旧生代的剩余空间是否大于6MB,如小于,则触发对旧生代的回收。除了以上4种状况外,对于使用RMI来进行RPC或管理的SunJDK应用而言,默认情况下会一小时执行一次FullGC。可通过在启动时通过-java-Dsun.rmi.dgc.client.gcInterval=3600000来设置FullGC执行的间隔时间或通过-XX:+DisableExplicitGC来禁止RMI调用System.gc。

java RMI是什么意思啊?

这种问题就自己百度了吧!

RMI是干什么用的在JAVA里面

RMI是J2EE的网络机制,允许你编写分布式对象,使得对象的通信范围能够在内存中,跨Java虚拟机,跨物理设备 RMI-IIOP遵循了接口和实现的原则。你写的所有网络代码都是应用于接口,而不是实现。实际上,你必须使用RMI-IIOP中的范例,没有其它的选择。直接在你的对象实现上执行远程调用是不可能的,你只能在对象类的接口上单独进行这一操作。 所以我们在使用RMI-IIOP时,你必须建立一个客户接口,叫做remote interface。这个远程接口应该扩展java.rmi.Remote接口。 RMI应用程序通常包括两个独立的程序:服务器程序和客户机程序。典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。而典型的客户机程序则从服务器中得到一个或多个远程对象的引用,然后调用远程对象的方法。RMI为服务器和客户机进行通信和信息传递提供了一种机制。 在与远程对象的通信过程中,RMI使用标准机制:stub和skeleton。远程对象的stub担当远程对象的客户本地代表或代理人角色。调用程序将调用本地stub的方法,而本地stub将负责执行对远程对象的方法调用。在RMI中,远程对象的stub与该远程对象所实现的远程接口集相同。调用stub的方法时将执行下列操作:(1) 初始化与包含远程对象的远程虚拟机的连接;(2) 对远程虚拟机的参数进行编组(写入并传输);(3) 等待方法调用结果;(4) 解编(读取)返回值或返回的异常;(5) 将值返回给调用程序。为了向调用程序展示比较简单的调用机制,stub将参数的序列化和网络级通信等细节隐藏了起来。在远程虚拟机中,每个远程对象都可以有相应的skeleton(在JDK1.2环境中无需使用skeleton)。Skeleton负责将调用分配给实际的远程对象实现。它在接收方法调用时执行下列操作:(1) 解编(读取)远程方法的参数;(2) 调用实际远程对象实现上的方法;(3) 将结果(返回值或异常)编组(写入并传输)给调用程序。stub和skeleton由rmic编译器生成。

Java Mina通讯框架中,假如我的通讯协议里传的是:十六进制的数据,编码解码的时候用哪种方式?

自己写个解码器好了实现一个 ProtocolCodecFactory 这个可以网上查解码继承 CumulativeProtocolDecoder 我用byte方式传送 接收的是 mina的 IoBuffer 用以下函数 转成 byte 数组 public static byte [] ioBufferToByte(Object message) { if (!(message instanceof IoBuffer)) { return null; } IoBuffer ioBuffer = (IoBuffer)message; ioBuffer.flip(); byte[] readByte = new byte[ioBuffer.limit()]; try { ioBuffer.get(readByte); } catch (Exception e) { System.out.println(e.toString()); } return readByte; }在解码器里 private IoBuffer buff = IoBuffer.allocate(300).setAutoExpand(true); while (in.hasRemaining()) { byte b = in.get(); buff.put(b); } byte[] tmpByteArr = Utils.ioBufferToByte(buff); //将所有IoBuffer数据转为byte数组

JAVA是做什么用的?

是一种编程语言具体什么 你自己查吧

java和点net是干什么的?

就业很好..是一款编程语言

Java:读了好多个项目的代码,总是出现这handle那handle的,handle在开发中到底指什么模块啊?

句柄什么的,理解为接口好了

安卓开发,java线程报错的问题,handler空指针

class Test extends Activity{ private Handler mhandler = new Handler(){ public void handleMessage(Message msg){ }};

如何在前台用javascript控制控件的visible属性?

<html> <body> <script type="text/javascript"> function hidetable(){ var table = document.getElementById("mytable"); if(table.style.display=="none"){ table.style.display="block"; }else{ table.style.display="none"; } } </script> <table style="display:block" width=200 height=100 border=1 id="mytable"> <tr> <td>afew</td> <td>fawef</td> </tr> <tr> <td>afew</td> <td>fawef</td> </tr> </table> <br> <input type="button" value="table" onclick="hidetable()" /> </body></html>

javascript中 visibility和display的区别

区别:1、占用域的空间不同。visibility要占用域的空间,而display则不占用。visibility和display都可以实现对页的隐藏,例如:将元素display属性设为 block,会在该元素后换行。将元素display属性设为 inline,会消除元素换行。将元素display属性设为 none,隐藏该元素内容,且不占用域的空间。将元素visibility属性设为 hidden,隐藏该元素内容,但占用域的空间。将元素visibility属性设为 visible,显示元素内容。2、回应正常文档流的不同。如果你想隐藏某元素,但在页面上保留该元素的空间的话,你应该使用visibility:hidden 。如果你想在隐藏某元素的同时让其它内容填充空白的话应该使用display:none 。在现实中我发现人们更多的倾向于使用display 属性(相信这也是大多数人的习惯)。当你决定用display:none 来隐藏一个元素时,你必须知道其它内容将填充到该元素留下的空白位置,从而改变页面的布局。扩展资料在SEO中有时我们会通过把堆砌的关键词隐藏而达到作弊的目的,但不应该使用visibility:hidden 和display:none ,而应该把关键词颜色设为和背景色相同,或者把关键词的字号设为非常小,而令访客无法发现。有的人则因为害怕搜索蜘蛛的的反感而为visibility:hidden 和display:none 的使用的烦恼。其实有很多漂亮的效果是通过元素可见性的转换而实现的。搜索引擎也理解这一做法(事实上搜索引擎往往忽略CSS),因此如果你的目的不是欺骗搜索引擎,你大可以放心地使用visibility:hidden 和display:none 去隐藏内容。参考资料:百度百科-Visibility

java UAP开发透视图中git怎么拉取代码

把nginx和php作为两个容器,代码另外放在volume,分别供php和nginx两者挂载好处:代码更新灵活坏处:感觉这作为一个服务来说很“山寨”(可以和Java/NodeJS的服务类比一下);另外,如果你用到了composer,依赖部分无法在制作镜像中过程中自动化安装把nginx作为一个容器,php和代码放在另一个容器,但其中代码目录也需要供nginx挂载好处:相比1,可以把composer放入PHP容器中,制作镜像时帮你安装依赖坏处:作为服务依然很“山寨”把nginx、php和代码全放入同一个容器好处:更符合微服务的定义,整体对外构成一个服务;nginx和php之间可以直接用unix socket通信坏处:除了灵活性之外,不太符合Docker官方一个容器只跑一个服务的建议

java问题

你可以运行下我这个代码,对照一下你的,你就能看明白了。public static void main(String[] args) { // TODO Auto-generated method stub StringBuffer a = new StringBuffer("Ac"); StringBuffer b = new StringBuffer ("B"); operate (a,b); System.out.println(a); System.out.println(b); System.out.println(a + "," +b); } static void operate(StringBuffer x, StringBuffer y) { x=y; x.append(y); // y = x; // y.append("A"); } append的语法你可以现查一下。这题的主要原因就是X=Y是Y把地址付给X。这时在执行x.append(y);的结果就是B+B。明白了吗,变量付的是地址不是值传递。你可以上网搜搜值传递与地址传递。还有分析问题的方法有很多种,来回转换就能看出问题原因。希望对你有用。

java中的operate(x); 是个是么样的函数,功能是什么,在哪里可以连接它的机制啊??

是不是在你那个类里其他地方定义的啊?代码给全点看看

用JAVA写出combination的算法: 在A,B,C,D,E中选出3个,列出所有可能的数组

// 直接贴代码了public class Java196100137 { public static void main(String args[]) { new Java196100137().combination(new String[] { "A", "B", "C", "D" }, 3); } /** * * @param a记录组合序列数组 * @param n总数 * @param r选取的个数 * @param k1数组坐标 * (初始传入0) * @param k2辅助参数 * (初始传入0) */ public void combination(int record[], String info[], int n, int r, int k1, int k2) { if (k1 == r) { // 输出当前序列 for (int i = 0; i < r; ++i) System.out.print(info[record[i] - 1] + " "); System.out.println(); } else for (int i = k2; i < n; ++i) { record[k1] = i + 1; // 子序列赋值 combination(record, info, n, r, k1 + 1, i + 1); // 递归回溯 } } /** * * @param a记录组合序列数组 * @param n总数 * @param r选取的个数 */ public void combination(String info[], int r) { int record[] = new int[r]; int n = info.length; combination(record, info, n, r, 0, 0); }}// 你看看,还有没有什么疑问?

java中实现换行有几种方法?

java中实现换行有以下几种方法:x0dx0a1.使用java中的转义符" ": x0dx0aString str="aaa"; x0dx0astr+=" "; x0dx0a这样在str后面就有换行了. x0dx0a注意: , 的顺序是不能够对换的,否则不能实现换行的效果. x0dx0a2.BufferedWriter的newline()方法: x0dx0aFileOutputStream fos=new FileOutputStream("c;\11.txt"); x0dx0aBufferedWriter bw=new BufferedWriter(fos); x0dx0abw.write("你好"); x0dx0abw.newline(); x0dx0abw.write("java"); x0dx0aw.newline(); x0dx0a3.使用System.getProperty()方法: x0dx0aString str = "aaa"+System.getProperty("line.separator"); x0dx0a附:针对常用的系统,可以使用如下的转义符实现换行: x0dx0awindows下的文本文件换行符: x0dx0alinux/unix下的文本文件换行符: x0dx0aMac下的文本文件换行符:

java中实现换行的几种方法

1.使用java中的转义符" ": Java代码

Java的流中为什么BufferedReader要写入一个newLine()才能换行

流.read方法是按字节读取,只判断有没有读取到数据,不管内容的,所以换行符也会被读出来而BufferedReader.readLine是按行读取的,即从当前位置一直读取数据,直到遇到换行符,然后去掉换行符,返回读取到的数据

Java字符流中newline(),与write(" ")的功能是不是一样?"

不一定相同,由于Java是跨平台的,而IO流是依赖底层系统的。不同的系统的换行符是不一样的,所以newline()输出什么字符决定于Java程序运行在哪个系统上。newline()能够保证跨平台性,直接用write写死,失去了跨平台性。

java中*.newLine是什么方法

建议你看一下java api

java高手:bufferedWriter的bw.newline();bw.flush();问题

你的BW是什么东西.最好把完整的代码贴上来

newLine()在JAVA中是什么意思~

追加一个行分隔符,也就是换行

有没有java进程kill(或者Terminate)掉之后,然后执行的方法吗?请大神指点 如果能解决我的问题50分送上

可以用Future future=executorServer.submit(new callable(){...})//提交线程。future.cancle();//取消线程executeServer.submit(new callable(){...})//再次执行线程

Java eclipse 上terminate显示红色什么意思?

Eclipse中tomcat service设置选择window ----show view---services可以看到服务的面板双击tomcat进入配置界面Service Locations(Specify the server path (i.e. catalina.base) and deploy path. Server must be published with no modules present to make changes.)选项变灰色无法更改配置。若要更改,则先把tomcat下的所有项目移除。并右击,clean...之后方可设置。。。启动后将又变为黑色。默认选项为:Use workspace metadata(dose not modify Tomcat installation)修改选项为:Use Tomcat installation(takes control of Tomcat installation)这样在Eclipse启动了tomcat服务器,我们也能够访问到tomcat本地管理首页。否则只能在DOS下使用Tomcat的启动命令才能访问Tomcat本地管理首页。

江苏省计算机二级报VB、VBF、C语言、C++、Java中哪一个比较容易点?我是学自动化的,哪个更适合我!谢啦~

java最简单,如果有c语言基础更简单vb也挺简单的至于哪个比较适合你的专业,在下没研究过,你学的是办公自动化还是其他的什么自动化?办公自动化的话建议学VB其他什么自动化如果有接口及汇编,你恐怕得学学那个(我学了,感觉很恐怖,现在想起来还颤 - -. 根本听不懂)

javascript转c#怎么办

你是说把C#可以使用js方法,或者说是把js的方法转成C#的方法么?首先你要新建一个js,把js方法拷贝过来然后利用.net自带的编译程序。给你举个例子,加入我C盘下有个文件,内容是public class JS{ public static function Test(a) { return a+1; }}然后选择开始->程序->Visiual Stdio->Visiual Stdio Tool->命令提示符工具然后输入(以我的为例)C:Program FilesMicrosoft Visual Studio 10.0VC> jsc /t:library c:js.js这句就是把C盘下的js.js编译成.net的dll,生成的目录在(以我的为例)C:Program FilesMicrosoft Visual Studio 10.0VC下面。你在程序里引用一下该dll,同时引用一下MicroSoft.JScript。然后在程序里,你应该可以有这样一个方法JS.Test(object a),传一个参数进去,就能返回 结果。记住:1,JS的方法外面必须包含(public class JS)类,这个JS你随便取。2,JS的所有方法前面必须加入public static,否则引用不到
 首页 上一页  29 30 31 32 33 34 35 36 37 38 39  下一页  尾页