会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
无知者云
分享关于如何做好软件的思考与实践
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
下一页
2017年3月14日
Servlet 3.0/3.1 中的异步处理
摘要: 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成, 而IO操作是非常慢的,所以此时的线
阅读全文
posted @ 2017-03-14 16:58 无知者云
阅读(27763)
评论(2)
推荐(8)
2017年3月12日
Java集合学习笔记
摘要: 在Java中,我们经常听到Collections框架、Collection类以及Collections类。这三者名字相似,但是从概念上讲却是不同的。Collections框架泛指Java中用于存储和操作集合的类库总和,其中包括了List、Set和Map等。但是在具体实现上,由于Map中装的是Key-
阅读全文
posted @ 2017-03-12 17:21 无知者云
阅读(3504)
评论(0)
推荐(4)
2017年3月10日
Java垃圾回收学习笔记
摘要: 通常来说,要写Java代码,你基本上都没必要听说垃圾回收这个概念的。这不,对于已经写了多年Java代码的我来说,我还没有哪次经历说是需要使用垃圾回收方面的知识来解决问题的。但是,我依然督促自己花了几天时间系统性地(也比较浅显地)学习了Java垃圾回收机制。我认为学习Java垃圾回收机制至少可以得到以
阅读全文
posted @ 2017-03-10 14:28 无知者云
阅读(3036)
评论(1)
推荐(2)
2016年9月28日
你究竟有多了解Spring?
摘要: 有句话这么说的:程序员的能力不在于增加代码的能力,而在于减少代码的能力。基于这个我认之为真的命题,我经常问和我一起工作的程序员:你的程序还能不能精简一点?如果能,那能不能再精简一点? 要减少程序,往往建立在程序员对自己的程序代码本身、对业务,以及对所使用的技术框架都非常的熟悉的情况下,而这些就是一个
阅读全文
posted @ 2016-09-28 12:03 无知者云
阅读(4683)
评论(18)
推荐(1)
2016年9月22日
用Vagrant和Ansible搭建持续交付平台
摘要: 这是一个关于Vagrant的学习系列,包含如下文章: 随着微服务越来越被行业所接受,与之相关的持续集成和持续交付的作用和价值也更加突显。在本文中,我们将使用Vgrant和Ansible来自动地创建一套持续交付平台——ThoughtWorks的GoCD。如果你对Jenkins比较熟悉,也可以参考笔者另
阅读全文
posted @ 2016-09-22 17:23 无知者云
阅读(6221)
评论(1)
推荐(2)
2016年8月26日
用Vagrant创建Jenkins构建环境
摘要: 这是一个关于Vagrant的学习系列,包含如下文章: 在上一篇文章中,我们讲到了如何创建自己的vagrant box。本文中,我们将使用Vagrant一次性创建3台虚拟机以组成一个Jenkins的master-slave构建环境,其中包含1台Jenkins master机器,2台slave机器。我们
阅读全文
posted @ 2016-08-26 14:12 无知者云
阅读(4895)
评论(1)
推荐(1)
2016年8月21日
创建自己的Vagrant box
摘要: 这是一个关于Vagrant的学习系列,包含如下文章: 在上一篇中,我们讲到了Vagrant的基本使用,在本文中我们将尝试创建自己的Vagrant box。 本文源代码:https://github.com/davenkin/vagrant/tree/master/ubuntu1604-jdk1.8-
阅读全文
posted @ 2016-08-21 09:07 无知者云
阅读(17734)
评论(4)
推荐(2)
2016年8月20日
Vagrant入门
摘要: 简单地说,Vagrant让我们可以通过代码的方式快速地、可重复地创建针对不同虚拟环境的虚拟机,包括Virtualbox、AWS、Docker等。它使得我们可以一次性地、自动创建多个环境相同的虚拟机,对于软件开发和测试尤其有用。本文我们将以Virtualbox为例,看看Vagrant的基本使用。 这是
阅读全文
posted @ 2016-08-20 18:18 无知者云
阅读(45311)
评论(3)
推荐(4)
2016年8月15日
Maven提高篇系列之(六)——编写自己的Plugin(本系列完)
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 在本系列的上一篇文章中,我们讲到了如何处理依赖冲突,在本文中,我们将讲到如何编写自己的Plugin。 Maven就其本身来说只是提供一个执行环境,它并不知道需要在项目上完成什么操作,真正操作项目的是插件(plugin),比如编译Java有Compil
阅读全文
posted @ 2016-08-15 17:39 无知者云
阅读(20952)
评论(0)
推荐(4)
Maven提高篇系列之(五)——处理依赖冲突
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 在本系列的上一篇文章中,我们讲到了如何使用Profile,在本文中,我们将讲到如何处理Maven的依赖冲突。 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,
阅读全文
posted @ 2016-08-15 09:34 无知者云
阅读(28699)
评论(1)
推荐(1)
2016年8月14日
Maven提高篇系列之(四)——使用Profile
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 在开发项目时,设想有以下场景: 你的Maven项目存放在一个远程代码库中(比如github),该项目需要访问数据库,你有两台电脑,一台是Linux,一台是Mac OS X,你希望在两台电脑上都能做项目开发。但是,安装Linux的电脑上安装的是MySQ
阅读全文
posted @ 2016-08-14 09:45 无知者云
阅读(23158)
评论(0)
推荐(3)
2016年8月13日
Maven提高篇系列之(三)——使用自己的Repository(Nexus)
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 平时我们自己做的项目都是直接使用Maven提供的Central Repository,但是对于公司来说直接使用公共的Maven Central Repository就不见得是件好事了,比如我们需要考虑安全问题。此时你可以创建一个公司专属的Reposi
阅读全文
posted @ 2016-08-13 18:24 无知者云
阅读(34627)
评论(0)
推荐(2)
Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 持续交付要“自动化所有东西”,对于集成测试也是一样。集成测试和单元测试相比需要更多的环境准备工作,包括测试数据的准备和启动服务器等。在本篇中我们设想以下一种场景: 你开发了一个web应用,集成测试使用了Selenium,你希望通过一个Maven命令跑
阅读全文
posted @ 2016-08-13 09:46 无知者云
阅读(9706)
评论(0)
推荐(1)
2016年8月12日
Maven提高篇系列之(一)——多模块 vs 继承
摘要: 这是一个Maven提高篇的系列,包含有以下文章: 通常来说,在Maven的多模块工程中,都存在一个pom类型的工程作为根模块,该工程只包含一个pom.xml文件,在该文件中以模块(module)的形式声明它所包含的子模块,即多模块工程。在子模块的pom.xml文件中,又以parent的形式声明其所属
阅读全文
posted @ 2016-08-12 22:35 无知者云
阅读(34826)
评论(4)
推荐(7)
2014年7月24日
领域驱动设计(DDD)实现之路
摘要: 2004年,当Eric Evans的那本《领域驱动设计——软件核心复杂性应对之道》(后文简称《领域驱动设计》)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事情了。那时,我正打算在软件开发之路上更进一步,经同事介绍,我开始接触DDD。 我想,多数有经验的程序开发者都应该听说过...
阅读全文
posted @ 2014-07-24 13:34 无知者云
阅读(13393)
评论(11)
推荐(7)
2014年3月11日
《实现领域驱动设计》译者序
摘要: 2013年秋天的某个周末,我在公司翻译本书。对面一个刚入职的大学毕业生向我问起一个关于软件建模的问题,我给她讲到了实体、领域服务和限界上下文等概念。语毕,我立即有两点感触:第一,我已经被DDD深深影响了;第二,即便是对于那些小的软件项目,DDD依然有用武之地。 通常的看法是,DDD更适合于大型的软件
阅读全文
posted @ 2014-03-11 16:03 无知者云
阅读(1329)
评论(1)
推荐(0)
2013年11月18日
Gradle学习系列之十——自定义Plugin(本系列完)
摘要: 在本系列的上篇文章中,我们讲到了如何自定义Task类型,在本篇文章中,我们将讲到如何自定义Plugin。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git 在Plugin中,...
阅读全文
posted @ 2013-11-18 18:04 无知者云
阅读(38427)
评论(5)
推荐(6)
2013年11月16日
Gradle学习系列之九——自定义Task类型
摘要: 在本系列的上篇文章中,我们学习了多Project构建,在本篇文章中,我们将学到如何自定义Task类型。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git 在前面的文章中我们讲...
阅读全文
posted @ 2013-11-16 11:55 无知者云
阅读(26216)
评论(6)
推荐(4)
2013年11月15日
Gradle学习系列之八——构建多个Project
摘要: 在本系列的上篇文章中,我们讲到了Gradle的依赖管理,在本篇文章中,我们将讲到如何构建多个Project。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git Gradle为...
阅读全文
posted @ 2013-11-15 09:28 无知者云
阅读(46205)
评论(2)
推荐(8)
2013年11月14日
Gradle学习系列之七——依赖管理
摘要: 在本系列的上篇文章中,我们讲到了如何使用java Plugin,在本篇文章中,我们将讲到Gradle的依赖管理。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git 一个Jav...
阅读全文
posted @ 2013-11-14 20:40 无知者云
阅读(48859)
评论(0)
推荐(3)
上一页
1
2
3
4
5
下一页