静态函数

C++第三次作业static

六月ゝ 毕业季﹏ 提交于 2019-11-30 17:04:12
c++的static static对于C++的数据共享有着非常重要的作用。 在类中申明的static数据是从属于类而不是对象,也就是说所有的对象都拥有共同该数据信息: #include<iostream> using namespace std; class Point { public: Point(int xx = 0, int yy = 0) { X = xx; Y = yy; countP ++; } Point(Point &p); ~Point() { countP --; } int GetX() { return X; } int GetY() { return Y; } void GetC() { cout << "Object id = " << countP << endl; } //输出静态数据成员 private: int X, Y; static int countP; //静态数据成员声明,用于记录点的个数 }; Point :: Point(Point &p) { X = p.X; Y = p.Y; countP ++; //在构造函数中对countP累加,所有对象共同维护同一个countP } int Point :: countP = 0; //静态数据成员定义和初始化,使用类名限定 int main() { Point A(4, 5); //

静态函数成员

此生再无相见时 提交于 2019-11-30 17:02:12
静态函数成员 静态成员函数可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象。 例: class A{ public: static void f(A,a); private: int x; }; void A::f(A,a){ cout<<x; //对x的引用是错误的 cout<<a.x; //正确 } 具体事例: #include "pch.h" #include <iostream> using namespace std; class point { //Point 类定义 public: // 外部接口 point(int x = 0, int y = 0) :x(x), y(y) { //构造函数 //在构造函数中对count累加,所有对象共同维护同一个count count++; } point(point &p) { //复制构造函数 x = p.x; y = p.y; } ~point() { count--; } int getx() { return x; } int gety() { return y; } static void showcount() { //静态函数成员 cout << "obiect count=" << count << endl; } private: //私有数据成员 int x, y; static int

类的静态成员

霸气de小男生 提交于 2019-11-30 16:48:34
类的静态成员 面向对象的设计方法兼容数据的保护和共享,静态成员的提出是为了解决不同对象之间数据共享问题的。例如要统计人员个数,出现次数等等都需要用到静态处理。静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括静态数据成员和静态成员函数)。 首先我们要搞懂 静态变量生存的周期 静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。基于这个类的所有对象只有一个静态成员变量的拷贝,所以一个函数结束时,静态变量仍然在内存中的静态存储区里保存,直到脚本结束才会被注销。 1.静态数据成员 如果我们需要面向对象中“类属性”,这个属性为整个类拥有,不属于其中某一个对象,从而体现了整个类的数据共享。此时我们就用用static声明静态成员。 由于静态数据成员不属于任何一个对象,我么可以用类名对他进行访问,一般用法是 类名::标识符 ,但是在类中也要进行定义性声明。 类的静态数据成员需要类之外定义是因为要单独给他们分配空间。 例如书上5-4中具有静态成员的point类 #include<iostream> using namespace std; class point { public: point(int x=0,int y=0):x(x),y(y){ count++; } point(point &p); ~point()

C++中的static的作用

时光总嘲笑我的痴心妄想 提交于 2019-11-30 16:18:36
C++中的static的作用 C++中的关键字static,顾名思义表示静止,静态,下面是C++中static的一些常见应用 一,作用于函数内部的局部变量 局部作用域静态变量的特点:当一个函数返回后,下一次再调用时,该变量还会保持上一回的值,函数内部的静态变量只开辟一次空间,且不会因为多次调用产生副本,也不会因为函数返回而失效 例如: 如果我想实现fun()函数功能:在函数内部定义count计数器,打印出每次调用它的次数,你可能会这样写,如下 #include<iostream> using namespace std; void fun() { int count = 0;//不加关键字static count++; cout << "count=" << count << endl; } int main() { cout << "Calling the “fun()”for the first time! " << endl; fun(); cout << "Calling the “fun()”for the second time! " << endl; fun(); return 0; } 我们预计结果为: 第一次调用,打印出结果 1 第二次调用,打印出结果 2 我们试着运行后,结果并不是我们想要的,如下图: 两次运行结果都是1,这是为什么呢,原来是每次调用函数结束后

038 商品详情02-----页面静态化

╄→гoц情女王★ 提交于 2019-11-30 16:13:14
1.简介 (1)问题分析 现在, 我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端 。在后台需要大量的数据查询,而后渲染得到HTML页面。会对数据库造成压力,并且请求的响应时间过长,并发能力不高。 大家能想到什么办法来解决这个问题? 首先我们能想到的就是缓存技术,比如之前学习过的Redis。不过Redis适合数据规模比较小的情况。假如数据量比较大,例如我们的商品详情页。每个页面如果10kb,100万商品,就是10GB空间,对内存占用比较大。此时就给缓存系统带来极大压力,如果缓存崩溃,接下来倒霉的就是数据库了。 所以缓存并不是万能的,某些场景需要其它技术来解决,比如静态化。 (2) 什么是静态化 静态化是指把动态生成的HTML页面变为静态内容保存,以后用户的请求到来,直接访问静态页面,不再经过服务的渲染。 而静态的HTML页面可以部署在nginx中,从而大大提高并发能力,减小tomcat压力。 (3) 如何实现静态化 目前,静态化页面都是通过模板引擎来生成,而后保存到nginx服务器来部署。常用的模板引擎比如: Freemarker Velocity Thymeleaf 我们之前就使用的Thymeleaf,来渲染html返回给用户。Thymeleaf除了可以把渲染结果写入Response,也可以写到本地文件,从而实现静态化。 2. Thymeleaf实现静态化 (1)概念

