读Java性能权威指南(第2版)笔记03_ Java SE API技巧中

Java官方中文教程2022版:从基础到实战的权威学习指南 Java作为一门广泛应用于企业级开发、后端服务和Android应用的核心编程语言,其官方教程是构建扎实技术根基的关键资源。官方教程系统性地阐述了Java语言的核心概念,包括面向对象编程、集合框架、并发模型和JVM基础原理,这些知识构成了现代Java开发的底层支撑。从技术价值看,掌握官方教程内容不仅能帮助开发者编写高效、健壮的代码,还能深入理解Java生态中各种框架和工具的设计思想。在实际应用场景中,无论是零基础入门、知识体系升级,还是应对技术面试,官方教程都提供了权威的参考路径。特别是对于中文开发者,202 阅读详情

1. 缓冲I/O

1.1. 对于文件和套接字,压缩和字符串编码的操作,必须适当地对I/O进行缓冲

1.1.1. 两个流操作的是字节块(来自缓冲流)而不是一系列的单字节(来自ObjectOutputStream),它们会运行得更好

1.2. InputStream.read()

1.3. OutputStream.write()

1.4. 操作的是单个字符

1.5. FileInputStream.read()

1.6. FileInputStream.write()

1.7. 慢

1.8. 二进制数据的文件I/O

1.8.1. BufferedInputStream或BufferedOutputStream来包装底层的文件流

1.9. 使用字符(字符串)数据的文件I/O

1.9.1. BufferedReader或BufferedWriter来包装底层的流

1.10. ByteArrayInputStream类和ByteArrayOutputStream类

1.10.1. 用缓冲过滤流包装它们,意味着数据会被复制两次

1.10.1.1. 被复制到过滤流的缓冲区

1.10.1.2. 被复制到ByteArrayInputStream的缓冲区

1.10.1.3. 输出流也是如此

1.10.2. 在没有其他流参与的时候,应该避免缓冲I/O

1.11. GZIPOutputStream

1.11.1. 操作数据块比操作单字节数据更高效

1.12. ObjectOutputStream

1.12.1. 将单字节数据发送到下一个流

1.12.2. 下一个流是最终目的地

1.12.2.1. ByteArrayOutputStream,则无须缓冲

1.12.2.2. 中间有另一个过滤流,如GZIPOutputStream,有必要缓冲

2. 随机数

2.1. java.util.Random

2.1.1. 主要操作(nextGaussian()方法)是同步的

2.1.2. 锁上都会产生竞争

2.2. java.util.concurrent.ThreadLocalRandom

2.2.1. 当每个线程都有自己的随机数生成器时,Random类的同步就不再是问题

2.3. 伪随机算法

2.3.1. 确定性的

2.3.1.1. 并不能真正做到随机

2.3.2. 通过特定生成器查看这个数字序列,并最终算出下一个数字会是什么

2.4. java.security.SecureRandom

2.4.1. 使用一个系统接口来为其随机数据获取种子

2.4.2. 提供的数据基于真正的随机事件(如鼠标的移动)

2.4.3. 基于熵的随机性(entropy-based randomness)

2.4.3.1. 更安全

2.4.4. generateSeed()方法花费的时间无法确定,这取决于系统有多少未使用的熵

2.4.4.1. 性能本身变成了随机

2.4.4.2. 更好的解决方案是设置操作系统,使其提供更多的熵,这可以通过运行rngd守护进程来实现

2.4.5. SecureRandom类的阻塞问题可以通过修改配置来避免,但最好在操作系统层面通过给系统增加熵来解决

3. 类数据共享

3.1. Java 11

3.2. class data sharing,CDS

3.2.1. JVM之间共享类元数据的一种机制

3.2.2. 可以缩短JVM的启动时间

3.3. 只适用于从模块或JAR文件加载的类,不能共享(或加速加载)来自文件系统或网络URL的类

3.4. 常规的CDS(共享默认的JDK类)

3.5. 应用程序类数据共享

3.5.1. 可以共享任何一组类

3.6. XX:+DumpLoadedClassList=filename标志来运行你的应用程序

3.6.1. 将(在filename文件中)生成一个列表,其中包含你的应用程序已经加载的所有类

3.7. 使用这个类列表来生成共享存档

$ java -Xshare:dump -XX:SharedClassListFile=filename \
    -XX:SharedArchiveFile=myclasses.jsa \
    ……类路径参数……

3.8. 使用共享存档来运行应用程序

