- ConcurrentHashMap扩容原理 | 存储流程 | 源码探究
VsunGoK
java源码探究java算法
新人写手,代码菜鸡;笔下生涩,诚惶诚恐。初试锋芒,尚显青涩;望君指点,愿受教诲。本篇文章将从源码的层面,探讨ConcurrentHashMap的存储流程以及扩容原理Java版本为JDK17,源代码可能与其他版本略有不同推荐阅读:HashMap实现原理、扩容机制一、构造函数1.1无参构造函数ConcurrentHashMap的无参构造函数是一个空方法publicConcurrentHashMap()
- 15分钟教你从0到1,水出SCI(精品),学术裁缝必修课_来自B站水论文的程序猿
醒了就刷牙
论文论文笔记
系列文章目录文章目录系列文章目录一、抽象理解二、具体做法1、什么是Baseline(基础实验)2、怎么和导师说3、怎么做压低baseline4、怎么写一、抽象理解一篇论文A:西红柿炒鸡蛋一篇论文B:芹菜炒肉你就可以:西红柿炒肉二、具体做法1、什么是Baseline(基础实验)有些人的Baseline写得很隐秘,让人以为是他自己创造的,但这篇论文不一样,他表明了一篇论文A:BERT17年一篇论文B:
- [论文笔记] LLM数据集——LongData-Corpus
心心喵
论文笔记服务器ubuntulinux
https://huggingface.co/datasets/yuyijiong/LongData-Corpus1、hf的数据在开发机上要设置sshkey,然后cat复制之后在设置在hf上2、中文小说数据在云盘上清华大学云盘下载:#!/bin/bash#BaseURLbase_url="https://cloud.tsinghua.edu.cn/d/0670fcb14d294c97b5cf/fi
- centOs7更改为桌面或者命令行模式启动
小河土
1.在桌面模式下先进入终端cmdcat/etc/inittab这两条,你要哪个就放开哪个然后保存退出执行下面这两条命令。更改模式命令:systemctlset-defaultgraphical.target由命令行模式更改为图形界面模式systemctlset-defaultmulti-user.target由图形界面模式更改为命令行模式更改后验证是否正确重启shutdown-rnow
- logback日志配置获取服务器名称/ip/pid/端口
七离_82cd
1、获取服务器名称/ip/pid/端口方法详见:https://www.jianshu.com/p/346f9f50ac882、创建一个类继承自ch.qos.logback.classic.pattern.ClassicConverter,重写方法:@OverridepublicStringconvert(ILoggingEventevent){}3、在logback-spring.xml文件里加
- 观察者模式
quanCN
定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式,模型-视图-模式(Model/View)模式,源-监听器(Source/Listener)模式或从属者(dependents)模式。一个软件系统常常要求在某一个对象的状态发生改变的时候某些其它的对象做出相应的改变,观察者模式是满足这一要求的最重要的一种方案。根据观察者对象的引用位置,观察者模式分为两种一这种实
- python爬虫521
PUTAOAO
python爬虫开发语言
爬虫521记录记录最近想学爬虫,尝试爬取自己账号下的文章标题做个词云csdn有反爬机制原理我就不说啦大家都写了看到大家结果是加cookie但是我加了还是521报错尝试再加了referer就成功了(╹▽╹)importmatplotlibimportrequestsfromwordcloudimportWordCloudimportmatplotlib.pyplotaspltimportjieba#
- 基于yolov8的绝缘子缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
FL1623863129
深度学习YOLO
【算法介绍】基于YOLOv8的绝缘子缺陷检测系统是一种利用先进深度学习技术的高效解决方案,旨在提升电力行业中输电线路的维护和监控水平。YOLOv8作为YOLO系列算法的最新版本,具备更高的检测速度和精度,特别适用于实时物体检测任务。该系统通过深入分析并标注绝缘子数据集,训练YOLOv8模型以精确识别输电线上的绝缘子及其缺陷状态。利用多尺度检测、FPN结构以及CSPDarknet网络等技术,YOLO
- [protobuf][C++]protobuf编译报错无法解析的外部符号 google::protobuf::internal::ExplicitlyConstructed fixed_address
FL1623863129
环境配置开发语言
问题描述:编译好的protobuf3.20.0在项目中引用后运行报错:无法解析的外部符号google::protobuf::internal::ExplicitlyConstructedfixed_address解决方法:从网上查要在引用的头文件里增加#definePROTOBUF_USE_DLLS,但是编译时会报protobuf.lib的重定义错误,于是把PROTOBUF_USE_DLLS定义放
- 【C++】异常
阿瑾0618
C++c++
目录一、异常的概念二、异常的抛出与捕获三、异常的重新抛出四、抛出异常的风险五、抛出异常的规范六、C++标准库中的异常体系七、异常的优缺点一、异常的概念在C语言中没有异常的概念,我们一般通过以下方式来处理错误使用assert断言等提前检查的方式,一旦发生错误直接终止程序返回错误码在C++中,我们还可以通过抛出异常的方式来处理程序中出现错误的情况异常是一种处理错误的方式,抛出异常的目的是让函数的直接或
- 高级java每日一道面试题-2024年8月27日-框架篇[SpringMVC篇]-Spring MVC 支持哪些视图技术?
java我跟你拼了
java每日一道面试题javaspringmvc框架篇SpringMVC篇后端视图解析器
如果有遗漏,评论区告诉我进行补充面试官:SpringMVC支持哪些视图技术?我回答:SpringMVC作为基于Spring框架的Web应用开发框架,其核心优势之一在于其支持多种视图技术,这使得开发者可以根据项目需求或个人偏好选择最适合的视图渲染方式。以下是SpringMVC支持的一些主要视图技术:JSP(JavaServerPages):JSP是JavaEE规范的一部分,是Java平台下最常用的视
- Unity项目增加字体裁剪
xiyouice
unity游戏引擎
因为项目里有字体裁剪缩小字体文件的需求,在网上搜索了一番。有个很靠谱的参考文章:https://www.cnblogs.com/yaukey/p/compare_fontsubsetgui_fontpruner_for_unity.html然后就使用了这篇文章里提到的FontPruner工具。下载之后就是文章置顶附件这样的jar包,放入工程里。需要编写脚本,根据表格工具导出的项目文本对应字体的tx
- 自己做的游戏(5.3)
wzh20121212
游戏
#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespa
- 自己做的游戏(5.4)
wzh20121212
游戏
#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespa
- 自己做的游戏(5.5)
wzh20121212
游戏
#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;in
- 自己做的游戏(5.1)
wzh20121212
游戏
#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespa
- 自己做的游戏(5.2)
wzh20121212
游戏
#defineKEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespa
- 猫咪战老鼠今日正式上线!
金牛座启启
感谢大家对启启工作室的支持,我们首款不需要激活码使用人物的游戏出来啦!老鼠战猫咪是不是开心到了极点?那么问题来了,获得的东西会不见吗?当然不回啦,会有存档吗哟,但是注意的是胜利次数以及金币等不会加入存档,只有角色才可以。为了感谢大家我们将会上线商店系统,下周上线哟。感谢大家就那么点吗?在上线商店前我们的第二只鼠鼠将会开放限免哟!缇米在游戏里还可以与缇米公主互动哟!https://nemo.code
- Golang | Leetcode Golang题解之第380题O(1)时间插入、删除和获取随机元素
__AtYou__
经验分享GolangLeetcode题解
题目:题解:typeRandomizedSetstruct{nums[]intindicesmap[int]int}funcConstructor()RandomizedSet{returnRandomizedSet{[]int{},map[int]int{}}}func(rs*RandomizedSet)Insert(valint)bool{if_,ok:=rs.indices[val];ok{
- CSS的动画效果
无微或无常
css前端
动画效果语法:创建动画:@keyframes调用动画:animationanimation参数值参数值效果animation-name规定@keyframes动画的名称。animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是0animation-timing-function规定动画的速度曲线。默认是"ease"animation-delay规定动画何时开始。默认是0an
- Microsemi Libero系列教程(四)——PLL的使用
whik1194
MicrosemiLiberoSoC系列教程MicrosemiActelFPGALiberoA2F200M3F
文章目录PLL是什么Libero中PLL的使用官方文档交流群系列教程:MicrosemiLibero系列教程PLL是什么PLL(PhaseLockedLoop):为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高
- url中获取参数对象+多条数据展示拼接符号问题
Sunny_lm
javascript前端vue.js
url中获取参数对象functionurlParamsToObject(url){//获取字符串?后面的部分constqueryString=url.split('?')[1];console.log(queryString);//a=2&b=3constparamsArr=queryString.split('&');console.log(paramsArr);//['a=2','b=3']c
- composer install 报错Script @php artisan package:discover --ansi handling the post-autoload-dump ev...
一位先生_
composerself-update--stablecomposerupdate执行这两行代码即可
- 浏览器的网络请求304的缓存问题
victor-AI最好的学习方式是画图
http
1、http请求时浏览器先看本地缓存有没有该文件,没有文件就直接发起http请求获取最新js、html等文件。(缓存里面有该文件且没有过期直接使用本地缓存,谁都不商量,所以叫强制缓存)。2、本地缓存如果过期了的话就去问一下服务器请求的该文件有没有修改,没有修改就返回304继续使用本地缓存,同时更新一下本地缓存的过期时间(Expires和Cache-Control),修改的话返回200获取新文件。(
- 【花雕学编程】Arduino FOC 之四连杆机构的轮腿机器人
驴友花雕
ArduinoFOC嵌入式硬件单片机c++Arduino动手做四连杆机构的轮腿机器人ArduinoFOC
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Ardui
- 机器学习和深度学习中常见损失函数,包括损失函数的数学公式、推导及其在不同场景中的应用
早起星人
机器学习深度学习人工智能
目录引言什么是损失函数?常见损失函数介绍3.1均方误差(MeanSquaredError,MSE)3.2交叉熵损失(Cross-EntropyLoss)3.3平滑L1损失(SmoothL1Loss)3.4HingeLoss(合页损失)3.5二进制交叉熵损失(BinaryCross-EntropyLoss)3.6KL散度(KLDivergence)3.7Huber损失(HuberLoss)3.8对比
- ios设置tabbar背景颜色_UITabBarController、TabBar背景颜色设置、TabBarItem颜色处理
weixin_39837352
ios设置tabbar背景颜色
在iOS的开发过程中我们使用最多的框架结构估计就是UITabBarController+UINavigationController架构了,然而在开发过程中,对于许多初学者,甚至对于许多有半年多开发经验的iOSdev来说还是会有很多很棘手的问题,比如设置tabBar的背景颜色、tabBarItem的图标选中时的颜色为蓝色、tabBarItem选中的背景色的设置...完整项目点这里。下面创建项目并搭
- mysql5.6如何配置_Mysql5.6 参数常见配置 和 范本配置
陈语岚
mysql5.6如何配置
#以下选项会被MySQL客户端应用读取。#注意只有MySQL附带的客户端应用程序保证可以读取这段内容。#如果你想你自己的MySQL应用程序获取这些值。#需要在MySQL客户端库初始化的时候指定这些选项。#[client]#password=[your_password]port=3306socket=/usr/local/mysql/mysql.sock#***应用定制选项***##MySQL服务
- Vue项目中Axios取消请求功能实现
流云紫电
前端javascript开发语言vue.js
1,封装axios实例request.jsconstaxios=require('axios');//创建一个axios实例constservice=axios.create({baseURL:"https://ip:port",timeout:60000});exportdefaultservice2,封装请求api.jsimportservicefrom'request'importaxios
- yii2自动跳转登陆 ie低版本无效
飞狐or
ie低版本访问yii2框架yii2初始化配置phpyii2后端
Yii2ie低版本访问登陆页面报错如图不能自行跳转到登陆界面如图不能自行跳转到登陆界面查找原因Yii2默认验证请求头类型为public$acceptableRedirectTypes=['text/html','application/xhtml+xml'];ie低版本请求头内容类型为'application/x-ms-application'将ie请求类型增加到yii2\web\user.php
- 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