JAVA基础

♀尐吖头ヾ 提交于 2019-11-30 16:10:32
语法部分 1.java的技术结构:JAVASE JAVAEE JAVAME 2.Java的跨平台:基于JVM---java语言是跨平台的,JVM不跨平台。 3. 入门程序: 类名和 java文件名不一定一致 : class文件名和类名对应。(java、javac两个指令) 4. 关键字: 53个---goto,const---2个保留字 5. 标识符:由字母、数字、 _、$组成,数字不能开头,不能使用关键字,见名知意。 6. 注释:单行 //、多行/* */、文档/** */,文档注释一般用来标识类和方法---注释的作用:解释说明程序、排错 7. 进制:开头标识: 2进制以0b开头,8进制以0开头,16进制以0x开头。 byte b = 00010000;---报错(这是一个八进制的) 01111111->177 8.变量:先声明后使用,先赋值后操作 9. 数据类型:基本数据类型( byte short int long float double char boolean)、引用数据类型(类、接口、数组) A.byte的取值范围:-128-127; B. 整数默认是 int类型,小数默认是double类型 C.float需要以F/f结尾,long需要有一个L/l结尾 D. 科学计数法: dobule d = 3.2e4;32000 double d = 0x8p3;64 10

乐优商城项目总结day(14)

白昼怎懂夜的黑 提交于 2019-11-30 16:08:12
乐优商城项目总结day(14) 页面静态化 问题分析 如果使用前端ajax异步加载数据渲染的方式,不利于浏览器的搜索引擎检索,会对页面的seo造成影响。因此可以采用服务端渲染的方式,在服务端获取数据并生成动态页面返回。 如果,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端。那么在后台就需要大量的数据查询,而后渲染得到HTML页面。会对数据库造成压力,并且请求的响应时间过长,并发能力不高。 解决方案 首先我们能想到的就是缓存技术,比如Redis。不过Redis适合数据规模比较小的情况。假如数据量比较大,例如我们的商品详情页。每个页面如果10kb,100万商品,就是10GB空间,对内存占用比较大。此时就给缓存系统带来极大压力,如果缓存崩溃,接下来倒霉的就是数据库了。 所以缓存并不是万能的,某些场景需要其它技术来解决,比如静态化。 什么是静态化 静态化是指把动态生成的HTML页面变为静态内容保存,以后用户的请求到来,直接访问静态页面,不再经过服务的渲染。 而静态的HTML页面可以部署在nginx中,从而大大提高并发能力,减小tomcat压力。 如何实现静态化 目前,静态化页面都是通过模板引擎来生成,而后保存到nginx服务器来部署。常用的模板引擎比如: Freemarker Velocity Thymeleaf 我们之前就使用的Thymeleaf,来渲染html返回给用户

静态编译、动态编译、静态链接库、动态链接库

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

C++——局部变量、全局变量、静态变量与动态对象的性质(转载)

半城伤御伤魂 提交于 2019-11-30 13:38:35
原文: https://blog.csdn.net/u013921430/article/details/79279114 概述 局部变量 在一个函数内部定义的变量(包括函数形参),它只在本函数范围内有效 ,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的,这种类型的变量就称为“局部变量”。 局部变量存储在栈内存,在函数结束后自动销毁。 全局变量 在函数体外定义的变量,可以为本源文件中其它函数所公 用,有效范围为从定义变量的位置开始到本源文件结束,这种类型的变量就称为“全局变量”。全局 变量存储在静态存储区域(静态内存) 。 全局变量可以被同一工程项目中其他文件用extern声明后调用,对其每次进行修改都会被保存。 静态变量 静态全局变量 静态全局变量就是在原先的全局变量前面加上了static进行修饰。 静态全局变量依然存储在静态存储区。跟全局变量最大的不同在于,静态全局变量不能被其他源文件使用,只能被本源文件使用 ,对其每次进行修改都会被保存。 静态局部变量 静态局部变量就是在原先的局部变量前面加上了static进行修饰。 静态局部变量是静态变量因此存储在静态存储区内 ,等到整个程序结束才会被销毁。但是它的作用域依然在函数体内部。但是自从静态局部变量被定义后,每次对其进行修改都会被保存下来。 动态对象 动态对象是程序运行时分配的对象

uwsgi模块

江枫思渺然 提交于 2019-11-30 13:32:57
导论 wsgi 全称web server gateway interface,wsgi不是服务器,也不是python模块,只是一种协议,描述web server如何和web application通信的规则。 运行在wsgi上的web框架有bottle,flask,django uwsgi 和wsgi一样是通信协议,是uWSGI服务器的单独协议,用于定义传输信息的类型,是一个web服务器,实现了WSGI协议,uwsgi协议。 nginx web服务器,更加安全,更好的处理处理静态资源,缓存功能,负载均衡,因此nginx的强劲性能,配合uWSGI服务器会更加安全,性能有保障。 django 高级的python web框架,用于快速开发,解决web开发的大部分麻烦,程序员可以更专注业务逻辑,无须重新造轮子 单机启动django项目,性能低,默认使用wsgiref模块,性能低的wsgi协议 python3 manager.py runserver 0.0.0.0:8000 > wsgiref模块中 高并发启动django,django是没有这个功能的,而uWSGI模块,遵循uwsgi协议,支持多进程处理django请求 uwsgi 通过他,启动你的django,而不再是python3 manager.py runserver 0.0.0.0:8000 公司中一般用 nginx +