【java字节码】教程文章相关的互联网学习教程文章

Java字节码指令简介【图】

Java虚拟机采用基于栈的架构,其指令由操作码和操作数组成。操作码:一个字节长度(0~255),意味着指令集的操作码个数不能操作256条。 操作数:一条指令可以有零或者多个操作数,且操作数可以是1个或者多个字节。编译后的代码没有采用操作数长度对齐方式,当处理超出一个字节的数据时,不得不在运行时从字节中重建出具体数据的结构,比如16位无符号整数需使用两个字节储存(假设为byte1和byte2),那么真实值是 (byte1 << 8) | byte2。...

java – FTP – 以编程方式确定剩余时间或字节传输的方式?

我想建立一个FTP连接(理想情况下使用Coldfusion 8,但Java也很好),它将文件复制到远程服务器. 然而,至关重要的是,我想知道已经传输了多少字节,因此我可以向用户提供一些反馈. 这是可能的,如果是这样,你会推荐什么样的FTP API,因为我理解Sun实现可能有点缺乏. 提前致谢! PS:我可以让另一个进程/线程通过Web服务调用在目标计算机上轮询文件大小,同时传输文件,但这并不理想.通过FTP API获取它将是最好的解决方案.解决方法:CodeRanch上...

java – getstatic在字节码中真正意味着什么?【代码】

我有这个字节码:new java.lang.Object // stack is [newObjectRef] dup // Stack is [newObjectRef newObjectRef] invokespecial void java.lang.Object.<init>() // Stack is [initializedAsTypeObjectObjectRef] putstatic java.lang.Object class.a // variable a has the reference of new object getstatic java.io.PrintStream java.lang.System.out // Take the static value ...

设置Java Deflater(和Inflater)输出字节缓冲区的大小

我需要缩小一个或多个字节数组,然后将它们扩展回正常大小.我查看了api docs中给出的示例,并找到了其他一些示例. 看完这些例子之后,我有两个问题可能是无关的,但是当我试图理解这个时,它们似乎是相互关联的. >在API文档示例中,Inflater和Deflater的输出缓冲区设置为1024字节.示例数据只是一个简短的句子,因此这是合理的.但是我怎么知道输出缓冲区有多大?或者Deflater(和Inflater)会根据需要调整输出缓冲区的大小吗?>而不是猜测缓冲...

java中常见编码所占用的字节【代码】【图】

