静态方法

静态代理&动态代理

大兔子大兔子 提交于 2020-04-01 07:55:56
原文地址:http://blog.csdn.net/partner4java/article/details/7048879 静态AOP和动态AOP。 静态代理: 代理对象与被代理对象必须实现同一个接口。 demo: package cn.partner4java.proxy.staticproxy; /** * 静态代理,统一接口 * @author partner4java * */ public interface IHello { /** * 可以带来的统一方法 * @param name */ public void hello(String name); } package cn.partner4java.proxy.staticproxy; /** * 被代理的对象,需要借助代理对象加入日志 * @author partner4java * */ public class HelloSpeaker implements IHello { public void hello(String name) { System.out.println( "Hello " + name); } } package cn.partner4java.proxy.staticproxy; /** * 代理对象,给被代理对象添加日志 */ public class HelloProxy

java 面向对象——进度1

孤人 提交于 2020-03-31 06:46:50
面向对象: 1,面向对象和面向过程思想。 面向对象强调的是对象实例。 面向过程强调的是动作。 对象将动作进行封装。 在问题领域中,我们先去找的都是涉及的对象, 然后分析对象的属性和行为。 2,面向对象的特点。 1,是一种常见思想。 2,复杂变简单。 3,执行者变指挥者。 举例:面试的例子。 3,类与对象的关系。 类:就是对事物的描述,其实类就是将对象共性的内容进行抽取。 对象:就是该类事物实实在在存在个体,在java中通过new来完成创建的, 堆内存的对象主要用于封装对象中的特有数据。 4,类中的成员: 成员变量:事物的属性, 成员函数:事物的行为。 成员变量和局部变量的区别? 答: 如何使用成员,只要建立该类对象,并通过 "对象.对象成员" 就可以完成调用 5,封装。 隐藏实现细节,并对外提供公共的访问方式。 函数或者类都是一个封装体。 特点: 1,隔离的变量。 2,便于使用。 3,提高复用。 4,提高安全性。 举例:机箱的例子 体现之一:私有。 私有在源代码中的使用就是在本类中有效。 通常会将成员变量xxx私有化,并对外提供对应的setXxx getXxx方法对其进行访问。 其实目的就是成员变量访问进行控制。 让成员的访问具备可控性,提高了程序的健壮性。 私有仅仅是封装的体现形式之一而已。 自定义一个Person类。动手。 6,构造函数。 写法特点: 1,函数名和类名相同。 2

静态库和动态库的区别

喜欢而已 提交于 2020-03-31 05:45:54
real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null 需要强制加载指定类 或 直接通过类名引用 linux中静态库和动态库的区别 一、不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。 二、相同 都是由*.o目标文件生成 ios 开发中 动态库 与静态库的区别 使用静态库的好处 1,模块化,分工合作 2

ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

*爱你&永不变心* 提交于 2020-03-31 02:53:57
原文: ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构 和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个 请求地址与某个物理目录之间的映射关系 ,而目标目录体现为一个FileProvider对象。当这个中间件接收到匹配的请求后,会根据请求地址解析出对应目录的相对路径,并利用这个FileProvider获取目录的内容。目录的内容最终会以一个HTML文档的形式被定义,而此HTML最终会被这个中间件作为响应的内容,“目录浏览器”的实现原理就这么简单。 [本文已经同步到《 ASP.NET Core框架揭秘 》之中] 目录 一、DirectoryBrowserMiddleware 二、DirectoryFormatter 三、具体请求处理逻辑 四、自定义DirectoryFormatter 一、DirectoryBrowserMiddleware 接下来我们来看看DirectoryBrowserMiddleware的定义。如下面的代码片段所示,DirectoryBrowserMiddleware的第二个构造函数具有四个参数,其中第二个参数是代表当前执行环境的HostingEnvironment

ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

江枫思渺然 提交于 2020-03-31 01:32:12
原文: ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构 和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个 请求地址与某个物理目录之间的映射关系 ,而目标目录体现为一个FileProvider对象。当这个中间件接收到匹配的请求后,会根据请求地址解析出对应目录的相对路径,并利用这个FileProvider获取目录的内容。目录的内容最终会以一个HTML文档的形式被定义,而此HTML最终会被这个中间件作为响应的内容,“目录浏览器”的实现原理就这么简单。 [本文已经同步到《 ASP.NET Core框架揭秘 》之中] 目录 一、DirectoryBrowserMiddleware 二、DirectoryFormatter 三、具体请求处理逻辑 四、自定义DirectoryFormatter 一、DirectoryBrowserMiddleware 接下来我们来看看DirectoryBrowserMiddleware的定义。如下面的代码片段所示,DirectoryBrowserMiddleware的第二个构造函数具有四个参数,其中第二个参数是代表当前执行环境的HostingEnvironment

Java多线程中static变量的使用

