Think Different


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Docker学习笔记:Java Web

发表于 2016-07-26 | 分类于 Docker | 阅读次数:

因偶然接触到Docker,详细了解了Docker的应用场景觉得Docker的容器化确实是一种未来的趋势难怪自Docker发布以来一直这么火爆,必定在多种场景中都会有所应用,所以我利用空余时间来学下Docker,在博客里记录下学习过程。Docker基本操作这系列文章里就不表述了。

在Java web应用比如利用SSH框架编写的web应用,使用Tomcat部署运行,在这个典型的场景中使用Docker来将其容器化,以便在开发-测试-部署一整套流程中避免遇到环境不一致等很多不必要的麻烦。

以此我们使用3个docker容器来运行Web程序。分别运行tomcat、mysql以及一个数据存储容器专门用来存储数据库数据,将数据库程序与数据存储分离的好处就是但需要升级或者移值数据库时可以更加的方便。

这里我们使用Docker Compose来进行编排,什么是Docker Compose,官方文档描述的很清楚:

阅读全文 »

Hello Maven中央仓库

发表于 2016-07-19 | 分类于 Java | 阅读次数:

前段时间做课题相关测试涉及到排序算法,排序算法作为一个程序员必须要求掌握算法,在很多环境下还是蛮有用的,所以就利用点时间整理了下现有常用的排序算法,详见Github sort-tool,包含了冒泡排序、选择排序、归并排序、快速排序、插入排序、希尔排序、堆排序等,有时间打算继续完善下这个工具包。

为了方便以后项目中可能会使用到这些排序算法,避免重复造轮子,就进行了整理和实现,打包成了jar文件方便使用,并将其上传至Maven中央仓库,虽然代码比较简单,但也是我的第一个Maven构建,小小纪念一下。

这里记录下发布至Maven中央仓库的过程。

阅读全文 »

Java NIO用allocateDirect()方法创建直接缓存区导致的释放问题

发表于 2016-07-16 | 分类于 Java NIO | 阅读次数:

在Java nio中针对缓存区的直接分配有两种方法分别为allocate(int capacity)和allocateDirect(int capacity),区别是前者分配的是堆内内存,后者分配的是堆外内存。当数据处理时操作系统总是将数据读取到系统内存中,再由JVM将数据复制到堆内内存中,所以使用和allocateDirect分配的直接缓存区使得I/O效率大大高于分配间接缓存区,但是使用直接缓存区在分配和销毁时代价比堆内存要大,所以在使用上应具体分析。以下是Sun文档对直接缓存区的描述:

给定一个直接字节缓冲区,Java 虚拟机将尽最大努力直接对它执行本机 I/O 操作。也就是说,它会在每一次调用底层操作系统的本机 I/O 操作之前(或之后),尝试避免将缓冲区的内容拷贝到一个中间缓冲区中(或者从一个中间缓冲区中拷贝数据)。

阅读全文 »

Hexo-Travis CI

发表于 2016-07-09 | 分类于 CI | 阅读次数:

Travis CI is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub.

Hexo blog system could using Travis CI.It will help you automatic building and Deploying.

How to using Travis CI for Hexo

阅读全文 »

GitFlow工作流

发表于 2016-07-07 | 分类于 Git | 阅读次数:

最近没事喜欢逛逛Github,看看热门的开源项目,感觉还是蛮不错的,可以了解到最新的前沿技术,拓展知识面。GitHub之于开源世界如同FaceBook之与互联网社交一般。今天就来分享一下针对Git分布式版本控制系统,在软件开发中所使用的GitFlow工作流。

工作流有各种各样,主要可分为集中式工作流、功能分支工作流、GitFlow工作流、Forking工作流。其中GitFlow工作流可以说是功能分支工作流的升华。

何为GitFlow

Gitflow工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

阅读全文 »

【转载】软件设计原则

发表于 2016-06-24 | 分类于 转载 | 阅读次数:

Don’t Repeat Yourself (DRY)

DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法。

参考:http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

Keep It Simple, Stupid (KISS)

KISS原则在设计上可能最被推崇的,在家装设计,界面设计 ,操作设计上,复杂的东西越来越被众人所BS了,而简单的东西越来越被人所认可,比如这些UI的设计和我们中国网页(尤其是新浪的网页)者是负面的例子。“宜家”(IKEA)简约、效率的家居设计、生产思路;“微软”(Microsoft)“所见即所得”的理念;“谷歌”(Google)简约、直接的商业风格,无一例外的遵循了“kiss”原则,也正是“kiss”原则,成就了这些看似神奇的商业经典。而苹果公司的iPhone/iPad将这个原则实践到了极至。 把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。

阅读全文 »

Java NIO初探

发表于 2016-06-22 | 分类于 Java NIO | 阅读次数:

因为研究项目实验论证方面的需要所以接触到了Java NIO,之前因为使用普通的Java IO导致性能十分低下,实验数据相当不理想。至此了解到了Java NIO技术。 >新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准Java代码中提供了高速的、面向块的I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的。

阅读全文 »

Apache CXF+SSH搭建webservice

发表于 2014-04-08 | 分类于 Java Web | 阅读次数:

之前几次的项目后台这方面一直由我来负责,经过几次使用也比较熟悉了,趁着刚建了个blog就介绍下webservice环境配置。 ## 准备工作 首先要去Apache 网站下载CXF jar包,structs2、spring、hibernate的库可以自己下载,如果是用myeclipse用集成的也可以。 关于Apache CXF 所必须要使用的Jar包如果嫌麻烦可以直接把libs里的文件全部拷出来,如果和SSH里重复了移除就好,这里就不再多说了。 ## 集成环境 进入正题,当把所有依赖的jar包都准备完成的时候,把所有jar文件复制到WEB-INI/lib目录里即可。 建立spring的配置文件applicationContext.xml:

阅读全文 »
12
Zhipeng Shen

Zhipeng Shen

18 日志
9 分类
10 标签
GitHub Weibo Linkedin E-Mail
© 2017 Zhipeng Shen
Hosted by Coding Pages