- cc1310 NTC的单次ADC读取数据
骑上我心爱的小蜗牛
#include#include/*Forsleep()*/#include/*DriverHeaderfiles*/#include#include/*Example/BoardHeaderfiles*/#include"Board.h"#include"math.h"#defineADCBUFFERSIZE(50)#defineUARTBUFFERSIZE((20*ADCBUFFERSIZE)
- CC1310笔记1:开发准备
zddxmu
SubG
前言SubG一直都在接触,但就是没有入手去学习。这次刚好要用到,做点笔记。开发环境搭建TI现在的开发环境换成了一套基于开源Eclipse的IDE,不用再为IAR而烦恼了。具体操作细节可以看官方说明:GettingStartedwithCC13xxSoftwareExamples(CodeComposerStudio(CCS))1.DownloadandinstallTI-RTOSSimpleLin
- CC1310的功放怎么控制开关啊?
weixin_44613460
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Mark
- CC1310如何使用内部LDO
Willwangch
CC1310
一、硬件修改:二、软件修改:inordertodisablethebuilt-inDC/DC,writethisinyourccfg.c:#defineSET_CCFG_MODE_CONF_DCDC_RECHARGE0x1//DonotusetheDC/DCduringrechargeinpowerdown#defineSET_CCFG_MODE_CONF_DCDC_ACTIVE0x1//Dono
- CC1310 WOR如何设置几秒钟醒一次
Willwangch
CC1310
SDK版本:simplelink_cc13x0_sdk_1_60_00_21IAR版本:IAR8.11.1代码:C:\ti\simplelink_cc13x0_sdk_1_60_00_21\examples\rtos\CC1310_LAUNCHXL\drivers\rfWakeOnRadioTx&rfWakeOnRadioRx测试步骤:1.默认的WOR例程是500ms唤醒一次,检测空中是否有数据包
- CC1310切换速率的办法
Willwangch
CC1310
客户在使用CC131开发产品的过程中,经常会遇到切换速率的场景,比如此刻使用50Kbps速率传输,下一时刻使用10Kbps速率传输,那么如何有效的在各个速率之间切换,这里介绍两个办法:一、使用RF_control来切换速率RF_control函数说明如下:/***@briefSetRFcontrolparameters*@noteCallingcontext:Task*@paramhHandlep
- CC1310架构及工作原理
Breuning
CC1310架构及工作原理CC1310组成部分:主MCU:搭载的是ARMCortex-M3,它作为CC1310主要的操控部份,包含的是RTOS和对底层外部接口的ㄧ些drivers,同时客户的应用程序也跑在这个部分;RF核:顾名思义就是和射频相关的,它包含的是射频的一些接口,主MCU通过发送命令的方式可以控制射频进行工作,同时RF核会返回射频工作的结果给主MCU;SensorControllerEn
- TI-RTOS(RTOS内核)概述 》 任务
Mark Vimy
参考文献:file:///D:/CCS/CC1310/simplelink_cc13x0_sdk_2_20_00_38/docs/ti154stack/html/tirtos/tasks.html任务一、基本概念1.定义TI-RTOS任务(概念上)等同于在单个C程序中并行执行函数的独立线程。2.执行状态(1)Running任务正在执行中(2)Ready任务就绪(3)Blocked任务被阻塞(暂停执
- CC1310开发笔记-CY15B104Q
BOBO11232
sub-1GCY15B104QCC1310存储器c语言
作者:LYBCY15B104Q存储器的驱动功能说明CY15B104Q是使用了高级铁电工艺的4Mbit非易失性存储器。铁电性随机存取存储器(即F-RAM)是一种非易失性存储器,其读和写操作方式与RAM一样。它提供151年的可靠数据保留时间,并解决了由串行闪存、EEPROM和其他非易失性存储器造成的复杂性、开销和系统级可靠性的问题。与串行闪存和EEPROM不同的是,CY15B104Q以总线速度执行写操
- CCS8 导入 CC1310 SimpleLink SDK 的历程
jts870817784
CC1310
第一步:安装SimpleLinkSDK到电脑。第二步:打开CCS第三步:Project->ImportCCSProjects第四步:选择安装SimpleLink的安装路径第五步:选择需要的历程,然后点击Finish完成
- CC1310片内固件升级笔记(二)
ruson525
RFID开发
概述:OAD升级,根据TI所给的文档整理如下路径:simplelink_cc13x0_sdk_1_60_00_21/docs/proprietary-rf/proprietary-rf-users-guide/cc13x0/oad-easylink/oad_onchip.html#sect-bim-for-on-chip-oad一、OAD升级要求1)应用程序不能有.ccfg部分2)镜像文件的头和应
- CC1310开发环境
ruson525
RFID开发
一、准备工作1.sdk版本:simplelink_cc13x0_sdk_1_60_00_212.开发工具:IAR(EmbeddedWorkbench8.0_2)或者CCS(CodeComposerStudio7.3.0)3.开发板:CC1310(Rev1.4),CC1310F1284.IAR导入配置:IAR-->Tools-->Configurecustomargumentvariable-->G
- CC1121和CC1101的区别
kanta5857
简介CC1121是TI推出的新一代射频芯片,功能比CC1101强悍,可以替代CC1101。区别CC1121:最大发射功率15dbm,灵敏度-120dbm,缓冲区128字节。CC1101:最大发射功率12dbm,灵敏度-116dbm,缓冲区64字节。总结CC1121可以看做是CC1101的升级版,或者说CC1121只是过渡品。最新的CC1310推出后,CC1121已经没有了用武之地。低成本直接选择C
- CC1310设计
kanta5857
CC1310有3种芯片封装,常用的是7XD(QFN48),这个版本的芯片资料最全。支持TIRTOS,contiki。适合开发各种应用。
- CC1310部分低功耗问题一
kanta5857
唤醒时间:MCU,Idle→Active14μsMCU,Standby→Active174μs(ram保持)MCU,Shutdown→Active1097μs(相当于重启MCU)通常情况下,如果需要然SRAM保持,使用次低功耗standby模式,电流0.7uA;如果不需要SRAM保持数据,则使用最低功耗shundowm模式,电流0.185uA。
- CC1310/CC1350带TI-RTOS操作系统的Sensor、Collector例程跳频模式通信细节
发呆健将
项目相关,研究了TI公司的无线产品CC1310/CC1350的带TI-RTOS操作系统的Sensor、Collector例程跳频模式(Freq_hopping)的通信细节问题:一.软件结构Sensor端主要为三文件:1.sensor.c2.ssf.c3.jdllc.cColletor端主要为三个文件:1.collector.c2.csf.c3.cllc.c二.通信细节通信过程中为以下4种数据包:1
- 通过bootloader用串口给CC1310和CC2650下载固件
knowic606
contiki
1.Contiki缺省设置没有enablebootloader,通过如下设置启用backdoor,修改contiki/cpu/cc26xx-cc13xx/lib/cc13xxware/startup_files/ccfg.c文件一下几项,其中,bootloader触发设置为Select按键低状态//#defineSET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE0x00//D
- CC1310空中升级笔记05 BIM适配工程处理
iotisan
联-SubG
前言在学习OAD例程时,才真正明白CC1350project0的用处。对一个待增加OAD的工程,需要学习它的操作方法。另外我还结合自己淌过的几个坑,总结了这个操作记录。希望能对一些做CC1310OAD的朋友们有所帮助。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/1.增加宏Inprojectoption->ARMCompiler->Advan
- CC1310空中升级笔记02 CC26xx_CC13xx_BLE_OAD_例程梳理
iotisan
联-SubG
在CC1310空中升级笔记01中,TI员工提到了CC26系列已经有实现的OAD的例程。本文大部分资料参考了《CC2640Over-the-AirDownloadUser’sGuide.pdf》,就先从这个文档下手,安装了TI协议栈之后就可以看到了。本文作者twowinter,转载请注明作者:http://blog.csdn.net/iotisan/一、功能梳理CC2640的OAD用这站图最能掌握全
- CC1310空中升级笔记03 CC1350_BLE_OAD_Project0
iotisan
联-SubG
这是一个官方指南,关于如何对CC1350工程修改,从而利用BLE来无线升级。GettingStartedBuildyourownapplicationimageanduseBLEOADtouploadthemtotheCC1350Launchpad.PleasevisitCC1350Project0forinstructionsonhowtobuildyourownimageanduseBLEOA
- CC1310直接操作寄存器编程
crazin
CC1310
官方CC13x0提供的驱动为了兼容多种器件和操作系统比较抽象,例如串口发送函数是这样的:int_fast32_tUART_write(UART_Handlehandle,constvoid*buffer,size_tsize){return(handle->fxnTablePtr->writeFxn(handle,buffer,size));}轻易看不出来是如何操作寄存器的,这种方式的驱动文件放在
- CC1310串口下载程序
crazin
CC1310
首先要在程序里面使能BootLoader模式。CCFG里面的BL_CONFIG寄存器是只读的,只能在ccfg.c文件里面操作此寄存器。打开.../source/ti/devices/startup_files/ccfg.c文件,不用写代码,只用把相关的配置打开即可,如下://#####################################//Bootloadersettings//###
- CC1310模块上电问题
crazin
CC1310
CC1310为了实现低功耗模式,对每个外设都有电源管理功能,每个外设的电源手否上电可以单独控制,并且默认是没有上电的,参见ReferenceManual6.3章。因此在每个外设使用前需要先进行电源使能操作,例如在进行串口初始化操作前需要先将串口模块上电:HWREGBITW(PRCM_BASE+PRCM_O_PDCTL0,PRCM_PDCTL0_SERIAL_ON_BITN)=1;//SERIALO
- cc1310实现wor接收发送低功耗模式
未知电子
物联网
在锁里面用了cc1310来做前后面板的通信,所以需要通过cc1310的wor模式来通信wor模式是通过控制rf核打开时间来实现的,及rf打开较短时间来抓包,其余时间都休眠,从而实现低功耗具体实现代码如下/**********************************************@文件:driverRf.c*@作者:cjx*@版本:v1.0.1*@时间:2017-01-15*@概要
- CC1310在433MHz下的PCB设计指南
RF_star
CC1310是德州仪器推出的低功耗Sub1GHz系列器件。功耗极低的有源射频器件和低功耗模式下极小的工作电流可确保电池拥有较长的使用寿命,允许在应用中使用小型纽扣电池。CC1310器件将灵活的低功耗射频收发器和强大的48MHzCortex-M3微控制器相结合。CC1310器件不会以牺牲射频性能为代价来实现低功耗,CC1310器件具有出色的灵敏度和稳定性。CC1310器件是一款高度集成、真正的单片解
- TI CC1310 sub1G的SDK开发之发射功率实测
---牧马人---
CC1310TI-RTOS
写在前面用频谱仪测试模块发射的单载波,用SmartRFStudio7打出来的功率可以达到负dBm,不知道为什么软件控制的实现不了实测对照表CCFG_FORCE_VDDR_HH=0中心频点:433.92Mhz封装:QFN4*4要求功率实测软件控制/电流功耗SmartRFStudio-10dBm0.56dBm/9.39mA-3.24dBm0dBm0.56dBm/9.39mA-3.26dBm2dBm0.
- TI CC1310 sub1G的SDK开发之自动生成射频参数
---牧马人---
CC1310
写在前面TI的大部分无线射频芯片的射频参数都可以通过SmartRFStudio7自动生成导入,很是方便,本文以CC1310为例讲解如何自动生成射频参数。没有安装SmartRFStudio7可以在TI官网自行下载。一、参数选择选择中心频点TypicalSettings选择TI提供的几种配套的参数,由于symbolRate不一样,对应的Deviation和RxFilterBW也会不一样,所以尽量使用T
- TI-RTOS实时操作系统开发之串口应用
---牧马人---
CC1310CC2640R2FTI-RTOS
TI-RTOS实时操作系统之串口应用适用CC1310\CC2640R2F等基于TI-RTOS的SDK开发更新-20190622重新定义API1、外部传入回调函数,方便调用。2、增加自定义printf3、线程安全考虑,增加互斥信号量功能,防止多线程(多任务)同时调用时冲突4、自定义printf的缓存使用的是动态分配内存,可以换成固定数据5、自定义printf的打印默认结尾带换新行6、两种打印API,
- 超低功耗无线技术 - CC1310开发常见问题和解答
weixin_30839881
CC1310开发过程中,可能遇到的主要问题和解决方法总结如下:一、CC1310简介1、TI主流的Sub-1G超低功耗无线收发一体模块。2、基于TI-RTOS的MCU,集成ARMCotex-M3系统和RF-Core。3、休眠电流2uA,Rx模式电流5.5mA左右,能实现远距离稳定通信组网。二、主要开发工具1、CCS:最好安装最新的高版本;或者安装IAR也可以。2、SmartRFStudio7:PC端
- E71-433MS30芯片(CC1310无线模块 )mosbus协议通信(主机)
梦醉花舞
E71-433MS30芯片同E70,目前该芯片无自己的数据手册,应该是亿百特公司懒得出吧,不过可参考E70(433T30S)/E70(868T30S)/E70(915T30S),亿百特官网有,E70系列是基于TI公司CC1310射频芯片的无线串口模块(UART),可工作在431~446.5MHz频段(默认433MHz)、861~876.5MHz频段(默认868MHz)、907~922.5MHz频段
- 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