1. MyBatis快速入门(1):搭建环境和单表映射

    一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate。Hibernate作为一个著名的框架,功能十分强大。我们只需要配置好实体类和数据表之间的关系,Hibernate就会自动帮我们完成生成并执行SQL语句,映射结果集这样的工作。但是也正是由于Hibernate如此强大的功能,导致了它的缺点:一是非常笨重,启动Hibernate的SessionFactory非常耗时,开销巨大;二是配置复杂,学习成本较高,系统调优也不容易;三是自定义查询功能较弱,查询结果如果不是映射的实体类,查询起来就比较麻烦。因此另一个ORM框架MyBatis,越来越流行。

    2017/03/28 MyBatis

  2. Java I/O 总结

    Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。

    2017/03/01 Java

  3. spring框架注解的用法分析

    前言 @Component是Spring定义的一个通用注解,可以注解任何bean。 @Scope定义bean的作用域,其默认作用域是”singleton”,除此之外还有prototype,request,session和global session。

    2017/02/27 Spring

  4. 全面了解Nginx到底能做什么

    前言 本文只针对Nginx在不加载第三方模块的情况能处理的事情。 反向代理 负载均衡 HTTP服务器(包含动静分离) 正向代理

    2017/02/24 Nginx

  5. Java问题排查工具单

    前言 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。 闲话不多说,开搞。 ## Linux命令类 ###tail 最常用的tail -f tail -3

    2017/02/20 Java

  6. Spring分布式事务配置(atomikos)

    开发原因 在Java后端开发过程中事务控制非常重要,而Spring为我们提供了方便的声明式事务方法@transactional。但是默认的Spring事务只支持单数据源,而实际上一个系统往往需要写多个数据源,这个时候我们就需要考虑如何通过Spring实现对分布式事务的支持。

    2017/02/17 Spring

  7. 使代码更简洁(二)---集合转换相关

    list转map 开发过程中经常会碰到需要将list转为map的情况,例如有一个User类,有id,name,age等属性。有一个User的list,为了很方便的获取指定id的User,这时就需要将List< User>转换为Map,其中map的key是User的id。 一般的做法,是通过for循环将list中的元素put到map中,代码如下: Map<Integer, User> map = new HashMap<Integer, User>(); for(User user : userList){ map.put(user.getId(), user); } 这样做,在每个需要将list转为map的地方,都要写一遍for循环,代码不够简洁,所以利用stream和泛型封装了一个通用的工具方法 /** * 将list转为map * @param list * @param predicate1 key * @param predicate2 value * @return */ public static<K,V,T> Map<K, V> transformToMap(List<T> list,Function<T, K> predicate1, Function<T,V> predicate2){ return list.stream().collect(Collectors.toMap(predicate1, predicate2)); } 这样如果需要将List< User>转为Map代码如下 ```java //省略list构造过程 Map<Integer, User> map = TransFormUtils.transformToMap(userList, p->p.getId(), p->p);

    2017/02/16 Java

  8. 使代码更简洁(一)---List相关

    利用stream代替for循环 在对list的操作中常常需要for循环来遍历整个list,代码看起来不够简洁。所以利用java8的新特性Stream来代替for循环,提高程序的可读性。 从网上coyp了一些stream的介绍:Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。 Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。 而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。Stream 的并行操作依赖于 Java7 中引入的 Fork/Join 框架(JSR166y)来拆分任务和加速处理过程。 下面是一些利用stream写的工具类

    2017/02/15 Java