自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jesmin的CSDN博客

学习是一种态度!

  • 博客(27)
  • 资源 (8)
  • 收藏
  • 关注

原创 Vanus 社区二维码

2023-04-11 17:54:05 67

原创 读书笔记——《深入理解Java虚拟机》系列之类加载器与双亲委派模型

1.Java 类加载器在Java中,类加载器是用来通过一个类的全限定名来获取描述此类的二进制字节流的代码模块。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。换句话说,比较两个类是否相等,只有在这两个类是被同一个类加载器加载时才有意义,否则即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类必定不相等。

2017-12-26 16:07:44 448

原创 Java技术专题——帮你彻底搞懂JNDI(附详细实例)

1. 什么是JNDI?JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

2017-12-26 16:03:58 9125

原创 读书笔记——《深入理解Java虚拟机》系列之垃圾收集器与GC日志分析

在上一篇博客中,博主和大家一起学了几种常见的垃圾收集算法。我们也知道了分代收集法是目前虚拟机中常用的收集算法。收集算法可以被看作内存回收问题的理论基础,而不同的垃圾收集器就是内存回收的具体实现了。由于在Java 虚拟机规范中并没有规定需要如何实现垃圾收集器,因此各个厂家或者不同版本的虚拟机所提供的垃圾收集器都有可能有很大的不同。

2017-12-18 14:47:20 371

原创 读书笔记——《深入理解Java虚拟机》系列之四种垃圾收集算法

垃圾收集算法一直都是影响GC工作效率的重要因素,在本篇博客中博主就与大家一起来学习一下几种经典的垃圾收集算法。由于它的实现涉及到了大量的程序细节,博主在这里就只用抽象的方式将垃圾收集算法的原理与大家分享啦。

2017-12-13 15:23:46 347

原创 Java源码剖析——彻底搞懂Reference和ReferenceQueue

之前博主的一篇读书笔记——《深入理解Java虚拟机》系列之回收对象算法与四种引用类型博客中为大家介绍了Java中的四种引用类型,很多同学都希望能够对引用,还有不同类型引用的原理进行更深入的了解。因此博主查看了抽象父类Reference和负责注册引用对象的引用队列ReferenceQueue的源码,在此和大家一起分享,并做了一些分析,感兴趣的同学可以一起学习。

2017-12-12 21:08:55 1623

原创 读书笔记——《深入理解Java虚拟机》系列之回收对象算法与四种引用类型

在上一篇博客中,博主和大家一起学习了Java虚拟机运行时内存区域的划分:主要是线程私有的虚拟机栈,本地方法栈和程序计数器以及线程公有的虚拟机堆和方法区。对于栈内存而言,每个栈帧所需的内存在类结构确定下来后基本已经确定了,栈中的栈帧随着方法的进入和退出不断进行入栈和出栈操作,换句话说栈中的内存分配具有确定性,当方法结束时栈中的内存也就自动释放了。

2017-12-01 16:51:28 461

原创 读书笔记——《深入理解Java虚拟机》系列之Java内存区域与常见内存溢出异常

第一次读这本书时,就被文中的一句话所折服:“Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的‘高墙’,墙外面的人想进去,墙里面的人却想出来。”的确,对于使用C++编程的程序员来说,他们肩负着对每一个对象所占内存空间的维护责任;而对于Java程序员来说,动态分配内存机制让我们无需对申请的内存进行free,不容易出现内存的泄露和溢出。

2017-11-27 19:34:19 415

原创 Java源码剖析——动态代理的实现原理

在本篇博客中,博主将和大家一起深入分析Jdk自带的动态代理的实现原理。如果有同学对代理模式,静态代理和动态代理这些概念比较模糊,请先阅读博主的另一篇文章《一步一步学设计模式——代理模式》。

2017-11-27 19:26:07 1284

原创 一步一步学设计模式——代理模式

代理模式是一个我们在编程中经常用到的设计模式,它的目的是为其它对象提供一种代理以控制对这个对象的访问。1. 生活实例每年到快要过年的时候,抢票都是一个十分艰辛的任务。在互联网技术与网络购票还没有特别成熟时,大家都需要在售票点排队去买票。很多学校上学的学生都没有时间在刚售票的时候就去排队等票,因此出现了代排队的黄牛,他们每次多收学生25%的钱然后替学生排队买票。

2017-11-27 19:19:50 454

原创 超全的深度剖析内存系列——3.虚拟内存(二)

回忆下我们在上一节博客中提到的虚拟内存技术,操作系统使用它来为每一个进程提供一个一致的,私有的虚拟地址空间。从PC硬件的角度来看,内存主要分为物理内存与磁盘上的文件。由于操作系统使用了虚拟内存技术来高效地管理内存,因此从操作系统的角度来看,虚拟内存空间也称为虚拟内存,对应的就是硬件上的物理内存和磁盘文件的并集。而虚拟地址空间就是虚拟内存地址的取值范围。都每一个进程而言,它们面对的都是大小相等却彼此独

