- SpringMVC的执行流程
1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,
- Java过滤器与拦截器深度解析
目录概述过滤器Filter拦截器Interceptor执行流程图解核心区别对比代码实现示例使用场景最佳实践概述在JavaWeb开发中,过滤器(Filter)和拦截器(Interceptor)是两种重要的请求处理机制。它们都能够对HTTP请求进行预处理和后处理,但在实现方式、执行时机和应用场景上有着显著的区别。关键特征对比表特征过滤器(Filter)拦截器(Interceptor)️基于Servle
- JAVA在国企应用中如何实现大文件上传?
路过了忘了
java开发语言java大文件上传java大文件秒传java大文件上传下载java文件传输解决方案jsp大文件上传
军工利刃出鞘:破解100G涉密文件传输难题初春的挑战2025年3月的北京仍带着料峭寒意,军工研究院的会议室里却气氛灼热。大屏幕上跳动着红色警示:“政府单位100G涉密文件传输需求——现有系统兼容性评估:0%”。作为项目总工,我盯着这个刺眼的数字,指尖无意识地摩挲着茶杯边缘。"传统方案最多支持20G文件传输。"技术总监老张推了推眼镜,"而且我们的JSP框架是十年前基于Struts2搭建的,要兼容现代
- 在 Vue 3 中使用 axios 拦截器处理过期 token 时报错的问题
使用axios拦截器处理过期token的代码如下所示axios.interceptors.response.use(function(response){console.log('返回结果:',response);returnresponse;},error=>{console.log('返回错误:',error);constresponse=error.response;conststatus=
- JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))
哈哈哈哈哈0627
JavaWeb(苍穹外卖)学习笔记
前言本篇文章是学习B站黑马程序员苍穹外卖的学习笔记。我的学习路线是Java基础语法-JavaWeb-做项目,管理端的功能学习完之后,又进入用户端的登陆界面的开发,我们可以看到在后续的请求当中,都会在请求头中携带能验证身份的凭证到服务端,而服务端需要统一拦截所有的请求,从而判断是否携带的有合法的JWT令牌,下面主要来说说负责拦截的Filter(过滤器)和Interceptor(拦截器)(感觉整个项目
- MyBatis Plus 分页
中东大鹅
mybatisjava数据库springboot
一、分页插件MyBatisPlus自带分页插件,只要简单的配置即可实现分页功能1、添加配置类@ConfigurationpublicclassMyConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();
- Axios 响应拦截器
1.定义:响应拦截器(ResponseInterceptor)是一个可以在axios接收到服务器响应后,响应数据交给.then()处理之前执行的函数。你可以用它来统一处理响应数据,进行错误处理,或者对返回的数据做格式化和转换等操作。2.怎么使用axios响应拦截器在axios中,响应拦截器是通过axios.interceptors.response.use()方法来添加的,而响应拦截器默认有俩个参
- 尚庭公寓----------分页查询
设计师小聂!
尚庭公寓java开发语言mavenspringmybatis
根据条件分页查询公寓列表进行分页配置packagecom.nie.lease.common.mybatisplus;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.my
- axios封装使用
Hui-1018
前端axios
axios配置配置拦截并使用promise封装get和post请求提示:注意部分伪代码,需要根据实际场景做一些修改importaxiosfrom'axios'constservice=axios.create({baseURL:process.env.BASE_API,//api的base_urltimeout:5000//请求超时时间})//请求拦截器service.interceptors.r
- 微信小程序 wx.request() 的封装
xkxnq
微信小程序微信小程序
基于微信小程序的wx.request()方法封装下面是一个封装方案,满足您提出的所有要求:classHttpService{constructor(){this.baseUrl='';//基础URLthis.pendingRequests=newMap();//请求缓存池this.interceptors={request:[],response:[]};}//设置基础URLsetBaseUrl(
- 第六十二天 服务攻防-框架安全&CVE复现&Spring&Struts&Laravela&ThinkPHP
清歌secure
网络安全全栈学习笔记安全springstruts
第62天服务攻防-框架安全&CVE复现&Spring&Struts&Laravela&ThinkPHP知识点:中间件及框架列表:IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere,Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flas
- 高校毕业设计选题管理系统的SSH框架实现
Kiki-2189
本文还有配套的精品资源,点击获取简介:该系统基于SSH架构(Struts2、Spring和Hibernate)建立,旨在简化和优化高校毕业设计的选题流程,提高教学管理效率。系统根据角色(管理员、教师、学生)分配不同功能与权限,涵盖用户管理、课题发布与审核、文档提交和评估等。采用了JSP技术进行用户界面的构建,并利用SSH框架的特性简化了开发流程,提高了系统的稳定性和交互性。1.SSH框架应用于Ja
- 前端学习 vben 之 axios interceptors
aha-凯心
vbenadmin启航前端学习
前端学习vben之axiosinterceptorsinterceptor拦截器,是一种软件设计模式,核心思想就是在程序执行的特定阶段(如请求发送前,响应返回后,方法调用前后等)自动插入自定义逻辑。实现对核心流程的“拦截”和增强。它本质上是一种面向切面编程(AOP)的具体实现,用于解耦横跨多个模块的通用功能(如日志、认证、错误处理)。axios中的interceptoraxios中实现了inter
- Spring事务管理深度解析:AOP机制与实战要点
半个脑袋儿
Springspringjava后端
结论先行AOP代理是基石:Spring事务通过动态代理(JDK或CGLIB)为@Transactional注解的Bean创建代理对象。事务逻辑(开启、提交、回滚)被封装在切面(核心是TransactionInterceptor)中,与业务代码解耦。注解驱动配置:@Transactional注解声明事务属性(传播行为、隔离级别等)。Spring容器在启动时解析此注解并创建代理。拦截器执行事务:方法调
- spring boot使用mybatis-plus实现分页功能
kong@react
springbootmybatis后端
使用MyBatis-Plus实现分页功能MyBatis-Plus提供了内置的分页插件,可以轻松实现分页查询功能。以下是实现分页的具体方法:配置分页插件在SpringBoot项目中,需要在配置类中注册分页插件:@ConfigurationpublicclassMybatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusIntercept
- SpringBoot-19-企业云端开发实践之web开发晋级
皮皮冰燃
SpringBootspringboot前端后端
文章目录1静态资源访问1.1static静态资源目录1.2application.properties(过滤规则)2文件上传2.1文件上传原理2.2SprintBoot文件上传功能2.3FileUploadController.java2.4配置访问上传的文件3拦截器3.1interceptor/LoginInterceptor3.2config/WebConfig4RESTful服务和Swagg
- JavaWeb(苍穹外卖)--学习笔记03(登录生成令牌)
老虎0627
JavaWeb(苍穹外卖)学习笔记java
前言本片文章是学习B站黑马程序员苍穹外卖的学习笔记。在Day01(如果学到登录界面这里卡住了,可以看看这篇文章),登陆界面的后端实现大致可以分为两部分登录功能和登录校验,其中登陆校验的实现是基于令牌JWT技术来实现会话追踪(校验部分还有拦截器Interceptor这个我没太学懂视频也没提,以后在更)JWT令牌基本概念JWT是一种在Web应用程序,简单且安全地处理用户身份验证和信息交换的技术,首先我
- 【MyBatis插件全解析】动态代理+拦截链,打造你的专属ORM扩展
你是否想过在MyBatis执行SQL时自动添加分页功能?或者统一加密数据库敏感字段?MyBatis插件就是实现这些黑科技的终极武器!本文将带你彻底掌握插件开发的核心原理与实战技巧!一、插件能做什么?应用场景一览️1.典型应用场景场景实现效果代表插件SQL分页自动添加LIMIT/OFFSETPageHelper字段加解密出入参自动加解密CryptoInterceptorSQL性能监控记录慢查询并告警
- 16.Spring Boot 国际化完全指南
文章目录1.国际化基础概念1.1什么是国际化?1.2国际化的重要性1.3国际化相关术语2.SpringBoot国际化架构2.1SpringBoot国际化核心组件2.2国际化工作流程2.3区域解析器类型3.SpringBoot国际化基础配置3.1添加依赖3.2创建国际化资源文件3.3配置MessageSource3.4配置LocaleResolver和LocaleChangeInterceptor4
- Android逆向(Frida思路(第一集))
aaiier
androidpython开发语言
在FridaAndroid上,如果想先修改某个类的方法1内部调用的方法2,然后再启动方法1,通常用Java.use或Interceptor.attach进行Hook。Java.use()获取类并调用方法choose()查找已创建的实例并调用方法overload()精确调用特定参数的方法Java.cast()转换choose()选中的对象并调用方法implementation会完全替换方法的所有代码
- Java手动打印执行过的sql
GoodStudyAndDayDayUp
javasql开发语言
1.拦截器packagecom.xxx.platform.common.interceptor;importcom.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;importcom.xxx.platform.common.aop.OLAPQuery;importcom.xxx.platform.constant
- JAVA——JAVA知识点集锦(下)
Faith_chao
JAVA基础JAVA基础知识点
转自:http://blog.csdn.net/Scythe666/article/details/51994782这部分主要是开源JavaEE框架方面的内容,包括Hibernate、MyBatis、Spring、SpringMVC等,由于Struts2已经是明日黄花,在这里就不讨论Struts2的面试题,如果需要了解相关内容,可以参考我的另一篇文章《Java面试题集(86-115)》。此外,这篇
- MybatisPlus - QueryMapper分页查询出来total=0
BACKLS
javamysql数据库mybatisspringboot
通过QueryMapper.selectPage,查询的时候,发现Records是正常的,但是total为0,未能正常分页、是因为、SpirngBoot没有读取到PaginationInnerInterceptor这个Bean解决办法:新建一个MybatisPlasConfig@EnableTransactionManagement@ConfigurationpublicclassMybatisP
- uniapp实现路由拦截
小明在码鱼
uni-app笔记javascript前端html
使用uni官方提供的拦截器uni.addInterceptor实现在用户未登录的情况下,拦截其访问需要登录权限的页面,并将其重定向到登录页面。1.创建拦截器函数//src/composables/interceptor.js//页面白名单,不受拦截constwhiteList=['/pages/login/login']functionhasPermission(url){//获取本地缓存的登录信
- uniapp路由拦截解决方案
柏昕凤Driscoll
uniapp路由拦截解决方案【下载地址】uniapp路由拦截解决方案uniapp路由拦截解决方案为开发者提供了高效的路由管理工具,支持vue2和vue3版本。通过`uni.addInterceptor`API,开发者可以轻松实现路由跳转的拦截处理,适用于H5及多种小程序平台。该方案不仅支持全拦截功能,还能获取当前路由信息,便于进行更多自定义操作。已在H5、微信小程序、支付宝小程序、抖音小程序等平台
- 微信小程序实现路由拦截的方法
半点寒12W
javascript前端
微信小程序路由拦截实现方法微信小程序本身没有提供直接的路由拦截功能,但可以通过以下几种方式实现类似的效果:1.使用页面跳转前的拦截方法一:封装路由跳转方法//utils/router.jsconstrouteInterceptor={navigateTo:function(params){if(checkAuth()){//你的拦截条件wx.navigateTo(params)}else{wx.r
- Uniapp路由拦截(跳转登录)
啥子花道
uni-app前端
新建interceptors文件夹新建文件route.ts/***路由拦截,通常也是登录拦截*可以设置路由白名单,或者黑名单,看业务需要选哪一个*我这里应为大部分都可以随便进入,所以使用黑名单*/import{getNeedLoginPages,needLoginPagesas_needLoginPages}from'@/utils'//TODOCheckconstloginRoute='/pag
- uniapp路由拦截实现方法
Uniapp路由拦截实现方法Uniapp提供了比微信小程序更灵活的路由拦截方式,可以通过以下几种方法实现:1.使用全局前置守卫(推荐)在main.js或router.js中配置全局前置守卫://main.jsimportAppfrom'./App'import{onLaunch}from'@dcloudio/uni-app'//路由拦截器constrouterInterceptor=(to,fro
- Spring Boot拦截器详解:原理、实现与应用场景
嘵奇
提升自己springboot后端java
精心整理了最新的面试资料和简历模板,有需要的可以自行获取点击前往百度网盘获取点击前往夸克网盘获取一、拦截器概述拦截器(Interceptor)是SpringMVC框架中用于对请求进行预处理和后处理的组件,主要作用于Controller层。相较于Filter(过滤器)作用于更底层,拦截器可以获取Spring的上下文信息,更适合处理与业务逻辑相关的请求拦截。拦截器与过滤器的区别:作用层面:Filter
- spring mvc拦截器实现步骤
IT莫染
FunctionModulejava教程面试题等springmvc
1.springmvc.xml里面配置:2.拦截器类packagecom.itheima.springmvc.interceptor;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servlet.Handle
- java类加载顺序
3213213333332132
java
package com.demo;
/**
* @Description 类加载顺序
* @author FuJianyong
* 2015-2-6上午11:21:37
*/
public class ClassLoaderSequence {
String s1 = "成员属性";
static String s2 = "
- Hibernate与mybitas的比较
BlueSkator
sqlHibernate框架ibatisorm
第一章 Hibernate与MyBatis
Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。
MyBatis 参考资料官网:http:
- php多维数组排序以及实际工作中的应用
dcj3sjt126com
PHPusortuasort
自定义排序函数返回false或负数意味着第一个参数应该排在第二个参数的前面, 正数或true反之, 0相等usort不保存键名uasort 键名会保存下来uksort 排序是对键名进行的
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8&q
- DOM改变字体大小
周华华
前端
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&q
- c3p0的配置
g21121
c3p0
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的下载地址是:http://sourceforge.net/projects/c3p0/这里可以下载到c3p0最新版本。
以在spring中配置dataSource为例:
<!-- spring加载资源文件 -->
<bean name="prope
- Java获取工程路径的几种方法
510888780
java
第一种:
File f = new File(this.getClass().getResource("/").getPath());
System.out.println(f);
结果:
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin
获取当前类的所在工程路径;
如果不加“
- 在类Unix系统下实现SSH免密码登录服务器
Harry642
免密ssh
1.客户机
(1)执行ssh-keygen -t rsa -C "
[email protected]"生成公钥,xxx为自定义大email地址
(2)执行scp ~/.ssh/id_rsa.pub root@xxxxxxxxx:/tmp将公钥拷贝到服务器上,xxx为服务器地址
(3)执行cat
- Java新手入门的30个基本概念一
aijuans
javajava 入门新手
在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念。 Java概述: 目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合
- Memcached for windows 简单介绍
antlove
javaWebwindowscachememcached
1. 安装memcached server
a. 下载memcached-1.2.6-win32-bin.zip
b. 解压缩,dos 窗口切换到 memcached.exe所在目录,运行memcached.exe -d install
c.启动memcached Server,直接在dos窗口键入 net start "memcached Server&quo
- 数据库对象的视图和索引
百合不是茶
索引oeacle数据库视图
视图
视图是从一个表或视图导出的表,也可以是从多个表或视图导出的表。视图是一个虚表,数据库不对视图所对应的数据进行实际存储,只存储视图的定义,对视图的数据进行操作时,只能将字段定义为视图,不能将具体的数据定义为视图
为什么oracle需要视图;
&
- Mockito(一) --入门篇
bijian1013
持续集成mockito单元测试
Mockito是一个针对Java的mocking框架,它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望 行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。
&nb
- 精通Oracle10编程SQL(5)SQL函数
bijian1013
oracle数据库plsql
/*
* SQL函数
*/
--数字函数
--ABS(n):返回数字n的绝对值
declare
v_abs number(6,2);
begin
v_abs:=abs(&no);
dbms_output.put_line('绝对值:'||v_abs);
end;
--ACOS(n):返回数字n的反余弦值,输入值的范围是-1~1,输出值的单位为弧度
- 【Log4j一】Log4j总体介绍
bit1129
log4j
Log4j组件:Logger、Appender、Layout
Log4j核心包含三个组件:logger、appender和layout。这三个组件协作提供日志功能:
日志的输出目标
日志的输出格式
日志的输出级别(是否抑制日志的输出)
logger继承特性
A logger is said to be an ancestor of anothe
- Java IO笔记
白糖_
java
public static void main(String[] args) throws IOException {
//输入流
InputStream in = Test.class.getResourceAsStream("/test");
InputStreamReader isr = new InputStreamReader(in);
Bu
- Docker 监控
ronin47
docker监控
目前项目内部署了docker,于是涉及到关于监控的事情,参考一些经典实例以及一些自己的想法,总结一下思路。 1、关于监控的内容 监控宿主机本身
监控宿主机本身还是比较简单的,同其他服务器监控类似,对cpu、network、io、disk等做通用的检查,这里不再细说。
额外的,因为是docker的
- java-顺时针打印图形
bylijinnan
java
一个画图程序 要求打印出:
1.int i=5;
2.1 2 3 4 5
3.16 17 18 19 6
4.15 24 25 20 7
5.14 23 22 21 8
6.13 12 11 10 9
7.
8.int i=6
9.1 2 3 4 5 6
10.20 21 22 23 24 7
11.19
- 关于iReport汉化版强制使用英文的配置方法
Kai_Ge
iReport汉化英文版
对于那些具有强迫症的工程师来说,软件汉化固然好用,但是汉化不完整却极为头疼,本方法针对iReport汉化不完整的情况,强制使用英文版,方法如下:
在 iReport 安装路径下的 etc/ireport.conf 里增加红色部分启动参数,即可变为英文版。
# ${HOME} will be replaced by user home directory accordin
- [并行计算]论宇宙的可计算性
comsci
并行计算
现在我们知道,一个涡旋系统具有并行计算能力.按照自然运动理论,这个系统也同时具有存储能力,同时具备计算和存储能力的系统,在某种条件下一般都会产生意识......
那么,这种概念让我们推论出一个结论
&nb
- 用OpenGL实现无限循环的coverflow
dai_lm
androidcoverflow
网上找了很久,都是用Gallery实现的,效果不是很满意,结果发现这个用OpenGL实现的,稍微修改了一下源码,实现了无限循环功能
源码地址:
https://github.com/jackfengji/glcoverflow
public class CoverFlowOpenGL extends GLSurfaceView implements
GLSurfaceV
- JAVA数据计算的几个解决方案1
datamachine
javaHibernate计算
老大丢过来的软件跑了10天,摸到点门道,正好跟以前攒的私房有关联,整理存档。
-----------------------------华丽的分割线-------------------------------------
数据计算层是指介于数据存储和应用程序之间,负责计算数据存储层的数据,并将计算结果返回应用程序的层次。J
&nbs
- 简单的用户授权系统,利用给user表添加一个字段标识管理员的方式
dcj3sjt126com
yii
怎么创建一个简单的(非 RBAC)用户授权系统
通过查看论坛,我发现这是一个常见的问题,所以我决定写这篇文章。
本文只包括授权系统.假设你已经知道怎么创建身份验证系统(登录)。 数据库
首先在 user 表创建一个新的字段(integer 类型),字段名 'accessLevel',它定义了用户的访问权限 扩展 CWebUser 类
在配置文件(一般为 protecte
- 未选之路
dcj3sjt126com
诗
作者:罗伯特*费罗斯特
黄色的树林里分出两条路,
可惜我不能同时去涉足,
我在那路口久久伫立,
我向着一条路极目望去,
直到它消失在丛林深处.
但我却选了另外一条路,
它荒草萋萋,十分幽寂;
显得更诱人,更美丽,
虽然在这两条小路上,
都很少留下旅人的足迹.
那天清晨落叶满地,
两条路都未见脚印痕迹.
呵,留下一条路等改日再
- Java处理15位身份证变18位
蕃薯耀
18位身份证变15位15位身份证变18位身份证转换
15位身份证变18位,18位身份证变15位
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 201
- SpringMVC4零配置--应用上下文配置【AppConfig】
hanqunfeng
springmvc4
从spring3.0开始,Spring将JavaConfig整合到核心模块,普通的POJO只需要标注@Configuration注解,就可以成为spring配置类,并通过在方法上标注@Bean注解的方式注入bean。
Xml配置和Java类配置对比如下:
applicationContext-AppConfig.xml
<!-- 激活自动代理功能 参看:
- Android中webview跟JAVASCRIPT中的交互
jackyrong
JavaScripthtmlandroid脚本
在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之:
1 JAVASCRIPT脚本调用android程序
要在webview中,调用addJavascriptInterface(OBJ,int
- 8个最佳Web开发资源推荐
lampcy
编程Web程序员
Web开发对程序员来说是一项较为复杂的工作,程序员需要快速地满足用户需求。如今很多的在线资源可以给程序员提供帮助,比如指导手册、在线课程和一些参考资料,而且这些资源基本都是免费和适合初学者的。无论你是需要选择一门新的编程语言,或是了解最新的标准,还是需要从其他地方找到一些灵感,我们这里为你整理了一些很好的Web开发资源,帮助你更成功地进行Web开发。
这里列出10个最佳Web开发资源,它们都是受
- 架构师之面试------jdk的hashMap实现
nannan408
HashMap
1.前言。
如题。
2.详述。
(1)hashMap算法就是数组链表。数组存放的元素是键值对。jdk通过移位算法(其实也就是简单的加乘算法),如下代码来生成数组下标(生成后indexFor一下就成下标了)。
static int hash(int h)
{
h ^= (h >>> 20) ^ (h >>>
- html禁止清除input文本输入缓存
Rainbow702
html缓存input输入框change
多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。
如果不想让浏览器缓存input的值,有2种方法:
方法一: 在不想使用缓存的input中添加 autocomplete="off";
<input type="text" autocomplete="off" n
- POJO和JavaBean的区别和联系
tjmljw
POJOjava beans
POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规
- java中单例的五种写法
liuxiaoling
java单例
/**
* 单例模式的五种写法:
* 1、懒汉
* 2、恶汉
* 3、静态内部类
* 4、枚举
* 5、双重校验锁
*/
/**
* 五、 双重校验锁,在当前的内存模型中无效
*/
class LockSingleton
{
private volatile static LockSingleton singleton;
pri