
JDK研究
文章平均质量分 86
熊崽_张
这个作者很懒,什么都没留下…
展开
-
StringUtils 工具类常用方法汇总 2(截取、去除空白、包含、查询索引)
在上一篇中总结了 StringUtils 工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法。原创 2022-11-02 15:54:17 · 2114 阅读 · 0 评论 -
StringUtils 工具类常用方法汇总 1(判空、转换、移除、替换、反转)
Apache commons lang3 包下的 StringUtils 工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便。最近自己也经常在项目中使用到了里面的一些方法,在这里将常用的方法总结了一下,方便以后查阅,大家有兴趣也可以看一下。首先需要说明的一点是,StringUtils 类在操作字符串时,即使操作的为 null 值也是安全的,不会报 NullPointerException,这一点在后面的例子中再具体说明。原创 2022-11-02 15:53:25 · 1775 阅读 · 0 评论 -
Java 生成二维码
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqNWQlVk-1659851409812)(https://mmbiz.qpic.cn/mmbiz_png/JdLkEI9sZfd46f1eR2Esd6meiaSoaLBP1nr6nqBXxiamjFTnPF6tvfH5FD5vcq0Q1E7DIhDtm8DzFialEXb52YS2A/640?wx_fmt=png)]QRCode 生成二维码网址:http://swetake.com/qrcode/index-e.html。..转载 2022-08-07 13:51:24 · 298 阅读 · 0 评论 -
JVM 线上故障排查基本操作
对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。楼主同样也遇到过这些问题,那么,遇到这些问题该如何解决呢?首先,出现问题,肯定要先定位问题所在,然后分析问题原因,再然后解决问题,最后进行总结,防止下次再次出现。今天的文章,就如我们的题目一样,讲的是基本操作,也就是一些排查线上问题的基本方法。为什么这么说呢?...转载 2022-08-04 20:33:36 · 707 阅读 · 0 评论 -
JDK-深入源码解析 HashMap 1.8
HashMap在Java和Android开发中非常常见而相对于更新多今天,我将通过源码分析,从而讲解相对于的更新内容,希望你们会喜欢。本文基于版本JDK 1.8,即Java 8关于版本JDK 1.7,即Java 7,具体请看文章Java:手把手带你源码分析 HashMap 1.7示意图关于 红黑树 的简介示意图点击阅读文章添加数据的流程示意图与JDK 1.7的区别示意图至此,关于HashMap的添加数据源码分析 分析完毕。...转载 2022-08-04 20:21:27 · 147 阅读 · 0 评论 -
JAVA-12 个语法糖
前面介绍了 12 种 Java 中常用的语法糖。所谓语法糖就是提供给开发人员便于开发的一种语法而已。但是这种语法只有开发人员认识。要想被执行,需要进行解糖,即转成 JVM 认识的语法。当我们把语法糖解糖之后,你就会发现其实我们日常使用的这些方便的语法,其实都是一些其他更简单的语法构成的。有了这些语法糖,我们在日常开发的时候可以大大提升效率,但是同时也要避免过渡使用。使用之前最好了解下原理,避免掉坑。END。...转载 2022-08-02 21:56:40 · 446 阅读 · 0 评论 -
Java-性能优化50点
默认情况下,调用类的构造函数时,java 会把变量初始化成确定的值,所有的对象被设置成 null,整数变量设置成 0,float 和 double 变量设置成 0.0,逻辑值设置成 false。除非是必须的,否则应该避免使用 split,split 由于支持正则表达式,所以效率比较低,如果是频繁的几十,几百万的调用将会耗费大量资源,如果确实需要频繁的调用 split,可以考虑使用 apache 的 StringUtils.split(string,char),频繁 split 的可以缓存结果。...转载 2022-08-02 20:59:55 · 202 阅读 · 0 评论 -
JAVA-规范写代码
JAVA 规范写代码转载 2022-08-01 20:47:45 · 246 阅读 · 0 评论 -
Java-StringBuilder详解
**面试官:**StringBuilder 和 StringBuffer 的区别在哪?我:StringBuilder 不是线程安全的,StringBuffer 是线程安全的**面试官:**那 StringBuilder 不安全的点在哪儿?我:。。。(哑巴了)在这之前我只记住了 StringBuilder 不是线程安全的,StringBuffer 是线程安全的这个结论,至于 StringBuilder 为什么不安全从来没有去想过。在分析这个问题之前我们要知道 StringBuilder 和 StringBuf转载 2022-07-10 14:27:01 · 640 阅读 · 0 评论 -
Java-switch及if else的优缺点
缺点一. 语法正确,逻辑错误缺点二 . 死板的语法缺点三 . 需要子函数来处理分支switch 的 优点请用 5 秒钟的时间查看下面的代码是否存在 bug。OK,熟练的程序猿应该已经发现 Bug 所在了,在第 8 行和第 10 行下面我没有添加关键字 break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。这就是第一个理由为什么程序猿很少使用 switch 来做条件判断,对于新手来说忘记写 break 实在是再普通不过了,就算是老猿忘记写也是时有发生的事情,而这个语法错误在诸多的语法检查器上没有办法检转载 2022-07-09 11:53:21 · 1203 阅读 · 0 评论 -
Tomcat 和 JVM 的性能调优总结
来源:http://rrd.me/enKbCTomcat 性能调优JVM 性能调优一、内存调优二、垃圾回收策略调优Tomcat 性能调优找到 Tomcat 根目录下的 conf 目录,修改 server.xml 文件的内容。对于这部分的调优,我所了解到的就是无非设置一下 Tomcat 服务器的最大并发数和 Tomcat 初始化时创建的线程数的设置,当然还有其他一些性能调优的设置,下图是我根据我机子的性能设置的一些参数值,给各位详细解释一下吧:1、URIEncoding.转载 2022-05-22 10:24:35 · 598 阅读 · 0 评论 -
JVM-排查系统 CPU 飙高和频繁 GC
来源:http://t.cn/EI9JdBu处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出 jstack 和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主.转载 2022-05-17 20:38:24 · 1886 阅读 · 0 评论 -
Java 程序员必备的一些流程图
来源:http://rrd.me/ekc5N1.spring 的生命周期2.TCP 三次握手,四次挥手线程池执行流程图4.JVM 内存结构5.Java 内存模型6.springMVC 执行流程图7.JDBC 执行流程8.spring cloud 组件架构9.dubbo 调用整理了一些 Java 基础流程图 / 架构图,做一下笔记,大家一起学习。1.spring 的生命周期Spring 作为当前 Java 最流行、最强大的轻量级容器框架,.转载 2022-05-17 20:32:48 · 636 阅读 · 0 评论 -
java-e.printStackTrace() 导致系统卡崩
作者:sxgkwei 来源:http://dwz.cn/tQe4fLeDe.printStackTrace() 会导致锁死?这仅仅是打印啊,怎么可能?!先别惊呼不可能,且听我细细道来。先看截图 1:注意右下角区域,红框部分。这块内存是什么呢?非堆!那么,左边是代码缓存区内存,右边红框就是字符串池,常量,基本类型数据的内存区。然后呢?已经满了。什么原因呢?e.printStackTrace()!满了的后果呢?整个 web 服务,访问之后,没响应了,就当是卡死掉了。再来看截图 2:.转载 2022-05-17 20:29:22 · 780 阅读 · 0 评论 -
面试-为什么 Java 线程没有 Running 状态
来源:http://rrd.me/ekN5T什么是 RUNNABLE?与传统的 ready 状态的区别与传统的 running 状态的区别当 I/O 阻塞时如何看待 RUNNABLE 状态?Java 虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态:什么是 RUNNABLE?直接看它的 Javadoc 中的说明:一个在 JV.转载 2022-05-15 18:35:18 · 359 阅读 · 0 评论 -
JAVA-常用线程池执行的流程图
原文:juejin.im/post/5a28b37c6fb9a044fc44a103有时候花了大把时间去看一些东西却看不懂,是很 “蓝瘦” 的,花时间也是投资。本文适合:曾了解过线程池却一直模模糊糊的人 了解得差不多却对某些点依然疑惑的不适合:完全没看过的,建议你先去看看其他基础文章 看过,却忘得差不多了,建议你先去回顾下本文能给你的阅读回报适合的读者,尽可能让你彻底明白 常用的线程池的知识相关点 不适合的读者,能有个不错的概念,神童另谈废话少说,我们开始。默认构造函数public .转载 2022-05-14 11:11:01 · 3503 阅读 · 0 评论 -
java-final 关键字
来源:www.jianshu.com/p/acc8d9a67d0c在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。现象描述在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an inner class defined .转载 2022-05-14 11:01:29 · 69 阅读 · 0 评论 -
JAVA-并发容器全家福
原文地址 mp.weixin.qq.com不考虑多线程并发的情况下,容器类一般使用 ArrayList、HashMap 等线程不安全的类,效率更高。在并发场景下,常会用到 ConcurrentHashMap、ArrayBlockingQueue 等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。上面提到的线程安全容器都在 java.util.concurrent 包下,这个包下并发容器不少,今天全部翻出来鼓捣一下。仅做简单介绍,后续再分别深入探索。简介ConcurrentHashMa.转载 2022-05-14 10:59:53 · 97 阅读 · 0 评论 -
Lambda表达式-初步学习篇
作者:Sevenvidiahttps://www.zhihu.com/question/20125256/answer/3241213081什么是 Lambda?我们知道,对于一个 Java 变量,我们可以赋给其一个 “值”。如果你想把 “一块代码” 赋给一个 Java 变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做 aBlockOfCode 的 Java 变量:在 Java 8 之前,这个是做不到的。但是 Java 8 问世之后,利用 Lambda 特性,就可以做到了。.转载 2022-05-11 21:01:47 · 175 阅读 · 0 评论 -
java-如何来判断一个 List 是否有序
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。这是一位同学面试的过程中遇到的面试题,我觉得挺有意思,去研究了一下,发现竟然有这么多方法,在此,与大家分享一下。关于 List 这种数据结构,在这里我就不多说了,很重要,不知道的同学可以翻阅以前的文章。对于这类问题,你首先要给面试官一个定心丸:List 是 java.util.Collection 接口的一个子接口,并且是一个有序列表。这一步很关键,不能.转载 2022-03-25 18:30:36 · 1066 阅读 · 0 评论 -
java-生产环境不重启 JVM,替换掉已经加载的类
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com点击上方 “芋道源码”,选择 “设为星标”做积极的人,而不是积极废人!源码精品专栏中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elastic-Job 源码解析分布式事务中间件 TCC-Transaction 源.原创 2022-03-25 18:23:34 · 344 阅读 · 0 评论 -
java-锁详解
来源:http://sina.lt/geud有同学说,学了 Java 那么多锁,还是没能锁住灭霸,本文教你 “三板斧”,锁灭霸足矣。据说,没几个人能真正参透这 “三板斧” 的精髓,你是不是那个有缘人呢?原文如下。最近,在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳、id 等关键字来加锁,从而保证不同类型数据处理的并发性。而 Java 自身 api 提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩.转载 2022-03-25 18:40:35 · 245 阅读 · 0 评论 -
java-并发包入坑指北
原文地址 mp.weixin.qq.com前言目录如下:在面试过程中聊到并发相关的内容时,不少面试官都喜欢问这类问题:当 N 个线程同时完成某项任务时,如何知道他们都已经执行完毕了。这也是本次讨论的话题之一,所以本篇为『并发包入坑指北』的第二篇;来聊聊常见的并发工具。自己实现其实这类问题的核心论点都是:如何在一个线程中得知其他线程是否执行完毕。假设现在有 3 个线程在运行,需要在主线程中得知他们的运行结果;可以分为以下几步:定义一个计数器为 3。每个线程完成任务后计数减.转载 2022-03-13 23:05:38 · 96 阅读 · 0 评论 -
Java-线程池详解
原文地址 mp.weixin.qq.com前言原以为线程池还挺简单的(平时常用,也分析过原理),这次是想自己动手写一个线程池来更加深入的了解它;但在动手写的过程中落地到细节时发现并没想的那么容易。结合源码对比后确实不得不佩服 DougLea 。我觉得大部分人直接去看 java.util.concurrent.ThreadPoolExecutor 的源码时都是看一个大概,因为其中涉及到了许多细节处理,还有部分 AQS 的内容,所以想要理清楚具体细节并不是那么容易。与其挨个分析源码不如自己实现一个.转载 2022-03-13 23:01:55 · 262 阅读 · 0 评论 -
Java-虚拟机内存的4个问题
来源:http://t.cn/EX1dxJuJVM 的内存区域是怎么划分的?OOM 可能发生在哪些区域上?堆内存结构是怎么样的?常用的性能监控与问题定位工具有哪些?参考JVM 的内存区域是怎么划分的?JVM 的内存划分中,有部分区域是线程私有的,有部分是属于整个 JVM 进程;有些区域会抛出 OOM 异常,有些则不会,了解 JVM 的内存区域划分以及特征,是定位线上内存问题的基础。那么 JVM 内存区域是怎么划分的呢?首先是程序计数器(Program Coun.转载 2022-03-02 20:36:29 · 193 阅读 · 0 评论 -
Java-7个性能指标
来源:http://t.cn/RUgHK2E响应时间和吞吐量平均负载错误率GC 率和暂停时间业务指标正常运行时间和服务运行状态日志大小本文中,搜集了 7 个最有影响的衡量标注,让你可以不依赖日志文件来了解应用程序。现在,让我们看看这些性能指标,并了解如何查看并收集它们:1. 响应时间和吞吐量===========根据应用程序的响应时间可以知道程序完成传输数据所用的时间。也可以从 HTTP 请求级别,或者成为数据库级别来.转载 2022-03-02 20:33:02 · 490 阅读 · 0 评论 -
java-正确打日志
来源:http://t.cn/E9BkD7a使用 slf4j打日志的正确方式什么时候应该打日志基本格式使用 [] 进行参数变量隔离不同级别的使用规范示例说明使用 slf4j使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。实现方式统一使用: Logback 框架打日志的正确方式什么时候应该打日志当你遇到问题的时候,只能通过 debug 功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。.转载 2022-03-02 20:19:00 · 406 阅读 · 0 评论 -
java-12 个语法糖
原文地址 mp.weixin.qq.com本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。有意思的是.转载 2022-03-01 18:23:22 · 284 阅读 · 0 评论 -
Java 处理异常 9 个最佳实践
来源:http://t.cn/ESocliD在 Finally 中清理资源或者使用 Try-With-Resource 语句使用 FinallyJava 7 的 Try-With-Resource 语句给出准确的异常处理信息记录你所指定的异常使用描述性消息抛出异常最先捕获特定的异常不要在 catch 中使用 Throwable不要忽略 Exceptions不要记录和抛出一个异常包装异常总结.转载 2022-03-01 18:03:16 · 221 阅读 · 0 评论 -
源码研究-SimpleDateFormat
来源:http://t.cn/EiYqmll问题场景复现多线程不安全原因解决方案只在需要的时候创建新实例,不用 static 修饰synchronized 大法好ThreadLocal基于 JDK1.8 的 DateTimeFormatter日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家对 SimpleDateFormat 并不陌生。主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是 SimpleDateFormat 并不是一个.转载 2022-02-28 16:23:16 · 393 阅读 · 0 评论 -
ArrayList 其实也有双胞胎,但区别还是挺大的
来源:https://juejin.cn/post/6844903623428669448一、问题产生今天在学习ArrayList源码的时候发现了这么一句注释, 即:c.toArray might (incorrectly) not return Object[] (see 6260652)https://bugs.java.com/view_bug.do?bug_id=6260652这句话的意思是Collection集合类型的toArray()方法虽然声明返回值类型是Object[.转载 2022-02-27 09:58:39 · 75 阅读 · 0 评论