随笔分类 - Java
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/p/Guava_Multimap.html 「竹子」欢迎转载,保留摘要,谢谢! BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。 通常情况下,我们在使用Java的Map时,往往是通过key来
阅读全文
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/p/Guava_Range.html 「竹子」欢迎转载,保留摘要,谢谢! 在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨
阅读全文
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/p/Guava_Objects.html 「竹子」欢迎转载,保留摘要,谢谢! 在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这
阅读全文
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/p/Guava_Preconditions.html 「竹子」欢迎转载,保留摘要,谢谢! 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我
阅读全文
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/archive/2013/06/14/Guava_Optional.html 「竹子」欢迎转载,保留摘要,谢谢! null 代表不确定的对象 null 本身不是对象,也不是 Objcet 的实例 null 对象的使用 Gua
阅读全文
摘要:摘要: 原创出处 http://www.cnblogs.com/peida/p/Guava_Multimap.html 「竹子」欢迎转载,保留摘要,谢谢! Multimap Multimap的实现 在日常的开发工作中,我们有的时候需要构造像Map<K, List>或者Map<K, Set>这样比较复
阅读全文
摘要:来聊聊 Spring Web 开发中的参数检验(Validation)。 参数检验是我们在 Web 编程时经常使用的技术之一,它帮助我们完成请求的合法性校验,可以有效拦截无效请求,从而达到节省系统资源、保护系统的目的。 相比较其他 Spring 技术,Spring 提供的参数检验功能具有独立性强、使
阅读全文
摘要:实际上,在 Spring 中,对于 Body 的处理很多是借助第三方编解码器来完成的。例如常见的 JSON 解析,Spring 都是借助于 Jackson、Gson 等常见工具来完成。所以在 Body 处理中,我们遇到的很多错误都是第三方工具使用中的一些问题。 真正对于 Spring 而言,错误并不
阅读全文
摘要:实际上,对于一个 HTTP 请求而言,URL 固然重要,但是为了便于用户使用,URL 的长度有限,所能携带的信息也因此受到了制约。 如果想提供更多的信息,Header 往往是不二之举。不言而喻,Header 是介于 URL 和 Body 之外的第二大重要组成,它提供了更多的信息以及围绕这些信息的相关
阅读全文
摘要:为了方便开发和部署,Spring Boot 在内部启动了一个嵌入式的 Web 容器。我们知道 Tomcat 和 Jetty 是组件化的设计,要启动 Tomcat 或者 Jetty 其实就是启动这些组件。在 Tomcat 独立部署的模式下,我们通过 startup 脚本来启动 Tomcat,Tomca
阅读全文
摘要:从今天起,我们开始学习状态模式。在实际的软件开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。从这一点上来看,它有点像我们之前讲到的组合模式。 状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有
阅读全文
摘要:上一节课,我们学习职责链模式的原理与实现,并且通过一个敏感词过滤框架的例子,展示了职责链模式的设计意图。本质上来说,它跟大部分设计模式一样,都是为了解耦代码,应对代码的复杂性,让代码满足开闭原则,提高代码的可扩展性。 除此之外,我们还提到,职责链模式常用在框架的开发中,为框架提供扩展点,让框架的使用
阅读全文
摘要:前几节课中,我们学习了模板模式、策略模式,今天,我们来学习职责链模式。这三种模式具有相同的作用:复用和扩展,在实际的项目开发中比较常用,特别是框架开发中,我们可以利用它们来提供框架的扩展点,能够让框架的使用者在不修改框架源码的情况下,基于扩展点定制化框架的功能。 今天,我们主要讲解职责链模式的原理和
阅读全文
摘要:文/朱季谦 说实话,其实我很讨厌在代码里大量使用if-else,一是因为该类代码属于面向过程的,二嘛,则是会显得代码过于冗余。这篇笔记,主要记录一些自己在工作实践当中针对if-else的优化心得,将会不定期地长期更新。 一、使用策略枚举来优化if-else 看到网上蛮多人推荐使用策略模式来优化if-
阅读全文
摘要:上一节课,我们主要介绍了策略模式的原理和实现,以及如何利用策略模式来移除 if-else 或者 switch-case 分支判断逻辑。今天,我们结合“给文件排序”这样一个具体的例子,来详细讲一讲策略模式的设计意图和应用场景。 通过今天的学习,你会发现,设计原则和思想其实比设计模式更加普适和重要,掌握
阅读全文
摘要:模板模式主要起到代码复用和扩展的作用。除此之外,我们还讲到了回调,它跟模板模式的作用类似,但使用起来更加灵活。它们之间的主要区别在于代码实现,模板模式基于继承来实现,回调基于组合来实现。 今天,我们开始学习另外一种行为型模式,策略模式。在实际的项目开发中,这个模式也比较常用。最常见的应用场景是,利用
阅读全文
摘要:上一节课中,我们学习了模板模式的原理、实现和应用。它常用在框架开发中,通过提供功能扩展点,让框架用户在不修改框架源码的情况下,基于扩展点定制化框架的功能。除此之外,模板模式还可以起到代码复用的作用。 复用和扩展是模板模式的两大作用,实际上,还有另外一个技术概念,也能起到跟模板模式相同的作用,那就是回
阅读全文
摘要:上两节课我们学习了第一个行为型设计模式,观察者模式。针对不同的应用场景,我们讲解了不同的实现方式,有同步阻塞、异步非阻塞的实现方式,也有进程内、进程间的实现方式。除此之外,我还带你手把手实现了一个简单的 EventBus 框架。 今天,我们再学习另外一种行为型设计模式,模板模式。我们多次强调,绝大部
阅读全文
摘要:上一节课中,我们学习了观察者模式的原理、实现、应用场景,重点介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。 同步阻塞是最经典的实现方式,主要是为了代码解耦;异步非阻塞除了能实现代码解耦之外,还能提高代码的执行效率;进程间的观察者模式解耦更加彻底,一般
阅读全文
摘要:我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。前面我们已经学习了创建型和结构型,从今天起,我们开始学习行为型设计模式。我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。
阅读全文

浙公网安备 33010602011771号