java小知识

1.获取当天23:59:59时间

Calendar calendar2 = Calendar.getInstance();
		calendar2.set(calendar2.get(Calendar.YEAR), calendar2.get(Calendar.MONTH), calendar2.get(Calendar.DAY_OF_MONTH),
		        23, 59, 59);
		Date endOfDate = calendar2.getTime();
		SimpleDateFormat SDF= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String format = SDF.format(endOfDate);
		System.out.println(format);

2.【cron表达式装换成时间格式】

package web.cron;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.quartz.CronExpression;
	public class CronExpParser {

	    /**
	     * @方法名:parser
	     * @方法描述【cron表达式装换成时间格式】
	     * @param cronExpression   cron表达式
	     * @return
	     * @修改描述【修改描述】
	     * @版本:1.0
	     * @创建人:Administrator
	     * @创建时间:2018年8月17日 下午2:46:43
	     * @修改人:Administrator
	     * @修改时间:2018年8月17日 下午2:46:43
	     */
	    public static List<String> parser(String cronExpression) {
	        List<String> result = new ArrayList<String>();
	        if (cronExpression == null || cronExpression.length() < 1) {
	            return result;
	        } else {
	            CronExpression exp = null;
	            try {
	                exp = new CronExpression(cronExpression);
	            } catch (ParseException e) {
	                e.printStackTrace();
	                return result;
	            }
	            Calendar calendar = Calendar.getInstance();
	            String cronDate = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DATE);
	            String sStart = cronDate + " 00:00:00";
	            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	            Date dStart = null;
	            Date dEnd = null;
	            try {
	                dStart = sdf.parse(sStart);
	                calendar.setTime(dStart);
	                calendar.add(Calendar.DATE, 1);
	                dEnd = calendar.getTime();
	            } catch (ParseException e) {
	                e.printStackTrace();
	            }
	            Date dd = new Date();
	            dd = exp.getNextValidTimeAfter(dd);
	            while (dd.getTime() < dEnd.getTime()) {
	                result.add(sdf.format(dd));
	                dd = exp.getNextValidTimeAfter(dd);
	            }
	            exp = null;
	            
	        }
	        return result;
	    }

	    public static void main(String[] args) {
	        String CRON_EXPRESSION = "0/30 * * * * ? *";
	        System.out.println(CRON_EXPRESSION);
	        List<String> lTime = new ArrayList<String>();
	        lTime = CronExpParser.parser(CRON_EXPRESSION);
	        for (int i = 0; i < lTime.size(); i++) {
	            System.out.println(lTime.get(i));
	        }

	    }
	   
	}

结果为:如下图:
在这里插入图片描述
3.java 时间转换Tue, 29 Jan 2019 09:26:29 GMT转换为 (标准时间)时间格式转换

package web.String;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo8 {
	public static void main(String[] args) {
		String time = "Tue, 29 Jan 2019 09:26:29 GMT";
        Date date = new Date(time);
        SimpleDateFormat dateformat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        time=dateformat1.format(date);
        System.out.println(time);
		
	}
}

结果如图:
在这里插入图片描述
4.随机生成字符串以及随机抽取字符串

