1、TabLayout与Fragment结合使用的常见方式通常会使用FragmentPagerAdapter或FragmentStatePagerAdapter与ViewPager配合,再将TabLayout与ViewPager关联,实现通过TabLayout切换Fragment。以下是布局文件示例activity_main.xml:
【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
Sao_E
redis数据库缓存ai语言模型
文章目录多轮对话记忆管理——基于Memory的对话记忆基于内存存储历史对话基于Redis存储历史对话多轮对话记忆管理——基于Memory的对话记忆SpringAIAlibaba共实现了三种方式:基于内存的方式基于jdbc(数据库)的方式基于redis的方式下文主要演示基于内存和redis的方式基于内存存储历史对话代码首先定义大模型的角色,一个旅游规划师设置增强拦截器接着接口传入prompt和cha
2023-03-21 硬拉天花板
我是小胡胡123
在感叹人类对生命敬畏的同时,作为普通人我们需要安全健身。硬拉名人榜,你的硬拉多重,就来对号入座:硬拉35kg,刚来健身房拍照发朋友圈的软妹子硬拉50kg,糖果超甜、吃个桃桃、小鲜肉硬拉70-80kg,中国男性平均水平硬拉90kg,我要努力健身,我要成为一个猛男,要猛!硬拉100kg,我会和同事、同学、朋友说我是一个健身爱好者,我不吃蛋白粉。最近很火的PT华哥挑战是单手徒手硬拉100kg哑铃,这个对
使用Meteor构建实时仪表板的完整指南
杏花朵朵
Meteor实时仪表板Vue组件路由设置集合集成
背景简介随着现代Web应用对实时性和响应性的要求不断提高,开发人员需要使用强大的框架来构建能够满足这些需求的应用程序。Meteor作为一个全栈JavaScript框架,提供了一种快速开发实时Web应用的方法。本文将通过构建一个实时仪表板项目,详细探讨Meteor的特点和使用方法。Meteor简介Meteor是一个全栈JavaScript框架,用于构建Web应用程序。它的主要元素包括Web客户端、基
docker /var/lib/docker/overlay2目录把磁盘空间占满问题
laizhenghua
Dockerdocker容器运维
1、查看服务器磁盘空间df-h果然100%了,docker系统文件把磁盘空间占满了。2、进入overlay2目录,查找那个容器工作目录占用最高cd/var/lib/docker/overlay2du-h--max-depth=1详见下图好家伙占用110G!复制目录名称2c3c48ccac533c5d4a366d45a19bb91ec2270fd13c5c51cc14d0cbae309fba6d,确
PD分离技术分析
老兵发新帖
人工智能
PD分离中的“PD”指的是大语言模型(LLM)推理过程中的两个核心阶段:Prefill(预填充)和Decode(解码)。这两个阶段在计算特性和资源需求上存在显著差异,分离部署可优化整体性能。以下是详细解析:一、PD的具体含义Prefill(预填充阶段)任务:处理用户输入的整个提示(Prompt),为所有Token生成初始的键值缓存(KVCache)和隐藏状态(HiddenStates)。特性:计算
完善Meteor应用的NPM集成——meteorhacks/npm项目推荐
尤峻淳Whitney
完善Meteor应用的NPM集成——meteorhacks/npm项目推荐1.项目基础介绍及编程语言meteorhacks/npm是一个开源项目,旨在为Meteor应用提供完整的NPM模块集成。该项目通过允许在Meteor应用内部使用NPM模块,极大地扩展了Meteor应用的功能性和灵活性。该项目的主要编程语言是JavaScript。2.项目核心功能项目的核心功能是提供一个桥接器,让开发者可以在M
node.js详解
思静鱼
node.jsnode.js
文章目录一、什么是Node.js?二、Node.js的核心组成三、Node.js的运行机制(事件循环)四、常见内置模块(无需安装)五、应用场景六、npm包生态七、Node.js适合哪些人?八、优缺点总结一、什么是Node.js?Node.js是一个基于ChromeV8引擎的JavaScript运行时,用于构建高性能网络应用。由RyanDahl于2009年发布。允许你在服务器端使用JavaScrip
Python FastMCP:让你的AI工具链飞起来
PythonFastMCP:让你的AI工具链飞起来FastMCPFastMCP是什么?1.工具(Tools):赋予LLM执行能力2.Resources(资源):安全数据通道3.Prompts(提示模板):标准化LLM交互4.组件协同:构建项目AI工具链5.部署架构与性能优化博主热门文章推荐:官方文档:FastMCP官方文档:https://gofastmcp.com/MCP协议规范:https:/
【AI Agent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(2)- 整体流程解析中再看多智能体消息交互通路
同学小张
大模型游戏笔记人工智能AIGCMetaGPTAIAgent多智能体
大家好,我是同学小张,持续学习C++进阶知识和AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。本文来学习一下MetaGPT的一个实战案例-狼人杀游戏,该案例源码已经在MetaGPTGitHub开源代码中可以看到。上次我们拆解了该游戏的整体实现框架(【AIAgent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(1)-整体框架解析),本文我们从运行流程的
Vue 3 组合式 API 中的组件生命周期函数详解
码力无边-OEC
Vuevue.js前端javascript前端框架web
Vue3组合式API中的组件生命周期函数详解Vue3引入了组合式API(CompositionAPI),相比于选项式API(OptionsAPI),它更加灵活且易于复用。在组件的开发中,生命周期函数是必不可少的一部分,用于在特定的阶段执行逻辑操作。本文将详细讲解Vue3组合式API的生命周期函数及其相关知识点,并通过语法糖实现相关示例。什么是生命周期函数?Vue组件从创建到销毁的过程中,会经历一系
一份合格的缺陷报告应包含哪些内容?
海姐软件测试
缺陷管理面试bug
在软件测试过程中,缺陷报告(BugReport)是测试人员与开发团队沟通的核心文档。一份清晰、完整的缺陷报告能大幅提升修复效率,减少沟通成本。那么,一份标准的缺陷报告应该包含哪些关键内容呢?1.缺陷报告的核心要素(1)缺陷标题(Summary)要求:简洁、准确,能一眼看出问题本质。示例:✅"【登录页面】输入错误的手机号+密码,错误提示语未显示"❌"登录有问题"(2)缺陷描述(Description
ppt照片太大太多导致整个PPT文件内存都很大,传输不了!怎么办?教会你压缩压缩PPT里图片内存的方法
这辈子谁会真的心疼你
powerpoint
过大的PPT文件会占用设备(如电脑、手机、U盘等)更多的存储空间。如果设备本身存储容量有限,可能会导致存储空间不足,影响其他文件的保存和设备的正常运行。例如,一台存储空间仅剩几个GB的电脑,若要保存一个十几GB的PPT,就会面临存储困境。在通过邮件、即时通讯工具(如微信、QQ)或云存储平台传输PPT时,过大的文件会显著延长传输时间。而且,很多邮件和即时通讯工具对文件传输大小有限制,过大的PPT可能
学习 | 看疫情地图,学 PPT 制作
小斌PPT
今天是大年初七,由于突发疫情,大家都没能好好过个春节,新型肺炎来至已有多天,人心惶惶,至今已确诊有九千多人感染,但相信,大家一定能挺过来的,疫情会得到控制的。越是危难的时候,越要淡定,不听信谣言,不传谣,自己做好隔离工作,不聚众,清洁通风,从自身做起。长期在家,就当是好好放个长假吧。现在在手机上,我们也可以轻松了解当前疫情动态,跟踪疫情进展,自己也可以作相应的规划。例如可以从如下5个地方查看疫情概
什么是GPT-4T?
亿只小灿灿
人工智能GPT-4T
1.引言:GPT-4T概述GPT-4T是OpenAI开发的新一代多模态大型语言模型,在GPT-4的基础上增强了对表格数据、数学表达式和代码的处理能力。其核心创新在于Transformer架构的优化,使模型能够更高效地处理结构化数据与文本的融合任务。本文将深入探讨GPT-4T的技术原理、应用场景及代码实现。2.GPT-4T核心技术解析2.1多模态输入处理GPT-4T支持三种主要输入模态:自然语言文本
Apache Ignite实现无死锁特性
lang20150928
其他javaIgnite
这段内容讲的是ApacheIgnite中OPTIMISTICSERIALIZABLE事务的“无死锁”特性,以及它是如何工作的。我们来一步步地用通俗易懂的中文解释这段内容,并帮助你理解它的核心思想。一、核心思想:为什么OPTIMISTICSERIALIZABLE事务是“无死锁”的?在Ignite中:悲观事务(PESSIMISTIC)是通过顺序加锁来实现的,如果多个事务以不同顺序访问多个key,就可能
[特殊字符] HarmonyOS实战:跨设备文件传输系统的「无缝传送」秘籍
作为一个曾在会议室传1GB演示视频传到崩溃的开发者,今天要分享HarmonyOS分布式文件传输的实战!当初用断点续传功能救了我差点被毙掉的方案,现在把这些救命技巧全公开~一、文件传输的「崩溃瞬间」与需求上周给客户演示方案时,3台设备互传视频差点翻车:断网重传:会议室WiFi突然卡,传了一半的视频要重来多设备共享:手机、平板、电脑都要同步最新版PPT权限控制:怕客户误删源文件,得限制编辑权限Harm
Windows 10 设定静态路由
沉迷学习w
Windows相关windowslinuxc语言
情景:Windows电脑想要存取Linux电脑里面z/OS主机z/OS主机跟Linux电脑使用内部tunnel管道连接Linux电脑192.168.50.15Windows电脑192.168.50.16Linux电脑管道192.168.200.2z/OS主机管道192.168.200.1先用管理员开起CommandPrompt用routeprint来查看现在路由C:\Windows\system3
第⑥期儿童阅读指导师•中级班,第④周线上读书会,由我主持开展第⑦天!
英妈恋上思维导图
今天我必将全力以赴!尽自己所能,组织好本次的线上读书会。白天上班,晚上陪两娃!而这周又多了主持工作,除了给群里100+老师们点赞和回评作业外,还得拟定今日研讨会要分享的主题,以及自己制作PPT。因为本期儿童阅读指导师的学习对象,大多是体制内的语文老师,本身就是顶着巨大的“压力”,硬着头皮接受了本次任务,在老师们面前,绝对不敢怠慢,连续⑦天都坚持“认真学习,好好工作”。今日可是最后一天,也是最关键的
Shell脚本编程:从入门到精通的实战指南
Monkey的自我迭代
Linuxlinuxssh
一、Shell与Shell脚本概述Shell是用户与操作系统内核之间的命令解释器,它接收用户输入的命令并转换为系统调用,是Unix/Linux系统的核心交互界面。Shell脚本(ShellScript)则是将一系列Shell命令组织成文本文件,通过解释器批量执行的自动化工具,广泛应用于系统管理、日志分析和软件部署等领域。主流Shell类型:Bash(Bourne-AgainShell):Linux
Byobu
胖大和尚
byobu
Byobu是一个基于tmux或screen的终端复用工具,提供了更友好的用户界面和更多的功能。以下是如何使用Byobu进行分屏、会话管理和其他常用操作的详细步骤:安装Byobu在Debian/Ubuntu系统上:sudoapt-getinstallbyobu在Fedora系统上:sudodnfinstallbyobu启动Byobu启动Byobu:打开终端并输入以下命令启动Byobu:byobu常用
几种关闭进程的方式
angushine
Shell
方法一:使用pkill替代(推荐)pkill可直接通过进程名终止进程,无需手动提取PID,且自动处理无进程的情况:pkill-9test特点:简洁性:无需管道和grep过滤。健壮性:若无匹配进程,静默退出,无错误提示。信号支持:支持-9强制终止。方法二:通过Shell条件判断在传递PID前检查是否存在有效进程:pid=$(ps-ef|greptest|grep-vg
Secs/Gem第十二讲(基于secs4net项目的ChatGpt介绍)
好,那我们进入最关键的一讲——第十二讲:完整事件通知流程全景图——CEID触发到主机接收的全过程关键词:CEID事件上报、S6F11报文、事件触发流程、数据驱动机制、ReportDispatch、主机解析流程本讲目标你将彻底理解:设备是如何触发一个事件上报的?报文(S6F11)结构是怎么设计的?主机是怎么解析报文、提取变量、派发处理?报文中包含的信息是怎么匹配你之前定义的CEID/RPTID/VI
关于 SECS4NET 专栏的几点说明(内附资源)
好学近乎知o
secs/gemsecs4net
关于SECS4NET专栏的几点说明根据很多小伙伴在评论区的留言,我总结了几个反馈点:✅常见问题反馈部分章节讲解存在个别错误关于资源来源、项目版本的问题更新速度偏慢,期待能加快节奏简单说明一下:我是一个没有感情的复制粘贴机器,发布这些作品最初只是为了自己闲来学习、顺便看着玩。起初我以为这种纯纯的复制粘贴内容,甚至连开头和结尾都带着ChatGPT的沟通痕迹,肯定不会有人感兴趣。但没想到,发布之后阅读量
Secs/Gem第二讲 (基于secs4net项目的ChatGpt介绍)
好的,我们正式进入:第二讲:深入SECS4NET项目结构——主机程序是怎么搭起来的?关键词:项目结构、类图、通信类、事件处理、连接生命周期、异步机制本讲目的我们从源码入手,一步步搞懂:SECS4NET主机(Host)是如何设计通信逻辑的有哪些关键类,类之间的关系是什么通信的生命周期怎么管理怎么实现“接收消息”和“主动发送”的功能如何集成到你自己的EAP或测试程序中你将不再只是“调Sample”,而
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