Java之父官宣退休前推荐,这本书每个开发者必读!

【万字长文】学习Armv8架构虚拟化一篇就够了 这里我们将介绍一些基础的Hypervisor和虚拟化的理论知识。如果你已经有一定的基础或是已经熟悉了这些概念,可以跳过这部分内容。我们用Hypervisor这个词来定义一种负责创建,管理以及调度虚拟机(Virtual Machines, VMs)的软件。Stage 2 转换允许Hypervisor控制虚拟机的内存视图。具体来说,其可以控制虚拟机是否可以访问特定的某一块物理内存,以及该内存块出现在虚拟机内存空间的位置。这种能力对于虚拟机的隔离和沙箱功能来说至关重要。 阅读详情

9fd23f8785e23681a60ace4139a3b55a.jpeg

刚过完自己 69 岁生日的两个月后,Java 之父 James Gosling(詹姆斯·高斯林)在领英上官宣了自己退休的消息。他表示,“我终于退休了。在做了这么多年软件工程师之后,是时候让我好好玩玩了。”

2d6ad327bad426fe242ee6ff48f2a710.png

在退休前,Java 之父高司令(James Gosling)在推荐《Effective Java》时评价道:“如果说我需要一本 Java 编程的书,那就是它了。”

这本书豆瓣评分高达 9.5,读者们纷纷表达了对这本书的敬意。有读者留言说“Java 程序员分两种,读过《Effective Java》的和没读过的,严格来说,没读过的不算是Java程序员。”这本书2024年全新翻译终于上市了!

753c348151af6919fbc047b111372863.png

市面上学习 Java 的书汗牛充栋,Java 技术也在不断发展变化,为什么这本神作却能畅销20多年?

01

Jolt 大奖神作

《Effective Java》在 2001 年就一举夺得当年度的 Jolt 大奖,这项“软件业界的奥斯卡奖”就是对这本书的价值,以及对作者 Joshua Bloch 超强技术功力的最好肯定。

本书结构独具匠心,一个关键知识点就是一条单独条目,在有些条目内也会交叉引用其他条目的知识,从而缀点成线,形成知识的网络。从第 1 版的 57 个条目扩展到第 2 版的 78 个条目,直至第 3 版达到了 90 条。

这些条目是作者总结出来的特定规则,并精心编写了代码示例,是为了帮助程序员改进程序和设计。所以对于有一些 Java 编程经验,却又不知如何提升代码水准的读者来说,这本书是 Java 编程的最佳实践指导。

相比之前的版本,这一版增加了 Lambda 表达式、流、Optional 类、接口默认方法、try-with-resources、@SafeVarargs 注解、模块等 Java 7 及后续版本所引入的新特性。本书所涉及的特性都可以应用在目前国内主流 Java 环境中。

本书作者 Joshua Bloch 大神,2001 年度 Jolt 大奖得主,美国卡内基-梅隆大学(Carnegie Mellon University,CMU)教授,曾担任Google公司首席 Java 架构师、Sun 公司杰出工程师和 Transarc 公司高级系统设计师。

d004185ae6c7a17ccf01cec73c7a6bf9.png

Bloch 大神主导了 Java 平台多项特性的设计和实现,包括 JDK 5.0 语言增强版,以及通用容器 Java Collections Framework(JCF)。可以说,在 Java 语言的标准实现中,处处闪耀着 Bloch 大神的智慧。

得益于先后在 Sun 和 Google的工作经历,Bloch 大神既熟知 Java 的内部实现,又能从用户的角度来思考 Java 编程实践,无形中他成为跨越编程工具和实际应用的一座桥梁,《Effective Java》的横空出世也就是水到渠成之事。

63fa69f524d978eb24503a1e5624c8a0.png

本书译者也是一名优秀的技术人,臧秀涛具有多年研发经验,曾先后在完美世界等公司从事软件开发工作。2014年开始从事技术内容方面的工作,曾在InfoQ担任会议内容总监,后在涛思数据负责开源项目TDengine的社区运营。他翻译出版过《Java性能权威指南》和《On Java 中文版》等技术图书。相信他能为中文读者们表达出《Effective Java》神作的精髓。

