Java-KGLI工具类总结
java.util包详解

java.util包详解介绍的实⽤⼯具类库java.util包。
在这个包中,Java提供了⼀些实⽤的⽅法和。
本章介绍Java的实⽤⼯具类库java.util包。
在这个包中,Java 提供了⼀些实⽤的⽅法和数据结构。
例如,Java提供⽇期(Data)类、⽇历(Calendar)类来产⽣和获取⽇期及时间,提供随机数(Random)类产⽣各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表⽰相应的数据结构。
图8.1给出了java.util包的基本层次结构图。
下⾯我们将具体介绍其中⼏个重要的类。
┌java.util.BitSet │java.util.Calendar │ └java.util.GregorianCalendar │java.util.Date │java.util.Dictionary │ └java.util.Hashtable │ └java.util.Properties │java.util.EventObject │java.util.ResourceBundle ┌普通类┤ ├java.util.ListResourceBundle │ │ └java.util.PropertyResourceBundle │ │java.util.Local │ │java.util.Observable │ │java.util.Random │ │java.util.StringTokenizer │ │java.util.Vector │ │ └java.util.Stack Java.util┤ └java.util.TimeZone │ └java.util.SimpleTimeZone │ ┌java.util.Enumeration ├接 ⼝┤java.util.EventListener │ └java.util.Observer │ ┌java.util.EmptyStackException └异常类┤java.util.MissingResourceException │java.util.NoSuchElementException └java.util.TooManyListenersException 图8.1 java.util包的基本层次结构8.2 ⽇期类Date Java在⽇期类中封装了有关⽇期和时间的信息,⽤户可以通过调⽤相应的⽅法来获取系统时间或设置⽇期和时间。
JAVA各种计算工具类

