![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 90
今秋复来此
这个作者很懒,什么都没留下…
展开
-
漫谈Spring事务管理原理
从代理模式到代码实现, 漫谈spring声明式事务原理原创 2022-07-18 19:02:53 · 131 阅读 · 1 评论 -
规范,优雅的使用工具类
什么是工具类大家项目中不管是自己练习的demo还是企业里正式的项目都肯定有各种各样的工具类, 有祖传的也有新写的. 要说什么是工具类, 大家都能张口就来, 封装了公共逻辑的, 不能实例化的, 不依赖具体业务数据的就是工具类.实际企业项目中的问题但是在项目中我发现大家写的工具类往往不符合Sonar静态代码规范, 甚至在工具类依赖框架bean的时候将工具类实例化当作普通类来使用.理想的工具类我认为理想中的工具类应该具有如下特性:符合工具类定义, 抽象通用逻辑, 不依赖具体业务数据提供静态方法给调原创 2021-04-14 13:41:37 · 342 阅读 · 0 评论 -
看上市公司如何保证代码质量
代码质量控制是开发人员的朋友而不是敌人, **我们的目标是得到质量良好, 可以长期维护的代码, 质量控制是达到这一目标的手段原创 2020-08-11 15:12:47 · 716 阅读 · 0 评论 -
你看远处的山它好像一个小顶堆
原创文章,转载请私信.关注公众号 tastejava 学习加思考,品味java之美什么是小顶堆小顶堆是一种经过排序的完全二叉树, 其满足如下性质:小顶堆中的任意父节点都比其两个孩子结点小由上方性质又可以推导出如下性质:小顶堆的根节点为整个堆元素中最小的元素将小顶堆装入数组我们当然可以用面向对象的方式描述一颗二叉树, 但是有没有不浪费一丁点空间. 即除了元素本身开销外, 尽量不额外占用内存空间的描述方式呢?有的, 我们可以把小顶堆装入数组中. 为了把小顶堆装入数组中, 我们需要给出.原创 2020-06-30 18:08:40 · 213 阅读 · 0 评论 -
来啊, 一起看遍JDK源码
原创文章, 转载请私信. 关注 tastejava 学习加思考, 仔细品味java之美为什么要阅读源码面试要考, 不管是什么公司面试, 源码相关知识点考察是少不了了, 例如ArrayList与LinkedList区别这样的烂大街问题开发要用, 肯定要很熟悉JDK常见api, 理解其内部实现和特点才能正确灵活的运用怎么阅读源码经过一段时间的摸爬滚打, 我发现要想高效的阅读源码, 首先阅读英文原始文档的能力要强, 其次要熟练掌握所使用的IDE方法跳转相关操作, 如实现类跳转到接口, 接口跳转到.原创 2020-06-29 15:31:11 · 213 阅读 · 0 评论 -
巧妙的CAS与乐观锁思想
原创文章,转载请私信。关注 tastejava 学习加思考,品味java之美摘要接下来我们先理解CAS怎么保证安全的修改共享变量,然后查看JDK源码分析其最佳实践,再举例实际企业开发中乐观锁思想的应用。最后总结CAS以及分析其局限性。什么是CASCAS是CompareAndSwap,即比较和交换。为什么CAS没有用到锁还能保证并发情况下安全的操作数据呢,名字其实非常直观的表明了CAS的...原创 2020-03-04 09:53:40 · 194 阅读 · 0 评论 -
10句有效代码带你分析6种线程状态
原创文章, 转载请私信. 关注 tastejava 学习加思考, 仔细品味java之美为什么要了解java线程的状态多线程高并发是初级开发者迈向中高级开发者必须要掌握的能力, 万丈高楼平地起, 在深入了解这部分内容前, 我们要明确最基本的概念, 即线程有哪些状态.从源码来看Java线程有哪些状态得益于开源精神, 我们可以直观的分析看到在Java中, 线程到底有哪些状态. Java中记录...原创 2020-02-13 10:50:31 · 237 阅读 · 0 评论 -
从源码角度分析hashCode和equals, 再也不背hashCode和equals的覆写规则了:)
原创文章, 转载请私信什么是hashCode和equalshashCode和equals都是Object对象中的方法, 也就Java中是所有对象都默认拥有这两个方法. 方法的作用正如其名, hashCode用于返回当前对象的hash值, equals方法用于比较两个对象是否相等.hashCode和equals默认实现Object类中hashCode和equals的源代码分别如下所示:...原创 2019-12-23 08:27:30 · 150 阅读 · 0 评论 -
Java BIO NIO 与 AIO 分析第三部分之AIO
AIO部分上一篇文章中分析了BIO部分, 接下来分析一下AIO部分, AIO是JDK1.7新增的属于java.nio包下的IO组件. 还是一样的思路, 从了解AIO的各个重要组件开始. JAVA的AIO只提供TCP操作和文件操作, 没有提供UDP支持. 主要组件有CompletionHandler, AsynchronousFileChannel, AsynchronousServerSocke...原创 2019-12-05 10:36:03 · 378 阅读 · 0 评论 -
jstack排查CPU占用过高之BlockingQueue的陷阱
什么是jstack原创 2019-12-02 16:34:13 · 2014 阅读 · 0 评论 -
Java BIO NIO 与 AIO 分析第二部分之NIO
NIO 大致体系结构原创 2019-11-29 17:50:40 · 178 阅读 · 0 评论 -
Java BIO NIO 与 AIO 分析第一部分之BIO
BIO NIO AIO的概念首先要明确阻塞/非阻塞即blocking/non-blocking和同步/异步即synchronous/asynchronous的概念, 阻塞和非阻塞指的是是否会阻塞当前线程, 例如调用ServerSocket的accept方法后, 当前线程就会阻塞等待连接建立. 同步和异步指的是一个操作结果需要主动获取还是通过回调函数处理, 例如:// 解释异步同步概念伪代码/...原创 2019-11-25 10:10:14 · 242 阅读 · 0 评论 -
JDK8 Optional 应用场景与方式分析
Optional 出现的意义Optional 是从 JDK1.8 开始提供的一个容器类, 主要用于避免空指针异常(NPE), 其提供的一系列方法配合 Lambda 表达式可以让代码更加清晰, 语义化, 以及避免了空指针异常的问题这里要注意是避免空指针异常, 而不是避免返回null.Optional 源码分析及使用关于 Optional 方法怎么使用的资料网络上也有很多了, 不过一些文章不是很...原创 2019-11-14 15:14:45 · 6165 阅读 · 3 评论 -
JDK8 Stream 流式操作分析
Stream 是什么, 能干什么Stream 实例的创建Stream 的使用Stream实例的操作Stream实例操作结果的聚集原创 2019-11-14 10:13:25 · 398 阅读 · 0 评论 -
Java函数式编程分析
Java开发者一般都习惯面向对象编程, 实际项目中函数式编程出现频率也不太高, 要理解函数式编程首先要理解一些前置概念, 我来总结一下Java中的函数式编程, 如果为其他人节约了时间, 减轻了学习成本, 那就太好了.什么是函数式编程函数式编程是一种编程范式, 允许将函数作为参数传递给目标方法, 目标方法也可以返回一个函数.(将方法实现延后到调用方法传递参数的时刻, 让参数或者返回结果包含逻...原创 2019-11-13 16:45:36 · 174 阅读 · 0 评论