
java
文章平均质量分 76
kiwi小白
这个作者很懒,什么都没留下…
展开
-
Java NIO Fundamentals
Basic Concepts1. Channel & Buffer: data is always read from channel to buffer, or writtern from buffer to channel2. Non-blocking IO: non-blocking while read and write data3. Selector: A single t原创 2016-06-25 17:51:18 · 2058 阅读 · 0 评论 -
java8 Stream和Lisp对比
java8支持了函数式编程,lisp中最基本的元素就是list,car,cdr,cons,那么通过java8的stream API怎么能够构建类似lisp的使用方式呢?1.(car list)取出头list.stream().findFirst().get()2. (cdr list) 取出除头部外list.stream().skip(1)原创 2015-10-09 18:07:39 · 2824 阅读 · 0 评论 -
脑法之一 --- DEBUG与搜索算法
何为DEBUG?DEBUG,就是搜索BUG,让后把它DE了。原创 2015-07-21 13:46:04 · 2891 阅读 · 3 评论 -
【文档摘要】J2EE Persistence - Controlling Concurrent Access to Entity Data with Locking
参考资料:https://docs.oracle.com/javaee/7/tutorial/doc/persistence-locking001.htm#GKJHZ原创 2014-11-24 21:20:03 · 1317 阅读 · 0 评论 -
【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Querying Entities】
JPQL (Java Persistence Query Language)\Criteria API(typesafe)原创 2014-11-20 23:39:32 · 1198 阅读 · 0 评论 -
【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Managing Entities】
Entity ManagerEntity Manager是和一个对应的Persistent Context相关原创 2014-11-19 22:15:57 · 992 阅读 · 0 评论 -
【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Entities Inheritance】
参考资料:https://docs.oracle.com/javaee/7/tutorial/doc/persistence-intro002.htm原创 2014-11-19 18:14:37 · 866 阅读 · 0 评论 -
【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Entities】
1. 参考资料:https://docs.oracle.com/javaee/7/tutorial/doc/persistence-intro001.htm#BNBQA原创 2014-11-19 11:21:25 · 1042 阅读 · 0 评论 -
AWS ELB配置HTTPS转HTTP时,Jersey中scheme的问题
AWS ELB配置HTTPS转HTTP这个时候,后端instance收到的请求就是http,如果你使用了类似UriInfo.getBaseUri这样的方法去构造HATEOS,那么你返回的URI就会是http://api.server.com/,而非https://api.server.com/读ELB相关文档,ELB会在request上加上X-Forwarded-Proto,所以,原创 2014-09-26 21:40:05 · 5406 阅读 · 0 评论 -
Centos java standalone service - boot on start
假设我们已经有一个jar包:原创 2014-09-23 19:50:00 · 1319 阅读 · 0 评论 -
java8中的Date、DateTime、Instant
LocalLocalDate.of(2014, 1, 20);=> 2014-1-20也可以表示为:LocalDate.of(2014, Month.JANUARY, 20)原创 2014-07-23 22:43:13 · 26738 阅读 · 2 评论 -
Xtext Headless模式代码生成
XtextXtext是eclipse下用于构建DSL的工具。其使用非常方便,除了支持开发DSL以外,还能得到eclipse语法高亮、错误提示等功能。http://www.eclipse.org/Xtext/index.html建议先读读官方文档里面的最开始的几个tutorial,对Xtext的使用有个大概的了解。http://www.eclipse.org/Xtext/documentat原创 2014-07-21 22:06:30 · 2066 阅读 · 0 评论 -
Mongodb ODM: morphia
Mongodb Java Driver虽然Mongodb提供了java driver,但是如果我们直接使用driver进行mongodb的操作,代码冗余很多,使用不是方便,容易出错。这就像我们在RDBMS中使用sql直接操作数据库一样,大多数时候我们不提倡这样做,更多的时候我们使用MyBatis或者Hibernate做ORM。Mongodb中有这样的工具帮助我们完成ODM吗?有很多,这里我原创 2014-07-16 12:13:26 · 3072 阅读 · 0 评论 -
Java中的Mongodb单元测试
如何进行Mongodb测试?我们在java中使用Mongodb作为数据库进行存储的时候,怎么样对于进行测试呢?一种可能直接的方式就是在setUp中getDB,然后在tearDown里面dropDatabase。这样的方式相对来说比较慢。一种更好的方式就是使用fake的数据库,比如embedded的Mongodb用于测试。http://xunitpatterns.com/Test%20Doubl原创 2014-07-16 11:10:01 · 7061 阅读 · 0 评论 -
Jersey中处理POST格式的Best Practice
REST中,我们可以把接受POST请求的方式写成如下的方式: @POST @Consumes(MediaType.APPLICATION_JSON) public Response createProduct(CreateProductJson createProductJson, @Context UriInfo uriInfo) {CreatePr原创 2014-06-26 01:01:52 · 6053 阅读 · 0 评论 -
使用Mockito中@Mock快速创建mock对象
1. 快速创建Mock对象:我们创建mockdui'xiang原创 2014-06-25 00:15:24 · 11249 阅读 · 0 评论 -
Spring Boot + Jersey
Jersey是一个非常好的Java REST API库。当你用Jersey实现REST的时候,是非常自然的。同时Spring Boot是Java世界中另一个很好的工具,它减少了程序的应用配置。这篇博客就介绍下如何将Jersey和Spring Boot结合起来使用。原创 2014-06-21 17:49:22 · 11142 阅读 · 1 评论 -
java8中的map和reduce
java8中最受人期待的就是lambda,引入了map和reduce。map和reduce原创 2014-06-19 19:14:45 · 46566 阅读 · 6 评论 -
初识Spring Boot
参考资料Spring Boot Referencehttp://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-first-application-executable-jar原创 2014-05-26 10:03:07 · 19487 阅读 · 0 评论 -
Java线程基础(四):ThreadGroup、Volatility
ThreadGroup参考资料:http://www.javaworld.com/article/2074481/java-concurrency/java-101--understanding-java-threads--part-4---thread-groups--volatility--and-threa.html原创 2014-04-28 11:58:21 · 959 阅读 · 0 评论 -
Java线程基础(三):线程调度以及wait/notify
参考资料:http://www.javaworld.com/article/2071214/java-concurrency/java-101--understanding-java-threads--part-3--thread-scheduling-and-wait-notify.html原创 2014-04-24 09:43:13 · 991 阅读 · 0 评论 -
Java线程基础(二):Synchronization
can'o'kaohttp://www.javaworld.com/article/2074318/java-concurrency/java-101--understanding-java-threads--part-2--thread-synchronization.html原创 2014-04-23 13:19:58 · 1198 阅读 · 0 评论 -
Java线程基础(一):Thread和Runnable
参考资料:http://www.javaworld.com/article/2074217/java-concurrency/java-101--understanding-java-threads--part-1--introducing-threads-and-runnables.html原创 2014-04-23 09:31:57 · 1273 阅读 · 0 评论 -
Log4j ObjectRenderer定制对象显示
log是每个应用必备的功能,log4j是其中使用很多的一个:logger.info("something happend");可能有人认为log4j只能log一般的String,其实不然,log4j也能log一般的Object:logger.info(new Hello("kiwi", "Good morning"));但是这个时候,显示的是:0 [main] INFO原创 2014-04-09 15:08:53 · 2937 阅读 · 1 评论 -
玩玩儿Flyway:数据库迁移
在软件开发的过程中,我们原创 2014-04-05 16:39:23 · 10401 阅读 · 4 评论 -
Java中的String、StringBuilder、StringBuffrer
StringString就是字符串,Java中的字符串是Immutable(不可变的)。如: String before = "before"; String after = before.replace('b', 'e'); // before => "before", after => "eefore"因为String本身是原创 2014-03-31 13:21:24 · 6054 阅读 · 0 评论 -
Spring Transaction属性之Isolation
上一篇博客《Spring Transaction属性之Propagation》讲解了Propagation相关的知识,这篇博客主要关注于Isolation这个属性。一、Isolation基础请先移步Wikipedia:isolation.Isolation Level VS Phenomena上图来自wikipeida。注意:Isolation Level仅仅会原创 2014-03-04 19:40:10 · 27781 阅读 · 1 评论 -
Spring Transaction属性之Propagation
我们平常使用spring transaction时,我们大多都习惯于使用@Transactional,对于这个annotation可以有些什么配置,在什么情况下使用了解比较少。这篇博客主要关注于@Transactional中4个属性之一 -- propagation。Propagation取值:REQUIRED(默认值):在有transaction状态下执行;如当前没有transa原创 2014-03-01 15:04:04 · 79217 阅读 · 12 评论 -
白天不懂夜的黑--java中时区的问题
今天早上,项目站会,在澳大利亚的客户说,我们应该在提交代码之前在本地跑测试。我心里觉得委屈啊,我提交代码的时候的确都是跑了测试的啊。多争无益,于是,我又去看看代码到底是不是有什么问题。在我的DA(Desktop Anywhere)中,我使用和CI上相同的命令又跑了一次,还是OK的。在这里被卡住了一下,于是找澳大利亚的客户帮忙看看是不是CI上的配置发生了变化。客户说CI是原创 2014-02-13 20:23:50 · 1654 阅读 · 0 评论 -
IntelliJ中使用Drop Frame进行调试
我们在写程序时,时不时还是需要debug,以前debug的时候有时候手一抖,就容易跳过断点之类的。然后就只有窝火重来。前天和同事pair的时候,学习到了使用Drop Frame的方式进行调试,下面就简单演示一下。启动调试后,在IntelliJ左下角有一个Debugger的框框:现在程序执行到throwException这个方法。右键,选Drop Frame。相当原创 2014-01-26 22:00:44 · 21414 阅读 · 0 评论 -
真心不想再神戳戳的用Guava写FP了
很多人认为我们应该用Guava在Java中实现Functional Programming。但是我以为,这就好比逼着四川人说普通话一样的。。。“整啥子函数式编程嘛,吃多求了,写出来弯儿隔揪的,弄都弄不称头,应是装疯迷窍的”。。。原创 2014-01-14 21:29:41 · 1806 阅读 · 0 评论 -
新技术的窘境
小的终究会代替大的,简单的终究会代替复杂的。原创 2013-12-27 22:56:47 · 1773 阅读 · 2 评论 -
IntelliJ Live Template进阶使用
在《IntelliJ下使用Code/Live Template加快编码速度:程序员的工作不是写程序,而是写程序解决问题》中简单的介绍了为什么要使用Live Template,以及Live Template可以给我们带来怎样的好处,这篇博客将会介绍如何使用Live Template中的一些进阶功能。回到第一篇博客的例子,java中的foreach语句:这里的items这几个字是由In原创 2013-12-26 17:50:03 · 21916 阅读 · 2 评论 -
丢弃重口味的xml配置--spring4用groovy配置bean
spring4之前,bean的配置可以主要分为两种方式,一种是使用基于xml,个人非常讨厌这种方式,因为明明一件很简单的事,放在xml中就会多了不少繁杂的信息。另一种方式是基于java的配置。在几天前release的spring4中,我们可以用groovy作为spring的配置文件啦!比起最早的基于xml配置,使用groovy会更加灵活,而且干扰信息会更少。原创 2013-12-21 17:29:29 · 38427 阅读 · 11 评论 -
Dokku:搞一个你自己的'Heorku'
在上一篇博客《Heroku:快速部署Dropwizard开发的RESTful Service》中,我们使用了Heroku这个PaaS进行快速部署。如果因为某些原因,你觉得把你的Service部署到Heroku这样的public PaaS不太靠谱或者在需求上做不到,你也完全可以动手自己做一个类似Heroku这样功能的PaaS平台。而且,很幸运,有现成的Open Source工具Dokku,可以帮原创 2013-12-12 20:59:25 · 8866 阅读 · 1 评论 -
Heroku:快速部署Dropwizard开发的RESTful Service
上一篇博客《Dropwizard:用Java轻轻的写一个RESTful Service》中讲到了使用Dropwizard可以快速的开发出一个RESTful service,同时因为Dropwizard使用的是Jetty Embedded Container,就可以不再需要繁琐的去安装相应的container,以及其他的好处(参考《Embedded Server:像写main函数一样写Web Server》)。唯一需要的东西,只是java的运行时环境。为了说明这样带来的好处,这篇博客将会采用大家耳熟能详的一个原创 2013-12-12 11:12:19 · 6127 阅读 · 0 评论 -
Dropwizard:用Java轻轻的写一个RESTful Service
在我的上一篇博客《 Embedded Server:像写main函数一样写Web Server》中,提到了使用Jetty Embedded Server进行Java Web Server的开发比传统的Web Container的方式进行开发的优势。如果直接使用Jetty提供的API进行Web Server的开发,特别是RESTful service的开发,难免看起来还是简单粗暴了一些。原创 2013-12-10 14:22:58 · 18815 阅读 · 2 评论 -
Embedded Server:像写main函数一样写Web Server
1.传统的JEE Web Server 传统的JEE中,如果我们想要部署一个Web Application,我们需要首先安装一个Container Server,如JBoss,WebLogic,Tomcat等。在安装这些Container Server作为我们的开发或者部署环境时,我们还需要注意配置的一致性。 配置好Container Server以后,如果我们想开发一个Web App原创 2013-12-08 21:20:11 · 6383 阅读 · 1 评论 -
IntelliJ下使用Code/Live Template加快编码速度:程序员的工作不是写程序,而是写程序解决问题
程序员的工作不是写程序,而是写程序解决问题。做到心中无码,才更容易专注于解决问题。原创 2013-12-04 11:20:36 · 19621 阅读 · 3 评论 -
使用Spring中Transcation进行数据库集成测试
数据库是程序中几乎必不可少的一部分,那么如何对于数据库进行测试呢?如果多个测试同时使用同一个数据库,我们怎么能够保证不同测试之间的测试数据不会相互影响呢?这里我们可以使用事务(transaction)进行数据库的测试。直接上代码:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations原创 2013-10-15 22:26:16 · 2457 阅读 · 0 评论