2018年8月21日

java内存模型JMM理解整理

摘要: 什么是JMM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在 阅读全文

posted @ 2018-08-21 10:41 阿姆斯特朗回旋炮 阅读(31618) 评论(6) 推荐(7) 编辑

2018年8月6日

java.util.concurrent中的几种同步工具类

摘要: java.util.concurrent并发包中提供了一系列的的同步工具类,这些基础类不管是否能在项目中使用到,了解一下使用方法和原理对java程序员来说都是有必要的。博主在看《java并发编程实战》这本书中提到了其中几个工具类,本文就对这些类进行简单的描述。 CyclicBarrier(栅栏) 4 阅读全文

posted @ 2018-08-06 10:08 阿姆斯特朗回旋炮 阅读(2448) 评论(0) 推荐(0) 编辑

2018年7月18日

synchronized ReentrantLock 比较分析

摘要: 在编写多线程代码的时候,对于不允许并发的代码,很多需要加锁进行处理。在进行加锁处理时候,synchronized作为java的内置锁,同时也是java关键字,最为被人熟知,即使是最初级的java程序员,只要知道java并发处理的,都会知道syschronized。 java5.0之后,java提供了 阅读全文

posted @ 2018-07-18 19:17 阿姆斯特朗回旋炮 阅读(1172) 评论(0) 推荐(1) 编辑

2018年6月29日

一次Spring Transactional嵌套事务使用不同的rollbackFor的分析

摘要: 起因: 项目期间由于一次异常回滚问题,发现自己在事务知识方面知识的遗漏,趁着这次机会,做了几次rollbackFor的测试。 测试: 现在有两个事务,事务oute包含事务Inner。事务A回滚规则是当事务抛出TestException,其中TestException继承RunTimeExceptio 阅读全文

posted @ 2018-06-29 18:03 阿姆斯特朗回旋炮 阅读(9858) 评论(2) 推荐(1) 编辑

2018年5月15日

ThreadPoolExecutor 学习笔记

摘要: 线程池的奥义 在开发程序的过程中,很多时候我们会遇到遇到批量执行任务的场景,当各个具体任务之间互相独立并不依赖其他任务的时候,我们会考虑使用并发的方式,将各个任务分散到不同的线程中进行执行来提高任务的执行效率。 我们会想到为每个任务都分配一个线程,但是这样的做法存在很大的问题: 1、资源消耗:首先当 阅读全文

posted @ 2018-05-15 15:45 阿姆斯特朗回旋炮 阅读(1117) 评论(0) 推荐(0) 编辑

2018年4月4日

MySQL InnoDB锁机制

摘要: 概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理。在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数据的一致性,就需要数据库的锁机制。每种数据库的锁机制都自己的实现方式,mysql作为一款工作中经常遇 阅读全文

posted @ 2018-04-04 10:24 阿姆斯特朗回旋炮 阅读(10861) 评论(1) 推荐(1) 编辑

2018年3月21日

ThreadLocal简析

摘要: 简介 ThreadLocal在Java多线程开发中常见的一个类,在面试中也经见的问题,比如ThreadLocal的作用是什么,ThreadLocal的实现原理是什么等等。ThreadLocal是java中一个类,用于实现变量在多线程并发环境下维持线程的封闭性(封闭指的是可变对象对于其他线程是不可访问 阅读全文

posted @ 2018-03-21 11:33 阿姆斯特朗回旋炮 阅读(262) 评论(0) 推荐(0) 编辑

2018年3月14日

java volatile关键字解析

摘要: volatile是什么 volatile在java语言中是一个关键字,用于修饰变量。被volatile修饰的变量后,表示这个变量在不同线程中是共享,编译器与运行时都会注意到这个变量是共享的,因此不会对该变量进行重排序。上面这句话可能不好理解,但是存在两个关键,共享和重排序。 变量的共享 先来看一个被 阅读全文

posted @ 2018-03-14 17:56 阿姆斯特朗回旋炮 阅读(3723) 评论(1) 推荐(2) 编辑

2018年3月12日

几种常见的排序算法

摘要: 几种常见的排序算法 冒泡排序(Bubble Sort): 冒泡排序是一种计算机科学领域的较简单的排序算法。以数字排序为例,冒泡排序让相连的两个数字进行比较,将比较大的数字放在右边。假设最大的数字N在最左边。第一趟排序的时候,N每次和右边的数字做对比,都将比右边的数字大,然后将N一直往右移动只到最右。 阅读全文

posted @ 2018-03-12 14:55 阿姆斯特朗回旋炮 阅读(1586) 评论(1) 推荐(2) 编辑

2018年1月31日

mysql查看执行计划重构后的查询

摘要: MYSQL优化器会对客服端发送的SQL语句进行优化,优化后的SQL语句再被MYSQL执行。然后我们在优化SQL的时候,怎么获取到MYSQL优化后执行语句呢。 执行了上述语句后,可以看到结果如下图: 将Message复制下来后查看: MYSQL重构的查询如上图。 在学习《高性能MySql》这本书的时候 阅读全文

posted @ 2018-01-31 16:19 阿姆斯特朗回旋炮 阅读(326) 评论(0) 推荐(0) 编辑

导航