老子叫甜甜 提交于 2020-03-30 11:44:35
线程,是我们项目中绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以定义的概念,不是很容易让人一听就懂的概念。“一个类可以被多个线程安全调用就是线程安全的”《 Java 并发编程实践》。 来说说静态变量、实例变量、局部变量在多线程下的安全问题吧! (一)静态变量:线程非安全 1、静态变量:使用static关键字定义的变量。static可以修饰变量和方法,也有static静态代码块。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被 类的所有实例共享 。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 用public修饰的static成员变量和成员方法本质是 全局 变量和全局方法,当声明它的类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。 2、静态变量使用的场景: (1)对象间共享值时 (2)方便访问变量时 3、静态方法使用注意事项: (1)不能在静态方法内使用非静态变量,即不能直接访问所属类的实例变量; (2)不能在静态方法内直接调用非静态方法; (3)静态方法中不能使用this和super关键字; 4

类(二)的静态属性、类的方法、静态方法

冷暖自知 提交于 2020-03-30 02:00:44
一.类的静态属性 即是将类的函数属性,封装成类似数据属性。比如:类方法函数的返回值获取。通过:@proporty class Who(object): what = 'what' # brother = 'jack' def __init__(self,name,age,gender): self.name = name self.age = age self.gender =gender def information(self): print(self.name,self.age,self.gender) return self.name ##将函数增加一个返回值 p1 = Who('张三',18,'男') p1.information() ##实例化调用类的函数,有(),因为类的属性字典中存储的是函数的内存地址,调用需要加() print(Who.information) ##<function Who.information at 0x000002985CFFAA60> 运行结果:张三 18 男 ()+无返回值 :静态属性可以省去(),也可以获得返回值。 ##静态属性 class Who(object): what = 'what' # brother = 'jack' def __init__(self,name,age,gender): self.name = name

一大波静态方法

99封情书 提交于 2020-03-29 07:00:37
取本地assets目录下fonts路径下的字体资源 public static Typeface getTypeface(Context context) { Typeface face = Typeface.createFromAsset(context.getAssets(), "fonts/BOD_PSTC.TTF"); return face; } 新建一个popWindow public static PopupWindow createPopWindow(Context context, int layoutId) { View view = LayoutInflater.from(context).inflate(layoutId, null); PopupWindow pop = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); pop.setOutsideTouchable(false);// 点击外部退出 pop.setFocusable(true); pop.setBackgroundDrawable(new ColorDrawable(-00000));// 必须要这个,不然点击外部无效 pop.update();

C++中的自动存储、静态存储和动态存储

孤人 提交于 2020-03-28 07:10:27
根据用于分配内存的方法,C++中有3中管理数据内存的方式:自动存储、静态存储和动态存储(有时也叫做自由存储空间或堆)。在存在是间的长短方面,以这三种方式分配的数据对象各不相同。下面简要介绍这三种类型(注:C++11中新增了第四种类型——线程存储) 1.自动存储 在函数内部定义的常规变量使用自动存储空间,被称为自动变量(automatic variable),这意味着它们在所属的函数被调用时自动产生,在该函数结束时消亡。例如,挡在一个自定义的函数getname()中定义了一个temp数组时,temp数组仅当getname()函数活动时存在。当成许控制权回到main()时,temp使用的内存将自动被释放。如果getname()返回temp的地址,则main()中的name指针指向的内存将很快得到重新使用。这就是在getname()中使用new的原因之一。 实际上,自动变量是一个局部变量,其作用域为包含它的代码块。代码块是被包含在花括号中的一段代码。 自动变量通常存储在栈中。这意味着执行代码块时,其中的变量将依次加入到栈中,而在离开代码块时,将按相反的顺序释放着些变量,着被称为后进先出(LIFO)。因此,在程序执行过程中,栈将不断地增大和缩小。 2.静态存储 静态存储是整个程序执行期间都存在的存储方式。是变量称为静态的方式有两种:一种是在函数外面定义它

.NET中栈和堆的比较(四)

故事扮演 提交于 2020-03-28 05:59:28
终于翻完了第四篇,本来每次都是周末发的,可惜上周末有些事儿没忙过来,所以今天中午给补上来。不知道这套文章还能不能继续了,因为作者也只写到了第四篇,连他都不知道第五篇什么时候出得来... 原文出处 http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory_401282006141834PM/csharp_memory_4.aspx 可以参看该系列文章的前面部分内容: Part I http://agassi001.cnblogs.com/archive/2006/05/10/396574.html Part II http://agassi001.cnblogs.com/archive/2006/05/13/399080.html Part III http://www.cnblogs.com/agassi001/archive/2006/05/20/405018.html 尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection),但是我们还是应该了解它们,以优化我们的应用程序。同时,还需要具备一些基础的内存管理工作机制的知识,这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我们将深入理解垃圾回收器,还有如何利用静态类成员来使我们的应用程序更高效。 *