- 基于Vue的水果购物车系统
啊sen丶
vue.js前端javascript
下面是一个基于Vue.js的购物车系统,功能较为完整,包括商品的增删改查、全选/反选、总价计算等功能。购物车/购物车选中图片单价个数小计操作{{item.price}}-{{item.num}}+{{item.num*item.price}}删除全选总价 : ¥ {{totalPrice}}结算({{fruitList.length}})空空如
- 实现阅读器翻页效果鸿蒙示例代码
介绍本示例基于显式动画、List组件、drawing接口实现了阅读器上下翻页、左右覆盖翻页以及仿真翻页效果。实现阅读器翻页效果源码地址效果预览使用说明进入应用默认为仿真翻页,长按屏幕并滑动可实现翻页效果,点击屏幕中部区域,弹出翻页方式选择栏。选择上下翻页,显示上下翻页页面,支持上下滑动翻页。选择覆盖翻页,显示覆盖翻页页面。支持左右滑动翻页,以及点击屏幕左右侧后滑动翻页。实现思路上下翻页效果使用Li
- Design Leetcode
xxxmmc
系统架构
DesignLeetcodeFunctionalRequirementsUserscanviewalistofproblemsUsersviewthedetailedproblemandcodesolutionsUsersareablesumbittheircodeaccordingtodifferentlanguageandgettheanswer.Usersareabletohavethele
- LeetCode 141 Linked List Cycle和142 Linked List Cycle II
kongfy4307
LeetCodeleetcode
题目141LinkedListCycleGivenalinkedlist,determineifithasacycleinit.Followup:Canyousolveitwithoutusingextraspace?142LinkedListCycleIIGivenalinkedlist,returnthenodewherethecyclebegins.Ifthereisnocycle,retu
- LeetCode(142)Linked List Cycle2
feliciafay
C++LeetCode
题目如下:Givenalinkedlist,returnthenodewherethecyclebegins.Ifthereisnocycle,returnnull.Followup:Canyousolveitwithoutusingextraspace?题目分析:本题是上一道题目的扩展。可以沿用上一题目的方式。使用一块一慢两个指针从起点开始行走。快指针每次走2步,慢指针每次走1步。如果链表中有环
- 结构型模式 - 享元模式 (Flyweight Pattern)
_真相只有一个
Java设计模式享元模式设计模式
结构型模式-享元模式(FlyweightPattern)享元模式是一种结构型设计模式,它通过共享对象来减少内存使用和提高性能,尤其适用于存在大量细粒度对象且这些对象有部分状态可共享的场景。举个经典案例,下围棋,黑子和白子可以用享元,每一颗棋子除了放置的位置之外,只有颜色区分.importjava.util.ArrayList;importjava.util.HashMap;importjava.u
- Leetcode 141 Linked List Cycle and Leetcode 142 Linked List Cycle II
xxxmmc
leetcode算法快慢指针
题目链接https://leetcode.com/problems/linked-list-cycle/https://leetcode.com/problems/linked-list-cycle-ii/题意给定一个环形链表,求找到链表的环的位置,返回一个指针(以Leetcode142为例)题解首先判断是否有环。可以用快慢指针来确定,由于快的那个指针一直在环中移动,慢的指针每次移动一步,二者一定
- MyBatis自定义JSON类型处理器
洛上言
后端mybatisjsonpython
文章目录一、使用场景二、步骤三、为什么使用`JSONUtil.toBean(json,newTypeReference(){},false)`而不是直接使用`JSONUtil.toBean(json,type)`?一、使用场景实体类数据库List["user","admin"]List>>{"ADT":[[{"BookingCode":["N","N"]}]]}复杂的Bean的定义如下(包含泛型)
- 【nginx】转发请求connect() failed (111: Connection refused) while connecting to upstream
麦当劳不要薯条
nginx运维
nginx转发请求Connectionrefused一、场景:小程序-->nginx(docker部署)-->转发到后端服务二、nxing转发服务时提示“Connectionrefused”三、解决方案1、解决方案一2、解决方案二一、场景:小程序–>nginx(docker部署)–>转发到后端服务下面是nginx的配置upstreamxian{serverip:端口;}server{listen8
- Python-sys.argv[]
哗啦呼啦嘿
pythonPythonsys.argv[]
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。1.下面我们通过一个极简单的test.py程序的运行结果来说明它的用法
- 导读:生活中的设计模式——启程之前,请不要错过我
陌尘(MoChen)
精品课设计模式Python榜单
为什么叫设计模式什么是设计模式设计模式与生活有什么联系为什么要学设计模式如何进行学习为什么选择Python弥补市场空缺大势所趋,Python已然成风简单的Python基础Python的特点基本语法常用容器List(列表)Tuple(元组)Dictionary(字典)类的定义Demo让你顿悟重要说明两年前CSDN出了一个产品叫ink,旨在提供一个高质量的写作环境,那时就有写设计模式这一系列的想法了,
- information_schema.processlist 表详解
坚定的小辣鸡在努力
其他MySQLmysqlprocesslist
information_schema.processlist表(或SHOWPROCESSLIST;命令)用于查看MySQL当前所有的连接进程,帮助管理员监控数据库活动并排查性能问题。以下是该表的字段及其具体含义:information_schema.processlist字段详解字段名数据类型含义示例IDBIGINT连接的唯一ID(线程ID)12345USERVARCHAR连接的MySQL用户ro
- Python常见面试题的详解10
ylfhpy
python开发语言面试
1.哪些操作会导致Python内存溢出,怎么处理?要点1.创建超大列表或字典:当我们一次性创建规模极为庞大的列表或字典时,会瞬间占用大量的内存资源。例如,以下代码试图创建一个包含10亿个元素的列表,在执行这段代码时,由于需要为这10亿个整数分配内存空间,很容易就会导致内存溢出错误。pythonhuge_list=[iforiinrange(10**9)]2.递归深度过大:递归函数在没有正确设置终止
- 代码随想录训练营DAY07
程序员正在诞生中
代码随想录打卡python开发语言算法哈希算法
四数相加classSolution(object):deffourSumCount(self,nums1,nums2,nums3,nums4):""":typenums1:List[int]:typenums2:List[int]:typenums3:List[int]:typenums4:List[int]:rtype:int"""dict={}foriinnums1:forjinnums2:i
- git操作全解
洗澡的一条鱼
gitgitgithub
全面详细精解~Git常用命令仓库#在当前目录新建一个Git代码库$gitinit#新建一个目录,将其初始化为Git代码库$gitinit[project-name]#下载一个项目和它的整个代码历史$gitclone[url]配置#显示当前的Git配置$gitconfig--list#编辑Git配置文件$gitconfig-e[--global]#设置提交代码时的用户信息$gitconfig[--g
- aviator 使用案例
离别又见离别
java排坑之路java后端
aviator轻量级表达式引擎需求:每个检查项目都可以维护自己的指标,分为异常和正常指标,指标分为两种一种是数字形式的比较,一种是字符串形式的包含pom5.3.3com.googlecode.aviatoraviator案例NormTypeEnum:为指标枚举值不是固定的,有可能是数字、浮点、字符串等,为了统一,计算相关的都去转为了BigDecimal如果是包含,需要取出list对应的变量,所以需
- 解析Excel表表头
Only*
excelpython开发语言
常见的一级表头表头通常位于Excel文件的第一行,包含了每一列的名称。在Excel文件中,第一行的单元格内容通常定义了每一列的字段名称,这些字段名称就是表头。importpandasaspd#加载Excel文件file_path="Test.xlsx"#替换为你的文件路径df=pd.read_excel(file_path)#获取表头headers=df.columns.tolist()#打印表头
- 利用springboot初始化机制三种实现策略模式的应用
π大星的日常
java策略模式springbootjava
面试时总被问,spring中使用了哪些设计模式,你在实际开发中又使用哪些设计模式。给他手指一个方向跟他说,这就是一个模式:goout!。这就是一种模式:策略模式,一个接口的多个实现方式(算法)。本文梳理了使用springboot实现的三种实现策略模式的应用我们知道,springboot应用初始化的过程是通过事件机制进行的。主要是通过EventPublishingRunListener在不同的初始化
- Java集合设计模式面试题
夜游猿
Java开发工程师面试java设计模式开发语言
Java集合设计模式面试题迭代器模式Q1:Java集合框架中的迭代器模式是如何实现的?迭代器模式提供了一种统一的方式来访问集合中的元素,而不需要暴露集合的内部结构。publicclassIteratorPatternExample{//1.基本迭代器使用publicvoidbasicIteratorUsage(){Listlist=newArrayListiterator=list.iterato
- 29、深度学习-自学之路-深入理解-NLP自然语言处理-做一个完形填空,让机器学习更多的内容程序展示
小宇爱
深度学习-自学之路深度学习自然语言处理机器学习
importsys,random,mathfromcollectionsimportCounterimportnumpyasnpnp.random.seed(1)random.seed(1)f=open('reviews.txt')raw_reviews=f.readlines()f.close()tokens=list(map(lambdax:(x.split("")),raw_reviews)
- NVIDIA CUDA Compiler Driver NVCC
Yongqiang Cheng
NVIDIAGPU-CUDA-cuDNNNVIDIACUDACompilerNVCC
NVIDIACUDACompilerDriverNVCC4.2.8.23.`--list-gpu-code`(`-code-ls`)4.2.8.24.`--list-gpu-arch`(`-arch-ls`)Referenceshttps://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/Thedocumentationfornvcc,theCUDA
- vue组件间通信的八大方法
@LitterFisher
vuejavascript前端es6
再读vue官方文档系列文章目录vue组件间通信的八大方法文章目录再读vue官方文档系列文章目录前言一、通信种类?二、八大通信方式1.props和$emit2.$parent和$children3.provide和reject4.ref/refs5.Vuex6.slot7.$attrs和$listeners8.localStorage和sessionStorage总结前言刚开始学vue的时候只是读了
- Linux中ls、grep、wc、sort、>、|的使用
受命于天既寿永昌
LinuxUbuntulinuxubuntu
本篇主要是简单介绍Linux中ls、grep、wc、sort、>、|的使用、展示代码。ls列出命令ls是用于列出目录内容的命令。它是"list"的缩写,常用于查看当前目录下的文件和子目录。基本用法ls选项目录或文件如果不指定目录或文件,ls会列出当前工作目录的内容。如果指定目录或文件,ls会列出指定路径的内容。常用选项1.**`-l`**:以长格式(详细信息)列出文件和目录 ls-l文件权限硬链
- 【spring-kafka】@KafkaListener详解与使用
2401_84408092
程序员springkafkalinq
id监听器的id①.消费者线程命名规则填写:2020-11-1914:24:15c.d.b.k.KafkaListeners120[INFO]线程:Thread[consumer-id5-1-C-1,5,main]-groupId:BASE-DEMOconsumer-id5消费没有填写ID:2020-11-1910:41:26c.d.b.k.KafkaListeners137[INFO]线程:Th
- 【python】3_容器
简易091
pythonpython开发语言
目录一、列表list1.1基本语法1.2常用操作方法1.3列表的遍历二、元组tuple特点:三、字符串常用操作方法:四、序列操作方法:切片五、元素特点:基本语法:集合常用功能:六、字典定义:注意事项:什么是容器可以存储多个元素的python数据类型python有哪些数据容器list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)一、列表list1.1基本语法#定义变
- Linux 常用工具(yum、vim、gcc、gdb、git)
东区东区!
Linuxlinux服务器
目录1.yum:软件包管理工具2.vim:linux下最受欢迎的命令行下的编辑器底行模式下的常见操作:普通模式下的常见操作:文本操作:其他操作:3.gcc/g++:编译器库4.gdb:调试器调试过程:5.项目的自动化构建工具make的解释执行规则:6.git项目的版本管理工具编辑1.yum:软件包管理工具查看搜索软件包:yumlistyumsearchkeyword安装软件包:yuminstall
- 02.26 类模板和STL容器
Unique_yt
c++开发语言
使用类模板封装一个链表,模板如下classList{public:structnode{Tval;node*next;node*prev;可选}private:node*head;node*tail;构造函数析构函数增删改查排遍历6个函数}程序代码:#include#include#include#include#include#include#includeusingnamespacestd;t
- js的一些处理
初晨未凉
javascript前端开发语言
1.翻转字符串letstr='abcdef'str=str.split('').reverse().join()console.log(str)因此想到了我之前写的截取字符串获取参数跳转,在写一遍letstr='name=Jack&age=18&gender=男'letlist=str.split('&');letobj={}list.forEach((v)=>{letitem=v.split('
- android cmake 安装教程,配置 CMake | Android 开发者 | Android Developers
麦子与海
androidcmake安装教程
CMake构建脚本是一个纯文本文件,您必须将其命名为CMakeLists.txt,并在其中包含CMake构建您的C/C++库时需要使用的命令。如果您的原生源代码文件还没有CMake构建脚本,您需要自行创建一个,并在其中包含适当的CMake命令。如需了解如何安装CMake,请参阅安装及配置NDK和CMake。本部分将介绍您应该在构建脚本中包含哪些基本命令,以便指示CMake在创建原生库时使用哪些源代
- esp-who配置与编译流程分析 - esp32-s3-eye
生活需要深度
esp32-eye配置编译
book@100ask:~/esp/esp-who/examples/motion_detection/lcd$idf.pyset-targetesp32s3Adding"set-target"'sdependency"fullclean"tolistofcommandswithdefaultsetofoptions.Executingaction:fullcleanBuilddirectory'
- 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