Java常用工具类
java 通用多线程工具类代码

1. 概述在面向对象编程中,多线程技术是一项重要的技能。
而 Java 作为一种流行的编程语言,也提供了丰富的多线程工具类来帮助开发者处理并发编程。
本文将介绍一些 Java 中通用的多线程工具类及其代码示例,以帮助读者更好地理解和应用多线程技术。
2. 线程池(ThreadPool)线程池是一种重要的多线程工具类,它可以有效地管理和复用线程,提高程序的性能和响应速度。
以下是一个简单的线程池代码示例:```javaimport java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadPoolExample {public static void m本人n(String[] args) {// 创建固定大小的线程池ExecutorService pool = Executors.newFixedThreadPool(5);// 提交任务for (int i = 0; i < 10; i++) {pool.execute(new Task());}// 关闭线程池pool.shutdown();}}class Task implements Runnable {public void run() {System.out.println("Thread name: " +Thread.currentThread().getName());}}```在上面的代码示例中,我们使用 Executors 类的newFixedThreadPool 方法创建一个固定大小的线程池,然后提交了10 个任务给线程池处理。
最后调用 shutdown 方法关闭线程池。
3. 信号量(Semaphore)信号量是用来控制同时访问特定资源的线程数量的类,它可以防止由于线程的过多导致的资源不足。
《Java常用工具包大全》

《Java常用工具包大全》Java常用工具包大全Java发展至今已经有20多年的历史,而作为一个开源的编程语言,越来越多的工具包被开发出来,为我们的开发工作提供了便利和效率。
下面是Java常用工具包大全,包括了Java开发过程中最常用的各类工具包及其功能特性、使用场景和注意事项等。
一、Apache工具包Apache是世界著名的非营利组织,其旗下的工具包非常适合Java开发者使用。
除此之外,Apache还提供了广泛的文档和示例供开发者参考学习。
1. Apache CommonsApache Commons是Apache组织提供的一系列开源Java库和框架。
它包含了数十个组件,涉及了文件上传、线程池、日期转换、加密解密、JSON解析等方面。
使用场景:Apache Commons中的每个组件都有助于快速实现复杂的应用程序,针对每一种拓展都能够省去自己编写的时间和精力。
2. Apache POIApache POI是Apache组织推出的一个用于读写Excel的工具包。
POI是“Poor Obfuscation Implementation”的缩写,是一款很好的操作Excel 文件的开源类库。
使用场景:在Java应用程序中读取或者写入Excel文档或者其他Office 文档的时候,使用Apache POI是一个不错的选择。
3. Log4jLog4j是Apache组织提供的一种可扩展的日志系统。
可以对日志记录进行详细的控制,譬如记录级别、输出到文件或者控制台等。
使用场景:通过Log4j记录详细的日志,可在排查问题时帮助开发人员快速找到问题所在。
4. VelocityVelocity是一种模板引擎,它通过将动态内容组合到模板中来生成输出。
在开发Java应用程序时,使用Velocity能够轻松生成格式一致的输出。
使用场景:在Java程序中处理动态内容和输出时,使用Velocity是一个很不错的选择。
二、Spring工具包Spring是目前Java领域最流行的应用程序开发框架。
Java 程序员必备的10款开源工具

Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer 等。
如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。
在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。
1. JIRAAtlassian的JIRA是当前敏捷开发领域最重要的工具之一。
它用于错误跟踪,问题跟踪和项目管理。
如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。
它允许您创建Spring循环并跟踪软件开发的进度。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。
2. GitGit是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。
Git易于学习,占用空间小,具有超强的性能。
最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。
3. SeleniumSelenium是Web应用程序最好的软件测试框架之一。
它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。
Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。
它还为Web浏览器自动化提供了各种工具和库。
Selenium 现在存在2个版本,一个叫selenium-core 一个叫selenium-rc 。
4.JenkinsJenkins是一个用Java编写的开源自动化服务器。
它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。
Java常用正则表达式验证工具类RegexUtils.java

