Java基础知识三
1.验证url合法性
1 | public static boolean isValidUrl(String urlString){ |
2.java解析url
java解析url中的参数,无外乎哪几种方法,但是还是挺有用的。谷歌提供了一个工具Guava,里面就有一个
1.五种不同的 URL 参数解析方法的性能比较
2.URLParser:很实用的URL参数解析器(JAVA代码中方便获取QueryString中的get参数)
3.Java 解析url,获取参数 (这是自己写的一个静态类和方法)
4.Guava学习之Splitter
5.五种不同的 URL 参数解析方法的性能比较
3.Lambda表达式
例如
(1) 表达式: person -> person.getAge();可以替换成 Person::getAge
(2) 表达式: () -> new HashMap<>();可以替换成 HashMap::new
1.Java8中的[方法引用]“双冒号”——走进Java Lambda(四)
2.Lambda表达式将数组/ String列表转换为数组/整数列表 (使用Lambda表达式将String类型的List转为Integer类型的list,这篇文章还有其他的一些方法,值得借鉴)
4.list去重
1 | // 使用stream的distinct方法实现去重,但是需要对象实现hashcode equals 方法 |
1.Java List去重的6种方法
2.List对象去重的几种方法
3.Lombok 的 @EqualsAndHashCode(callSuper = false) 的使用 (使用自动生成的eauals方法,无法实现去重的功能)
4.Java List去掉重复对象-java8 (讲了三种方法,其中一种是根据对象的属性进行去重)
5.Java 8 Stream.distinct() 列表去重示例
6.浅谈Java中的hashcode方法 (讲了为什么在重写equals方法的同时,必须重写hashCode方法)
5.重复读取InputStream
1 | public class StreamOperateUtil { |
1.Java实现inputstream流的复制 代码从这里拷过来的
2.ByteArrayOutputStream或ByteArrayInputStream不需要关闭流原因分析 ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收。所以不需要关流。
3.InputStreamReader和BufferedReader用法及真实案例
4.重复读取InputStream的方法 在InputStream读取的时候,会有一个pos指针,他指示每次读取之后下一次要读取的起始位置,当读到最后一个字符的时候,pos指针不会重置。
5.InputStream重新读取 rest方法也是可以用的,但只能在BufferedInputStream中使用,并且还要搭配mark使用,bis.mark(is.available()+1)
6.BufferedReader读取文件以后,怎么将文件指针移到文件开头 也是使用了 reader.mark((int)file.length());
5.文件预览
刚好需要获取 阿里云存储中的 oss 进行图片预览,于是有了这个记录。
1.JAVA读取文件流,设置浏览器下载或直接预览 这里正好也是使用的oss进行的操作。
6.base64文件操作
1 | /** |
【1】.byte数组和File,InputStream互转
【2】.java base64对各种文件进行编码、解码,通过ByteArrayInputStream和ByteArrayOutputStream方式实现
【3】.解决jdk版本不兼容导致的Base64加密问题java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder 这里倒是用了 commons-codec 依赖代替了 sun.misc.BASE64Decoder
【4】.base64转file文件 这里用的是 sun.misc.BASE64Decoder,但是这里有一个地方有了 Base64FileTypeEnum
【5】.java使用hutool工具类实现base64字符串image的压缩 进行了图片的压缩
【6】.java:base64字符串转换成图片 用了 sun.misc.BASE64Decoder 。