静态函数

FreeMarker-网页静态化

夙愿已清 提交于 2020-02-23 11:47:57
  网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道。 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁 的数据。另外网页静态化还有利于SEO。另外我们如果将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署。Nginx可以承载5万的并发,而Tomcat只有几百。 一.FreeMarker简介    FreeMarker 是一款 用 Java 语言编写的模板引擎 : 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页, XML,JSP 或 Java 等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 中文在线文档: http://freemarker.foofun.cn/ 二.FreeMarker使用步骤 1.第一步:工程中引入FreeMarker依赖 <!-- FreeMarker的坐标 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency

记我做的一道关于ida+od动静态调试的题

自闭症网瘾萝莉.ら 提交于 2020-02-23 01:29:26
这是一道打开程序会出现flag的题,但是一打开出现程序框出现乱码 首先先拖入ida里面进行静态调试。按F5查看伪代码,发现了一个重要的函数,sub401000,有一个if判断意味着如果直接跳过函数直接输出flag,flag就会是乱码。 接着我们查看汇编,看到这个loc_401096,这里有一个int3点,所以接下来我们要进行动态调试,修改程序使得程序能够经过sub401000。 将程序拖进od中,首先我们要先找到int3中断点,这时我们查看周围,发现上面有一个跳转指令会直接无视int3下面函数跳到00DB1089,这个也正是直接跳到弹窗显示乱码,我们要将它的跳转指令无法实现,这是JE指令,当ZF=0时就不会跳转,所以我们要将ZF改为0;此时我们按f7进行下一步。将int3改为nop。 这时我们发现int3下还有一个跳转指令,大意了,一不小心跳进陷阱了,直接跳转到00DB10EF。没关系,我们重新来,这时我们将00DB10A3的指令修改,修改到弹窗的地址。这时我们按f9运行。flag就出来了。 来源: CSDN 作者: inryyy 链接: https://blog.csdn.net/inryyy/article/details/104445439

C++静态成员

↘锁芯ラ 提交于 2020-02-22 19:19:20
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class base{ private: static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }; xxx.cpp文件 const int base::_i=10;//定义(初始化)时不受private和protected访问限制. 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2.静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。举例如下: class

C++静态成员函数小结

天涯浪子 提交于 2020-02-22 19:07:18
原文地址: http://hi.baidu.com/quanhaili/blog/item/5a40ba86b37e1b22c65cc38f.html 静态类成员包括静态数据成员和静态函数成员两部分。   一 静态数据成员:   类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:   1.静态数据成员的定义。   静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。   其定义方式与全局变量相同。举例如下:   xxx.h文件   class base{   private:     static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。   };   xxx.cpp文件   const int base::_i=10;//定义(初始化)时不受private和protected访问限制.   注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2.静态数据成员被 类 的所有对象所共享

C++ 静态数据成员小谈

偶尔善良 提交于 2020-02-22 19:04:27
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后的学习和面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一.静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: 1 xxx.h文件 2 class base{ 3 private: 4 static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 5 }; 1 xxx.cpp文件 2 const int base::_i=10;//定义(初始化)时不受private和protected访问限制. 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2.静态数据成员被类的所有对象所共享,包括该类派生类的对象

C++静态成员函数小结

…衆ロ難τιáo~ 提交于 2020-02-22 19:03:43
一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class base{ private: static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }; xxx.cpp文件 const int base::_i=10;//定义(初始化)时不受private和protected访问限制. 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2.静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。举例如下: class base{ public : static int _num;//声明 }; int base::_num=0;//静态数据成员的真正定义 class derived

C++ 静态对象

独自空忆成欢 提交于 2020-02-22 19:03:09
一:什么是静态对象? 对象的存储方式是静态的。 局部静态对象和类的静态对象。 局部静态对象:一个变量在函数内部定义,其生命周期跨越了该函数的多次调用。局部对象确保不迟于在程序执行流第 一次经过该对象的定义语句时进行初始化。这样的对象一旦被创建,在程序结束之前都不会销毁。在定义局部静态对象的函数执行完毕后,该静态对象不会撤销。当该函数被多次调用的过程中,静态局部对象会持续存在并保存它的值。 静态成员对象:静态成员对象存储在全局存储区,静态成员对象的作用域在类的作用域中。其可以避免与其他类成员或全局对象名字冲突。可以封装为私有的,而全局对象不可以。 二:定义及初始化 允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量 不赋初值,则其值是不定的。 局部静态对象: int fun(int i){ static int a = 10; a = a+i; return a;}int main(int argc, char *argv[]){ for(int i=0;i<3;i++) { cout <<fun(i)<<endl; }} 静态类成员对象 声明 :类的静态成员变量声明前加static,其也遵守公有/私有访问规则。 因为 static

单实例中对静态成员函数及变量的回顾

冷暖自知 提交于 2020-02-22 18:31:45
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才有被访问的可能,除此之外,还要有相应的权限。 静态成员函数和非静态成员函数的一个重大区别是,静态成员函数不接受隐含的this指针,它是属于类的,是公有的,因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员;非静态成员函数带有隐含的this指针,它是属于对象的。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,存储在静态存储区,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,存储在栈区,可通过类的对象(实例)去访问。 在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员要等对象实例化之后才会存在,此时可能会访问一个内存中不存在的东西,因此会出错; 此外,即使此时对象已经实例化,非静态成员已经存在,静态成员函数依然不能访问非静态成员,这就是权限问题,如果一定要访问,可通过对象参数进行传递。 由上可知:使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取 更新后的相同的值,这样可以提高时间效率。 静态数据成员的使用方法和注意事项如下: 1

C++类中静态变量和静态方法使用介绍

早过忘川 提交于 2020-02-22 18:31:16
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。   静态数据成员   在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。   使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。   静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。//静态变量的定义   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值> //静态变量的初始化   这表明: (1) 初始化在类体外进行,而前面不加static,(这点需要注意)以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此

C++ 类的静态成员(static)

会有一股神秘感。 提交于 2020-02-22 18:30:15
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对 象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。    静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值>   这表明: (1) 初始化在类体外进行 ,而前面不加static,以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此, 静态数 据成员是类的成员,而不是对象的成员。   3