关闭

[置顶] REST风格框架实战:从MVC到前后端分离(附完整Demo)

本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)》一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格项目的基本特征,即具有统一响应结构、 前后台数据流转机制(HTTP消息与Java对象的互相转化机制)、统一的异常处理机制、参数验证机制、Cors跨域请求机制以及鉴权机制,并分享该项目完整源码。...
阅读(2938) 评论(8)

[置顶] Spring MVC 简述:从MVC框架普遍关注的问题说起

任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发、数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外。本文首先概述MVC模式的分层思想与MVC框架普遍关注的问题,并以此为契机结合SpringMVC的入门级案例简要地从原理、架构角度介绍了它对这些问题的处理。最后,本文对SpringMVC和Struts2作了进一步对比,以便加强对MVC框架的理解与认知。...
阅读(2136) 评论(10)

[置顶] 要怎样努力,才能成为很厉害的人?

长大以后,感觉热血是一件很难得的事情。 热血不是无知及其附属品无畏,而是一种本心的坚韧与坚持,即使生活不尽如人意也即使花前月下良田万顷。总是能与世界好好相处,却不随波逐流,也不锋芒毕露。只是平凡中一员,却有血有肉有原则有初心有思想,内心似火却看起来风平浪静。这个故事确实让我陷入思考,鞭策自己,久久不能平静,遂与众分享。...
阅读(683) 评论(1)

[置顶] Map 综述(三):彻头彻尾理解 ConcurrentHashMap

ConcurrentHashMap是J.U.C的重要成员,它是HashMap的一个线程安全的版本。在默认理想状态下,ConcurrentHashMap可以支持16个线程执行并发写操作及任意数量线程的读操作。本文将结合Java内存模型和JDK源代码,剖析其高并发的具体实现机制,包括在JDK中的定义和结构、并发存取、重哈希和跨段操作,并着重剖析了ConcurrentHashMap读操作不需要加锁的内在奥秘和原理。...
阅读(3672) 评论(9)

[置顶] 深入理解Java对象的创建过程:类的初始化与实例化

在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象的创建过程。...
阅读(4957) 评论(7)

[置顶] 算法设计方法:递归的内涵与经典应用

大师说:To Iterate is Human, to Recurse, Divine.毋庸置疑地,递归确实是一个奇妙的思维方式。对一些简单的递归问题,我们总是惊叹于递归描述问题和编写代码的简洁,但要想真正领悟递归的精髓、灵活地运用递归思想来解决问题却并不是一件容易的事情。本文剖析了递归的思想内涵并分析了阶乘、斐波那契数列、汉诺塔、杨辉三角的存取、字符串回文判断、字符串全排列、二分查找、树的深度求解等八个问题。...
阅读(2613) 评论(0)

[置顶] 图解Java 垃圾回收机制

Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。垃圾回收机制的引入有效地解决了内存的回收问题使得他们在编写程序的时候不再需要考虑内存管理。本文首先着重介绍了判断一个对象是否可以被回收的两种经典算法,并详述了四种典型的垃圾回收算法的基本思想及其直接应用——垃圾收集器,最后结合内存回收策略介绍了内存分配规则。...
阅读(4366) 评论(26)

[置顶] JVM 内存模型概述

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些数据区域都有各自的用途,以及创建和销毁的时间,并且它们可以分为两种类型:线程共享的方法区和堆,线程私有的虚拟机栈、本地方法栈和程序计数器。在此基础上,我们探讨了在虚拟机中对象的创建和对象的访问定位等问题,并分析了Java虚拟机规范中异常产生的情况。...
阅读(11034) 评论(12)

[置顶] 简述数据库事务并发机制

事务是最小的逻辑执行单元,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务具有四个重要特征,即原子性、一致性、隔离性和持久性。本文首先叙述了数据库中事务的本质及其四大特性(ACID)的内涵,然后重点介绍了事务隔离性的动机和内涵,并介绍了事务隔离级别及其内涵。特别地,介于并发安全与效率的平衡,我们一般会结合事务隔离级别和乐观锁/悲观锁机制来保证事务并发安全性。...
阅读(2453) 评论(6)

