应用代码实例

1.使用异或对图片数据进行加密

import java.io.*;
class ImageTest 
{
	public static void main(String[] args)  throws Exception
	{
		//找到图片文件
		File inFile = new File("e:\\加密的图片.jpg");
       //File inFile = new File("e:\\需要加密的图片.jpg");
		File outFile = new File("e:\\解密的图片.jpg");

		//建立数据通道,让图片的二进制数据流入
		FileInputStream input = new FileInputStream(inFile);
		FileOutputStream output = new FileOutputStream(outFile);
        //边读,把读到的数据异或一个数据,把把数据写出
		int content = 0; //该变量是用于存储读取到的数据
		while((content = input.read())!=-1){  // 如果没有到文件的末尾,那么继续读取数据,读取到的数据已经存储到content变量中了。
			output.write(content^12);
		}	
		//关闭资源
		output.close();
		input.close();
	}
}

2.猜数字游戏

/*
        * 实现猜数字游戏, 如果没有猜对可以继续输入你猜的数字,如果猜对了停止程序。
        * 最多只能猜三次,如果还剩下最后一次机会的时候要提醒用户。
        */
       Random random=new Random();
       int numb=random.nextInt(11);
       System.out.println("输入一个数值");
       Scanner scan=new Scanner(System.in);
       boolean flag=true;
       int sum=0;
       //while(scan.hasNext()) {
       while(flag&&sum<3) {
    	   int a=scan.nextInt();
    	   if(a==numb) {
    		   System.out.println("ni cai dui le");
    		   //scan.close();
    		   sum++;
    		   flag=false;
    	   }else if(a<numb){
    		   System.out.println("shu ru tai xiao");
    		   if(sum==1) {
    			   System.out.println("你还有最后一次机会");
    		   }
    		   sum++;
    	   }else {
	    	   System.out.println("shu ru guo da");
	    	   if(sum==1) {
				   System.out.println("你还有最后一次机会");
			   }
			   sum++;
    	   }
       }

3.排序算法

1)选择排序(直接排序):使用一个元素与其他的元素挨个比较一次,符合条件交换位置。

public static void selectSort(int[] arr) {
		 for(int i=0;i<arr.length-1;i++) {//控制的是轮数  
			 for(int j=i+1;j<arr.length;j++) {//找出最大值				
				if(arr[i]<arr[j]) {	
                                   //交换位置		            
                                      int temp=arr[i];					
                                      arr[i]=arr[j];
				      arr[j]=temp;
				}				 
			 }
		 }
	 }

2)冒泡排序:冒泡排序的思想就是使用相邻的两个 元素挨个比较一次,符合条件交换位置。