package com.pokmon.core;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .HttpURLConnection;import .InetAddress;import workInterface;import .SocketException;import .URL;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Random;import java.util.Set;import java.util.TreeMap;import net.sf.json.JSONArray;import net.sf.json.JSONException;import net.sf.json.JSONObject;import ng.StringUtils;public class Util {public final static String BASE_CODE = "utf-8";public static Map<String, String> platformMap = new HashMap<String, String>();static {platformMap.put("qzone", "1");platformMap.put("pengyou", "2");}/*** 检查字符串长度,一个中文算两个英文字符的长度** @param str* @param min* @param max* @return*/public static boolean checkChineseStrLen(String str, int min, int max) { if (null == str) {return true;}int byteLen = str.getBytes().length;if (System.getProperty("file.encoding").equalsIgnoreCase("UTF-8")) { int charsum = str.toCharArray().length; // 字符数int bytesum = str.getBytes().length;// 字节数int hanzisum = (bytesum - charsum) / 2;byteLen = hanzisum * 2 + charsum - hanzisum;}if (byteLen < min || byteLen > max) {return false;}return true;}/*** 判断用户账号的合法性字母数组-_@.几种的组合6-128位* @param userid* @return*/public static boolean checkUserId(String userid){if(userid.matches("[A-Za-z_0-9@.-]{6,128}")){return true;}else{return false;}}/*** 根据一个几率数组随机取机一个值** @param rate* 类似rate=20;50;75;100* @return*/public static int getRatePos(String rate) {int pos = 0;String[] splits = rate.split(";");Random random = new Random();int rand = random.nextInt(Integer.parseInt(splits[splits.length - 1]));for (int i = 0; i < splits.length; i++) {if (rand < Integer.parseInt(splits[i])) {pos = i + 1;break;}}return pos;}/*** 看一个固定的值在这个数据的哪个区间** @param rate* 类似rate=20;50;75;100* @return*/public static int getRateSpace(String rate, int rand) {int pos = 0;String[] splits = rate.split(";");for (int i = 0; i < splits.length; i++) {if (rand >= Integer.parseInt(splits[splits.length - 1])) {pos = splits.length;break;}if (rand < Integer.parseInt(splits[i])) {pos = i;break;}}return pos;}/*** 取得sequence中指定位置的值** @param sequence* 类似sequence=20;50;75;100* @param pos* 第几个位置:从1开始* @return*/public static String getValueByPos(String sequence, int pos) { String[] splits = sequence.split(";");if (splits.length >= pos) {return splits[pos - 1];}return null;}/*** 随机取出sequence中的一个值,按平均机率取** @param sequence* @return*/public static String getRandFromArray(String sequence) { String res = "";String[] arrays = sequence.split(";");Random random = new Random();int rand = random.nextInt(arrays.length);res = arrays[rand];return res;}/*** 随机取出sequence中的一个序号,按平均机率取** @param sequence* @return*/public static int getRandIndexFromArray(String sequence) { String[] arrays = sequence.split(";");Random random = new Random();int rand = random.nextInt(arrays.length);return rand;}/*** 根据成功率生成结果,返回0成功1失败** @param rate* 成功率* @return*/public static int getSuccessResult(int rate) {int res = 0;Random random = new Random();int rand = random.nextInt(100);if (rand >= 0 && rand < rate) {res = 0;} else {res = 1;}return res;}/*** 根据成功率生成结果,返回0成功1失败(万分的机率) ** @param rate* 成功率* @return*/public static int getSuccessResultWan(int rate) {int res = 0;Random random = new Random();int rand = random.nextInt(10000);if (rand >= 0 && rand < rate) {res = 0;} else {res = 1;}return res;}/*** 从两个固定的值之间随便一个数值** @param min* @param max* @return*/public static int getRateFromTwoValue(int min, int max) { Random random = new Random();int rand = random.nextInt(max - min + 1) + min;return rand;}/*** 判断字符itemId是否在序列串sequence中** @param itemId* 目标字符串* @param sequence* 序列串类似sequence=20;50;75;100* @return*/public static boolean isInSequence(String itemId, String sequence) { String[] arrays = sequence.split(";");for (String s : arrays) {if (s.equals(itemId)) {return true;}}return false;}/*** 判断某个值在序列中的位置,返回-1为不存在** @param seq* @param value* @return*/public static int getPosFromSeq(String seq, String value) { int pos = -1;String[] arrays = seq.split(";");for (int i = 0; i < arrays.length; i++) {if (arrays[i].equals(value)) {pos = i;break;}}return pos;}/*** 从两个固定的值之间随机取不同的Num个数值** @param num* 取不同随机数量* @param min* @param max* @return*/public static Set<Integer> getDiffRandFromRange(int num, int min, int max) { Set<Integer> set = new HashSet<Integer>();while (true) {int i = getRateFromTwoValue(min, max);set.add(new Integer(i));if (set.size() == num) {break;}}return set;}/*** 判断编号是否为空** @param no* @return 如果为空返回true,如果不为空返回false*/public static boolean isNullNo(String no) {if (StringUtils.isEmpty(no) || "null".equals(no) || "0".equals(no)) { return true;}return false;}/*** 从字符串解析日期yyy-MM-dd** @param str* @return*/public static Date parseDate(String str) {Date date = null;try {date = new SimpleDateFormat("yyyyMMdd").parse(str);} catch (Exception e) {// e.printStackTrace();}return date;}/*** 从字符串解析日期yyy-MM-dd** @param str* @return*/public static Date parseDateFormate(String str, String formate) {Date date = null;try {date = new SimpleDateFormat(formate).parse(str);} catch (Exception e) {// e.printStackTrace();}return date;}public static String DateToStr(Date date, String formate) {String str = new SimpleDateFormat(formate).format(date);return str;}/*** 时间前推或后推分钟,其中JJ表示秒.*/public static String getPreTime(String sj1, String jj) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String mydate1 = "";try {Date date1 = format.parse(sj1);long Time = (date1.getTime() / 1000) + Integer.parseInt(jj);date1.setTime(Time * 1000);mydate1 = format.format(date1);} catch (Exception e) {}return mydate1;}/*** 时间前推或后推分钟,其中JJ表示秒.*/public static Date getPreTime(Date sj1, Integer jj) {Date date1 = null;try {long Time = (sj1.getTime() / 1000) + jj;date1 = new Date(Time * 1000);// date1.setTime(Time * 1000);} catch (Exception e) {}return date1;}/*** 转换十六进制编码为字符串** @param s* @return*/public static String toStringHex(String s) {if ("0x".equals(s.substring(0, 2))) {s = s.substring(2);}if (s.length() == 1) {s = "0" + s;}byte[] baKeyword = new byte[s.length() / 2];for (int i = 0; i < baKeyword.length; i++) {try {baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));} catch (Exception e) {e.printStackTrace();}}try {s = new String(baKeyword, "utf-8");// UTF-16le:Not} catch (Exception e1) {e1.printStackTrace();}return s;}/*** 转化字符为十六进制编码** @param ch* @return*/public static String toHexChar(char ch) {String str = "\\u";String temp = Integer.toHexString(ch);for (int i = 0; i < 4 - temp.length(); i++) {str = str + "0";}str = str + temp;return str;}/*** 属性最终值=(原始值*(1000+加值千分比)/1000+加值)*(1000+加值后千分比)/1000 ** @param oldvalue* 原来值* @param addrate1* 加值千分比* @param add* 加成值* @param addrate2* 加成后千分比* @return 如果为负数,返回0*/public static int calPetFinalattri(int oldvalue, int addrate1, int add,int addrate2) {oldvalue = (oldvalue * (1000 + addrate1) / 1000 + add)* (1000 + addrate2) / 1000;return oldvalue < 0 ? 0 : oldvalue;}/*** 判断日期是否当天** @param date* @return*/public static boolean isToday(Date date) {Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);long dis = cal.getTime().getTime() - date.getTime();if (dis <= 0) {return false;}long days = dis / (24 * 60 * 60 * 1000);if (days == 0) {return true;}return false;}/*** 判断日期是否当天** @param date 秒* @return*/public static boolean isToday1(Long date) {Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);long dis = cal.getTime().getTime() - date*1000;if (dis <= 0) {return false;}long days = dis / (24 * 60 * 60 * 1000);if (days == 0) {return true;}return false;}/*** 返回该天的hh:mm:ss的时间* time 秒*/public static Long get24time(Long time,Integer hh,Integer mm,Integer ss) {Calendar cal = Calendar.getInstance();Date date = new Date(time*1000);cal.setTime(date);cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE), hh, mm, ss);return cal.getTime().getTime()/1000;}/*** 判断日期是否当天或昨天* 判断好友是否是活跃的* @param date* @return*/public static boolean isActive(Long date) { Calendar cal = Calendar.getInstance();cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);long dis = cal.getTime().getTime() - date;if (dis <= 0) {return false;}long days = dis / (24 * 60 * 60 * 1000);if (days <= 1) {return true;}return false;}/*** 判断日期是否当年** @param date* @return*/public static boolean isCurYear(Date date) { Calendar cal = Calendar.getInstance();cal.set(Calendar.MONTH, 11);cal.set(Calendar.DATE, 31);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);Calendar cal1 = Calendar.getInstance();cal1.set(Calendar.MONTH, 0);cal1.set(Calendar.DATE, 1);cal1.set(Calendar.HOUR_OF_DAY, 0);cal1.set(Calendar.MINUTE, 0);cal1.set(Calendar.SECOND, 0);Calendar cur = Calendar.getInstance();cur.setTime(date);if (cur.after(cal1) && cur.before(cal)) {return true;}return false;}/*** 判断日期是周几** @param date* @return*/public static int getWeekday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);int n = cal.get(Calendar.DAY_OF_WEEK) - 1;if (n == 0) {n = 7;}return n;}/*** 计算两个时间间隔小时** @param starttime* 开始时间* @param endtime* 结束时间* @return*/public static int getDiffHour(Date starttime, Date endtime) { long time1 = starttime.getTime();long time2 = endtime.getTime();if (time1 >= time2) {return 0;} else {return (int) Math.ceil((double) (time2 - time1)/ (double) (1000 * 60 * 60));}}/*** 比较两个时间时分秒的大小** @param date1* @param date2* @return*/public static int CompareTime(Date date1, Date date2) {int diff = 0;Calendar cal1 = Calendar.getInstance();cal1.setTime(date1);Calendar cal2 = Calendar.getInstance();cal2.setTime(date2);int sec1 = cal1.get(Calendar.HOUR_OF_DAY) * 3600+ cal1.get(Calendar.MINUTE) * 60 + cal1.get(Calendar.SECOND);int sec2 = cal2.get(Calendar.HOUR_OF_DAY) * 3600+ cal2.get(Calendar.MINUTE) * 60 + cal2.get(Calendar.SECOND);diff = sec1 - sec2;return diff;}/*** IP转换成整数函数** @param ip* @return*/public static long ipToInt(String ip) {String[] splits = ip.split("\\.");long re = Long.parseLong(splits[0]) * 256 * 256 * 256+ Long.parseLong(splits[1]) * 256 * 256+ Long.parseLong(splits[2]) * 256 + Long.parseLong(splits[3]);return re;}/*** 接口调用通用方法** @param apiparamsMap* @param url* @return*/public static String interfaceTransfer(String url,TreeMap<String, String> apiparamsMap) {String result = "";String content = tranferMapToUrl(apiparamsMap);result = getResult(url, content);return result;}/*** 组装url参数** @param apiparamsMap* @return*/public static String tranferMapToUrl(TreeMap<String, String> apiparamsMap) { StringBuilder param = new StringBuilder();for (Iterator<Map.Entry<String, String>> it = apiparamsMap.entrySet() .iterator(); it.hasNext();) {Map.Entry<String, String> e = it.next();param.append("&").append(e.getKey()).append("=").append(e.getValue());}return param.toString().substring(1);}/*** 得到返回的内容** @param urlStr* @param content* @return*/public static String getResult(String urlStr, String content) {URL url = null;HttpURLConnection connection = null;try {url = new URL(urlStr);connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(10000);connection.setReadTimeout(10000 * 10);connection.setDoOutput(true);connection.setDoInput(true);connection.setRequestMethod("POST");connection.setUseCaches(false);connection.connect();DataOutputStream out = new DataOutputStream(connection.getOutputStream());out.writeBytes(content);out.flush();out.close();BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), BASE_CODE));StringBuffer buffer = new StringBuffer();String line = "";while ((line = reader.readLine()) != null) {buffer.append(line);}System.out.println(url + "?" + content + "====="+ buffer.toString());reader.close();return buffer.toString();} catch (IOException e) {e.printStackTrace();} finally {if (connection != null) {connection.disconnect();}}return null;}/*** 解析json得到状态值** @param resultStr* @return*/public static String getValueFromJSON(String resultStr, String key) { String status = "";try {status = (JSONObject.fromString(resultStr)).getString(key);} catch (JSONException e) {return status;}return status;}/*** 解析json得到数据** @param resultStr* @param key* @return*/public static JSONArray getArrayFromJSON(String resultStr, String key) {JSONArray jsonArray = (JSONObject.fromString(resultStr)).getJSONArray(key);return jsonArray;}public static String getLocalIp() {String ip = "";try {NetworkInterface nic = NetworkInterface.getByName("eth0");if (nic.getInetAddresses().hasMoreElements()) {InetAddress inetAddress = nic.getInetAddresses().nextElement();ip = inetAddress.getHostAddress();}} catch (SocketException e) {e.printStackTrace();}return ip;}/*** 获取状态位* @param state* @param pos* @returnpublic static int getState(int state,int pos){state>>=pos-1;return state%2;}public static int getState(long state,int pos){ state>>=pos-1;return (new Long(state).intValue())%2;}/*** 设置状态位* @param state* @param pos* @return*/public static int setState(int state,int pos){int m=1;m<<=pos-1;return state|m;}public static long setState(long state,int pos){ int m=1;m<<=pos-1;return state|m;}/*** 校验openid* @param openid* @return*/public static boolean checkOpenid(String openid){ if(openid==null){return false;}String reg="^([0-9A-F]{32})$";boolean res=openid.matches(reg);return res;}/*** 通过角色id生成角色邀请码* @param roleid* @returnpublic static String getInviteIdByRoleid(Long roleid){long b = 0;String inviteid = "";while(roleid!=0){b = roleid%36;roleid = roleid/36;if(b<10){inviteid = b+inviteid;}else{inviteid = (char)new Integer(b-10+97+"").intValue()+inviteid;}}return inviteid;}}。
第7章+工具类及常用算法

Java语言基础类
toString() toString()方法用来返回对象的字符串表示, 可以用来显示一个对象。 System.out.println()方法如果带的参数是一 个对象 对象的话,那么它会自动调用对象的 对象 toString()方法,那么它显示的将是“类名@内存 地 址”。在自定的类中一般来讲覆盖toString()方法。 (举例 2个)
Java语言基础类
Math类 该类提供了一些不同标准的数学函数的方法, 这些都是static方法,所以使用的时候不用创建 Math类的对象,可以直接通过类名来调用这些 方法:Math.所要用的方法。方便编程。 关于具体的方法和属性,可以查询JDK的帮助 文档。(举例)
例7-5
class TestMath { public static void main(String[] args) { int a=3; double b=1.5,c=32.2; double f=0.0; f=1.0/2*(a+Math.sqrt(b*Math.sin(c))); System.out.println("f="+f); System.out.println("Math.ceil(3.1415)="+Math.ceil(3.1415)); System.out.println("Math.floor(3.1415)="+Math.floor(3.1415)); System.out.println("Math.round(987.654)="+Math.round(987.654)); System.out.println("Math.max(-987.654,301)="+Math.max(987.654,301)); System.out.println("Math.PI="+Math.PI); } }
java期末考点总结

java期末考点总结一、基础知识1. Java语言的起源和特点2. Java开发环境的配置和使用3. Java程序的基本结构和语法规则4. 数据类型和变量5. 运算符和表达式6. 控制流程和循环结构二、面向对象编程1. 面向对象的基本概念和原则2. 类和对象的定义和使用3. 封装、继承和多态4. 接口和抽象类5. 继承和多态的应用6. 继承和接口的区别三、异常处理1. 异常的概念和分类2. 异常的处理机制3. try-catch语句的使用4. finally语句的作用5. 异常的抛出和捕获6. 自定义异常四、常用类库1. String类的常用方法2. Math类和常用数学方法3. Date类和Calendar类的使用4. 集合框架和常用集合类5. IO流的使用6. 文件的读写操作五、多线程编程1. 进程和线程的概念2. 创建线程和实现Runnable接口的区别3. 同步和互斥的实现4. 线程的状态和控制5. 线程的优先级和调度6. 线程池的使用和管理六、网络编程1. 网络通信的基本概念和协议2. Socket编程和TCP/IP协议3. UDP协议和DatagramSocket类4. URL和URLConnection类的使用5. 服务器和客户端的通信6. HTTP协议和网页的访问七、图形用户界面1. AWT和Swing的区别和优缺点2. 组件的布局和事件处理3. 容器和组件的层次结构4. 图形用户界面的设计和优化5. 多线程和事件处理6. 用户界面的国际化和本地化八、数据库编程1. 数据库的基本概念和SQL语句2. JDBC的使用和连接数据库3. Statement和PreparedStatement的使用4. ResultSet的处理和数据库操作5. 事务和批处理的管理6. 数据库连接池的使用九、Web开发1. HTML和CSS的基本语法和标签2. JavaScript的基本语法和事件处理3. Servlet和JSP的概念和使用4. MVC模式的理解和应用5. 数据库连接和数据处理6. Web应用的发布和部署十、设计模式1. 设计模式的基本概念和分类2. 单例模式和工厂模式的实现3. 观察者模式和适配器模式的应用4. MVC模式和策略模式的理解和应用5. 模板方法模式和装饰者模式的实现6. 设计模式的优缺点和使用场景以上是Java期末考点的总结,希望能帮助你复习和理解Java编程的重要知识点。
kettle解析 java解析

主题:Kettle解析Java解析1. Kettle简介Kettle是一款开源的ETL工具,用于提取、转换和加载数据。
它是由PDI(Pentaho Data Integration)项目开发的一款基于元数据驱动的工具,可以帮助用户在数据库、文件和流数据之间移动和转换数据。
Kettle提供了一个直观的用户界面和强大的数据集成功能,使得用户可以轻松地创建复杂的数据处理流程。
2. Java解析Java是一种通用的面向对象编程语言,它具有评台无关性、可移植性和强大的性能。
Java可以用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序和企业级应用程序。
Java的语法简洁清晰,易于学习和使用,因此备受开发者青睐。
3. Kettle与Java的结合Kettle作为一款强大的数据集成工具,与Java的结合可以实现更加复杂和灵活的数据处理功能。
通过Kettle可以轻松实现数据的抽取、转换和加载,而Java的编程能力则可以帮助用户实现更加精细化的数据处理逻辑。
将Kettle和Java结合起来可以实现更加灵活、高效的数据集成和处理。
4. Kettle的数据处理能力Kettle提供了丰富的数据处理组件和功能,用户可以利用Kettle实现数据的抽取、清洗、转换和加载。
Kettle提供了多种数据连接和输入输出方式,可以方便地将数据从不同的数据源中抽取出来,并进行灵活的数据处理。
Kettle还提供了丰富的数据转换组件,用户可以通过简单的拖拽操作实现不同数据之间的转换和关联。
Kettle还提供了数据加载组件,用户可以将处理好的数据重新加载回目标数据源。
5. Java的编程能力Java作为一种强大的编程语言,具有丰富的编程能力和库函数。
使用Java可以实现更加复杂和精细化的数据处理逻辑,包括数据格式化、算法处理、业务逻辑等。
Java还提供了诸如多线程、网络编程、数据库访问等丰富的编程库,可以帮助用户实现更加复杂和高效的数据处理功能。
JAVA数组操作的常用工具类

【JAVA数组操作的常用工具类】Java提供了的Arrays类里包含了一些static修饰方法可以直接操作数组,这个Arrays类里包含了提供了如下几个static修饰的方法(static修饰的方法可以直接通过类名调用):int binarySearch(type[] a,type key):这个方法查询key元素值在a数组中出现的索引; 如果a数组不包含key元素值,则返回-1.调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。
binarySearch(type[] a,int fromIndex,int toIndex,type key):这个方法与前一个方法类似,但它只搜索a数组中formIndex到toIndex索引的元素。
调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。
type[] copyOf(type[] original,int newLength):这个方法将会把original数组复制成一个新数组,其中length是新数组的长度。
如果length小于original数组的长度,则新数组就是原数组的前面length个元素; 如果length大于original数组的长度,则新数组的前面元素就是原数组的所个元素,后面补充0(数值型)、false(布尔型)或者null(引用型)。
type[] copyOfRange(type[] original,int from,int to):这个方法与前面方法相似,但这个方法只复制original数组的from索引到to索引的元素。
boolean equals(type[] a,type[] a2):如果a数组和a2数组的长度相等,而且a数组和a 2数组的数组元素也一一相同,该方法将返回true.void fill(type[] a,type val):该方法将会把a数组所有元素值都赋值为val.void fill(type[] a,int fromIndex,int toIndex,type val):该方法与前一个方法的作用相同,区别只是该方法仅仅将a数组的fromIndex到toIndex索引的数组元素赋值为val.void sort(type[] a):该方法对a数组的数组元素进行排序。
Java之Jackson的基本使用案例讲解

欢迎光临本店,您的支持是我们最大的前进动力,我们的宗旨是为大家精选各行各业的优质文档,帮助大家解决工作、生活中的文档需求。
同时,本店长期提供各类精品作文、手抄报、教案、读后感、日记、合同模板等等,想了解以上内容,敬请关注!Welcome to our store. Your support is our greatest driving force. Our purpose is to select high-quality documents from all walks of life and help you solve the document needs in your work and life.At the same time, our store has long provided all kinds of high-quality compositions, handwritten newspapers, lesson plans, after reading feelings, diaries, contract templates, etc. if you want to know the above contents, please pay attention!Jackson 当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的源框架。
Jackson 社区相对比较活跃,更新速度也比较快,从 Github 中的统计来看,Jackson 的 json 解析器之一。
Spring MVC 的默认 json 解析器便 Jackson。
Jackson 优很多。
Jackson 所依赖的 jar 包较少,简单易用。
与其他 Java 的 json 的框架Gson 等相比, Jackson 解析的 json 文件速度比较快;Jackson 运行时占用内存比较低,性能比较好;Jackson 有灵活的 API,可以很容易进行扩展和定制。
JAVA数组操作的常用工具类

JAVA数组操作的常用工具类在Java中,数组是一种包含固定数量元素的数据结构。
数组操作是在数组中执行各种任务的过程,并且在编程中经常遇到。
为了简化数组操作的过程,Java提供了许多常用的工具类来处理数组。
下面是Java数组操作的常用工具类。
1. Arrays类:Arrays类提供了许多静态方法来处理数组,其中一些常用的方法包括:- sort(:对数组进行排序。
- binarySearch(:在排序后的数组中查找指定元素的索引。
- toString(:将数组转换为字符串。
- equals(:比较两个数组是否相等。
- fill(:将数组的所有元素设置为指定值。
2. System类:System类提供了一些用于操作数组的静态方法,其中一些常用的方法包括:- arraycopy(:将一个数组的部分元素复制到另一个数组。
- identityHashCode(:获取数组的哈希码。
3. Collections类:Collections类是Java集合框架的一部分,但也可以用于处理数组。
其中一些常用的方法包括:- sort(:对数组进行排序。
- binarySearch(:在排序后的数组中查找指定元素的索引。
4. Arrays类与Collection接口转换:Arrays类和Collection接口之间提供了一些静态方法,可以将数组转换为Collection,并将Collection转换为数组。
其中一些常用的方法包括:- asList(:将数组转换为List。
- toArray(:将Collection转换为数组。
- toList(:将Collection转换为List。
5. Arrays类与Stream接口转换:Java 8引入了Stream接口,可以对数组进行处理。
Arrays类提供了一些方法来将数组转换为Stream,并从Stream转换为数组。
其中一些常用的方法包括:- stream(:将数组转换为Stream。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C3p0 连接池 DB工具类:JDBCUtils :package cn.kgli.utils;import java.io.InputStream;import ng.reflect.Field;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import java.util.Properties;import boPooledDataSource;public class JdbcUtils {private static ComboPooledDataSource ds = null;static{try{/*ds = new ComboPooledDataSource();ds.setDriverClass("com.mysql.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/day16");ds.setUser("root");ds.setPassword("root");ds.setInitialPoolSize(10);ds.setMinPoolSize(5);ds.setMaxPoolSize(20);*/ds = new ComboPooledDataSource();}catch (Exception e) {throw new ExceptionInInitializerError(e);}}public static Connection getConnection() throws SQLException{return ds.getConnection();}public static void release(Connection conn,Statement st,ResultSet rs){if(rs!=null){try{rs.close();}catch (Exception e) {e.printStackTrace();}rs = null;}if(st!=null){try{st.close();}catch (Exception e) {e.printStackTrace();}}if(conn!=null){try{conn.close();}catch (Exception e) {e.printStackTrace();}}}//替换dao中的增删改方法public static void update(String sql,Object params[]) throws SQLException{ Connection conn = null;PreparedStatement st = null;ResultSet rs = null;try{conn = getConnection();st = conn.prepareStatement(sql);for(int i=0;i<params.length;i++){st.setObject(i+1, params[i]);}st.executeUpdate();}finally{release(conn, st, rs);}}//替换所有dao中的查询策略模式public static Object query(String sql,Object params[],ResultSetHandler rsh) throws SQLException{Connection conn = null;PreparedStatement st = null;ResultSet rs = null;try{conn = getConnection();st = conn.prepareStatement(sql);for(int i=0;i<params.length;i++){st.setObject(i+1, params[i]);}rs = st.executeQuery();return rsh.handler(rs);}finally{release(conn, st, rs);}}}JDBCUtills_dbcp.java:package cn.kgli.utils;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import mons.dbcp.BasicDataSourceFactory;public class JdbcUtils_DBCP {private static DataSource ds = null;static{try{InputStream in =JdbcUtils_DBCP.class.getClassLoader().getResourceAsStream("dbcpconfig.properties" );Properties prop = new Properties();prop.load(in);BasicDataSourceFactory factory = new BasicDataSourceFactory();ds = factory.createDataSource(prop);System.out.println(ds);}catch (Exception e) {throw new ExceptionInInitializerError(e);}}public static Connection getConnection() throws SQLException{return ds.getConnection();}public static void release(Connection conn,Statement st,ResultSet rs){if(rs!=null){try{rs.close();}catch (Exception e) {e.printStackTrace();}rs = null;}if(st!=null){try{st.close();}catch (Exception e) {e.printStackTrace();}}if(conn!=null){try{conn.close();}catch (Exception e) {e.printStackTrace();}}}}//BeanHandler.javapackage cn.kgli.utils;import ng.reflect.Field;import java.sql.ResultSet;import java.sql.ResultSetMetaData;public class BeanHandler implements ResultSetHandler { private Class clazz;public BeanHandler(Class clazz){this.clazz = clazz;}public Object handler(ResultSet rs) {try{if(!rs.next()){return null;}Object bean = clazz.newInstance();ResultSetMetaData metadata = rs.getMetaData();int columnCount = metadata.getColumnCount(); //得到结果集中有几列数据for(int i=0;i<columnCount;i++){String coulmnName = metadata.getColumnName(i+1); //得到每列的列名Object coulmnData = rs.getObject(i+1);Field f = clazz.getDeclaredField(coulmnName);//反射出类上列名对应的属性f.setAccessible(true);f.set(bean, coulmnData);}return bean;}catch (Exception e) {throw new RuntimeException(e);}}}BeanListHandler.javapackage cn.kgli.utils;import ng.reflect.Field;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.util.ArrayList;import java.util.List;public class BeanListHandler implements ResultSetHandler {private Class clazz;public BeanListHandler(Class clazz){this.clazz = clazz;}public Object handler(ResultSet rs) {try{List list = new ArrayList();while(rs.next()){Object bean = clazz.newInstance();ResultSetMetaData metadata = rs.getMetaData();int count = metadata.getColumnCount();for(int i=0;i<count;i++){String name = metadata.getColumnName(i+1);Object value = rs.getObject(name);Field f =bean.getClass().getDeclaredField(name);f.setAccessible(true);f.set(bean, value);}list.add(bean);}return list.size()>0?list:null;}catch (Exception e) {throw new RuntimeException(e);}}}防止表单重复提交:拦截注册页面加上session tokenpackage cn.kgli.servlet;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException; import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import sun.misc.BASE64Encoder;public class FormServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String token = TokenProccessor.getInstance().makeToken();request.getSession().setAttribute("token", token); //在服务器端保存随机数request.getRequestDispatcher("/form.jsp").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}class TokenProccessor{/**单态设计模式(保证类的对象在内存中只有一个)*1、把类的构造函数私有*2、自己创建一个类的对象*3、对外提供一个公共的方法,返回类的对象**/private TokenProccessor(){}private static final TokenProccessor instance = new TokenProccessor();public static TokenProccessor getInstance(){return instance;}public String makeToken(){ //checkException// 7346734837483 834u938493493849384 43434384String token = (System.currentTimeMillis() + newRandom().nextInt(999999999)) + "";//数据指纹 128位长 16个字节 md5try {MessageDigest md = MessageDigest.getInstance("md5");byte md5[] = md.digest(token.getBytes());//base64编码--任意二进制编码明文字符 adfsdfsdfsfBASE64Encoder encoder = new BASE64Encoder();return encoder.encode(md5);} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}}<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'form.jsp' starting page</title></head><body><form action="/day08/servlet/DoFormServlet" method="post"><input type="hidden" name="token"value="<%=session.getAttribute("token") %>">用户名:<input type="text" name="username"><input type="submit" value="提交"></form></body></html>package cn.itcast.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DoFormServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {boolean b = isToken(request); //判断用户是否是重复提交if(b==true){System.out.println("请不要重复提交");return;}request.getSession().removeAttribute("token");System.out.println("处理用户提交请求!!");}private boolean isToken(HttpServletRequest request) {String client_token = request.getParameter("token");if(client_token==null){return true;}String server_token = (String)request.getSession().getAttribute("token");if(server_token==null){return true;}if(!client_token.equals(server_token)){return true;}return false;}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}。