动态

Nginx 配置实例之动静分离 centos环境

时光怂恿深爱的人放手 提交于 2020-03-03 16:50:18
什么是动静分离 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。 可以分两种:第一种纯粹把静态文件独立成单独的域名,放在独立的服务器上,如下图: 另外一种方法就是动态跟静态文件混合在一起发布,通过nginx来分开。 通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expiress来缓存),假如设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200. 准备工作 (1)在centos种准备静态资源,用于进行访问 在根目录新建一个文件夹data,并在里面新建两个文件夹,并放一些资源文件。如下图: 修改nginx配置文件 其中autoindex是为了列出文件列表的 测试一下效果 测试image 来源:

Nginx,Apache,Tomcat区别

ぃ、小莉子 提交于 2020-03-03 03:20:57
Nginx :一款能承受高并发的 HTTP 服务器,异步的,多个连接 ( 万级别 ) 可以对应一个进程,进行响应。基于事件驱动模型。 Nginx 优点:负载均衡、反向代理、处理静态文件优势。 Apache :相对于 Nginx 来说,同步多进程模型,一个连接对一个进程方式处理请求。在速度上和消耗来说, Apache 不能承受高并发,会导致宕机。 Apache 优点:相对于 Tomcat 服务器来说处理静态文件是它的优势,速度快。 Apache 是静态解析,适合静态 HTML 、图片等。相对于 Nginx 来说, Nginx 配置简洁,简单配置负载均衡,而 Apache 配置复杂。 Nginx 处理静态文件的性能也优于 Apache , Apache 提供的组件比 Nginx 多, Tomcat :动态解析容器,处理动态请求,是编译 JSP\Servlet 的容器。 Tomcat 优势:处理动态请求,以线程的方式处理请求。 Nginx 有动态分离机制,静态请求直接就可以通过 Nginx 处理,动态请求才转发请求到后台交由 Tomcat 进行处理。 来源: https://www.cnblogs.com/suixin84/p/6491579.html

Apache、Nginx与Tomcat的区别

本秂侑毒 提交于 2020-03-03 03:19:23
一、 定义: 1. Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的 计算机平台 上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。 (Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。) 缺点:配置相对复杂,自身不支持动态页面。 2. Tomcat: Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。 3. Nginx Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。 二、 比较 1. Apache与Tomcat的比较 相同点: l 两者都是Apache组织开发的 l 两者都有HTTP服务的功能 l 两者都是免费的 不同点: l Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等),而Tomcat是Apache组织在符合Java

字节码执行引擎知识点总结

◇◆丶佛笑我妖孽 提交于 2020-03-02 22:38:24
以下是在学习了《深入理解JVM》之后的对知识点的总结,其中对方法调用那一章做了大量实践和分析。 文章目录 解释型还是编译型 基于栈还是基于寄存器 字节码指令在哪儿 java虚拟机栈与栈帧的关系 局部变量表 操作数栈 动态连接 方法返回地址 栈帧与方法的关系 字节码指令中的四个方法调用指令 invokevirtual指令解析过程 静态分派,重载,编译期确定 动态分派,重写,运行时确定 解释型还是编译型 字节码的执行有解释型和编译型,根据具体情况才能说明java到底是什么执行方式。 基于栈还是基于寄存器 虚拟机是基于栈的指令集,栈指的是java虚拟机栈,指令集指的字节码指令。 字节码指令在哪儿 执行的字节码指令存放在字节码文件里的方法表里的code属性中。 java虚拟机栈与栈帧的关系 虚拟机栈的基本单位为栈帧,栈帧之间的排列是先进后出。每个栈帧包括了局部变量表,操作数栈,动态连接,方法返回地址以及其他一些信息。 每个栈帧的大小在编译期已经决定,因此栈帧中的每个结构都在编译期确定。 虚拟机栈是线程私有,线程结束栈帧的所有内存都会清除。 局部变量表 局部变量表的单位为slot。 一个slot的大小必须要装的下除long,double类型之外其他基本类型,一般4个字节,也就是32位。 对于long,double类型使用两个slot存放。 局部变量表利用索引来获取值,就如同数组一样

Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向

橙三吉。 提交于 2020-03-02 18:17:22
hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集群动态增加新节点   一、在新增节点配置运行环境     1、安装和其他节点相同的java环境,jdk版本要相同。     2、修改/etc/hosts配置文件,添加ip与hostname的对应关系并分发到集群各个节点。     3、关闭防火墙、相关软件工具的安装等。     4、配置ssh免密码登录,使新增节点和集群其他节点能实现免密码登录。     5、修改slaves文件并分发到集群各个节点。   二、在新增节点上部署Hadoop     把集群的Hadoop安装包copy到新增节点,安装目录最好一致,便于管理   三、单独启动新增节点     无需关闭集群再重启   四、验证是否启动成功     (1)通过WEB界面查看Live Node     (2)通过命令查看: bin/hadoop dfsadmin -report   五、集群负载均衡     运行start-balancer.sh进行数据负载均衡。(如果不进行balance,新数据一般会被插入到新节点中) Hadoop集群动态删除某节点   注意提前做好删除节点数据的备份 推荐 http://www.aboutyun.com/thread

Python的语言类型

