自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

街角下的蚂蚁

路漫漫其修远兮,吾将上下而求索!

  • 博客(11)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java锁机制之CAS(二)

导语上一篇提到了在多核CPU环境下怎么实现CAS的原子性操作。本节将列举CAS在Java中的具体应用。CAS实现锁的原理CAS的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。基于这个理念,试想,在并发场景中,如果我们在做CAS操作的时候不成功,那么可以一直循环执行,直到最终成功返回为止。这样没有加锁执行,线程不会阻塞影响性能,只会耗费更多的CPU资源。AtomicLong为列AtomicLong.java// 获取Un.

2020-08-15 22:23:15 106

原创 Java锁机制之CAS(一)

导语CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数:内存位置、预期数值和新值。CAS的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。简介在 Java 中,Java 并没有直接实现 CAS,CAS 相关的实现是通过 C++ 内联汇编的形式实现的。Java 代码需通过 JNI 才能调用。接下来将会再介绍一点其他的背景知识。有这些背景知识,才能更好的理解后续的内容。

2020-08-15 22:22:10 249

原创 LinkedBlockingQueue 深入分析

导语LinkedBlockingQueue是一个单向链表实现的阻塞队列,先进先出的顺序。支持多线程并发操作。相比于数组实现的ArrayBlockingQueue的有界,LinkedBlockingQueue可认为是无界队列。多用于任务队列。分析要点是否线程安全?数据结构是怎样的?怎么实现阻塞和非阻塞插入和获取元素?怎么实现插入和获取元素平衡的?应用与哪些场景?深入剖析成员变量// 队列的总容量private final int capacity;// 元素的总个数pri.

2020-08-15 22:19:43 373

原创 ArrayBlockingQueue 深入分析

导语ArrayBlockingQueue 是一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。分析要点是否线程安全?数据结构是怎样的?怎么实现阻塞和非阻塞插入和获取元素?怎么实现插入和获取元素平衡的?应用与哪些场景?深入剖析成员变量// 元素存放的对象,可以看出其数据结构仍然为数组final Object[] items;// 获取下一个元素的数组下标int takeIndex.

2020-08-15 22:18:25 362

原创 Thread-线程中断机制(interrupt)

导语在线程的中断机制里面有三个比较相似的方法,分别是interrupt()、isInterrupted()、interrupted(),之前一直没有了解的很透彻,记录一下。Java的中断是一种协作机制。调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。每个线程都有一个boolean的中断状态(这个状态不在Thread的属性上),interrupt方法仅仅只是将该状态置为true。方法对比方法描述interrupt(.

2020-08-15 22:17:00 538

原创 Markdown语法详解

Markdown 致力于使阅读和创作文档变得容易,虽然网上的教程有很多,始终还是觉得自己总结一遍印象更加深刻。块级元素段落和换行标题块引用列表代码块水平线内联元素链接强调代码图片页内跳转段落和换行段落就是在连续行上的文本后追加一个或多个空行,实现划分段落换行就是在行末追加3个以上的空格,实现换行标题# 一级标题## 二级标题### 三级标题实现效果:一级标题二级标题三级标题块引用在引用的段落前加上字符>,即可实现段落

2020-08-15 22:11:58 79

原创 Vim基本命令

Vim的几种模式正常模式:可以使用快捷键命令,或按:输入命令行。插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。替换模式:正常模式下,按R进入。启动Vim命令描述vim -c cmd file在打开文件前,先执行指定的命令;vim -r file恢复上次异常退出的文件;vim -R

2020-08-15 22:10:58 408

转载 Awk命令详解

awk文本和数据进行处理的编程语言awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。awk命令格式和选项语法形式awk [options] ‘script’ va

2020-08-15 22:08:21 3208

原创 LinkedList深入分析

导语LinkedList集成AbstractSequentialList,实现了List,Deque,Cloneable,Serializable接口。AbstractSequentialList提供了骨干实现。Deque一个线性 collection,支持在两端插入和移除元素,定义了双端队列的操作。分析要点是否线程安全?数据结构是怎样的?怎么实现扩容?怎么实现插入和获取元素?应用与哪些场景?深入剖析构造函数...// 元素个数transient int size = 0.

2020-08-09 22:53:14 134

原创 ArrayList深入分析

导语ArrayList是我们在编程中经常用到的类,它实现了接口List,List接口继承了Collection接口。ArrayList使用非常广泛,在集合框架中举重轻重。分析要点是否线程安全?数据结构是怎样的?怎么实现扩容?怎么实现插入和获取元素?应用与哪些场景?深入剖析构造函数...// 成员变量transient Object[] elementData;...public ArrayList(int initialCapacity) { if (initia.

2020-08-04 23:48:58 120

原创 Java基础篇之ThreadPoolExecutor

导语使用线程池的好处是能够减少在创建和销毁线程上所花费的时间以及系统资源的开销,提升系统整体性能。那么线程池是怎么实现这一目标的呢?线程池的创建public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threa.

2020-08-02 17:05:49 229

jd-gui反编译工具

java反编译工具,很好用

2016-11-25

Unix/Linux和Windows图形应用程序

是全新标准的跨平台集成解决方案。它是一个一站式解决方案,这个软件包含有以下一些产品:Xmanager 3D(OpenGL),Xshell,Xftp和Xlpd

2016-11-24

svn工具插件

svn工具插件

2016-11-24

maven工具下载

maven工具安装包

2016-11-24

Oracle客户端

Oracle客户端,无需安装oralce服务端就能使用plsql远程连接oralce

2016-11-24

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除