缓存服务器

Java面试总结-基础篇1

妖精的绣舞 提交于 2019-12-06 06:18:09
java多线程-- 自旋锁,偏向锁 好处:可以举Servlet和CGI的对比用户线程和守护线程的区别:用户线程结束后JVM会退出,然后守护线程才会终止(比如垃圾回收线程),如何在java中创建守护线程创建方法:推荐Runnable接口;继承Thread;Callable(可返回值,与Future配合使用实现异步) 示例生命周期:New,Runnable,Running,Waiting,Blocked(join方法),Dead (见下图)优先级:比较依赖OS的线程调度器,所以最好用自己的代码控制上下文切换(context-switching):存储和回复CPU状态确保main线程最后终止:join方法线程间通信:wait,notify,notifyAll(主要还是线程间锁的控制)Thread的方法:sleep和yield是静态的,因为只能在正在执行的线程执行 线程安全 如何确保线程安全:原子类,并发锁,volatile关键字 参考链接同步块和同步方法:倾向同步块,锁的更少ThreadLocal:不想很麻烦的使用同步全局变量机制时,可以使用死锁:排查方法(blocked的线程锁住的资源id),java thread dump避免死锁:避免嵌套锁,只在需要的地方使用锁,避免无限期等待原子操作:多线程下避免数据不一致(AtomicInteger等类),int+

Nginx配置缓存服务器

元气小坏坏 提交于 2019-12-06 04:24:48
Nginx为静态资源配置缓存服务器对网站性能提供很可观。 1.配置 接下来我看如何配置; 我的环境是在同一台机器上配置了一个用openresty搭建的反向代理,上游服务器(后端服务器)是本机的nginx(127.0.0.1:8080) 在openresty的nginx.conf配置文件中加入上面截图的几行,缓存服务器就配置好了。 具体参数意思可以参考官方文档; 2.测试缓存服务器是否生效 访问反向代理服务器    访问成功页面,我访问我地址成功之后会跳转,是我后端服务器配置的,这个不打紧,可配可不配,不影响。    现在这个访问成功的页面就被缓存了,接下来我们把后端(上游)服务器nginx关闭     [root@nginx logs]# nginx -s stop 在访问刚刚成功的页面测试是否还可以访问          刷新这个页面发现还是没有问题的,表示配置成功。有什么疑问可以留言沟通。 来源: https://www.cnblogs.com/Tao9/p/11961698.html

网络协议-HTTPDNS协议

若如初见. 提交于 2019-12-06 04:13:53
网络协议-HTTPDNS协议 DNS 有两个功能,第一个是根据名称查找对应的地址,另一个是可以针对多个地址负载均衡,能在多个地址中找一个离你最近的地方访问。 但是这个地址簿也会给你指错路,明明你要找的饭店就在眼前,它却给你推荐到五公里以外。 传统DNS 存在哪些问题? 1. 域名缓存问题 缓存的域名信息有可能失效了 2. 域名转发问题 如果A运营商的客户请求一个域名,正常情况下A运营商会自己请求权威DNS 服务器。但也会有这样的情况,A运营商的DNS 偷懒,它转给B 运营商的DNS,B 运营商的DNS 去请求权威NDS 服务器时,会误以为这个客户是运营商B区域的,所以返回的IP 地址是运营商B区域的地址。 3. 出口NAT问题 网络包在网关出口的时候,通过NAT(网络地址转换)将从这个网关出去的包换成新的IP地址。当然请求返回的时候,这个网关还会将IP 地址转换回去,这对于访问是没有问题的。但对DNS 就有问题了。 因为一旦做了网络地址的转换,权威DNS 服务器就没法通过这个地址来判断客户端到底来自哪个运营商。 4. 域名更新问题 如果像百度这样的应用,当它的一个机房出了问题,这时需要修改权威DNS,将域名指向新的IP地址,但是如果更新太慢,那很多用户都会出现访问异常。 5. 解析延迟问题 DNS 的查询过程要递归遍历多个DNS 服务器,才能获得最终的解析结果,这会带来一定的延时

Nginx源码安装及调优配置

