静态函数

面向对象

杀马特。学长 韩版系。学妹 提交于 2020-03-04 10:24:25
面向对象 1、面向对象的理解   面向对象(Object Oriented)是一种程序设计的思想。   说面向对象之前,我们先来说说面向过程。来最经典的例子,把大象放进冰箱,1、打开冰箱。2、把大象放进去。3、关上冰箱。嗯,看着很合理,但是需要增加一些新的需求,比如大象放进冰箱以前先转个圈、放进去以后只关一半冰箱门、不放大象了放狮子等等一系列需求时,就需要把代码都捋一遍,再去改逻辑,这样的需求越来越多,那么代码就会越来越乱,难以维护。   于是就诞生了面向对象思想,一切皆对象。我们再用面向对象的思想去看上面的问题,可以拆成两个对象,大象和冰箱,冰箱负责开门关门,大象负责进冰箱,这样以后有新需求或者需求变更,我们只用关心具体的对象。   下面说一下面向对象的三个基本特征是:封装、继承、多态。 2、封装   通过上面的例子我们已经简单的用过封装了,将原本复杂混乱的逻辑,封装成一个个对象。每个对象只做自己的事情。再结合上面的例子,冰箱负责开门,你正常开也行,转个圈开也行,你最后只要把门打开就行;大象负责进冰箱,你跳着进走着进,最后你只要在冰箱里面就行。还有我们经常用的U盘,我们不用管它内部是怎么实现的,只需要用它提供的USB接口就行。   2.1 封装的理解   封装(Encapsulation)指一种实现细节部份包装、隐藏起来的方法。封装是为了防止对实现细节的访问

Python__面向对象

丶灬走出姿态 提交于 2020-03-02 13:05:44
1、面向对象的基本知识 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装、继承和多态 2、类的成员 类的成员可以分为三大类:字段、方法和属性:         1、字段:普通字段、静态字段;         2、方法:普通方法、类方法、静态方法;         3、属性:普通属性 2.1、字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段 属于 对象 静态字段 属于 类 class Province: # 静态字段 country ='中国' def __init__(self, name): # 普通字段 self.name = name # 直接访问普通字段 obj = Province('河北省') print(obj.name) # 直接访问静态字段 print(Province.country) print(obj.country) 静态字段在内存中只保存一份 普通字段在每个对象中都要保存一份 2.2、方法 方法包括:普通方法、静态方法和类方法,三种方法在 内存中都归属于类 ,区别在于调用方式不同。 普通方法

java基础知识