public static void bubbleSort(int[] arr){
		// 把最大值放在最后一个位置
		for(int j = 0 ; j<arr.length-1 ; j++){ //控制轮数
			for(int i = 0 ; i<arr.length-1-j  ; i++){  // 找出一个最大值  
				//相邻的元素比较
				if(arr[i]>arr[i+1]){
					int temp  = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}

4.折半查找法(二分法): 使用前提必需是有序的数组。

public static int halfSearch(int[] arr, int target){
		//定义三个变量分别记录最大、最小、中间的查找范围索引值
		int max = arr.length-1;
		int min = 0;
		int mid = (max+min)/2;
		while(true){
			if(target>arr[mid]){
				min = mid+1;
			}else if(target<arr[mid]){
				max = mid -1;
			}else{
				//找到了元素
				return mid;
			}

			//没有找到的情况
			if (max<min){
				return -1;
			}

			//重新计算中间索引值
			mid = (min+max)/2;
		}	
	}

5.目前有数组” int[] arr =  {11,2, 4, 2, 10, 11},
定义一个函数清除该数组的重复元素,返回的数组存储了那些非重复的元素而且数组不准浪费长度。
分析: 确定新数组的长度。  原数组的长度-重复元素个数

import java.util.*;
class Demo12 {

	public static void main(String[] args) 
	{
		int[] arr =  {11,2, 4, 2, 10, 11};
		arr = clearRepeat(arr);
		System.out.println("清除重复元素的数组:"+ Arrays.toString(arr));
	}

	public static int[] clearRepeat(int[] arr){
		//先计算出重复元素的格式:
		int count = 0; //记录重复元素的个数
		for(int i = 0 ; i < arr.length-1 ; i++){
			for(int j = i+1 ; j<arr.length ; j++){
				if(arr[i]==arr[j]){
					count++;
					break;
				}
			}
		}
		
		//新数组 的长度
		int newLength = arr.length - count;
		//创建一个新的数组
		int[] newArr = new int[newLength];

		int index = 0 ; 	//新数组的索引值

		
		//遍历旧数组
		for(int i = 0  ; i< arr.length ; i++){
			int temp = arr[i];  //旧数组中的元素 
			boolean flag = false;  //默认不是重复元素
			
			
			//拿着旧数组 的元素 与新数组的每个元素比较一次。
			for(int j = 0 ; j< newArr.length ; j++){
				if(temp==newArr[j]){
					flag = true;
					break;
				}
			}
			
			if(flag == false){
				newArr[index++] = temp;
			}
		}
		
		return newArr;
	}
	
}

6. 读取.xml文件

 /**
     * 读取系统配置文件方法
     */
    public List<SystemSetPageDto> getXMLPage() throws Exception{
        List<SystemSetPageDto> pageList = new ArrayList<>();

        //创建SAXReader对象
        SAXReader reader = new SAXReader();
        String strPath = this.getClass().getClassLoader().getResource("pageComponentSet.xml").getPath();
        //读取文件 转换成Document
        Document document = reader.read(new File(strPath));
        //获取根节点元素对象
        Element root = document.getRootElement();


        //首先获取跟节点的所有属性节点
        List<Element> pageLst = root.elements();
        //List<Attribute> pageLst = root.attributes();

        for(Element page : pageLst)
        {
            SystemSetPageDto rtnPage = new SystemSetPageDto();
            List<SystemSetAreaDto> areaLst = new ArrayList<>();

            // 取得页面ID
            List<Attribute> pageAttributeLst = page.attributes();
            if (pageAttributeLst.size() <= 0)
                continue;
            Attribute pageAttribute = pageAttributeLst.get(0);
            if (pageAttribute == null)
                continue;
            rtnPage.pageID = pageAttribute.getValue();

            rtnPage.areaLst = new ArrayList<>();
            List<Element> areatLst = page.elements();
            for(Element area : areatLst){
                SystemSetAreaDto rtnArea = new SystemSetAreaDto();
                // 取得区域编号
                List<Attribute> areaAttributeLst = area.attributes();
                if (areaAttributeLst.size() <= 0)
                    continue;
                Attribute areaAttribute = areaAttributeLst.get(0);
                if (areaAttribute == null)
                    continue;
                rtnArea.areaCode = areaAttribute.getValue();

                SystemSetComponentDto rtnTarget = new SystemSetComponentDto();
                rtnArea.componentLst = new ArrayList<>();
                List<Element> targetLst = area.elements();
                for(Element target : targetLst){
                    switch(target.getName()){
                        case "ComponentCode":
                            rtnTarget.componentCode = target.getTextTrim();
                            break;
                        case "ComponentName":
                            rtnTarget.componentName = target.getTextTrim();
                            break;
//                            case "IsDisplay":
//                                rtnTarget.isDisplay = target.getTextTrim();
//                                break;
                        default:break;
                    }
                }
                rtnArea.componentLst.add(rtnTarget);
                rtnPage.areaLst.add(rtnArea);
            }
            pageList.add(rtnPage);
        }
        return pageList;
    }

其中SystemSetPageDto是一个实体对象:

import java.util.List;

public class SystemSetPageDto {
    public String pageID;
    public List<SystemSetAreaDto> areaLst;
    
    public List<SystemSetAreaDto> getAreaLst() {
        return areaLst;
    }

    public void setAreaLst(List<SystemSetAreaDto> areaLst) {
        this.areaLst = areaLst;
    }

    public String getPageID() {
        return pageID;
    }

    public void setPageID(String pageID) {
        this.pageID = pageID;
    }
}

同理:

import java.util.List;

public class SystemSetAreaDto {
    public String areaCode;
    public List<SystemSetComponentDto> componentLst;

    public String getAreaCode() {
        return areaCode;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }

    public List<SystemSetComponentDto> getComponentLst() {
        return componentLst;
    }

    public void setComponentLst(List<SystemSetComponentDto> componentLst) {
        this.componentLst = componentLst;
    }
}
public class SystemSetComponentDto {
    public String componentCode;
    public String componentName;

    public String getComponentCode() {
        return componentCode;
    }

    public void setComponentCode(String componentCode) {
        this.componentCode = componentCode;
    }

    public String getComponentName() {
        return componentName;
    }

    public void setComponentName(String componentName) {
        this.componentName = componentName;
    }
}

7.根据前台post请求返回的json数据生成.xml文件

StringBuilder stringBuilder = new StringBuilder();
                BufferedReader reader = this.getRequest().getReader();
                String line = null;
                while((line = reader.readLine()) != null){
                    stringBuilder.append(line);
                }
                reader.close();
                JSONObject jsonObject = JSONObject.parseObject(stringBuilder.toString());
                JSONArray jsonArrPage = jsonObject.getJSONArray("result");//获取page json数组

                Document document = DocumentHelper.createDocument();
                Element pageroot = document.addElement("pageList");//创建根节点pageList
                Element pagechild; //创建子元素page
                Element areaElement; //创建子元素area
                Element compoentCodeElement;//创建子元素ComponentCode
                Element componentNameElement;//创建子元素ComponentName

                for (int i = 0; i < jsonArrPage.size(); i++) {
                    JSONObject jo = jsonArrPage.getJSONObject(i);
                    //将JSON对象转换成java对象
                    SystemSetPageDto systemSetPageDto = JSON.toJavaObject(jo, SystemSetPageDto.class);
                    pagechild = pageroot.addElement("page");
                    pagechild.addAttribute("pageid", systemSetPageDto.getPageID());
                    if(systemSetPageDto.getPageID().equalsIgnoreCase("yxjc") ||systemSetPageDto.getPageID().equalsIgnoreCase("jwwz")) {
                        List<SystemSetAreaDto> lstAreaDtos = systemSetPageDto.getAreaLst();
                        for (SystemSetAreaDto systemSetAreaDto : lstAreaDtos) {
                            //当未显示的组件为空时,不创建area子元素及相关内容
                            if(systemSetAreaDto.getComponentLst().size()>0) {
                                areaElement = pagechild.addElement("area");
                                areaElement.addAttribute("areaCode", systemSetAreaDto.getAreaCode());
                                List<SystemSetComponentDto> lstComponentDto = systemSetAreaDto.getComponentLst();
                                for (SystemSetComponentDto systemSetComponentDto : lstComponentDto) {
                                    compoentCodeElement = areaElement.addElement("ComponentCode");
                                    componentNameElement = areaElement.addElement("ComponentName");
                                    compoentCodeElement.setText(systemSetComponentDto.getComponentCode());
                                    componentNameElement.setText(systemSetComponentDto.getComponentName());
                                }
                            }
                        }
                    }else {
                        List<SystemSetAreaDto> lstAreaDtos = systemSetPageDto.getAreaLst();
                        for (SystemSetAreaDto systemSetAreaDto : lstAreaDtos) {
                            areaElement = pagechild.addElement("area");
                            areaElement.addAttribute("areaCode", systemSetAreaDto.getAreaCode());
                            List<SystemSetComponentDto> lstComponentDto = systemSetAreaDto.getComponentLst();
                            for (SystemSetComponentDto systemSetComponentDto : lstComponentDto) {
                                compoentCodeElement = areaElement.addElement("ComponentCode");
                                componentNameElement = areaElement.addElement("ComponentName");
                                compoentCodeElement.setText(systemSetComponentDto.getComponentCode());
                                componentNameElement.setText(systemSetComponentDto.getComponentName());
                            }
                        }
                    }
                }

                //实例化输出格式对象
                OutputFormat format = OutputFormat.createPrettyPrint();
                //设置输出编码
                format.setEncoding("UTF-8");
                //获取pageComponentSet.xml输出路径
                String strPath = this.getClass().getClassLoader().getResource("pageComponentSet.xml").getPath();

                File file = new File(strPath);
                //生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式
                XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
                //生成xml文件
                writer.write(document);
                writer.close();

其中包含的实体类如6所示。生成的.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<pageList>
  <page pageid="Head">
    <area areaCode="LR1C1">
      <ComponentCode>yxjc-jihuatourucheliang-wenben</ComponentCode>
      <ComponentName>文本</ComponentName>
    </area>
    <area areaCode="LR1C2">
      <ComponentCode>jwwz-weixiurenchebi-wenben</ComponentCode>
      <ComponentName>文本</ComponentName>
    </area>
    <area areaCode="LR1C3">
      <ComponentCode>jwwz-qianchegongliyunyingchengben-wenben</ComponentCode>
      <ComponentName>文本</ComponentName>
    </area>
    <area areaCode="LR1C4">
      <ComponentCode>jwwz-zongkucunjine-wenben</ComponentCode>
      <ComponentName>文本</ComponentName>
    </area>
  </page>
  <page pageid="Screen1">
    <area areaCode="LR1C1">
      <ComponentCode>yxjc-cheliangzaixian-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C2">
      <ComponentCode>yxjc-zaituyingyuncheliang-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C3">
      <ComponentCode>yxjc-shishiyingyunlicheng-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C4">
      <ComponentCode>yxjc-pingjunyunxingsudu-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C1">
      <ComponentCode>yxjc-houcheshijian-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C2">
      <ComponentCode>yxjc-jihuawanchelv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C3">
      <ComponentCode>yxjc-banciduixianlv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C4">
      <ComponentCode>yxjc-zhundianlv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
  </page>
  <page pageid="Screen2">
    <area areaCode="LR1C1">
      <ComponentCode>yxjc-chucheshuchuchelv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C2">
      <ComponentCode>jwwz-cheliangtuobaolv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C3">
      <ComponentCode>jwwz-wanhaochelv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR1C4">
      <ComponentCode>jwwz-cheliangbaoyangweixiuzhanbi-bingzhaung</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C1">
      <ComponentCode>jwwz-fanxiulv-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C2">
      <ComponentCode>jwwz-cheliangpingjunweixiushichang-wenben</ComponentCode>
      <ComponentName>文本</ComponentName>
    </area>
    <area areaCode="LR2C3">
      <ComponentCode>jwwz-ercilingliaozhanbi-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
    <area areaCode="LR2C4">
      <ComponentCode>jwwz-pingjundailiaoshichang-zhexian</ComponentCode>
      <ComponentName>图形</ComponentName>
    </area>
  </page>
  <page pageid="Screen3">
    <area areaCode="LR1C1">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR1C2">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR1C3">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR1C4">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR2C1">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR2C2">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR2C3">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
    <area areaCode="LR2C4">
      <ComponentCode></ComponentCode>
      <ComponentName></ComponentName>
    </area>
  </page>
  <page pageid="yxjc"/>
  <page pageid="jwwz"/>
</pageList>

8. 线程定时启动任务

Java定时启动线程

public static void main(String[] args) {

        /**
         * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。
         * 它有以下好处:
         * 1>相比于Timer的单线程,它是通过线程池的方式来执行任务的
         * 2>可以很灵活的去设定第一次执行任务delay时间
         * 3>提供了良好的约定,以便设定执行的时间间隔
         *
         * 下面是实现代码,我们通过ScheduledExecutorService#scheduleAtFixedRate展示这个例子,通过代码里参数的控制,首次执行加了delay时间。
         *
         */
        //#region 定时启动一个线程任务
        Runnable runnable = new Runnable() {
            public void run() {
                // task to run goes here
                System.out.println("Hello !!");
            }
        };
        ScheduledExecutorService service = Executors
                .newSingleThreadScheduledExecutor();
        // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
        service.scheduleAtFixedRate(runnable, 1/60, 1, TimeUnit.MINUTES);
//        创建并执行在给定延迟后启用的 ScheduledFuture。
//        参数:
//        callable - 要执行的功能
//        delay - 从现在开始延迟执行的时间
//        unit - 延迟参数的时间单位
//        返回:
//        可用于提取结果或取消的 ScheduledFuture
        //service.schedule(runnable, 1, TimeUnit.MINUTES);
        //#endregion

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值