静态函数

Nginx 实现静态资源

邮差的信 提交于 2020-01-03 21:25:39
前言 nginx作为一款高性能的服务器,用途非常多,除了可以做后端服务器的代理,负载均衡之外,还有一个用途就是做 静态资源的缓存服务器 ,比如在 前后端分离 的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问, 1、基础环境 1.机器规划 hostname ip role web01 10.0.0.7 flask进程(端口5000) lb01 10.0.0.5 提供Nginx静态资源访问和反向代理 2.我自己写了一个基于flask_restful的flask小项目,目录结构为 flask-demo: https://pan.baidu.com/s/1PMx-ULDbQ5FEhlfZchWH9Q [root@web01 ~]# tree flask-demo flask-demo ├── app │ ├── api # 接口文件 │ │ ├── base.py │ │ ├── home.py │ │ └── web_html.py │ ├── __init__.py │ ├── libs # 工具函数 │ │ ├── commons.py │ │ └── const.py │ └── static # 静态资源 │ ├── html │ │ ├──

Java语法笔记

混江龙づ霸主 提交于 2020-01-01 22:49:52
目录 知识点 不支持 恶心事 与C#的区别 组件 学习资料 母版页 知识点 类 静态方法,即可以在类上被调用,也可以在实例对象上被调用。 Java类 先执行静态构造函数,再执行静态方法或静态字段,所以如果在类的静态构造函数中,执行了该类的静态方法,则会报错。因为类还没有初始化,不能调用类方法,这一点和C#不同。以下代码报错: public class obj{ static{ Init(); } public static void Init(){} } 使用 import static 包.类.*; 可以直接使用该类下的方法。 类上可以定义代码段,在执行完构造函数之后执行。如: public class test{ {system.out.println("OK");} {system.out.println("22");} } 一些考点: http://www.cnblogs.com/lanxuezaipiao/p/3371224.html getClass().getClassLoader() 根在哪? 在 target/@/Web-inf/classes 可能通过:this.getClass().getClassLoader().getResource("").getPath() 取得。 Jdbc executeQuery 是执行并返回结果 getResultSet

如何生成静态页

对着背影说爱祢 提交于 2020-01-01 21:25:35
如何生成静态页: 方案1: /// <summary> /// 传入URL返回网页的html代码 /// </summary> /// <param name="Url">URL</param> /// <returns></returns> public static string getUrltoHtml(string Url) { errorMsg = ""; try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url); // Get the response instance. System.Net.WebResponse wResp =wReq.GetResponse(); // Read an HTTP-specific property //if (wResp.GetType() ==HttpWebResponse) //{ //DateTime updated =((System.Net.HttpWebResponse)wResp).LastModified; //} // Get the response stream. System.IO.Stream respStream = wResp.GetResponseStream(); // Dim reader As

java学习笔记整理

感情迁移 提交于 2019-12-31 16:38:50
java知识模块: 1.基础知识,数组,字符串,正则表达式; 2.类和对象,接口,继承,多态,抽象类,内部类,泛型,java常用类库。 3.异常处理; 4.IO; 5.事件处理; 6.多线程; 7.集合类 8.网络通信; 9.JDBC操作数据库 10.反射 11.序列化 一、运行机制、内存分配 1.java执行步骤为:使用javac将.java文件编译成.class文件;然后执行一个.class文件 2.java程序在JVM内运行,具有可移植性. 3.java的参数传递是值传递,而不是引用传递。 值可以理解为内存地址,引用即是地址指向的内容。 4.栈内存:在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 堆内存:堆内存用来存放由new创建的对象和数组。 5.java具有自动的垃圾收集机制。 二、类和对象 1.类是描述同一类型的对象的抽象概念,对象是类的一个具体实例。 2.对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体. 命名规范:方法和属性的第一个首单词小写,之后每个单词首字母要大写。比如getInfo(); 3.当创建类时,就是在描述那个类的对象的外观与行为。执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用。 4.构造方法的名称必须与类名完全相同 。构造方法没有返回值。 5.初始化切记:初始化的顺序是先静态对象,而后是“非静态