package web.suiji;
import java.util.Random;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class RandomUtil {
		public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		public static final String NUMBERCHAR = "0123456789";

		/**
		 * 返回一个定长的随机字符串(只包含大小写字母、数字)
		 * 
		 * @param length
		 *            随机字符串长度
		 * @return 随机字符串
		 */
		public static String generateString(int length) {
			StringBuffer sb = new StringBuffer();
			Random random = new Random();
			for (int i = 0; i < length; i++) {
				sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
			}
			return sb.toString();
		}

		/**
		 * 返回一个定长的随机纯字母字符串(只包含大小写字母)
		 * 
		 * @param length
		 *            随机字符串长度
		 * @return 随机字符串
		 */
		public static String generateMixString(int length) {
			StringBuffer sb = new StringBuffer();
			Random random = new Random();
			for (int i = 0; i < length; i++) {
				sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));
			}
			return sb.toString();
		}

		/**
		 * 返回一个定长的随机纯大写字母字符串(只包含大小写字母)
		 * 
		 * @param length
		 *            随机字符串长度
		 * @return 随机字符串
		 */
		public static String generateLowerString(int length) {
			return generateMixString(length).toLowerCase();
		}

		/**
		 * 返回一个定长的随机纯小写字母字符串(只包含大小写字母)
		 * 
		 * @param length
		 *            随机字符串长度
		 * @return 随机字符串
		 */
		public static String generateUpperString(int length) {
			return generateMixString(length).toUpperCase();
		}

		/**
		 * 生成一个定长的纯0字符串
		 * 
		 * @param length
		 *            字符串长度
		 * @return 纯0字符串
		 */
		public static String generateZeroString(int length) {
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < length; i++) {
				sb.append('0');
			}
			return sb.toString();
		}

		/**
		 * 根据数字生成一个定长的字符串,长度不够前面补0
		 * 
		 * @param num
		 *            数字
		 * @param fixdlenth
		 *            字符串长度
		 * @return 定长的字符串
		 */
		public static String toFixdLengthString(long num, int fixdlenth) {
			StringBuffer sb = new StringBuffer();
			String strNum = String.valueOf(num);
			if (fixdlenth - strNum.length() >= 0) {
				sb.append(generateZeroString(fixdlenth - strNum.length()));
			} else {
				throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
						+ "的字符串发生异常!");
			}
			sb.append(strNum);
			return sb.toString();
		}

		/**
		 * 每次生成的len位数都不相同
		 * 
		 * @param param
		 * @return 定长的数字
		 */
		public static int getNotSimple(int[] param, int len) {
			Random rand = new Random();
			for (int i = param.length; i > 1; i--) {
				int index = rand.nextInt(i);
				int tmp = param[index];
				param[index] = param[i - 1];
				param[i - 1] = tmp;
			}
			int result = 0;
			for (int i = 0; i < len; i++) {
				result = result * 10 + param[i];
			}
			return result;
		}

		/**
		 * 随机生成字符串(只有字母和数字)
		 * @param args
		 */
		/*public static void main(String[] args) {
			System.out.println("返回一个定长的随机字符串(只包含大小写字母、数字):" + generateString(10));
			System.out
					.println("返回一个定长的随机纯字母字符串(只包含大小写字母):" + generateMixString(10));
			System.out.println("返回一个定长的随机纯大写字母字符串(只包含大小写字母):"
					+ generateLowerString(10));
			System.out.println("返回一个定长的随机纯小写字母字符串(只包含大小写字母):"
					+ generateUpperString(10));
			System.out.println("生成一个定长的纯0字符串:" + generateZeroString(10));
			System.out.println("根据数字生成一个定长的字符串,长度不够前面补0:"
					+ toFixdLengthString(123, 10));
			int[] in = { 1, 2, 3, 4, 5, 6, 7 };
			System.out.println("每次生成的len位数都不相同:" + getNotSimple(in, 3));
		}*/
		
		

		/**
		 * java演示倒计时
		 * 
		 */
		    public static int time = 5;
		    public static Calendar c;
		    public static long endTime;
		    public static Date date;
		    public static long startTime;
		    public static long midTime;
		
		/**
		 * 抽取指定姓名中的名字
		 * @param args
		 */
		public static void main(String[] args) {
			   c = Calendar.getInstance();
		        c.set(2017, 4, 17, 0, 0, 0);// 注意月份的设置,0-11表示1-12月
		        // c.set(Calendar.YEAR, 2017);
		        // c.set(Calendar.MONTH, 4);
		        // c.set(Calendar.DAY_OF_MONTH, 17);
		        // c.set(Calendar.HOUR_OF_DAY, 0);
		        // c.set(Calendar.MINUTE, 0);
		        // c.set(Calendar.SECOND, 0);
		        endTime = c.getTimeInMillis();
		        date = new Date();
		        startTime = date.getTime();
		        midTime = (endTime - startTime) / 1000;

		        time1();//方式一
		        //time2();// 方式二
		        // time3();//方式三
			
			//定义人名数组
			String [] name = {"张三","李四","王五","八神庵","不知火舞","大蛇","景天","唐雪见","李逍遥","赵灵儿"};
			//随机生成数组下标、
			int num = (int)(Math.random() * 1000);
			//对生成的随机数进行判断,如果小于数组下标,就跳出循环
			while (num>name.length-1) {
				if (num<=name.length-1) {
			break;
			}
			num = (int)(Math.random() * 1000);
			}
			//将数组下标设置成随机数,就可以实现人名的随机抽取
			System.out.println("被抽到的同学是:"+name[num]);
			}
		   // public static void main(String[] args) {
		     
		  //  }

		    /**
		     * 方式一: 给定时长倒计时
		     */
		    private static void time1() {
		        while (time > 0) {
		            time--;
		            try {
		                Thread.sleep(1000);
		                int hh = time / 60 / 60 % 60;
		                int mm = time / 60 % 60;
		                int ss = time % 60;
		                System.out.println("还剩" + hh + "小时" + mm + "分钟" + ss + "秒");
		            } catch (InterruptedException e) {
		                e.printStackTrace();
		            }
		        }

		}
		    
		    
} 


