
Java
E_Mlls
此号已弃用,新个人主页地址:https://juejin.im/user/5cedf2186fb9a07ed2244fbc
展开
-
从源码分析HashMap
阅读本篇内容,需要你了解**散列表**和**哈希冲突**的概念,当然,如果不了解也可以,在后面我会对这两个概念简要地解释本篇会解决的问题: - HashMap是怎么存储数据的 - HashMap的KV键值对是怎么插入的原创 2019-03-20 20:35:40 · 136 阅读 · 0 评论 -
聊聊Java中的生产者消费者模型——BlockingQueue
前言生产者/消费者模型相信各位都不陌生,是一种很常见的分布式资源调度模型。在这个模型中,至少有两个对象:生产者和消费者。生产者只负责创建资源,消费者只负责使用资源。如果自己实现一个简单的生产者/消费者模型也很容易,无非就是通过一个队列来做,但是这种方式有很多隐藏的缺陷:需要保证资源的线程可见性,同时要手动实现线程同步需要考虑各种临界情况和拒绝策略需要在吞吐量与线程安全之间保持平衡所以...原创 2019-06-05 17:56:53 · 764 阅读 · 0 评论 -
Spring项目中自定义注解的使用
本篇博客将从一个普通的spring项目入手,教你如何在项目中应用自定义注解原创 2019-05-24 23:18:38 · 53510 阅读 · 18 评论 -
谷歌文件系统(The Google File System译)(1~2章)
1~2章内容是GFS整体设计的总览,主要包含介绍和设计概述翻译 2019-05-23 12:34:37 · 848 阅读 · 0 评论 -
浅谈JVM垃圾内存回收算法
前言首先,我们要讲的是JVM的垃圾回收机制,我默认准备阅读本篇的人都知道以下两点:JVM是做什么的Java堆是什么因为我们即将要讲的就是发生在JVM的Java堆上的垃圾回收,为了突出核心,其他的一些与本篇不太相关的东西我就一笔略过了众所周知,Java堆上保存着对象的实例,而Java堆的大小是有限的,所以我们只能把一些已经用完的,无法再使用的垃圾对象从内存中释放掉,就像JVM帮助我们手...原创 2019-04-30 22:45:10 · 215 阅读 · 0 评论 -
浅谈Java中的异常种类
前言一般来讲,关于报错信息主要分为两大类,即Exception(异常) 和 Error(错误),有时候我们用“异常”来统称这两种情况,在本文中,将会就这两种情况做进一步的讲解同时,在这里我先声明,本文将不含Java对异常的处理方式、各个异常的详细讲解以及编译后代码中异常处理的讲解,而仅仅是针对Java中各种异常大类做一个粗略的讨论概念我们一般将宏观概念的异常分为以下两类,它们都属于Java...原创 2019-04-24 22:30:05 · 214 阅读 · 0 评论 -
浅谈Java的序列化机制
概念一个对象如果想在硬盘上存储,一定就需要借助于一定的数据格式。这种把对象转换为硬盘存储的格式的过程就叫做对象的序列化,同样地,将这些文件再反向转换为程序中对象的操作就叫做反序列化一些复杂的解决方案可能是将对象转换为json字符串的方式,这种方式的优点是易读,但是效率还是太低,所以Java的序列化的解决方案是将对象转换为一个二进制流的形式,来实现数据的持久化,本篇文章将会来详细讲解序列化的实现...原创 2019-04-28 23:24:12 · 412 阅读 · 0 评论 -
简要了解JVM的内存划分
虽然Java将内存管理的权限交给了JVM,但是了解JVM是如何管理内存,是一个Java程序员必备的知识,在本篇,将会重点讲解JVM的内存划分情况原创 2019-04-24 11:19:44 · 131 阅读 · 0 评论 -
详解ThreadPoolExecutor线程池的原理
线程池作为一种对象池的一种,在多线程的场景中应用非常广泛,这里就来详细讲解ThreadPoolExecutor是怎么实现线程池技术的原创 2019-04-23 23:23:06 · 216 阅读 · 0 评论 -
快速搭建基于注解的Dubbo项目
虽然dubbo官方提供了一个快速启动的项目,但是样例程序是基于xml配置的,而且自己下载运行的时候按照提供的步骤可能会遇到一些奇奇怪怪的错误,所以这里提供了一个基于注解的dubbo示例程序原创 2019-04-23 16:22:49 · 388 阅读 · 0 评论 -
浅谈Java中的四种内部类
概述如果你看过一些JDK和框架源码的话,就经常会发现一般在类的定义中,都会再定义一些其他的类,这些类也同样会被编译成字节码文件,这样的类就被叫做内部类,按照一般的分法,大致可以分为以下四类:成员内部类局部内部类匿名内部类静态内部类接下来会针对这四种内部类进行详细讲解,旨在解释这些类的特点和应用场景我们预先定义好一个类,接来下的所有操作都会在这个类中执行:class Demo {...原创 2019-04-27 11:46:24 · 240 阅读 · 0 评论 -
浅谈线程和进程的区别
作为几乎每次面试必问的知识点,本篇文章比较详细地整理了一下线程和进程的知识点,虽然没有多少技术含量,但是还是非常值得记住的原创 2019-04-25 23:12:35 · 221 阅读 · 0 评论 -
从源码分析DBCP数据库连接池的原理
背景数据库连接池的概念大家应该都很熟悉,类似dbcp、c3p0,还有如今常用的druid等,使用时无非就是从网上抄几段配置,调一下参数,但是深入理解数据库连接池的原理在如今的Java开发中还是很有必要的,这里以dbcp为例,简要分析一下数据库连接池的实现原理这里我采用的版本是2.5.0版本 <dependency> <groupId>org.apache.c...原创 2019-04-21 21:53:31 · 797 阅读 · 0 评论 -
从源码分析ConcurrentHashMap
介绍作为线程安全的HashMap,Java提供了Hashtable和ConcurrentHashMap两种实现,而Hashtable控制线程安全的方式仅仅是用synchronized对方法加锁,这种低效且过时的方法已经不适合如今的开发在JDK5中,就已经出现了ConcurrentHashMap作为Hashtable的高效替代品。在JDK7及之前,ConcurrentHashMap还是使用分段锁...原创 2019-03-29 08:59:42 · 137 阅读 · 0 评论 -
函数式编程——Java中的lambda表达式
背景在JDK1.8之前,我们经常会遇到下面这几种场景:无法传入方法,只能传入对象 Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread()); } });即使是简单方...原创 2019-04-05 23:26:25 · 306 阅读 · 0 评论 -
浅谈ThreadLocal
介绍ThreadLocal作为JDK1.2以来的一个java.lang包下的一个类,在面试和工程中都非常重要,这个类的主要目的是提供线程本地的变量,所以也有很多地方把这个类叫做线程本地变量从字面理解,这个类为每个线程都创建了一个本地变量,实际上是ThreadLocal为变量在每个线程中都创建了一个副本,使得每个线程都可以访问自己内部的副本变量通常提到多线程,都会考虑变量同步的问题,但是Thr...原创 2019-04-05 21:30:39 · 166 阅读 · 0 评论 -
浅谈AQS(抽象队列同步器)
概念AQS,全称AbstractQueuedSynchronizer,即抽象队列同步器,和CAS共同撑起了整个java.util.concurrent包,同时也是Java并发编程上绕不开的一个概念抽象队列同步器,以下统称AQS,用于解决的就是多线程并发访问控制问题。在传统的多线程编程中,如果有多个线程需要访问同一个变量,就需要使用synchronized来为临界区加锁(临界区:访问共享资源的程...原创 2019-06-04 09:51:47 · 801 阅读 · 0 评论