静态方法

[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

学习Java的第四周

心不动则不痛 提交于 2020-02-29 14:19:29
学习Java的第四周 修饰符 接口 内部类 Object类 修饰符 static关键字 1)静态与实例的区别: (1)实例属性是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响到其他对象。 (2)静态属性是整个类共同持有的共享空间(一份),任何对象修改,都会影响其他对象。 2)静态的概念: (1)静态(static)可以修饰属性和方法。 (2)static可以修饰属性和方法,称为静态属性(类属性)、静态方法(类方法)。 (3)静态成员是全类所有对象共享的成员。 (4)在全类中只有一份,不因创建多个对象而产生多份。 (5)访问静态属性和方法时,不必创建对象,可以直接“类名.属性名/方法名”访问。 3)静态的特点: (1)静态方法允许访问静态成员。 (2)静态方法不能访问非静态成员。 (3)静态方法不允许使用this或是super关键字。 (4)静态方法可以继承,不能重写,没有多态。 类加载 1)JVM首次使用某个类时,将该类的.class文件加载到内存中,进行保存。 2)加载时机: (1)创建对象。 (2)创建子类对象。 (3)访问静态属性。 (4)调用静态方法。 (5)Class.forName(“全限定名”); 3)静态代码块: 类加载时,触发静态代码块的执行(仅一次)。 执行地位:静态属性初始化之后。 作用:可为静态属性赋值,或必要的初始行为。 4)总结: (1

静态分析基础技术

孤街浪徒 提交于 2020-02-29 09:25:23
1、使用反病毒软件来确认程序样本的恶意性 在分析一个可疑的恶意代码样本时,第一步就最好是拿多个反病毒软件扫描下这个文件,看是否有哪个引擎已经能够识别它。反病毒软件是不完美的,它们主要依靠一个已知恶意代码可识别片断的特征数据库,以及基于行为与模式匹配的分析(启发式检测),来识别可疑文件。 一些罕见的恶意代码通常也不会被反病毒软件所识别,因为它们并不在病毒库里。最后,启发式检测,尽管经常也能成功地识别出一些未知恶意代码,但仍然可以被一些新型独特的恶意代码所绕过。 VirusTotal( http://www.virustotal.com ),可调用多个反病毒引擎来进行扫描。 2、哈希值:恶意代码的指纹 哈希是一种用来唯一标识恶意代码的常用方法。 将哈希值作为标签使用 与其他分析师分享哈希值,以帮助他们来识别恶意代码 在线搜索这段哈希值,看看这个文件是否已经被识别 3、查找字符串 使用的工具strings 4、加壳与混淆恶意代码 查壳工具:PEID PE 文件以一个文件头开始,其中包括代码信息、应用程序类型、所需的库函数与空间要求。PE头中的信息对于恶意代码分析师而言,是非常有价值的。 5、链接库与函数 代码库可以被静态链接,也可以运行时链接,或者动态链接。了解代码库如何被链接的,对于我们理解恶意代码来说,是非常关键的,因为我们在PE文件头中可以找到的信息取决于链接了哪些代码库。 6

UML静态视图——类图、对象图、包图

雨燕双飞 提交于 2020-02-29 05:40:42
绘画类的最重要的图是抽象类。让我们回顾一下类的基本内容。 一、分类 1、类的概念: 面向对象编程的类是一个基本概念。类是具有相同特性的、办法、集合语义和一组对象的关系。 2、类分类: 实体类:保存要放进永久存储的信息 边界类:位于系统与外界的交界处。 包含全部的窗口、报表、打印机等硬件接口以及与其它系统的接口。 控制类:负责协调其它类的工作。一般每一个用例都有一个控制类。 3、类的表达方式: 二、类图 类图是我们最经常使用的一种图,类图更直观的使我们了解一个系统的体系结构,类图通过图形化的方式描写叙述了系统的设计部分。 类图能够从它的构成、可见性、范围、抽象类、多重性、属性和操作充分理解。 画类图的步骤: (1)、抽象出类 (2)、确定类的属性和方法,对于方法的确定,要找到它的运行者 (3)、确定类与类之间的联系 类图的用途: (1)、对系统的词汇建模 (2)、对简单协作建模 (3)、对逻辑数据库模式建模 三、包图 包图用于描写叙述系统给的分层结构。是包和包之间的关系构成。它是维护和控制系统整体结构的重要建模工具。 包的作用:——逻辑上把一个复杂的图模块化 ——组织源码 包中的元素:类、接口、构件、用例、其它包等 若包被撤销。则当中的元素也被撤销了 包与包之间的关系:泛化、细化、依赖(经常使用) 常见问题: 避免循环依赖产生 測试时能够以包为測试单位

第 4 章 对象与类

安稳与你 提交于 2020-02-28 22:25:49
目录 4.1 面向对象程序设计概述 4.1.2 对象,93 4.1.4 类之间的关系,94 4.2 使用预定义类 4.2.2 Java 类库中的 LocalDate 类,98 4.3 用户自定义类 4.3.1 Employee 类,103 4.3.2 多个源文件使用,105 4.3.4 构造器,106 4.3.5 隐式参数与显式参数,108 4.3.8 私有方法,111 4.4 静态域与静态方法 4.4.1 静态域,112 4.4.2 静态常量,113 4.4.3 静态方法,114 4.4.4 工厂方法,115 4.4.5 main 方法,115 4.5 方法参数,118 4.6 对象构造 4.6.2 默认域初始化,123 4.6.3 无参数的构造器,124 4.6.4 显式域初始化,125 4.6.5 参数名,125 4.6.6 调用另一个构造器,126 4.6.7 初始化块,127 4.7 包,131 4.10 类设计技巧,144 4.1 面向对象程序设计概述 4.1.2 对象,93 对象的行为(behavior)—— 方法 对象的状态(state)—— 域 对象标识(identity)—— 实例 4.1.4 类之间的关系,94 依赖(“uses-a”) 组合(“has-a”) 继承(“is-a”) 4.2 使用预定义类 4.2.2 Java 类库中的 LocalDate 类

单例模式

痴心易碎 提交于 2020-02-28 19:51:24
这篇文章中我会用8种写法来对单例模式进行优化,以达到最完美的效果 但是说实话在平常我们进行代码编写的时候用不着那么完美 单例模式 什么是单例模式? 简单的说就是只能new出来一个实例 第一种写法 饿汉式:   优点:简单实用   缺点:不论该对象是否会被用到,都提前将对象实例化 1.首先我们创建出一个静态的不可更改的变量Instance 2.我们将该类的构造方法的权限设置为private,防止其他类new对象 3.设置该对象的get方法 1 /** 2 * 饿汉式 3 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 4 * (JVM保证每一个class只会露到内存一次,那么static变量在class露到内存之后马上进行初始化,所以static变量也保证初始化这一次) 5 * 简单实用,推荐使用 6 * 唯一缺点:不管用到与否,类加载时就完成实例化 7 */ 8 public class Mgr01 { 9 private static final Mgr01 Instance = new Mgr01(); 10 11 private Mgr01(){} 12 13 public static Mgr01 getInstance(){return Instance;} 14 15 public static void main(String[] args) { 16 /*

线程中断的方法以及静态方法isInterrupted和实例方法interrupted的区别

早过忘川 提交于 2020-02-28 18:46:51
线程中断 常见的有以下两种方式: 通过共享的标记来进行沟通 调用 interrupt() 方法来通知 通过共享的标记来实现中断 就是创建一个boolean类型的变量来控制循环是否进行,就是一个标记。 代码如下: /** * 描述:标记法中断线程 */ public class ThreadDemo { private static class MyRunnable implements Runnable { public volatile boolean isQuit = false ; @Override public void run ( ) { while ( ! isQuit ) { //当标记为true时就中断了线程 try { Thread . sleep ( 1000 ) ; } catch ( InterruptedException e ) { e . printStackTrace ( ) ; } } } } public static void main ( String [ ] args ) throws InterruptedException { MyRunnable target = new MyRunnable ( ) ; Thread thread = new Thread ( target , "1" ) ; thread . start ( )

day36_tomcat丶servlet入门

只愿长相守 提交于 2020-02-28 16:57:55
web相关概念回顾 软件架构 常见的软件结构有下面2种 Client/Server 客户端/服务器端 简称C/S 特点: 在用户本地有一个客户端程序,在远程有一个服务器端程序 如:QQ,迅雷...等等 优点: 用户体验好 缺点: 开发、安装,部署,维护 麻烦 Browser/Server 浏览器/服务器端 简称B/S 特点: 只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序 优点: 开发、安装,部署,维护 简单 缺点: 如果应用过大,用户的体验可能会受到影响 对硬件要求过高 BS架构详解 客户端访问服务端,访问的是服务端的网络资源。网络资源有分为静态资源和动态资源。 静态资源 概念: 使用静态网页开发技术发布的资源。 特点: 所有用户访问,得到的结果是一样的。如:文本,图片,音频、视频, HTML,CSS,JavaScript等等, 如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器。浏览器中内置了静态资源的解析引擎,可以展示静态资源 动态资源 概念: 使用动态网页及时发布的资源。 特点: 所有用户访问,得到的结果可能不一样。如:jsp/servlet,php,asp...等等 如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器 结论: 如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源

java面向对象5--内部类

谁说胖子不能爱 提交于 2020-02-28 05:28:01
6内部类 内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。 6.1成员内部类   成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。 要注意的是,成员内部类不能含有static的变量和方法。 因为成员内部类需要先创建了外部类,才能创建它自己的 ,了解这一点,就可以明白更多事情,在此省略更多的细节了。 在成员内部类要引用外部类对象时,使用outer.this来表示外部类对象; 而需要创建内部类对象,可以使用outer.inner obj = outerobj.new inner(); public class Outer { public class Inner { public void print

“导入”之后的“静态”修饰语是什么意思?

吃可爱长大的小学妹 提交于 2020-02-28 01:44:29
当这样使用时: import static com.showboy.Myclass; public class Anotherclass{} import static com.showboy.Myclass 和 import com.showboy.Myclass 什么 import com.showboy.Myclass ? #1楼 静态导入的基本思想是,每当您使用静态类,静态变量或枚举时,都可以导入它们并避免键入。 我将举例说明。 import java.lang.Math; class WithoutStaticImports { public static void main(String [] args) { System.out.println("round " + Math.round(1032.897)); System.out.println("min " + Math.min(60,102)); } } 相同的代码,带有静态导入: import static java.lang.System.out; import static java.lang.Math.*; class WithStaticImports { public static void main(String [] args) { out.println("round " + round