$ java -Xshare:auto -XX:SharedArchiveFile=myclasses.jsa ……其他参数……

3.9. 要验证类是否从共享存档加载,可以在命令行加上类加载日志(-Xlog:class+load=info)命令

4. Java原生接口

4.1. (Java Native Interface,JNI)

4.2. 想要真正快速的代码,应该使用原生代码

4.3. 编写尽可能快的代码感兴趣,应该避免使用Java原生接口

4.4. 某个应用程序是用Java编写的,那么出于性能原因调用原生代码几乎总是一个坏主意

4.4.1. JNI并不能解决性能问题

4.4.2. Java代码几乎总是比调用原生代码运行得更快

4.5. 尽可能避免从Java到C的调用

4.5.1. 从C调用回Java不会有很大的性能损失(取决于所涉及的参数)

4.5.2. 当使用JNI时,要限制从Java到C的调用次数,跨越JNI边界的调用开销很大

4.6. 参数不是基本类型,那么JNI代码会表现得更差

4.7. 要让固定数组和字符串的时间尽可能短

4.7.1. 垃圾回收器才不会受到影响

 

大礼包:官方权威参考书在线畅读(18+本) 不参考官方谈技术都是耍流氓! 阅读详情

相关推荐

Java SE 6 API 中文参考文档完整版

Java API 1.6 是 Java Platform, Standard Edition 6(Java SE 6)的核心组成部分,提供了一整套用于构建企业级应用的类库与接口。其包结构清晰,主要包括java.lang(基础类)、java.util(集合与工具类)、java.io(输入输出操作)等关键模块,支撑着应用程序的基础运行。JVM 在 SE 6 中进一步优化了类加载机制与垃圾回收策略,提升了启动性能与内存管理效率。

weixin_34438187的博客 350

读Java性能权威指南(第2版)笔记02_ Java SE API技巧上

千万不要在循环中使用字符串连接,除非连接的字符串不会在循环的下一次迭代中使用。当你转到一个较新的版本时,不需要重新编译旧代码,因为字节码会是一样的。String类的intern()方法来创建字符串的标准化版本。想用新的编译器编译出新的代码,以使用新的语言特性。例外是应用程序中所有的字符串都需要16位编码。String.equals()方法是相当快的。JDK 8的优化在处理字符串和整数时效果很好。使用String类的intern()方法。自定义方法来创建字符串的标准化版本。G1 GC执行自动去重。

lyingSeven的博客 182

Java API 1.6中文版权威参考文档

优势说明灵活性可自由组合多个装饰器,如扩展性新增功能不影响现有类,符合开闭原则内存效率避免多重继承导致的对象膨胀综上所述,java.io的流体系不仅是一组工具类,更是一种体现良好软件设计思想的典范。掌握其背后的设计模式,有助于我们在复杂项目中构建可复用、易维护的 I/O 处理模块。

weixin_42604188的博客 924

读Java性能权威指南(第2版)笔记04_ Java SE API技巧下

即使一个对象的所有字段都是瞬时的,最好还是实现Serializable接口并调用defaultWriteObject()方法。通过writeObject()方法和readObject()方法进行的其他优化可以大幅加快序列化的速度。对于频繁创建的系统异常,JVM会优化获取栈轨迹的性能开销。一种将对象的二进制状态写出来,以便之后重新创建的方法。多个过滤器是有开销的,要确保编写性能良好的过滤器。降低对象序列化成本的方法是序列化更少的数据。HashMap用于访问一段随机的数据。集合的大小会对性能产生很大的影响。

lyingSeven的博客 149

解锁Cherry Studio高阶玩法:用MCP实现自动化测试与数据爬取

本文深入探讨了如何利用MCP协议与Cherry Studio结合,实现自动化测试与数据爬取的高阶应用。通过Playwright等工具的MCP集成方案,详细解析了自动化测试流水线构建和智能爬虫系统开发的关键技术,显著提升工程效率和系统适应性。

defi6farmer的博客 275

Python_构建同花顺问财智能选股API服务

本文详细介绍了如何使用Python构建同花顺问财智能选股API服务,涵盖从环境准备、核心API开发到高级功能扩展的全过程。通过Flask框架和pywencai库,开发者可以快速搭建稳定可靠的选股接口,实现自动化股票筛选与交易系统集成,提升量化投资效率。

weixin_30596343的博客 333

Java性能权威指南(第2版)读后总结与感想

