浏览器缓存

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

非 Y 不嫁゛ 提交于 2019-12-05 19:01:08
HTTP 首部 一. HTTP 报文首部 1.HTTP 报文的结构: 2.HTTP 请求报文 图示: 举例子: 3.HTTP 响应报文: 下面的示例是访问 http://hackr.jp 时,请求报文的首部信息: 以下示例是之前请求访问 http://hackr.jp/ 时,返回的响应报文的首部信息: 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息。 二. HTTP 首部字段 1.HTTP 首部字段传递重要信息: HTTP 首部字段是构成 HTTP 报文的要素之一。在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的 语言、认证信息等内容。 图:首部字段内可使用的附加信息较多 2.HTTP 首部字段结构 : HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分 隔。 例如,在 HTTP 首部中以 Content-Type 这个字段来表示报文主体的对象类型。 就以上述示例来看,首部字段名为 Content-Type,字符串 text/html 是 字段值。 另外,字段值对应单个 HTTP 首部字段可以有多个值,如下所示。 注意:若 HTTP

Android存储路径详细说明

混江龙づ霸主 提交于 2019-12-05 18:47:38
一、存储的分类 Android的存储路径实际分类为 内部存储路径 内部缓存存储路径 外部存储路径 外部缓存存储路径 在有些手机上,系统也会在内部划出一个内部的SDCard路径和内部存储路径,所以当有SDCard的时候,就会有6个路径存在了 内部存储空间中的应用私有目录 对于设备中每一个安装的 App,系统都会在内部存储空间的 data/data 目录下以应用包名为名字自动创建与之对应的文件夹。这个文件夹用于 App 中的 WebView 缓存页面信息,SharedPreferences 和 SQLiteDatabase 持久化应用相关数据等。 对于没有 Root 过的手机,普通用户是无法查看 data/data 目录内容的。不过开发人员可以使用模拟器调试应用,并通过 DDMS(Dalvik Debug Monitor Server)提供的 File Explorer 工具查看模拟器设备的存储空间。 注意:当用户卸载 App 时,系统自动删除 data/data 目录下对应包名的文件夹及其内容。 外部存储空间中的应用私有目录 考虑内部存储空间容量有限,普通用户不能直接直观地查看目录文件等其他原因,Android 在外部存储空间中也提供有特殊目录供应用存放私有文件,文件路径为: /storage/emulated/0/Android/data/app package name 备注

【转】Spark History Server 架构原理介绍

时间秒杀一切 提交于 2019-12-05 18:22:08
【From】 https://blog.csdn.net/u013332124/article/details/88350345 Spark History Server 是spark内置的一个http服务,通过sbin/sbin/start-history-server.sh启动。History Server启动后,会监听一个端口,同时启动两个定时任务线程,分别用来解析eventLog日志文件和清理过期的eventLog日志文件。 Spark History Server启动后,我们可以直接在浏览器输入 http://ip:port 访问。一般默认端口是18080 一、eventLog日志文件以及相关参数 eventLog日志文件介绍 eventLog需要将配置spark.eventLog.enabled设置为true来开启,默认是关闭的。 开启这个配置后,当我们提交spark job到集群中运行时,之后spark job在运行过程中会不断的一些运行信息写到相关的日志文件中。具体的eventLog存放目录由配置spark.eventLog.dir决定的。 Spark job在运行中,会调用EventLoggingListener#logEvent()来输出eventLog内容。spark代码中定义了各种类型的事件,一旦某个事件触发,就会构造一个类型的Event

nodejs