gbk编码,中文占用2个字节,英文1个字节 utf-8编码,中文占用3个字节,英文1个字节 utf-16be 中文占2个字节,英文2个字节import java.io.UnsupportedEncodingException;public class EncodeDemo {public static void main(String[] args) throws UnsupportedEncodingException {String s = "我是ABC";//转换为字节数组byte[] bytes1 = s.getBytes();for(byte b :bytes1) {//把字节转换为16进制方式System.out.print(Integer.toHexS...

java – 从Eclipse和命令行运行时,BufferedImage字节具有不同的字节顺序【代码】

我试图将BufferedImage的byte []从32位RGBA转换为24位RGB.根据this answer,从图像中获取byte []的最快方法是:byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();所以我迭代所有字节,假设它们的顺序是R G B A,并且对于每4个字节,我在输出字节[]中写入前3个(即忽略alpha值). 从Eclipse运行并且字节转换正确时,这很好用.但是,当我从命令行运行相同的程序时,返回相同的字节顺序相同的字节! 我...

Java String到字节的转换是不同的【代码】

所有 我有一个问题,发送字节数组到服务器. 每个ID都有文本值.private String ID = "0001"; byte STX = (byte)0x02; byte A = (byte)0x41; byte NUL = (byte)0x00; byte ETX = (byte)0x03; byte CR = (byte)0x0D; byte LF = (byte)0x0A; byte[] buffer = { STX, Byte.decode(ID), A, NUL, ETX, CR, LF };我期待缓冲值buffer [02, 48, 48, 48, 49, 65, 00, 0D, 0A]但缓冲值有buffer [02, 01, 65, 00, 0D, 0A]如何转换为“0001”到[48...

Java字节码:带字节伙伴的自定义setter / getter【代码】

我正在尝试为具有字节伙伴的字段创建“自定义”setter方法.Buddy自己的机制允许非常容易地实现标准的setter / getter方法,但是,我正在寻找一种优雅的方法来扩展setter并增加一些逻辑. 为了简化示例,我们假设我们有一个类A,它有一个方法setChanged(String).目标是制作A的子类,添加具有相应访问方法的字段.问题是,我想从每个添加的setter方法调用setChanged(“fieldName”).public void setName(String name) {setChanged("name");th...

java – 如何确定列大小是以字节为单位还是列元数据中的字符?【代码】

我正在研究一些必须暂时在各种数据库(Oracle,DB2,SQLServer)中创建虚拟条目的软件.该行中的每一列都填充有随机数据. 该代码使用java中的java.sql.DataBaseMetaData类来获取COLUMN_SIZE属性,以确定在VARCHAR2和其他字符串列类型中存储的随机字符串的大小.DatabaseMetaData metadata = connection.getMetaData(); while (resultSet.next()) {ResultSet resultSet = metadata.getColumns(...);int size = resultSet.getInt("COLUMN_SI...

java – 如何覆盖文件中的某些字节?【代码】

我使用java.io.File,FileInputStream&创建了一个文件. FileOutputStream中.假设我想在不改变文件大小的情况下更改文件中某些字节的值(例如从字节15到35).我已经尝试创建一个RandomAccessFile对象,然后使用RandomAccessFile.seek移动到字节数15,写入我的新字节,然后关闭文件.该文件已更改其大小.这种方法有什么问题,如何成功完成?解决方法:你确定要向RandomAccessFile写一个字节吗?如果您正在调用该方法:file.write(35);然后它实...

java – 字节数组在JAXB类中不起作用【代码】

我试图像这样使用字节数组(JAXB类).但是,即使我传递了有效字符,我也会在msg字段中获取全0. “id”和“myid”字段被成功解析,并且字节数组字段失败.@XmlRootElement(name = "testMessage") @XmlAccessorType(XmlAccessType.FIELD) public class TestMessage {@XmlAttributeprivate Integer id;@XmlElement(name = "myid")private Long myid;@XmlElement(name = "msg")private byte[] msg; }解决方法:使用Java 1.6.0_23的JAXB,我获得...

java – HttpClient上传大文件并显示发送的字节数【代码】

我找到了这个代码示例import org.apache.http.params.CoreProtocolPNames; import org.apache.http.util.EntityUtils;public class PostFile {public static void main(String[] args) throws Exception {HttpClient httpclient = new DefaultHttpClient();httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);HttpPost httppost = new HttpPost("http://localhost:9001/upload.php"...

将java方法转换为C#:使用位移运算符将字节转换为整数【代码】

我试图将以下两种方法转换为c#而没有.net编译器向我抱怨.坦率地说,我只是不明白这两种方法是如何真正在幕后工作的.所以答案和解释在这里会很棒.public static int bytesToInt(byte b0, byte b1, byte b2, byte b3) {return (((int)b0 << 24) & 0xFF000000)| (((int)b1 << 16) & 0x00FF0000)| (((int)b2 << 8) & 0x0000FF00)| ((int)b3 & 0x000000FF); }public static byte[] charToBytes(char c) {byte[] result = new byte[2];res...

[四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式【代码】

? 原文地址:[四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式 前言简介 ? 前文已经对虚拟机进行过了简单的介绍,并且也对class文件结构,以及字节码指令进行了详尽的说明 想要了解JVM的运行机制,以及如何优化你的代码,你还需要了解一下,java编译器到底是如何编译你的代码的 本文不是从最底层的编译原理讲解 本文是针对java代码,去查看归纳总结编译器的结果行为,从而直观的感受到字节码指令集 也就是说...

java – 将字节流输出到stdout【代码】

我有以下功能,它解密base64文件并将其写入txt文件.但是,我希望它输出到stdout而不是写入文本文件.你能否建议我们如何做到这一点CipherOutputStream cos = new CipherOutputStream(os, cipher);doCopy(is, cos);}public static void doCopy(InputStream is, OutputStream os) throws IOException {byte[] bytes = new byte[64];int numBytes;while ((numBytes = is.read(bytes)) != -1) {os.write(bytes, 0, numBytes);}因此,不是os...