- 博客(180)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
原创 ☕️从小工到专家的 Java 进阶之旅:HotSpot虚拟机对象探秘
本文从对象创建、内存分配、内存布局、对象定位几个角度分析了HotSpot虚拟机中对象的逻辑。后面继续探究JVM的其他知识点。青山不改,绿水长流,我们下次见。
2024-10-14 09:00:00 1393
原创 ☕️从小工到专家的 Java 进阶之旅:由浅入深掌握CompletableFuture
本教程是对 Java8 并发 API 改进中引入的 CompletableFuture 类的功能和用例的指南。Future接口是在 Java5 中添加的,用于表示异步计算的结果,但 Java8 之前,它没有方法来组合这些计算或处理可能的错误。Java8 引入了 CompletableFuture 类,它同时实现了Future和CompletionStage接口,有大约 50 种不同的方法用于组合、结合和执行异步计算步骤以及处理错误。是一个非常强大的API,在并行执行任务、提升运行性能等方面有很好的帮助。
2024-10-13 09:00:00 742
原创 ☕️从小工到专家的 Java 进阶之旅:多线程下HashMap是怎么死循环的?
你好,我是看山。本文收录在系列专栏。日拱一卒,功不唐捐。这是一个老问题了,现在都Java21了,又翻出来Java7的问题,算是对历史的总结把。背过面试八股文的都知道,HashMap是非线程安全的,多线程下要用ConcurrentHashMap之类的。但是实际工作中,还是会碰到在多线程中使用HashMap。可能是写的时候迷糊了,也可能是代码升级时没有注意,比如原本是单线程的,后来性能不行改成多线程了。
2024-10-12 09:00:00 817
原创 ChatGPT 提示词优化指南
优化提示词对获得更好的答案意义重大。一方面,它可以提高生成准确性。通过正确的提示词引导,模型能更准确地理解用户意图,从而生成更精准的文本。另一方面,能增强自由度,让模型生成各种各样的文本,展现更强的表现力。同时,还能提高效率,当用户知道要生成的文本大致内容时,合适的提示词可使模型更快地生成所需结果。
2024-10-11 21:58:54 855
原创 ☕️从小工到专家的 Java 进阶之旅:全新的HttpClient,现代高效的网络通信利器
本文介绍了Java11提供的新版HttpClient的功能,在后续的开发过程中,我们就有了更多的选择。青山不改,绿水长流,我们下次见。
2024-10-11 21:55:16 848
原创 一个架构师的职业素养:四种常用的权限模型
顾名思义,基于角色的访问控制,就是给用户定义角色,通过角色来控制权限。目前来说,基于角色权限控制模型是应用较广的一个。在RBAC中,包含用户(User)、角色(Role)、权限(Permission),权限又分为对象(Object)、操作(Operation),总共五个基本元素。考虑到多种系统集合或者不同场景,还引入了会话(Session)。用户与角色之间是多对多,一个用户有多个角色,比如既可以员工也可以是小组长;一个角色可以有多个用户,比如公司所有人都是员工。一个角色可以多种权限,这个很好理解。
2024-10-11 21:54:37 1285
原创 ☕️从小工到专家的 Java 进阶之旅:HotSpot算法细节实现
本文解决了“HttpMediaTypeNotAcceptableException: No acceptable representation”异常。本文中的实例已经传到 GitHub,关注公众号「看山的小屋」,回复spring获取源码。青山不改,绿水长流,我们下次见。
2024-10-04 08:30:00 826
原创 SpringBoot 实战:“HttpMediaTypeNotAcceptableException: No acceptable representation”
本文解决了“HttpMediaTypeNotAcceptableException: No acceptable representation”异常。本文中的实例已经传到 GitHub,关注公众号「看山的小屋」,回复spring获取源码。青山不改,绿水长流,我们下次见。
2024-10-01 08:30:00 610
原创 SpringBoot 实战:“HttpMessageNotWritableException: No converter found for return value of type”
Stream API 为处理集合数据提供了一种高效且简洁的方式。它允许我们以一种声明式的风格来操作数据,避免了传统的迭代器和循环方式带来的繁琐和易错性。Stream API 可以对集合进行过滤、映射、归约等多种操作,而其中的map和flatMap操作在数据转换和处理复杂数据结构方面发挥着重要作用。在 Stream API 中,map和flatMap都是非常重要的数据转换操作。map适用于简单的一对一元素转换场景,而flatMap则在处理嵌套流和复杂数据结构时具有独特的优势。
2024-09-30 08:30:00 965
原创 ☕️从小工到专家的 Java 进阶之旅:map()和flatMap()的区别
Stream API 为处理集合数据提供了一种高效且简洁的方式。它允许我们以一种声明式的风格来操作数据,避免了传统的迭代器和循环方式带来的繁琐和易错性。Stream API 可以对集合进行过滤、映射、归约等多种操作,而其中的map和flatMap操作在数据转换和处理复杂数据结构方面发挥着重要作用。在 Stream API 中,map和flatMap都是非常重要的数据转换操作。map适用于简单的一对一元素转换场景,而flatMap则在处理嵌套流和复杂数据结构时具有独特的优势。
2024-09-29 08:30:00 711
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java23 的新特性
JEP 423: G1垃圾回收器的区域固定(Region Pinning for G1)JEP 447: super(…)前置语句(Statements before super(…),预览)JEP 454: 外部函数和内存API(Foreign Function & Memory API)JEP 456: 未命名变量和模式(Unnamed Variables & Patterns)JEP 457: 类文件API(Class-File API,预览)
2024-09-19 09:00:00 912
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java22 的新特性
JEP 423: G1垃圾回收器的区域固定(Region Pinning for G1)JEP 447: super(…)前置语句(Statements before super(…),预览)JEP 454: 外部函数和内存API(Foreign Function & Memory API)JEP 456: 未命名变量和模式(Unnamed Variables & Patterns)JEP 457: 类文件API(Class-File API,预览)
2024-09-18 09:00:00 748
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java21 的新特性
JEP 430: 字符串模板(String Templates,预览)JEP 431: 有序集合(Sequenced Collections)JEP 439: 分代ZGC(Generational ZGC)JEP 440: Record模式(Record Patterns)JEP 441: switch模式匹配(Pattern Matching for switch)
2024-09-17 09:00:00 855
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java20 的新特性
Java20 在 2023 年 3 月 21 日发布GA版本,共七大特性,这些新特性处于预览或孵化阶段,旨在简化并发编程、提高性能和增强语言表达能力。JEP 429: 作用域值(Scoped Values,孵化),来自Amber项目,允许在线程内和线程间共享不可变数据,优于传统的线程局部变量。它主要用于在多线程应用中安全地传递和访问数据,例如从父线程向子线程传递数据。JEP 432: Record模式(Record Patterns,第二次预览),来自Amber项目,用于简化数据结构的模式匹配。
2024-09-16 09:00:00 903
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java19 的新特性
Java19 在 2022 年 9 月 20 日发布GA版本,共七大特性,这些新特性大多处于预览或孵化阶段,旨在简化并发编程、提高性能和增强语言表达能力。JEP 405: Record 模式(预览)JEP 422: Linux/RISC-V移植JEP 424: 外部函数和内存API(预览)JEP 425: 虚拟线程(预览)JEP 426: 向量API(第四次孵化)JEP 427: Switch模式匹配(第三次预览)JEP 428: 结构化并发API (孵化)
2024-09-15 09:00:00 927
原创 AI 时代程序员的挑战与机遇
你好,我是看山。在当今数字化快速发展的时代,AIGC(如 ChatGPT、Midjourney、Claude 等)大语言模型如雨后春笋般接二连三的涌现,与此同时,AI 辅助编程工具也日益普及。这一系列的变化使得程序员的工作方式正在发生着深刻的变革。
2024-09-14 22:22:56 965
原创 SpringBoot 实战:国际化组件 MessageSource 与 Nacos 组合实现动态配置能力
前面介绍了 Spring 的 MessageSource 组件的用法、执行逻辑和源码,本文我们将根据前面的知识,实现自己的动态刷新的国际化组件。
2022-08-15 07:23:11 73
原创 SpringBoot实战:国际化组件MessageSource的执行逻辑与源码
掌握 MessageSource 的原理,我们才能更好的扩展。
2022-08-07 21:19:40 2412 1
原创 《SpringBoot 手册》:国际化组件 MessageSource
咱们今天一起来聊聊 SpringBoot 中的国际化组件 MessageSource。
2022-07-30 11:41:43 3538
原创 小心 transmittable-thread-local 的这个坑
本文主要是变更 transmittable-thread-local 使用方式时出现的一个异常。
2022-07-30 11:19:17 2804
原创 Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch
与 if-else 一样,switch 语法是用来做条件判断的。当条件清晰简洁时,能够有效地提升代码可读性。switch 语法从 Java5 开始,Java12 增加了 Switch 表达式(Java14 提供正式版),Java17 增加 Switch 模式匹配(预览版)。...
2022-07-30 11:11:33 1671
原创 2022 年 Java 行业分析报告
前段时间介绍了从 Java8 到 Java17 每个版本比较有特点的新特性(收录在 从小工到专家的 Java 进阶之旅 专栏),今天看到 JRebel 发布了《2022 年 Java 发展趋势和分析》,于是借此分析一下 Java 行业的现状,希望给大家一些参考。......
2022-06-19 11:50:56 4960 1
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java17 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述Java17 是在.
2022-05-17 21:39:12 1801 1
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java16 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述Java16 是在.
2022-04-19 08:08:35 2640
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java15 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述Java15 是在.
2022-03-17 07:49:08 1956 1
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java14 的新特性
本文讲解一下 Java14 的特性,这个版本带来了不少新特性、功能实用性的增强、GC 的尝试、性能优化等:JEP 305:instanceof 模式匹配 (预览版);JEP 343:打包工具 (孵化);JEP 345:G1 的可识别 NUMA 系统的内存分配;JEP 349:JFR 事件流;JEP 352:非原子性的字节缓冲区映射;JEP 358:NullPointerException 的友好提示信息;JEP 359:Record 声明 (预览版);JEP 361:Switch 表达式转正 (第二版预览)
2022-03-07 21:50:57 1529 1
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java13 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述本文讲解一下 Ja.
2022-02-14 21:56:37 2494 1
原创 从春运迁徙图看疫情变化
你好,我是看山。腊月二十七宰鸡赶大集,响应国家号召,就地过年。难免思乡,于是翻了翻百度地图提供的迁徙数据。我们从迁出地和迁徙趋势看一看这几年的春运变化。我们先来看看从2020年到现在(2022年)的春运迁徙图:从三张图中,我们不难看出一些规律,待我慢慢道来。春运热门迁出地这几年中,比较热门的迁出地有北京、上海、广州、深圳,稍微热门的是杭州、武汉、重庆、长沙、西安等。不难看出,热门迁出地对应着一线、新一线城市。这些城市的外来务工人员比较多,在春节选择回家过年。其中,北上广深是一线城市,.
2022-01-29 17:51:46 2030 1
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java12 的新特性
本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。你好,我是看山。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述本文讲解一下 Ja..
2022-01-17 08:30:00 2058
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java11 的新特性
文章目录概述增强 Stringrepeatstrip、stripLeading、stripTrailingisBlanklines增强文件读写增强集合的数组操作增强函数 PredicateLambda 中的局部变量转正的 HTTP 客户端基于嵌套关系的访问控制优化增强 java 命令动态类文件常量低开销的堆性能采用工具ZGC改进 Aarch64 指令集Epsilon 垃圾收集器飞行记录器(Flight Recorder)移除或过期组件其他小改动文末总结推荐阅读你好,我是看山。本文收录在 《从小工到专.
2022-01-10 07:00:00 2339 6
原创 这一年很幸运,平平淡淡的|2021 年度总结
一晃又是一年,果然岁数越大,时间越快。总结下来,2021 年还算幸运,平平淡淡过一年。工作上按部就班,生活上一如既往。
2022-01-05 22:53:39 2853 3
原创 原来还能这么干——观罗胖2022年《时间的朋友》后感
你好,我是看山。就这样 2022 年了,年纪越大,时间越快,又到了罗胖《时间的朋友》直播的时候,看完后想写点什么,奈何腹中墨水太少,索性不难为自己,随便写写。由于疫情原因,罗胖今年的跨年演讲现场的观众全部都是熊猫娃娃,评论区有整场直播的视频回访和文字稿,有些事情,还是要自己亲自感受一下。打破思维的墙整场演讲的主题是“原来还能这么干”,用我能够理解的话,就是打破思维的墙。每个人都有自己的思维模式,这是我们赖以生存的根本,也是我们能够更快速、更高效处理普通事务的根本。之前在 别让非理性思维毁了你的人.
2022-01-02 01:07:01 2055 8
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java10 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述从 Java10 .
2021-12-29 22:10:45 2937 1
原创 Spring隐藏了真实的错误,让排查问题变得很难
你好,我是看山。今天项目依赖了一个基础组件之后,启动失败,排查过程走了一些弯路,最终确认是因为依赖组件版本冲突造成了java.lang.NoClassDefFoundError异常。下面是排查过程,希望可以给你提供一些思路。观察异常栈下面是打印的异常栈信息,从其中提炼可能的关键信息,能够找到“Could not convert argument value of type [java.lang.String] to required type [java.lang.Class]”,还有“Unres.
2021-12-28 21:54:21 5042 2
原创 Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java9 的新特性
你好,我是看山。本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。从 2017 年开始,Java 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中有近半的环境使用 Java8,有近半的人转移到了 Java11,随着 Java17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述各个版本的新特性。概述相较于 Java8.
2021-12-20 06:00:00 3025 1
原创 微服务架构的陷阱:从单体到分布式单体
你好,我是看山。前面咱们聊了架构的演进过程,提到单体架构、SOA 架构、微服务架构、无服务架构。整个过程如下图:目前无服务架构还未成熟,只能满足一些简单场景。所以大家在设计软件架构时,首选还是微服务架构。然后我们又聊了聊如何把单体架构改造为微服务架构,推荐采用绞杀模式,一步一步的实现系统微服务化。在这个过程中,我们会碰到微服务架构的一个大坑:分布式错觉,即将分布式当成了微服务的全部(充要条件)。原因出现分布式单体的主要原因在于,只是用进程间的远程调用替换进程内的方法调用。从上图可以看出,.
2021-12-15 08:08:17 8128 3
原创 除了微服务,我们还有其他选择吗?
从单体架构、SOA架构,到微服务架构,再到容器化、无服务架构,我们的选择很多,没有必要非在一棵树上吊死。
2021-12-07 07:57:17 8394 23
原创 JDK 每半年就会更新一次新特性,再不掌握就要落伍了:JDK8 的新特性
该图片由Alexandr Podvalny在Pixabay上发布你好,我是看山。本文收录在 《Java 进阶》 系列专栏中。从 2017 年开始,JDK 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中仍有近半的环境使用 JDK8,有近半的人转移到了 JDK11,随着 JDK17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述从..
2021-11-25 08:11:49 4241 19
GTK+2.0(中文教程)
2011-04-09
spring boot 中的 filter 的 init方法中获取当前应用端口
2017-03-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人