Java

Java并发编程Tips

距离上一次更新博客已经过去了半年的时间了。现在回过头来看,这半年我学习了关于Java并发编程、JVM、设计模式、ES相关的内容。 一直没更新博客原因,一是因为自己懒,工作一忙就懒得再去花时间写博客,二是因为总觉得看的越多越不知道要写什么,总结下来还是深度不够, 以后除了广度外,还要注重技术积累的深度。这篇博客将会写一些前段时间学习的关于Java并发编程的Tips,之所以称为Tips, 意思是写的点可能会比较散,不是那么系统,但都是一些在Java并发编程中非常常用的东西。

Java8学习笔记

Java8是2014年发布的,至今也已经有快三年的时间了,之前虽然有学习过,但是学的比较零散,不成系统,而且也没有覆盖到Java8所有的特性。 由于公司已经使用了JDK1.8,所以工作中能使用Java8的机会还是很多的,因此决定来系统地学习一下Java8的新特性,这是对我最近学习Java8的一些记录, 以备在有些细节记不太清的时候可以查询。

理解Java中HashMap的工作原理

Java中的HashMap使用散列来高效的查找和存储值。HashMap内部使用Map.Entry的形式来保存key和value, 使用put(key,value)方法存储值,使用get(key)方法查找值。

理解hashCode()

Java中的hashCode()方法,是顶层对象Object中的方法,因此Java中所有的对象都会带有hashCode()方法。 在各种最佳实践中,都会建议在编写自己的类的时候要同时覆盖hashCode()equals()方法, 但是在使用散列的数据结构时(HashMap, HashSet, LinkedHashSet, LinkedHashMap), 如果不为键覆盖hashCode()equals()方法,将无法正确的处理该键。

Spring MVC Hello World Example XML

当一个请求到来的时候,在Spring MVC中由DispatcherServlet来担任FrontController的角色,它负责接收并根据具体的处理逻辑, 委派给它的下一级Controller去实现具体的Web请求处理。

DispatcherServlet通过HandlerMapping来找寻具体的Handler或者HandlerAdapter来处理具体的请求,也就是Controller, Controller对应的是DispatcherServlet的次级控制器,它本身实现了对应某个具体的Web请求的处理逻辑。

Spring中的事务管理

Spring中的事务管理通常有两种方式,即编程式事务管理和声明式事务管理。在学习Spring中的事务管理前, 首先需要了解几个事务中的概念。

关于事务的一些概念

事务本身持有4个限定属性,即原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability), 这也就是常说的事务ACID属性。

Spring中的三种依赖注入方式

Spring的IoC容器是整个Spring框架的核心和基础。IoC的英文全称是Inversion Of Control,翻译过来的意思就是控制反转, 与IoC经常一起提到的另一个概念叫做依赖注入(Dependency Injection),在Spring中这是两个类似的概念。 Spring中实现依赖注入通常有这么几种方式:

Servlet&JSP学习

在进行Java Web开发的时候,我们会使用各种框架,比如Spring、Struts2等等。框架的封装非常完善,隐藏了许多底层的细节, 让开发人员可以不用去关注这些细节,专注于业务的开发。但是作为一个Java Web的初学者,如果一上来就接触这些框架,往往会被这些 框架表面上的一些东西迷惑,看不到底层实现的原理。这就会造成如果下次换了一个框架,又要从头开始学,做不到举一反三,融汇贯通。