这部神作到底有何天机?我们来领略一番吧。

02

学会这90条规则,成为真正的Java程序员

本书的 90 个条目分布在 11 个主题中,包括创建和销毁对象、类和接口、Lambda 表达式和流等。这些条目讲透了高效使用 Java 编程语言及其基础类库 java.lang、java.util 和 java.io,以及诸如 java.util.concurrent 和 java.util.function 等子包。

读者不用按顺序阅读,可以根据自己的问题查找主题,再对某个条目细读。当然,如果读者闲暇时间充裕,对这 90 条规则都能学习实践,那么Java 编程功力一定暴涨。

针对上一版本增加的新特性,书中列出了这些主要特性会在哪些条目中讲解,读者可以参考下表。

6280685fba6f5ee7de7cfc6c6f05b349.png

我们来纵览一下这 11 个主题与一些关键知识。

1. 创建和销毁对象:用静态工厂方法代替构造器;优先考虑通过依赖注入来连接资源;与 try-finally 相比,首选 try-with-resources。

2. 对所有对象都通用的方法:在重写 equals 方法时要遵守通用约定;总是重写 toString 方法。

3. 类和接口:组合优先于继承;与抽象类相比,优先选择接口;为传诸后世而设计接口。

4. 泛型:列表优先于数组;首选泛型方法;使用有限制的通配符增加 API 的灵活性。

5. 枚举和注解:使用 enum 代替 int 常量;使用接口模拟可扩展的枚举。

6. Lambda 表达式和流:与匿名类相比,优先选择 Lambda表达式;首选标准的函数式接口。

7. 方法:检查参数的有效性;仔细设计方法签名;为所有导出的 API 元素编写文档注释。

8. 通用编程:与传统的 for 循环相比,首选 for-each 循环;首选基本类型,而不是其封装类;通过接口来引用对象。

9. 异常:异常机制应该仅用于异常的情况;优先使用标准异常;抛出适合当前抽象的异常。

10. 并发:同步对共享可变数据的访问;与线程相比,首选执行器、任务和流;将线程安全性写在文档中。

11. 序列化:在实现 Serializable 接口时要特别谨慎;考虑使用序列化代理代替序列化实例。

程序员在进行代码设计遇到举棋不定的难题时,就可以直接翻开这本书,找到与问题相关的主题,定能豁然开朗,找到最佳实践方案。

03

结语

《Effective Java 中文版(原书第 3 版)》真的是很值得 Java 程序员 N 刷的经典,本书每个条目都讲述了 Bloch 大神对 Java 的独到见解,阐明了如何编写高效、优雅的程序,并且提供了清晰、易懂的示例代码。

对于书中的代码,有个突出的特点,就是包含了很多用来说明设计模式(Design Pattern)和习惯用法(Idiom)的代码示例。对这些示例,书中还提供了与这一领域的神作《设计模式:可复用面向对象软件的基础》一书的交叉引用。

4506aac6075fe3d932376bce1e1f5978.png

精彩书摘

这就是说,对于非 Java 语言的程序员,本书同样极具参考价值。所以通用性也是本书能够经久不衰的原因,代码设计的诸多原则都是共通的,看懂这一本书,在其他语言上都可以复用这些最佳编程实践。

d27525225e6d2d6c67f9b62b05ccec4c.png

本书配套资源丰富,包含实战项目源码、视频教程、资源文件等,新版赠送了Java学习效率手册(电子版)。读者在阅读过程中结合使用这些资源,可以将知识融汇贯通,在工作中应用起来更加得心应手。

如果你刚好在学Java!买它!

