缓存服务器

跨域解决方案

假如想象 提交于 2020-02-25 18:21:46
1.通过jsonp跨域 2.document.domain.iframe跨域 3.location.hash + iframe 4.window.name + iframe跨域 5.postMessage跨域 6.跨域资源共享(CORS) 7.nginx代理跨域 8.nodejs中间件代理跨域 9.WebSocket协议跨域 一、JSONP JSONP的原理很简单,就是利用<script>标签没有跨域限制的漏洞。通过<script>标签指向一个需要访问的地址并提供一个回调函数来接收数据当需要通讯时。JSONP使用简单且兼容性不错,但是只限于get请求。 function jsonp(url, jsonpCallback, success) { let script = document.createElement('script') script.src = url script.async = true script.type = 'text/javascript' window[jsonpCallback] = function(data) { success && success(data) } document.body.appendChild(script) } jsonp('http://xxx', 'callback', function(value) {

部署LNMP动静分离并搭建memcache缓存服务器

白昼怎懂夜的黑 提交于 2020-02-25 16:55:11
一、MemCache简介 MemCache 是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe 是一个存储键值对的 HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的 key-value 存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache 设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的 API 使得 MemCache用于 Java、C/C++/C#、Perl、Python、PHP、Ruby 等大部分流行的程序语言。 另外,说一下为什么会有 Memcache 和 memcached 两种名称?其实 Memcache 是这个项目的名称(也时它客户端的名称),而 memcached 是它服务器端的主程序文件名。 memcached是一个键/值系统,系统相对于MySQL简单很多,虽然MySQL也有缓存,但是数据库的SQL解析会耗费性能,查询慢于memcached,另外MySQL的缓存设计得更加复杂,因为要考虑事务,日志,存储引擎等模块,它的性能也没有memcached好。 memcached只做一件事情,简单高效,在cache上比MySQL强

清理tomcat服务器缓存

旧时模样 提交于 2020-02-25 15:50:23
据悉,2014年最流行的应用服务器排行榜揭晓Tomcat仍然处于领先位置。41%的部署使用的是Tomcat,和2013年的43%的市场份额数据一 致。下面还是我们的热门选择Jetty和JBoss/WildFly。Jetty以31%占据了第二,而JBoss/WildFly以18%居第三。 Tomcat因为其开源,免费,运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能而深受程序员的喜爱,本文会分享小知识如何清理tomcat服务器缓存。 Tomcat 是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是7.0。 清理服务器缓存可以消除某些未知的错误,如果你运行以前编译的项目有错,而没有及时将服务器缓存清理掉,错误依旧可能发生在新的项目中:所以,清理缓存是很有必要的: 步骤/方法

部署Memcache服务

旧城冷巷雨未停 提交于 2020-02-25 15:26:17
博文结构 Memcache简介 Memcache工作流程 Memcache调度算法 Memcache实现原理 安装Memcache 一.Memcache简介 Memcache是一套自由、开源、高性能、分布式的高速缓存系统。由于Memcache通过在内存中缓存数据和对象来减少读取数据库的次数。目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。 memcache是一套分布式的高速缓存系统,可以提高网站访问的速度,尤其是对于一些大型的公司或者频繁访问数据库的网站访问速度提升效果十分显著,memecache是一个开源免费的软件,memcache通过键值对的方式将数据缓存在内存当中,减少从后端数据库读取数据的次数。 二.Memcache工作流程 MemCache 虽然被称为”分布式缓存”,但是 MemCache 本身完全不具备 分布式的功能,MemCache 集群之间不会相互通信(与之形成对比的,比如 JBoss Cache,某 台服务器有缓存数据更新时,会通知集群中其他机器更新缓存或清除缓存数据),所谓的” 分布式”,完全依赖于客户端程序的实现,就像上面这张图的流程一样。 同时基于这张图,理一下 MemCache 一次写缓存的流程: (1)应用程序输入需要写入缓存的数据; (2)API将Key输入路由算法模块

MySQL 逻辑架构

眉间皱痕 提交于 2020-02-25 12:07:46
1.MySQL整体逻辑架构 mysql 数据库的逻辑架构如下图: 第一层,即最上一层 ,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等。 第二层值得关注 。这是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视 图等。 第三层包括了存储引擎 。通常叫做StorEngine Layer ,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。它们负责存储和获取所有存储在MySQL中的数据。就像Linux众多的文件系统 一样。每个存储引擎都有自己的优点和缺陷。服务器是通过存储引擎API来与它们交互的。这个接口隐藏 了各个存储引擎不同的地方。对于查询层尽可能的透明。这个API包含了很多底层的操作。如开始一个事 物,或者取出有特定主键的行。存储引擎不能解析SQL,互相之间也不能通信。仅仅是简单的响应服务器 的请求。 连接管理和安全 在服务器内部,每个client连接都有自己的线程。这个连接的查询都在一个单独的线程中执行。这些线程轮流运行在某一个CPU内核

sql执行过程

拈花ヽ惹草 提交于 2020-02-25 11:42:51
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。 我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 今天我们就把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直击本质,更为快速地定位并解决问题。 下面我给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。 MySQL的逻辑架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器

MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-25 11:42:07
原文链接: 当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务。 就算重启成功了,对于问题的原因仍不知所以。 本文开始,记录学习《MySQL实战45讲》专栏的过程。 也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗? 是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分。 我知道关注公众号的小伙伴也有很多购买了这个专栏的,我希望大家都能够利用好这个机会,把 MySQL 吃透! 看大家的反馈情况吧,若有需要,可以建个小群,大家互相讨论学习! 下面开始正文。 大家或多或少都用过 MySQL,起码 select 还是会用的吧,但是 select 执行后,MySQL 内部到底发生了什么,你知道吗? 比如,我们有个简单的表 T,它有个 ID 字段,那么我们可以执行下面的语句: mysql> select * from T where ID=10; 语句执行很简单,但是具体到 MySQL 内部,其实是一个完整的执行流程。 MySQL 的基本架构 从下图就可以清楚地看出 MySQL 的命令执行流程: 从该图可以看出,MySQL 主要分为 server 层和存储引擎层。 server

MySQL基础架构

回眸只為那壹抹淺笑 提交于 2020-02-25 11:41:00
前段时间订阅了《Mysql实战45讲》(从原理到实战),新的一年为自己充充电。对于这部分内容,我所知道的只来源于我大学里学习的课程《数据库原理》,在大学里学习的只是简单的查询,增加,删除,索引,锁,触发器,视图等内容。几乎没有基础的架构知识。因此在这里巩固一下原理,学习一下数据库Mysql在原理上究竟是怎样的。 首先我们一起看一个Mysql的基本架构示意图: 1、Mysql可以分为Server层和存储引擎层两部分。 2、Server层:包含连接器,查询缓存,分析器,优化器,执行器等,涵盖了MySQL的大多数核心功能区以及所有的内置函数。 ①内置函数:日期,时间,数学和加密函数等; ②所有跨存储引擎的功能都在这一层实现,例如存储过程,触发器,视图等; 3、存储引擎层:负责数据的存储和提取。 ①架构模式:插件式的,支持InnoDB(目前也是最常用的,MySQL5.5后默认存储引擎)、MyISAM、Memory等多个存储引擎。 ②create table 时不指定引擎类型,默认使用的就是InnoDB.如果使用其他类型,可以利用create table语句中使用engine=memory,等来指定使用内存引擎来创建表。不同的存储引擎数据存储方式不同,支持的功能也不同。 4、不同的存储引擎共用一个server层,结合一个例子我们从总体上了解一下各部件的功能。 mysql> select *

Cache-control使用:header(\'Cache-control:private\')

帅比萌擦擦* 提交于 2020-02-25 02:39:18
网页的缓存是由 HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must- revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: (1) 打开新窗口 值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。 而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器) (2) 在地址栏回车 值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。 值为no-cache,那么每次都会访问。 值为max-age,则在过期之前不会重复访问。 (3) 按后退按扭 值为private、must-revalidate、max-age,则不会重访问, 值为no-cache,则每次都重复访问 (4) 按刷新按扭   无论为何值,都会重复访问 Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。 另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间

面经

↘锁芯ラ 提交于 2020-02-25 02:32:04
一面 问题0:自我介绍 项目:背景;解决的问题;系统框架;业务架构;用到的技术,缓存服务器选型?难点;留几个坑让面试官发问(3-5个) 用户权限问题(用户--角色--权限--页面) redis( 为什么不选memcache ) 缓存击穿(不存在的数据,可以在redis中存null) 数据库水平切分,或者读写分离 分布式锁,读数据库,然后把数据加载到缓存 熔断、降级 布隆过滤器 缓存雪崩 过期时间加上一个随机数 备份缓存:缓存a有超时,缓存b没有超时 分布式锁:每次只能使用限个数据库连接 缓存并发 分布式的话:用分布式锁 单个服务器的话:用synchronize,lock等保证线程安全 定时线程池同步数据 多数据库源问题的解决 XXX 不足 :并发问题 我的收获是: 独立完成后台项目的搭建和编写,对于搭建项目的流程有了更加清晰的理解,增加了自信心 自学了redis,做到学以致用;aop的应用,原理,减少功能代码的编写,维护项目更加容易 业务抽象能力的提高 增强了团队合作意识,锻炼了表达沟通能力 问题1、String, StringBuilder, StringBuffer的区别、使用场景 String 数据内部结构用的是 private final char[],是不可变的 其实 被private final修饰的是引用对象 ,只要引用不变,char[]数组中的内容是可以变的,