[置顶] 计算机网络体系结构综述(下)

我们知道TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际上的网络通信标准。在上篇[《高频笔试面试干货:计算机网络体系结构综述(上)》][1]的基础上,本文着重概述了两种典型的层次化网络体系机构 —— OSI七层参考体系结构和TCP/IP四层协议结构,并对每种体系结构中的各层就任务、功能、协议及与其他相似层的区别等几方面做了进一步得介绍,力求还原这些典型的网络体系结构的全貌。...
阅读(2646) 评论(2)

[置顶] Struts1与Struts2的区别和对比(深度好文)

本文介绍了Struts2的起源,详细对比了Struts2和Struts1.x的差异,并穿插概述了Struts2框架和请求流程。本文详细介绍了Struts1.x和Struts2两者之间在Action方面、对 Servlet 的依赖方面、输入捕获方面和表达式语言等十几个方面的差别,同时指出Struts2对拦截器与IoC的支持,而在Struts1.x中这些特性是很难想象的。...
阅读(1842) 评论(0)

[置顶] 与MVC框架解耦的OGNL:前世今生及其基本用法

虽然我们通过MVC框架而结缘OGNL,但它并未与MVC框架耦合在一起,而是一个以独立的库文件出现的功能强大的表达式语言,是字符串与Java对象之间沟通的桥梁。它通过简单一致的语法,可以存取Java对象树中的任意属性、调用Java对象树的方法,并自动实现必要的类型转化。本文首先概述了Ognl的前世今生,介绍了对Java对象属性的访问,静态、实例和构造方法的调用,容器的访问以及集合操作等内容,奠定学习OGNL的基础。...
阅读(4850) 评论(1)

[置顶] 彻头彻尾理解单例模式与多线程

本文概述了单例模式产生动机,揭示了单例模式的本质和应用场景。然后我们给出了单例模式在单线程环境下的两种经典实现:饿汉式和懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的。在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,使用synchronized方法、synchronized块、静态内部类、双重检查和ThreadLocal实现懒汉式单例,并给出实现效率高且线程安全的单例所需要注意的事项...
阅读(3571) 评论(11)

[置顶] Java 并发:并发背景

并发与操作系统的生命历程息息相关。进程的出现,使得程序状态的保存变为现实,为进程间的切换提供了可能,实现了操作系统的并发,大大提高资源利用率。之后,人们对实时性又有了更高的要求。由于一个进程由若干个子任务组成,所以人们就发明了线程,让每个线程负责一个独立的子任务,提高了程序的响应灵敏度,但同时也带来了诸如安全性、活跃性和性能等问题。总的来说,进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能。...
阅读(5994) 评论(13)

面试/笔试第二弹 —— 操作系统面试问题集锦

本文对面试/笔试过程中经常会被问到的一些关于操作系统的问题进行了梳理和总结,一方面方便自己温故知新,另一方面也希望为找工作的同学们提供一个复习参考。关于这块内容的初步了解和整体掌握,建议大家读一读《操作系统概念》(高教版)一书。...
阅读(61) 评论(0)

面试/笔试第一弹 —— 计算机网络面试问题集锦

本文对面试/笔试过程中经常会被问到的一些关于计算机网络的问题进行了梳理和总结,一方面方便自己温故知新,另一方面也希望为找工作的同学们提供一个复习参考。关于这块内容的初步了解和掌握,建议大家读一读《图解HTTP》一书。...
阅读(72) 评论(0)

优雅地创建复杂对象 —— Builder 模式

当我们需要创建一个复杂的对象时,使用静态工厂或者构造器的方式就显得特别笨拙和丑陋,因为它们有个共同的局限性:它们都不能很好地扩展到大量的可选参数,也就是说,灵活性很差。那么,对于这样的类,我们应该如何创建对象呢?本文列举了三种解决办法:重叠构造器模式、JavaBeans模式和Builder模式,并通过具体实例对上述三种方法进行铺垫和对比,从而真正帮助读者理解Builder模式。...
阅读(663) 评论(10)

Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别