梦想与她 提交于 2019-12-05 16:11:22
进程是操作系统分配资源和调度任务的基本单位 操作系统分配资源 -> 由进程到线程 进程是操作系统分配资源的最小单位 线程是进程中的工作单元 nodejs 单进程 单线程 某个操作如果需要大量消耗cup的情况下 后续的操作都需要等待。 nodejs : 单线程 非阻塞I/O 优点: 节约内存 节约上下文切换的时间 锁的问题 ,并发资源的处理( java里面的概念 并发的时候对资源加锁限制其他进程对其的访问 ) 缺点 : 一个线程崩了整个程序就挂了 多线程是如何实现的? 并不是真正在同一时间节点执行多个任务,而是通过非常快速的切换时间片来实现的。 浏览器里的UI线程跟js线程是公用一个线程的 webworker 不能改变js 单线程的本质 完全受主线程的控制 不能操作dom 堆heep 栈 stack 堆里面存 对象 栈里面存 变量 http请求是单独的线程 异步任务是成功后才方放到任务队列的 nodejs中的事件循环 LIBUV是 nodejs 中的异步I/O库 线程池加同步io 模拟异步io 什么叫同步和异步 ? 同步和异步关注的是消息的通知机制 去餐馆点饮料有 立马给你 ->同步 点餐没有 花时间做 -> 异步 什么叫阻塞和非阻塞? 等待取餐的时候什么都不做 阻塞 等待取餐时候看玩儿游戏 非阻塞 阻塞和非阻塞是 程序在等待结果时的状态 同步和异步取决于被调用者

【架构】秒杀系统 ~ 优化之路

眉间皱痕 提交于 2019-12-05 15:43:53
来源:W3CSCHOOL 架构师之路 一、秒杀业务为什么难做 1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); 2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据; 3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。 例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。 又例如:12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同的库存。 读写冲突,锁非常严重,这是秒杀业务难的地方 。那我们怎么优化秒杀业务的架构呢? 二、优化方向 优化方向有两个(今天就讲这两个点): (1) 将请求尽量拦截在系统上游 ( 不要让锁冲突落到数据库上去)。传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,并发高响应慢,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小。以12306为例,一趟火车其实只有2000张票,200w个人来买,基本没有人能买成功,请求有效率为0。 (2) 充分利用缓存 ,秒杀买票,这是一个典型的读多写少的应用场景,大部分请求是车次查询,票查询,下单和支付才是写请求。一趟火车其实只有2000张票,200w个人来买,最多2000个人下单成功,其他人都是查询库存,写比例只有0.1%,读比例占99.9%,非常适合使用缓存来优化。好,后续讲讲怎么个

HTTP状态码详解

早过忘川 提交于 2019-12-05 15:32:21
HTTP状态码详解 通知:1XX 1XX系列响应代码仅在与HTTP服务器沟通时使用。 100 Continue 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。   只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP 版本比旧版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。 102 Processing 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。 成功:2XX 2XX系列响应代码表明操作成功了。 200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 '202 Accepted'。 202 Accepted 服务器已接受请求

【并发那些事】可见性问题的万恶之源

删除回忆录丶 提交于 2019-12-05 15:18:36
【并发那些事】可见性问题的万恶之源 硬件工程师为均衡 CPU 与 缓存之间的速度差异,特意加的 CPU 缓存,竟然在多核的场景下阴差阳错的成为了并发可见性问题的万恶之源!( 本文过长,如果不是特别无聊,看到这里就可以了 ) 前言 还记得那些年,你写的那些多线程 BUG 吗?明明只想得到个 1 + 1 = 2 的预期,结果他有时候得到 1,有时候得到 3,但偏偏有时候他也会返回正确的 2。明明在本地运行的好好的,一上线一堆诡异的 BUG。你一遍一遍的检查代码,一行一行 debug,结果无功而返。 变量为何突然变异?代码为何乱序运行?条件为何形同虚设?欢迎收看今天的《走进科学》之半夜。。。哦,不对,欢迎阅读今天的《并发那些事》之可见性问题的万恶之源。就像上面说的,我们在写并发程序时,经常会出现超出我们认识与直觉的问题,而按我们的以往的经验,很难去察觉到他的问题所在。而又因为我们不了解他发生的诱因,即使我们按照书上的方案解决了,但是下次还是会出现。所以本文的主旨并不是解决问题的术,而是解决问题的道。一起来探究多线程问题的根源。 首先揭开谜底,大多数并发问题的发生都是这三个问题导致的, 可见性问题、原子性问题、有序性问题 。那么又是什么导致这三个问题的出现呢?本文将一步步解析可见性问题出现的原因。 核心矛盾 众所周知,电脑由很多的部件组成。其中最最最重要的有三个,它们分别是 CPU 、内存