眉间皱痕 提交于 2019-12-06 03:49:34
Nginx编译前的优化 [root@linuxprobe ~]# wget http://nginx.org/download/nginx-1.10.1.tar.gz [root@linuxprobe ~]# tar xvf nginx-1.10.1.tar.gz -C /usr/local/src/ [root@linuxprobe ~]# cd /usr/local/src/nginx-1.10.1/ 编译前的优化主要是用来修改程序名等等,例如: [root@linuxprobe nginx-1.10.1]# curl -I http://www.baidu.com …… Server: bfe/1.0.8.14 …… [root@linuxprobe nginx-1.10.1]# curl -I http://www.sina.com.cn …… Server: nginx …… [root@linuxprobe nginx-1.10.1]# curl -I http://www.linuxprobe.com HTTP/1.1 200 OK Server: nginx/1.10.1 #我们目标是将nginx更改名字 Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5

Spring Cache使用

瘦欲@ 提交于 2019-12-06 03:44:39
记录下自己项目在用的Spring Cache的使用方式。 Spring的抽象已经做得够好了,适合于大多数场景,非常复杂的就需要自己AOP实现了。 Spring官网的文档挺不错的,但是对Cache这块的介绍不是很详细,结合网上大牛的博文,汇总下文。 缓存概念 缓存简介 缓存,我的理解是:让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU–L1/L2–内存–磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找,如果还没有会到磁盘上找。还有如用过Maven的朋友都应该知道,我们找依赖的时候,先从本机仓库找,再从本地服务器仓库找,最后到远程仓库服务器找;还有如京东的物流为什么那么快?他们在各个地都有分仓库,如果该仓库有货物那么送货的速度是非常快的。 缓存命中率 即从缓存中读取数据的次数 与 总读取次数的比率,命中率越高越好: 命中率 = 从缓存中读取次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数]) Miss率 = 没有从缓存中读取的次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数]) 这是一个非常重要的监控指标

free中buffer 与 cache 的区别

久未见 提交于 2019-12-06 03:28:06
通常人们所说的Cache就是指缓存SRAM。 SRAM叫静态内存,“静态”指的是当我们将一笔数据写入SRAM后,除非重新写入新数据或关闭电源,否则写入的数据保持不变。 由于CPU的速度比内存和硬盘的速度要快得多,所以在存取数据时会使CPU等待,影响计算机的速度。SRAM的存取速度比其它内存和硬盘都要快,所以它被用作电脑的高速缓存(Cache)。 Buffer从英文直译过来的意思是“缓冲区”,这里我们将它称为缓冲,因为它不仅是个名词,还是个动词。缓冲区是存储一系列的数据的地方,客户端所获得的数据可以从程序的执行结果直接输出,也可以从缓冲区输出。但是这两种方式在速度上是有差异的:在web中,当一个asp程序被请求的次数不多时,二者基本上没有什么差异,至少我们感觉不出来。但是当有很多人请求一个asp程序时,速度可就不一样了。如果没有缓冲区,那么每个请求asp程序的人的客户端所得到的结果都是asp程序执行一次所得到的结果,而如果预先将asp程序缓冲,那么每个客户端所得到的结果就是缓冲区的结果,不是执行一次程序的结果。比如有1000个用户同时访问一个asp页面,如果这个asp程序没有缓冲,那么程序将被执行一千次,这样服务器的负荷就回加大,从而导致客户端打开页面速度变慢;如果这个asp程序被缓冲了,那么结果就不一样了,每个客户端直接从缓冲区获得数据,服务器将不会因为访问增加而增加程序执行次数

说一下几种常用的前端缓存

偶尔善良 提交于 2019-12-06 03:07:41
1.Cookie cookie是比较老的前端缓存技术了,它的特点是想要使用它前端必须要有服务(静态网页是不行的),而且存储大小限制在4kb。那么为什么必须要有服务才能使用cookie呢?因为只要有请求涉及cookie,cookie就要在服务器和浏览器之间来回传送,而且由于浏览器的跨域限制,客户端和服务端必须要保证同源的原则(也就是跨域问题,详情见我的其他文章),由于cookie是存放在前端的,所以安全问题一直是个大问题,因此一般重要的信息不建议放在cookie中存放。 2.Session 对于服务端的程序眼来说session大家肯定很熟悉了,session是一种服务端的机制,也就是能把信息存放在服务端,所以安全可以保障,它的原理是通过session id来识别客户端,这个session id是存放在cookie中的(当然session id让用户看见没无妨),服务端会通过session id来识别客户端进行匹配和判断。它和cookie对比起来差距就很明显了,一个是把数据存在客户端;一个存在服务端,从安全性考虑的话一般像用户名密码这种私密信息一般放在session中。 3.localStorage 它的特点就是“持久”,一旦通过保存,不通过手动清除的话,就会一直保存在前端,它的保存格式是键值对的方式也就是“key-value”的方式保存的,它的存储空间大小限制在500万字符左右

