- 博客(11)
- 收藏
- 关注
原创 Java反射
重要的事情说三遍,反射真的很重要,很重要,很重要!之前我们在讲类加载的时候提到过一点反射,因此大家可以猜到又要和jvm打打交到了。 关于反射这个概念,其实我从很早之前就开始看了,但是一直处于知道概念,知道怎么用的阶段,还是那句话,学知识最重要的其实还是知道怎么来的,以及它解决了什么问题。按我理解,反射其实可以帮助我们动态的构建耦合性低的代码,说白了就是很灵活。但是,反射也有一些问题,我觉得对于j...
2018-05-20 12:07:04
164
原创 同步与异步,阻塞与非阻塞的关系
这几个知识点其实用处很多,也是很容易搞混的,我们平时可能用了但是并没有发现,今天想来总结一下。 我第一次感受到同步和异步的不同是在学习volatile的时候(因为我之前也没有多线程概念),之前也被同步啊这些概念搞的很乱。当我主线程新建了一个子线程之后两个线程是同时运行的,当时我才发现原来他们不是串行的,献丑了。好了进入正题。从总体来看,同步和异步的概念是大于阻塞与非阻塞,并且他们之间没有对应...
2018-05-20 12:06:01
397
原创 Java类加载器
在写本章之前给大家看一张我之前在一个群里学到的,大家加上自己的思考去看:(有点丑不要介意) 有想讨论的同学可以给我发消息。好了,咱们来看一下什么是类加载器。作用当然很不用说了,看名字就知道。来段代码认识一下它(们):java.lang.ClassLoader loader = Thread.currentThread().getContextClassLoader(); ...
2018-05-18 15:38:34
134
原创 Java类加载
刚经历了一段面试,发现自己在java这一块还是入门了(其他方面就一般般,特别是数据结构和算法),接下来分享一些我觉得很重要的知识点。Java类加载常识:我们都知道自己写的.java文件会被静态编译器编译成.class文件(二进制文件或者字节码文件),你在自己工程的目录下面下会找到一个classes文件夹,里面放的就是编译好的class文件。 好了,我们编译好的class文件有什么作用...
2018-05-18 15:35:42
180
原创 要想有成绩,先静下心来读几本厚厚的书
自我认知:其实我不是一个技术宅,我本身对做程序员是很抵触的,不喜欢打代码,甚至很反感,一度逃避,以至于到现在代码能力还是很弱。我曾也是个“枝上柳棉吹又少,天涯何处无芳草”的骚年,也是个“世人笑我太疯癫,我笑他人看不穿”的浪人,也是个宁缺毋滥的痴情人士(也至于恋爱都没谈过)。 真正有提升感觉也是到了大三下学期(大三上是一个过渡),不过还是蛮差劲的。 真正刺痛我的是最近的找实习岗位,和我一...
2018-05-18 15:29:44
255
原创 Java多线程之volatile关键字-轻量级同步机制
volatile:volatile关键字修饰共享变量想必已经不陌生了,它的一直是面试中的热点,为何它具有如此高的热度呢?我的理解:我们在实现并发问题的时候一律采用锁机制,甚至只使用内部锁,没问题,程序一般不会出现大的问题。但是,性能往往是我们追求的,有时候我们甚至愿意牺牲一些正确性来保证性能。那么,volatile为什么叫做轻量级同步机制,就是在某些情况下我们可以灵活使用volatile来...
2018-05-18 15:26:10
308
原创 关于Storm中操作collector.emit()报出ConcurrentModificationException的解决办法
隔壁老孙头最近写代码遇到了一个问题,他的代码是这样的,然后报出了ConcurrentModificationException的错误。public void execute(Tuple tuple, BasicOutputCollector collector) { ArrayList<String> list = (ArrayList<String>) tup...
2018-05-18 15:21:08
1070
1
原创 Java多线程之有序性(二)
有序性好了,上一章我们讲了有序性出现问题的原因,今天我们来细讲一下有序性的保证方式。 书上有一段比较匪夷所思的关于有序性定义。 有序性:指在什么情况下一个处理器上运行的一个线程所执行的内存访问在另一处理器运行的另外一个线程看来是乱序的,乱序是指:内存访问的顺序看起来像是发生了变化。 我不随意揣测这个定义了,看不懂也没关系,我们接着看下面就好了。我对有序性的理解是:对于共享变量的操作一...
2018-05-18 15:16:36
1590
1
原创 Java多线程之有序性(一)
有序性:学识甚浅,大家仅作参考吧。字有点多,能看进去应该会有收获: 对于初学者来书,这一章涉及到的知识点很多,在这之前,我总结几点重要的知识点: 1.Java内存模型: 为什么内存模型这么重要?其实细想一下,多线程和单线程相比,出现问题不就是内存里面的值可能与预期值(单线程运行/串行运行)之间不一致嘛。所以一定至少要知道读写操作是怎么操作内存的!! 2.Java程序的运行顺序: 程序...
2018-05-18 15:08:09
2168
原创 Java多线程之可见性(一)
可见性:引言:上一篇文章我们详细地讲了一下什么叫原子性,其中提到了用互斥变量来控制两个线程对缓冲区的访问,即wait()和signal()操作。 我们说在一个线程执行wait()操作进入临界区之后,对于另一个想访问的线程来说,由于mutex=0而进入不了临界区,这其实是不准确的。在其他线程看来,此时mutex值还可能是1。那么问题究竟出在哪呢,其实就是可见性问题。 有一个很重要的例子,摘自...
2018-05-18 14:50:06
506
2
原创 Java多线程之原子性
友情提示:作为一个java小白最近在看java多线程知识,东西还是比较多,推荐大家去看《Java多线程编程指南》,怕自己忘了,所以决定码些字。开始之前,建议大家一定要系统地学习一下操作系统,并且不能光看网上碎片化的知识点,所以一点一点来吧。我准备先回顾一下非常基础而且重要的知识点,先从三个特性下手,原子性,可见性,有序性。每一点的内容都很多,一点一点来,先介绍原子性。原子性:定...
2018-05-18 14:39:23
1988
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人