Java进阶
文章平均质量分 95
以字节码、源码角度看java
FixedStarHaHa
这个作者很懒,什么都没留下…
展开
-
throw、throws、rethrow自定义异常类
一、throw、throws 二、re-throw 三、Difference between throw and throws 四、自定义异常类原创 2020-04-20 20:06:34 · 725 阅读 · 0 评论 -
try-catch-finally组合情况、执行过程字节码解读
1.try-catch-finally组合情况 2.执行过程字节码解读 3.finally中对返回值进行修改 4.finally中有返回值 5.finally是否必须执行原创 2020-04-20 20:02:26 · 482 阅读 · 0 评论 -
Exception处理机制、Exception Handler三种方法
Throwable、Exception、ErrorThe Throwable class is the superclass of all errors and exceptions in the Java language.An Error is a subclass of Throwable that indicates serious problems that a reasonab...原创 2020-04-16 11:20:59 · 5231 阅读 · 0 评论 -
final(variable、method、parameter、class)、immutable class
一、final声明属性,表示属性不可变:它只能指向初始时指向的那个对象,而不关心指向对象内容的变化//final 变量 对象可改变 final StringBuffer sb=new StringBuffer("abc"); sb.append("d"); System.out.println(sb.toString()); //其引用不可变 sb=new S...原创 2019-02-11 23:31:39 · 1695 阅读 · 0 评论 -
引用传递、值传递、Shallow Copy & Deep Copy
引用传递、值传递、Shallow Copy & Deep Copy(用构造器、或Cloneable接口实现)原创 2020-04-15 13:45:05 · 304 阅读 · 0 评论 -
java序列化、反序列化、serialVersionUID
java序列化概述、序列化原因、如何序列化、明确serialVersionUID的必要性、继承关系中序列化表现原创 2020-04-14 20:12:14 · 588 阅读 · 0 评论 -
Java IO Stream概述
一、What are the StreamsIn computer science Streams are defined as the ordered sequence of data elements.Provides a common I/O modelAbstract details of underlying source or destinationStream type...原创 2020-04-14 13:24:33 · 403 阅读 · 0 评论 -
Reader、Writer、BufferedWriter源码解析
Reader(read方法)、Writer(write、flush源码解析)、BufferedWriter源码解析原创 2020-04-13 19:05:57 · 359 阅读 · 0 评论 -
InputStream、OutputStream、BufferedOutputStream源码解析
InputStream(read方法)、OutputStream(write方法)BufferedOutputStream源码解析原创 2020-04-12 23:35:05 · 384 阅读 · 0 评论 -
泛型Generics
generics、generic type、Generic Method、Bounded Type Parameters、Wildcards、API应用举例原创 2020-04-09 20:41:10 · 315 阅读 · 0 评论 -
HashMap、Hashtable、LinkedHashMap、TreeMap 数据结构及不同点
HashMap(数组链表hashcode_equal)、Hashtable、LinkedHashMap(doubly-linked list)、TreeMap(红黑树) 数据结构及不同点原创 2020-04-07 21:51:22 · 326 阅读 · 0 评论 -
Iterator、ListIterator、Fail-Fast And Fail safe、自定义实现Iterator
为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(Iterator).迭代器是一个对象,他的工作是遍历并选择序列中的对象,他提供了一种访问一个容器对象中各种元素。迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象...原创 2019-02-26 18:18:14 · 242 阅读 · 0 评论 -
ArrayList、LinkedList、Vector
ArrayList(Size And Capacity数据结构、add、remove)、LinkedList(数据结构、add、remove)、Vector原创 2020-04-04 19:38:24 · 171 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
String(两种创建对象方式及在堆栈中存储、immutable、字符串拼接执行优化)、StringBuffer、StringBuilder原创 2020-04-03 18:40:01 · 257 阅读 · 0 评论 -
Java Inner Class
Nested ClassesThe Java programming language allows you to define a class within another class. Such a class is called a nested class, and the class that holds the inner class is called the outer clas...原创 2020-04-02 00:15:57 · 287 阅读 · 0 评论 -
Non-blocking Algorithms
Non-blocking algorithms in the context of concurrency are algorithms that allows threads to access shared state (or otherwise collaborate or communicate) without blocking the threads involved. In more...翻译 2020-03-30 16:42:34 · 351 阅读 · 0 评论 -
Blocking Queues
A blocking queue is a queue that blocks when you try to dequeue from it and the queue is empty, or if you try to enqueue items to it and the queue is already full. A thread trying to dequeue from an e...翻译 2020-03-25 15:06:53 · 201 阅读 · 0 评论 -
Thread Pools
Thread PoolsThread Pools are useful when you need to limit the number of threads running in your application at the same time. There is a performance overhead associated with starting a new thread, a...翻译 2020-03-25 14:41:02 · 2167 阅读 · 0 评论 -
Semaphores
A Semaphore is a thread synchronization construct that can be used either to send signals between threads to avoid missed signals, or to guard a critical section like you would with a lock. Java 5 com...翻译 2020-03-25 13:21:11 · 318 阅读 · 0 评论 -
Read / Write Locks in Java(未完)
A read / write lock is more sophisticated lock than the Lock implementations shown in the text Locks in Java. Imagine you have an application that reads and writes some resource, but writing it is not...翻译 2020-03-24 22:41:57 · 200 阅读 · 0 评论 -
Slipped Conditions
What is Slipped Conditions?Slipped conditions means, that from the time a thread has checked a certain condition until it acts upon it, the condition has been changed by another thread so that it is ...翻译 2020-03-24 17:34:56 · 202 阅读 · 1 评论 -
Nested Monitor Lockout嵌套的监控程序锁死
How Nested Monitor Lockout OccursNested monitor lockout is a problem similar to deadlock. A nested monitor lockout occurs like this:嵌套监视器锁定是一个类似于死锁的问题。 发生嵌套监视器锁定,如下所示:Thread 1 synchronizes on AThr...翻译 2020-03-23 19:32:29 · 292 阅读 · 0 评论 -
Lock
A lock is a thread synchronization mechanism like synchronized blocks except locks can be more sophisticated than Java’s synchronized blocks. Locks (and other more advanced synchronization mechanisms)...翻译 2020-03-23 16:58:06 · 305 阅读 · 0 评论 -
Starvation and Fairness
If a thread is not granted CPU time because other threads grab it all, it is called “starvation”. The thread is “starved to death” because other threads are allowed the CPU time instead of it. The sol...翻译 2020-03-23 14:45:31 · 356 阅读 · 0 评论 -
Deadlock 和 Deadlock Prevention
一、Thread DeadlockA deadlock is when two or more threads are blocked waiting to obtain locks that some of the other threads in the deadlock are holding. Deadlock can occur when multiple threads need t...翻译 2020-03-22 21:20:09 · 484 阅读 · 0 评论 -
Thread Signaling
The purpose of thread signaling is to enable threads to send signals to each other. Additionally, thread signaling enables threads to wait for signals from other threads. For instance, a thread B migh...翻译 2020-03-22 00:01:50 · 339 阅读 · 0 评论 -
解决Race Conditions的方法之一:synchronized
synchronized解决了什么问题?Race ConditionsRace conditions occur only if multiple threads are accessing the same resource,and one or more of the threads write to the resource.产生Race Conditions的那段代码叫临界区,为保证...翻译 2020-03-21 19:29:00 · 954 阅读 · 0 评论 -
volatile
一、Variable Visibility Problems我们知道共享变量放在内存中,若线程使用,则会放到CPU的缓存中,这就导致多线程环境下,变量可能不会及时的更新,从而影响了其他线程执行。如下图,T1改了count,而T2依然用旧值。The problem with threads not seeing the latest value of a variable because it ...原创 2020-03-21 00:45:19 · 218 阅读 · 0 评论 -
Thread safety and Shared Resource
一、Local VariablesLocal variables are stored in each thread’s own stack. That means that local variables are never shared between threads:That also means that all local primitive variables are thread...翻译 2020-03-08 21:54:56 · 163 阅读 · 0 评论 -
Race Conditions and Critical Sections
A race condition is a special condition that may occur inside a critical section. A critical section is a section of code that is executed by multiple threads and where the sequence of execution for t...翻译 2020-03-08 16:05:04 · 270 阅读 · 0 评论 -
JMM模型及其存在的问题解决方案 (未完待续)
一、JMM所有的共享变量都存储在主内存。Memory that can be shared between threads is called shared memory or heap memory.All instance fields, static fields, and array elements are stored in heap memory. In this chap...原创 2020-03-08 13:25:20 · 513 阅读 · 0 评论 -
Memory Consistency Errors解决方案:Happens-before relationship
Action是什么一、JMM所有的共享变量都存储在主内存。共享变量是指类变量。每个线程都会有自己的working memory。保留了被线程使用的变量的副本。rate:CPU>working memory>主存。working memory是为了缓解CPU和主存速度不匹配的一钟折中解决方法。线程对变量的所有操作(读/写)都必须在working memory中完成,而不能直...原创 2020-03-07 23:59:16 · 412 阅读 · 0 评论 -
GC roots和堆内存分配模型
一、A garbage collector is responsible forAllocating memoryEnsuring that any referenced objects remain in memory, andRecovering memory used by objects that are no longer reachable from references in...原创 2020-03-06 21:51:04 · 367 阅读 · 0 评论 -
Garbage Collection按代回收执行过程
一、 What is Automatic Garbage Collection?Automatic garbage collection is the process of looking at heap memory, identifying which objects are in use and which are not, and deleting the unused objects....原创 2020-03-06 15:59:15 · 368 阅读 · 0 评论 -
堆中创建对象
Heap space in Java is used for dynamic memory allocation for Java objects and JRE classes at the runtime. New objects are always created in heap space and the references to this objects are stored in ...原创 2020-03-05 22:58:56 · 231 阅读 · 0 评论 -
Java内存图以及堆、栈、方法区之间的关系
Stack(线程私有)Each Java Virtual Machine thread has a private Java Virtual Machine stack, created at the same time as the thread. A Java Virtual Machine stack stores frames.(线程与栈一一对应,栈中包含多个栈帧(即方法调用))方...原创 2020-03-05 17:59:56 · 701 阅读 · 0 评论 -
类加载时机
一、主动初始化遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字 实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常 量池的静态字段除外)的时候,以及调用一个类的静态方法的时候。getstatic: get...原创 2020-03-05 12:54:49 · 185 阅读 · 0 评论 -
类加载机制class loader
一、loadingJava类加载过程之加载loading二、verificationBecause the JVM is completely separate from the Java compiler, the JVM, which interprets the class file, has no guarantee that the class file is properly ...原创 2020-03-04 19:38:08 · 199 阅读 · 0 评论 -
Java类加载过程之加载loading
一、Java类加载器分类**启动类加载器(Bootstrap ClassLoader):负责将$JAVA_HOME中jre/lib目录下的或者被-Xbootclasspath参数所指定的路径中类库加载到虚拟机中。用C++实现。拓展类加载器(Extention ClassLoader):负责将lib/ext或者由java.ext.dirs系统属性指定的目录中的JAR包的类库加载到虚拟机。用ja...原创 2020-03-04 00:21:25 · 379 阅读 · 0 评论 -
基于栈的解释器执行过程
public class Main { public int calc() { int a=100; int b=200; int c=300; return (a+b)*c; } public static void main(String[] args) { Main m=new...原创 2020-03-02 22:20:08 · 288 阅读 · 0 评论