书籍资料总结
文章平均质量分 71
看万篇书,行万里路
雪孤城
所念皆星河,所系皆山河
展开
-
大型网站技术架构 读书笔记 (八) 固若金汤:网站的安全架构
1. 道高一尺魔高一丈的网站应用攻击与防御1.1 XSS攻击XSS攻击即跨站点脚本攻击(Cross SiteScript),指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。另外一种XSS攻击是持久型XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。预防方案:原创 2022-01-18 15:48:29 · 117 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (七) 随需应变:网站的可扩展架构
扩展性(Extensibility): 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。伸缩性(Scalability): 指系统能够通过增加(减少)自身资源规模的方式增强(减少)自己计算处理事务的能力。1. 构建可扩展的网站架构设计网站可扩展架构的核心思想是模块化,并在此基础之上,降低模块间的耦合性,提高模块的复用性。模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务。2. 利用分布式消息队列降低系统耦合性2.1 事件驱动架构事件驱动架构(Event Driven原创 2022-01-17 15:06:38 · 245 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (六) 网站的伸缩性架构
网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。1. 网站架构的伸缩性设计1.1 不同功能进行物理分离实现伸缩纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性。1.2 单一功能通过集群规模实现伸缩将相同服务部署在多台服务器上构成一个集群整体对外提供服务。2. 应用服务器集群的伸缩性设计2.1 负载均衡实现应用服务器伸缩性2.2原创 2022-01-16 20:08:32 · 1518 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (五) 网站的高可用架构
1. 网站可用性的度量与考核1.1 网站可用性度量网站不可用时间(故障时间)=故障修复时间点网故障发现(报告)时间点网站年度可用性指标=(11网站不可用时间/年度总时间)年100%1.2 网站可用性考核可用性指标是网站架构设计的重要指标,对外是服务承诺,对内是考核指标。从管理层面,可用性指标是网站或者产品的整体考核指标,具体到每个工程师的考核,更多的是使用故障分。2. 高可用的网站架构3. 高可用的应用3.1 通过负载均衡进行无状态服务的失效转移负载均衡,顾名思义,主要使用在业务量和数据原创 2022-01-13 17:46:29 · 1059 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (四) 网站的高性能架构
1. 网站性能测试1.1 用户视角的网站性能从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢。1.2 开发人员视角的网站性能开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标。1.3 运维人员视角的网站性能运维人员更关注基础设施性能和资源利用率,如网络运营商的带宽能力、服务器硬件的配置、数据中心网络架构、服务器和网络带宽的资源利用率等。1.4 性能测试指标响应时间 : 指应用执行一个操作需要的时间,包括从原创 2022-01-13 16:10:17 · 825 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (三) 大型网站核心架构要素
1. 性能2. 可用性衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。3. 伸缩性伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。4. 扩展性衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。网站可伸缩架构的主要手段是事件驱动架构和分布式服务。事件驱动原创 2022-01-05 17:12:08 · 2645 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (二) 大型网站架构模式
1. 网站架构模式1.1 分层将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。1.2 分割分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分。1.3 分布式分布式应用和服务分布式静态资源分布式数据和存储分布式计算1.4 集群使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块(比如网站的首页),还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负原创 2022-01-05 15:57:52 · 1553 阅读 · 0 评论 -
大型网站技术架构 读书笔记 (一) 大型网站架构演化
1. 大型网站软件系统的特点高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展2. 大型网站架构演化发展历程(一) : 初始阶段(二) : 应用服务和数据服务分离(三) : 使用缓存改善网站性能(四) : 使用应用服务器集群改善网站的并发处理能力(五) : 数据库读写分离(六) : 使用反向代理和CDN加速网站响应CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以原创 2022-01-04 17:22:30 · 264 阅读 · 0 评论 -
Docker技术入门与实战(第3版) 读书笔记: (四)操作Docker容器
1. 创建容器1.1 新建容器新建一个容器:docker [container] create 例:docker create xxx参数信息:-l, --label=[]:以键值对方式指定容器的标签信息–label-file=[]:从文件中读取标签信息使用docker [container] create命令新建的容器处于停止状态,可以使用docker [container]start命令来启动它。1.2 启动容器使用docker [container] start命令来启动一原创 2022-01-04 14:48:41 · 107 阅读 · 0 评论 -
Docker技术入门与实战(第3版) 读书笔记: (三)使用Docker镜像
1. 获取镜像docker [image] pull命令:NAME : 镜像仓库名称(用来区分镜像)TAG : 是镜像的标签(往往用来表示版本信息,如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像)docker[image] pull NAME[:TAG]pull子命令 :-a, --all-tags=true|false:是否获取仓库中的所有镜像,默认为否–disable-content-trust:取消镜像的内容校验,默认为真2. 查看镜像信息原创 2021-12-31 16:20:01 · 794 阅读 · 0 评论 -
Docker技术入门与实战(第3版) 读书笔记: (二)核心概念与安装配置
1. 核心概念1.1 Docker镜像Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个Apache镜像。镜像是创建Docker容器的基础。1.2 Docker容器Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离、互不可见的。1.3 Doc原创 2021-12-31 10:46:16 · 551 阅读 · 0 评论 -
Docker技术入门与实战(第3版) 读书笔记: (一)初识Docker与容器
1. 什么是Docker1.1 Docker开源项目背景Docker是基于Go语言实现的开源容器项目。它诞生于2013年年初,最初发起者是dotCloud公司。dotCloud公司也随之快速发展壮大,在2013年年底直接改名为Docker Inc,并专注于Docker相关技术和产品的开发,目前已经成为全球最大的Docker容器服务提供商。官方网站为docker.com。1.2 Linux容器技术——巨人的肩膀Linux容器(LinuxContainers, LXC)技术,基于一系列新引入的内核特性原创 2021-12-30 18:04:40 · 718 阅读 · 0 评论 -
深入理解Java虚拟机 读书笔记: (四)虚拟机性能监控、故障处理工具
1. 概述2. 基础故障处理工具工具分类:商业授权工具:主要是JMC(Java MissionControl)及它要使用到的JFR(Java FlightRecorder),JMC这个原本来自于JRockit的运维监控套件从JDK 7 Update 40开始就被集成到OracleJDK中,JDK 11之前都无须独立下载,但是在商业环境中使用它则是要付费的.正式支持工具:这一类工具属于被长期支持的工具,不同平台、不同版本的JDK之间,这类工具可能会略有差异,但是不会出现某一个工具突然消失的情况.实原创 2021-12-30 09:44:40 · 442 阅读 · 0 评论 -
深入理解Java虚拟机 读书笔记: (三)垃圾收集器与内存分配策略
1. 概述Java内存运行时区域内存情况:程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭(栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,当方法结束或者线程结束时,内存自然就跟随着回收了)。Java堆和方法区这两个区域则有着很显著的不确定性。只有处于运行期间,才能明确程序会创建哪些对象,这部分内存的分配和回收是动态的。2. 对象已死?2.1 引用计数算法引用计数算法(Reference Counting),在对象中添加一个引用计数器,每当有一个地方引用它时,计原创 2021-12-19 23:43:56 · 463 阅读 · 1 评论 -
深入理解Java虚拟机 读书笔记: (二)Java内存区域与内存溢出异常
1. 概述Java 语言拥有虚拟机,可以进行自动化内存管理,不需要为程序中的产生的对象进行内存管理,不容易出现内存泄漏和内存溢出问题。与此同时,一旦出现内存泄漏和溢出方面的问题,那排查错误、修正问题将会成为一项异常艰难的工作。2. 运行时数据区域2.1 概念图2.2 程序计数器程序计数器(Program Counter Register):是一块较小的内存空间,当前线程所执行的字节码的行号指示器。作用: 通过计数器的值来判断下一条需要执行的字节码指令,它是程序控制流的指示器,进行分支、循环、原创 2021-12-06 17:01:30 · 447 阅读 · 0 评论 -
深入理解Java虚拟机 读书笔记: (一)走进Java
1. 概述1.1 概述Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范组成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等多种场合1.2 优点结构严谨、面向对象编程摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想提供了一种相对安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题实现了热点代码检测和运行时编译及优化…2. Java技术体系2.1 官方体系定义Java程序设原创 2021-12-04 14:41:46 · 133 阅读 · 0 评论 -
《Head First 设计模式》(十三):代理模式
1. 简介1.1 定义为另一个对象提供一个替身或占位符以访问这个对象。1.2 模式角色Subject 抽象主题角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。RealSubject 具体主题角色:也叫做被委托角色、被代理角色。是业务逻辑的具体执行者。Proxy 代理主题角色:代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。1.3 角色关系图1.4原创 2021-09-09 17:13:00 · 205 阅读 · 0 评论 -
《Head First 设计模式》(十二):状态模式
1. 简介1.1 定义状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类1.2 主要角色环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责具体状态的切换。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为,可以有一个或多个行为。具体状态(Concrete State)角色:实现抽象状态所对应的行为,并且在需要的情况下进行状态切换。1.3 类图2原创 2021-09-08 15:21:50 · 122 阅读 · 0 评论 -
《Head First 设计模式》(十一):组合模式
1. 简介1.1 定义组合模式(Composite Pattern) 也称为 整体-部分(Part-Whole)模式,将对象组合成树形结构以表示“部分整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。1.2 组合模式抽象图根节点 和 树枝节点 本质上是同一种数据类型,即都可以作为容器来使用。而 叶子节点 与 树枝节点 在语义上是不属于同一种数据类型的,但在组合模式中,是可以把树枝节点和叶子节点认为是同一种数据类型。即在组合模式中,整个树形结构中的对象都是同一种类型。这样原创 2021-09-07 16:17:25 · 131 阅读 · 0 评论 -
《Head First 设计模式》(十):迭代器模式
1. 概览1.1 定义迭代器模式 - 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。1.2 模式角色抽象容器:一般是一个接口,主要提供 “获取迭代器” “添加元素” “删除元素”…等方法。具体容器:抽象容器的具体实现类。抽象迭代器:定义遍历元素所需的方法。一般为 “获取第一个元素” 的 first() 方法;"获取下一个元素"的 next() 方法;"判断是否遍历结束"的 hasNext() 方法。具体迭代器:迭代器的具体实现。2. 代码示例迭代器接口:p原创 2021-08-25 15:29:08 · 117 阅读 · 0 评论 -
《Head First 设计模式》(九):模版方法模式
1. 介绍1.1 定义模版方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。1.2 模式中的方法① 模版方法:定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。注意: 子类不可以对模版方法进行覆盖或者重写。② 基本方法:抽象方法(Abstract Method):一个抽象方法由抽象原创 2021-08-02 15:09:16 · 109 阅读 · 0 评论 -
《Head First 设计模式》(八):外观模式
1. 介绍1.1 定义外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。1.2 结构图1.3 角色外观(Facade)角色 : 客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去子系统(SubSystem)角色 : 可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合。每个子系统都可以被客户端直接调用,或者被门面角原创 2021-07-27 15:04:04 · 121 阅读 · 0 评论 -
《Head First 设计模式》(七):适配器模式
1. 介绍1.1 定义适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不谦容的类可以合作无间。1.2 模式角色Target(目标抽象类): 目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类Adaptee(适配者类): 适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码Adapter(适配器类): 适配器可以调用另一个接口,作为一个转换器,对原创 2021-07-26 17:56:27 · 193 阅读 · 0 评论 -
《Head First 设计模式》(六):命令模式
1. 简介1.1 定义命令模式:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。(同时也支持可撤销的操作)1.2 解决的问题通常在系统设计中,行为请求者和行为实现者是紧耦合的关系。而在一些特定的场景下,比如:需要对行为进行记录、撤销或重做、事务等处理时,需要将行为请求者和行为实现者分离开来,这时就可以用到命令模式。1.3 模式结构Command:定义命令的接口,声明执行的方法ConcreteCommand:命令接口实现对象,是“命令接口”的实现;通常会持有接收者,并调原创 2021-07-24 17:36:59 · 8251 阅读 · 0 评论 -
《Head First 设计模式》(五):单例模式
1. 定义单例模式:确保一个类只有一个实例,并提供一个全局访问点要素:单例类只能有一个实例单例类必须自行创建自己的实例单例类必须自行向整个系统提供这个实例单例模式的简单实现:package com.jbp.designpattern.singleton;/** * @ClassName: Singleton * @description: 单例 * @author: JiangBeiPing * @create: 2021-07-20 11:15 * @Version:原创 2021-07-20 15:13:04 · 8185 阅读 · 0 评论 -
《Head First 设计模式》(四):工厂模式
1.简单工厂模式简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。注意:实际上简单工厂不是一个设计模式,更多程度上比较像一种编程习惯。结构图:Factory:工厂类,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口Product:具体产品类,是简单工厂模式的创建目标1.1 示例DemoIProduct原创 2021-07-19 09:52:10 · 8298 阅读 · 0 评论 -
《Head First 设计模式》(三):装饰者模式
1. 简介装饰器模式(DecoratorPattern) :允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。2. 范例:咖啡店刚开始时,咖啡店的程序设计是:一个咖啡饮料的父类 Beverage,抽象类,店里的所有饮料都必须继承此父类不同种类的咖啡饮料都是一个类(都需要继承 Beverage类)带来的问题:购买咖啡饮料时原创 2021-06-29 16:42:44 · 8493 阅读 · 1 评论 -
《Head First 设计模式》(二):观察者模式
1. 案例Demo建立一个气象观测站,并且这个气象观测站暂时有三种布告板,分别显示:目前的状况、气象统计、简单的预报。当 WeatherObject对象获得最新的测量数据时,三种布告板必须实时更新。气象观测站对应 WeatherData 对象,WeatherData 对象负责追踪目前的天气状况(温度、湿度、气压)。设计分析:改系统分为三个部分:气象站:获取实际气象数据的物理装置WeatherData 对象:追踪来自气象站的数据,并更新布告板布告板:显示目前天气状况,给用户显示Weath原创 2021-06-25 17:12:55 · 9401 阅读 · 1 评论 -
《Head First 设计模式》(一):策略模式
1. 范例公司做了一套鸭子模拟游戏(SimUDuck),游戏中会有各种鸭子,会游戏划水、会呱呱叫。2. 初始化版本—继承定义一个鸭子父类:Duck,并让各种鸭子继承此父类鸭子父类:Duck类 方法分析:所有鸭子都会呱呱叫,所以此行为由父类实现所有鸭子都会游泳,所以此行为由父类实现因为每一个鸭子的外观都不尽相同,所以此外观方法定义为抽象方法,具体内容由子类实现鸭子父类:Duck类package com.jbp.designpattern;/** * @ClassName: Duck原创 2021-06-23 11:34:57 · 9503 阅读 · 1 评论 -
Java核心技术(五):继承
1.类,超类,子类关键字extends表明正在构造的新类派生于一个已存在的类已经存在的类被称为超类/基类/父类新类被称为子类/派生类/孩子类1.1 继承层次继承层次:有一个公共超类派生出来的所有类的集合继承链:子继承层次中,从某个特定类到祖先的路径被称为该类的继承链1.2 多态1.3 抽象类包含一个或多个抽象方法的类本身必须被声明为抽象的除了抽象方法外,抽象类还可以包含具体数据和具体方法扩展抽象类一般有两种选择:在抽象类中定义部分抽象类方法或不定义抽象类方法,这样必须将子类也标记为抽原创 2020-08-28 23:16:19 · 107 阅读 · 0 评论 -
Java核心技术(四):对象与类
1.面向对象编程(oop)1.1 类类(class),是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例1.2 对象对象的特性:对象的行为对象的状态对象标识1.3 类之间的关系依赖聚合继承1.4 构造器构造器与类同名每个类可以有一个以上的构造器构造器可以有0,1或多个参数构造器没有返回值构造器总是伴随着 new 操作一起调用的2. 静态域和静态方法2.1 静态域2.2 静态常量2.3 静态方法静态方法是一种不能向对象实原创 2020-08-15 00:31:43 · 109 阅读 · 0 评论 -
Java核心技术(三):Java的基本程序设计结构
1.注释单行注释多行注释文档注释2.数据类型Java是强类型语言,即每一个变量都需声明类型。共8种基本类型(4种整型,2种浮点类型,char类型和boolean类型)类型存储需求取值范围int4字节-2147483648~2147483647short2字节-32768~32767long8字节-9233372036854775808~9233372036854775807byte1字节-128~127float4字节大约±3原创 2020-08-11 00:49:05 · 101 阅读 · 0 评论 -
Java核心技术(二):Java程序设计环境
1.安装java开发工具包术语解释:术语名缩写解释Java Development KitJDK编写java程序的程序员使用的软件Java Runtime EnvironmentJRE运行java程序的用户使用的软件Server JRE—在服务器上运行java程序的软件Standard EditionSE用于桌面或简单服务器应用的Java平台Enerprise EditionEE用于复杂服务器应用的Java平台Micro Editi原创 2020-08-09 22:13:04 · 123 阅读 · 0 评论 -
Java核心技术(一):Java程序设计概述
1.Java发布之处的的定位简单性(没有头文件,指针,联合,操作符重载,虚基类等)面向对象(重点放在数据,即对象,和对象的接口上)分布式(java应用程序可以通过URL打开和访问网络上的对象)健壮性(java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题)安全性(java的设计理念就是能够防范各种攻击)体系结构中立(编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有java运行时系统,这些编译后的代码可以在许多处理器上运行)可移植性(java中,数据结构具有固原创 2020-08-09 22:13:34 · 106 阅读 · 0 评论