![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 76
Spground
https://github.com/Spground
https://spground.github.io
https://www.cnblogs.com/Spground/
展开
-
Java虚拟机结构(一)
JVM的结构以下部分来源自Oracle公司官网的技术文档链接地址0.概述JVM规范描述的是一种抽象的机器。它并没有描述任何关于JVM的具体的实际的实现。为了正确的实现一个JVM,你需要能够读取class文件,并且正确的执行class文件中指定的操作。咋JVM规范中没有涉及具体的实现的部分,这样的做法不会约束实现者的创造力。例如:运行时数据域的内存分布,使用的GC算法,任何J翻译 2015-07-05 17:33:59 · 412 阅读 · 0 评论 -
JVM内存区域(二)
JVM内存区域二对象的创建1 对象创建过程2 堆内存分配的问题3 源码分析对象的内存布局对象的访问定位JVM内存区域(二)1. 对象的创建1.1 对象创建过程Java是一种面向对象的语言,在使用java的日常,我们常常和对象打交道。在JVM内存区域中也存在专门的堆内存来存储管理对象。因此就堆内存和对象之间的关系,做简单的阐述。虚拟机遇到一条new指令后,虚拟机就会新建一个对象,整个过程虚拟原创 2017-12-03 16:13:39 · 226 阅读 · 0 评论 -
java基础之java中的基本数据类型
java基础之java中的基本数据类型 学习java一段时间了,使用java也差不多一年多了,可是对于后续的java的学习真的是后劲不足,或者是说懒惰吧,回想一下这一年多,用java最多的就是Android开发,说内心话,在使用java的时候,好多基础的东西却没有认真去总结。学而不思则惘,思而不学则殆。有必要总结下java的基础知识了。0.java中基本数据类型原创 2015-06-28 20:49:34 · 572 阅读 · 0 评论 -
Java Array、List、Set互相转化
Java ArrayListSet互相转化ArrayListSet互转实例1 ArrayList互转2 ListSet互转3 ArraySet互转ArraysasList 和 CollectiontoArrayJava Array、List、Set互相转化1. Array、List、Set互转实例1.1 Array、List互转Array转ListString[] s = new St原创 2017-12-16 15:23:51 · 308509 阅读 · 7 评论 -
HashMap工作原理和扩容机制
HashMap工作原理HashMap扩容1 HashMap的扩容时机2 HashMap的扩容过程补充1 容量必须是2的幂2 rehashReferences1. HashMap工作原理HashMap作为优秀的Java集合框架中的一个重要的成员,在很多编程场景下为我们所用。HashMap作为数据结构散列表的一种实现,就其工作原理来讲单独列出一篇博客来讲都是不过分的。由于本文主要是简单总原创 2017-12-30 10:23:30 · 51248 阅读 · 13 评论 -
Java线程池
1. Java线程与线程池1.1 线程相比于“繁重”的进程,线程可以算是一种轻量级的进程,大多数操作系统都是支持以线程作为调度执行单元以提高系统的并发性。毫不例外,Java也支持多线程。多个线程交替甚至并行的执行,特别在多处理器时代,可以极大的提高资源的利用率。通常我们使用多线程来并发的执行多个具有明显边界的任务,例如Web服务器使用多线程来同时处理来自多个用户的请求,每一个请求便原创 2018-01-27 15:37:42 · 346 阅读 · 0 评论 -
Java位移运算符
Java位移运算符Java位移运算符分为两大类:左移右移x = x << n左移运算是将二进制位串向左移动n位,低位补0,而左移运算符号没有带符号和不带符号的概念。右移运算是将二进制位串向右移动n位,右移运算符有带符号和不带符号的概念:带符号右移:>> ,保留最高位(符号位),其余的高位补0,带符号右移保留被右移的数的正负符号,例如-1对应的...原创 2018-04-08 11:17:49 · 403 阅读 · 0 评论 -
一致性哈希算法
一致性哈希算法一致性哈希算法(Consistent Hasing,以下简称CH)是一种特殊的哈希算法,使用CH的哈希表扩容的时候,平均只有K/nK/nK/n个关键字需要被重新映射(或者移动),这里的KKK是关键字的数量,nnn指的是哈希表的槽位(slot)。而传统的哈希表在扩容的时候,几乎所有的关键字需要被重新映射(或移动)。传统的哈希表的工作流程如下: 设一个哈希表有nnn个slo...原创 2018-04-10 16:28:17 · 411 阅读 · 0 评论 -
SLF4J和Log4j,Logback等的关系
slf4j的全称是Simple Logging Facade for Java,是各种日志系统实现(例如log4j, logback和java.util.logging)的抽象层或者外观层。因此不难看出,slf4j类似于各种日志框架的api层,这样如果我们在我们需要使用日志的地方,采用slf4j的api而不是采用特定的日志框架的api去产生日志,在可扩展性和可维护性上得到了提高。对于一些项...原创 2018-07-16 23:49:22 · 1015 阅读 · 0 评论 -
Java8特性:函数接口和集合操作
Java8特性:函数接口和集合操作Function简单函数Function类似于数学中的函数: y=f(x)y=f(x)y = f(x) 输入时x,输出是y,函数关系是f。Java8中的函数的写法类似于lambda表达式:Function<Integer, Integer> f = x -> x + 5;int y = f.apply(7...原创 2018-07-19 23:12:12 · 291 阅读 · 0 评论 -
HTTP轮询模型
HTTP轮询模型长短轮询http协议是一种client-server模型的应用层协议,这种c-s的模式虽然大多数情况都能满足需求,但是某些场景也需要服务端能够将一些信息实时的推送到客户端,即实现服务器向客户端推消息的功能。比如:配置管理中心服务端需要将更新的配置推送到client端消息推送服务器需要将一些消息推送到Android、iOS客户端利用Http协议实现服务器...原创 2018-08-26 12:08:25 · 5488 阅读 · 0 评论 -
JVM内存区域(一)
JVM内存区域一运行时内存区域分类运行时内存区域含义JVM内存区域(一)1. 运行时内存区域分类JVM运行时内存区域主要包含:程序计数器栈堆方法区其中属于线程私有的是程序计数器、栈;属于共享的是堆,方法区。2. 运行时内存区域含义程序计数器程序计数器是一块较小的内存空间,他可以当做当前线程执行的字节码的行号指示器。栈java虚拟机栈和大多数程序语言一样,每个java方法在jvm解原创 2017-12-01 21:53:04 · 180 阅读 · 0 评论 -
Maven简介与Maven安装
Maven简介与Maven安装简介1 目标2 标准化3 应用下载安装创建Maven项目1 创建项目2 修改POM总结Maven简介与Maven安装1.简介1.1 目标Maven是一个自动化构建工具,常用来构建和管理java项目。Maven的主要目的是让开发人员在最短的时间对整个项目的开发状态做一个全面的理解。具体来说,maven有如下子目标:让构建过程容易提供统一的构建系统提原创 2017-11-20 12:04:23 · 323 阅读 · 0 评论 -
Java虚拟机结构(二)
Java虚拟机的结构(二)5.运行时数据域(Run-Time Data Areas)JVM定义了不同的运行时数据域,这些数据域在程序被执行时被使用。一些数据域是在JVM启动的时候就创建,在JVM退出的时候被销毁。而另一些数据域是属于每一个线程的,每一个线程的数据域是随着线程创建而创建,随着线程退出而销毁的。5.1 程序计数器寄存器(The pc Register)翻译 2015-07-14 22:17:23 · 442 阅读 · 0 评论 -
Code Retreat总结
Code Retreat总结概述:上一个周六,参加了一个由大连华信公司组织的Code Retreat活动,抱着去见识一下真实企业的想法,就报名参加了,活动很好,组织者很nice,总之收获了很多,算是我人生中第一次参加这样的程序员社区活动,现在就活动收获作如下总结。1.接触到测试的概念 JUnit测试工具, 的确很有意思,在敲完一些东西后, 自己写几个Test Case原创 2015-11-16 15:20:20 · 768 阅读 · 0 评论 -
Collections类中常用算法之Rotate
Collections类中常用算法之RotateCollections类中常用算法之RotateCollections类简介Rotate方法使用Rotate方法源码分析小结Collections类简介Collections类是java集合框架的一个类,其主要是一些通用的作用于Collection的 算法,如排序,求极值,混淆(shuffle)等。 引用Java官方文档的介绍 The原创 2016-10-23 14:26:10 · 6761 阅读 · 1 评论 -
Java动态代理简述
Java动态代理简述一、代理简介代理一词含义十分宽泛,例如金融领域的股票发行代理、营销领域的销售代理、以及计算机领域中的代理设计模式等。尽管代理一词被使用的领域如此广泛,但是代理一词的大致的抽象含义是相似的或者说是相同的。代理是一个被委托人委托其执行如下活动:参加活动、行驶权力、执行任务等。这样理解的话,计算机中某个对象或组件的代理就非常好理解了。计算机领域中代理的概念是一个十分重要的概念,常见的有原创 2017-11-13 20:41:36 · 673 阅读 · 0 评论 -
HashMap与LinkedHashMap
HashMap与LinkedHashMap简介二者的区别源码阅读Best PracticesHashMap与LinkedHashMap1. 简介在日常开发中我们经常会批量操作数据,因此很多高级语言除了提供数组,还给我们提供很多高级的、抽象的数据类型来让我们处理批量数据时得心应手。由于这些轮子对于程序的性能是比较关键的轮子,因此很多语言都内置的提供了比较精致的实现。在java中,这种实现被称为原创 2017-11-19 12:42:28 · 696 阅读 · 0 评论 -
Java getClass() VS instanceof VS ==
Java getClass() VS instanceof VS ==含义getClass() 返回调用对象object的运行时类(runtime class),一个Class实例。a instanceof T 返回a是否是T类型的实例或者T类型的子类型的实例a == b 判断a和b引用的是否是同一个对象区分getClass()的文档介绍如下: Returns the runtime c原创 2017-11-19 17:34:21 · 352 阅读 · 0 评论 -
Java equals compareTo()的区别
Java equals compareTo()的区别看JDK源代码尤其是集合框架源代码的时候,经常会看见两个方法:int equals(Object obj);int compareTo(Object obj); 在集合框架中大多数集合类是采用equals方法来对key进行区分的,例如HashMap、LinkedHashMap、HashSet、LinkedHashSet等等;而有些集合类是采用com原创 2017-11-19 17:37:05 · 1841 阅读 · 0 评论 -
java中单例的几种写法
java中单例的几种写法一单例模式常见的写法二枚举类型实现单例模式java中单例的几种写法 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。单例通常有很多种写法,但是性能和效果却是差距挺大。下面列举了几种常见的写法。一、单例模式常见的写法1.懒汉式(线程不安全) public class Singleton原创 2017-11-19 17:38:32 · 1176 阅读 · 0 评论 -
Java并发之Executors简介
Java并发之Executors简介ExecutorExecutorService和ScheduleExecutorService几种线程池ThreadPollExecutorScheduleThreadPollExecutor和ForkJoinPool生产者-消费者模型Java并发之Executors简介1. Executor、ExecutorService和ScheduleExecutor原创 2017-11-19 17:41:01 · 401 阅读 · 0 评论 -
Java的long、double类型的原子性读取问题
Java的longdouble类型的原子性读取问题检验Java的long、double类型的原子性读取问题 In programming, an atomic action is one that effectively happens all at once. An atomic action cannot stop in the middle: it either happens comp原创 2017-11-20 11:48:25 · 4662 阅读 · 0 评论 -
Java String 乱码
Java String 乱码问题今天在工作的时候,本地能正常work的的代码,推到预发环境却出现了部分数据乱码。一开始是怀疑提供这些数据后端服务用错了编码方式,但是本地能work直接否定了这种怀疑。问题出在预发和本地环境的系统编码方式不一致,本地系统默认是UTF-8,而预发默认是GBK编码,因此导致预发环境出现乱码。new String(byte[] bytes)如果不指定编码方式,则...原创 2018-08-25 00:54:55 · 3968 阅读 · 0 评论