- IO虚拟化 - virtio-vring的三个组成结构【转】
xidianjiapei001
#虚拟化技术
1.初始化三个结构vring_new_virtqueue函数中初始化virtqueue的各种字段的初始值vq->vq.callback=callback;vq->vq.vdev=vdev;vq->vq.name=name;vq->notify=notify;vq->broken=false;vq->last_used_idx=0;vq->num_added=0;list_add_tail(&vq-
- vant-element-ts一起使用存在的问题
flynn_
问题总结vue
由于vant-ui与element-ui部分组件存在冲突,导致在vue-typescript中出现错误:Subsequentpropertydeclarationsmusthavethesametype.Property'$notify'mustbeoftype'ElNotification',butherehastype'Notify'.方案:一个全局导入,一个按需导入,避免冲突的组件同时使用,
- STM32 HAL freertos零基础(九)任务通知
啥也不会的小白研究生
零基础学习Freertosstm32嵌入式硬件单片机
1、任务通知任务通知用于任务之间同步和通信。任务通知允许一个任务向另一个任务发送一个32位的值,并可以选择是否唤醒正在等待通知的任务。这使得任务之间的同步更加简单和灵活。任务通知功能:发送通知:一个任务可以向另一个任务发送一个32位的值。接收通知:接收任务可以根据接收到的通知来决定何时执行某些操作。通知状态:可以检查任务的当前通知状态。2、相关APIxTaskNotify()//发送通知,带有通知
- java基础-线程间通信方式
问道飞鱼
Java开发技术java开发语言
文章目录1.wait()和notify()2.volatile关键字3.Java.util.concurrent包提供的工具类Semaphore(信号量)BlockingQueue(阻塞队列)4.Atomic类在Java中,线程间的通信是非常重要的,尤其是在多线程编程中,它有助于协调线程的行为,确保资源的正确访问和更新。Java提供了多种方式来实现线程间的通信,主要包括以下几种方法:1.wait(
- 剑桥商务英语单词词组 @2022-12-25
Hedgehoginwind
每日5组单词词组学习。第1组takeacensus调查人口meticulous小心翼翼的;细致的;一丝不苟的carefulandmeticulouscalculation精打细算inameticulousway细致的ferrygoods运送货物gobytheferry乘渡船去第2组dotcom网站inactivemarket不活跃市场inactiveorder不动盘notifysb.ofsth通知
- 应用基本期末
渔jy
Android系统及应用应用物联网
选以下哪些属于Java的三大特性:a.抽象b.封装c.面向对象d.分布式e.安全性f.平台独立以下哪些是Object的公用方法?a.equals()b.getContext()c.notify()d.toString()e.clone()int和integer两个谁更占用内存?a.Intb.integer“a==b”和“a.equals(b)”是否有区别?a.Yesb.No以下关于ArrayLis
- Linux学习-inotify和rsync同步
丢爸
网络Linuxlinux学习服务器
Inotify是一个Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多。Inotify实际基于事件驱动机制,为应用程序监控文件系统事件提供了实时响应事件的机制,无须通过cron等的轮询机制来获取事件。cron等机制不仅无法做到实时性,而且消耗大量系统资源。相比之下,inotify基于事件驱动,可以做到对事件处理的实时
- 安装diffvg
aiotud
python人工智能python人工智能
https://github.com/BachiLi/diffvghttps://github.com/BachiLi/diffvg使用环境:python:3.7出现的错误:torch出现undefinedsymbol:iJIT_NotifyEvent解决办法:condainstallmkl=2024.0
- 回调函数
HAPPYers
首先注册一个回调函数PsSetCreateProcessNotifyRoutine函数原型NTSTATUSPsSetCreateProcessNotifyRoutine(PCREATE_PROCESS_NOTIFY_ROUTINENotifyRoutine,BOOLEANRemove);我们在注册中写入NTSTATUSstatus=PsSetCreateProcessNotifyRoutine(M
- golang学习笔记06——怎么实现本地文件及目录监控-fsnotify
GoppViper
golang学习笔记golang开发语言后端文件操作
推荐学习文档基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学习笔记04——如何真正写好Golang代码?golang学习笔记05——golang协程池,怎么实现协程池?背景我们总有这样的
- 快手极速版薅羊毛+脚本+抓包教程+环境变量配置 保姆级别教程 (2022/5/13 更新)
野团队|羊毛分队
青龙面板git
快手极速版薅羊毛是基于青龙面板的首先你要有自己的青龙面板没有青龙面板的可以看下我以前的文章,很简单的(有服务器的话2分钟搭建完毕)那么下面开始进入正题!首先拉取脚本库(截至到目前为止很多脚本都已经不能用了,根本拉取不出来,下面分享一个大佬的脚本库)qlrepohttps://gitee.com/JDWXX/ql_all.git"""Backup|index|HT.*|sendNotify|ql""
- 2024下半年最新版 Java 面试题整理(初、中、高、架构)持续更新中
2401_84047990
程序员java架构开发语言
【071期】面试官问:什么场景下适合使用ArrayList或LinkedList?【072期】面试官:对并发熟悉吗?说说wait、notify、yield等线程间的协作【073期】SpringBoot项目@Async默认线程池导致OOM问题如何解决?【074期】摒弃“机械化”编码,SpringBoot实现动态增删启停定时任务【075期】面试官问:Spring使用了哪些设计模式?举例三种即可面试题-
- datagrid wpf 刷新数据_WPF MVVM DataGrid数据直更新
眺过云端
datagridwpf刷新数据
WPFMVVM所有类基本上都会实现System.ComponentModel.INotifyPropertyChanged接口.举例为TestModel实体类A3只是A1与A2的数据处理后显示,只要A1或A2有更新的情况前台UI都有变化实体如下.但在DataGrid中有个很特别的问题,进入了编辑模式但在更新A1时退出当前单元的编辑模式,而不退出编辑行时A3的数据是不会有反应的变化.这样子有才生了一
- Java快速入门 知识精简(7)常用类
Tangy范
Javajava开发语言
lang包该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread、Throwable类需要重点掌握,因为它们应用很广。类名描述常用方法Object所有Java类的根类equals(Object),hashCode(),toString(),clone(),notify(
- Unity的Mvc模式的Model层的数据绑定
丢了玉的宝玉
unitymvcc#
设计模式:“#委托事件”数据绑定的构成;绑定源绑定目标绑定对象绑定源用于绑定的数据源,可以是任意类的实例,绑定源是数据的提供者或发送者。它可以是一个变量、属性、字段、方法或其他对象。绑定源负责维护数据的状态,并在数据发生更改时通知绑定目标。在Unity中,绑定源可以是游戏对象的组件或脚本中的变量。``用来绑定的基类;//////实现INotifyPropertyChanged接口来协助数据源进行绑
- Java notify/notifyAll、锁池与等待池相关解析
Little丶Jerry
问:简单说说你对Java对象的锁池与等待池的理解?答:对于Java虚拟机中运行程序的每个对象来说都有两个池,锁(monitor)池和等待(wait)池,而这两个池又与Object基类的wait、notify、notifyAll三个方法和synchronized相关(还有Lock和await等)。锁池的本质就是假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、C想要调用这个对象的某个sync
- java中的notify和notifyAll有什么区别?
Mobobobobo
锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。锁池中的线程会去竞争该对象锁。等待池:假设一个线程A调用了某个对象的wait()方法,线程
- Java笔试面试题AI答之线程(24)
工程师老罗
Java笔试面试题AI答java开发语言
文章目录139.简述为什么wait(),notify()和notifyAll()必须在同步方法或者同步块中被调用?140.简述为什么Thread类的sleep()和yield()方法是静态的?1.sleep()方法2.yield()方法总结141.简述同步方法和同步块,哪个是更好的选择?同步方法同步块选择建议142.简述如何创建守护线程?143.简述什么是JavaTimer类?如何创建一个有特定时
- 成功解决:jenkins构建失败,cannot open directory /home/centos/: Permission denied等问题
兰若姐姐
安装教程报错解决工具使用专栏jenkinscentosservlet
这是报错:LANG=en_US.UTF-8JOB_NAME=interface_automation_testingBUILD_DISPLAY_NAME=#25BUILD_ID=25NOTIFY_SOCKET=/run/systemd/notifyJOB_BASE_NAME=interface_automation_testingGIT_PREVIOUS_SUCCESSFUL_COMMIT
- 用C++实现一个并发编程阻塞队列BlockingQueue
photon_wa
C++多线程c++
用C++实现一个并发编程阻塞队列BlockingQueue#pragmaonce#include#include#includetemplateclassBlockingQueue{public:voidadd(constT&item){std::unique_locklock(m_mutex);m_queue.push(item);m_condition.notify_one();}voidad
- FreeRTOS 快速入门(八)之任务通知
Projectsauron
FreeRTOS操作系统FreeRTOS嵌入式任务通知
目录一、任务通知1、基本概念2、优势及限制3、通知状态和通知值二、任务通知的使用1、xTaskNotifyGive/ulTaskNotifyTake2、xTaskNotify/xTaskNotifyWait3、xTaskNotifyAndQuery一、任务通知1、基本概念FreeRTOS从V8.2.0版本开始提供任务通知这个功能,每个任务都有一个32位的通知值,在大多数情况下,任务通知可以替代二值
- 线程通信【详解】
鱟鲥鳚
javamaven
线程通信线程通信是指线程间可以交互,指定信号,让线程执行或者等待通过Object类中的方法完成通信wait()notify()1、同步方法需求:两个输出的方法,保证正常输出不被打断且达到一人一次输出的效果publicclassPrinter{ //定义一个信号量 //1代表print1执行2代表print2执行 privateintflag=1; /** *线程通信的要求 *1)要
- 并发环境下wait与sleep的区别
才艺のblog
java数据库
1、归属问题sleep是Thread类的静态方法而wait是object的成员方法2、唤醒问题执行sleep(long)和wait(long)的线程都会在等待相应毫秒后醒来wait(long)/wait()可以被notify()/notifyAll()唤醒,但sleep(long)只会等待时间结束3、锁释放问题wait方法的调用必须先获取wait对象的锁,而sleep则无此限制wait方法执行后会
- Java并发操作,多线程
众星揽月
多线程java开发java
Thread/Runable/Callable:多线程的三个实现方式适用场景:多线程编程优点:Callable的call方法有返回值,Runable/Callable为接口,能多实现缺点:Thread为抽象类,只能单继承Thread.sleep(millis)/Object.wait()/Object.notify()/Object.notifyAll()/Object.join()/Condit
- Qt事件处理机制(一)事件过滤器的使用
三颗橘子
QT笔记总结qt开发语言
目录1.事件传递大致流程图:2.安装事件过滤器步骤及相应例子。3.结语1.事件传递大致流程图:事件的传递大致流程如上图所示,事件发生,经过一系列函数,来到QAppliction::notify(),然后经过事件过滤器QObject::eventFilter(),经过QObject::event()发送给各个对象,各个对象在调用自己相应的事件处理函数。在大多数情况下,想要对事件做自己的处理,都从上图
- Linux文件监控方法
anranjingsi
c++linux
Linux系统开发程序,有时候需要监控配置文件的变化,做出相应操作,下面将介绍常用的文件、目录监控方法:函数介绍:1.Inotify系列函数:Inotify_init(void)系统返回一个文件描述符,使用完毕需要释放(close)2.Inotify_add_watch(intfd,constchar*pathname,unsignedintmask)添加对指定文件的监控,可以选择需要监控的事件(
- VScode 使用笔记
韩搏
其它vscode
vscode搜索自动过滤.gitignore中的配置#setting.json设置中加入"search.useIgnoreFiles":false{"files.exclude":{"search.useIgnoreFiles":false}}其它编辑器修改文件后VScode无法自动加载1.cat/proc/sys/fs/inotify/max_user_watches查看限制大小2.sudovi
- java中Object类的常用方法
晚•夜
java基础知识java开发语言
1.常用方法1.clone方法1.1基本概念1.2方法声明1.3工作原理1.4注意事项1.5示例代码2.finalize方法2.1基本概念2.2方法声明2.3工作原理2.4注意事项2.5替代方案3.equals方法3.1方法声明3.2默认行为3.3重写规范3.4示例代码3.5注意事项4.hashcode方法4.1实现方式4.2遵循原则4.3示例代码5.wait方法6.notify方法7.notif
- ansible的剧本
王德发666
apache网络服务器
1playbook剧本1.1playbooks的组成Tasks任务,即通过task调用ansible的模板将多个操作组织在一个playbook中运行Variables变量Templates模板Handlers处理器,当changed状态条件满足时,(notify)触发执行的操作Roles角色1.2playbooks剧本范例vimtest1.yaml--- #yaml文件以---开头,以表明这是一
- Spring boot 实现监听 Redis key 失效事件
是阿洋啊
Javaspringbootredis后端
一.开启Rediskey过期提醒方式一:修改配置文件redis.conf#默认notify-keyspace-events""notify-keyspace-eventsEx方式二:命令行开启CONFIGSETnotify-keyspace-eventsExCONFIGGETnotify-keyspace-events二.notify-keyspace-eventsnotify-keyspace-
- 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