`
文章列表
目录 ThreadLocal使用场景 ThreadLocal实现详解 关于内存泄漏 Strust2中的ActionContext 在Spring MVC中使用ThreadLocal   ThreadLocal使用场景   ThreadLocal的一个典型使用场景,其实就是在“同一个线程内”为了避免多个方法调用过程中传递 ...
CSRF攻击   CSRF攻击全称为:Cross-site request forgery,直接翻译为:跨站请求伪造。直接看名称还是有点难以理解,容易跟XSS攻击搞混。在讲解如何防御之前,首先看看如何攻击,举个简单的攻击例子: 1、假设你知道身边的一个同 ...
上次对“简单工厂模式”的使用进行了总结,讲解过程中使用了在“网上商城”买东西的例子。大家也许注意到了所有商品的实例化都是在一个工厂类ProductFactory中完成,如果商城有数十万个商品,都在一个工厂类中实现肯定是 ...
创建对象在面向对象程序设计中几乎无处不在,在Java中实例化一个对象是通过new关键字实现的,对对象的赋值、尤其是复杂对象的赋值往往是一个相对复杂的过程。工厂模式的作用就是对对象的创建过程进行封装的一个过程。根据不同的业务场景,工厂模式又分为:简单工厂模式、工厂方法模式、抽象工厂模式。本次总结先说下“简单工厂模式”:   简单工厂模式   简单工厂模式一般是把对象的创建过程单独提取到一个工厂类中进行,工厂类中的对象创建方法一般都是静态方法。这种方式的好处是,这个工厂类可以多处使用,能保证对象的创建过程的一致性(全局统一),以及代码的复用性。类图也很简单:    这里以模拟商场下单 ...
Java中类的实例化是通过new关键字实现的。单例模式目标和作用,就是保证任意时刻获取到的类对象都是同一个。也就是说只能使用一次new关键字创建对象,并把这个对象一直保留下来供程序全局使用。根据不同的使用场景,有三种不同的“单例模式”实现方式,下面分别进行讲解:   单线程下的单例模式   单线程下的单例模式是最常见的使用方式,但也经常被错误的用到多线程的情况下。其实现方式很简单: 为了限制外部使用new关键字,必须把构造方法设置为私有private; 为了把这个创建的对象一直保留下来,必须使用static的常量指向这个对象; 为了外部能使用这个对象,必须暴露一个public ...
在国际化的项目中需要处理的日期时间问题主要有两点: 1、日期时间的国际化格式问题处理; 2、日期时间的时区问题处理,这两个问题要区分开,不要弄混了。   日期时间国际化化格式处理   对应的关键词:Locale 日期时间的国际化格式指的是在不同的国家和地区对日期时间的显示方式不同,主要通过不同国家地区不同的语言习惯,对同一个实现的呈现方式不同。在java中需要结合Locale类进行处理: public static void main(String[] args) { Date date = new Date(); Locale local ...
在讲述Spring国际化中遇到的问题之前,首先看下Spring MVC容器和Spring IOC容器,双容器的相关背景知识。   双容器   通常所说的spring 容器,只的是IOC容器。容器的主要作用是在程序启动时把所需的bean提前加载到内存(本质上是存储在一个ConcurrentHashMap里,DefaultListableBeanFactory 类的beanDefinitionMap字段),恰好如果web层使用的是Spring MVC,这时会产生另一个新的容—Spring MVC容器。这两个容器的启动入口都是在web.xml配置:   <!-- step1 ...
目录   一、观察者模式介绍 二、实例讲解 三、在Srping 中整合“观察者模式” 四、扩展性体现 五、Java自带观察者模式支持   引言   在java项目开发中,经常会把一些重要的数据放到数据库里,但如果这些数据在程序中 ...
  前言   上次《Spring Security实战(一)-- 基于数据库认证》讲到使用Spring Security如何实现对web层的安全认证,Spring Security还可以实现对方法级别的权限控制。对方法的权限保护主要有两个应用场景: 1、由于开发疏忽导致web层 ...
前言   在Spring MVC的项目中,可以采用Spring 拦截器做权限控制,具体使用方法可以参考另一篇博文《Spring拦截器》。使用Spring 拦截器做权限控制最繁琐的就是需要自己实现用户、角色、权限管理,换到另一个系统又需要重复做一次。庆幸的是Spring Security可以帮我们实现用户、角色、权限管理,让研发人员从这些重复工作中解放出来,简化开发流程。   Spring Security的用户、角色、权限管理可以是基于内存、文件、数据库、LDAP等,但我们常用的还是数据库,这里以mysql数据库为例进行讲解。   现在一般有两种常规方式实现Spring Bean ...
前言   最近做的项目中,计划使用Spring Security做权限控制,但以前大多项目都是采用spring拦截器来实现。在使用Spring Security之前,首先对spring拦截器进行总结,这有助与对Spring Security的理解。使用spring拦截器做权限控制有点千篇一律,有大量重复的工作,Spring Security其实就是把这些重复的工作抽取成为框架,方便复用。   在Spring MVC的项目中使用Spring 拦截器做权限控制,一般会有两类拦截器:一个登录拦截器和多个权限验证拦截器。 登录拦截器拦截:所有的请求,验证用户是否登录,以及用户名密码是否正确 ...
前言   Jvm的内存结构是由《java虚拟机规范》制定的,《java虚拟机规范》只负责制定标准,具体的实现多种多样,比如:sun公司的HotSpot、BEA的JRockit、IBM的J9(前两个目前都已被Oracle收购),另外Apache、Google、微软等组织或公 ...
目录 一、组件化与“大中台”建设 二、“组件化”与项目“微服务化” 三、“组件化”与“前端” 四、项目“组件化”改造案例   前言   最近在做一个项目,项目的名称里挂了“组件化”三个字,项目目标是整合业务逻辑、调整系统架构 最终实现一套代码多国复用,降低维护成本。单从这个项目目标来看,这跟“组件化”一点关系都没有,准确的说这个项目应该叫“国际化”改造项目。   “组件化”的结果就是把系统作为一个个“组件”独立部署并对外服务,我理解的系统“组件化”,其实是对系统 “服务化”或 “微服务化”的另一种称呼罢了。区别在于“组件”是对外的“服务”,有些“服务”是私有的不能对外。 ...
目录   一、idea打包关闭test 二、log4j与slf4j包冲突 三、user.name配置与系统环境变量重名失效 四、jvm内存报警   日常工作中经常会遇到一些问题,会花大量时间去解决,但时间一长又会遗忘,以后不定期收集每周遇到问题,进行整理收集。以下是本周遇到的几个问题:   一、idea打包关闭test 本周项目处于调试阶段,在调试过程中经常出现数据库表里的测试数据被删、或被修改的情况。严重影响测试进度,刚开始是怀疑有同事人为的对数据进行修改,几经排查发现是由于在使用idea
引言   相信很多人多看过“策略模式”的定义、类图关系、以及使用介绍,本文的标题是“扩展性改造--策略模式”,但不会一开始就对“策略模式”的定义、类图进行讲解。 本文通过一个笔者最近开发中遇到的真实案例进 ...
Global site tag (gtag.js) - Google Analytics