Nginx深度优化(二)

不打扰是莪最后的温柔 提交于 2019-12-05 13:28:08
Nginx作为现在最流行的Web应用程序,对其优化十分重要。通过 Nginx初步优化 、 深度优化Nginx(一) 已经可以对Nginx进行大量的优化来满足基本的需要,但是作为一名合格的运维工程师来说,仅仅掌握以上对Nginx进行优化的方法显然是远远不足的。所以就需要本篇博文进一步对Nginx进行优化。 博文大纲: 一、安装nginx服务器 二、Nginx配置优化 (1)Nginx 运行工作进程个数 (2)Nginx 事件处理模型 (3)开启高效传输模式 (4)连接超时时间 (5)fastcgi调优 (6)expires 缓存调优 (7)防盗链 (8)内核参数优化 一、安装nginx服务器 获取 Nginx软件包 [root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel //安装nginx依赖 [root@localhost ~]# useradd -s /sbin/nologin -M nginx //创建nginx用户 [root@localhost ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/src [root@localhost ~]# cd /usr/src/nginx-1.14.0/ [root@localhost nginx-1.14.0]# .

Laravel 应用性能调优

橙三吉。 提交于 2019-12-05 11:58:50
1). 调优 Laravel 中的一下调优和测试方式 2). 方式 这次性能测试方案中用到的优化技巧主要基于 Laravel 框架本身及其提供的工具。 关闭应用debug app.debug=false 缓存配置信息 php artisan config:cache 缓存路由信息 php artisan router:cache 类映射加载优化 php artisan optimize 自动加载优化 composer dumpautoload 根据需要只加载必要的中间件 使用即时编译器(JIT),如:HHVM、OPcache 使用 PHP 7.x 除了以上优化技巧之外,还有很多编码上的实践可以提升 Laravel 应用性能,在本文中暂时不会做说明。(也可以关注我的后续文章) 1. 关闭应用 debug 打开应用根目录下的 .env 文件,把 debug 设置为 false。 APP_DEBUG=false 2. 缓存配置信息 php artisan config:cache 运行以上命令可以把 config 文件夹里所有配置信息合并到一个 bootstrap/cache/config.php 文件中,减少运行时载入文件的数量。 php artisan config:clear 运行以上命令可以清除配置信息的缓存,也就是删除 bootstrap/cache/config.php 文件

一个页面从输入URL到加载显示完成,发生了什么?

二次信任 提交于 2019-12-05 10:55:05
面试经典题——URL加载 一、涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns、http):DNS解析成IP并完成http请求发送; 传输层(tcp、udp):三次握手四次挥手模式建立tcp连接; 网络层(IP、ARP):IP寻址; 数据链路层(PPP):将请求数据封装成帧; 物理层:利用物理介质传输比特流(传输的时候通过双绞线、电磁波等) OIS七层框架 :多了两层即,会话层(处理两个通信系统中交换信息的表示方式)和表示层(管理不同用户和进程之间的对话)。 get和post的区别 : get产生一个tcp数据包,post产生两个 get请求时会把headers和data数据一起发送出去; post请求时,浏览器先发送headers,服务器100继续,浏览器再发送data。 DNS查询得到IP 请求信息:首先查看域名的本地DNS缓存,该缓存存储计算机最近检索到的信息,如果计算机不知道答案,那么就需要执行一个DNS查询来查找答案; 询问递归式DNS服务器: 如果信息不存储在本地,计算机会联系您的ISP(网络提供商)的递归DNS服务器; 这些专用计算机会为你执行一个DNS查询工作; 递归服务器有自己的缓存,所以这个查询过程通常在这里完成,并将信息还回给用户; 询问根域名服务器 如果递归服务器没有答案,他们会查询根域名服务器; 根域名服务器是一种计算机