- stm32+w5500实现web服务_【NodeJS】简单静态WEB服务器实现
weixin_39711441
说明利用HTTP模块URl模块Path模块Fs模块创建在项目文件夹下,创建文件夹static,下面创建index.html//引入http模块var http=require('http');//fs模块var fs=require('fs');http.createServer(function(req,res){ //http://localhost:8001/news.html/new
- 力扣148:排序链表
瀛台夜雪
力扣刷题链表leetcode数据结构
力扣148:排序链表题目描述给你链表的头结点head,请将其按升序排列并返回排序后的链表。输入输出样例输入:head=[4,2,1,3]输出:[1,2,3,4]输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]输入:head=[]输出:[]解法一,使用递归的归并排序,自顶向下,空间复杂度为O(logN)classSolution{public:ListNode*sortList
- 20230329----重返学习-正则的匹配-同步任务与异步任务
方朝端
重返学习学习正则表达式javascript
day-038-thirty-eight-20230329-正则的匹配-同步任务与异步任务正则的匹配字符串正则方法与正则一起使用的字符串方法match捕获letstr="helloAppleoneapple";letreg=/apple/ig;console.log(str.match(reg));replce替换letstr="helloappleoneApple";//默认没有正则,只会替换第
- 什么是多模态机器学习:跨感知融合的智能前沿
非凡暖阳
人工智能神经网络
在人工智能的广阔天地里,多模态机器学习(MultimodalMachineLearning)作为一项前沿技术,正逐步解锁人机交互和信息理解的新境界。它超越了单一感官输入的限制,通过整合视觉、听觉、文本等多种数据类型,构建了一个更加丰富、立体的认知模型,为机器赋予了接近人类的综合感知与理解能力。本文将深入探讨多模态机器学习的定义、核心原理、关键技术、面临的挑战以及未来的应用前景,旨在为读者勾勒出这一
- 04、Redis从入门到放弃 之 数据持久化RDB和AOF
跳跳的向阳花
Redisredisbootstrap数据库
Redis从入门到放弃之数据持久化RDB和AOFRedis强大的功能很大部分是由于他把数据缓存在内存中,为了使Redis在重启的时候,数据不丢失,就需要已某种方式把数据持久化到磁盘中。Redis持久化的方式有俩种,RDB和AOF。RDB==>RedisDatabaseAOF====>AppendOnlyFile1、RDB①、RDB是以快照的方式对内存中的数据进行存储。即在“”制定的时间间隔内“”将
- 【Elasticsearch集群】轻松部署 Elasticsearch:8.0 集群
库洛王子
Elasticsearchelasticsearchjenkins大数据
概要一文教你轻松掌握Elasticsearch:8.0+集群部署,JDK17+环境准备准备3台centos服务器:192.168.0.10、192.168.0.11、192.168.0.121、更新系统yumupdate2、安装jdkElasticsearch8.x要求JDK17。JDK17是当前的LTS版本,建议使用它来运行Elasticsearch8.x以获得最佳性能和安全支持。(步骤略)4、
- 新手安装Arkime不求人
OpenSource SIM
开源Arkime
Arkime(原名Moloch)是一个开源数据包捕获软件,它可以收集到PCAP数据并对其索引,用于浏览和搜索捕获的并建立索引的网络流量。虽说可以在Arkime官方(https://arkime.com/)下载适用于CentOS(rpm)和Ubuntu(deb)的安装包安装。官网也有非常详细的文档资料(https://arkime.com/learn)。然而项目的压力使得我们无法充分学习技术,而且对
- Java 并发舞台:多线程小精灵的奇幻冒险之旅
guihong004
java面试题java开发语言
1.线程池的拒绝策略有哪些?Java中的线程池提供了几种不同的拒绝策略,当线程池无法处理新的任务时(比如因为线程池已满并且工作队列也满了),这些策略会决定如何处理新提交的任务。ThreadPoolExecutor类中定义了以下四种内置的拒绝策略:AbortPolicy:这是默认的拒绝策略。当有新任务提交且线程池无法处理时,它会抛出一个RejectedExecutionException异常。Cal
- MySQL 核心知识全面解析:从事务到索引的深度探索
guihong004
java面试题mysql数据库
1.事务隔离级别有哪些?MySQL的默认隔离级别是?事务隔离级别是数据库系统中用于控制不同事务之间的交互和可见性的机制。SQL标准定义了四个隔离级别,按照从低到高的顺序分别是:读未提交(ReadUncommitted):在这个级别,一个事务可以读取另一个尚未提交的事务的数据更改。这会导致脏读(DirtyRead),即读取到未提交的数据。读已提交(ReadCommitted):这个级别确保一个事务只
- 【实践】Filebeats的尝鲜
JYCJ_
Golanggolang后端
背景落盘的日志文件,查询起来比较麻烦,所以想将其存入ES中,然后通过使用Kibana来查询方案:Filebeat第三方存储:ES链路:filebeat---->[logstash]---->ES前期验证Filebeat输出ES连接问题?ES,目前使用的es版本为7.10.x,第一步:使用filebeat最新版本,连接ES容易报下面的错误:Connectionmarkedasfailedbecaus
- iMac电脑启动ideal跑Java项目报错(Class JavaLaunchHelper is implemented in both...One of the two will be used.)
学习时长两年半的小学生
开发的小坑小洼编辑器java
第一次在iMac上面跑ideal,启动一个main方法出现报错(objc[19374]:ClassJavaLaunchHelperisimplementedinboth/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java(0x10d1cb4c0)and/Library/Java/JavaVirtualMa
- vue3实现搜索关键字高亮
前后端都会点儿
javascriptvue.js前端
其实这个需求非常常见,平时用app、浏览网页时都能用到,那具体是怎么实现的?我做了小案例,先看下效果我们先梳理下这个需求获取搜索关键字,并过滤出符合条件的数据匹配出要高亮的关键字增加样式那其实关键点就在于怎么匹配,如何高亮?这里我们使用正则匹配,再用replace替换,replace的第二个参数也可以是函数,接受的值就是正则匹配到的值:constsearchKey=(val:string)=>{i
- VUE前端实现防抖节流 Lodash
百事老饼干
前端积累前端
方法一:采用Lodash工具库Lodash是一个一致性、模块化、高性能的JavaScript实用工具库。(1)采用终端导入Lodash库$npmi-gnpm$npmi--savelodash(2)应用示例:搜索框输入防抖在这个示例中,我们希望用户在输入框中停止输入500毫秒后才执行搜索操作,避免频繁请求.//假设这是一个执行搜索操作的函数functionperformSearch(query){c
- idea处理文件报错问题
大cheng
idea处理文件报错问题1、idea上传文件获取文件路径的报错报错原因:ServletRequest的getServletContext方法是Servlet3.0添加的,本地用的是Tomcat9.0,版本比较高,支持request.getServletContext()这种写法,而线上是Tomcat6.0,只支持到Servlet2.5,需要先用request拿到HttpSession或者通过Ser
- python 删除文件、目录_python删除文件和删除目录的方法
weixin_39778214
python删除文件目录
下面来看一下python里面是如何删除一个文件及文件夹的~~首先引入OS模块importos删除文件:os.remove()删除空目录:os.rmdir()递归删除空目录:os.removedirs()递归删除目录和文件(类似DOS命令DeleteTree):方法1:#Deleteeverythingreachablefromthedirectorynamedin'top',#assumingth
- oracle创建用户,授权connect,resource后无法建表
程序员WANG
数据库oracle数据库dba
oracle创建用户后,授权很重要,grantconnect,resourcetodemo后,如果你觉得可以了,那就错了。具体授权分为三种方式:1、授权管理员权限,即grantconnect,resource,dbato用户;2、先划分角色,已分配权限的角色,授权给用户,grantrole1to用户,用户就拥有了该角色的权限;3、主要用的就是直接授权。详情如下:1.建用户createuserdem
- 当IDEA运行时遇到jdk路径错误时解决办法。
一只小七月
解决报错jdk
jdk的路径有误,解决办法是使用快捷键ctrl+shift+alt+s,会出现以下界面将jdk选择为不标红可用的版本即可。最后程序就能正常运行了。
- Idea拉取项目流程及报错解决
暖暖的糖糖
Idea工具intellij-idea
1.入职新公司或者开启新项目的时候,需要通过idea引入项目2.首先通过git地址open引入项目,需要Git下载项目:https://blog.csdn.net/shy52134/article/details/121558689?spm=1001.2014.3001.5501获取git账号密码及权限获取git文件路径获取分支地址3.导入项目后来,加载依赖,注意有的公司有自己的私有库一定要求取最
- Apache Hive
_从头再来_
大数据
一、ApacheHive简介官方网址:https://hive.apache.org/TheApacheHive™datawarehousesoftwarefacilitatesreading,writing,andmanaginglargedatasetsresidingindistributedstorageusingSQL.Structurecanbeprojectedontodataalr
- python 实现 延时队列
独壹@无贰
python开发语言
python实现延时队列#延时队列importthreadingimportfunctoolsimportqueueimportdatetimedeftest():print("执行成功")defseconds_chagne(dt):returndt.seconds+dt.days*24*60*60#延迟任务类classDelayTask:#delay_time即将过期的时间#task参与延迟的任
- IDEA 报The selected directory is not a valid home for JDK 错误解决办法
padawan75
idea基础使用
选择jdk的安装目录时,报错提示:TheselecteddirectoryisnotavalidhomeforJDK这种情况是怎么回事呢?有三种情况会出现:jdk的最后一级安装目录需要使用jdk1.8.0_xxx这样的格式命名,别问为什么,这个是idea识别的问题安装好jdk后,直接更改目录名称成jdk1.8.0_xxx格式,这样也是不行的,依然会报错可能你安装的jdk只是安装了jre,而非jdk
- 客户订单管理的微服务例子
自由鬼
Java程序微服务架构云原生
下述代码实现了一个客户基本信息管理的微服务,包含以下功能:1、用户认证:使用SpringSecurity和OAuth2进行认证。配置了角色和权限控制。2、角色授权:通过@PreAuthorize注解实现角色授权,只有管理员可以执行某些操作。3、调用其他微服务:使用FeignClient调用用户管理微服务,从中获取用户数据。此示例具备扩展性,可以轻松增加其他功能,例如更多的RESTAPI或与其他微服
- Android实战技巧之五十:App的系统签名
全速前行
AndroidAndroid实战技巧系统签名sign
这件事困扰我们多时了。我们一直想用非源码编译的方式解决此事,按如下步骤。这种获取系统签名的方法如下:1、apk中需要使用android:sharedUserId=”android.uid.system”这个属性。在Manifest文件修改,如下:2、将app做无签名编译(AndroidStudio)用命令行编译Windows:gradlew.batassembleReleaseMac/linux:
- Java:读取本地文件
Monly21
Javajava开发语言
/***读取本地JSON文件**@throwsIOException*/publicstaticvoidreadLocalFile()throwsIOException{Filefile=newFile("D:\\repo\\java_base_test\\data.json");FileReaderfileReader=newFileReader(file);BufferedReaderbuff
- 掌握未来游戏开发:Unreal Engine 5与C++的完美结合
金文依
掌握未来游戏开发:UnrealEngine5与C++的完美结合【下载地址】UnrealEngine5游戏开发教程-使用C脚本分享UnrealEngine5游戏开发教程-使用C++脚本欢迎来到“UnrealEngine5GameDevelopmentwithC++Scripting”资源下载页项目地址:https://gitcode.com/Open-source-documentation-tut
- python os.path.basename()方法
Arthur-Ji
python
返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。?12345>>>importos>>>path='/Users/beazley/Data/data.csv'>>>#Getthelastcomponentofthepath>>>os.path.basename(path)'data.csv'
- 【机器学习:二十六、决策树】
KeyPan
机器学习机器学习决策树人工智能算法深度学习数据挖掘
1.决策树概述决策树是一种基于树状结构的监督学习算法,既可以用于分类任务,也可以用于回归任务。其主要通过递归地将数据划分为子集,从而生成一个具有条件结构的树模型。核心概念节点(Node):每个节点表示一个特定的决策条件。根节点(RootNode):树的起点,包含所有样本。分支(Branch):每个分支代表一个条件划分的结果。叶节点(LeafNode):终止节点,表示最终的决策结果。优点直观可解释:
- Elasticsearch 中的节点(比如共 20 个),其中的10 个选了一个 master,另外 10 个选了另一个 master,怎么办?思维导图 代码示例(java 架构)
用心去追梦
elasticsearchjava架构
在Elasticsearch中,如果出现集群分裂(Split-brain)的情况,即一部分节点选举了一个Master节点,而另一部分节点选举了另一个Master节点,这会导致数据不一致和集群不可用。Elasticsearch通过配置discovery.seed_hosts和cluster.initial_master_nodes参数来避免这种情况,并确保有足够的节点参与选举以达成共识。为了防止Sp
- [cg] UE5 调试技巧
DXT00
ue5
UE中rhi命令的提交是在render线程,而graphicsapi真正的执行是在rhi线程,今天想看下rhi的底层调用,但由于是通过task执行的,无法获取到renderthread传入的地方,调试起来不太方便。可通过开启下面的命令来调试1.让RDG进入立即执行模式:;Uncommenttogetrendergraphexecutingpassesastheygetcreatedtoeasily
- 生命周期函数——created、onload、mounted、updated的执行顺序
编程星空
前端javascriptvue.js
created和onload是非常重要的生命周期函数,涉及到组件初始化和数据绑定的顺序。created:(1)created是在Vue实例创建完成后立即被执行的。(2)在created中我们可以访问到组件的数据和方法,并进行一些初始化操作。此时的this指向VueComponent(其中包含所有的组件数据和方法)(3)通常我们会在created函数中发送请求获取数据,并将其存储在组件的data中。
- 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