Java核心
NextX工作室
这个作者很懒,什么都没留下…
展开
-
HashMap实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,H原创 2016-05-13 10:39:32 · 16267 阅读 · 4 评论 -
JAVA8新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例原创 2016-09-20 14:51:16 · 591 阅读 · 0 评论 -
Java实现生产者消费者模型
生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步;(2)在生产者和消费者之间建立一个管道。第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实原创 2016-09-19 17:07:47 · 9120 阅读 · 1 评论 -
ZooKeeper常用指令集
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。下载地址:http://zookeeper.apache.org/releases.html#downloadZooKeeper服原创 2016-09-19 16:27:21 · 1249 阅读 · 0 评论 -
分布式集群项目中同步DB数据的解决方案之Canal
业务场景描述:在我们的项目中有些配置信息持久化在数据库中,这些配置信息又是在系统启动后自动加载并缓存在local或者redis中,但如果后台运营系统进行了相应更新配置操作,我们需要实现“热部署”或“热插拔”等功能的话,我们有哪些方案可以实现呢?单机项目就非常简单了,但分布式集群的项目怎么办呢? 分布式集群的项目之间同步数据,我们来讲一下有哪些方案解决。方案一:项目程序中对DB进行操转载 2016-09-18 15:23:08 · 6106 阅读 · 0 评论 -
Java多线程之ForkJoinTask,ForkJoinPool介绍及使用
ForkJoinTask是jdk1.7整合Fork/Join,即拆分fork+合并join,性能上有大大提升。思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间。有点像,MapReduce思路感觉大致一样。jdk7中已经提供了最简洁的接口,让你不需要太多时间关心并行时线程的通信,死锁问题,线程同步,下面是它提供的接口:RecursiveActio原创 2016-09-19 14:18:45 · 7972 阅读 · 0 评论 -
Java中常见内存溢出错误及处理方法
相信有一定JAVA开发经验的人或多或少都会遇到OutOfMemoryError的问题,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。 在解决Java内存溢出问题之前,需要对JVM(Java虚拟机)的内存管理有一定的认识。JVM管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(原创 2016-09-18 18:01:30 · 4189 阅读 · 0 评论 -
高并发系统之限流特技:有了它,京东6.18如虎添翼!
转载 ------ 2016-06-24 张开涛相关文章在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(转载 2016-06-24 10:28:17 · 6789 阅读 · 0 评论 -
理解Java垃圾回收机制
理解java垃圾回收机制有什么好处呢?作为一个软件工程师,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java应用程序。这是我个人的主观观点,但我相信一个人精通了GC,往往会是一个更好的Java程序员。如果你对GC感兴趣,那就意味着你有一定大规模应用开发的经验。如果你已经仔细过考虑选择合适的GC算法,这意味着你完全理解你开发的应用程序的功能。当然,这转载 2016-05-20 17:58:09 · 2118 阅读 · 0 评论 -
Java-JVM的基本结构
从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:Java代码编译和执行的整个过程JVM内存管理及垃圾回收机制转载 2016-05-17 10:02:07 · 4345 阅读 · 0 评论 -
Java-JVM的内存调优
首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源转载 2016-05-17 11:00:31 · 1828 阅读 · 0 评论 -
Java-JVM的内存管理和垃圾回收
JVM内存组成结构JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To Space组成,结构图如下所示:新生代。新建的对象都是用新生代分配内存,转载 2016-05-17 10:56:54 · 1701 阅读 · 0 评论 -
Java-JVM的Java代码编译和执行的整个过程
Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制Java源码编译由以下三个过程组成:分析和输入到符号表注解处理语义分析和生成class文件流程图如下所示转载 2016-05-17 10:55:21 · 5276 阅读 · 0 评论 -
Java多线程
线程的概念:程序 进程与线程的区别: 程序是一个静态的代码或者说静态的存在.而进程是程序的一次运行过程. 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。线程的实现方法:继承Threa转载 2016-05-16 18:03:41 · 1664 阅读 · 0 评论 -
Java内存模型及管理
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性 由于转载 2016-05-16 14:10:04 · 2332 阅读 · 0 评论 -
分布式锁的介绍及使用方案
一、分布式锁当应用服务器数量超过1台,对相同数据的访问可能造成访问冲突(特别是写冲突)。单纯使用关系数据库比如MYSQL的应用可以借助于事务来实现锁,也可以使用版本号等实现乐观锁,最大的缺陷就是可用性降低(性能差)。对于GLEASY这种满足大规模并发访问请求的应用来说,使用数据库事务来实现数据库就有些捉襟见肘了。另外对于一些不依赖数据库的应用,比如分布式文件系统,为了保证同一文件在大量读写操作转载 2016-09-20 18:26:46 · 1068 阅读 · 0 评论