2017-11-14 15:23:23 717

原创 超全的深度剖析内存系列——2.虚拟内存(一)

在上一节博客中,博主和同学们一起学习了一些内存相关的计算机基础知识,本节博客我们继续来学习物理内存管理相关的知识。1. 计算机存储系统层次计算机的存储器的最优设计目标应该是更大的容量,更快的速度和更低的价格。然而事实上容量,速度,价格这三个方面是互相矛盾的,人们没法设计出完全满足三个条件的存储器。一个折中的解决方案就是不要依赖单一的存储组件或技术,而是采取一种层次结构的存储系统设计。 寄存器 寄

2017-11-10 16:18:22 589

原创 超全的深度剖析内存系列——1.相关的计算机基础知识

终于下定决心自己写一个系列来总结一下关于内存的种种知识点。对于内存,很多同学都是持有敬而远之的态度。在上大学的时候没有打牢基础,在平常也不关心内存的使用,反正只要写出的代码能够运行,没有报错就万事大吉了。包括博主自己对内存也有很多清楚的地方,但是总是抱着得过且过的态度,没有重视那些问题。现在我希望在这系列的博客中能够与大家一起重温一下关于内存的知识,也欢迎大家与我一起留言讨论,一起进步。

2017-11-04 10:37:22 2372

原创 数据结构专题——栈与队列之栈的应用(一)

在自己实现了内存中顺序存储和链式存储的栈结构之后,有的同学可能还是有一些疑问。既然都是线性表,我们为什么不直接使用顺序表或链表,反而要创造出一种特殊的线性表呢?其实答案很简单,通过我们规定了特殊规则之后的线性表,能够更轻松地完成很多工作。

2017-11-04 10:34:58 407

原创 数据结构专题——栈与队列之链栈及其Java实现

在上一篇博客中,博主与大家学习了一个新的数据结构——栈。它是一个只被允许在栈顶进行插入与删除元素的特殊线性表,是一种典型的LIFO的数据结构。在我们用数组的方式实现了顺序存储的顺序栈之后,本章博客中我们就一起来尝试实现一个链式存储的栈吧。和普通的线性表一样,我们可以选择用单链或者是双链来实现这个数据结构。由于栈只能够在栈顶进行入栈和出栈操作,因此一个只含有栈顶节点的单链表就可以轻松实现它了。

2017-11-01 20:54:57 317

原创 数据结构专题——栈与队列之顺序栈及其Java实现

在前面的几章博客中,我与同学们一起熟悉了线性表这个基础的数据结构,今天我们要学习的这个数据结构和线性表有着紧密的联系,它就是——栈。栈的定义很简单:栈(Stack)是限定仅在表尾进行插入和删除操作的线性表。我们一起来解读一下栈的定义,首先栈是一个线性表,因此它也是一个具有零个或多个数据元素的有限序列;其次栈只允许在表的尾部进行插入和删除元素,而不像是普通的线性表能够在任意位置添加删除元素。

2017-11-01 16:29:33 305

原创 算法练习专题——LeetCode系列之 ThreeSum

Question:Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

2017-11-01 15:03:53 554

原创 算法练习专题——LeetCode系列之 Two Sum

在这个系列中给大家分享一些平常见到的算法题,以及自己的答案。Question:Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one so

2017-10-31 22:26:46 260

原创 数据结构专题——线性表之双链表及其Java实现

在上一篇博客中,博主和大家一起实现了线性表的链式存储,由于链表中每个节点都只有一个指针域指向着后继节点,因此这种链表也叫单链表。这种链表的缺点显而易见,因为只能够单向遍历,即使我们想要访问最后一个元素也不得不从第一个元素开始遍历到最后一个元素。为了解决这个问题,双链表应运而生。和单链表十分相似,唯一的区别在于每个节点当中包含两个指针域,分别指向着这个节点的前驱节点和后继节点。

2017-10-31 22:18:21 246

原创 数据结构专题——线性表之单链表及其Java实现

在上一篇博客中,博主和同学们一起认识了本系列中的第一个数据结构——线性表。在提供了抽象数据类型(ADT List)和Java版的MyList之后,我们又基于Java语言实现了在内存中顺序存储的线性表(也称为顺序表)。尽管我们在遇到频繁访问列表中元素时,ArrayList是一个很好的选择;但当我们需要频繁添加、删除列表中元素,尤其是在表的前端进行增删操作时,ArrayList就不是一个特别好的选择了。

2017-10-31 22:15:12 304

原创 数据结构专题——线性表之顺序表及其Java实现

