摘要: 阅读全文
posted @ 2018-08-09 10:13 _1900 阅读(20726) 评论(0) 推荐(8) 编辑
摘要: 1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 系统层面问题解决办法 5 基础优化 5.1 优化思路 5.2 硬件优化 5.3 服务器硬件优化 5. 阅读全文
posted @ 2019-02-22 09:36 _1900 阅读(1124) 评论(1) 推荐(1) 编辑
摘要: 导航当页: ? 显示help,查询vimium的所有使用方法 h 向左滚动 j 向下滚动 k 向上滚动 l 向右滚动 gg 滚动到顶部 G 滚动到底部 d 向下滚动半页 u 向上滚动半页面 f 显示链接字母,在当前页面打开 F 显示链接字母,在新的页面打开 r 刷新 gs 显示网页源代码 i 进入插 阅读全文
posted @ 2018-05-17 15:49 _1900 阅读(945) 评论(0) 推荐(0) 编辑
摘要: 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。 1 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限, 阅读全文
posted @ 2018-04-26 10:01 _1900 阅读(6481) 评论(0) 推荐(1) 编辑
摘要: 一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访 阅读全文
posted @ 2018-01-08 11:28 _1900 阅读(1515) 评论(0) 推荐(4) 编辑
摘要: WebSocket 教程 概述 WebSocket 是什么? WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 为什么需要 WebSocket ? 了解计算机网络协议的人,应该 阅读全文
posted @ 2017-12-07 17:02 _1900 阅读(11179) 评论(2) 推荐(3) 编辑
摘要: 整体结构 用户--https-->Nginx--http-->Tomcat 页面中包含了iframe,iframe的src也是Https的,但是当frame里面的内容表单提交后tomcat服务器处理成功想要重定向却无法正常重定向,Chrome报错如下 Mixed Content: The page 阅读全文
posted @ 2017-11-16 17:57 _1900 阅读(27486) 评论(0) 推荐(1) 编辑
摘要: TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedResearch Projects Agency)对有关分组交换的广域网(Packet-Switched w 阅读全文
posted @ 2017-10-18 16:18 _1900 阅读(24681) 评论(0) 推荐(1) 编辑
摘要: 一、OSI七层模型 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。 二、TCP/IP四层模型 TCP/IP 阅读全文
posted @ 2017-09-26 15:54 _1900 阅读(60644) 评论(7) 推荐(5) 编辑
摘要: 1.登陆和开关机 2.切换用户与当前工作目录 3.基本常用命令 4.帮助命令文档查询 5.文件查询 6.新建文件, 移动、复制、删除文件 7.文本处理命令 8.正则表达式grep 和 sed 阅读全文
posted @ 2017-09-23 14:27 _1900 阅读(848) 评论(0) 推荐(0) 编辑
摘要: 同步与异步 同步与异步的概念, 关注的是 消息通信机制 同步是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了. 比如洗衣服, 把衣服放在洗衣机里, 没有洗好之前我们一直看着, 直到洗好了才拿出来晾晒. 异步是指发出一个请求后, 立刻得到了回应, 但没有返回结果 阅读全文
posted @ 2017-09-22 16:49 _1900 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。 几种 I/O 模型 为什么 Redis 中要使用 I/O 多路复用这种技术呢? 阅读全文
posted @ 2017-09-22 15:36 _1900 阅读(2838) 评论(1) 推荐(0) 编辑
摘要: 公平模式ReentrantLock实现原理 前面的文章研究了AbstractQueuedSynchronizer的独占锁和共享锁,有了前两篇文章的基础,就可以乘胜追击,看一下基于AbstractQueuedSynchronizer的并发类是如何实现的。 ReentrantLock显然是一种独占锁,首 阅读全文
posted @ 2017-08-29 15:40 _1900 阅读(379) 评论(0) 推荐(1) 编辑
摘要: 共享模式acquire实现流程 上文我们讲解了AbstractQueuedSynchronizer独占模式的acquire实现流程,本文趁热打铁继续看一下AbstractQueuedSynchronizer共享模式acquire的实现流程。连续两篇文章的学习,也可以对比独占模式acquire和共享模 阅读全文
posted @ 2017-08-29 15:38 _1900 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 关于AbstractQueuedSynchronizer JDK1.5之后引入了并发包java.util.concurrent,大大提高了Java程序的并发性能。关于java.util.concurrent包我总结如下: AbstractQueuedSynchronizer是并发类诸如Reentra 阅读全文
posted @ 2017-08-29 15:36 _1900 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 问题来源 在传统的架构中,对于客户端的每一次请求,服务器都会创建一个新的线程或者利用线程池复用去处理用户的一个请求,然后返回给用户结果,这样做在高并发的情况下会存在非常严重的性能问题:对于用户的每一次请求都创建一个新的线程是需要一定内存的,同时线程之间频繁的上下文切换也是一个很大的开销。 p.s: 阅读全文
posted @ 2017-08-29 15:33 _1900 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 Java 反射是可以让我们在运行时获取类的方法、属性、父类、接口等类的内部信息的机制。也就是说,反射本质上是一个“反着来”的过程。我们通过new创建一个类的实例时,实际上是由Java虚拟机根据这个类的Class对象在运行时构建出来的,而反射是通过一个类的Class对象来获取它的定义信息, 阅读全文
posted @ 2017-08-21 18:06 _1900 阅读(928) 评论(0) 推荐(0) 编辑
摘要: 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式 阅读全文
posted @ 2017-08-17 18:28 _1900 阅读(456) 评论(0) 推荐(0) 编辑
摘要: ava.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情形。 Map 提供了一个更通 阅读全文
posted @ 2017-08-16 11:52 _1900 阅读(811) 评论(0) 推荐(0) 编辑
摘要: 概览 同 ArrayList 一样,LinkedList 也是对 List 接口的一种具体实现。不同的是,ArrayList 是基于数组来实现的,而 LinkedList 是基于双向链表实现的。LinkedList 类的声明如下: LinkedList 继承自 AbstractSequentialL 阅读全文
posted @ 2017-08-15 17:28 _1900 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 概览 ArrayList是最常使用的集合类之一了。在JDK文档中对ArrayList的描述是:ArrayList是对list接口的一种基于可变数组的实现。ArrayList类的声明如下: ArrayList继承了AbstractList抽象类,并实现了List,RandomAccess,Clonea 阅读全文
posted @ 2017-08-15 17:27 _1900 阅读(528) 评论(0) 推荐(0) 编辑
摘要: Set 表示由无重复对象组成的集合,也是集合框架中重要的一种集合类型,直接扩展自 Collection 接口。在一个 Set 中,不能有两个引用指向同一个对象,或两个指向 null 的引用。如果对象 a 和 b 的引用满足条件 a.equals(b),那么这两个对象也不能同时出现在集合中。 通常 S 阅读全文
posted @ 2017-08-15 17:25 _1900 阅读(401) 评论(0) 推荐(0) 编辑
摘要: TreeMap 是一种基于红黑树实现的 Key-Value 结构。在使用集合视图在 HashMap 中迭代时,是不能保证迭代顺序的; LinkedHashMap 使用了双向链表,保证按照插入顺序或者访问顺序进行迭代。但是有些时候,我们可能需要按照键的大小进行按序迭代,或者在使用哈希表的同时希望按键值 阅读全文
posted @ 2017-08-15 17:24 _1900 阅读(938) 评论(0) 推荐(0) 编辑
摘要: 同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现。实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加了双向链表的实现。相较于 HashMap 的迭代器中混乱的访问顺序,LinkedHashMap 可以 阅读全文
posted @ 2017-08-15 17:23 _1900 阅读(392) 评论(0) 推荐(0) 编辑
摘要: Queue 也是 Java 集合框架中定义的一种接口,直接继承自 Collection 接口。除了基本的 Collection 接口规定测操作外,Queue 接口还定义一组针对队列的特殊操作。通常来说,Queue 是按照先进先出(FIFO)的方式来管理其中的元素的,但是优先队列是一个例外。 Dequ 阅读全文
posted @ 2017-08-15 17:20 _1900 阅读(13059) 评论(1) 推荐(4) 编辑
摘要: 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向 阅读全文
posted @ 2017-08-04 16:56 _1900 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 配置优化 zookeeper.session.timeout默认值:3分钟(180000ms)说明:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责 阅读全文
posted @ 2017-07-14 18:10 _1900 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 简介 HBase —— Hadoop Database的简称,Google BigTable的另一种开源实现方式,从问世之初,就为了解决用大量廉价的机器高速存取海量数据、实现数据分布式存储提供可靠的方案。从功能上来讲,HBase不折不扣是一个数据库,与我们熟悉的Oracle、MySQL、MSSQL等 阅读全文
posted @ 2017-07-14 16:36 _1900 阅读(342) 评论(0) 推荐(0) 编辑
摘要: https://docs.transwarp.io/5.0/goto?file=HyperbaseManual_intro-hbase.html#intro-hbase 阅读全文
posted @ 2017-07-14 16:27 _1900 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 简介 一种分布式的计算方式指定一个Map(映#x5C04;)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组 Pattern map: (K1, V1) → list(K2, V2) combine: (K2, lis 阅读全文
posted @ 2017-07-12 16:33 _1900 阅读(316) 评论(0) 推荐(0) 编辑
摘要: YARN是开源项目Hadoop的一个资源管理系统,最初设计是为了解决Hadoop中MapReduce计算框架中的资源管理问题,但是现在它已经是一个更加通用的资源管理系统,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,通过YARN来管理资源。如果你的应用程序也需要借助YARN 阅读全文
posted @ 2017-07-12 11:31 _1900 阅读(752) 评论(0) 推荐(0) 编辑
摘要: Hadoop - YARN 旧的MapReduce架构 JobTracker: 负责资源管理,跟踪资源消耗和可用性,作业生命周期管理(调度作业任务,跟踪进度,为任务提供容错) TaskTracker: 加载或关闭任务,定时报告认为状态 此架构会有以下问题: 总的来说就是单点问题和资源利用率问题 YA 阅读全文
posted @ 2017-07-12 11:05 _1900 阅读(471) 评论(0) 推荐(0) 编辑
摘要: HDFS - 写文件 1.客户端将文件写入本地磁盘的N#x4E34;时文件中 2.当临时文件大小达到一个block大小时,HDFS client通知NameNode,申请写入文件 3.NameNode在HDFS的文件系统中创建一个文件,并把该block id和要写入的DataNode的列表返回给客户 阅读全文
posted @ 2017-07-11 10:34 _1900 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 看过太多tcp相关文章,但是看完总是不过瘾,似懂非懂,反复考虑过后,我觉得是那些文章太过理论,看起来没有体感,所以吸收不了。 希望这篇文章能做到言简意赅,帮助大家透过案例来理解原理。 tcp的特点 这个大家基本都能说几句,面试的时候候选人也肯定会告诉你这些: 三次握手 四次挥手 可靠连接 丢包重传 阅读全文
posted @ 2017-07-03 11:25 _1900 阅读(1052) 评论(0) 推荐(0) 编辑
摘要: CAP 定理 CAP 定理(也称为 Brewer 定理),是由计算机科学家 Eric Brewer 提出的,即在分布式计算机系统不可能同时提供以下全部三个保证: 一致性(Consistency):所有节点同一时间看到是相同的数据; 可用性(Availability):不管是否成功,确保每一个请求都能 阅读全文
posted @ 2017-07-03 10:35 _1900 阅读(3161) 评论(0) 推荐(0) 编辑
摘要: 直接使用zk的api实现业务功能比较繁琐。因为要处理session loss,session expire等异常,在发生这些异常后进行重连。又因为ZK的watcher是一次性的,如果要基于wather实现发布/订阅模式,还要自己包装一下,将一次性订阅包装成持久订阅。另外如果要使用抽象级别更高的功能, 阅读全文
posted @ 2017-06-30 11:12 _1900 阅读(1844) 评论(0) 推荐(0) 编辑
摘要: 1.1 背景知识 由于历史原因,在创建一个具有双向通信机制的 web 应用程序时,需要利用到 HTTP 轮询的方式。围绕轮询产生了 “短轮询” 和 “长轮询”。 短轮询 浏览器赋予了脚本网络通信的编程接口 XMLHttpRequest,以及定时器接口 setTimeout。因此,客户端脚本可以每隔一 阅读全文
posted @ 2017-06-29 17:35 _1900 阅读(3521) 评论(0) 推荐(0) 编辑
摘要: 对于Thrift服务化的改造,主要是客户端,可以从如下几个方面进行: 1.服务端的服务注册,客户端自动发现,无需手工修改配置,这里我们使用zookeeper,但由于zookeeper本身提供的客户端使用较为复杂,因此采用curator-recipes工具类进行处理服务的注册与发现。 2.客户端使用连 阅读全文
posted @ 2017-06-16 11:12 _1900 阅读(2833) 评论(1) 推荐(1) 编辑
摘要: Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby 阅读全文
posted @ 2017-06-15 15:14 _1900 阅读(6560) 评论(0) 推荐(0) 编辑
摘要: redis info 参数 详解 info 以一种易于解释且易于阅读的格式,返回关于redis服务器的各种信息和统计数值 命令如下:(默认不需要all , 我习惯加 all ,你可以去掉all 对吧一下) redis-cli -h x.x.x.x -p xxxx info all all : 返回所 阅读全文
posted @ 2017-06-05 12:01 _1900 阅读(1482) 评论(0) 推荐(0) 编辑