zoukankan      html  css  js  c++  java
  • Java基础的应用

    使用BigDecimal需要注意

    		BigDecimal n1 = new BigDecimal("0");
    		BigDecimal n2 = new BigDecimal("2");
    		n1.add(n2);
    		System.out.println(n1);----输出0
    

      这里n1并不会加上n2的值,应该使用n1=n1.add(n2)

    后端组成树结构

    // 生成permission树状结构
    @ResponseBody
    @RequestMapping("/get/permission/tree")
    public ResultVO<PermissionDO> toPermissionPage() {
    	List<PermissionDO> permissions = databaseProviderRemoteService.getAllPermissions().getData();
    	// 生成一个根节点
    	PermissionDO root = null;
    
    	// 创建一个Map保存id-PermissionDO,方法后面用pid去获取
    	Map<Integer, PermissionDO> permissionMap = new HashMap<>();
    
    	// 遍历list找出根节点
    	for (PermissionDO permissionDO : permissions) {
    		// 获取id,并将id和permissionDO存入到map中
    		Integer id = permissionDO.getId();
    		permissionMap.put(id, permissionDO);
    		// 获取pid
    		Integer pid = permissionDO.getPid();
    		if (pid == null) {
    			root = permissionDO;
    		}
    	}
    
    	for (PermissionDO permissionDO : permissions) {
    		// 我们先找出pid不为Null的节点
    		Integer pid = permissionDO.getPid();
    		if (pid != null) {
    			// 通过pid对应的id我们找到它的父节点
    			PermissionDO parent = permissionMap.get(pid);
    			parent.getChildren().add(permissionDO);
    		}
    	}
    
    	return new ResultVO<PermissionDO>(ResultVO.SUCCESS, ResultVO.NO_MSG, root);
    }

    IO流

    java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。

       
    字节流基类 Inputstream OutputStream
    字节文件操作流 FileInputStream FileOutputStream
    字节缓冲流(高效流) BufferedInputStream BufferedOutputStream

    NIO

    三大组件:chanel、buffer、selector

     ###FileChannel和buffer的简单使用
     ​
     RandomAccessFile accessFile = null;
     try {
         accessFile = new RandomAccessFile("test.txt", "rw");
         FileChannel channel = accessFile.getChannel();
         ByteBuffer buffer = ByteBuffer.allocate(1024);
         int bytesRead;
         while ((bytesRead = channel.read(buffer)) != -1) {
             buffer.flip();
             while (buffer.hasRemaining()) {
                 System.out.print((char) buffer.get());
             }
             buffer.compact();
         }
     } finally {
         accessFile.close();
     }

    缓冲区(buffer)的使用

    buffer:缓冲区,实际上是一个容器、连续数组。Channel提供从文件、网络读取数据的渠道,但是读写的数据都必须经过buffer。

    可以把buffer简单地理解为一组基本数据类型的元素列表,它通过几个变量来保存这个数据的当前位置状态:capacity,position,limit,mark。

    索引说明
    capacity 缓冲区数组的总长度
    position 下一个要操作的数据元素的位置
    limit 缓冲区数组中不可操作的下一个元素的位置:limit<=capacity
    mark 用于记录当前position的前一个位置或者默认是-1
    作用相关方法
    分配空间 ByteBuffer buffer = ByteBuffer.allocate(1024);
    写入数据到buffer中 int bytesRead = channel.read(buffer)
    判断buffer中有数据 boolean b=buffer.hasRemaining()
    从Buffer中读取数据 buffer.get()
    开始时 buffer.flip()
    结束时 buffer.compact()

    Arrays方法的巧用

    1. 将数组转换成List:List<String> list = Arrays.asList(arr.split(","));

    2. 数组根据ASCII码排序:Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);

    Iterator的使用

     【---list---】
     List<Integer> list = new ArrayList<>();
     //遍历
     while (iterator.hasNext()) {
         System.out.print(iterator.next() + " ");
     }
     //删除
     while (iterator.hasNext()) {
         iterator.remove();
     }
     ​
     【---map---】
     Map<Integer, String> map = new HashMap<>();
     Iterator<Integer> it = map.keySet().iterator();
     while(it.hasNext()) {
         Integer key = it.next();
         System.out.println(key+"->"+map.get(key));
     }

    JVM相关

    内存分配

    java -jar -Xms128m -Xmx256m xx.war

    命令解释
    Xms 指设定程序启动时占用内存大小
    Xmx 是指设定程序运行期间最大可占用的内存大小
    Xss 指设定每个线程的堆栈大小

    以上三个参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB。

  • 相关阅读:
    HTML5新增标签,表单及属性
    css3背景属性
    移动端隐藏滚动条
    css3选择符
    Hibernate读书笔记条件查询
    Hibernate读书笔记事件机制
    Hibernate读书笔记SQL查询
    Hibernate读书笔记HQL查询
    Hibernate读书笔记Hibernate知识总结
    Hibernate读书笔记缓存
  • 原文地址:https://www.cnblogs.com/hucheng1997/p/11536564.html
Copyright © 2011-2022 走看看