语言在不断进化发展、jvm也在不断进化发展,在采用java 8 不变的情况下,使用包含新的垃圾回收算法的jdk,使用新的垃圾回收算法能够获得更好的性能体验。了解不难,学精很难,性能调优不仅仅是技术活,更是一门艺术,需要考虑的场景、判断的条件纷繁复杂,各种开关也会相互影响,使用的不好,还不如采用默认方式。验证、测试自然少不了各种工具,既有原生自带的,也有开源或者商业的第三方工具,在这个方面,介绍的也较详细,能够帮忙我们分析性能问题的源头。有些性能建议是包治百病的,比如,使用更小的对象;

lyingSeven的博客 209

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 395

终于有人把性能优化讲清楚了!阿里架构师推荐的Java性能权威指南

市面上真正适合学习的性能优化方面的资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃。线程池与ThreadPoolExecutor、线程同步、JVM线程调优、监控线程与锁。操作系统的工具和分析、Java监控工具、性能分析工具、Java任务控制。Java和JIT编译器版本、高级编译器调优、编译器中级调优、逆优化。web容器的基本性能、线程池、对象序列化、XML和JSON处理。缓冲式.I/O、类加载、Java原生接口、异常、字符串的性能。

Trouvailless的博客 486

双目深度相机--10.双目视觉的主要步骤讲解分析

双目视觉技术通过模拟人眼原理,利用两个相机从不同视角采集图像,实现三维坐标计算。其核心流程包括:1)系统标定,消除相机畸变并建立坐标映射关系;2)图像同步采集与预处理;3)立体匹配,寻找左右图像对应点;4)基于视差图的深度计算;5)三维重建生成点云或网格模型;6)结果应用如目标测距、三维建模等。关键技术难点在于精确标定和准确匹配,这两步直接影响最终深度计算的精度。该技术广泛应用于自动驾驶、工业检测、VR等领域,实现了从二维图像到三维空间的精准转换。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 625

微信小程序 - error_msg:net::ERR_CONNECTION_RESET“(“errno“:600001,“errMsg“:“uploadFile:fail errcode:-101)

"errno":600001,"errMsg":"uploadFile:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET"微信小程序,微信小程序wx.uploadFile报错,uniapp微信小程序uni.uploadFile上传文件报错,微信小程序调用wx.uploadFile返回错误ERR_CONNECTION_RESET,如何解决这个问题,上传图片出现报错,小程序上传视频报错,上传文件出现报错,如何

🏆 前端领域优质创作者 5415

【读书笔记】Java性能权威指南 读书笔记

文章目录1.导论2.性能测试方法3, Java性能调优工具3.2 java 监控工具3.2.1 基本信息3.3 性能分析工具3.3.1 采样分析器3.3.2 探查分析器3.3.3 阻塞方法和线程时间线3.3.4 本地分析器3.4 Java任务控制3.4.1 Java飞行记录器4. JIT编译器4.1 编译器介绍4.2 调优入门: 选择编译器类型4.2.1 优化启动4.2.2 优化批处理4.2.3 优化长时间运行的应用4.3 Java和JIT编译器版本4.4 编译器中级调优4.4.1 调优代码缓存4.4.2 

九师兄 746

从零开始用 C# 打造工业级上位机系统:完整项目实战

本文介绍了一个基于C#开发的工业级上位机系统项目。该系统采用分层架构设计,包含通信、数据采集、UI展示、告警日志等模块,支持Modbus协议和串口通信。文章详细阐述了系统架构设计、关键模块实现(如Modbus通信封装、实时数据采集、告警系统等)以及性能优化策略。该项目已在实际工控场景中稳定运行超过1年,具备良好的可扩展性和稳定性,适合有一定C#基础的开发者参考学习工业软件开发实践。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1368

终于有人把性能优化讲清楚了,阿里架构师推荐的Java性能权威指南

Java给大部分人的感觉就是慢,有严重的性能问题。其实程序慢的问题,与语言无关,与Java无关。Java应用的性能优化也是一个老生常谈的话题,但是只要我们深入的了解性能调优方法,走遍天下都不怕!大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识。是的,这并不没有错。诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何事。工欲善其事必先利其器,如果我们能真正掌握性能优化的核心原理,那么将会有很大收获。

知识分享官 320

使用Python实现卷积神经网络(CNN)