Effective Java (创建和销毁对象)

江枫思渺然 提交于 2019-12-30 16:25:28
一、考虑用静态工厂方法代替构造器: 构造器是创建一个对象实例最基本也最通用的方法,大部分开发者在使用某个class的时候,首先需要考虑的就是如何构造和初始化一个对象示例,而构造的方式首先考虑到的就是通过构造函数来完成,因此在看javadoc中的文档时首先关注的函数也是构造器。然而在有些时候构造器并非我们唯一的选择,通过反射也是可以轻松达到的。我们这里主要提到的方式是通过静态类工厂的方式来创建class的实例,如: 1 public static Boolean valueOf(boolean b) {2 return b ? Boolean.TRUE : Boolean.FALSE;3 } 静态工厂方法和构造器不同有以下主要优势: 1. 有意义的名称。 在框架设计中,针对某些工具类通常会考虑dummy对象或者空对象以辨别该对象是否已经被初始化,如我曾在我的C++基础库中实现了String类型,见如下代码: 1 void showExample() { 2 String strEmpty = String::empty(); 3 String strEmpty2 = ""; 4 String strData = String::prellocate(1024); 5 if (strEmpty.isEmpty()) { 6 //TODO: do something 7 } 8 } 9

flask模板应用-加载静态文件:添加Favicon,使用CSS框架,使用宏加载静态资源 --

本小妞迷上赌 提交于 2019-12-29 11:31:10
加载静态文件 一个Web项目不仅需要HTML模板,还需要许多静态文件,比如CSS、JavaScript文件、图片和声音声。在flask程序中,默认需要将静态文件存储在与主脚本(包含程序实例的脚本)同级目录的static文件夹中。 为了在HTML文件中引用静态文件,我们需要使用url_for()函数获取静态文件的URL。flask内置了用于获取静态文件的视图函数,端点值为static,它的默认URL规则为/static/<path: filename>,URL变量filename是相对于文件夹根目录的文件路径。 如果需要使用其他文件夹来存储静态文件,可以在实例化flask类时使用static_folder参数指定,静态文件的URL路径中的static也会自动跟随文件夹名称变化。在实例化flask类时用static_url_path参数可以自定义静态文件的URL路径。 在程序的static目录下存一张图片,例如qq.jpg,我们可以通过url_for(‘static’, filename=’qq.jpg’)获取这个文件的URL,这个函数调用生成的url为/static/qq.jpg,在浏览器中输入127.0.0.1:5000/qq.jpg即可访问这个图片。 在模板watchlist.html里,我们在用户名的左侧添加这个图片,使用url_for()函数生成图片src属性所需的图片URL

C++之类和对象的使用(三)

本秂侑毒 提交于 2019-12-29 04:49:25
   对象数组 如果构造函数只有一个参数,在定义数组时可以直接在等号后面的花括号内提供。Student stud[3]={90,92,01};//合法 如果构造函数有多个参数,则不能用在定义时直接所提供所有实参的方法。 但可以如下定义: //构造函数有三个参数:学号,年龄,成绩 Student stud[3]{ Student(1000,19,22); Student(1001,19,22); Student(1002,19,22); };   对象指针 指向对象的指针 class Box {public: Box(int h=10,int w=10,int len=10); int s; int volume(); private: int height; int width; int length; }; Box::Box(int h,int w,int len) { height=h; width=w; length=len; } int Box::volume(){ return(height*width*length); }Box *ptr;//定义指向对象的指针Box t1;//定义Time类对象ptr=&t1;//将t1的起始地址赋给ptr 指向对象成员的指针 1)指向对象数据成员的指针 定义的一般形式为: 数据类型名 *指针变量名; int *p1; p1=&t1

代码区、常量区、静态区(全局区)、堆区、栈区?

梦想的初衷 提交于 2019-12-28 21:01:16
一般内存主要分为:代码区、常量区、静态区(全局区)、堆区、栈区这几个区域 代码区:存放程序的二进制代码,即CPU执行的机器指令,并且是只读的。 常量区:存放常量(程序在运行的期间不能够被改变的量,例如: 10,字符串常量”abcde”, 数组的名字等) 全局区 或 静态区:静态变量和全局变量的存储区域是一起的, 初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域. 一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放. 堆区:由程序员动态内存分配,需使用free()函数来释放内存,若申请了堆区内存,之后忘记释放内存,很容易造成内存泄漏.( 注意它与数据结构中的堆是两回事 ) 栈区:存放函数内的局部变量,形参和函数返回值。栈区之中的数据的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存 , 回收内存),不需要开发人员来手动管理。栈区就像是一家客栈,里面有很多房间,客人来了之后自动分配房间,房间里的客人可以变动,是一种动态的数据变动。 代码例子 int a = 0; //全局初始化区char * p1; //全局未初始化区int main(){ int b; //栈 char s[] = "abc"; //栈 char * p2; //栈 char p3 = "123456"; // 123456/0在常量区

RT_Thread应用18—内存管理2

ぐ巨炮叔叔 提交于 2019-12-28 01:37:54
第二十四章 内存管理(第二部分) 六、静态内存管理的函数接口 静态内存管理函数的使用——开发流程: 规划一片内存区域作为静态内存池。 调用 rt_mp_create()函数。进行静态内存使用前的创建。 调用 rt_mp_alloc()函数。系统内部将会从空闲链表中获取第一个空闲块,并返回该块的用户空间地址。 调用 rt_mp_free()函数。将该块内存加入空闲块链表,进行内存的释放。 对内存池的操作包含:创建 / 初始化内存池、申请内存块、释放内存块、删除 / 脱离内存池,但不是所有的内存池都会被删除,这与设计者的需求相关,但是使用完的内存块都应该被释放。 1、静态内存控制块 1 struct rt_mempool { 2 struct rt_object parent ; /**<继承自 rt_object */ ( 1 ) * * 静态内存会在自身结构体里面包含一个对象类型的成员,通过这 个成员可以将内存挂到系统对象容器里面。 * * 3 4 void * start_address ; /**< 内存池起始地址 */ ( 2 ) * * 内存池开始地址 * * 5 rt_size_t size ; /**< 内存池大小 */ ( 3 ) * * 内存池大小 * * 6 7 rt_size_t block_size ; /**< 内存块大小 */ ( 4 ) * *

Qt高级——Qt插件开发

风流意气都作罢 提交于 2019-12-27 13:47:29
Qt高级——Qt插件开发 本文讨论Qt4.8的插件机制 一、Qt插件机制 1、Qt插件简介 插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。 2、Qt插件API Qt提供了两种API用于创建插件:一种是高阶API,用于扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶API,用于扩展Qt应用程序。 3、通过插件扩展应用程序功能 A、定义一个接口集(只有纯虚函数的类),用来与插件交流。 B、用宏Q_DECLARE_INTERFACE()将该接口告诉Qt元对象系统。 C、应用程序中用QPluginLoader来加载插件。 D、用宏qobject_cast()来判断一个插件是否实现了接口。 4、创建插件 创建一个插件的步骤如下: A、声明插件类,插件类继承自QObject和插件实现的接口。 B、用宏Q_INTERFACES()将插件接口告诉Qt元对象系统。 C、用宏Q_EXPORT_PLUGIN2()导出插件类。 D、用适当的.pro文件构建插件。 在加载插件前, QCoreApplication对象必须被初始化。 二、插件开发实例 1、创建工程 创建工程,选择“Other Project”->“Subdirs Project”,填写工程名称为PluginApp,选择保存目录。 2、创建应用工程