1. 概述
平常我们开发中,可能用的最多的容器就是HashMap。我们来看下HashMap的结构如下图。
它是由一个Node数组,每个数组元素又是有一个链表构成。接下来我们结合源码来分析下put(),get(),resize()者三个常见的操作。
more >>
Talk is nothing,Show me the code
平常我们开发中,可能用的最多的容器就是HashMap。我们来看下HashMap的结构如下图。
它是由一个Node数组,每个数组元素又是有一个链表构成。接下来我们结合源码来分析下put(),get(),resize()者三个常见的操作。
more >>
在我们日常用springboot的开发过程中,经常会遇到使用如下的一个类来代表程序的入口类。即
包括我自己,我平常在开发的过程中,并没有去重点关注spring boot的运行原理,大家都是约定俗成的这么去使用。接下的过程中,将会结合源码简单的分析下springboot运行原理。
more >>
在我平常的工作中我们往往会写下如下的代码。
以上代码的问题在于我们要增加种类的时候,需要打开这段代码进行修改。这样造成系统难以维护,也更容易犯错。
我们对拓展开放,对修改关闭。通常这种情况下,应该抽象出变化的部分。
more >>
在我们的工作中,往往会这样的需求,就是动态地将责任附加到对象上,来达到拓展对象功能的目的。例如,对于做饼这件事来说,往往在做好一个饼之后,会有加糖,加盐,加鸡蛋这样类似的客户需求,不同的需求价格当然不同。我们通常的做法创建基类(Cake),然后让其他的子类继承它,试想下,如果如果有很多的类,岂不是会造成类爆炸,新出一款新的饼,就会构造一个类,计算不同的价格。而装饰者模式应用在这上面就非常的好。你想加糖,那我在外面包装一层,把额外的价格加上去。以后如果有几种配料的叠加,不用创造新的类,由原来的子类通过装饰者模式包装起来就行。
more >>
WebSocket是html5带来的一项重大的特性,使得浏览器与服务端之间真正长连接交互成为了可能,这篇文章会带领大家窥探一下Spring 对WebSocket的支持及使用。
more >>
在我们的开发工作中,经常会遇到这样的问题。例如:对于A,对象B,C在原来引用了A。现在对象A的属性发生了变化,我们的需求是B,C能够同时感应到这种变化。且新增的对象D,也要引用A对象,那如何在不改变原来代码的基础上,如何做到呢。此时,观察者模式就能够很好的解决这个问题。
more >>
作者在看HeadFirst设计模式,把整个学习过程记录下来,方便以后回顾,也可以与大家交流,欢迎拍板。整个系列每篇文章围绕why,how,conclusion这三方面展开。
more >>
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true