Java8(二)Lambda语言

本文介绍了 Java SE 8 中新引入的 lambda 语言特性以及这些特性背后的设计思想。这些特性包括: lambda 表达式(又被成为“闭包”或“匿名方法”) 方法引用和构造方法引用 扩展的目标类型和类型推导 接口中的默认方法和静态方法 1. 背景 Java 是一门面向对象编程语言。面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:面向对象编程语言使用带有方法的对象封装行为,函数式编程语言使用函数封装行为。但这 ...

JVM(一)Java内存区域与内存溢出

Java内存区域 Java虚拟机所管理的内存将包括以下几个运行时数据区域,如下图所示: 程序计数器: ProgramCounterRegister是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变程序计数器的值来选取下一条要执行的字节码指令,分支、循环、跳转、异常跳转、线程恢复等基础功能都需要依赖这个计数器来完成。 由于Java虚拟机的多线程时通过线程切换并分配处理器执行时间来实现的,对于单核处理器在某一个时间都 ...

Leetcode学习

LeetCode的题大致分成两类: 1)基础算法的知识。这些题里面有大量的算法题,解这些题都是有套路的,不是用递归(深度优先DFS,广度优先BFS),就是要用动态规划(Dynamic Programming),或是拆半查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对树,数组、链表、字符串和hash表的操作。通过做这些题能让你对这些最基础的算法的思路有非常扎实的了解和训练。对我而言,Dynamic Pr ...

内存泄露排查

现象: (1)数据导出无反应,处于等待状态 (2)其他页面相应特别慢 1、查看日志 [/enroll2//dataExport/create.json?_input_charset=UTF-8&filter_nature_group_id=36&filter_nature_topic_id=279&filter_nature_member_id=&filter_common_login_id=&fi ...

深入理解java内存模型

java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。 本文大致分三部分: 重排序与顺序一致性; 三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现; java内存模型的设计目标,及其与处理器内存模型和顺序一致性内存模型的关系。 深入理解java内存模型(一)——基础 深入理解java内存模型(二)——重排序 深入理解java内存模型(三)——顺序一致性 ...