静态函数

理解和运用Java中的Lambda

早过忘川 提交于 2020-02-09 19:05:35
前提 回想一下, JDK8 是2014年发布正式版的,到现在为( 2020-02-08 )止已经过去了5年多。 JDK8 引入的两个比较强大的新特性是 Lambda 表达式(下文的 Lambda 特指 JDK 提供的 Lambda )和 Stream ,这两个强大的特性让函数式编程在 Java 开发中发扬光大。这篇文章会从基本概念、使用方式、实现原理和实战场景等角度介绍 Lambda 的全貌,其中还会涉及一些函数式编程概念、 JVM 一些知识等等。 基本概念 下面介绍一些基本概念,一步一步引出 Lambda 的概念。 函数式接口 函数式接口和接口默认方法都是 JDK8 引入的新特性。函数式接口的概念可以从 java.lang.FunctionalInterface 注解的 API 注释中得知: An informative annotation type used to indicate that an interface type declaration is intended to be a functional interface as defined by the Java Language Specification. Conceptually, a functional interface has exactly one abstract method. Since {

Django——静态文件配置和连接数据库

微笑、不失礼 提交于 2020-02-08 20:23:10
一、静态文件 1.什么是静态文件 网站所使用的提前写好的,之后也不会再去改变的文件。 例如css,js,第三方组件:bootstrap等 2.static文件夹 专门用来存放静态文欧东件的,需要自己手动创建,文件内部通常是一下结构: static -css 网站所用到的所有的css文件 -js 网站所用到的所有的js文件 -image 网站所用到的所有的图片文件 第三方文件 3.静态文件配置 基本配置 STATIC_URL = '/static/' # 访问后端静态资源的接口前缀 默认情况下接口前缀名与静态文件名保持一致 """ <link rel="stylesheet" href="/xxx/bootstrap-3.3.7-dist/css/bootstrap.min.css"> 你要想访问后端的静态资源 你必须以接口前缀开头 后面跟上具体的文件路径 才能够访问到对应的资源 当你的接口前缀正确之后 会拿着后面的路径依次去下面列表中的每一个文件夹下查找对应的资源,顺序是从上往下依次查找 如果都没有找到才会报错 """ STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), # 这里的static才是你文件夹的路径 os.path.join(BASE_DIR,'static1'), os.path.join(BASE_DIR,

深入分析Java中的关键字static

馋奶兔 提交于 2020-02-08 11:57:15
在平时开发当中,我们经常会遇见static关键字。这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析。先给出这篇文章的大致脉络: 首先,描述了static关键字去修饰java类、方法、变量、代码块的方法 然后,从底层分析static关键字, 接下来,给出static的一些使用场景和案例 最后,对static进行一个总结,包括和普通变量的区分。 OK,开始今天的文章。 一、static关键字的基本用法 1、static关键字基本概念 我们可以一句话来概括:方便在没有创建对象的情况下来进行调用。 也就是说:被static关键字修饰的不需要创建对象去调用,直接根据类名就可以去访问。对于这个概念,下面根据static关键字的四个基本使用来描述。然后在下一部分再来去分析static的原理,希望你能认真读完。 2、static关键字修饰类 java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。下面看看如何使用。 如果没有用static修饰InterClass,则只能new 一个外部类实例。再通过外部实例创建内部类。 3、static关键字修饰方法 修饰方法的时候,其实跟类一样,可以直接通过类名来进行调用: 4、static关键字修饰变量 被static修饰的成员变量叫做静态变量

Java期末复习

天大地大妈咪最大 提交于 2020-02-08 05:00:13
类变量也叫静态变量,也就是在变量前加了static 的变量; 实例变量也叫对象变量,即没加static 的变量; 区别在于: 类变量和实例变量的区别在于:类变量是所有对象共有, 其中一个对象将它值改变,其他对象得到的就是改变后的结果; 而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象; 2. 在类中定义的成员变量如果你没有初始化java会自动帮你初始化, 如果是数字会自动初始化成0,字符会初始化成’o’,对象引用会初始化成null. 当然如果你定义的是局部变量就必须初始化了,否则编译会报错 这正是java的特点,极大的提高了代码安全性 3.定义方法p176(方法调用用栈) 访问修饰符 修饰符 返回值类型 方法名(){ 方法体 } 4.对象和类 区别:对象可以使用类中的方法和变量,而变量不行;变量声明之后要进行赋值,而对象不用 联系:类是封装对象的属性和行为的载体,而对象的属性以成员变量的形式存在。 对象的方法以成员方法的形式存在,在成员方法内定义的变量为局部变量。 变量:成员变量/类变量/数据域(静态变量(有static),实例变量),局部变量(在方法体中定义的变量) 局部变量必须先赋值再使用,成员变量有默认值 公共类必须与文件同名 源代码中的每个(※每个类)类(※编译后为。class)编译成.class文件 uml图+为public修饰符 p283

Java面向对象大致梳理

你。 提交于 2020-02-07 21:19:19
面向对象思想、 面向对象思想概述: Java设计语言面向对象: Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 类和对象: 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。 类与对象的关系 : 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。 面向对象之封装: 概述: 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

C++ static 字段

左心房为你撑大大i 提交于 2020-02-07 12:03:32
1 全局变量 全局变量申明之前冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 全局变量和静态全局变量相同点: 二者都存储在Data段。 全局变量(小)和静态全局变量(大)的作用域不同: 非静态全局变量 的作用域是 整个源程序 , 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 静态全局变量 的作用域是只在定义该变量的 源文件内有效 , 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2 局部变量 静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区。 3 函数 函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下: 静态函数只能在 声明它的文件 中可见,其他文件不能引用该函数 不同的文件可以使用相同名字的静态函数,互不影响 4 面向对象 A. 静态数据成员 在类内数据成员的声明前加上static关键字,该数据成员就是类内的静态数据成员。 其特点如下: 1)静态数据成员存储在全局数据区,静态数据成员在定义时分配存储空间,所以不能在类声明中定义。 2)静态数据成员是类的成员

