![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
不惑JAVA
HelloGeekCsdn
攻城攻城还需要一个师。
混迹互联网多年,有一点心得,有一点体会。
展开
-
不惑JAVA之JAVA基础 - Set 和 List
从学习JAVA到现在也有小十年了,工作一直在用但理论知识确是年年在忘,用了很多学了很多但都系统。人也快30了,而立之年何去何从?最近看到csdn中一个博主写的java系列博客不错,我这人比较懒估计自己从0开始估计写不下来,所以站在“巨人”肩膀上开始自己的笔记,希望能比较系统的将java知识梳理一下。 此blog大量参考Java之美[从菜鸟到高手演变]之集合类,因为已经写得很不错了,此blog会对一原创 2016-05-10 11:33:37 · 1106 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - 反射
反射是什么反射机制简单理解就是指程序在运行的时候能够获取或修改自身信息。如果知道一个类的名称/或者它的一个实例对象, 就能把这个类的所有方法和变量的信息(方法名,变量名,方法,修饰符,类型,方法参数等等所有信息)找出来。如果明确知道这个类里的某个方法名+参数个数 类型,还能通过传递参数来运行那个类里的那个方法,这就是反射。原理概述先介绍运行时类型识别。运行时类型识别(Run-time Type Id原创 2016-04-28 16:14:42 · 435 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - ThreadLocal
ThreadLocal在数据库连接和session管理下有广泛的应用,了解ThreadLocal对struts、spring等开源代码的理解有很大的帮助。ThreadLocal如果单纯从名字上来看像是“本地线程”这么个意思,只能说这个名字起的确实不太好,很容易让人产生误解,ThreadLocalVariable(线程本地变量)应该是个更好的名字。我们先看一下官方对ThreadLocal的描述:原创 2016-05-09 15:48:16 · 814 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - String
本文适合有一定java基础的同学。本博客宗旨:突出重点,分析难点。String的本质先看一下String源码public final class String implements java.io.Serializable, ComparableString>, CharSequence { /** The value is used for character st原创 2016-05-06 15:29:32 · 746 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - volatile
volatile在多线程并发中用途非常广,原因是它有两个特性:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。禁止进行指令重排序。内存模型的相关概念要想弄明白volatile的原理,先需要知道内存模型的一些概念。先看一个图:计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程原创 2016-05-08 13:54:47 · 879 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - Concurrent 概述
本来想写ConcurrentHashMap的,但是感觉单写这一个知识点有点烂大街。java.util.concurrent包除了ConcurrentHashMap还是有很多好东西的,下面将会对一些重点知识点进行讲述。由于本人能力有限如有解释不到位的地方请各位大神们指出。本博文参考和引用了大量优秀博文,感谢这些优秀的博主。java.util.concurrent 包含许多线程安全、测试良好、高性能的并原创 2016-05-18 18:13:33 · 4779 阅读 · 1 评论 -
不惑JAVA之JAVA基础 - 锁 -synchronized、Lock解析
锁主要解决线程安全问题。而线程安全问题,即多个线程同时访问一个资源时,会导致程序运行结果并不是想看到的结果。synchronized先来了解一下互斥锁,顾名思义:能到达到互斥访问目的的锁。如果对临界资源加上互斥锁,当一个线程在访问该临界资源时,其他线程便只能等待。 在Java中,每一个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问。原创 2016-05-07 21:54:17 · 2452 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - 线程池
简单原理一个比较简单的线程池至少应包含线程池管理器、工作线程、任务队列、任务接口等部分。线程池管理器(ThreadPool Manager)的作用是创建、销毁并管理线程池,将工作线程放入线程池中;工作线程是一个可以循环执行任务的线程,在没有任务时进行等待;任务队列的作用是提供一种缓冲机制,将没有处理的任务放在任务队列中;任务接口是每个任务必须实现的接口,主要用来规定任务的入口、任务执行完后的原创 2016-05-06 15:24:19 · 806 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - 多线程
Thread 和 Runnable这个没什么好说的,网上一大堆文章。主要记着:使用继承Thread类方式实现;使用实现Runnable接口方式实现。开发中有时会使用下面这种用法:new Thread(new Runnable() { @Override public void run() { ...... }; }).star原创 2016-05-05 14:35:26 · 507 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - NIO (二)
上面主要讲解了java IO类及其如何使用,本篇主要讲NIO原理。NIO原理阻塞IO非阻塞与阻塞也就是我们常说的IO与NIO。在聊非阻塞前,我们先来看看网络通讯中的阻塞。常见的网络 IO 通讯流上面是一个网络通信IO流程图,何为阻塞呢 ?在以上过程中若连接还没到来,那么 accept 会阻塞 , 程序运行到这里不得不挂起, CPU 转而执行其他线程。在以上过程中若数据还没准备好, read 会一原创 2016-05-16 15:31:43 · 3640 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - NIO (一)
JAVA中最可以大书特书的我觉得至少有两个:一个是NIO,另外一个就是JVM了。这也就是为什么一直我没有去写这两个知识点的原因,因为我一直找不出来一个可以在一篇博文中全部覆盖这个知识点的总结。这两天翻了一下了JAVA中的圣经《think in java》和《Java核心技术》,虽然写的很好,但感觉写的也不是太符合我想一篇博文覆盖NIO知识点的要求。由于NIO本来就是技术难点,并且java对IO的设计原创 2016-05-13 15:56:22 · 4097 阅读 · 1 评论 -
不惑JAVA之JAVA基础 - HashMap
HashMap应该是平时应用开发中或是框架设计中最为常用高效的容器。在介绍HashMap之前,先介绍两个常见的区别。后期会专门介绍CurrentHashMap。hashmap 和 hashtable 区别HashMap和HashTable有什么区别,一个比较简单的回答是:HashMap是非线程安全的,HashTable是线程安全的。HashMap的键和值都允许有null值存在,而HashTabl原创 2016-05-10 16:54:48 · 953 阅读 · 0 评论 -
不惑JAVA之JAVA基础 - 阻塞队列
在学习线程池前,先要了解一下阻塞队列,这个知识点是线程池的核心。阻塞队列的作用使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被原创 2016-05-05 15:21:29 · 645 阅读 · 0 评论