在上一篇博客中,博主为大家介绍了关于数据结构的三个基本概念:数据结构,数据类型,抽象数据类型。在本篇博客中,博主将为大家介绍本系列中第一个出场的数据结构——线性表。顾名思义,线性表就是一种具有像线一样性质的表。比如在操场上站成一列的学生们,总有一个打头,一个结尾,中间的任何一个学生都知道自己前一名同学是谁和后一名同学是谁,就像有一根线将他们串了起来一样。

2017-10-31 22:11:47 423

原创 数据结构专题——那些难以理解的数据结构基本概念

不知有没有人和博主一样,在上大学的时候最头疼的一门课就是数据结构与算法了,其中枯燥的概念、冗长的伪代码都让博主昏昏欲睡。尤其是严大妈在《数据结构》中开篇讲述的数据结构、数据类型与抽象数据类型的概念,让博主完美地将这三个概念混淆了很久(这里没有黑严大妈的意思……但是数据结构确实给当时没有认真听课的博主留下了深刻的印象)。

2017-10-31 21:37:32 696

原创 读书笔记——《Java 8实战》系列之复合Lambda表达式

在上一篇博客中我们一起学习了使用方法引用的方式来重复使用现有的方法并直接传递它们,方法引用能够进一步地简化我们的Lambda表达式。在实际问题的处理中,有时候我们需要多个Lambda表达式同时进行工作,Java 同样允许我们将多个简单的Lambda表达式复合成一个更复杂,完成功能更多的复杂表达式。

2017-10-31 13:33:39 637

原创 读书笔记——《Java 8实战》系列之方法引用

在上一篇博客中,我们继续介绍了一些关于Lambda表达式的相关知识。在本篇博客中,我将向大家介绍一种通过调用特定方法来使Lambda表达式更简捷的办法——方法引用。

2017-10-31 13:26:06 445

原创 读书笔记——《Java 8实战》系列之Lambda表达式(二)

在上一篇博客中,我们介绍了Lambda表达式的基本概念以及语法。在本片博客中,我们将继续和大家分享一些关于Lambda表达式的知识。

2017-10-31 12:04:34 423

原创 读书笔记——《Java 8实战》系列之Lambda表达式(一)

在上一篇博客中,我们一起学习了行为参数化这个有趣的概念。同时我们也知道了在Java 8之前,匿名类可以用来减少那些只使用一次的实体类的啰嗦代码。而Java 8中,Lambda表达式的出现能够让我们以一种更加简洁的方式去表示一个行为或传递代码。简单来说,Lambda表达式是一种匿名机制,它是一种没有声明名称的方法,和匿名类一样,它也可以作为参数被传递给方法

2017-10-31 11:23:59 351

原创 读书笔记——《Java 8实战》系列之行为参数化

最近在读《Java 8实战》这本书,记录下来一些书中的重点知识和大家分享,文中参考了一些书中的例子,特此声明。如果有朋友对这本书感兴趣但是又没有时间看的话,可以看我的博客来大概了解此书的重点知识。

2017-10-31 11:16:33 367

静态代理与动态代理Demo

本资源包含了博主博客中的代码,用一个黄牛买票的例子帮助新手理解静态代理与动态代理的原理

2017-11-27

MyLinkedStack

Java实现的MyLinkedStack,包含抽象数据类型MyStack接口,MyLinkedStack源码以及Junit测试case,能够帮助新手很好地学习栈及其实现

2017-11-01

MyArrayStack

Java实现的MyArrayStack,包含抽象数据类型MyStack接口,MyArrayStack源码以及Junit测试case,能够帮助新手很好地学习栈及其实现

2017-11-01

ThreeSumProblem

LeetCode 的算法题目,ThreeSumProblem,在本资源中我提供了源码以及大量的注释解释解题思路希望可以帮助新手了解这个问题

2017-11-01

TwoSumProblem

使用优雅的代码解决Leet Code的算法难题,本资源包括了TwoSumProblem的源码,以及作者自己实现的两个工具类CodeExecutor和ExecutionTimeAnalyzer,部分代码需要在JDK1.8环境下测试通过

2017-10-31

MyDoublyLinkedList

Java实现的MyDoublyLinkedList,包含抽象数据类型MyList接口,MyDoublyLinkedList源码以及Junit测试case,能够帮助新手很好地学习双链表及其实现

2017-10-31

MySinglyLinkedList

Java实现的MySinglyLinkedList,包含抽象数据类型MyList接口,MySinglyLinkedList源码以及Junit测试case,能够帮助新手很好地学习单链表及其实现

2017-10-31

MyArrayList源码包

Java实现的MyArrayList,包含抽象数据类型MyList接口,MyArrayList源码以及Junit测试case,能够帮助新手很好地学习线性表及其实现

2017-10-31

空空如也

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

TA关注的人

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