静态联编和动态联编

北战南征 提交于 2020-02-07 06:48:38
转载自: http://blog.csdn.net/blucexi/article/details/1253265 联编 就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法: 静态联编 和 动态联编 。 静态联编 是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型,C语言中,所有的联编都是静态联编,据我所知道的,任何一种编译器都支持静态联编(废话)。 动态联编 是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定,动态联编对函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果。C++中一般情况下联编也是静态联编,但是一旦涉及到多态和虚拟函数就必须要使用动态联编了。下面将介绍一下多态。 多态 :字面的含义是具有多种形式或形态。C++多态有两种形式,动态多态和静态多态;动态多态是指一般的多态,是通过类继承和虚函数机制实现的多态;静态多态是通过模板来实现,因为这种多态实在编译时而非运行时,所以称为静态多态。 动态多态例子: #include

Java SE学习总结 Day (9)

雨燕双飞 提交于 2020-02-07 00:30:28
Day 09开篇: " 今天java基础主要学习了面向对象的匿名对象,封装,this关键字,stastic关键字,public static void main(String []args){}每个关键字的作用 等。 " 知识点反馈: 今天的知识点和每周总结思维导图 一.匿名对象: 1. 概念: 就是没有名字的实体,也就是说这个这个实体只存在了堆内存地址,并没有栈空间(就是没有名字的对象) 2. 匿名对象的用途: (1)当对象对方法只进行一次调用的时候,可以使用匿名对象进行简化 (为什么?因为匿名对象没有栈空间,所以只能使用一次,第二次使用一定会产生新的空间出来,如果你的方法被多次调用,且要求使用 的是同一个对象的时候,匿名就不合适了,他只适合这个对象一次性使用的时候。) (2)可以作为实际参数进行传递或者返回(前提是你对于这个对象的使用度只有一次的时候) 3. 匿名对象的好处: (1) 使用完毕就是垃圾,等着GC来回收 (2) 语法简洁,不需要创建对象 4. 匿名对象的缺点: 就是一次性使用的 二.封装: 1. 概念: 隐藏内部实现细节,提供对外的公共访问方式;一般来说,一个即将被作为对象的类,它里面所有的属性都应该是被私有化的。 2. 封装好处: (1)隐藏了内部实现细节 (2)提高了代码的安全性 (3)相对来说,简化了代码检验程度 3.private关键字:

C++ 模板何时被实例化

匆匆过客 提交于 2020-02-06 05:30:07
今天编程时碰到一个问题,写了一个单例的类模板,之前程序一直能跑,但今天使用了其中一个函数时却报错。后续查错,发现是自己忘记写结束符号了。 这就引出我知识点的不足了——之前为啥能跑正常?错误一只存在,为啥总是能编译通过?类中的函数何时才被实例化?类何时实例化?实例化的类是不是所有的函数都同时被实例化? 整理和理解网上资料后获得如下总结: 1. 在我们使用类模板时,只有当代码中使用了类模板的一个实例的名字,而且上下文环境要求必须存在类的定义时,这个类模板才被实例化。   1.1声明一个类模板的指针和引用,不会引起类模板的实例化,因为没有必要知道该类的定义 。   1.2 定义一个类类型的对象时需要该类的定义,因此类模板会被实例化 。   1.3 在使用sizeof()时,它是计算对象的大小,编译器必须根据类型将其实例化出来,所以类模板被实例化 .   1.4 new表达式要求类模板被实例化。   1.5 引用类模板的成员会导致类模板被编译器实例化。   1.6 需要注意的是,类模板的成员函数本身也是一个模板。标准C++要求这样的成员函数只有在被调用或者取地址的时候,才被实例化。 用来实例化成员函数的类型,就是其成员函数要调用的那个类对象的类型 总结1很好的解释了为啥我的程序在调用特定的成员函数时才会报错。 不过上面的介绍还是比较笼统,还有很多的细节点需要注意到,从网上转载如下:转载链接

数据结构中的数组——静态数组类的创建

扶醉桌前 提交于 2020-02-06 04:05:23
1,顺序存储线性表两个问题: 1,当做数组误用; 2,效率有隐患; 2,本文解决第一个功能上的问题,创建一个数组类代替顺序存储结构中的数组访问操作符; 3,本文目标: 1,完成 Array 类的具体实现; 2,完成 StaticArray 类的具体实现,替代原生数组; 4,需求分析: 1,创建数组类代替原生数组的使用; 1,数组类包含长度信息; 2,数组类能够主动发现越界访问; 5,Array 设计要点: 1,抽象类模板,存储空间的位置和大小由子类完成; 2,重载数组操作符,判断访问下标是否合法(满足上面第二点,且满足原生数组访问操作); 3,提供数组长度的抽象访问函数(满足上面第一点); 4,提供数组对象间的复制操作(附加的功能); 6,Array 类的声明; 7,Array 数组抽象类实现: 1 #ifndef ARRAY_H 2 #define ARRAY_H 3 4 #include "Object.h" 5 #include "Exception.h" 6 7 namespace DTLib 8 { 9 10 template <typename T> 11 class Array : public Object 12 { 13 protected: 14    T* m_array; 15 16 public: 17 virtual bool set(int i,