FROM:http://segmentfault.com/blog/lidonghao/1190000000372535 在前一篇博文中,简单介绍了如何使用Process类来调用命令行的功能,那样使用Process会有一个很大的问题,就是可能会出现无限阻塞的情况,永远都无法返回结果.以下是Process的API说明,注意加粗的部分. ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获得…
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.apache.poi.ss.formula.functions.T; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.*; import java.util.HashMap; import…
package com.minxinloan.utils; import java.math.BigDecimal; public class Arith { // 源文件Arith.java: /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入. */ // 默认除法运算精度 private static final int DEF_DIV_SCALE = 10; // 这个类不能实例化 private Arith() {…
在业务应用中经常会有指定属性序列化json的需求,C#中这个功能很容易就可以解决:使用lambda重新构造一下匿名对象就可以了.一行代码搞定.java是这样解决的. public JsonMapper filter(String filterName, String... properties) { FilterProvider filterProvider = new SimpleFilterProvider().addFilter(filterName, SimpleBeanProperty…
今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如:eval("System.out.println("hello world")"),将输出hello world. ___ code: import java.io.*; /** * Java创建一个类似于js中eval()的方法 */ public class Eva…
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据表转键值对集合.数据集转键值对数组字典 .数据表转JSON.JSON文本转对象(泛型方法).将JSON文本转换为数据表数据.将JSON文本转换成数据行.将json转换为DataTable等. 封装后的工具帮助类如下: /// <summar…
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据表转键值对集合.数据集转键值对数组字典 .数据表转JSON.JSON文本转对象(泛型方法).将JSON文本转换为数据表数据.将JSON文本转换成数据行.将json转换为DataTable等. 封装后的工具帮助类如下: /// <summary> /// JSON帮助类 /// </summa…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介   CountDownLatch 允许一个或多个线程等待其他线程完成操作.单词La…
<深入理解Spark:核心思想与源代码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源代码分析>一书正式出版上市 <深入理解Spark:核心思想与源代码分析>一书第一章的内容请看链接<第1章 环境准备> <深入理解Spark:核心思想与源代码分析>一书第二章的内容请看链接<第2章 SPARK设计理念与基本架构> <深入理解Spark:核心思想与源代码分析>一书第三章第一部分的内容请看链接<深入理解Spa…
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析>一书第一章的内容请看链接<第1章 环境准备> <深入理解Spark:核心思想与源码分析>一书第二章的内容请看链接<第2章 SPARK设计理念与基本架构> <深入理解Spark:核心思想与源码分析>一书第三章第一部分的内容请看链接<深入理解Spark:核心…
在JDK的并发包里提供了几个非常有用的并发工具类.CountDownLatch.CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段.本章会配合一些应用场景来介绍如何使用这些工具类. CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作.假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,…
最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Propertie…
Freemarker文件模板工具类 提供了解析生成文件.解析生成字符串的两个方法! package org.lunatic.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.Map; import freemarker.template.Configuration; import freema…
在JDK的并发包里提供了很多有意思的并发工具类.CountDownLatch.CyclicBarrier和Semaphore 工具类提供了一种并发流程控制的手段,Exchanger 工具类则提供了在线程间交换数据的一种手段. 1.等待多线程完成的 CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. 其实最简单的做噶是使用join()方法,join用于让当前执行线程等待join线程执行结束.其实现原理是不停检查join线程是否存活,如果join线程存…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介   CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Ba…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介   Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介    Exchanger的功能是使2个线程之间交换数据(有不少文章的说法是"传输数…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介   Phaser 是JDK1.7版本中新增的,是一个可重用的同步barrier,它…
01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实用. * DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码. * DBUtils就是JDBC的简化开发工具包.需要项目导入commons-dbutils-1.6.jar才能够正常使用DBUtils工具. * b: Dbutils三个核心功能介绍 * QueryRunner中提供对sql语句操作的API…
[php]代码库 view sourceprint? <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 200…
搜了一下网络上别人封装的HttpClient,大部分特别简单,有一些看起来比较高级,但是用起来都不怎么好用.调用关系不清楚,结构有点混乱.所以也就萌生了自己封装HttpClient工具类的想法.要做就做最好的,本工具类支持插件式配置Header.插件式配置httpclient对象,这样就可以方便地自定义header信息.配置ssl.配置proxy等. 相关jar包下载:http://search.maven.org/#search%7Cga%7C1%7Chttpasyncclient 是不是觉得…
常用备注 一.LIst to Array List<String> list = new ArrayList<String>(); Object[] array=list.toArray(); 上述方法存在强制转换时会抛异常,下面此种方式更推荐:可以指定类型 String[] array=list.toArray(new String[list.size()]); 二.Array To List 最简单的方法似乎是这样 String[] array = {"java&qu…
前言 前面介绍过ReentrantLock,它实现的是一种标准的互斥锁:每次最多只有一个线程能持有ReentrantLock.这是一种强硬的加锁规则,在某些场景下会限制并发性导致不必要的抑制性能.互斥是一种保守的加锁策略,虽然可以避免"写/写"冲突和"写/读"冲突,但是同样也避免了"读/读"冲突. 在读多写少的情况下,如果能够放宽加锁需求,允许多个执行读操作的线程同时访问数据结构,那么将提升程序的性能.只要每个线程都能确保读到最新的数据,并且在读…
前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类.下面我们来详细介绍每个工具类的作用.原理及用法. Semaphore介绍 Semaphore翻译过来是信号的意思.顾名思义,这个工具类提供的功能就是多个线程彼此"打信号".而这个"信号"是一个int类型的数据,也可以看成是一种"资源",用来限定线程…
“获得数据库连接”操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils.提供获取连接对象的方法,从而达到代码的重复利用. 该工具类提供方法:public static Connection getConn ().代码如下: package com.oracle.tools; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import…
Java 开发的同学应该都使用或者听说过 Google 提供的 Guava 工具包.日常使用最多的肯定是集合相关的工具类,还有 Guava cache,除了这些之外 Guava 还提供了很多有用的功能,鉴于日常想用的时候找不到,这里就梳理一下 Guava 中那些好用的工具类,想优化代码的时候不妨过来看看! 集合 普通集合 List<String> list = Lists.newArrayList(); Set<String> set = Sets.newHashSet(); Ma…
Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作,还提供了将集合对象置为不可变.对集合对象实现同步控制等方法. 1.排序操作 方法: static void reverse(List<?> list): 反转列表中元素的顺序. static void shuffle(List<?> list) : 对List集合元素进行随机排序. static void sort(List<T>…
测试方法:根据已知的方法名,来反射调用方法 package com.redmoon.forum.job; import java.util.ArrayList; import java.util.List; import com.common.utils.ReflectUtils; public class Test { private String name; public String getName() { return name; } public void setName(String…
package com.yingchao.kgou.core; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import org.apache.commons.…
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.汇总Excel的功能.在读取时,可以设定开始和结束读取的位置.设定是否读取多个sheet.设定读取那个或者那些sheet等.在汇总时,如设定是否覆盖目标文件.设定是否比较检查重复内容.设定检查重复的列索引等功能.具体来演示一下吧: 工具类源码: package com.tgb.cc…