- Java集合遍历的几种方式
Warren98
Javajavawindows开发语言后端springboot硬件工程笔记
迭代器不依赖索引遍历完毕后,指针不会复位.遍历时,不能使用集合的方法进行增加或删除.只能使用一次next()方法.主要方法publicinterfaceIterator{Iteratoriterator();//返回迭代器对象,默认指向当前集合的0索引booleanhasNext();//用于判断集合中是否还有下一个元素,有的话返回trueEnext();//返回迭代器的下一个元素,并将迭代器的指
- Could not extract GUID in text file UserSettings\Layouts\CurrentMaximizeLayout.dwlt at line 924.
zhannghong2003
Unityunity游戏引擎
错误提示:无法在文本文件UserSettings\Layouts\CurrentMaximizeLayout.dwlt的第924行提取GUID。UnityEngine.GUIUtility:ProcessEvent(int,intptr,bool&)这个错误发生在Unity无法解析一个损坏或格式错误的布局文件(CurrentMaximizeLayout.dwlt)时。以下是解决方法:解决方案:关闭
- 个人笔记集合框架
清秀咸鱼
笔记java算法
集合框架集合概念:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。和数组区别:(1)数组长度固定,集合长度不固定(2)数组可以存储基本类型和引用类型,集合只能存储引用类型位置:java.util.*;Collection根接口,父接口特点:代表一组任意类型的对象,无序、无下标、不能重复。booleanadd(0bjectobj)//添加一个对象。booleanaddAll(Col
- SQL注入:原理、类型与防范策略
数据冰山
本文还有配套的精品资源,点击获取简介:SQL注入是一种网络攻击手段,通过不当构建的SQL查询允许攻击者插入恶意代码,从而控制数据库。这种攻击可能导致数据泄露、篡改或系统控制。介绍了SQL注入的类型,包括错误信息注入、时间基注入、盲注和堆叠查询。提供了防范SQL注入的方法,包括使用参数化查询、输入验证、转义特殊字符等策略,并建议限制数据库权限和错误处理。教程资源可能包含在"SQL注入整理"压缩包中,
- SQL 注入攻击全面解析:分类、典型案例与防御实践
阿贾克斯的黎明
网络安全数据库oracle
目录SQL注入攻击全面解析:分类、典型案例与防御实践一、SQL注入基础概念1.1什么是SQL注入(SQLInjection)二、SQL注入攻击分类与典型案例2.1基于注入位置的分类2.1.1数字型注入2.1.2字符串型注入2.2基于回显结果的分类2.2.1显式回显注入(Union-BasedInjection)2.2.2盲注(BlindSQLInjection)2.3基于攻击手法的分类2.3.1堆
- Hutool Java工具类库-StrUtil
〃冷·夏ぐ
Hutooljava
一、依赖:cn.hutoolhutool-all5.4.5二、常用方法:方法名参数返回值作用备注isEmptyIfStr(Objectobj)obj:对象boolean如果对象是字符串是否为空串,空的定义如下:null空字符串:""该方法与isBlankIfStr(Object)的区别是:该方法不校验空白字符。isBlankIfStr(Objectobj)obj:对象boolean如果对象是字符串
- c# winform 五子棋 人机对战 (详细)
目录1.前言2.人机对战主要功能实现3.其他功能修改4.完整代码1.前言c#winform简单五子棋,支持连续悔棋。-CSDN博客基础版跳链接。建议先阅读。在基础版的界面上增加两个groupBox,并各自放两个radioButton。在基础版上form1.cs中增加变量privateboolisAIThinking=false;//判断是否该ai走privateTimeraiDelayTimer;
- 常用的Typescript特性
北海几经夏
前端前端
参考文档:TypeScript特性TS的类型系统是提升代码质量的核心工具,以下是比较常用的特性:1.基础类型约束与函数类型定义场景:为变量、函数参数和返回值指定明确类型,避免隐式类型转换错误。示例://变量类型注解constproductId:number=1001;constproductName:string="无线耳机";constisInStock:boolean=true;//函数类型定
- JS中的显式转换
我小时候很可爱
显式转换显示转换一般指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。布尔型转换ECMAScript中所有类型的值都有与Boolean值(true和false)等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。数据类型转换为true转换为falseString任何非空字符串空字符串Number任何非
- 20240619
Antimatthew
java开发语言
1.创建用户类packageltp20240619;publicclassUser{StringuserName;Stringpassword;booleanisLogin;/*return1:已在线return2:登录成功return3:密码错误*/publicintlogin(StringloginPwd){if(password.equals(loginPwd)){if(isLogin){r
- 前端进化论·JavaScript 篇 · 数据类型
像素笔记
篇javascript面试原理解析初学者数据类型安全操作符
1.JavaScript有哪些数据类型,它们的区别?JavaScript共有八种数据类型,分别是Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。其中Symbol和BigInt是ES6中新增的数据类型:Symbol代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。BigInt是一种数字类型的数据,它
- js中的基本类型和引用类型
凡凡的小web
基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。基本数据类型有这五种:Undefined、Null、String、Number、Boolean。引用类型:当复制保存着对象的某个变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。引用类型值指那些可能为多个值构成的对象。引用类型有这几种:object、Array、RegExp、Date、Funct
- 232. 用栈实现队列
bbruyew
力扣刷题算法数据结构leetcodec语言
题目请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明:你只能使用标准的栈操作——也就是只有pushtoto
- 代码命名:你以为是技术活儿?不,这是情商税!
兄弟,有没有过这样的深夜?你接手了一个“屎山”项目,时间紧,任务重。在某个伸手不见五指的Manager类里,你战战兢兢地打开一个名叫processData()的方法。定睛一看,方法签名是这样的:processData(Objectdata1,Mapinfo,booleanflag)一瞬间,你是不是感觉血压飙升,仿佛听见了来自上古时代的回响?你内心一万匹草泥马呼啸而过,默默打开git提交记录,只想找
- SQL盲注(异或注入)
做题时偶然遇到一道sql注入很多关键字都过滤了看wp说是异或注入遂研究了一下目录什么是异或,异或是干什么的?基于这个基础做一下sqllabs11关什么是异或,异或是干什么的?异或(XOR),在数学和逻辑运算中,是一种二元运算,表示为“⊕”或“^”。它的特点是:如果两个比较的位不同,则结果为1(真)。如果两个比较的位相同,则结果为0(假)。在逻辑运算中,异或可以这样理解:真XOR真=假真XOR假=真
- sql注入之布尔盲注
南棋子网络安全盟
网络安全sql数据库网络安全
布尔盲注在页面中不会显示数据库信息,一般情况下只会显示对与错的内容。判断条件判断函数条件判断函数if是SQL时间盲注中的必用函数,可以利用if函数来根据条件来反馈不同的结果。if函数格式如下所示:if([条件],[值1],[值2])当条件成立时,if函数返回值1,当条件不成立时,if函数返回值2.布尔型盲注入用到的SQL语句selectif(1=1,1,0)。if()函数在mysql是判断,第一个
- 代码随想录算法训练营第五十三天|图论part4
xindafu
图论
110.字符串接龙题目链接:110.字符串接龙文章讲解:代码随想录思路:把每个字符串看成图的一个节点。转换为求无权图两节点的的最短路径。求最短路径用bfs#include#include#include#include#includeusingnamespacestd;unordered_mapmymap;boolcanTransform(stringa,stringb){intcount=0;i
- C#(基本语法)
慢慢沉
C#c#
数据类型C#是一种强类型语言,变量必须声明类型。基本数据类型包括整型(int、long)、浮点型(float、double)、布尔型(bool)、字符型(char)和字符串型(string)。引用类型包括类、接口、数组等。intage=25;doubleprice=19.99;boolisActive=true;chargrade='A';stringname="John";变量与常量变量用于存储
- c#基本语法
1.C#中的命名空间是namespace,类似于Java中的package(包),在Java中导入包用import而c#中用using;2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写,而且有4种写法;3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写;还有布尔型,Java中是boolean,c#
- vue 组件水平滚动_Vue.js自定义垂直/水平滚动条组件|vue模拟滚动条
weixin_39726379
vue组件水平滚动
介绍VScroll滚动条基于vuejs2.x构建的美化XY轴滚动条组件。支持原生滚动条、鼠标移出是否隐藏滚动条、自定义滚动条尺寸、颜色及层级等功能。拥有漂亮且流畅的滚动体验!参数配置props:{//是否显示原生滚动条native:Boolean,//是否自动隐藏滚动条autohide:Boolean,//滚动条尺寸size:{type:[Number,String],default:''},//
- P1217 [USACO1.5] 回文质数 Prime Palindromes
张辰宇-
算法
题目描述因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。写一个程序来找出范围[a,b](5≤ausingnamespacestd;boolhuiwen(intn){ints=0,k=n;while(k!=0){s*=10;s+=k%10;k/=10;}if(s==n)returntrue;returnfalse;}boolzhishu(intn){for
- 力扣-416.分割等和子集
题目链接416.分割等和子集classSolution{publicbooleancanPartition(int[]nums){intsum=0;for(inti=0;i=0;j--){if(j-nums[i]>=0){//更新dp[j]:比较不放入当前数字和放入当前数字两种情况dp[j]=Math.max(dp[j],dp[j-nums[i]]+nums[i]);}}}returndp[tar
- 2024年3月电子学会Python等级考试试卷(一级)真题,包含答案
青少儿编程课堂
少儿编程资料大全付费专栏算法python电子学会考级电子学会真题2024年3月电子学会真题
202403Python-级真题1、下列哪个命令,可以将2024转换成'2024'呢?()Astr(2024)B.int(2024)c.float(2024)D.bool(2024)正确答案:A本题考察的是str()语句,将数字转换成字符串用到的是str()语句。2、猴子摘了一包桃子,第一天吃了全部的一半:第二天,吃剩下的(注意是剩下的)桃子的一半;以后每天都吃前一天剩下的一半;第四天吃完剩下的一
- Android开发——LiveData实现原理
2401_83817689
程序员androidredis数据库
@OverridebooleanshouldBeActive(){returnmOwner.getLifecycle().getCurrentState().isAtLeast(STARTED);}@OverridepublicvoidonStateChanged(@NonNullLifecycleOwnersource,@NonNullLifecycle.Eventevent){//获取当前生命
- 数据结构排序方法总结
不在了情绪
数据结构算法排序算法
题目描述给你N个自然数,编程输出排序后的这N个数。输入第一行是整数的个数N(N#includeusingnamespacestd;boolcmp(inta,intb){returna>N;vectorR;for(inti=0;i>a;R.push_back(a);}for(inti=1;i=0&&cmp(temp,R[j])){R[j+1]=R[j];j--;}R[j+1]=temp;}for(i
- Golang的值类型和引用类型
澡点睡觉
golang开发语言后端
值类型和引用类型值类型和引用类型都有哪些值类型:基本数据类型int系列,float系列,bool,string,数组,结构体(struct)引用类型:指针,map,slice切片,管道chan,接口interface值类型和引用类型的不同点值类型:变量直接存储值,内存通常在栈中分配引用类型:变量指向一个地址,这个地址所在空间才存储值,内存通常在堆中分配。当没有任何变量引用这个地址时或者不再被引用时
- WPF添加程序启动页SplashScreen
为五毛钱折腰
wpf
第一种:直接修改图片属性->生成操作->SplashScreen第二种:直接修改图片属性->生成操作->资源在程序启动位置添加代码:SplashScreensplashScreen=newSplashScreen("start.png");splashScreen.Show(true,true);voidShow(boolautoClose,booltopMost)第一个参数是是否自动关闭,第二个
- leetcode 407. 接雨水 II
fks143
leetcodeleetcode
题目:407.接雨水II-力扣(LeetCode)堆+bfs。模拟水流出去的过程。先把边缘的单元都加到堆里,从堆顶最小的单元开始bfs,遍历到的单元的四周,都会从该单元流出去,四周的单元的剩余水量+高度=max(自己的高度,遍历到单元的水量)structNode{intx,y;inth;intw;boolv=false;Node(intx,inty,inth){this->x=x;this->y=
- Redisson 加锁解锁源码
skystep
Redis分布式redisjava
分布式锁使用对于redisson分布式锁的使用很简单:1、调用getLock函数获取锁操作对象;2、调用tryLock函数进行加锁;3、调用unlock函数进行解锁;注意unlock操作需要放到finally代码段中,保证锁可以被释放。privatevoidsumLock(){lock=redissonClient.getLock("sum-lock");booleanb=lock.tryLock
- sqli-labs基础(二)
pigdaqiang
基础注入less-1源码分析:";echo'YourLoginname:'.$row['username'];echo"";echo'YourPassword:'.$row['password'];echo"";}else{echo'';print_r(mysql_error());echo"";}}else{echo"PleaseinputtheIDasparameterwithnumericv
- 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