山东大学机器学习(实验一内容)——线性回归 1. 描述 第一个练习将为你提供线性回归练习。这些练习已经用Matlab进行了广泛的测试,但它们也应该在Octave中工作,它被称为“免费版的Matlab”。如果你使用的是Octave,那就是 一定要安装Image包(可在Windows中作为选项使用)安装程序,可从Octave-Forge获得Linux。 2.线性回归 回想一下,线性回归模型是 hθ(x)=θTx=∑j=0nθjxj h_{\th... 阅读详情

相关推荐

别再到处搜了!高德地图瓦片URL参数(lang、style、ltype)全解析与实战搭配指南

本文全面解析高德地图瓦片URL参数(lang、style、ltype)的核心逻辑与实战应用,提供18种实用参数组合方案,帮助开发者实现从基础到高阶的定制化地图渲染。涵盖语言控制、地图样式、图层类型等关键参数,并分享WebGIS项目中的优化技巧与常见问题解决方案。

weixin_33724046的博客 117

豆瓣9.7,这部编程神作第3版重磅上市!

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。定期有赠书福利,本期规则见文末>>>上周的赠书活动已结束,恭喜3位获奖的读者。本周的读者赠书福利又来了。Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦!...

codingpy的博客 218

【从零开始入门unity游戏开发之——C#篇37】进程、线程、C# 中实现多线程有多种方案和async/await异步编程

进程、线程、C# 中实现多线程有多种方案和async/await异步编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1465

《Effective Java》中文版第3版 读书笔记

人真的不必逼自己去做不像自己的那种人,强大固然是好,但脆弱和柔软也没有什么过错。一个人不用活得像一支队伍,一个人只要活得像一个人就行了,有尊严,有追求,有梦想,也有软弱和颓废的时候。 -- 知乎

山河已无恙 2685

Android16 3576 u盘固件升级功能添加

1.在u-boot/drivers/power/pmic/rk8xx.c。这里是读取power键的寄存器判断长短按。

tzj1058756809的博客 574

C#上位机+YOLO实时目标检测:摄像头采集+多线程推理+精度调优全流程

标注数据集:使用LabelImg工具标注目标对象,按YOLO格式整理数据集;模型训练:使用Ultralytics库训练自定义模型,提升特定目标的检测精度;训练参数优化:增加训练轮数(epochs=100200)、调整批次大小(batch=1632)、使用数据增强(flip、mosaic等)。摄像头采集:封装通用采集类,支持USB摄像头/网口相机,实现稳定帧读取与异常处理;多线程推理:采用“采集线程+推理线程+UI线程”解耦架构,使用线程安全队列传递帧数据,彻底解决界面卡顿;核心封装。

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

每一个优秀的Java程序员都应该掌握的90条编程法则

笼统地讲,一个包的导出 API,是由该包中的每个公有(public)类或接口中公有的和受保护的(protected)成员及构造器组成的。的第3 版,对上一版进行了全面更新,涵盖了 从Java 5 到Java 9的种种特性,是Java 开发人员不可缺少的一本参考书。包含90 个条目,形式简洁。的第3版,从Java 5 到Java 9的种种特性,Java 开发人员不可缺少的一本参考书:Effective Java中文版(原书第3版),2024全新译本,豆瓣原版评分9.6,中文版9.8。经典Jolt 获奖作品。

人邮异步社区 1360

基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用

FastAPI是一个现代、快速(高性能)的Python Web框架,专门用于构建API。它由Sebastián Ramírez(@tiangolo)创建,基于Starlette(用于Web部分)和Pydantic(用于数据部分)构建。性能优先:FastAPI是当前最快的Python Web框架之一,性能与NodeJS和Go相当。这得益于其基于Starlette的异步架构,能够充分利用Python 3.6+的async/await特性。开发效率。

AI天才研究院 229

《Effective Java》真的是一本值得一直去钻研的好书

文章目录《Effective Java》读书笔记第一章 引言第二章 创建和销毁对象1 考虑使用静态工厂方法替代构造方法**2 当构造方法参数过多时使用builder(建造者) 模式**3 使用私有构造方法或枚类实现Singleton 属性*4 使用私有构造方法执行非实例化*5 依赖注入优于硬连接资源(hardwiring resources)**6 避免创建不必要的对象*7 消除过期的对象引用*8 避免使用Finalizer 和Cleaner 机制**9 使用try-with-resources 语句替代t

追求幸福,探索未知的博客 8642

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

罗克韦尔AB PLC_FactoryTalk无法登录的解决方法

Robot_PLC_HMI_Automation 3573

YTM32B1M SDK解析31:软件I2C驱动详解

YTM32B1M微控制器软件I2C驱动解析 本文详细介绍了YTM32B1M微控制器中通过GPIO引脚模拟I2C总线的软件实现方案。核心内容包括: 驱动架构:采用swi2c_config_t配置结构体和swi2c_state_t状态结构体管理I2C参数 功能接口:提供初始化、数据传输(主/从模式)、底层控制等API 应用示例:包含基本配置、EEPROM读写、传感器数据采集、总线扫描等典型应用场景 优化建议:给出引脚选择、时序配置、错误处理等方面的最佳实践 该驱动在硬件I2C资源不足时提供可靠替代方案,支持标准

VehSwHwDeveloper的博客 158

Java之父官宣退休

刚过完自己 69 岁生日的两个月后,Java 之父 James Gosling(詹姆斯·高斯林)在领英上官宣了自己退休的消息。他表示,“我终于退休了。在做了这么多年软件工程师之后,是时候让我好好玩玩了。”在退休前,Java 之父高司令(James Gosling)在推荐《Effective Java》时评价道:“如果说我需要一本 Java 编程的书,那就是它了。”这本书豆瓣评分高达 9.5,读者们...

公众号-老炮说Java 467

六、Tool 工具系统:让大模型拥有“手脚“

我问你一个问题:大模型能不能告诉你"北京今天天气怎么样"?能——它能用非常流畅的中文回答你不能——它不知道这个答案因为它没有联网能力,也没有实时数据。它可能会自信地编一个"今天晴,25 度"给你——这就是幻觉。问题出在哪?大模型是一个"推理引擎",不是一个"执行引擎"。它知道天气 API 怎么调用,但不能真的发出 HTTP 请求。它知道 Python 代码怎么写,但不能真的运行代码。它知道数学公式,但做不了精确的大数计算。Tool 工具系统解决的,就是这个"最后一公里"问题。

牛肉胡辣汤 157

Java之父官宣退休,他推荐了这本书...

过完自己 69 岁生日两个月后,Java 之父 James Gosling 在官宣了自己退休的消息。“终于退休了,做了这么多年软件工程师,是时候好好玩玩了。”画外音:朋友,你计划写代码到什么时候,什么时候退休?在退休前,Java 之父高司令再次推荐了《Effective Java》:“如果说我只需要一本 Java 编程的书,那就是它了。”今年,其中文译版它来了。相比前作,第三版有哪些更新?系统性调...

shenjian58的博客 154

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

程序员的崩溃,从有人28岁退休开始!

近日,蚂蚁集团官宣上市计划,一时间,诞生了5000个千万富翁,500个亿万富翁!无独有偶,上个月实现财务自由的郭宇,仅仅28岁就开始了退休生活。实现财务自由难吗?说难难,说不难也不难。互...

sinat_32849897的博客 109

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TF 2.1.0-rc2发布,2020年停止支持Python 2

作者 |神经星星来源 |HyperAI超神经(ID:HyperAI)【导读】2020 年 1 月 1 日,Python 2 停止维护,正式退休。Python 3 全面登场的时刻,Te...

AI科技大本营 993

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

字节跳动AI掌门人生变:张一鸣亲自邀请的马维英,现在离任加入清华张亚勤团队...

Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲金磊 白交 乾明 发自 凹非寺量子位 报道 | 公...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 879

实战技术:如何高效地远程部署?自动化运维利器 Fabric 教程

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 附Java/ 一、Fabric 的版本区分 Python 2 版本已经被官宣在今年元旦“退休”了,未来只会是 Python 3 的舞台。为了适应 Python 版本的非兼容性迁移,很多项目也必须推出自己的新版本(兼容或只支持 Python 3),其中就包括本文的主角 Fabric。 Fabric 自身存在着 ...

weixin_41663412的博客 423

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 214

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 139

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 323

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 111

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 187

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 351

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 101

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 390
上一篇: VS Code Python 7 月更新
下一篇: 旧王退位,新王加冕:开启你的赚钱新纪元
codingpy
博客等级 码龄11年 1866粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值