静态函数

《Effective Java第二版》总结

一世执手 提交于 2019-11-28 07:14:21
第1条:考虑用静态工厂方法代替构造器 通常我们会使用 构造方法 来实例化一个对象,例如: // 对象定义 public class Student{ // 姓名 private String name; // 性别 private String sex; public Student(String name,String sex){ this.name = name; this.sex = sex; } } // 实例化对象 Student student = neew Student("MarkLogZhu","男"); 然后我们采用 静态工厂方法 实例化对象: // 对象定义 public class Student{ // 姓名 private String name; // 性别 private String sex; private Student(String name,String sex){ this.name = name; this.sex = sex; } public static Student getMaleStudent(String name){ return new Student(name,"男"); } } // 实例化对象 Student student = Student.getMaleStudent("MarkLogZhu");

C++基础学习5

有些话、适合烂在心里 提交于 2019-11-28 07:12:18
9类和对象进一步 9.1构造函数 如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化。 但是,如果数据成员是私有的,或者类中有private或protected的成员, 就不能用这种方法初始化。 class Time {public : //声明为公用成员 hour; minute; sec; }; Time t1={14,56,30}; //将t1初始化为14:56:30 构造函数的作用 构造函数的名字必须与类名同名,构造函数没有返回值,因此也不需要在定义构造函数时声明类型, 以便编译系统能识别它并把它作为构造函数处理。 在类内定义构造函数,也可以只在类内对构造函数进行声明而在类外定义构造函数。 构造函数不需用户调用,也不能被用户调用。 带参数的构造函数 构造函数首部的一般格式为构造函数名(类型 1 形参1,类型2 形参2, …) 定义对象的一般格式为 类名 对象名(实参1,实参2, …); #include <iostream> using namespace std; class Box {public : Box(int,int,int);//形参由定义对象时给出 int volume( ); private : int height; int width; int length; }; //声明带参数的构造函数//声明计算体积的函数 Box::Box

C++ 静态存储动态存储

為{幸葍}努か 提交于 2019-11-28 06:40:42
首先,我们可以把程序所占的内存空间分为三个部分:(可以根据静态资源区、栈区、堆区来划分) 静态存储:程序运行期间由系统分配固定得到存储空间(栈); 动态存储:开发者根据自身需要进行动态分配的存储空间(堆)。 静态储存典型的就是我们函数内部的形参、局部变量,在函数得到生命周期结束之后,这些变量所占的内存也会被释放掉。 eg: int* StackMemory() { int stackmemory; int* stackptr = nullptr; stackptr = &stackmemory; printf("ptr1=%d", stackptr); return stackptr; } StackMemory函数的调用结束后,StackMemory所占的内存也会相应的释放。 如果我们此时使用StackMemory返回给我们的指针所指的地址是不安全的。 void main() { int* stackprt; stackprt = StackMemory(); *stackprt = 100; printf("ptr2=%d", stackprt); } 想要StackMemory返回的地址是安全的,这里就要用到动态分配存储空间,用一个新函数Dynamic。 int* Dynamic() { //(int*)malloc(4);也可以 int* dy = new int(10);

Java 中的动态代理

不问归期 提交于 2019-11-28 06:14:11
一、概述 1. 什么是代理   我们大家都知道微商代理,简单地说就是代替厂家卖商品,厂家“委托”代理为其销售商品。关于微商代理,首先我们从他们那里买东西时通常不知道背后的厂家究竟是谁,也就是说,“委托者”对我们来说是不可见的;其次,微商代理主要以朋友圈的人为目标客户,这就相当于为厂家做了一次对客户群体的“过滤”。我们把微商代理和厂家进一步抽象,前者可抽象为代理类,后者可抽象为委托类(被代理类)。通过使用代理,通常有两个优点,并且能够分别与我们提到的微商代理的两个特点对应起来:   优点一:可以隐藏委托类(被代理类)的实现;   优点二:可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。 2. 静态代理   若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。 下面我们用Vendor类代表生产厂家,BusinessAgent类代表微商代理,来介绍下静态代理的简单实现,委托类和代理类都实现了Sell接口,Sell接口的定义如下: public interface Sell { void sell(); void ad(); }   Vendor类的定义如下: public class Vendor

静态变量、全局变量和局部变量

霸气de小男生 提交于 2019-11-28 06:03:28
1.从作用域看: C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量。 2>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。 3>局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。 4>静态全局变量也具有全局作用域, 它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。 2.从分配内存空间看: 1> 全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间 2>全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同

成员变量、类变量、局部变量的区别

ぃ、小莉子 提交于 2019-11-28 06:01:44
变量名首写字母使用小写,如果由多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。 如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this [java] view plain copy class People { String name = "类体重定义的name"; //类中的成员变量并赋值 People(){ } public void speak() { String name = "类体方法中定义的name"; //在方法speak中定义和成员变量名字相同的name并赋值 System.out.println(name); System.out.println( this.name); //通过this来访问类中的成员变量 } } public class TestThis { //源文件中只能有一个类是public类,并且源文件的名字必须与这个类的名字完全相同,如 //果没有public类,那么源文件的名字只要和某个类的名字相同就可以了。 public static void main(String[] args) { People myPeople = new People(); myPeople.speak(); } } 输出结果: 成员变量和局部变量的区别 成员变量: 1、成员变量定义在类中,在整个类中都可以被访问。

C语言中static extern的使用

ⅰ亾dé卋堺 提交于 2019-11-28 01:32:28
10:30:22 2019-08-20 基础不牢 瞬间爆炸 参考资料: https://blog.csdn.net/ts_54eagle/article/details/4418627 https://blog.csdn.net/xingjiarong/article/details/47656339 https://blog.csdn.net/xingjiarong/article/details/47656339 看看C Primer Plus上是怎么定义的 先说说作用域 分为4种:块作用域 函数作用域 函数原型作用域 文件作用域 这里要说明的是 块作用域指{}之间的部分 而函数作用域单单指goto标签 当goto标签出现在函数内部时 goto标签作用域蔓延至整个函数 函数原型作用域从形参定义到原型声明结束为止 文件作用域指的是 该文件 该文件 该文件 从变量定义到文件末尾都可见 链接分为3种:外部链接 内部链接 无链接 (决定了是否能被外部文件使用) 块作用域 函数作用域 函数原型作用域的变量 都属于无链接 文件作用域的变量 可以属于外部链接 也可属于内部链接 内部链接的文件作用域 称为 文件作用域(只能在该文件内部使用) 外部链接的文件作用域 称为 全局作用域(整个程序都可使用) 一个具有文件作用域的变量默认是具有全局作用域的 在前面加上static变为具有文件作用域

剑指offer之面试题2:实现Singleton模式

与世无争的帅哥 提交于 2019-11-27 21:53:27
来源:剑指offer 这篇主要记录《剑指offer》书籍中的面试题2:实现Singleton模式 使用语言:C# 代码环境:VS2017 总共有5中解法,从前往后依次优化。 结构如下: 前言 这里先给出调用程序的代码 Program.cs class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); //Task.Run(() => //{ // Console.WriteLine(Singleton1.Instance); //}); //Task.Run(() => //{ // Console.WriteLine(Singleton1.Instance); //}); //Task.Run(() => //{ // Console.WriteLine(Singleton2.Instance); //}); //Task.Run(() => //{ // Console.WriteLine(Singleton2.Instance); //}); //Task.Run(() => //{ // Console.WriteLine(Singleton3.Instance); //}); //Task.Run(() => //{ // Console.WriteLine

Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02

对着背影说爱祢 提交于 2019-11-27 21:03:40
目录  创建项目后的文件夹配置 静态文件配置 接口前缀动态绑定 form表单回顾 根据请求方式的不同,返回前端不同的信息 pycharm 连接MYSQL数据库 Django 连接MYSQL数据库的配置 Django的ORM 什么是ORM? Django 对表操作 models中写建表的类 数据库的迁移命令 表字段的增删改查 模型表数据的增删改查  查 增 改 删除  创建项目后的文件夹配置 用pycharm >settings创建项目时可以自定义一个app名,帮你自动创建一个应用,并自动创建template文件夹, 查看配置INSTALLED_APPS没有自动添加新建的app,如果没有手动添加,TEMPLATES列表的“DIRS”如果没有添加templates文件夹的路径,手动添加一下。 登录功能 1.路由 l(r'^login/', views.login) ,访问如果不加斜杠,内部自动重定向加斜杠的路由 所有的 2.所有前端渲染出来的浏览器页面,都是在后端写好的html文件,这些文件默认都写在templates文件夹; 3.所有的静态文件(css,js,前端第三方类库)默认都放在static文件夹下 html页面引入外部资源的方式 1) cdn 2) 本地 静态文件配置 静态文件配置,暴露给外界能够访问服务器静态文件夹下面所有的资源 STATIC_URL = '/static/

关于页面静态化

最后都变了- 提交于 2019-11-27 19:38:38
页面静态化 页面静态化就是将页面模版和数据通过技术手段将二者合二为一,生成一个html网页文件 页面静态化也是网站性能优化的一个方向之一,其他的网站优化比如:缓存、分布式分散请求、数据库读写分离等 页面静态化的优势/劣势 访问速度加快,不需要或者减少去访问数据库的频率,使用缓存浏览器直接加载渲染html网页即可 爬虫或者搜索引擎更喜欢静态的页面(容易被命中) 安全、稳定 随着时间的推移或者产品的升级,静态化产生的页面日渐增多,需要的容积不可小觑 大致了解静态化技术 制作模版 + 获取模版数据 -----经过页面静态化-------> 生成html,存放到文件系统中 -------->一般使用Nginx的静态代理向外提供服务 目前静态化页面都是通过模板引擎来生成的,而来保存到Nginx来部署,常用的模版引擎如: Freemarker(比较熟悉) Thymeleaf(了解) Velocity(不明白,不清楚,不晓得!) 这里我们就对前两种模板引擎做一个简单的介绍吧,第三种以后遇到再做补充 Freemarker模版引擎 Freemarker入门 首先freemarker得入个门吧,看看以前的学习笔记: https://www.cnblogs.com/msi-chen/p/10970856.html 基于模版文件静态化 这种方式