能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
代码洁癖,喜欢阅读框架源码,热爱技术分享
Redis相信大家都很熟悉,它是我们常用的分布式缓存中间件之一。那么大家对于Redis Cluster集群是否熟悉呢?在Redis集群中并没有使用一致性hash, 而是引入了 **哈希槽**的概念,为什么选哈希槽不选一致性哈希。
线程池是一个非常重要的知识点,也是池化技术的一个典型应用,相信很多人都有使用线程池的经历,但是对于线程池的实现原理大家都了解吗?本篇文章我们将深入线程池源码来一探究竟。
图的遍历算法(深度优先遍历,广度优先遍历)我们在之前文章已经讲过,今天我们一起来看一下最短路径算法。日常工作、学习常用的算法大部分已经更新到算法专栏中,欢迎大家关注我的算法专栏。
你们了解字符串匹配算法吗?在我们刷算法题的时候,总有一类问题是解决字符串匹配的,其实字符串匹配是有算法技巧的,最基本的BF算法,进阶的RK算法,Sunday 算法,BM算法,KMP算法,下面我们就来一起走进这些算法。
五大常用算法(分治、动态规划、贪心、回溯、分支界限(深广优先遍历)),我们之前的文章基本上都有涵盖,唯独差一个贪心算法,本篇文章我们将一起走进贪心算法的妙用。
动态规划可谓是大名鼎鼎,笔试面试中的高频考点,也是重点难点,动态规划类型题目灵活多变,难度系数也相对较高,往往我们做不好动态规划的题目就会与心仪的offer失之交臂,本篇文章我们就一起来研究一下动态规划算法。
斐波那契数列想必大家都听过,如果感觉斐波那契数列有点陌生的同学,肯定是没有好好学算法。一般在讲解递归的时候,我们都会拿出斐波那契数列这个例子来,因为它实在太经典了,今天我们就来深入研究一下斐波那契数列的解法。
不晓得大家晓不晓得并查集这个算法,我之前是没怎么听过(孤陋寡闻),其实这个算法是非常常见的一个算法,也是能用固定的套路去解决某一类问题,最为经典的就是亲戚问题。
老早之前就说要在虚拟机上装一波Kubernetes集群,但是呢之前装了一次报错了,后来一直也没有重装,趁着这几天放假休息,又重新装了一波,可算是搞定了,本篇文章就将安装的注意事项,以及安装过程向大家分享一下,让大家避免踩坑。
想必大家对树和图这种复杂数据结构的遍历有所困扰,我们今天就以遍历树为例,带大家看一下我们应该如何去遍历一颗树,不同的遍历方式又有什么特点,我们日常使用的遍历方式就是深度优先算法和广度优先算法,下面我们一起来研究一下吧。
今天给大家带来一个小知识,那就是分别从前端和后端同学的不同角度看他们是如何处理文件下载的,这个知识不光能有助于我们处理文件导出的需求,也能加深我们对HTTP协议的理解。
本篇文章我们将介绍一些超级实用的算法小技巧,灵活使用这些算法小技巧可以帮助我们更好的解决遇到的问题,让我们的时间复杂度,空间复杂度大大降低,有效的提高我们的编程能力。
本篇文章属于数据结构连载篇的其中之一,共分为上中下三篇。上篇主要介绍线性数据结构数组、链表、栈、队列;中篇介绍树和图;下篇介绍复合数据结构哈希表、跳表、线段树等。希望大家持续关注,谢谢。
本篇文章属于数据结构连载篇的其中之一,共分为上中下三篇。上篇主要介绍线性数据结构数组、链表、栈、队列;中篇介绍树和图;下篇介绍复合数据结构哈希表、跳表等。希望大家持续关注,谢谢。
本篇文章属于数据结构连载篇的其中之一,共分为上中下三篇。上篇主要介绍线性数据结构数组、链表、栈、队列;中篇介绍树和图;下篇介绍复合数据结构哈希表、跳表等。希望大家持续关注,谢谢。
权限管理一直都是初级程序员学习的一大重点,也是一大难点,有单点登录,有联合登录,有session有Token,有各种权限框架,还有什么是RBAC,以及分布式下如何做权限管理。
基于信息化的飞速发展,数据已经成为21世纪的一种潜在能源。我们可以利用大数据,人工智能等相关技术,科学的管理数据,进行数据分析,挖掘出数据的潜在价值,让数据转化为生产力的原料,生生不息。
大家都知道Spring 通过三级缓存来解决循环依赖问题,但是我今天写出来个循环依赖,直接报错,难受啊,三级缓存并没有被关闭,本篇文章我们就来深入分析一下三级缓存,以及为啥我的项目启动不了,罪魁祸首就是@Async。
本篇文章我们就来聊一聊什么是锁,为什么需要锁,究竟如何加锁,当然我说的也可能有不足之处,欢迎大家积极在评论区探讨。
数据库读写分离是很多公司绕不过去的一个发展阶段,从单体数据库,到主备模式,再到读写分离,分库分表。每一个阶段都能为我们解决一些问题,但也带来了新的挑战。本篇文章我们就主要研究一下数据库读写分离及其带来的问题如何解决。
哎呀妈,又是数据库的隔离级别,大家都要听吐了,每次面试或者和数据库相关的技术分享总会提到数据库的隔离级别,大家真的搞清楚了吗,每种隔离级别都有什么特点,我们该如何选择合适的事物隔离级别。(本文仅针对MySQL数据库介绍)
互联网发展至今,各个公司企业的数据量都大幅增长,分库分表越来越多的被我们用到,那么我们应该如何针对我们自己的业务场景,对数据进行合理的划分,用最小的代价解决掉性能瓶颈。
本篇文章是设计模式专题的第十二篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲外观模式,也叫门面模式。
本篇文章是设计模式专题的第十一篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲责任链模式。
本篇文章是设计模式专题的第十篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,能够帮助我们实现事件驱动的观察者模式。
本篇文章是设计模式专题的第八篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲适配器模式。
本篇文章是设计模式专题的第七篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,以更加优雅的方式扩展类的装饰器模式。
MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章我们就以打印SQL,SQL分页为例,来讲一下如何开发MyBatis的插件。
本篇文章是设计模式专题的第六篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,用于创建重复对象的原型模式。
本篇文章是设计模式专题的第四篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,最为重要的代理模式。
本篇文章是设计模式专题的第三篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,最为常用的工厂模式。
本篇文章是设计模式专题的第二篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,最为优雅的策略模式。
本篇文章是设计模式专题的第一篇文章,我会将遇到的设计模式都一一总结在该专题下,我会把自己对每一种设计模式的感悟写下来,以及在实际工作中我们该如何去灵活应用这些设计模式,欢迎大家关注。本篇文章我们就来讲一讲,应用最为广泛的单例模式。
不晓得大家了解不了解MySQL的MVCC机制,这个是MySQL底层原理中比较重要的一项,它能极大的提高MySQL数据库的并发性能。MVCC广泛应用于数据库技术,像Oracle,PostgreSQL等都引入了该技术。本篇文章我们就带大家一起了解一下MySQL的MVCC机制实现原理。
本文我们将借助六问六大,带大家一起来了解一下微服务中的网关组件,包括什么是微服务网关?网关的作用是什么?使用网关的好处是什么?为什么要使用网关?网关解决了什么问题?主流的解决方案有哪些?
想必从事于开发工作的各位,大家或多或少的会遇到数据库死锁的问题。我们在开发中最常使用的数据库就是MySQL数据库,本篇文章将以MySQL数据库为例,对死锁问题进行讲解。
本文就简单的介绍一下MySQL数据库中的锁,锁的级别,读写锁等,有关于锁的竞争,锁带来的问题,以及如何解决这些问题,会单独写一篇文章进行讲解。
数据库事务问题以及Spring事务管理的相关内容已经在上篇文章已经做了深入的理解,那么本篇文章我们就来一起讨论一下分布式事务,以及我们为什么我们要避免分布式事务。
从本篇文章开始,我们将进入事务相关的专题,我们将从Spring事务管理,什么是分布式事务,分布式事务的解决方案等几个角度,分多篇文章进行讲述,欢迎大家关注。虽然事务已经是一个被讲烂的话题了,但是越是如此我们越要去讲,去总结,去沉淀,讲的人越多说明这块知识对我们越重要,但凡是开发事务是必会的。本篇文章我们就来介绍一下Spring事务。
目前主流的**Kubernetes**集群管理平台就是**Kubesphere**和**Rancher**,那么我们该如何在他们之间进行抉择呢?本文我们就来一起探究一下这两个平台的优劣。
SpringBoot在包扫描时,并不会扫描子模块下的内容,这样就使得我们的子模块中的Bean无法注入到Spring容器中。SpringBoot就为我们提供了spring.factories这个文件,让我们可以轻松的将子模块的Bean注入到我们的Spring容器中,本篇文章我们就一起探究一下spring.factories 跨模块实例化Bean的原理。
为什么我们在使用SpringBoot框架开发Java Web应用需要引入大量的starter?例如,我们引入Redis就在Maven中导入spring-boot-starter-data-redis。大家都知道SpringBoot的核心功能是自动装配,简化配置,我们通过starter实现SpringBoot自动装配的功能。那么我们如何去构建自己的starter呢?
相信很多同学在面对线上数据库时都畏手畏脚,即使这样都难免手滑,一不小心手一抖就将数据或者是表,库删除。当然一些注重规范的公司,不会给开发人员删除表或者是库的权限,但误删数据是常有的事,那么这种情况发生,我们改怎么办呢?跑路?哈哈,当然删库跑路是句玩笑话,本文就为大家介绍一些数据误删除恢复的办法。
我相信有很多人会对这个Reactor模式比较陌生,但是Netty这个名字大家都会比较熟悉,即使没有学习使用过,也会对它有所耳闻,它可以说是Java高性能网络编程的代名词。Reactor模式就是Netty线程模型设计的核心,本文我们就以Reactor模式入手,探究一下经典的设计。
不知道大家有没有遇到这样的问题,当我们在对MySQL数据库进行查询操作时,条件写的是status!=1,理论上会将所有不符合条件的查询出来,但奇怪的是结果为NULL的就查不出来,必须得拼接上条件or status IS NULL。本篇文章我们就一起探究一下MySQL中的NULL。
IO多路复用技术是操作系统级的技术,也就是我们常说的底层原理。好多框架,中间件都是使用了IO多路复用技术,才使其具备更高的性能,比如我们经常使用的Redis、Nginx和我们耳熟能详的高性能通信框架Netty。本篇文章我们一起探究一下IO多路复用技术。
想必大家都晓得,程序员想要提升,性能优化这块是最重要的一点,实现同样的功能,不同的设计思路能够极大的节省服务器开销,能够更好的提高用户体验,本篇文章我们就来一起探讨一下,性能优化优化的是哪些点。
随着前后端分离技术越来越成熟,后端向着微服务发展,前端项目也越发臃肿起来,不得不做更细粒度的拆分,就这样微前端的思想开始盛行,一些大厂也出台了一些解决方案,本文就让我们一起来了解一下微前端。
万物上云时期,我们的网络该怎么搞,我们该如何将若干机器组合起来,让它们互联互通。公有云,私有云,混合云下,我们应该怎样灵活的去建设统一的网络环境。本文将深入浅出的带大家研究一下,云计算环境下如何构建统一的网络环境。
想必工作中大家为了保证接口的稳定性与安全性都会对入参进行校验。五花八门的校验写法会让我们的代码不够整洁,本文将介绍如何使用SpringBoot为我们提供的参数校验器,并对其进行扩展,让其能够实现自定义校验。当然在一些互联网项目中,为保证接口的高性能,校验都是放在前端做的,但是在阿里开发规约中是这样说的越是简单的接口越不需要进行参数校验,越是复杂的接口越需要参数校验,因为复杂的接口试错成本很高,校验对接口性能的影响微乎其微。