- c# net8调用vc写的dll
wiseyao1219
c#开发语言dll
dll程序(vc,x86)头文件extern"C"int__declspec(dllexport)WINAPIadd(inta,intb);实现intWINAPIadd(inta,intb){returna+b;}c#/net8函数声明:[DllImport("dll/Dll1.dll",CallingConvention=CallingConvention.StdCall)]publicstat
- ARM-Cortex-M架构:1、STM32函数参数传递
天城寺电子
嵌入式软件开发arm开发stm32汇编C语言
文章目录参数传递概览堆栈传递参数具体过程参数传递概览在调用子函数时,ARMCortex-M3处理器可以使用寄存器和堆栈来传递参数。具体使用哪种方式取决于传递的参数数量和调用约定(callingconvention)。参数传递方式ARMCortex-M3处理器使用ARMEABI(EmbeddedApplicationBinaryInterface)标准来定义参数传递的约定。根据这个约定:1、寄存器传
- 一文搞定规范化Git Commit
怎样的夜
web开发typescript
前言规范化gitcommit对于提高gitlog可读性、可控的版本控制和changelog生成都有着重要的作用。然而阻碍我们脚步的不只是团队的推广,单单对于一系列工具的配置都让人头大。这其中主要就是commitlint和commitizen的配合使用以及自定义提交规范。本文总结了目前的最佳实践给大家,如果有帮助,赏个star足矣。ConventionalCommits约定式提交规范Conventi
- 探索Etherkey:网络化可编程USB键盘模拟器
皮静滢Annette
探索Etherkey:网络化可编程USB键盘模拟器etherkeyEmulateaconventionalUSBkeyboardwithascriptable,networkcapablemicrocontroller.项目地址:https://gitcode.com/gh_mirrors/et/etherkey在数字化时代,自动化和远程控制的需求日益增长。Etherkey项目应运而生,它通过一个
- 2019-09-23 A lovable eccentric
RoadToGood
Trueeccentricsneverdeliberatelysetouttodrawattentiontothemselves.Theydisregardsocialconventionswithoutbeingconsciousthattheyaredoinganythingextraordinary.Thisinvariablywinsthemtheloveandrespectofother
- 每日英语单词学习 @2023-02-05
Hedgehoginwind
每日5组单词词组学习。第1组bytheyard按码计算;没完没了地kitingcheck空头支票lucrative有利的;赚钱的;合算的outdatedconventionsandcustoms陈规旧习carryforward结转;减免税额clearing清算第2组zipacrossthehorizon一鸣惊人counterfeitbanknote假钞authentication认证;证明fero
- 前端项目git提交规范配置
PQ℡
gitjsgitelasticsearch大数据
项目规范管理目的为了使团队多人协作更加的规范,所以需要每次在git提交的时候,做一次硬性规范提交,规范git的提交信息使用commitizen规范git提交(交互式提交+自定义提示文案+Commit规范)安装依赖pnpminstall-Dcommitizencz-conventional-changelog@commitlint/config-conventional@commitlint/cli
- 项目中使用commitizen+commitlint规范提交
悟空Wukong95
安装相关依赖npminstallcommitizencz-customizable@commitlint/cli@commitlint/config-conventional-D版本号如下:{"@commitlint/cli":"^17.5.0","@commitlint/config-conventional":"^17.4.4","commitizen":"^4.3.0","cz-conven
- commitizen 代码提交规范
JumpChen
安装参考:代码提交规范参考mac执行gitcz时报错:Couldnotresolve/Users/picoasis/node_modules/cz-conventional-changelog.Cannotfindmodule'/Users/picoasis/node_modules/cz-conventional-changelog'检验安装成功之后执行echo'{"path":"cz-conv
- mtr Naming Conventions for Database Objects
i_need_job
Itispossibletoruntestcasesagainstaproductionserver.在生产服务器上运行测试用例是可能的。Thisisveryunlikelytohappenbyaccident,asmysql-test-run.plwillstartitsownserverunlessyouusethe--externEvenso,trytowritetestcasesinawa
- swift closure 与 oc block 转换
那个推车的人
有时候我们不会直接调用block或closure,而是将其保存到内存中延后使用。而此时,swift和oc之间相互调用则会出现问题。解决:情景1:swift的closure给oc调用将swift的closure定义前加上@convention(block),这样定义出的closure就是oc的block结构,可以传给oc调用。情景2:oc的block给closure调用oc里面是不会有情景1的方法,
- CSCA08H 计算机体系统介绍
后端
CSCA08HStyleRulesForassignmentsinthiscourse,youwillbemarkednotonlyonwhetheryourcodeworks,butalsoonstyle.Herearesomeguidelines.FormattingStyle1.UsePythonstyleconventionsforyourfunctionandvariablenames.
- vue3+vite+ts 配置commit强制码提交规范配置 commitlint
周家大小姐.
vue3.0前端
配置git提交时的commit信息,统一提交git提交规范安装命令:npminstall-gcommitizennpmicz-customizablenpmi@commitlint/config-conventional@commitlint/cli-D文件配置根路径创建文件commitlint.config.jsmodule.exports={//继承的规则extends:['@commitli
- Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
Code技术分享
.netcore
文章目录简介Asp.NetCore集成Panda.DynamicWebApi配置原理什么是POCOController?POCO控制器原理ControllerFeatureProvider实现自定义判断规则IApplicationModelConventionPanda.DynamicWebApi中的实现ConfigureApiExplorer()ConfigureSelector()Config
- git的奇特知识点
虫虫教父
git
展示帮助信息githelp-gThecommonGitguidesare:attributesDefiningattributesperpathcliGitcommand-lineinterfaceandconventionscore-tutorialAGitcoretutorialfordeveloperscvs-migrationGitforCVSusersdiffcoreTweakingdi
- ThinkPHP配置文件(五)
whiteMu
关于ThinkPHP的配置一共有七种,它们分别是默认配置,应用配置,扩展配置,场景配置,模块配置,动态配置,环境变量配置。一、默认配置默认配置的文件存在于thinkphp/convention.php二、应用配置1.在application文件夹的同级目录下插件conf文件夹2.在conf文件夹下创建config.php(文件名必须为config)3.config.php需要return一个数组4
- NetCoreAPI配置全局路由
游园惊梦、
.netcore
1:新增类:RouteConvention,继承自IApplicationModelConvention//////全局路由前缀配置///publicclassRouteConvention:IApplicationModelConvention{//////定义一个路由前缀变量///privatereadonlyAttributeRouteModel_centralPrefix;//////调用
- 环保口译词汇
浮海纪一朝
生物多样性公约ConventiononBiologicalDiversity防治荒漠化国际公约ConventiontoCombatDesertification气候变化框架公约UnitedNationsFrameworkConventiononClimateChange国家环境保护总局StateEnvironmentalProtectionAdministration(SEPA)坚持环境保护基本国
- Maven dependency中的scope
_江屿_
Mavenmaven
Maven的一个哲学是惯例优于配置(ConventionOverConfiguration),Maven默认的依赖配置项中,scope的默认值是compile。scope的分类compile(默认)含义:compile是默认值,如果没有指定scope值,该元素的默认值为compile。被依赖项目需要参与到当前项目的编译,测试,打包,运行等阶段。打包的时候通常会包含被依赖项目。providedpro
- C#高阶与初心:(二)P/Invoke平台调用
编程小世界
最近某个项目要采集交易终端的信息用于监管,主要厂商给出了API,C++版的。。。开启hard模式!!!C#调用C++的DLL基本就两种方法:加一个VC++项目包一层,或者使用P/Invoke(平台调用)。前者对于纯C#的客户端来说,增加了复杂性。那就只剩下平台调用了。使用平台调用的过程比较艰辛,主要遇到了两个问题:1、调用方式CallingConvention;2、参数类型;调用方式默认貌似Std
- Maven 依赖中 scope 详解
怪兽小朋友
前言Maven的哲学思想是,约定优于配置(ConventionOverConfiguration),Maven依赖中scope的默认值是compileScope指定了依赖(第三方jar包)的作用范围作用范围包括,所在项目的测试、编译、运行、打包等生命周期其中,编译和运行还分为测试代码的编译和运行非测试代码的编译和运行scope分类test测试范围测试范围的依赖(第三方jar包),针对测试相关代码的
- 使用struts2.5版本遇到的问题
en_reading
Javastruts2.0javaWeb项目
我的环境EclipseJavaEE|1.8JDK|Tomcat8.0|动态web项目3.1|struts2.5.2struts相关包我使用的是struts2.5.2版本,是目前的最新版本。需要的核心包如下:其实包是看你自己需要,比如struts2-convention-plugin-2.5.2.jar包是用来使用注解的,如果不使用注解(即@result@action等等),就没必要加这个包。有人用
- Python Django
wangyue4
pythondjango开发语言
Django是一个用于构建Web应用程序的高级PythonWeb框架。它遵循"Don'tRepeatYourself"(不要重复自己)和"ConventionoverConfiguration"(约定大于配置)的原则,以提高开发效率。以下是Django的一些主要特点和概念:MVC架构:Django遵循Model-View-Controller(MVC)或者更准确地说是Model-View-Temp
- 《在耶鲁精进》读书笔记-6
晓二爷
第6天#读书#20190714P21-P26《为世界上最好的机构工作》——对话耶鲁校产基金管理人大卫·斯文森【这篇文章其实是关于投资理念和建议的,目前看不太懂。不过最打动的是标题和最后一句话。一切都是最好的安排,出生在最好的家庭,来到最好的实验室,遇到最好的朋友和伴侣,走完最好的一生。随心所欲,一切随缘】《不寻常的成功》(UnconventionalSuccess)写给普通投资者的。我认为几乎所有
- FreeRTOS - TCB
王涛的专栏
FreeRTOSstm32mcu
FreeRTOS为了实现任务调度。首先就需要定义任务调度的数据结构,来保存任务堆栈结构、任务状态、任务ID、任务的优先级等信息。这些信息集中存放在Taskcontrolblock,即TCB,每个Task被分配唯一的TCB:TCB结构体定义。typedefstructtskTaskControlBlock/*Theoldnamingconventionisusedtopreventbreakingk
- go语言中的Mutex
ldxxxxll
golang开发语言后端
Golang以其并发性Goroutines而闻名。不仅是并发,还有更多。因此,在这种情况下,我们必须确保多个goroutines不应该同时试图修改资源,从而导致冲突。为了确保资源一次只能被一个goroutine访问,我们可以使用一个叫做sync.Mutex的东西。Thisconceptiscalledmutualexclusion,andtheconventionalnameforthedatas
- 开源项目Git Commit规范与ChangeLog
帐篷Li
开源社区建设开源gitelasticsearch
一,conventionalcommit(约定式提交)ConventionalCommits是一种用于给提交信息增加人机可读含义的规范。它提供了一组用于创建清晰的提交历史的简单规则。1.1作用自动化生成CHANGELOG基于提交类型,自动决定语义化的版本变更向项目相关合作开发者发送变更信心触发自动化构建和部署流程给开发者提供一个更加结构化的提交历史,便于减低对项目做贡献的难度1.2提交格式提交说明
- ThinkPHP3.2连接数据库的配置
慕斯-ing
ThinkPHP系列thinkphp后端
全局配置参考:在ThinkPHP3.2框架中,依次打开ThinkPHP——conf文件夹、接着打开conf文件夹下的convention.php文件,在这里可以对数据库连接进行配置。局部配置参考:进入application文件夹,创建common文件夹–conf–接着在conf文件夹下创建config.php文件,复制上述convention.php中的数据库连接配置信息在新建的config.ph
- SpringBoot简介
一瓶橄榄菜
javaspringbootspringbootjavaspring
SpringBoot第一部分SpringBoot应用相关概念约定优于配置约定优于配置(ConventionoverConfiguration),又称按约定编程,是一种软件设计规范。本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。例如在模型中存在一个名为User的类,那么对应到数据库会存在一个名为user的表,此时无需做额外的配置,只有在偏离这个约定时才需要做相关的配置(例
- SpringBoot笔记
橄榄菜
springbootjavaspring
SpringBoot第一部分SpringBoot应用相关概念约定优于配置约定优于配置(ConventionoverConfiguration),又称按约定编程,是一种软件设计规范。本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。例如在模型中存在一个名为User的类,那么对应到数据库会存在一个名为user的表,此时无需做额外的配置,只有在偏离这个约定时才需要做相关的配置(例
- tomcat基础与部署发布
暗黑小菠萝
Tomcat java web
从51cto搬家了,以后会更新在这里方便自己查看。
做项目一直用tomcat,都是配置到eclipse中使用,这几天有时间整理一下使用心得,有一些自己配置遇到的细节问题。
Tomcat:一个Servlets和JSP页面的容器,以提供网站服务。
一、Tomcat安装
安装方式:①运行.exe安装包
&n
- 网站架构发展的过程
ayaoxinchao
数据库应用服务器网站架构
1.初始阶段网站架构:应用程序、数据库、文件等资源在同一个服务器上
2.应用服务和数据服务分离:应用服务器、数据库服务器、文件服务器
3.使用缓存改善网站性能:为应用服务器提供本地缓存,但受限于应用服务器的内存容量,可以使用专门的缓存服务器,提供分布式缓存服务器架构
4.使用应用服务器集群改善网站的并发处理能力:使用负载均衡调度服务器,将来自客户端浏览器的访问请求分发到应用服务器集群中的任何
- [信息与安全]数据库的备份问题
comsci
数据库
如果你们建设的信息系统是采用中心-分支的模式,那么这里有一个问题
如果你的数据来自中心数据库,那么中心数据库如果出现故障,你的分支机构的数据如何保证安全呢?
是否应该在这种信息系统结构的基础上进行改造,容许分支机构的信息系统也备份一个中心数据库的文件呢?
&n
- 使用maven tomcat plugin插件debug关联源代码
商人shang
mavendebug查看源码tomcat-plugin
*首先需要配置好'''maven-tomcat7-plugin''',参见[[Maven开发Web项目]]的'''Tomcat'''部分。
*配置好后,在[[Eclipse]]中打开'''Debug Configurations'''界面,在'''Maven Build'''项下新建当前工程的调试。在'''Main'''选项卡中点击'''Browse Workspace...'''选择需要开发的
- 大访问量高并发
oloz
大访问量高并发
大访问量高并发的网站主要压力还是在于数据库的操作上,尽量避免频繁的请求数据库。下面简
要列出几点解决方案:
01、优化你的代码和查询语句,合理使用索引
02、使用缓存技术例如memcache、ecache将不经常变化的数据放入缓存之中
03、采用服务器集群、负载均衡分担大访问量高并发压力
04、数据读写分离
05、合理选用框架,合理架构(推荐分布式架构)。
- cache 服务器
小猪猪08
cache
Cache 即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。
1.Cache 是怎么样工作的?
Cache 是分配在服务器上
- mysql存储过程
香水浓
mysql
Description:插入大量测试数据
use xmpl;
drop procedure if exists mockup_test_data_sp;
create procedure mockup_test_data_sp(
in number_of_records int
)
begin
declare cnt int;
declare name varch
- CSS的class、id、css文件名的常用命名规则
agevs
JavaScriptUI框架Ajaxcss
CSS的class、id、css文件名的常用命名规则
(一)常用的CSS命名规则
头:header
内容:content/container
尾:footer
导航:nav
侧栏:sidebar
栏目:column
页面外围控制整体布局宽度:wrapper
左右中:left right
- 全局数据源
AILIKES
javatomcatmysqljdbcJNDI
实验目的:为了研究两个项目同时访问一个全局数据源的时候是创建了一个数据源对象,还是创建了两个数据源对象。
1:将diuid和mysql驱动包(druid-1.0.2.jar和mysql-connector-java-5.1.15.jar)copy至%TOMCAT_HOME%/lib下;2:配置数据源,将JNDI在%TOMCAT_HOME%/conf/context.xml中配置好,格式如下:&l
- MYSQL的随机查询的实现方法
baalwolf
mysql
MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,
- JAVA的getBytes()方法
bijian1013
javaeclipseunixOS
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样!
String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:
byte[] b_gbk = "
- AngularJS中操作Cookies
bijian1013
JavaScriptAngularJSCookies
如果你的应用足够大、足够复杂,那么你很快就会遇到这样一咱种情况:你需要在客户端存储一些状态信息,这些状态信息是跨session(会话)的。你可能还记得利用document.cookie接口直接操作纯文本cookie的痛苦经历。
幸运的是,这种方式已经一去不复返了,在所有现代浏览器中几乎
- [Maven学习笔记五]Maven聚合和继承特性
bit1129
maven
Maven聚合
在实际的项目中,一个项目通常会划分为多个模块,为了说明问题,以用户登陆这个小web应用为例。通常一个web应用分为三个模块:
1. 模型和数据持久化层user-core,
2. 业务逻辑层user-service以
3. web展现层user-web,
user-service依赖于user-core
user-web依赖于user-core和use
- 【JVM七】JVM知识点总结
bit1129
jvm
1. JVM运行模式
1.1 JVM运行时分为-server和-client两种模式,在32位机器上只有client模式的JVM。通常,64位的JVM默认都是使用server模式,因为server模式的JVM虽然启动慢点,但是,在运行过程,JVM会尽可能的进行优化
1.2 JVM分为三种字节码解释执行方式:mixed mode, interpret mode以及compiler
- linux下查看nginx、apache、mysql、php的编译参数
ronin47
在linux平台下的应用,最流行的莫过于nginx、apache、mysql、php几个。而这几个常用的应用,在手工编译完以后,在其他一些情况下(如:新增模块),往往想要查看当初都使用了那些参数进行的编译。这时候就可以利用以下方法查看。
1、nginx
[root@361way ~]# /App/nginx/sbin/nginx -V
nginx: nginx version: nginx/
- unity中运用Resources.Load的方法?
brotherlamp
unity视频unity资料unity自学unityunity教程
问:unity中运用Resources.Load的方法?
答:Resources.Load是unity本地动态加载资本所用的方法,也即是你想动态加载的时分才用到它,比方枪弹,特效,某些实时替换的图像什么的,主张此文件夹不要放太多东西,在打包的时分,它会独自把里边的一切东西都会集打包到一同,不论里边有没有你用的东西,所以大多数资本应该是自个建文件放置
1、unity实时替换的物体即是依据环境条件
- 线段树-入门
bylijinnan
java算法线段树
/**
* 线段树入门
* 问题:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次
* 以下代码建立的线段树用链表来保存,且树的叶子结点类似[i,i]
*
* 参考链接:http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18
* @author lijinna
- 全选与反选
chicony
全选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>全选与反选</title>
- vim一些简单记录
chenchao051
vim
mac在/usr/share/vim/vimrc linux在/etc/vimrc
1、问:后退键不能删除数据,不能往后退怎么办?
答:在vimrc中加入set backspace=2
2、问:如何控制tab键的缩进?
答:在vimrc中加入set tabstop=4 (任何
- Sublime Text 快捷键
daizj
快捷键sublime
[size=large][/size]Sublime Text快捷键:Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+V:粘贴并格式化Ctrl+D:选择单词,重复可增加选择下一个相同的单词Ctrl+L:选择行,重复可依次增加选择下一行Ctrl+Shift+L:
- php 引用(&)详解
dcj3sjt126com
PHP
在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 复制代码代码如下:
<?
$a="ABC";
$b =&$a;
echo
- SVN中trunk,branches,tags用法详解
dcj3sjt126com
SVN
Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。
- 对软件设计的思考
e200702084
设计模式数据结构算法ssh活动
软件设计的宏观与微观
软件开发是一种高智商的开发活动。一个优秀的软件设计人员不仅要从宏观上把握软件之间的开发,也要从微观上把握软件之间的开发。宏观上,可以应用面向对象设计,采用流行的SSH架构,采用web层,业务逻辑层,持久层分层架构。采用设计模式提供系统的健壮性和可维护性。微观上,对于一个类,甚至方法的调用,从计算机的角度模拟程序的运行情况。了解内存分配,参数传
- 同步、异步、阻塞、非阻塞
geeksun
非阻塞
同步、异步、阻塞、非阻塞这几个概念有时有点混淆,在此文试图解释一下。
同步:发出方法调用后,当没有返回结果,当前线程会一直在等待(阻塞)状态。
场景:打电话,营业厅窗口办业务、B/S架构的http请求-响应模式。
异步:方法调用后不立即返回结果,调用结果通过状态、通知或回调通知方法调用者或接收者。异步方法调用后,当前线程不会阻塞,会继续执行其他任务。
实现:
- Reverse SSH Tunnel 反向打洞實錄
hongtoushizi
ssh
實際的操作步驟:
# 首先,在客戶那理的機器下指令連回我們自己的 Server,並設定自己 Server 上的 12345 port 會對應到幾器上的 SSH port
ssh -NfR 12345:localhost:22
[email protected]
# 然後在 myhost 的機器上連自己的 12345 port,就可以連回在客戶那的機器
ssh localhost -p 1
- Hibernate中的缓存
Josh_Persistence
一级缓存Hiberante缓存查询缓存二级缓存
Hibernate中的缓存
一、Hiberante中常见的三大缓存:一级缓存,二级缓存和查询缓存。
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存是由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存
- 对象关系行为模式之延迟加载
home198979
PHP架构延迟加载
形象化设计模式实战 HELLO!架构
一、概念
Lazy Load:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。
延迟加载貌似很简单,就是在数据需要时再从数据库获取,减少数据库的消耗。但这其中还是有不少技巧的。
二、实现延迟加载
实现Lazy Load主要有四种方法:延迟初始化、虚
- xml 验证
pengfeicao521
xmlxml解析
有些字符,xml不能识别,用jdom或者dom4j解析的时候就报错
public static void testPattern() {
// 含有非法字符的串
String str = "Jamey친ÑԂ
- div设置半透明效果
spjich
css半透明
为div设置如下样式:
div{filter:alpha(Opacity=80);-moz-opacity:0.5;opacity: 0.5;}
说明:
1、filter:对win IE设置半透明滤镜效果,filter:alpha(Opacity=80)代表该对象80%半透明,火狐浏览器不认2、-moz-opaci
- 你真的了解单例模式么?
w574240966
java单例设计模式jvm
单例模式,很多初学者认为单例模式很简单,并且认为自己已经掌握了这种设计模式。但事实上,你真的了解单例模式了么。
一,单例模式的5中写法。(回字的四种写法,哈哈。)
1,懒汉式
(1)线程不安全的懒汉式
public cla