5.查询集合中不连续的数的个数

package web.zizeng;

import java.util.ArrayList;
import java.util.List;

public class Zizeng {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		List<Integer> list4 = new ArrayList<Integer>();
		/*list.add(65529);
		list.add(1);
	*/
		//list.add(65515);//16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
		/*list.add(65531);
		list.add(65532);
		list.add(65533);*/
		list.add(65534);
		list.add(65535);
		list.add(1);
		list.add(2);
		list.add(3);//缺少4,5,6,7,8,9
		list.add(10);
		list.add(11);
		
		Integer sum = 0;
		Integer integer = 0;
		
		//找出该传感器的delection_time的集合中不连续的数有多少个
		for (int i = 0; i < list.size()-1; i++) {
			if (list.get(i) < 65535 && (list.get(i + 1)) > (list.get(i))) {
				if ((list.get(i + 1)) - (list.get(i)) == 1) {
					// 连续的数
					continue;
				}
				int a = list.get(i + 1);
				int b = list.get(i);
				if ((a - b) != 1) {
					// 不连续的数
					int c = (a - b) - 1;
					sum = sum + c;
					list4.add(sum);
				}
				// 获取list1集合中最后一个元素:==总的不连续的个数
				integer = list4.get(list4.size() - 1);
			}

			if ((list.get(i + 1)) < (list.get(i))) {
				if ((list.get(i + 1)) - (list.get(i)) == -65534) {
					// 进入该判断说明是连续的
					continue;
				} else {
						int a = list.get(i + 1);
						int b = list.get(i);
						// 不连续的数
						int c = (b - a);
						int x = 65535 - c - 1;
						sum = sum + x;
						list4.add(sum);
				}
				// 获取list1集合中最后一个元素:==总的不连续的个数
				integer = list4.get(list4.size() - 1);
			}
			if (list.get(i) == 65535) {
				continue;
			}
		}
		//输出最后一个元素
		System.out.println(integer);
		
		/*for (Integer in : list4) {
			System.out.println(in);
		}*/
	}

}

6.文件上传Controller实例:

package web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import web.mapping.student;
import web.service.SecondService;

import javax.servlet.http.HttpServletRequest;

import java.io.File;
import java.io.IOException;
@Controller
@RequestMapping("/second")
public class UplodesController {
	    @Autowired
	    private SecondService secondservice;

	    //二级标题发布
	    @RequestMapping(value = "/secondsave",method = RequestMethod.POST)
	    public String secondsave(@RequestParam(value = "file1") MultipartFile file, HttpServletRequest request, student second) {

	        try {
	        	request.setAttribute("files", file);
	            //上传后的地址,注意("/upload")是表示文件上传后的目标文件夹
	            String realPath = request.getSession().getServletContext().getRealPath("/uplode");
	            System.out.println("打印文件上传的路径"+realPath);
	            //获取文件名
	            String filename = file.getOriginalFilename();
	            //获取文件后缀名
	            String extensionname = filename.substring(filename.lastIndexOf(".") + 1);
	            //给上传的文件起别名,有很多种方式

	            String newFilename=String.valueOf(System.currentTimeMillis())+"."+extensionname;

	            //创建File对象,传入目标路径参数,和新的文件别名

	            File dir=new File(realPath,newFilename);

	            if (!dir.exists()){//如果dir代表的文件不存在,则创建它,

	                dir.mkdirs();//

	            }

	            //如果存在则直接执行下面操作

	            file.transferTo(dir);//将上传的实体文件复制到指定目录upload下

	            second.setTupian(newFilename);//将文件名赋值给实体类,然后一并存到数据库

	            secondservice.secondSave(second);//调用后台方法,将对象存进数据库

	            System.out.println("测试是否执行完毕");
	            request.setAttribute("files1", realPath);

	        } catch (IOException e) {

	            e.printStackTrace();
	        }
	        return "succes.jsp";//执行完毕,返回一个逻辑视图

	      }
	}

7.集合排序

a. 当List集合中是List/List类型时,我们直接用 Collections.sort(list);

b.当List集合中是List<对象>时,我们要对对象中的某一个元素进行排序,如下:

 Collections.sort(list, new Comparator<对象>() {
     public int compare(对象 o1, 对象 o2) {
       return o2.get属性.compareTo(o1.get属性());
     }});

c.对map集合进行排序:

Map<String, String> map = new TreeMap<String, String>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渡生远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值