卷积神经网络是一种专门用于处理具有网格状拓扑结构数据(如图像、声音)的深度学习模型。CNN的核心组件是卷积层和池化层,它们能够有效地从图像中提取特征并实现空间不变性,使得模型能够对图像中的物体进行识别和分类。我们定义一个简单的卷积神经网络模型,包括卷积层、池化层和全连接层。return x# 创建模型实例我们选择交叉熵损失函数作为分类任务的损失函数,并使用随机梯度下降(SGD)作为优化器。

Echo_Wish 4489

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装

环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行

从事嵌入式linux android驱动开发,拥有全栈能力 481

Java性能优化可算是讲明白了,优化权威指南就是强

它能以不同的方式定义“optimal performance(最佳性能)”,但基本要素是:Java程序在业务响应时间要求内执行计算任务的能力,程序在高容量下执行业务功能的能力,并具有可靠性高和延迟低的特点。JVM优化、数据库优化、代码优化、设计优化等等,这次小编分享一份《Java性能优化权威指南》,内容涉及到了性能调优工具箱、JIT编辑器、垃圾收集算法、堆内存的最佳实践等等等等。web容器的基本性能、线程池、对象序列化、XML和JSON处理。缓冲式.I/O、类加载、Java原生接口、异常、字符串的性能。

m0_57042151的博客 523

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

这么一篇.Java性能权威指南.不需要好好的了解一下吗?

O'Reilly为软件开发人员带来革命性的“动物书”;创建第--个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名:创立了Make杂志,从而成为DIY革命的主要先锋,公司一如既往地通过多种形式缔结信息与人的纽带。O'Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O'Reilly 现在还将...

lingqu+wx bjmsb06 291

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【JavaScript权威指南(第七版)】之阅读学习总结

写在前面 最近借着空闲时间断断续续两个月看完了《JavaScript权威指南(第七版)》,《JavaScript权威指南》一直以来被称为“犀牛书”,前面的第六版我大概略过一遍,由于书的厚度实在有点“厚重”,将近1000多页左右,有一些知识已经过时了,看了一下就没有细啃,随后转向新出版的第七版,第七版是是在2020年5月出版上市的,据了解,而第6版是2011年出版的,距今已经10年了,前端的技术更迭换代非常“迅速”,至少对于像我这种之前是学习后端知识的人来说,前端的技术更迭比后端的技术更新快的多,而且要求也

go 3404

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

终于有人把性能优化讲清楚了!京东架构师推荐的Java性能权威指南

总之,性能优化之路虽充满挑战,但只要我们持续探索、不断实践,就一定能在这条道路上越走越顺。相信通过对其中知识的吸收和运用,我们能够在工作中更加游刃有余,让程序的性能得到显著提升。未来,随着技术的不断发展,性能优化的重要性将愈发凸显。让我们紧跟时代步伐,不断更新知识,为打造更高效、更优质的程序而努力!

jcc4261的博客 363

终于有人把性能优化讲清楚了!阿里架构师推荐的Java性能权威指南可太强了

Java给大部分人的感觉就是慢,有严重的性能问题。其实程序慢的问题,与语言无关,与Java无关。Java应用的性能优化也是一个老生常谈的话题,但是只要我们深入的了解性能调优方法,走遍天下都不怕! 大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识。是的,这并不没有错。诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何事。 工欲善其事必先利其器,如果我们能真正掌握性能优化的核心原理,那么将会有很大收获。 市面上真正适合学习的性

一入Java深似海 214

终于有人把性能优化讲清楚了!京东架构师推荐的Java性能权威指南!

总之,性能优化之路虽充满挑战,但只要我们持续探索、不断实践,就一定能在这条道路上越走越顺。相信通过对其中知识的吸收和运用,我们能够在工作中更加游刃有余,让程序的性能得到显著提升。未来,随着技术的不断发展,性能优化的重要性将愈发凸显。让我们紧跟时代步伐,不断更新知识,为打造更高效、更优质的程序而努力!

jcc4261的博客 243

ApacheJmeter使用权威指南

JMeter 是一款强大的工具,但需结合业务场景合理设计测试计划。建议从简单场景入手,逐步掌握参数化、关联和分布式测试等高级功能。JMeter 是一款开源的性能测试工具,支持HTTP、FTP、JDBC、SOAP等协议,广泛用于负载测试、压力测试和功能测试。生成动态值(如订单ID)。

qq_41067796的博客 1772
上一篇: 读Java性能权威指南(第2版)笔记02_ Java SE API技巧上
下一篇: 读Java性能权威指南(第2版)笔记04_ Java SE API技巧下
躺柒
博客等级 码龄4年 7004粉丝 1321原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值