分类:Java

Java

Spring基础——容器和应用上下文的理解

Spring的核心之一——IOC容器,通过依赖注入(DI)的方式用来管理关联对象的生命周期。使得业务代码只需要关注业务本身的流程,需要另外的对象来协助了,就跟Spring说,我想要个对象——于是Spring就很贴心的给你个对象,但是这是怎么实现的呢?本文将简单剖析这些间的关系与理解,不做源码的追究 Spring容器 前...

yan 2018 年 4 月 12 日 124℃ 0评论 0喜欢

Spring Boot源码分析——自动配置

Spring Boot以spring-boot-starter-xx命名的模块都是“开箱即用”模块,意思是说,当开发者完成依赖添加后(即pom文件的依赖添加),这个功能就会自动创建和注入到上下文中,不需要再编写麻烦的配置,只需要提供参数属性即可。十分的方便,那么如此巧妙的开箱即用是怎么实现的呢? 本文将探索其中的奥秘,...

yan 2018 年 4 月 11 日 130℃ 0评论 1喜欢

Java Web分布式集群搭建(四)——NFS文件共享集群

服务器集群搭建后,若系统中存在文件的上传功能,那么如何保证上传文件的一致性呢?通常的解决思路有两种:第一种是建立文件服务器,所有的文件上传都到该服务器上;第二种就是做文件共享,每一台服务器的文件都相同。本文以第二种为例,介绍NFS文件共享集群。 NFS介绍 NFS(Network File System)网络文件系统,...

yan 2017 年 12 月 7 日 1565℃ 8评论 2喜欢

Java Web分布式集群搭建(三)——Session同步

对于一个业务系统的Tomcat集群来说,必须保证同一个用户访问到任一台服务器上都可以维持之前操作的身份。比如在服务器A进行了登陆,那么在服务器B中也要同步该用户已登录的状态,这里就用到了Session的同步。 同步方式 sticky模式、复制模式、Terracotta模式(非Tomcat自带) sticky模式 把所有...

yan 2017 年 12 月 3 日 578℃ 0评论 4喜欢

Java Web分布式集群搭建(二)——Apache+Tomcat集群负载均衡

在分布式中,为了防止应用在单服务器因受压力过大而崩溃,而利用多个Tomcat集群进行部署,使应用可以无状态的访问到任何一个Tomcat服务器,从而进行合理的负载均衡操作,保证应用的可靠和稳定运行。(本节中暂不考虑Session同步的问题) 主要方式 mod_proxy、mod_proxy_blancer、mod_jk ...

yan 2017 年 12 月 1 日 726℃ 0评论 4喜欢

Java Web分布式集群搭建(一)——Mysql集群

MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%。 MySQL Cluster的特点是在内存中部署服务器的集群,这样的好处是可以免去读写磁盘IO,提高速度。同...

yan 2017 年 11 月 25 日 1613℃ 1评论 3喜欢

HashMap源码学习——实现原理

HashMap介绍 HashMap是基于哈希链表的Map接口的非同步实现。允许使用null值和null键,存储是无序的,是按照哈希散列排序的。 数据结构 最基本的结构是链表散列,如图由两部分组成:数组和链表。HashMap的底层就是一个数组,数组中的每一项都是一个链表。 初始化 当新建一个HashMap的时候,会初始...

yan 2016 年 8 月 30 日 934℃ 6评论 8喜欢

线程、多线程以及线程池的相关问题

线程 1)线程和进程有什么区别? 一个线程是一个独立的运行环境,是一个独立的程序或者应用。线程则是进程中的一个任务。 线程是进程的子集,一个进程可以有多个线程并发执行不同任务。 不同进程使用不同内存空间,所有线程共享同一个内存空间(别和栈内存混淆,每个线程有单独的栈内存用于存储本地数据) 2)Java中如何实现线程? ...

yan 2016 年 6 月 1 日 548℃ 0评论 4喜欢

Java内存泄露

内存泄露是指当不再使用的对象没有得到释放,还占有内存,从而造成内存浪费的情况。 在C++中,内存是由程序员进行管理的,从内存的创建、使用和释放都是程序员去操作。很多时候因为疏忽忘记对对象的释放,从而导致无用对象不断增加,导致内存不足,产生内存泄露的现象。 原因 一般产生内存泄露的原因主要有如下两种:第一种,没有释放掉不...

yan 2016 年 4 月 21 日 480℃ 0评论 6喜欢

java中的四种引用

从jdk1.2以后,为了更好的控制对象的生命周期,从而定义了四中级别:强引用、软引用、弱引用和虚引用。不同的引用对于JVM的垃圾回收以及内存泄露等有着重要的影响。 强引用 正常的使用中,声明的对象都是强引用,是最普遍的引用。强引用是不能被回收机制所回收的,即使达到一定程度之后,报出OutOfMemoryError异常也...

yan 2016 年 4 月 21 日 526℃ 0评论 7喜欢