Java常⽤正则表达式验证⼯具类RegexUtils.java 正则表达式常常⽤来验证各种表单,Java 表单注册常⽤正则表达式验证⼯具类,常⽤正则表达式⼤集合。
1. 电话号码2. 邮编3. QQ4. E-mail5. ⼿机号码6. URL7. 是否为数字8. 是否为中⽂9. ⾝份证10. 域名11. IP 。
常⽤验证应有尽有!这的确是您从事 web 开发,服务器端表单验证之良品!你,值得拥有 ^_^/** Copyright 2012-2013 The Haohui Network Corporation*/package mon.utils;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** @project baidamei* @author cevencheng <cevencheng@>* @create 2012-11-15 下午4:54:42*/public class RegexUtils {/*** 验证Email* @param email email地址,格式:zhangsan@,zhangsan@,xxx代表邮件服务商* @return 验证成功返回true,验证失败返回false*/public static boolean checkEmail(String email) {String regex = "\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?";return Pattern.matches(regex, email);}/*** 验证⾝份证号码* @param idCard 居民⾝份证号码15位或18位,最后⼀位可能是数字或字母* @return 验证成功返回true,验证失败返回false*/public static boolean checkIdCard(String idCard) {String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";return Pattern.matches(regex,idCard);}/*** 验证⼿机号码(⽀持国际格式,+86135xxxx...(中国内地),+00852137xxxx...(中国⾹港))* @param mobile 移动、联通、电信运营商的号码段*<p>移动的号段:134(0-8)、135、136、137、138、139、147(预计⽤于TD上⽹卡)*、150、151、152、157(TD专⽤)、158、159、187(未启⽤)、188(TD专⽤)</p>*<p>联通的号段:130、131、132、155、156(世界风专⽤)、185(未启⽤)、186(3g)</p>*<p>电信的号段:133、153、180(未启⽤)、189</p>* @return 验证成功返回true,验证失败返回false*/public static boolean checkMobile(String mobile) {String regex = "(\\+\\d+)?1[34578]\\d{9}$";return Pattern.matches(regex,mobile);}/*** 验证固定电话号码* @param phone 电话号码,格式:国家(地区)电话代码 + 区号(城市代码) + 电话号码,如:+8602085588447* <p><b>国家(地区)代码:</b>标识电话号码的国家(地区)的标准国家(地区)代码。
java程序员必备软件

java程序员必备软件篇一:java程序员都用哪些开发工具java程序员都用哪些开发工具如今不少人不信任科学,但信任大数据,说起来也是可乐,由于事实摆在眼前,不得不信,否则就是自欺欺人。
数据作为互联网公司最珍贵的财宝、出去拉投资的唯一资本,对大数据开发的人才也是求贤若渴。
可以说,大数据很火,就业前景很好,薪资很高。
但是强中自有强中手,只有小白的技能,必定是拿不到大牛的薪资的。
那么如何才能快速成长为实战专家在很多状况下,使用SQL数据库用于存储/检索数据已经足够了。
但在一些其他状况下,例如数据库规模不够,或是还有更好的工具,这一切都取决于使用状况。
如今让我们来商量一下不同的存储/处理数据所用的非SQL工具——NoSQL数据库、内存缓存、全文搜寻引擎、实时流媒体、图形数据库,等等。
大数据-调查结果MongoDB——一种流行的,跨平台的面对文档的数据库。
Elasticsearch——为云构建的分布式REST内置搜寻引擎。
Cassandra——开源的分布式数据库管理系统,最初在Facebook开发和设计,用来处理横跨多个商用服务器的海量数据,供应了无单点故障的高度可用性。
Redis——开源的(BSD答应),内存数据结构存储,作为数据库、缓存和消息代理使用。
Hazelcast——开源,基于Java的内存数据网格。
EHCache——一种被广泛使用的开源Java分布式缓存,用于通用缓存、Java EE 和轻量级容器。
Ehcache相关介绍Hadoop——以Java编写的一个开源软件框架,用于分布式存储和对在计算机集群上的超大型数据集的分布式处理。
Solr——开源的企业搜寻平台,Java编写,来自Apache Lucene项目。
Spark——Apache Software Foundation中最活跃的项目,一个开源的集群计算框架。
Memcached——通用的分布式内存缓存系统。
Apache Hive——供应了Hadoop之上类似于SQL的层。
java certificate工具类

java certificate工具类Java Certificate工具类是Java编程中常用的一个类库,用于处理与数字证书相关的操作。
数字证书在网络通信和信息安全领域起着重要的作用,通过使用Java Certificate工具类,我们可以方便地生成、解析、验证和管理数字证书。
本文将介绍Java Certificate工具类的基本使用方法及其在实际开发中的应用。
一、Java Certificate工具类概述Java Certificate工具类是Java提供的一个用于处理数字证书的类库,主要包括以下几个方面的功能:1. 数字证书的生成:Java Certificate工具类提供了生成数字证书的方法,可以生成包含公钥、私钥、证书有效期等信息的数字证书。
2. 数字证书的解析:Java Certificate工具类可以解析数字证书的各个字段,包括证书的颁发者、持有者、有效期、证书类型等信息。
3. 数字证书的验证:Java Certificate工具类支持对数字证书的有效性进行验证,包括验证证书的数字签名、证书是否过期等。
4. 数字证书的管理:Java Certificate工具类可以用于管理数字证书,包括导入、导出、删除证书等操作。
二、Java Certificate工具类的基本使用方法1. 生成数字证书使用Java Certificate工具类生成数字证书的基本步骤如下:(1)创建数字证书生成器对象。
(2)设置证书的有效期、持有者等信息。
(3)生成证书的公钥和私钥对。
(4)将公钥和证书信息传入数字证书生成器。
(5)调用生成方法生成数字证书。
2. 解析数字证书使用Java Certificate工具类解析数字证书的基本步骤如下:(1)创建数字证书解析器对象。
(2)通过输入流读取证书文件。
(3)调用解析方法解析数字证书。
(4)获取数字证书的各个字段信息,如颁发者、持有者、有效期等。
3. 验证数字证书使用Java Certificate工具类验证数字证书的基本步骤如下:(1)创建数字证书验证器对象。
Java工具类(一)财务金额小写数字转换中文大写工具类

Java⼯具类(⼀)财务⾦额⼩写数字转换中⽂⼤写⼯具类代码private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元⾓分";private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";private static final double MAX_VALUE = 9999999999999.99D;//⾦额⼤写功能转换public static String change(double v) {String head = "";if(v<0){head = "负";v = Math.abs(v);}if (v > MAX_VALUE){return "参数⾮法!";}long l = Math.round(v * 100);if (l == 0){return "零元整";}String strValue = l + "";// i⽤来控制数int i = 0;// j⽤来控制单位int j = UNIT.length() - strValue.length();String rs = "";boolean isZero = false;for (; i < strValue.length(); i++, j++) {char ch = strValue.charAt(i);if (ch == '0') {isZero = true;if (UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万' || UNIT.charAt(j) == '元') {rs = rs + UNIT.charAt(j);isZero = false;}} else {if (isZero) {rs = rs + "零";isZero = false;}rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);}}if (!rs.endsWith("分")) {rs = rs + "整";}rs = rs.replaceAll("亿万", "亿");return head+rs;}测试public static void main(String[] args) {System.out.println(digitUppercase(987654320.01));}结果玖亿捌千柒佰陆拾伍万肆千叁佰贰拾元零壹分。
Java常用数字工具类数字转汉字(1)

Java常⽤数字⼯具类数字转汉字(1)本⼈是从事互联⽹⾦融⾏业的,所以会接触到⼀些⾦融类的问题,常见的⼀种就是数字转汉字⼤⼩写的问题。
所以抽空就写了⼀个⼩⼩的⼯具类,实现了数字转汉字、⼤数相加、相减、相乘的⼯具类,希望能帮助有需求的同⾏们。
本篇就分享⼀下数字转化为汉字的思路吧。
数字转汉字的原理:拆分:由于整数部分要加权值,⽽⼩数部分直接转换即可,所以⾸先要将数字拆分成整数+⼩数;整数处理:按照我们的中国⼈的习惯,把数字格式化成4位⼀组,不⾜4位前⾯补0。
每次处理4位,按位匹配数组中的汉字+权值。
即按照数值找数字数组(num_lower 、num_upper )中对应位置的汉字,按照在4位中的偏移量在单位权值数组(unit_lower 、unit_upper )中找。
⽐如21,转化4位为0021,前⾯的0不⽤管,2对应数字“⼆”,权值是“⼗”,1对应数字“⼀”,权值是“(个)”⽤空字符串代替。
即得到“⼆⼗⼀”。
每4位处理完后,还要整体对应⼀个权值,⽐如“万、亿、兆”等;⼩数处理:⼩数部分直接按位对应汉字数组和权值即可。
废话了这么多,可能云⾥雾⾥的,看看具体代码吧://num 表⽰数字,lower表⽰⼩写,upper表⽰⼤写private static final String[] num_lower = { "零", "⼀", "⼆", "三", "四", "五", "六", "七", "⼋", "九" };private static final String[] num_upper = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };//unit 表⽰单位权值,lower表⽰⼩写,upper表⽰⼤写private static final String[] unit_lower = { "", "⼗", "百", "千" };private static final String[] unit_upper = { "", "拾", "佰", "仟"};private static final String[] unit_common = {"","万", "亿","兆","京","垓","秭","穰","沟","涧","正","载"};//允许的格式private static final List<String> promissTypes = Arrays.asList("INTEGER","INT","LONG","DECIMAL","FLOAT","DOUBLE","STRING","BYTE","TYPE","SHORT"); /*** 数字转化为⼩写的汉字** @param num 将要转化的数字* @return*/public static String toChineseLower(Object num){return format(num, num_lower, unit_lower);}/*** 数字转化为⼤写的汉字** @param num 将要转化的数字* @return*/public static String toChineseUpper(Object num){return format(num, num_upper, unit_upper);}/*** 格式化数字** @param num 原数字* @param numArray 数字⼤⼩写数组* @param unit 单位权值* @return*/private static String format(Object num,String[] numArray,String[] unit){if(!promissTypes.contains(num.getClass().getSimpleName().toUpperCase())){throw new RuntimeException("不⽀持的格式类型");}//获取整数部分String intnum = getInt(String.valueOf(num));//获取⼩数部分String decimal = getFraction(String.valueOf(num));//格式化整数部分String result = formatIntPart(intnum,numArray,unit);if(!"".equals(decimal)){//⼩数部分不为空//格式化⼩数result += "点"+formatFractionalPart(decimal, numArray);}return result;}/*** 格式化整数部分* @param num 整数部分* @param numArray 数字⼤⼩写数组* @return*/private static String formatIntPart(String num,String[] numArray,String[] unit){ //按4位分割成不同的组(不⾜四位的前⾯补0)Integer[] intnums = split2IntArray(num);boolean zero = false;StringBuffer sb = new StringBuffer();for(int i=0;i<intnums.length;i++){//格式化当前4位String r = formatInt(intnums[i], numArray,unit);if("".equals(r)){//if((i+1)==intnums.length){sb.append(numArray[0]);//结果中追加“零”}else{zero=true;}}else{//当前4位格式化结果不为空(即不为0)if(zero || (i>0 && intnums[i]<1000)){//如果前4位为0,当前4位不为0sb.append(numArray[0]);//结果中追加“零”}sb.append(r);sb.append(unit_common[intnums.length-1-i]);//在结果中添加权值zero=false;}}return sb.toString();}/*** 格式化⼩数部分** @param decimal ⼩数部分* @param numArray 数字⼤⼩写数组* @return*/private static String formatFractionalPart(String decimal,String[] numArray) { char[] val = String.valueOf(decimal).toCharArray();int len = val.length;StringBuilder sb = new StringBuilder();for (int i = 0; i < len; i++) {int n = Integer.valueOf(val[i] + "");sb.append(numArray[n]);}return sb.toString();}拆分整数和⼩数的⽅法在这⾥:/*** 获取整数部分** @param num* @return*/private static String getInt(String num){//检查格式checkNum(num);char[] val = String.valueOf(num).toCharArray();StringBuffer sb = new StringBuffer();int t , s = 0;for (int i = 0; i < val.length; i++) {if(val[i]=='.') {break;}t = Integer.parseInt(val[i]+"",16);if(s+t==0){continue;}sb.append(t);s+=t;}return (sb.length()==0? "0":sb.toString());}* 获取⼩数部分** @param num* @return*/private static String getFraction(String num){int i = stIndexOf(".");if(num.indexOf(".") != i){throw new RuntimeException("数字格式不正确,最多只能有⼀位⼩数点!");}String fraction ="";if(i>=0){fraction = getInt(new StringBuffer(num).reverse().toString());if(fraction.equals("0")){return "";}}return new StringBuffer(fraction).reverse().toString();}/*** 检查数字格式** @param num*/private static void checkNum(String num) {if(num.indexOf(".") != stIndexOf(".")){throw new RuntimeException("数字["+num+"]格式不正确!");}if(num.indexOf("-") != stIndexOf("-") || stIndexOf("-")>0){throw new RuntimeException("数字["+num+"]格式不正确!");}if(num.indexOf("+") != stIndexOf("+")){throw new RuntimeException("数字["+num+"]格式不正确!");}if(num.indexOf("+") != stIndexOf("+")){throw new RuntimeException("数字["+num+"]格式不正确!");}if(num.replaceAll("[\\d|\\.|\\-|\\+]", "").length()>0){throw new RuntimeException("数字["+num+"]格式不正确!");}}通过这种分⽽治之的思路,处理起来就简单多了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java常用工具类一)日期工具类[DateUtil]1.计算给定时间至今的天数:long date2day(String date)2.得到当前年:int getYear()3.得到当前月:int getMonth()4.得到当前日:int getDay()5.返回当前月(01~12):String getMonth2()6.返回当前日(01~31):String getDay2()7.返回指定格式的当前时间:String getDate(String format)[YYYY-MM-DD,YY-MM,YY年MM月,YY/YYYY]8.计算某天是星期几:whatDayIsSpecifyDate(String)9.计算两日期间相差天数:signDaysBetweenTowDate(String nowDate, String beforeDate)10.获得当前时间(年月日时分秒):getCurrentDateTime11.根据日期获取星座:String date2Constellation(String strDate) YYYY-MM-DD12.根据日期获取生肖:String date2Zodica(String strDate) YYYY-MM-DD13.根据日期获取年龄:int getAge(String strbirthDay) YYYY-MM-DD二)文件路径工具类[FilePathUtil]1.根据某个文件名字,查找该文件在本工程下的物理位置 :String getFilePath(String fNames)三)数组工具类[ArrayUtil]1.交换数组中两元素:int[] swap(int[] ints, int x, int y)2.冒泡排序:int[] bubbleSort(int[] source)3.直接选择排序法:int[] bubbleSort(int[] source)4.插入排序方法:int[] insertSort(int[] source)5.快速排序使用分治法:int[] quickSort(int[] source)6.二分法查找值在数组中的位置:int binarySearch(int[] source, int key)7.反转数组:int[] reverse(int[] source)四)文件工具类[FileUtil]1.将字节流转换成字符串返回:String readFileByLines(InputStream is)2.将文件一行一行的读成List返回:List<String> readFileToList(File file)3.将文件按照一定的编码方式一行一行的读成List返回:List<String> readFileToList(File file, String encodType)4.将指定的字符串内容以指定的方式写入到指定的文件中:void writeFile(File file, String content, Boolean flag)5.将指定的字符串内容以指定的方式及编码写入到指定的文件中:void writeFile(File file, String content, Boolean flag, String encodType)6.拷贝文件夹:void copyFolder(String oldPath, String newPath)7.将文件重命名:void reName(String oldName, String newName)8.删除文件列表:boolean deleteFiles(List<String> files)9.删除文件或文件夹:boolean delete(String fileName)10.删除文件:boolean deleteFiles(List<String> files)11.删除目录及目录下的文件:boolean deleteDirectory(String dir)五)反射工具类[ReflectUtil]1.得到某个对象的公共属性:Object getProperty(Object owner, String fieldName)2.利用反射调用方法(根据实例对象):Object invokeMethod(Object owner, String methodName, Class[]argsType , Object[] argsValue)3.利用反射调用方法(根据类名):Object invokeMethod(String className, String methodName, Class[]argsType , Object[] argsValue)4.利用java反射和构造方法生成实例:Object newInstance(String className, Class[] argsType, Object[] argsValue)5.是不是某个类的实例:boolean isInstance(Object obj, Class cls)6.得到数组中的某个元素:Object getByArray(Object array, int index)六)字符串工具类[StringUtil]1.指定字符串替换:String replace(String strSc, String oldStr, String newStr)2.将字符串数组以指定的字符进行连接:String join(String[] strs, String token)3.检查字符串中是否包含某字符,包含返回true :check(String str, String test)4.将字符串转换成Integer型:Integer String2Integer(String str, Integer ret)5.将数值型转换成字符串:String Integer2String(Integer it, String ret)6.比较两字符串大小(ASCII码顺序):int compare(String str1, String str2)7.将字符串的首字母改为大写:String firstToUpper(String str)8.检查字符串是否为空:boolean isEmpty(String str)9.截取并保留标志位之前的字符串:String substringAfter(String str, String expr)10.截取并保留标志位之后的字符串:String substringAfter(String str, String expr)11.截取并保留最后一个标志位之前的字符:String substringBeforeLast(String str, String expr)12.截取并保留最后一个标志位之后的字符:String substringAfterLast(String str, String expr)13.返回一个整数数组:int[] split(String s,String spliter)14.返回一个整数数组:int[] parseInt(String[] s)15.字符串数组中是否包含指定的字符串:boolean contains(String[] strings, String string, booleancaseSensitive)16.将字串转成日期,字串格式: yyyy-MM-dd :Date parseDate(String string)17.字符填充(向前填充):String fill(String source,String filler, int length)18.转换String到boolean :boolean parseBoolean(String flag)19.转换String到int :int parseInt(String flag)20.转换String到long :long parseLong(String flag)21.将某字符串由原编码的字符转换成指定编码的字符:String StringConvert(String strSource, String fromCode, String toCode)七)正则表达式工具类[ReguUtil]1.匹配图象2.匹配email地址3.匹配日期4.匹配电话5.匹配身份证6.匹配邮编代码7.不包括特殊字符的匹配8.匹配非负整数(正整数 + 0)9.匹配不包括零的非负整数(正整数 > 0)10.匹配正整数11.匹配非正整数(负整数 + 0)12.匹配负整数13.匹配整数14.匹配非负浮点数(正浮点数 + 0)15.匹配浮点数16.匹配由26个英文字母组成的字符串17.匹配由26个英文字母的大写组成的字符串18.匹配由26个英文字母的小写组成的字符串19.匹配由数字和26个英文字母组成的字符串20.匹配由数字、26个英文字母或者下划线组成的字符串21.大小写敏感的正规表达式批配:boolean isHardRegexpValidate(String source, String regexp)22.不区分大小写的正规表达式批配:boolean isSoftRegexpValidate(String source, String regexp)八)对象和字节数组转换工具类[ObjectAndByteArrayUtil]1.将对象转换成字节数组:byte[] ObjectToByte(ng.Object obj)2. 将字节数组转换成对象ng.Object ByteToObject(byte[] bytes)。