asp.net缓存

醉酒当歌 提交于 2019-12-06 00:26:40
原文: asp.net缓存 一、缓存概念,缓存的好处、类型。 缓存是一种用空间换取时间的技术,通俗点也就是说把你得到的数据存放在内存中一段时间,在这短时间内服务器不去读取数据库、或是真实的数据源,而是读取你存放在内存中的数据,这里你会疑惑怎么设置存放数据,能存放什么样子的数据,存放时间的设置,真实数据源数据改变服务器不就读取存在偏差?别急,下面慢慢会说到的。。 缓存的好处,缓存是网站性能优化不可缺少的一种数据处理机制,他能有效的缓解数据库压力,例如,网站每分钟的点击率为100万,如果不使用缓存的静态页面,这里也没有viewstate的情况下(viewstate会产生大量的字符串,对服务器交互数据是一种压力,所以一般页面是要禁用viewstate,采用缓存的),只能是用户点击一次该页面,这个页面就读取一次数据库,这样给数据库造成的压力可想而知,如果这里我们使用了缓存的话,设置缓存有效期为1分钟,则这一分钟只内,点击100万次跟点击一次是一样的,都是读取一次数据库,数据源是被缓存在内存中了。 asp.net中的缓存主要分为:页面缓存,数据源缓存,自定义数据缓存这三种主要类型。 二、数据缓存 public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender,

从前端小白到中高级前端需要掌握的技能总结(2)

此生再无相见时 提交于 2019-12-06 00:13:46
这个系列的文章的第二篇,继续总结~~ 这是从一个问题上衍生出的知识体系,这个问题是 从输入URL到页面加载的过程 。 先梳理下这个流程 第一步 从浏览器接收url到开启网络请求线程(浏览器的进程/线程模型,js的运行机制) 浏览器的进程 浏览器是多进程的。有一个主进程,以及每一个tab页都会新开一个进程(某些情况下(比如空白tab)多个tab会合并成一个进程) 进程可能包括主进程,插件进程,GPU,tab页等等。 brower进程 主进程,负责协调,主控等 第三方插件进程 每种类型的插件都会有一个进程,仅当使用插件时才会创建。 GPU进程 只有一个,用于3d绘制 浏览器默认进程(内核) 每个tab页对应一个进程,负责页面渲染,脚本执行,互不影响,有时候会优化(多个空白tab会合并成一个) 浏览器的多线程内核 每个tab页可以看作浏览器的内核的进程,这个进程是多线程的,它有以下几大线程: GUI渲染线程 JavaScript线程(这就是为什么一直说JS是单线程的原因) 事件触发线程 定时器触发线程 网络请求线程 每次网络请求都需要开辟单独线程进行,如果url解析到http请求,就会新开线程去处理资源下载。(http2.0可以实现tcp连接复用) JS的运行机制 参考我的另一篇文章 js执行机制 事件循环 第二步 开启网络线程到发出一个完整的http请求(dns查询,tcp/IP请求

TCP/IP基础总结性学习(5)

北战南征 提交于 2019-12-05 22:31:34
与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率。 一. 用单台虚拟主机实现多个域名 HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。比如,提供 Web 托管服务(Web Hosting Service)的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网站。这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功能。即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。 2.图示:客户端使用 HTTP 协议访问服务器时,会经常采用类似 www.hackr.jp 这样的主机名和域名。 3.在互联网上,域名通过 DNS 服务映射到 IP 地址(域名解析)之后访问目标网站。可见,当请求发送到服务器时,已经是以 IP 地址形式访问了。 所以,如果一台服务器内托管了 www.tricorder.jp 和 www.hackr.jp 这 两个域名,当收到请求时就需要弄清楚究竟要访问哪个域名。 解决:在相同的 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。 二.通信数据转发程序 :代理、网关、隧道