拜拜、爱过 提交于 2020-03-01 22:47:55
1.final 关键字主要用在三个地方:变量、方法、类。 对于一个 final 变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 当用 final 修饰一个类时,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。 使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义; 2.static 关键字主要有以下四种使用场景? 修饰成员变量和成员方法: 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。调用格式:类名.静态变量名 类名.静态方法名() 静态代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次. 静态内部类(static修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2.

jQuery的其他静态方法

ⅰ亾dé卋堺 提交于 2020-03-01 22:01:27
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>11-jQuery中的其他静态方法</title> <script src="../js/jquery-3.4.1.js"></script> <script> /* var str=" Inj "; var res= $.trim(str); console.log("===="+str+"====="); console.log("===="+res+"=====");*/ //trim去除字符串两端的空格 //参数:需要去除空的字符串 //返回值:去除空格之后的字符串 //数组 var arr=[1,3,5,7,9]; //伪数组 var arrlike={0:1,1:3,2:5,3:7,4:9,length:5}; //对象 var obj={"name":"Inj",age:"33"}; var fn=function(){}; var w=window; var res= $.isWindow(w); /* console.log(res);*/ var res1=$.isArray(arrlike); /* console.log(res1);*/ var res2=$.isFunction(jQuery); console.log

静态编译、动态编译、静态链接库和动态链接库理解

社会主义新天地 提交于 2020-03-01 15:15:34
1.静态编译:编译器在编译可执行文件时,把需要用到的对应动态链接库(.so或.ilb)中的部分提取出来,链接到可执行文件中去, 使可执行文件在运行时不需要依赖于动态链接库. 2.动态编译: 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一 方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接 库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文 件就不能运行。 静态编译: 静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。 动态编译: 动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时 候需要相应的dll文件支持。 动态链接库: 创建一个动态链接库,会生成x.dll,x.lib 动态链接库有两种加载方式: 1.一种是静态加载,就是在编译的时候就载入动态链接库。此种方法可调用类方法. 可执行程序静态加载动态链接库需要三个文件 x.dll, x.lib, x.h 可执行程序的头文件加入: #include "x.h" #pragma comment(lib,"x.lib") 编译时还要附加库目录

Flask驱动的静态站点生成器(译)

孤街醉人 提交于 2020-03-01 11:51:34
{% include JB/setup %} 翻译自: Dead easy yet powerful static website generator with Flask 纯意译……以下是正文,和jekyll很像的感觉,哈?34行代码完成一个静态站点生成器。 我想将我的在线身份统合到一个单独的托管地方很久了,因此有了你现在浏览的这个网站。我也寻找一个静态网站架构有段时间了,尝试了许多但一个也不中意。这真令人沮丧。 然后遇到 Armin Ronacher的这个tweet : <blockquote class="twitter-tweet tw-align-center"> <p>Frozen-Flask is really, really useful. Should have used that earlier.</p>— Armin Ronacher (@mitsuhiko) <a href="https://twitter.com/mitsuhiko/status/166570613295689728" data-datetime="2012-02-06T17:15:03+00:00">February 6, 2012</a> </blockquote> Armin 是 Flask 这个Python微框架的作者,我喜欢flask的简洁。所以这个tweet一个机灵

linux中fork后堆、栈、静态全局、文件描述符中哪些是可以共享的?

﹥>﹥吖頭↗ 提交于 2020-03-01 05:39:08
int pid = fork();之后父进程pid返回非0,子进程pid返回0. 对于执行fork之前的一些变量总结如下: 当父进程调用fork()创建子进程之后,下列哪些变量在子进程中修改之后,父进程里也会相应地作出改动? A.全局变量 函数体外变量 B.局部变量 函数体内变量 C.静态变量 static修饰 D.文件指针 文件描述符 E.一般变量指针 堆上动态分配内存 只有D文件指针也就是文件描述符会发生改变,因为文件描述符存在于系统中为所有进程所共享,close也要父子进程都关一次才能最终官关闭。 来源: CSDN 作者: lsxa123 链接: https://blog.csdn.net/lsxa123/article/details/104582025

关于静态资源打包后的相对路径问题

半世苍凉 提交于 2020-03-01 03:49:51
将多个静态资源打包为单个资源以减少请求数目,是提高页面加载速度的常用手段。于是上个星期,我就在实现网站静态资源的自动打包功能,原以为是个比较简单的问题,实现起来也没有遇到什么障碍,不过在开发完毕投入使用的时候却让我跌了下眼镜。由于静态资源在打包以后,它们的访问路径势必会改变,这样其他一些依赖于原有路径的资源就访问不到了。这方面最常见的例子,便是CSS样式表中引用的图片路径是相对于CSS文件路径的。当意识到这个问题以后,还真是让人手忙脚乱了一把。 例如,有一个描述对话框组件的CSS文件,它的原有访问路径为/styles/dialog/core.css,其中有行样式表为url(header.png),这意味这幅图片的访问路径为/styles/dialog/header.png。同样,在另一个文件/styles/menu/core.css中也有url(bg.png)这样的代码。那么好,如果我们将这两个文件打包在一起,叫做/packed/styles/dialog-menu.css,那么浏览器就会去加载/packed/styles下的header.png和bg.png,为什么?因为url(…)这段代码,在打包后出现的位置就不同了。 解决这个问题似乎有多种办法,例如将资源文件复制到/packed/styles下面,但这就要处理文件重名的问题。如果使用组件化开发的方式

静态和非静态初始化代码块有什么区别

有些话、适合烂在心里 提交于 2020-02-29 22:19:06
我的问题是关于static关键字的一种特殊用法。 可以使用 static 关键字覆盖不属于任何函数的类中的代码块。 例如,以下代码编译: public class Test { private static final int a; static { a = 5; doSomething(a); } private static int doSomething(int x) { return (x+5); } } 如果删除 static 关键字,则会抱怨,因为变量 a 是 final 。 但是,可以同时删除 final 和 static 关键字并进行编译。 这两种方式都使我感到困惑。 我应该如何拥有不属于任何方法的代码段? 如何调用它? 通常,此用法的目的是什么? 或者更好的是,在哪里可以找到有关此文件的文档? #1楼 当开发人员使用初始化程序块时,Java编译器会将初始化程序复制到当前类的每个构造函数中。 例: 以下代码: class MyClass { private int myField = 3; { myField = myField + 2; //myField is worth 5 for all instance } public MyClass() { myField = myField * 4; //myField is worth 20 for all

[C] linux静态链接库与动态链接库详解

半城伤御伤魂 提交于 2020-02-29 16:25:11
一顺便说说了哦 通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file).程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为"libxxx.a"的形式. 其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime).这就是如雷贯耳的动态链接库(dynamic link library)技术. 二动态链接库的特点与优势 首先让我们来看一下,把库函数推迟到程序运行时期载入的好处: 1.可以实现进程之间的资源共享。 什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个C标准库的代码段. 2.将一些程序升级变得简单。用户只需要升级动态链接库,而无需重新编译链接其他原有的代码就可以完成整个程序的升级。Windows 就是一个很好的例子。 3