牧云@^-^@ 提交于 2020-03-02 08:02:20
Python 是强类型的动态脚本语言 。 强类型:不允许不同类型相加 动态:不使用显示数据类型声明,且确定一个变量的类型是在第一次给它赋值的时候 脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译 强类型语言和弱类型语言 1.强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# 和 python,比如Java中“int i = 0.0;”是无法通过编译的; 2.弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。C/C++、PHP都是弱类型语言,比如C++中“int i = 0.0;”是可以编译运行的 静态和动态类型语言 静态和动态是针对变量的数据类型而言的,区别如下: 1、使用静态类型语言编写的代码中,要声明变量的数据类型,而且不同数据类型的变量不允许直接赋值,它的数据类型是编译期间进行检查的。 2、静态类型语言在使用变量之前,需要为它们分配好内存。 3、静态类型语言功能强大,但相对难以学习,并且灵活性差。 4、动态类型语言与静态语言刚好相反,它只在程序运行期间才去进行数据类型检查,不需要给变量指定数据类型,它会在第一次同仁给变量时,在内部记录数据类型。 5

静态代理与动态代理实现与原理

爷,独闯天下 提交于 2020-03-02 02:32:59
基础代码准备 接口类: public interface IUser { /** * 判断用户的权限 * @param uid 用户的UID * @return */ public boolean isAuthUser(int uid); } 实现类: /** * 类的实现 * @author Jason * */ public class UserImpl implements IUser { @Override public boolean isAuthUser(int uid) { //做一些权限验证的工作 System.out.println(uid); //.... return false; } } 静态代理 由程序员创建或特定工具自动生成源代码,再对其编译,在程序运行前,代理类的.class文件就已经存在了。 原理: 对普通一个接口与一直实现类在加入一个代理类,用于包装实现类中实现的方法,而业务使用方只需要实例化代理类,并传递需要代理的普通类即可。 优点: 编译时生成代码,性能高 缺点: 一个代理类只能为一个接口服务,开发中必然会产生过多的代理 所有的代理操作除了调用的方法不一样之外,其他的操作都一样,则此时肯定是重复代码 代码示例 代理类 /** * 通过代理类,实现代理接口,通过构造进行实现的代理,在每个方法里面进行日志捕获 * <pre> *

静态编译与动态编译的区别

和自甴很熟 提交于 2020-03-01 22:48:44
静态编译与动态编译的区别 动态链接库 动态:有 静态:无  动态编译  动态编译的 可执行文件 需要附带一个的 动态链接库 ,在执行时,需要调用其对应动态链接库中的命令。 优点: 一方面是缩小了执行文件本身的体积; 一方面是加快了编译速度,节省了 系统资源 。 缺点: 一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库; 二是如果其他计算机上没有安装对应的 运行库 ,则用动态编译的可执行文件就不能运行。 静态编译   静态编译就是 编译器 在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so) 中的部分提取出来 ,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与 动态编译 的可执行文件正好互补。 来源: https://www.cnblogs.com/Ph-one/p/6372637.html

静态编译、动态编译、静态链接库和动态链接库理解

社会主义新天地 提交于 2020-03-01 15:15:34
1.静态编译:编译器在编译可执行文件时,把需要用到的对应动态链接库(.so或.ilb)中的部分提取出来,链接到可执行文件中去, 使可执行文件在运行时不需要依赖于动态链接库. 2.动态编译: 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一 方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接 库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文 件就不能运行。 静态编译: 静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。 动态编译: 动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时 候需要相应的dll文件支持。 动态链接库: 创建一个动态链接库,会生成x.dll,x.lib 动态链接库有两种加载方式: 1.一种是静态加载,就是在编译的时候就载入动态链接库。此种方法可调用类方法. 可执行程序静态加载动态链接库需要三个文件 x.dll, x.lib, x.h 可执行程序的头文件加入: #include "x.h" #pragma comment(lib,"x.lib") 编译时还要附加库目录

实现动态分配内存

偶尔善良 提交于 2020-03-01 08:42:54
9- 2 - 7 实现动态分配内存 有些时候我们需要在内存主动申请内存来保存我们的数据,实现动态分配内存的效果,头文件 #Include <stdlib.h> 声明了个关于内存动态分配的函数 。 malloc ( )函数 函数原型 void * malloc(usigned int size) • 作用——在内存的动态存储区(堆区)中分配一个长度为size的连续空间。 • 形参size的类型为无符号整型,函数返回值是所分配区域的第一个字节的地址, 即此函数是一个指针型函数,返回的指针指向该分配域的开头位置。 • malloc(100); 开辟100字节的临时空间,返回值为其第一个字节的地址 2.free( )函数 函数原型:void free(void *p) • 作用——释放变量p所指向的动态空间,使这部分空间能重新被其他变量使用。 • p是最近一次调用calloc或malloc函数时的函数返回值 • free函数无返回值 • free(p); // 释放p 所指向的已分配的动态空间 为了更深入的理解malloc()函数和free()函数,我们来讲一个动态内存分配案例: 动态创建数组,输入5个学生的成 绩,另外一个函数检测成绩低于60 分的,输出不合格的成绩 。 实例 9-10 #include <stdlib.h> #include <stdio.h> int main() {