死锁的两种体现形式分析和解决方案

死锁在多线程开发过程中比较经常遇到,并且这个问题很隐性,很难排查到问题的所在,即使是查看项目的日志都找不到,很让人头疼。死锁的体现形式主要有两种,分别是简单的死锁,在写代码的时候很容易避免,动态死锁就很麻烦。因为出现死锁的主要原因是两个锁的加锁顺序不同,动态死锁看似是加载顺序都相同,但是实际不同,所以一旦发生,就很难排查。

Redis实现分布式锁

高可用,高并发,安全性……随着互联网不断的发展,这些要求越来越高,不论是在面试还是在日常的工作中。作为程序员必须要做到与时俱进,学习和了解这些知识。平时在通勤路上都会去看看一些大神的博客和公众号,学习他们的经验,也会在项目中借鉴。刚好这次项目上用到同步锁,对比数据库的乐观锁、悲观锁、显示锁Lock以及synchronized等,最终……

Java虚拟机那些事儿(一):浅析JVM与JMM模型结构与关系

最近翻看了java线程相关的东西,书中有一边专门讲到java内存模型,读完之后边回想起java虚拟机模型,那时心中便在思考java内存模型(以下简称JMM)和java虚拟机模型(以下简称JVM)之间的关系,下面将详细讲述。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于……

Spring cloud Eureka实现思路和源码解析

现在很多公司都在使用Spring Boot和Spring Cloud构建微服务,目前来说这些技术在国内虽然应用很多,但是相关的中文版资料不是很多,关于内部原理分析的文章也是少之又少。现在团队开始准备使用Spring Cloud,最近也在研究相关的知识点,参考了很多博客,写了这篇文章,让我们一起来探讨Spring Cloud的组件Eureka的实现原理。

Fork-Join内部实现原理分析

在做一个长的任务的时候,需要消耗的时间很长,但是这个时候主流程又要等待这个长任务执行结束后才能执行。如这里这个长任务可能是从数据库中查出报表数据,计算封装出可以写入到报表的数据,主流程在等待往报表中写数据,但是长任务中迟迟计算不出报表数据,因此这里就需要考虑多线程,如果直接创建一个子线程,主线程还是需要等待这个子线程执行结束,这个方案……

Spring中Lazy、Scope注解对IOC容器Bean初始化的影响分析

面试的时候总是会遇到各种Spring主要功能点的问题,因为Spring对于java来说太重要。如Spring的IOC容器、动态代理、事务、切面编程等等。后期再更新文章的时候我们会慢慢讨论这些东西,这里现在我们先看其中一个功能点IOC容器,其实也不算是说IOC容器,主要的重点是放在Spring注解对IOC容器初始化的影响,也是在面试中最常说漏的。

博客建站(二):基于Markdown+Hexo+SSM+centos6.x+gitee设计、搭建个人博客网站

基于对别人博客的参考,然后个人的技术选型,形成一套属于自己的博客整体设计架构。目前博客网站已经在线上运行接近一个月了,是时候来说说建个人博客历程喽,希望对想建立个人博客的朋友有用。Typora,markdown的编辑器,这个是专门用来做文章编辑的,是markdown很好本地编辑器,没有之一;Hexo,集主题、静态页面等生成功能为一体……

死磕Java并发:深入分析ThreadLocal原理

ThreadLocal是啥?以前面试别人时就喜欢问这个,有些伙伴喜欢把它和线程同步机制混为一谈,事实上ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。那么ThreadLocal到底是什么呢?API是这样介绍它的:This class ……

Spring AOP+反射实现自定义动态配置校验规则,让校验规则飞起来

之前项目都是使用hibernate-validator来校验参数,但是实际上会出现一些小问题,就是校验规则都是通过注解的方式来完成,这样如果项目上线了,这个参数校验规则就没办法修改,如果出现校验规则问题,就必须修改后重新紧急上线(之前因为手机号码格式校验就出现过这个问题,因为新的号段不支持)。为了适应动态配置校验规则,在新起的项目我们就不再使用……