无论是Filter、Strurs2 Interceptor还是SpringMVC Interceptor,它们都是AOP理念的实现,本文结合源码详细解剖了三者在具体实现上的异同。...
阅读(643) 评论(0)

过滤器(Filter)和拦截器(Interceptor)的区别

本文介绍主要介绍了Java Web Filter 与 Struts2 Interceptor 及其之间的联系与区别。...
阅读(524) 评论(1)

简述Spring容器与SpringMVC的容器的联系与区别

在Spring整体框架的核心概念中,容器的核心思想是管理Bean的整个生命周期。但在一个项目中,Spring容器往往不止一个,最常见的场景就是在一个项目中引入Spring和SpringMVC这两个框架,其本质就是两个容器:Spring是根容器,SpringMVC是其子容器。关于这两个容器的创建、联系及区别也正是本文所关注的问题。...
阅读(3045) 评论(15)

Java代理模式及其应用

代理根据代理类的产生方式和时机分为静态代理和动态代理两种。代理类不仅可以有效的将具体的实现与调用方进行解耦,通过面向接口进行编码完全将具体的实现隐藏在内部,而且还可以在符合开闭原则的前提下,对目标类进行进一步的增强。典型地,Spring AOP 是对JDK动态代理的经典应用。...
阅读(418) 评论(3)

Spring 事务管理机制概述

用户的每次请求都对应一个业务逻辑方法,而一个业务逻辑方法往往包括一系列数据库原子访问操作,并且这些操作应绑定成一个事务来执行。使用传统事务编程策略时,程序代码必然和具体的事务操作代码耦合,而Spring事务管理策略可以避免这种尴尬。Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理,本文在对Spring事务管理API分析的基础上,详细地阐述了Spring编程式事务管理和声明式事务管理的原理、本质和使用...
阅读(1960) 评论(4)

理解RESTful架构

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,而RESTful架构就是目前最流行的一种互联网软件架构。...
阅读(881) 评论(0)

Spring 核心技术概览(一)

Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架,其从持久层、业务层到表现层都拥有相应的支持,几乎为企业应用提供了所需的一切。本文首先概述了Spring容器的IoC控制反转和DI依赖注入两大概念,然后详述了Spring的IoC容器BeanFactory、Spring容器ApplicationContext和Spring的Web容器WebApplicationContext,并介绍了三者的异同。...
阅读(1220) 评论(2)

Map 综述(四):彻头彻尾理解 HashTable

Hashtable与HashMap都是Map族中较为常用的实现,也都是Java Collection Framework 的重要成员,它们的本质都是链表数组。本文深入JDK源码并从定义、构造、结构、存取等四个方面深入解读了Hashtable的底层结构与存储逻辑,并阐述了HashMap、Hashtable与ConcurrentHashMap三者间的联系与区别。...
阅读(1736) 评论(2)

Map 综述(一):彻头彻尾理解 HashMap

HashMap是Map族中最为常用的一种,也是Java Collection Framework的重要成员。本文首先给出了HashMap的实质并概述了其与Map、HashSet的关系,给出了其在JDK中的定义,并分析了它的四种构造方式。最后,通过对其数据结构、实现原理、源码实现的剖析,深入到它底层Hash存储机制,解释了其底层数组长度总是2的n次方的原因,也揭示了其快速存取、扩容及扩容后的重哈希的原理与实现。...
阅读(4726) 评论(21)
80条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:189649次
    • 积分:3100
    • 等级:
    • 排名:第12157名
    • 原创:61篇
    • 转载:19篇
    • 译文:0篇
    • 评论:482条
    Notice & Contacts
    如果我的博文中存在错误或者您不认同的地方,欢迎通过评论或下面的 Emial/QQ 与我讨论、交流,拜谢!

    QQ : 1277521332

    Please email me:

    博客专栏
    最新评论