Ⅰ java中资源是什么资源文件又是什么,谁能举个例子简单的例子。谢谢了
Java中除了.java和.class以外的文件都可以称作是资源,一般放在resource文件夹下面。
资源文件有很多种,常见的有.properties文件,.xml文件,其他还有.json等等
Ⅱ 探讨如何保护 Java 应用程序图像资源
试想,如果这些图像文件是重要的版权标志,那么后果肯定是应用程序开发者不希望看到的。因此,有必要采用一些措施将这些图像文件保护起来。”文中作者使用了图像构造方法:
Image img=Toolkit.getDefaultToolkit().createImage(byte[] map); 只需要将图像文件转换成 Java 源程序的一个字节数组类型的常量,嵌入源程序,然后直接构造出 img 对象即可实现源程序中内嵌图像资源以达到保护图象文件。 这不失为一种好的、可行的方法。我在此想说的是另一种方法。使用 javax.swing.ImageIcon 类。ImageIcon 类是一个可序列化的类。我们可使用,ObjectInputStream,ObjectOutputStream 类。将图象文件用 writeObject(Object obj) 方法保存为一文件以达到保护图象文件。主要程序代码:ImageIcon icon = new ImageIcon(".jpg"); ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("image.img")); out.writeObject(icon); 然后,再用 readObject() 方法造型为 ImageIcon。主要程序代码:ObjectInputStream out=new ObjectInputStream(new FileInputStream("image.img")); icon=(ImageIcon)out.readObject(); 再用其他对象的方法显示图像即可。如:
public void paint(Graphics g){
g.drawImage(icon.getImage(),0,0,350,263,this); } 另外,你还可以用类似的方法给你的图象文件使用 zip 类进行文件压缩。可使文件更具有保密性。主要程序代码: ImageIcon icon = new ImageIcon(".jpg"); ObjectOutputStream out=new ObjectOutputStream(new GZIPOutputStream( new FileOutputStream("image.img"))); out.writeObject(icon); 解压代码:
icon=(ImageIcon)out.readObject(); 如果在一应用程序中,有多个重要图象文件,可以使用 ImageIcon 数组或者 java.util.List 类,再使用上面的方法。当然也可以一个一个地保存为 *.img 文件。再反序列化还原。关于作者张大志,男,从事网页设计,网络程序开发。现在珠海一公司工作。我很喜欢java,研究JAVA程序设计有几年的时间,通过了SUN公司的SCJP认证,一直关注着java的发展。我的email: [email protected]欢迎大家和我多多交流。 关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首
Ⅲ java程序读取资源文件时路径如何指定
(1)、request.getRealPath("/");//不推荐使用获取工程的根路径
(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用
(4)、 this.getClass().getClassLoader().getResource("").getPath();//获取工程classes 下的路径,这个方法可以在任意jsp,servlet,java文件中使用,因为不管是jsp,servlet其实都是java程序,都是一个 class。所以它应该是一个通用的方法。
0、关于绝对路径和相对路径
1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例 如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对路径:相对与某个基 准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例 如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。另外关于URI,URL,URN等内容,请参考RFC相关文档标准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.关于JSP/Servlet中的相对路径和绝对路径。 2.1服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对 地址,他们是由客户端浏览器解析的)
1、request.getRealPath
方法:request.getRealPath("/")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\
方法:request.getRealPath(".")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\.
方法:request.getRealPath("")
得到的路径:C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest
request.getRealPath("web.xml")
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\web.xml
2、request.getParameter("");
ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");
得到的路径:D:\VSS安装目录\users.txt
方法:String filepath = ActionForm.getMyFile();
得到的路径:D:\VSS安装目录\users.txt
--------------------------------------------------
strutsTest 为工程名
myFile 在ActionForm中,为private String myFile;
在jsp页面中:为<html:file property="myFile"></html:file>
Ⅳ java资源文件是什么啊,今天学到程序的国际化,说是把要输出的字符串定义在资源文件中,怎么定义呢
所谓资源文件就是*.properties啊,把需要国际化的输出字符串都弄成键值对存放在properties中,每种语言一个配置文件,键相同,值就是各种语言的翻译;国际化的时候读取不同的配置文件就OK了:Properties p=new Properties();
p.load(new FileInputStream(new File(String FileName)));p.getProperty(String key)。
Ⅳ java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢
当类第一次被调用时加载(静态方法,静态属性的加载就是类加载) 。
1、类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。
2、当第一次使用类时,JVM会通过类加载器,加载类对象,从而初始化静态属性,并装入类的方法,包括静态方法和实例方法(方法不会被调用,只是加载,从这个意义上来说,静态方法和实例方法是类似的)。
3、当创建类的实例对象时,JVM会调用类的构造器,从而初始化类的属性。
(5)java程序资源扩展阅读:
类(包括静态方法、属性)加载过程:
一、加载。
根据一个类的全限定名(如cn.e.h.test.HelloWorld.class)来读取此类的二进制字节流到JVM内部。
将字节流所代表的静态存储结构转换为方法区的运行时数据结构(hotspot选择将Class对象存储在方法区中,Java虚拟机规范并没有明确要求一定要存储在方法区或堆区中)转换为一个与目标类型对应的java.lang.Class对象。
二、连接。
1、验证。
验证阶段主要包括四个检验过程:文件格式验证、元数据验证、字节码验证和符号引用验证;
2、准备。
为类中的所有静态变量分配内存空间,并为其设置一个初始值(由于还没有产生对象,实例变量将不再此操作范围内);
3、解析。
将常量池中所有的符号引用转为直接引用(得到类或者字段、方法在内存中的指针或者偏移量,以便直接调用该方法)。这个阶段可以在初始化之后再执行。
Ⅵ java程序资源占用问题
我觉得你的代码没法优化了,建议你用JAVA的定时器来做,这样比较理想,看代码:
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Cont
{
public static void main(String[] args) throws IOException,ParseException
{
Timer t = new Timer(true);
Date start_time = new Date();
SimpleDateFormat sm = new SimpleDateFormat("yyyyMMdd");//
String cur_date = sm.format(start_time)+"1800000";//格式化日期格式并且在后面加上时间为18时0分0秒
sm = new SimpleDateFormat("yyyyMMddHHmmss");//重新获取日期时间
start_time = sm.parse(cur_date);//尝试把字符串 cur_date 解释为日期和时间的表示形式,该方法已过时
t.schele(new TimerTask(){
@Override
public void run(){
try
{
Runtime.getRuntime().exec("shutdown -s -t 1");
}
catch(Exception e)
{
System.out.println("error");
}
}
},start_time,5000);//start_time是指定执行run()方法内的代码的时间
System.out.println("定时器开始");
while(true){
int c=System.in.read();
if(c=='c') {
t.cancel();
System.out.println("定时器已销毁!");
}
}
}
}
//上面这段代码会在今天下午的18点准时关机,慢慢研究吧,希望能帮到你
Ⅶ Java应用程序中如何动态的分配CPU资源
方案选择
在考虑动态分配CPU资源实施方案时,往往有以下两点要求:
1. 须充分利用现有硬件资源,在系统空闲时,让低优先级任务也能够得到系统所能给予最快响应。
2.当硬件资源超负荷运行时,虽然系统中有大规模、多数量任务不能处理,但它不应受影响,而能够顺利处理那些能够被处理、最重要高优先级任务。
多任务系统要用多线程实现最简单方法就是将线程和任务一一对应,动态调整线程优先级,利用线程调度来完成CPU资源在不同任务间动态分配。这种思路在以前使用本地化代码(Native Code),充分利用特定硬件和操作系统技巧基础上是基本可行。但在跨平台Java环境中,这个思路对仅有小规模任务数简单系统才可行,原因有以下两点:
1. Java线程虽然在编程角度(API)是与平台无关,但它运行效果却和不同操作系统平台密切相关。为了利用更多CPU资源,Java中一个线程(Thread)就对应着不同操作系统下一个真实线程。因为Java虚拟机没有实现线程调度,所以这些Java线程在不同操作系统调度下运行差异性也就比较明显。例如在Windows系统中,不仅线程优先级少于Java API参数规定十个优先级,而且微软明确反对程序员动态调整线程优先级。即使在操作系统中有足够优先权,让线程优先级参数和真实线程优先级对应,不同操作系统调度方式也会有许多不同。这最终会造成代码在不同平台上行为变得不可预测。这就很难满足复杂、大规模并发任务众多优先级需求,从而很难达到用户业务需要达到效果。
2. 由于在Java系统中,线程被包装在一个Java语言对象类—Thread中,所以为了完成Java语言对象和操作系统线程对应,Java线程系统开销还是比较大(在NT 4.0中,平均每个线程大致占用30KB内存)。因此如果让Thread对象个数和成千上万任务数同比例增长,就显然是不合理。
内容摘要:本文利用协调式多任务模型,提出一个与平台无关、并且能在任务间动态分配CPU资源方案。
综上所述,根据并发多任务大规模需求和Java平台固有特点,想要利用Java Thread对象优先级调整CPU资源分配是非常困难,所以应该尽量避免让线程和任务直接对应,也尽量避免使用操作系统线程优先级调度机制。
解决方案
根据以上分析,问题症结在于:多任务系统中任务在Java语言中对应以及任务间相互调度。
从本质上看,一个任务就是一系列对象方法调用序列,与JavaThread对象或者别类对象没有必然联系。在避免使用不同操作系统线程调度且同时Java虚拟机又没有线程调度能力情况下,要想构造一个协调式多任务系统,让各个任务相互配合就成了最直接思路。协调式多任务系统一般有以下特点:
1. 任务由消息驱动,消息响应代码完成任务逻辑处理;
2. 消息队列完成消息存储和管理,从而利用消息处理次序体现任务优先级不同;
3. 任务中耗时消息响应逻辑能够主动放弃CPU资源,让别任务执行(像Windows 3.1中Yield函数、Visual Basic中DoEvents语句)。
可能出于巧合,Java语言具有构造协调式多任务系统天然条件。Java对象方法不仅是一个函数调用,它还是一个java.lang.reflect.Method类对象。而所有对象方法都可以通过Method类invoke方法调用。如果能使每个任务所对应一系列方法全部以对象形式包装成消息,放到消息队列中,然后再按照自己优先级算法将队列中消息取出,执行其Method对象invoke调用,那么一个基本协调式多任务系统就形成了。其中,任务优先级和线程优先级没有绑定关系。该系统主体调度函数可以设置成一个“死循环”,按照需要优先级算法处理消息队列。对于有多重循环、外设等待等耗时操作消息响应函数,可以在响应函数内部递归调用主体调度函数,这一次调用把原来“死循环”改成在消息队列长度减少到一定程度(或者为空)后退出。退出后,函数返回,执行刚才没有完成消息响应逻辑,这样就非常自然地实现了协调式系统中任务主动放弃CPU资源要求。
Ⅷ 求《java程序员修炼之道》全文免费下载百度网盘资源,谢谢~
《java程序员修炼之道》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1rn1vtYVv6-Dx4sW2ozRlJw
Ⅸ 求《实战Java高并发程序设计》全文免费下载百度网盘资源,谢谢~
《实战Java高并发程序设计》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1ehUuChYRFfDDmSanPkM61w