static

设计模式-单例模式JAVA实现

半世苍凉 提交于 2020-04-08 08:40:13
单例模式其实是一种面向底层的开发模式,业务里能用到的环境不是很多。这里权且以项目启动时获取仓库信息做示例。 一,饿汉模式,在项目一启动的时候就将所需要的对象实例化出来。虽然传说中可能会占用内存不一定会用到,但实际上写一个不会被用到的例的可能性极小,不过不排除一些业务类可能会因为业务的变更迁移而被废掉,这么看来还是有些道理的。 饿汉式的单例模式是线程安全的,因为在发起多线程之前这个对象就已经存在了 package Singleton; /** 单例模式,饿汉式 @author zhousjmas@hotmail.com */ public class WmsSingleton { //只在这里创建一次,是线程安全的 private static WmsSingleton singleton = new WmsSingleton(); private WmsSingleton() {} public static WmsSingleton getInstance() { System.out.println("获取对象前对象信息:"+singleton); return singleton; } } 一般的懒汉式不一定线程安全,所谓的线程安全,简略来讲只要你要对类的静态常量有修改的动作,那就可能会涉及到非线程安全 package Singleton; /** 单例模式,懒汉式

设计模式-单例模式JAVA实现

六月ゝ 毕业季﹏ 提交于 2020-04-08 08:38:26
单例模式其实是一种面向底层的开发模式,业务里能用到的环境不是很多。这里权且以项目启动时获取仓库信息做示例。 一,饿汉模式,在项目一启动的时候就将所需要的对象实例化出来。虽然传说中可能会占用内存不一定会用到,但实际上写一个不会被用到的例的可能性极小,不过不排除一些业务类可能会因为业务的变更迁移而被废掉,这么看来还是有些道理的。 饿汉式的单例模式是线程安全的,因为在发起多线程之前这个对象就已经存在了 package Singleton; /** 单例模式,饿汉式 @author zhousjmas@hotmail.com */ public class WmsSingleton { //只在这里创建一次,是线程安全的 private static WmsSingleton singleton = new WmsSingleton(); private WmsSingleton() {} public static WmsSingleton getInstance() { System.out.println("获取对象前对象信息:"+singleton); return singleton; } } 一般的懒汉式不一定线程安全,所谓的线程安全,简略来讲只要你要对类的静态常量有修改的动作,那就可能会涉及到非线程安全 package Singleton; /** 单例模式,懒汉式

设计模式-单例模式JAVA实现

杀马特。学长 韩版系。学妹 提交于 2020-04-08 08:38:04
单例模式其实是一种面向底层的开发模式,业务里能用到的环境不是很多。这里权且以项目启动时获取仓库信息做示例。 一,饿汉模式,在项目一启动的时候就将所需要的对象实例化出来。虽然传说中可能会占用内存不一定会用到,但实际上写一个不会被用到的例的可能性极小,不过不排除一些业务类可能会因为业务的变更迁移而被废掉,这么看来还是有些道理的。 饿汉式的单例模式是线程安全的,因为在发起多线程之前这个对象就已经存在了 package Singleton; /** 单例模式,饿汉式 @author zhousjmas@hotmail.com */ public class WmsSingleton { //只在这里创建一次,是线程安全的 private static WmsSingleton singleton = new WmsSingleton(); private WmsSingleton() {} public static WmsSingleton getInstance() { System.out.println("获取对象前对象信息:"+singleton); return singleton; } } 一般的懒汉式不一定线程安全,所谓的线程安全,简略来讲只要你要对类的静态常量有修改的动作,那就可能会涉及到非线程安全 package Singleton; /** 单例模式,懒汉式

Public;Private;static;private Static;Public Static详解

只愿长相守 提交于 2020-04-06 18:19:45
由于没有机会学着写大型的项目,也就很少详细分析 Public ;Private; static ;private Static ; Public Static 的使用方法。今天突然用到,脑袋顿时一片空白。经过两小时的查找资料,获得以下内容,特意贴出来,望对年轻的朋友有一定的帮助,也欢迎高手指出我的错误或遗漏。 Public :公有的。作用:用来声明公有变量或方法。即在声明该变量或方法的类以外可以引用的。 Private:私有的,作用:用来声明内部私有变量或方法。即在声明该变量或方法的类以外不可引用的。 Static :静态的,作用:用来声明使用该类直接调用的变量或方法。直接用该关键字(加 Public )后,无需实例化对象(注意:C#中规定静态变量只能通过类来获得。),就可在外部引用变量或方法。 下面使用示例解释: public class GetTime { public string Time() { return System.DateTime.Now.ToLongDateString(); } private string Time1() { return System.DateTime.Now.ToLongDateString(); } public static string Time2() { return System.DateTime.Now

[深入浅出系列]System.Environment

岁酱吖の 提交于 2020-04-06 03:00:22
一年前在我拜读Lippman的《 C# Primer 》一作的时候,有一句话深深地激励了我。原话差不多是这么说的,“要想成为C#方面的专家,至少得要精通Framework中的1000个类”,很明显我离这个数值还相差甚远,这不,“亡羊补牢,犹未晚也”,今天就拿一个比较简单的Environment类开刀。 如果说我把一篇文章搞成了MSDN的样子没有太多意义,因此我会在保持MSDN内容权威性的基础上,结合 Reflector 以及自己的一些使用心得来一窥它的奥秘,权当自娱自乐。 一、这个类是用来做什么的? Environment类主要是用来提供有关当前环境和平台的信息以及操作它们的方法。无法继承此类。 二、Environment类中的属性分别有什么用途,怎么实现的? CommandLine 【只读】获取该进程的命令行。 其实这和C++中的int main(int argc, char* argv[])中的char* argv[]比较像,因为argv[0]始终是可执行文件的路径或名称等,后面是具体的非空命令行参数。而在C#中 public static void Main(string[]args)中,这里的args默认Length是为0的,它不会把可执行文件的路径或名称放在第一个位置,只会存放非空的命令行参数。 它的具体实现是调用Win32 API GetCommandLine 。

C++单例模式

有些话、适合烂在心里 提交于 2020-04-06 02:37:05
单例模式是任何面向对象语言绕不过的,单例模式是很有必要的,接下来我用最朴素的语言来解释和记录单例模式的学习。 什么是单例模式? 单例模式就是一个类只能被实例化一次 ,更准确的说是 只能有一个实例化的对象的类。 创建一个单例模式的类(初想) 一个类只能有一个实例化的对象,那么这个类就要禁止别人new出来,或者通过直接定义一个对象出来 class CAR { public: CAR(){} ~CAR(){} }; CAR a; CAR *b = new CAR; 很明显这样的类可以被程序员用上面这两种方式实例化。那么考虑,如何禁止用上面的这两种方式实例化一个类呢? 如果把构造函数私有化,很明显上面这两种方法都会默认的去调用构造函数,当构造函数是private或者protected时,构造函数将无法从外部调用。 class CSingleton { private: CSingleton() { } }; int main() { CSingleton t; CSingleton *tt = new CSingleton; } 上面的代码选择了这样实例化类,很明显编译器会报错,因为私有化的构造函数无法被外部调用 error: ‘CSingleton::CSingleton()’ is private 既然构造函数是私有了,那么他就只能被类内部的成员函数调用

css 迷惑的position

笑着哭i 提交于 2020-04-05 19:38:47
迷惑的position 小加发现实际开发中position使用频率很高,但很多人却对position不是很了解,导致开发中出现各种问题,现在让我门一起来看看这个迷惑的position吧~ static 元素未定位,默认出现在普通流中,即元素从左到右,从上到下的方式布局~ HTML <div class="section"> <h3 class="section__title">Static - 普通流</h3> <div class="section__boxes row text-center"> <div class="header-box col-xs-12"> header box </div> <div class="left-box col-xs-4"> left box </div> <div class="right-box col-xs-8"> right box </div> <div class="bottom-box col-xs-12"> bottom box </div> </div> </div> CSS .section { margin-bottom: 100px; } .section__boxes { font-size: 22px; } .header-box { background-color: #0981B2; height:

Java常用关键字总结

筅森魡賤 提交于 2020-04-04 11:40:44
1、abstract   abstract修饰类,表示抽象的意思,抽象类可以含有非抽象变量和成员变量,也可以有普通方法和构造方法,但是不能被实例化(接口),但是可以被子类继承。 public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { ... }   abstract修饰方法,表示抽象方法,抽象方法必须位于抽象类中,并且不能有具体实现。 abstract public E get(int index); 2、break   break在switch中用于跳出switch块,停止switch向下穿透的现象。 case value:expression; break;   break在循环中用于跳出循环。 while(...){ ... break; }   break也可以在后面接标签,用来跳出一些嵌套比较复杂的循环中。 flag: for(...){ for(...){ break flag; } } 3、continue   continue用于在循环中跳过本次循环。 while(...){ ... continue; }   continue也可以在后面接标签,在一些嵌套比较复杂的循环中跳过一次循环。 flag: for(...){ for(...){

HttpRuntime类

和自甴很熟 提交于 2020-04-04 08:33:03
  HttpRuntime在ASP.NET处理请求中负责的是创建 HttpContext对象以及调用 HttpApplicationFactory创建HttpApplication。   其定义如下: public sealed class HttpRuntime { public HttpRuntime(); //获取 System.Web.HttpRuntime 所在的应用程序域的应用程序标识。 public static string AppDomainAppId { get; } //获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径。 public static string AppDomainAppPath { get; } //获取包含承载在当前应用程序域中的应用程序的目录的虚拟路径。 public static string AppDomainAppVirtualPath { get; } //获取 System.Web.HttpRuntime 实例所在应用程序域的域标识。 public static string AppDomainId { get; } //获取 ASP.NET 客户端脚本文件的文件夹路径。 public static string AspClientScriptPhysicalPath { get; } //获取 ASP.NET

c#关键字及ref和out

混江龙づ霸主 提交于 2020-04-03 23:41:47
最近在写程序时遇到ref,out 参数问题。回头有自习看了看MSDN,才有巩固了基础。我把我的测试程序贴出来,大家分享一下。 ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。传递到 ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化。这是out与ref的却别所在。 有点像,c++中的函数传递引用,和传递值。比较经典的程序是交换两个数。这里不在贴出代码。 using System; using System.Collections.Generic; public class MyClass { public static void Main() { /// 通过测试发现,基类型的参数,在没有用ref 的声明后,其值并没有改变,说明此函数中传递的是值。 /// 但是,当使用ref 参数是发现,其值发生了变化,说明在此函数中传递的是引用。 int x=100; ChangeTheNumber(ref x); Console.WriteLine(x.ToString()); ///通过测试发现,类的实例作为,参数,即使不用ref 参数,它的属性也发生了变化。那是因为,类的的实例,是一个引用。所以不用再使用ref了