JIT 编译(Just-In-Time Compilation)介绍

2025-4-15 diaba Java

JIT 编译 是 Java 虚拟机(JVM)的一项关键技术,用于在运行时将 Java 字节码(JVM 的中间表示)动态编译为本地机器码。这种编译方式可以在运行时优化代码性能,同时减少解释执行的开销。 背景 Java 是一种编译型和解释型相结合的语言。Java 源代码首先被编译为字节码(.class 文件),然后由 JVM 在运行时解释执行。虽然字节码的可移植性强,但解释执行的性能相对较低。为了提高性能,JVM 引入了 JIT 编译器,它会在运行时将热点代码(频繁执行的代码)编译为本地机器码,从而提高执行效率。 JIT 编译的工作原理 ...

阅读全文>>

标签: jdk性能优化

评论(0) 浏览(366)

RateLimiter代码中写限流

2025-2-22 diaba Java

RateLimiter 是 Guava 工具包中用于控制操作频率的工具,它基于令牌桶算法实现,能够限制代码的执行速率。以下是 RateLimiter 的使用方法和一些高级特性: 基本使用 RateLimiter 通过 RateLimiter.create(double permitsPerSecond) 方法创建,其中 permitsPerSecond 表示每秒允许的令牌数量。例如,创建一个每秒允许 2 个请求的 RateLimiter: RateLimiter rateLimiter = RateLimiter.create(2.0); ...

阅读全文>>

标签: 限流

评论(0) 浏览(470)

Java位运算符

2022-3-3 diaba Java

Java位运算符有: 左移( << ) 右移( >> ) 无符号右移( >>> ) 位与( & ) 位或( | ) 位非( ~ ) 位异或( ^ ) 除了位非( ~ )是一元操作符外,其它的都是二元操作符 交换两个不等的数方法: //交换两个不相等的数,可以使用「位异或」 a=5; b=6; 通过如下代码: a=a^b; b=a^b; a=a^b; 变为: a==6; b==5; 【注意】如果两个数相等,经过如下代码会得到0 由位运算操作符衍生而来的有: ...

阅读全文>>

评论(0) 浏览(1365)

Base64编码与解码

2018-8-28 diaba Java

final BASE64Encoder encoder = new BASE64Encoder(); final BASE64Decoder decoder = new BASE64Decoder(); final String text = "字串文字"; final byte[] textByte = text.getBytes("UTF-8"); //编码 final String encodedText = encoder.encode(textByte); System.out.println(encodedText); //解码 System.out.println...

阅读全文>>

评论(0) 浏览(3116)

Javassist分析、编辑和创建java字节码类库

2016-9-8 diaba Java

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。 关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解虚拟机指令,可以采用javassist。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生...

阅读全文>>

标签: Javassist

评论(1) 浏览(4302)

Java-监听文件系统增删改

2016-6-28 diaba Java

