学习-秒杀系统设计
sjsjsbbsbsn
学习
学习-秒杀系统设计1.缓存结构设计在商家创建优惠券模版时,会将其预热到缓存中,并向发送一个定时消息来修改优惠券为已到期状态,同时将优惠券模版Id加入到布隆过滤器中,具体缓存结构如下:采用哈希结构,key:前缀+优惠券模版Id,value:优惠券模版元数据信息Key:merchant:admin:coupon:template:12345Hash:{"id":"12345","name":"用户下单
为什么redis会开小差?Redis 频繁异常的深度剖析与解决方案
磐基Stack专业服务团队
redis数据库缓存
文章目录导读为什么redis会开小差?1.连接数过多2.bigkey3.慢命令操作4.内存策略不合理5.外部数据双写一致性6.保护机制未开启7.数据集中过期8.CPU饱和9.持久化阻塞10.网络问题结论导读提起分布式缓存,想必大多数同学脑海中都会浮出redis这个名字来……但是,对于它,你真的玩转了吗?为什么你的redis会慢,会卡顿,会崩溃?现在带你一探究竟。为什么redis会开小差?本文主要简
缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
看个人简介有交流群(付费)
Redis缓存redis数据结构
在Redis中,跳表(SkipList)被用于实现有序集合(SortedSet)数据结构。以下是对此实现的详细解释:Redis中的有序集合(SortedSet)有序集合(SortedSet),简称ZSET,是一种将成员与分数(score)关联的集合,成员按照分数的升序或降序排列。与普通集合不同,有序集合中的每个成员都是唯一的,并且可以通过分数进行高效的排序和范围查询。内部实现Redis中的有序集合
设计一个带有过期时间的缓存系统
专业WP网站开发-Joyous
工具学习缓存
缓存是提高系统性能的重要机制,尤其是在高并发和高流量的场景下,缓存能够有效地减少对数据库或远程服务的访问,从而降低响应时间和系统负载。然而,随着数据的不断变化,缓存中的数据可能会变得过时,因此我们需要一个带有过期时间(TTL,TimetoLive)的缓存系统。在本文中,我们将介绍如何设计一个简单的带有过期时间的缓存系统,并使用Java编程语言来实现这一功能。我们将讨论缓存的核心概念、过期策略以及实
Vue2.0——组件动态加载 <keep-alive>
致可乐
笔记
文章目录一、动态切换组件1.使用组件标签component的is属性来动态切换组件2.使用keep-alive缓存之前的状态一、动态切换组件1.使用组件标签component的is属性来动态切换组件Keep.vue:在它里面挂载两个页面组件keepOne,keepTwokeepOnekeepTwo<
Web安全:缓存欺骗攻击;基于缓存、CDN的新型Web漏洞
Fly不安全
Web安全基础web安全缓存缓存欺骗攻击NginxCDNweb
基于缓存、CDN的新型Web漏洞漏洞原理利用方式解决方法Web缓存欺骗漏洞(WebCacheDeception)是一种利用不安全的缓存机制来泄露用户敏感信息的攻击方式。攻击者通过操控请求URL诱导缓存系统将敏感信息缓存并对其他用户公开,可能导致用户数据泄露等严重问题。漏洞原理缓存:现代大多数Web应用会在应用前置CDN或缓存代理,再通过URL来决定是否缓存内容。下面这里放一个Nginx的例子loc
<keep-alive> <component ></component> </keep-alive>缓存的组件实现组件,实现组件切换时每次都执行指定方法
柠檬花开_
缓存前端activecomponent
缓存的组件实现组件切换时子组件每次都执行指定的方法//父组件data(){return{currentRouter:''}}components:{//计算维度CalculationDimension:()=>import('../procurementPlanConfig/calculationDimension.vue'),//价格损失配置PriceLossSetting:()=>import
Pinterest打不开怎么办?先从这几个方面排查
纯干苹果派
人工智能大数据网络物联网
Pinterest作为社交种草、推广营销和灵感分享的重要平台,是众多用户的每日必用工具。如果无法正常打开和使用,必然会有不小的负面影响。可以参考本文整理的可能原因和解决方法。一、可能原因1.网络连接问题移动数据网络信号弱、网络延迟严重、Wi-Fi信号不稳定、Pinterest联网权限未打开……这些都是导致Pinterest打不开的常见网络连接问题。2.浏览器问题使用的浏览器缓存文件太冗杂、Cook
如何优化 Nginx 处理流媒体的性能?
糖葫芦.T
前端框架nginxvue.js服务器运维网络
关注博主️带你畅游技术世界,不错过每一次成长机会!文章目录如何优化Nginx处理流媒体的性能?一、理解Nginx与流媒体的“舞蹈”二、Nginx处理流媒体的挑战(一)带宽压力山大(二)高并发的考验(三)延迟和卡顿的噩梦三、优化策略之“软硬兼施”(一)硬件升级——给Nginx换上“强劲引擎”(二)软件优化——为Nginx打造“智能导航”四、具体配置与实践案例(一)缓存配置示例(二)负载均衡配置示例五
磁盘满了影响mysql性能吗,Linux Server磁盘满导致的mysql数据库错误
妙面爸
磁盘满了影响mysql性能吗
因为博主在服务器上安装了一些文件存储服务,有几次出现了文件占满磁盘后导致数据库出错,在删除了多余文件之后也无法重启数据库。所有与数据库相关的服务均报错无法启动,比如Wordpress的数据库连接错误,Nextcloud的500错误等。在磁盘满后,请不要立即重启服务器或数据库服务,应首先清理出磁盘空间,让数据库服务将缓存写入后再关闭或重启!若直接重启就会导致博主遇到的这种错误。以下内容仅供参考,请根
高性能、并发安全的 Go 嵌入式缓存库 如何使用?
Ai 编码
Golang教程golang缓存开发语言
文章精选推荐1JetBrainsAiassistant编程工具让你的工作效率翻倍2ExtraIcons:JetBrainsIDE的图标增强神器3IDEA插件推荐-SequenceDiagram,自动生成时序图4BashSupportPro这个ides插件主要是用来干嘛的?5IDEA必装的插件:SpringBootHelper的使用与功能特点6Aiassistant,又是一个写代码神器7Cursor
Windchill开发-移除工作区模型
这城有海
Windchill二开java
移除工作区模型一、应用场景二、相关代码2.1查询模型2.1.1方法一2.1.2方法二2.1.3区别2.2查询模型所在工作区2.3移除工作区的模型一、应用场景Windchill系统中,系统的模型数据和工作区中的模型数据并非是同一个数据,工作区在线时会自动把系统的数据与工作区做同步,也可以通过工作区的更新按钮,保持工作区数据与系统数据的一致性。但是在实际业务中,工作区缓存、数据存在于多工作区等情况都会
Ubuntu20彻底删除MySQL8
monGyrate
数据库相关mysqlsqlubuntuc/c++
目录参考链接查看mysql相关的包停止mysql服务删除相关的包删除相关文件夹清除缓存再次查看相关包,还有就继续删除参考链接参考链接ubuntu20使用apt安装mysql8mysql官网手册查看mysql相关的包dpkg-l|grepmysql停止mysql服务sudosystemctlstopmysql删除相关的包#注意上面查看的有哪些包就都要删除,下面是参考命令sudoapt-getauto
Gradle 全方位使用指南:从基础操作到 IDE 配置
阿贾克斯的黎明
javajava
目录Gradle全方位使用指南:从基础操作到IDE配置一、引言二、Gradle基础概念(一)构建脚本(二)任务(Task)(三)插件(Plugin)三、Gradle安装与环境配置(一)下载(二)解压与配置环境变量(三)验证安装四、Gradle项目构建基础(一)创建项目(二)构建脚本详解(三)任务执行五、Gradle高级特性(一)多项目构建(二)自定义任务(三)属性与配置文件(四)缓存与性能优化六、
多级缓存 JVM进程缓存
Rverdoser
缓存jvm
在Java虚拟机(JVM)中,多级缓存通常指的是JVM内部的多层缓存机制,包括指令缓存、数据缓存等,这些缓存都是为了提高程序运行效率。在Java中,JVM的多级缓存是自动管理的,不需要程序员手动干预。但是,如果你想要监控或调试这些缓存的行为,可以使用一些JVM提供的工具和选项,如JMC(JavaMissionControl)、JVisualVM、JFR(JavaFlightRecorder)等。如
TimedCache定期缓存
皆为定数
缓存
TimedCache此缓存没有容量限制,对象只有在过期后才会被移除,发现2种等价用法。建议使用第一种,比较常见,第一种封装了第二种的实现.用法一(推荐):publicstaticfinalTimedCache>timeCache=newTimedCacheplateNo=timeCache.get("plateNo");System.out.println(plateNo);if(Objects.
【Redis】golang操作Redis基础入门
m0_74825360
面试学习路线阿里巴巴redisgolang数据库
【Redis】golang操作Redis基础入门大家好我是寸铁??总结了一篇【Redis】golang操作Redis基础入门sparkles:喜欢的小伙伴可以点点关注??Redis的作用Redis(RemoteDictionaryServer)是一个开源的内存数据库,它主要用于存储键值对,并提供多种数据结构的支持。Redis的主要作用包括:1.缓存:Redis可以作为缓存系统,将常用的数据缓存在内
Vue-Router路由动态缓存组件(keep-alive),vue2/vue3不同写法
码喽的自我修养
vue2/3从基础到起飞vue.js前端javascript缓存vue前端框架AI编程
个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主、华为云云享专家,分享前端后端相关技术与工作常见问题~作者:码喽的自我修养❣️专栏:vue2/3从基础到起飞若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力文章目录一、简介它的主要作用是缓存不活动的组件实例,而不是销毁它们。基本用法生命周期钩子二、定义是否缓存组件三、缓存组件相关配置1.通过:inclu
运维之道 | Nginx反向代理常用模块
VillianTsang
Nginx
Nginx反向代理常用模块一、Nginx反向代理upstream模块1、概念Nginx反向代理(又称负载均衡)功能,依赖于ngx_http_upstream_module模块,支持的代理方式有proxy_pass(一般用于反向代理)、fastcgi_pass(一般用于动态程序交互)、memcached_pass(一般用于NOSQL缓存代理)。反向代理:代理服务器接收外部连接请求,然后将请求转发给内
debian 安装php7_Ubuntu/Debian安装PHP 7.2教程
一碗面条v
debian安装php7
适用系统:Ubuntu16.04/14.04、Debian8/9添加软件源Ubuntu#安装软件源拓展工具apt-yinstallsoftware-properties-common#添加PHPPPA源,需要按一次回车add-apt-repositoryppa:ondrej/php#更新软件源缓存aptupdateDebian#添加GPGwget-O/etc/apt/trusted.gpg.d/p
flutter在使用gradle时的加速
LuiChun
flutter
当我使用了一些过时的插件的时候,遇到了一些问题比如什么namespace问题等,因为有些插件库没有更新了,或者最新版本处于测试阶段于是我就删除这些旧插件(不符合我要求的插件)于是根据各论坛的解决方法去做了以下的工作1:项目中删除了这些插件2:项目中删除了这些引用3:删除了gradle的缓存4:更换了新版本的gradle的版本5:清除flutter缓存6:重新下载构建插件7:运行后报错这个办法居然行
redis 布隆过滤器 BloomFilter
稚辉君.MCA_P8_Java
高可用Kubernetes集群redis
文章目录1、什么是布隆过滤器?1.1工作原理1.2布隆过滤器的优点1.3缺点2、布隆过滤器的使用场景3、布隆过滤器的原理3.1布隆过滤器的数据结构3.2初始化阶3.3插入元素过程3.4查询元素是否存在3.5元素删除3.6扩容4、SpringBoot整合布隆过滤器4.1技术选型4.2依赖4.3配置布隆过滤器相关参数4.4布隆过滤器工具类4.5业务操作4.5.1基于JVM本地缓存的BloomFilte
《嵌入式硬件设计》
黑色叉腰丶大魔王
嵌入式硬件
一、引言嵌入式系统在现代科技中占据着至关重要的地位,广泛应用于消费电子、工业控制、汽车电子、医疗设备等众多领域。嵌入式硬件设计作为嵌入式系统开发的基础,直接决定了系统的性能、可靠性和成本。本文将深入探讨嵌入式硬件设计的各个方面,包括处理器选择、存储器设计、外设接口、电源管理以及PCB设计等,为读者提供全面的技术参考。二、嵌入式系统概述(一)嵌入式系统的定义嵌入式系统是一种以应用为中心,以计算机技术
缓存为什么比主存快?
Wx深入理解嵌入式
缓存缓存为什么比主存快?SRAM的原理DRAM的原理
缓存之所以比主存快,这是一个被广泛认知但未必深入理解的现象。让我们揭开这层神秘的面纱,探索缓存与主存速度差异的根本原因。目录1、多因素协同作用2、存储技术的较量SRAM的优势:DRAM的挑战:3、技术细节的深入5、总结1、多因素协同作用缓存与主存的速度差异,是由一系列相互交织的因素所决定的。这些因素包括存储器与处理器核心的距离、总线宽度、数据传输协议的复杂性,以及每种存储器的内在技术。2、存储技术
Oracle(2)Oracle数据库的主要组件有哪些?
辞暮尔尔-烟火年年
Oracleoracle数据库
Oracle数据库的主要组件包括以下几个部分,每个组件在数据库管理和操作中都起着至关重要的作用。以下是对这些组件的详细介绍,并结合一些代码示例来说明其功能。1.实例(Instance)Oracle实例是Oracle数据库的运行环境,由内存结构和后台进程组成。一个实例控制一个数据库的操作。内存结构系统全局区(SGA):共享内存区,用于存储数据库缓存和共享信息。程序全局区(PGA):为每个服务器进程分
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