Java
来自大山的搬砖工
乡村程序员
展开
-
Java中的各种锁对比分析附带实例详细介绍
乐观锁、悲观锁、自旋锁、适应性自旋锁、无锁、偏向锁、轻量级锁、公平锁、非公平锁、可重入锁、非可重入锁、独享锁、共享锁转载 2019-11-27 11:11:10 · 494 阅读 · 1 评论 -
分布式开放消息系统(RocketMQ)的原理与实践
分布式开放消息系统(RocketMQ)的原理与实践分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题 消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的?关键特性以及...转载 2019-11-27 10:59:49 · 450 阅读 · 0 评论 -
通用列表转换树形结构实现算法(JAVA版)
树形结构构造大体分为如下三步: (1)构造基类对象 (2)构造扩展类对象 (3)组装算法一 构造基类对象 基类对象必须包含对象id、父级id、子对象集合,其他属性根据需要可自行定义,如下图所示:import lombok.Getter;import lombok.Setter;import lombok.ToString;import ja...原创 2019-11-26 16:49:06 · 801 阅读 · 0 评论 -
从实践角度重新理解 BIO 和 NIO
实现一个简易单线程服务器要讲明白BIO和NIO,首先我们应该自己实现一个简易的服务器,不用太复杂,单线程即可。为什么使用单线程作为演示因为在单线程环境下可以很好地对比出BIO和NIO的一个区别,当然我也会演示在实际环境中BIO的所谓一个请求对应一个线程的状况。服务端publicclassServer{publicstaticvoidmain...转载 2019-11-18 17:05:44 · 190 阅读 · 0 评论 -
spring事物隔离级别,传播特性由浅入深,@Transactional注解
本人在学习spring注解时通过网上各个博客浏览,把好多人的结论总结到一起,喜欢就看看吧。spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声...转载 2019-11-15 10:30:40 · 172 阅读 · 0 评论 -
基于redis实现分布式锁服务——模拟火车站售票服务(附源码)
本文通过模拟火车站售票服务,介绍如何基于redis实现分布式锁原创 2019-11-14 11:20:54 · 495 阅读 · 0 评论 -
Java 并发之AbstractQueuedSynchronizer(AQS)操作图解细节
关键字:CLH,Node,线程,waitStatus,CAS,中断目录图解AQS的操作细节0、前言1、基本概念1.1、CAS自旋1.2、Node1.3、CLH & AQS1.4、ReentrantLock2、图解AQS2.1、线程A单独运行2.2、线程B开始运行2.3、线程C开始运行2.4、线程A停止运行,线程B继续运行2.5.1、线程B停止运行,线程C继续...转载 2019-10-25 15:37:40 · 408 阅读 · 0 评论 -
挑战10个最难的Java面试题(附答案)
这是收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,而且包括我的朋友和同事在内的许多程序员都觉得很难回答。1 为什么等待和通知是在 Object 类而不是 Thread 中声明的?一个...转载 2019-10-23 16:48:54 · 170 阅读 · 0 评论 -
springBoot注解事务失效分析总结
一 问题背景 前段时间在项目中使用到spring事务注解功能,在自测代码时发现异常下未能产生回滚操作,借此空闲将之前问题定位思路整理如下,希望对大家定位该类问题提供解决思路。二 分析与解决本次测试工程采用springBoot+mybits+mysql进行验证,在controller中注入service调用service的实现类进行事务操作,项目结构如下图所示 ...原创 2019-10-23 11:17:50 · 2835 阅读 · 0 评论 -
JVM知识点学习总结
一.JVM内存结构 先看一张图,这张图能很清晰的说明JVM内存结构布局。 JVM内存主要分为堆内存、方法区以及栈内存,堆内存是JVM中占用空间最大的区域,它又包括年轻代、老年代,而年轻代又可以划分为EdenSpace空间、FromSpace空间、ToSpace空间,一般按照8:1:1对年轻代进行划分;JVM和系统调用之间的关系如下图所示:方法区和堆是所有线程共享的内存区域;而java栈、...原创 2018-06-28 14:07:07 · 184 阅读 · 0 评论 -
Java线程学习笔记
1. 线程与进程区别进程:进程是资源分配的最小单位,每个进程都有独立的代码和资源空间,一个进程包含多个线程线程:线程是cup调度的最小单位,每个线程都有独立的运行栈和程序计数器,同一类的线程共享代码和内存空间在Java中每当运行一个程序的时候都会至少启动两个线程,一个是main线程,一个是垃圾回收线程。在执行一个类的时候都会启动一个jvm,每个jvm相当于操作系统内的一个线程。2.实现多线程三种方...原创 2018-06-30 15:25:31 · 347 阅读 · 0 评论