- 博客(24)
- 资源 (3)
- 收藏
- 关注
原创 KMP算法
参考: 字符串匹配的KMP算法 The Knuth-Morris-Pratt Algorithm in my own words KMP算法详解 从头到尾彻底理解KMP关键字:KMP算法面试字符匹配模式匹配推荐阮一峰的讲解,清晰明了。
2017-08-24 10:18:49 1130
原创 正排索引、倒排索引
参考: 正排索引和倒排索引 倒排索引为什么叫倒排索引? 倒排索引、正排索引系列一inverted index,称为反向索引更为妥当。简单记为: 正排索引:文档—》单词 倒排索引:单词—》文档倒排索引有着广泛的应用场景,比如搜索引擎、大规模数据库索引、文档检索、多媒体检索/信息检索领域等等。总之,倒排索引在检索领域是很重要的一种索引机制。正排索引(正向索引)正排表是以文档的ID为关键字,表中
2017-08-23 10:50:37 1133
原创 一致性哈希
参考: 漫画:什么是一致性哈希? 五分钟理解一致性哈希算法(consistent hashing)简称DHT,主要用来分布式缓存中。一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。单调性(Monotonicity
2017-08-23 10:39:49 366
原创 同步、异步、事件驱动
参考: 非阻塞式I/O模型、异步与事件驱动–关于NodeJs的思考 Apache和Nginx比较 几种 IO编程比较首先需要区分一下异步、非阻塞式与事件驱动的定义。异步:从字面上来看即非同步(asynchronous/synchronous),发出请求后是否需要立即得到回复是异步与同步的工作模式的主要区别。在异步模式中,发出某个请求后不需要等待得到回复,直接return以便于继续后续工作,而同
2017-08-23 10:34:44 1913 1
原创 Dubbo 管理控制台启动报错
参考: 安装Dubbo管理控制台 2.5.4-SNAPSHOT dubbo admin error 下载dubbo-admin-2.5.4.war初次使用dubbo管理控制台,启动tomcat后,访问url报错,查看tomcat启动日志,发现以下错误:ERROR context.ContextLoader - Context initialization failedorg.springfr
2017-08-22 16:48:05 3550 1
原创 几种 IO编程比较
参考: Netty权威指南第一版 Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)1. 传统的BIO模型通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连接请求之后为每个客户端创建一个新的线程进行处理,处理完之后,通过流返回应答给客户端,线程销毁。这就是典型的—请求—应答通信模型。该模型最大的问题就是缺乏弹性伸缩能力,当客户端并发量增加后,服务端的线程
2017-08-22 10:49:46 1360
原创 Java代理
参考: 说说 JAVA 代理模式 java静态代理和动态代理事例小张是一个普普通通的码农,每天勤勤恳恳地码代码。某天中午小张刚要去吃饭,一个电话打到了他的手机上。“是XX公司的小张吗?我是YY公司的王AA”。“哦,是王总啊,有什么事情吗?”。沟通过后,小张弄明白了,原来客户有个需求,刚好负责这方面开发的是小张,客户就直接找到了他。不过小张却没有答应客户的请求,而是让客户找产品经理小李沟通。是小张
2017-08-22 09:27:11 1106
原创 Apache和Nginx比较
参考: Apache 与 Nginx 实际比较 Apache与Nginx的优缺点比较介绍Apache 和 Nginx 是世界上最通用的两大开源 Web 服务器。他们正为超过 50% 互联网流量传输提供服务。两种解决方案都能处理各种的工作场景,并与其他软件协同工作,从而提供完善的 Web 技术栈。尽管 Apache 和 Nginx 有许多共通的特性,并不能将它们视为可以完全相互替代的。它们各有所长
2017-08-22 09:24:52 722 2
原创 Nginx原理详解
参考: Nginx工作原理和优化、漏洞。1. Nginx模块和工作原理Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。Nginx的模块从结构上分为核心模
2017-08-22 09:24:14 3735
原创 Apache原理详解
参考: Apache运行机制剖析两种工作模式prefork的工作原理及配置 1)工作原理: 一个单独的控制进程(父进程)负责产生子进程(单一线程的子进程),这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的 (spare)或是空闲的子进程用于迎接即将到来的请求。这样客户端就无需在得到服务前等候子进程的产生。在Unix系统中,父进程通常以root身份运行以便邦定80端口,而
2017-08-22 09:23:28 6634
原创 I/O多路复用技术
Java NIO的核心类库多路复用Selector就是基于epoll的多路复用技术实现的。参考: Netty权威指南-第二版-李林锋 select、poll、epoll之间的区别总结 Linux IO模式及 select、poll、epoll详解1. I/O多路复用技术在IO编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者IO多路复用技术进行处理。IO多路复用技术通过把多个I
2017-08-11 19:51:42 333
原创 UML类图关系
参考博客: UML类图(上):类、继承和实现 UML类图几种关系的总结近来工作内容中设计到UML类图相关,看别人画得类图或其他UML,其中的关系、一些连接关系认识不是很清楚,同是以前也整理过,还是有点模糊。教导到,学习之所以称为学习,分拆之“学”与“习”,才能有更深的认识。同时,不单单看别人的设计、文档,所谓一名合格的程序员以及未来可能的软件架构师,对于UML的掌握是必须的。相关类图关系整理一下
2017-08-11 19:41:53 457
原创 Apache配置文件httpd.conf详解
Apache配置文件httpd.conf详解参考博客: Apache配置文件httpd.conf详解Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。一、主站点的配置(基本配置)1、 基本配置: ServerRoot “/mnt/software/apache2” #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目
2017-08-09 00:30:33 1248
原创 Java抽象类和抽象方法
Java抽象类和抽象方法参考博客: Java抽象类和抽象方法 java提高篇(五)—–抽象类与接口抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由 抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。 在抽象类中的成
2017-08-09 00:21:54 655
原创 Java 8的新特性
Java 8的新特性参考博客: 【译】Java 8的新特性—终极版 JAVA 8 函数式接口 - Functional Interface Java 8 新特性概述1. 简介Java8是Java自2004年的Java5之后最重要的更新版本,很多新特性被添加进来,包含语言、编译器、库、工具和JVM等方面的十多个新特性。这个教程包含Java开发者经常面临的几类问题:语言编译器库工具运行时
2017-08-09 00:20:45 518
原创 并发: IO模型
并发: IO模型参考博客:聊聊并发,Part 1:IO模型1. 内核级别的IO1.1 同步IO vs 异步IO看过很多版本对于这些概念的描述,我觉得来自POSIX标准的这个判断准则最简单也最容易理解: 从发出IO操作请求开始到IO操作结束的过程中没有任何阻塞,就称为异步,否则为同步1.2 IO 的两个阶段那么,问题来了,从请求开始到操作完成,IO具体做了什么呢?其实,IO可以分为两个阶段,以s
2017-08-07 23:52:18 1401
转载 Tomcat源码之Connector(2)
Tomcat源码之Connector(2)参考博客: Tomcat源码之Connector(2) Connector是Tomcat最核心的组件之一(另一个是Container),负责处理一个WebServer最核心的连接管理、Net IO、线程(可选)、协议解析和处理的工作。1. 连接器介绍在开始Connector探索之路之前,先看看Connector几个关键字:NIO:Tomcat可以利
2017-08-07 23:51:23 269
原创 TCP三次握手和四次挥手
一、TCP三次握手和四次挥手参考博客: TCP三次握手和四次挥手 TCP三次握手四次挥手详解 - zmlctt - 博客园 TCP/IP中MSL详解1. 三次握手TCP连接是通过三次握手来连接的。第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN(发送序列号)为m,等待服务器确认,此时SYN置1,表明需要服务的同步回应。这时客户端的状态
2017-08-07 23:50:31 397
原创 Tomcat源码之Connector(1)
Tomcat源码之Connector(1)参考博客: Tomcat源码之Connector (1)一、 Connector介绍1. Connector监听端口,接受客户端请求并转交给Engine处理,同时将答复转发给客户端。2. Connector种类 与Connector相关的类都在org.apache.coyote包中,分为几类:Http Connector,基于HTTP协议,负责建立HT
2017-08-07 23:46:20 691
原创 CSRF攻击及预防
CSRF攻击及预防参考博客 :浅谈CSRF攻击方式CSRF 攻击的应对之道1. 概念CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。2. 什么危害你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发
2017-08-07 23:45:20 279
原创 Oauth详解
Oauth详解 最近工作有接触过Oauth认证,虽然不需过多了解,但是深入理解一下还是有好处的。参考博客: 简述 OAuth 2.0 的运作流程 帮你深入理解OAuth2.0协议 OAuth 授权的工作原理是怎样的?足够安全吗?-知乎一、一个案例快速解释清楚背景:假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时给了你两个选择:
2017-08-07 23:44:26 2027 3
原创 Java NIO 详解(二)
Java NIO 详解(二)参考博客: Java NIO 详解(二) 本章重点介绍基于网络编程的NIO1. 异步IO异步 I/O 是一种没有阻塞地读写数据的方法。通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据。同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考另一篇文章Java IO。另一方面,异步 I/O 调用不但不会阻塞,相反,您可以注册对特
2017-08-07 23:43:22 1475 2
原创 Java NIO(一)
Java NIO 详解(一) NIO 在《JAVA编程思想》中文版中称之为New IO,当然也有其他地方称为No Block IO,我本人看来,称为New IO更好。 NIO 在java1.4加入。参考博客: Java NIO 详解(一) 理解Java NIO一、基本概念1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在Java编程中,一
2017-08-07 23:42:41 646
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人