所爱隔山海

个人博客

JVM 线程安全与锁优化

本篇将介绍线程安全所涉及的概念和分类、同步实现的方式及虚拟机的底层运作原理,虚拟机为实现高效并发所采取的一系列锁优化措施。 一、线程安全 《Java Concurrency In Practice》的作者Brian Goetz对“线程安全”有个比较恰当的定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操......
JVM

JVM Java内存模型与线程

本篇介绍虚拟机如何实现多线程、多线程之间由于共享和竞争数据而导致的一系列问题及解决方案。 内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。 概述 Java内存模型 Java与线程 一、概述多任务处理的必要性: 1、充分利用计算机处理器的能力,避免处理器在磁盘I/O、网络通信或数据库访问时总是处于等待其他资源的状态。 2、便于一个服务端同时对多个客户端提供服......
JVM

JVM 虚拟机类加载机制

一、虚拟机类加载机制是什么?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,生命周期包括 7 个阶段: (前5个阶段是在程序运行期间完成的 Runtime) 1、加载(Loading)2、验证(Verification)3、准备(Prepara......
JVM

JVM 垃圾收集器-内存分配

一、垃圾收集器与内存分配策略Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。 JVM 体系结构由于 JVM 跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 基于栈式架构 优点:跨平台, 指令集小,指令多,编译器容易实现。 缺点:性能下降比寄存器差,实现同样的功能需要更多的指......
JVM

Redis

REmote DIctionary Server(远程字典服务器) 非关系型数据库 NoSQL 这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 Redis 作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能缓存服务。然后又出现了一致性hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存失效的弊端。 一、Why?主从复制 读写分离 由于......

Maven 使用

mvnRepository Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。 构建并不是创建,创建一个工程并不等于构建一个项目。 生产环境下开发不再是一个项目一个工程,而是每一个模块创建一个工程。 构建过程的几个主要环节 ① 清理: 删除以前的编译结果,为重新编译做好准备。 ② 编译: 将 Java 源程序编译为字节......

Mybatis

MyBatis手册入口——从入门到放弃框架:整体解决方案 JDBC Dbutils(QueryRunner) JdbcTemplate:都仅仅是工具 编写sql -> 预编译 -> 设置参数 -> 执行sql-> 封装结果 -> DbRecords Hibernate:全自动全映射ORM(Object Relation Mapping)框架;使用HQL(......

SpringMVC

一、SpringMVC 概述Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring MVC 3.0 后全面超越 Struts2,成为最优秀的 MVC 框架 Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口 支持 REST 风格的 URL 请求 采用了松散耦合可插拔组件结构,比......

Hibernate

一、持久化框架ORM(Object/Relation Mapping):对象/关系映射 面向对象概念 面向关系概念 类 表 对象 表的行(记录) 属性 表的列(字段) ORM的思想将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。ORM 采用元数据来描述 对象-关系 映射细节,元数据通常采用 XML 格式,并且存放......

Spring

一、具体描述 容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期; 轻量级:Spring 是非侵入性的 — 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API; 依赖注入 (DI — dependency injection、IOC) DI和IOC其实是一回事; 面向切面编程 (AOP — Aspect Oriented Programming......