静态函数

Java学习笔记(面向对象上)

无人久伴 提交于 2019-12-09 19:11:05
面向对象(上) 面向对象的特点: 封装性 (是面向对象的核心思想,将对象的属性和行为封装起来)、 继承性 (主要描述类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展)和 多态性 (指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为,使得同一个属性和方法在不同的类中具有不同的语义。例如听到 cut时,理发师的行为是剪发,演员的行为是停止表演)。 一个类包含多个对象,比如动物类,包含对象有狗、狼、猫等等。 在程序中创建对象,首先需要定义一个类。类中可以定义成员变量(用于描述对象的特征)和成员方法(用于描述对象的行为)。 class Person{ int age = 23; //定义在类中的变量为成员变量 //定义speak()方法 void speak(){ int age = 30; //定义在方法中的变量为局部变量 System.out.println("我今年"+age+"岁!"); /*局部变量可以和成员变量同名,此时方法中通过变量名访问到的是局部变量*/ } } class Person{ int age; void speak(){ System.out.println("我今年"+age+"岁!"); } } public class Test { public

【深入浅出Node.js系列七】Connect模块解析

我怕爱的太早我们不能终老 提交于 2019-12-09 17:11:42
#0 系列目录# 深入浅出Node.js系列 【深入浅出Node.js系列一】什么是Node.js 【深入浅出Node.js系列二】Node.js&NPM的安装与配置 【深入浅出Node.js系列三】深入Node.js的模块机制 【深入浅出Node.js系列四】Node.js的事件机制 【深入浅出Node.js系列五】初探Node.js的异步I/O实现 【深入浅出Node.js系列六】Buffer那些事儿 【深入浅出Node.js系列七】Connect模块解析 #1 Connect模块背景# Node.js的愿望是成为一个能构建高速,可伸缩的网络应用的平台,它本身具有基于事件,异步,非阻塞,回调等特性,正是基于这样的一些特性,Node.js平台上的Web框架也具有不同于其他平台的一些特性,其中Connect是众多Web框架中的佼佼者。 Connect在它的官方介绍中,它是Node的一个中间件框架。超过18个捆绑的中间件和一些精选第三方中间件。尽管Connect可能不是性能最好的Node.jsWeb框架,但它却几乎是最为流行的Web框架。为何Connect能在众多框架中胜出,其原因不外乎有如下几个: 模型简单 中间件易于组合和插拔 中间件易于定制和优化 丰富的中间件 Connect自身十分简单, 其作用是基于Web服务器做中间件管理 。至于如何处理网络请求,

【转】uWSGI+django+nginx的工作原理流程与部署历程

五迷三道 提交于 2019-12-09 11:49:43
一、前言 献给和我一样懵懂中不断汲取知识,进步的人们。 霓虹闪烁,但人们真正需要的,只是一个可以照亮前路的烛光 二、必要的前提 2.1 准备知识 1.django 一个基于python的开源web框架,请确保自己熟悉它的框架目录结构。 2.uWSGI 一个基于自有的uwsgi协议、wsgi协议和http服务协议的web网关 3.nginx 常用高性能代理服务器 4.wsgi.py django项目携带的一个wsgi接口文件 如果项目名叫destiny的话,此文件就位于[destiny/destiny/wsgi.py] 2.2 相关资料 wsgi:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了; uwsgi:同WSGI一样是一种通信协议 uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。 uWSGI :一种python web server或称为Server/Gateway uWSGI类似tornadoweb或者flup,是一种python web server

千万级用户网站门户前端设计

不羁的心 提交于 2019-12-08 09:49:34
对于千万级的注册用户的门户项目是前端这块是怎么去实现的,自己在平常的工作中总结了一些经验,也是在不断的挫折中,不断演练的,希望总结出来给大家参考下,和大家一起探讨,一起进步。 一、门户设计一般会遇到哪些难点 (一)、首页打开时间太慢了 在开发一个门户到生产上线后,首页响应时间是检验门户整个系统架构以及开发的重要的一项指标,有时候我们发现在公司测试发现速度都挺快的,怎么到生产首页打开就慢了呢? (二)、页面加载不流畅,总感觉看着不舒服 因为门户一般都是偏向于内容和图片类资源比较多,但是我们打开自己的网页,有时候总感觉加载并不是按照我们期望的那样加载得到,顺其自然,总感觉看起来怪怪的。 (三)、希望用户缓存的地方未进行缓存 很多静态的前端资源,其实在系统未进行更新时候,第一次加载之后,希望缓存到用户的本地,但是因为缓存策略没搞好,经常未进行有效的缓存。 (四)、页面的头部尾部经常需要被第三方嵌入 因为作为一个比较大的门户站点,可能会让很多小的服务接入进来,但是头部和尾部因为是需要保持风格统一,所以经常需要被第三方进行嵌入。 (五)、代码没有进行有效的压缩,导致被窃取 因为作为门户站点,前端如果不进行加密的话,代码很容易被别人进行抄袭伪造,而且还很容易清楚里面的业务逻辑,从而很容易仿造和进行攻击。 (六)、增量静态资源发布 经常门户线上环境需要增加一点小功能

static函数与普通函数

五迷三道 提交于 2019-12-07 19:26:37
static全局变量与普通的全局变量: static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量: static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数: static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。 1、 全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。 1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。 定义全局静态变量的好处: 1) 不会被其他文件所访问,修改 2) 其他文件中可以使用相同名字的变量,不会发生冲突。 2、 局部静态变量 在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。 1)内存中的位置:静态存储区 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。 注:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置

