static

单例模式

雨燕双飞 提交于 2020-03-08 10:35:39
单例模式 作用:保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象 应用场景: 1.资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。 2.控制资源的情况下,方便资源之间的互相通信。如线程池等。 3.设备管理器,系统中可能有多个设备,但是只有一个设备管理器,用于管理设备驱动; 基础要点: 全局只有一个实例:static 特性,同时禁止用户自己声明并定义实例(把构造函数设为 private) 线程安全 禁止赋值和拷贝 用户通过接口获取实例:使用 static 类成员函数 实现方式: 1.有缺陷的懒汉式: 懒汉式(Lazy-Initialization)的方法是直到使用时才实例化对象,也就说直到调用get_instance() 方法的时候才 new 一个单例的对象。好处是如果被调用就不会占用内存。 class Singleton { private : Singleton ( ) { std :: cout << "constructor called!" << std :: endl ; } Singleton ( Singleton & ) = delete ; Singleton & operator = ( const Singleton & ) = delete ; static Singleton * m

实现单例模式的几种方法

淺唱寂寞╮ 提交于 2020-03-08 04:33:21
单例模式(singleton): 某些类在进程的运行过程,只需要一个对象,不允许创建多个对象出来 如何写单例模式: 1.饿汉模式——一开始就创建好对象 class Singleton { private static Singleton instance = new Singleton ( ) ; private Singleton ( ) { } public static Singleton getInstance ( ) { return instance ; } } 2.懒汉模式——用到时再创建对象 1)线程不安全的懒汉模式 public class Singleton { private static Singleton instance ; private Singleton ( ) { } public static Singleton getInstance ( ) { if ( instance == null ) { instance = new Singleton ( ) ; } return instance ; } } 多线程时,线程不安全。——加锁,将方法加锁 2)双重锁的懒汉模式 class Singleton { private static volatile Singleton instance = null ; private Singleton

每日刷题总结

橙三吉。 提交于 2020-03-08 03:57:49
1.根据以下代码段,下列说法中正确的是(C) public class Parent { private void m1 ( ) { } void m2 ( ) { } protected void m3 ( ) { } public static void m4 ( ) { } } A.子类中一定能够继承和覆盖Parent类的m1方法 B.子类中一定能够继承和覆盖Parent类的m2方法 C.子类中一定能够继承和覆盖Parent类的m3方法 D.子类中一定能够继承和覆盖Parent类的m4方法 解析: 通过继承,子类可以拥有所有父类对其可见的方法和域 A.私有方法只能在本类中可见,故不能继承,A错误 B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误 C.保护修饰符凡是继承自该类的子类都能访问,当然可被继承覆盖;C正确 D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误 子父类可能不在同一个包中 2.given the following code,what will be the output?(A) class Value { public int i = 15 ; } public class Test { public static void main ( String argv [ ] ) { Test t =

关于工具类static静态方法调用@Autowired注入的service类问题

假如想象 提交于 2020-03-07 21:26:25
参考链接: https://www.cnblogs.com/chenfeng1122/p/6270217.html //用@PostConstruct注解 @Component public class Test { private static UserService userService; @Autowired private UserService userService2; @PostConstruct public void beforeInit() { userService = userService2; } public static void test() { userService.test(); } } 来源: CSDN 作者: zongmaomx 链接: https://blog.csdn.net/zongmaomx/article/details/104717708

设计模式——单例模式

≡放荡痞女 提交于 2020-03-07 04:14:59
关于单例模式,这是面试时最容易遇到的问题。当时以为很简单的内容,深挖一下,也可以关联出类加载、序列化等知识。 饿汉式 我们先来看看基本的饿汉式写法: public class Hungry { private static final Hungry instance = new Hungry(); private Hungry() {} public Hungry getInstance() { return instance; } } 优点:写法简答,不需要考虑多线程等问题。 缺点:如果该实例从未被用到的话,相当于资源浪费。 static 代码块 我们也可以用 static 代码块的方式,实现饿汉式: public class Hungry { private static final Hungry instance; static { instance = new Hungry(); } private Hungry() {} public Hungry getInstance() { return instance; } } 这就是利用了 static 代码块的功能: 它是随着类的加载而执行,只执行一次,并优先于主函数。 懒汉式 我们先来看看基本的懒汉式写法: public class Lazy { private static volatile Lazy instance;

vue - 源码探究 vue-cli 2 中 '/static'目录和 '/src/assert'目录区别

蹲街弑〆低调 提交于 2020-03-06 17:50:05
vue-cli 官方对 - 静态资源的介绍 这里 vue cli 3 里面也大同小异,3 只是把 static 改成了 public 文章目录 # 指定 - 输出目录: /dist # 指定 - 静态资源文件名:static # 拷贝 - /static目录 到 /dist/static目录 结论:关于 /static 目录 # 指定:编译后的名字(或者目录) # url-loadder 的 limit 属性 # 结论:关于 /src/assets 目录 # 官方建议【推荐:star::star::star:】 我们都知道 在 vue-cli2 中 /static - 放不需要“编译”的文件 ,因为最终会被复制到 /dist/static 目录 。 如:放图片、视频、字体… /src/assert - 放需要“编译”的文件 如:放 js、css、vue、图片(需要压缩或转换格式) 但源码怎么做到的呢?下面看下一 # 指定 - 输出目录: /dist 默认是 输出到 /src/dist 目录下 (看下图) 输出目录,看 webpack 的 output path ,其值来自 config.build.assetsRoot (下图) config 在 /config 目录下指定 (下图)最终,就是 /dist # 指定 - 静态资源文件名:static 在看 /static 目录

数值方法完全主元素消元法解线性方程组

瘦欲@ 提交于 2020-03-06 16:28:35
原题排序成这样就行了 本程序是排成这样,和列主元素方法结合一下 import java . util . Scanner ; public class Gauss { static final int MAXN = 20 ; static double a [ ] [ ] = new double [ MAXN ] [ MAXN ] ; static double b [ ] [ ] = new double [ 2 ] [ MAXN ] ; //我想多了,这里用一维数组就好 static int num ; static int x_max ; static int y_max ; public static void main ( String [ ] args ) { System . out . println ( "输入未知数个数:" ) ; Scanner sc = new Scanner ( System . in ) ; num = sc . nextInt ( ) ; System . out . println ( "输入用矩阵表示的线性方程组:" ) ; for ( int i = 0 ; i < num ; i ++ ) { //输入方程组 for ( int j = 0 ; j <= num ; j ++ ) { a [ i ] [ j ] = sc .

【Java】第四十二节 线程池

痞子三分冷 提交于 2020-03-06 14:03:08
一、为什么要用线程池 1、提高程序的执行效率 如果程序中有大量短时间任务的线程任务,由于创建和销毁线程需要和底层操作系统交互,大量时间都耗费在创建和销毁线程上,因而比较浪费时间,系统效率很低;线程池里的每一个线程任务结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用,因而借助线程池可以提高程序的执行效率。 2、控制线程的数量,防止程序崩溃 如果不加限制地创建和启动线程很容易造成程序崩溃,比如高并发1000W个线程,JVM就需要有保存1000W个线程的空间,这样极易出现内存溢出;线程池中线程数量是一定的,可以有效避免出现内存溢出。 二、常用方法 在JDK5之前,必须手动才能实现线程池,从JDK5开始新增了一个Executors工厂类,通过该工厂类可以实现线程池,该类有如下常用方法: public static ExecutorService newFixedThreadPool(int nThreads) :创建一个可重用的、具有固定线程数的线程池 public static ExecutorService newCachedThreadPool() :创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中 public static ExecutorService newSingleThreadExecutor()

C语言中static关键字的作用

 ̄綄美尐妖づ 提交于 2020-03-06 12:36:37
static用法: 在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c.该变量在本文件内从定义开始到文件结束可见。 2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下: a.该变量在全局数据区分配内存。 b.它始终驻留在全局数据区,直到程序运行结束。 c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。 # include <stdio.h> void fn ( void ) { int n = 10 ; printf ( "n=%d\n" , n ) ; n ++ ; printf ( "n++=%d\n" , n ) ; } void fn_static ( void ) { static int n = 10 ; printf ( "static n=%d\n" , n ) ; n ++ ; printf ( "n++=%d\n" , n ) ; } int main ( void ) { fn ( ) ; printf ( "--------------------\n" ) ; fn_static ( ) ; printf (

第九章

拈花ヽ惹草 提交于 2020-03-06 09:34:54
1、单独编译 自己的头文件里可放的内容: 函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数 对于自己写的头文件要双引号包含文件名,则编译器将首先查找当前的工作目录或源代码目录;当文件名包含在间括号中,则编译器将在标准头文件的主机系统的文件系统中查找。 在同一文件中只能将同一头文件包含一次。 C/C++中有基于预处理编译指令#ifndef(if not defined) #ifndef COORDIN_H …… #endif //代码的含义为当以前没有使用预处理编译指令#define定义名称COORDIN_H时,才处理#ifndef和#endif之间的语句。 2、存储持续性、作用域和链接性 存储: 自动存储持续性:在函数定义中声明的变量,在程序开始时被创建,在执行完函数或代码时,内存被释放。 //无链接性 静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变量,他们在整个运行过程中都存在。 //在代码块内的使用关键字static,无链接性;在代码块外没有使用关键字static,有外部链接性;在代码快外,使用了关键字static,有内部链接特性 线程存储持续性: 使用关键字thread_local声明的,其生命周期与所述的线程一样长。 动态存储持续性:用new运算符分配的内存将一直存在