JNotify库支持Windows,Linux和MacOS,允许我们监视一个文件夹,当这个文件夹下的文件被增删改时,发起回调通知。 public void addWatcher(String hangqingFolder, String hangqingFile) throws Exception { // watch mask, specify events you care about, // or JNotify.FILE_ANY for all events. int mask = /...

阅读全文>>

标签: 文件监听

评论(0) 浏览(3457)

按位操作的使用场景

2016-4-22 diaba Java

    此次开发系统过程遇到一个问题,开始用一个字段用来标识是否做某件事儿,系统已经上线,发现需要记录是否的需求增加了2个,那么没有额外的字段,怎么办?     针对此问题,设计了一个方案,利用按位操作符来满足此需求:         该字段原来取值0/1,表示没做/已做         现在设计该字段取值为三位二进制对应的十进制: 二进制(想象...

阅读全文>>

标签: 按位操作

评论(0) 浏览(3326)

AES加密算法在linux下相同输入每次加密结果都不同的问题

2016-3-15 diaba Java

现象描述: 在 windows 操作系统下加解密正常,但部署到 linux 环境中相同的输入加密结果不正确,并且每次运行返回的结果都不同。 修改后的代码:            KeyGenerator kgen = KeyGenerator.getInstance("AES");            //需手动指定 ...

阅读全文>>

标签: aes

评论(0) 浏览(5632)

JVM内存区域的划分

2016-1-20 diaba Java

    java程序通过JVM(java虚拟机)来执行的,JVM包含:加载字节码的Class Loader、执行java程序的执行引擎、存储程序执行过程中用到的数据和相关信息的运行时数据区。     平时说的java内存管理就是对运行时数据区的管理,包含分配和回收内存空间。下面详细说明运行时数据区的区域划分。     运行时数据区包含:程序计数器、方法区、java堆、java栈、本地方法栈。     1.程序计数器 程序计数...

阅读全文>>

标签: jvm结构

评论(0) 浏览(3324)

Java文件压缩操作

2016-1-5 diaba Java

原文:http://hello-nick-xu.iteye.com/blog/2002613      在web开发过程中,进行文件的压缩传输是一种常见的需求。比如一种场景:用户需要下载定时生成的报表,我们需要先对报表文件进行压以方便用户的下载,并减少文件的存储空间。      事实上,JDK已经提供了文件压缩/解压缩的支持,可以生成zip/gzip的压缩格式,并且支持支持“校验和”以检查压缩文件的完整性。通常会使用CRC(循环冗余校验)算法进行校验。      遗憾的是,JDK...

阅读全文>>

标签: java文件压缩

评论(0) 浏览(3995)

Java加密解密下篇【包括MD5、BASE64、DES、RSA等算法】

2016-1-5 diaba Java

原文:http://hello-nick-xu.iteye.com/blog/2103781 在上一篇博客中已经简要的介绍了MD5、BASE64、DES、RSA等算法在Java中的具体应用。现在可以考虑对这些代码封装成一个工具类EncryptUtil,然后再补充一下Commons Codec对BASE64的扩展支持!   <一>. EncryptUtil工具类:  1. 使用commons-logging记录异常日志。  2. 提取常量字段、公共字段。  3...

阅读全文>>

标签: 加密 解密

评论(0) 浏览(3871)

Java加密解密上篇【包括MD5、BASE64、DES、RSA等算法】

2016-1-5 diaba Java

原文 http://hello-nick-xu.iteye.com/blog/2103775  搞Java的攻城狮应该比较欣喜若狂的,不仅Sun公司的JDK提供了庞大的类库,而且还有众多的开源组织和个人不断地丰富着Java的生态系统。没错的,诸如MD5、BASE64、DES、RSA等经典加密解密算法,JDK都有提供专门的API来封装相关操作。程序猿只需要了解算法的思想,以及学习如何使用API即可。当然,针对BASE64算法,JDK仅仅提供了非常标准的实现,在某些场景下无法满足应用需求。在最后一部分,将学习Apache提供的Commons C...

阅读全文>>

标签: 加密 解密

评论(0) 浏览(3554)

通过JSON传输数据时多转义字符

2015-11-1 diaba Java

       json实现了跨系统、跨语言、跨平台、跨地域的数据传输,方便,快捷。        近来在使用它时遇到一种问题,在java中组织数据,通过json格式发送,使用数据的用户发现,接收的数据在双引号处出现转义字符'\',格式如下: {"status":400,"message":"请求的参数错误,请校验后重试。","data":"[{\"fail_bond\":\"3KFC101001\"},{\"fail_bond\":\"3KFC101002\"},{\"fail_bo...

阅读全文>>

标签: 转义字符 json 格式错误

评论(0) 浏览(4665)

eclipse跑成功&java -jar不成功问题解决方案

2015-9-17 diaba Java

    在开发过程中,经常会遇到eclipse中成功执行,但是打包成jar后执行,不成功,那么这种情况基本上是依赖的包问题,具体差别在哪里,可以通过以下方式知道eclipse中执行的命令:     1.在eclipse中设置断点;     2.执行main方法,目前执行到断点处,没有退出程序;     3.在终端执行ps aux | grep java,查看当前机器上的java进程     4.可以看到在eclipse中执行程序实际执行的java命...

阅读全文>>

评论(0) 浏览(3013)

Powered by emlog 京ICP备15045175号-1 Copyright © 2022