自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 聊聊Java源码 — HashMap(1)

起初呢,HashMap只是一个小小的数组,它拿到key之后,通过一个叫hash的算法,得到与该key对应的数组下标,并把key和value都存储到这个位置上,这就是HashMap的一个Node,计算这个下标的算法受数组长度和key值的影响,只要两者不变,位置就是固定的,所以在查询时花费的时间复杂度是O(1)。当你的key越来越多,出现两个甚至多个key被hash到同一个位置的情况,这就是hash碰撞,怎么办?

2016-09-17 16:45:41 1836

原创 Tomcat架构学习总结

首先用java编写一个最简单的http服务器我们需要做什么? 1.创建ServerSocket对象并监听某个端口(假定为8080) 2.接收请求的字节流,解析并处理http协议内容 3.执行业务逻辑 4.响应处理结果 大家都知道,为了执行业务逻辑,我们需要做大部分的重复工作,而且网络连接这块情况复杂容易出现问题,在实际工作中还要面对安全管理、监控管理等复杂问题。Tomcat这样的web服

2017-08-27 22:57:14 468

原创 SpringMVC源码之DispatchServlet请求处理

我们编写Servlet处理Http请求时需要继承HttpServlet,因为在它的service方法中会把Web容器中获取到的HttpServletRequest和HttpServletResponse对象分发到doGet、doPost、doPut等七个方法中进行处理,我们只需覆写对应的方法即可,如覆写doGet方法来处理get类型的请求。

2016-10-24 08:42:26 5278

转载 深入Tomcat源码分析Session到底是个啥!

Session到底是个啥?我们都知道,HTTP协议本身是无状态的(Stateless),这对于一些简单的页面展示来说,功能足够,不受影响。而对于日渐复杂的动态页面、应用,各种需要登录认证等场景,就力不从心了。试想对于一个已经登录的用户仍然一次次的提示登录,会是什么感受呢?因此,多数需要保持状态的应用,就要保证客户端和服务端交互状态的一致。对

2016-10-19 14:48:02 428

转载 Nginx/ZooKeeper 负载均衡的差异

Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡那么他们的区别是什么?如何选择呢?

2016-10-18 12:33:11 683

原创 SpringMVC源码之解读DispatcherServlet初始化流程

SpringMVC的配置流程并不复杂,但每个步骤所涉及的东西比较多,一不小心配错可就糟糕了。但这参与感十足的配置方式除了它的灵活性外,也能让我们更加清楚框架在为我们服务之前,到底做了哪些事情,接下来我们就到源码中去看看SpringMVC的核心入口类DispatcherServlet在Web容器启动后做了哪些准备。

2016-10-18 09:52:09 2176

转载 深入浅出ClassLoader

1.为什么你需要了解和敬畏ClassLoaderClassLoader在Java语言中占据了核心地位,Java应用服务器,OSGi,以及大量的网络框架,它们大多数都用到了ClassLoader。如果在使用过程中出现了类加载错误,你能解决它吗?我们将从JVM和开发者两个角度讲述ClassLoader,将会选择一些典型的案例,然后演示如何解决它们。NoClassDefFoundError,Linkag

2016-10-09 15:32:46 507

原创 Tomcat的server.xml配置文件解析

server.xml是我们配置和优化Tomcat时最重要的文件,Tomcat的几大核心组件都在这里配置,它上手容易,即食即用,见效快。对想要理解Tomcat原理的读者来说就更必不可少了,下面是它的标签结构。

2016-10-08 17:38:50 626

原创 聊聊设计模式 — 观察者模式

想必玩过网络游戏的读者都知道任务系统,就是有人交给你个任务,然后你去完成这个目标。比如打打怪什么的,当你达成目标后,系统会提示你任务完成,还会给你点小奖励。那系统是怎么跟踪任务的,它怎么就知道你完成了呢? 今天我们就从游戏的角度来了解观察者模式,首先我们需要编写玩家和任务系统两个对象,最后在场景类中进行调用。

2016-10-03 14:39:49 772

原创 聊聊设计模式 — 模板方法模式

模板方法模式概括起来,就是先定义一个父类,然后写个模板方法包含一套处理流程,流程中的每个步骤都对应到独立的方法中处理,最后在模板方法中按照顺序汇总执行。流程可以这样理解,比如我们把下班回家吃饭分成三个步骤:1.下班回家 2.做饭 3.吃饭,这就是一个流程,而且必须得按照逻辑顺序,你肯定不能先吃饭,再做饭吧。而人千千万,是不可能一模一样的,有人开车回家,有人挤地铁回家,这就是子类要做的事,覆写父类的步骤方法,给出自己的

2016-09-21 21:54:18 784

转载 消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、Ra

2016-08-27 17:30:06 827

转载 消息队列的流派之争

这篇文章的标题很难起,网上一翻全是各种MQ的性能比较,很容易让人以为我也是这么“粗俗”的人(o(╯□╰)o)。我这篇文章想要表达的是——它们根本不是一个东西,有毛的性能好比较?MQ是什么 Message Queue(MQ),消息队列中间件。很多人都说:MQ通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ是异步的,用来解耦的,但是这个只是MQ的效果而不是目的。MQ真正的

2016-08-26 11:44:30 654

原创 Thrift应用实践—基本篇

Thrift作为一个RPC框架,很好的解决了跨语言调用问题,并提供灵活高效的传输方式和Server模式。在实际应用中,个人认为Thrift更多的是用于系统的解耦,负责模块间的通信,使各模块可以独立开发、测试和发布等,一般情况下无需担心跨语言调用和传输性能问题。

2016-08-23 15:01:18 1207 1

Thrift简单调用demo代码

Thrift的简单使用demo

2016-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除