随笔分类 - Java
摘要:自从去年ChatGPT3.5发布后使用了几次,现在写代码基本上离不开它和它的衍生产品们了。一方面查资料很方便,快速提炼要点总结;另一方面想写什么样的代码一问就能生成出来,功能大差不差,稍微改改就能用,大大减少使用搜索引擎的时间,是新时代高阶版的Ctrl+C/V。 不过大语言模型归根揭底是靠训练集训练
阅读全文
摘要:LinkedList底层是由双向链表实现的,因此可以支持Queue和Stack。 本文讨论的实现基于JDK8源码。 实现Queue LinkedList本身实现了Queue接口。 入队 方法签名 接口说明(JDK手册) 代码实现概括(JDK8) boolean add(E e) 将指定的元素插入此队
阅读全文
摘要:使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码。但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本)。 Collectors.toMap可以将一个流转化成Map,常见于需要将List转换成Map以便于进一步操作的场
阅读全文
摘要:在上次反思DDD实践之后,在类目树管理项目中再次实践DDD。从需求分析到建模和具体的落地,结合个人体会,都是干货。
阅读全文
摘要:前言 目前暂时放弃阅读源码,只看了实现原理和使用,搞清楚响应式编程、akka模型。 思维导图 使用文档 http://ifeve.com/akka-doc-java-what-is-akka/ 关于Reactive Reactive编程(一):Reactive编程的背景 Reactive编程(二):
阅读全文
摘要:本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解。
阅读全文
摘要:结合一些文章阅读源码后整理的Java容器常见知识点。对于一些代码细节,本文不展开来讲,有兴趣可以自行阅读参考文献。
阅读全文
摘要:主要包括深入分析wait()/notify()/notifyAll()实现生产者消费者模式、线程数调优、并发容器、AQS、JMM五个大专题,七个小专题,leetCode并发题简介三个部分,基本对大多数Java并发领域的知识都有所涉及,也是经常容易提问的问题,整理下来便于以后review。
阅读全文
摘要:JDK8中用元空间metaspace代替了永久代perm,原因和其特性简单介绍一下。 思维导图 图中gc log详解链接:https://www.jianshu.com/p/cd34d6f3b5b4 其他参考文章 Java 8新特性探究(九)跟OOM:Permgen说再见吧 Metaspace 之一
阅读全文
摘要:1. tsar 阿里巴巴开源的实时系统监控工具。其内部的sunfire有部分指标就是基于该工具每分钟采集一次来获取的。 github 监控项及数据来源一览 摘自tsar/info.md 监控项 来源 细分项 CPU /proc/stat user: 表示CPU执行用户进程的时间,通常期望用户空间CP
阅读全文
摘要:Tomcat是一个Web应用服务器,可以作为Servlet容器。它的作用是,解析客户端client发起的request,并组装出HttpRequest、创建HttpResponse,将二者交于内部的HttpServlet处理和填充,如图所示 (图源见参考文档1) Tomcat映射处理请求的Servl
阅读全文
摘要:简称 STW —— Stop the World,暂停所有在执行的线程 简史 2004年Sun实验室第一次发表G1论文 JDK6U14中第一次作为实验选项引入 JDK7中开始作为替换CMS的方案 JDK9中成为默认的垃圾回收器 JDK10优化,将其fullGC改为并行: "JEP307" JDK11
阅读全文
摘要:volatile关键字的作用 1. 所有变量的可见性——仅仅是修改后的值的可见性,不保证并发修改时新值和预期一致。即只保证读,不保证写。 2. 禁止指令重排序——修饰的变量,读写不会指令重排。如变量isReady被volatile修饰,这两条指令 和`isReady=true`不会在编译时改变顺序。
阅读全文
摘要:JavaGC的相关知识点在《深入理解JAVA虚拟机》上比较琐碎,有的概念没有详细介绍,前后顺序也不太连贯。为了便于理解原理和问题排查,反复阅读了这一部分及相关文章后简单的总结一下。
思想脉络是:JVM内存模型->内存模型中的堆的进一步分代->GC回收算法、日志、回收器,从一个面(内存模型)到一个点(堆), 再由这个点扩展到关联的点。
阅读全文
摘要:一次线上频繁FullGC问题的排查和解决记录,整理了一下通用的排查解决过程,同时介绍了一些可能会用到的工具。
阅读全文
摘要:switch...case...使用范围的演进;从字节码角度分析了switch...case...的两种实现(lookupswitch和tableswitch)、与if...else...的性能比较、字符串和枚举的分支检索方式;常见问题记录。
阅读全文
摘要:本文上一次成稿是2014-07-09 20:35,暂不打算把这个系列做下去,先把以前的旧文发掉 最近入职,开始正式工作。公司主要开发语言是Java,之前并没有太多的使用经历,目前一方面参加公司的培训,另一方面是自学。本文记录了一些在自学《Thinking in Java》中的个人心得体会,并非书摘。
阅读全文
摘要:package com.ibatis.sqlmap.engine.mapping.parameter setParameters()中setParameter()加载了TypeHandler 对于java.util.date: 对于java.sql.Timestamp
阅读全文
摘要:lombok使用时遇到的问题以及思考总结,避免后续踩坑。作为话题延伸,探讨了@data和kotlin中的data区别与联系。
阅读全文