Python中的静态方法?

天涯浪子 提交于 2019-12-07 10:18:30
Python中是否可以有无需初始化类即可调用的静态方法,例如: ClassName.static_method() #1楼 我认为 史蒂文实际上是对的 。 为了回答最初的问题,然后,为了建立一个类方法,只需假设第一个参数不会成为调用实例,然后确保仅从类中调用该方法。 (请注意,此答案是针对Python 3.x的。在Python 2.x中,您将在调用类本身的方法时遇到 TypeError 。) 例如: class Dog: count = 0 # this is a class variable dogs = [] # this is a class variable def __init__(self, name): self.name = name #self.name is an instance variable Dog.count += 1 Dog.dogs.append(name) def bark(self, n): # this is an instance method print("{} says: {}".format(self.name, "woof! " * n)) def rollCall(n): #this is implicitly a class method (see comments below) print("There are {} dogs

Python中的静态方法?

前提是你 提交于 2019-12-07 10:12:45
Python中是否可以有无需初始化类即可调用的静态方法,例如: ClassName.static_method() #1楼 我认为 史蒂文实际上是对的 。 为了回答最初的问题,然后,为了建立一个类方法,只需假设第一个参数不会成为调用实例,然后确保仅从类中调用该方法。 (请注意,此答案是针对Python 3.x的。在Python 2.x中,您将在调用类本身的方法时遇到 TypeError 。) 例如: class Dog: count = 0 # this is a class variable dogs = [] # this is a class variable def __init__(self, name): self.name = name #self.name is an instance variable Dog.count += 1 Dog.dogs.append(name) def bark(self, n): # this is an instance method print("{} says: {}".format(self.name, "woof! " * n)) def rollCall(n): #this is implicitly a class method (see comments below) print("There are {} dogs

关于static 关键字的总结

依然范特西╮ 提交于 2019-12-07 09:51:40
转发自:https://www.cnblogs.com/xrq730/p/4820992.html 前言 之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static。final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否有钻研精神。 静态变量和静态方法 static关键字最基本的用法是: 1、被static修饰的变量属于类变量,可以通过 类名.变量名 直接引用,而不需要new出一个类来 2、被static修饰的方法属于类方法,可以通过 类名.方法名 直接引用,而不需要new出一个类来 被static修饰的变量、被static修饰的方法统一属于类的 静态资源,是类实例之间共享的,换言之,一处变、处处变 。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人认为主要有三个好处: 1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了 2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办

条款2:尽量用而不用 [effective C++ 学习笔记]

﹥>﹥吖頭↗ 提交于 2019-12-07 08:18:32
简而言之,<stdio.h>这个属于C语言的头文件,在使用的时候,需要很明确所要操作变量的类型,这无疑会增加很多风险,因为一开始的时候,可能定义的这个属于int型,但是后期的需求变更或者异常的数据传入时,这个数据可能会变成double型,那么还需要在所有对这个变量的打印,输出,使用的地方做全面的排查,看这些文章这些都是显而易见的,只是对文章后面的话比较感兴趣.因为这是在平时不太注意的地方。 “ 第一,有些iostream的操作实现起来比相应的C stream效率要低” ,因为iostream 其实是对operator<< 和operator>>重载,按理来说应该大多数都应该会比C stream效率低,还没有比 C stream高的实例,这部分继续关注 “ 第二,在标准化的过程中,iostream库在底层做了很多修改,所以对那些要求最大可移植性的应用程序来说,会发现不同的厂商遵循标准的程度也不同“ 这主要是想说iostream在移植方面可能会存在很多风险,因为不同的平台有不同的标准,其实C Stream 对于研发者来说,确实使用起来不是很方面,对于现在 C++,C#,java其实都有很多的iostream流处理操作,对于开发者来说,可以很方便的使用,可以减少代码的开发量和复杂程度,但是所有的事情发展都有好的一面和不好的一面。在享有方便快捷的开发时,所要付出的代价就是跨平台移植

深入理解C++的动态绑定和静态绑定

老子叫甜甜 提交于 2019-12-07 07:28:52
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。 需要理解四个名词: 1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。 2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。 关于对象的静态类型和动态类型,看一个示例: class B { } class C : public B { } class D : public B { } D* pD = new D();//pD的静态类型是它声明的类型D*,动态类型也是D* B* pB = pD;//pB的静态类型是它声明的类型B*,动态类型是pB所指向的对象pD的类型D* C* pC = new C(); pB = pC;//pB的动态类型是可以更改的,现在它的动态类型是C* 3、静态绑定:绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。 4、动态绑定:绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期。 class B { void DoSomething(); virtual void vfun(); } class C : public B { void DoSomething();//首先说明一下,这个子类重新定义了父类的no