2019年

FilenameUtils工具类

是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作。

  • 引入commons-io包
<dependency>  
      <groupId>commons-io</groupId>  
      <artifactId>commons-io</artifactId>  
      <version>2.4</version>  
</dependency>  
  • 测试类代码
import java.util.ArrayList;  
import java.util.List;  
import org.apache.commons.io.FilenameUtils;  
import org.apache.commons.io.IOCase;  
/** 
 * org.apache.commons.io.FilenameUtils工具类笔记 
 * @author Ickes 
 */  
public class FilenameUtilsTest {  
    public static void main(String[] args) throws Exception {  
        String fileDirectory = "/D:/aa/bb/cc";   
        String fileName ="file.txt";  
        String fileFullName = fileDirectory +"/"+ fileName;  
        System.out.println("(1)显示linux路径:"+FilenameUtils.normalizeNoEndSeparator(fileFullName));  
        System.out.println("(2)合并目录和文件名为文件全路径:"+FilenameUtils.concat(fileDirectory, fileName));  
        System.out.println("(3)文件路径去除目录和后缀后的文件名:"+FilenameUtils.getBaseName(fileFullName));  
        System.out.println("(4)获取文件的后缀:"+FilenameUtils.getExtension(fileFullName));  
        System.out.println("(5)获取文件的完整目录:"+FilenameUtils.getFullPath(fileFullName));  
        System.out.println("(6)获取文件的目录不包含结束符:"+FilenameUtils.getFullPathNoEndSeparator(fileFullName));  
        System.out.println("(7)获取文件名称,包含后缀:"+FilenameUtils.getName(fileFullName));  
        System.out.println("(8)去除前缀的路径:"+FilenameUtils.getPath(fileFullName));   
        System.out.println("(9)去除前缀并结尾去除分隔符:"+FilenameUtils.getPathNoEndSeparator(fileFullName));  
        System.out.println("(10)获取前缀:"+FilenameUtils.getPrefix(fileFullName));  
        System.out.println("(11)获取前缀长度:"+FilenameUtils.getPrefixLength(fileFullName));  
        System.out.println("(12)获取最后一个.的位置:"+FilenameUtils.indexOfExtension(fileFullName));  
        System.out.println("(13)获取最后一个/的位置:"+FilenameUtils.indexOfLastSeparator(fileFullName));  
        System.out.println("(14)获取当前系统格式化路径:"+FilenameUtils.normalize(fileFullName));  
        System.out.println("(16)获取当前系统无结尾分隔符的路径:"+FilenameUtils.normalizeNoEndSeparator(fileDirectory));  
        System.out.println("(17)获取linux系统无结尾分隔符的路径:"+FilenameUtils.normalizeNoEndSeparator(fileDirectory));  
        System.out.println("(18)移除文件的扩展名:"+FilenameUtils.removeExtension(fileFullName));  
        System.out.println("(19)转换分隔符为当前系统分隔符:"+FilenameUtils.separatorsToSystem(fileFullName));  
        System.out.println("(20)转换分隔符为linux系统分隔符:"+FilenameUtils.separatorsToUnix(fileFullName));  
        System.out.println("(21)转换分隔符为windows系统分隔符:"+FilenameUtils.separatorsToWindows(fileFullName));  
        System.out.println("(22)判断目录下是否包含指定文件或目录:"+FilenameUtils.directoryContains(fileDirectory, fileName));  
        String linuxFileName = FilenameUtils.normalize(fileFullName);  
        System.out.println("(23)判断文件路径是否相同:"+FilenameUtils.equals(fileFullName, linuxFileName));  
        System.out.println("(24)判断文件路径是否相同,格式化并大小写不敏感:"+FilenameUtils.equals(fileFullName,   
                FilenameUtils.normalize(fileFullName),true,IOCase.INSENSITIVE));  
        System.out.println("(25)判断文件路径是否相同,格式化并大小写敏感:"   
                + FilenameUtils.equalsNormalized(fileFullName, linuxFileName));  
        System.out.println("(26)判断文件路径是否相同,不格式化,大小写敏感根据系统规则:windows:敏感;linux:不敏感:"  
                + FilenameUtils.equalsOnSystem(fileFullName, linuxFileName));   
        List<String> extensions = new ArrayList<>();    
        extensions.add("txt");    
        extensions.add("java");   
        System.out.println("(27)判断文件扩展名是否包含在指定集合中:"  
                + FilenameUtils.isExtension(fileFullName, extensions));   
        System.out.println("(28)判断文件扩展名是否等于指定扩展名:"   
                + FilenameUtils.isExtension(fileFullName, "txt"));  
        System.out.println("(29)判断文件扩展名是否包含在指定字符串数组中:"   
                + FilenameUtils.isExtension(fileFullName, new String[]{"txt","java"}));  
        System.out.println("(30)判断文件扩展名是否和指定规则匹配,大小写敏感:"  
                + FilenameUtils.wildcardMatch(fileName, "*.???"));   
        System.out.println("(31)判断文件扩展名是否和指定规则匹配,大小写不敏感:"   
                + FilenameUtils.wildcardMatch(fileName, "*.???",IOCase.INSENSITIVE));  
        System.out.println("(32)判断文件扩展名是否和指定规则匹配,根据系统判断敏感型:windows:不敏感;linux:敏感:"   
                + FilenameUtils.wildcardMatchOnSystem(fileName, "*.???"));  
          
    }  
}  
  • 打印结果
(1)显示linux路径:\D:\aa\bb\cc\file.txt  
(2)合并目录和文件名为文件全路径:\D:\aa\bb\cc\file.txt  
(3)文件路径去除目录和后缀后的文件名:file  
(4)获取文件的后缀:txt  
(5)获取文件的完整目录:/D:/aa/bb/cc/  
(6)获取文件的目录不包含结束符:/D:/aa/bb/cc  
(7)获取文件名称,包含后缀:file.txt  
(8)去除前缀的路径:D:/aa/bb/cc/  
(9)去除前缀并结尾去除分隔符:D:/aa/bb/cc  
(10)获取前缀:/  
(11)获取前缀长度:1  
(12)获取最后一个.的位置:17  
(13)获取最后一个/的位置:12  
(14)获取当前系统格式化路径:\D:\aa\bb\cc\file.txt  
(16)获取当前系统无结尾分隔符的路径:\D:\aa\bb\cc  
(17)获取linux系统无结尾分隔符的路径:\D:\aa\bb\cc  
(18)移除文件的扩展名:/D:/aa/bb/cc/file  
(19)转换分隔符为当前系统分隔符:\D:\aa\bb\cc\file.txt  
(20)转换分隔符为linux系统分隔符:/D:/aa/bb/cc/file.txt  
(21)转换分隔符为windows系统分隔符:\D:\aa\bb\cc\file.txt  
(22)判断目录下是否包含指定文件或目录:false  
(23)判断文件路径是否相同:false  
(24)判断文件路径是否相同,格式化并大小写不敏感:true  
(25)判断文件路径是否相同,格式化并大小写敏感:true  
(26)判断文件路径是否相同,不格式化,大小写敏感根据系统规则:windows:敏感;linux:不敏感:false  
(27)判断文件扩展名是否包含在指定集合中:true  
(28)判断文件扩展名是否等于指定扩展名:true  
(29)判断文件扩展名是否包含在指定字符串数组中:true  
(30)判断文件扩展名是否和指定规则匹配,大小写敏感:true  
(31)判断文件扩展名是否和指定规则匹配,大小写不敏感:true  
(32)判断文件扩展名是否和指定规则匹配,根据系统判断敏感型:windows:不敏感;linux:敏感:true

Xinhua News Agency, New Delhi, September 20 - Indian researchers have recently invented an environmentally friendly method of plastic degradation. They only need to place the plastic in a 70 ° C solution containing glucose and metal ions and continuously stir for several days to degrade the plastic into molecule.

A team led by researchers at the Indian Institute of Technology in Madras found that the new method can be used to degrade plastic materials such as Teflon. Related research papers have been published in the Journal of the American Chemical Society, Sustainable Chemistry and Engineering.

Polytetrafluoroethylene is a high performance material with heat resistance, chemical inertness, insulation stability and low friction. The researchers first placed a Teflon-coated magnetic stirrer in a 70 ° C solution for 15 days with metal ions and 1000 ppm glucose (1 ppm in parts per million).

The researchers then found tiny fragments of bright red glow on the surface of the solution. As a result, these bright tiny particles contained molecular fragments of a polytetrafluoroethylene polymer.

The study also found that Teflon did not show this degradation in the absence of agitation, glucose or metal ions; at room temperature, the degradation rate decreased; as the glucose content in the solution increased, the degradation of polytetrafluoroethylene The effect will be enhanced.

The researchers explained that PTFE may be electrically degraded into molecules by triboelectric stirring. They cautioned that because many modern cookware are coated with Teflon, similar chemical reactions can also occur on cookware, resulting in microplastics in food. Similarly, this triboelectric degradation process can also occur in the ocean, where there are a large number of metal ions, and the waves provide continuous agitation, which may be one of the ways in which marine microplastics are produced.

9 月 17 日,JDK/Java 13 正式 GA

79853-8p1si34rkrk.png

此版本带来了以下几大新特性:

JEP 350,Dynamic CDS Archives:扩展应用程序类-数据共享,以允许在 Java 应用程序执行结束时动态归档类。归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。
JEP 351,ZGC: Uncommit Unused Memory:增强 ZGC 以将未使用的堆内存返回给操作系统。
JEP 353,Reimplement the Legacy Socket API:使用易于维护和调试的更简单、更现代的实现替换 java.net.Socket 和 java.net.ServerSocket API 使用的底层实现。

JEP 354: Switch Expressions (Preview):可在生产环境中使用的 switch 表达式,JDK 13 中将带来一个 beta 版本实现。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

JEP 355,Text Blocks (Preview):将文本块添加到 Java 语言。文本块是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

详情查看:http://openjdk.java.net/projects/jdk/13

文件安全性的重要性相比大家都明白,尤其是一些底层重要的平台文件,如操作系统、开发工具等。下载好后一定要进行校验。下面推荐几款免费的校验工具。

Quick Hash 开源、免费、免安装,解压双击直接运行

官方介绍:QuickHash GUI is an open-source data hashing tool for Linux, Windows, and Apple Mac OSX with graphical user interface (GUI). Originally designed for Linux, but is also available for Windows and Apple Mac OSX. MD5, SHA1, SHA256, SHA512, xxHash, SHA-3 (256 bit) and Blake2B (256 bit) hash algorithms are available.
也就是,开源、跨平台、支持多种加密方式运算及校验。
官方网站:https://quickhash-gui.org
界面如下:
44781-jb0z275f8x.png

比对运算方式多样化,支持文本、文件、多文件、、比较文件、比较目录等,具体可下载体验。

下载地址 https://www.lanzous.com/i688usf 密码:7799

hashcalc 安装包小,需安装,支持多种加密算法,功能针对单个文件

官方介绍:
A fast and easy-to-use calculator that allows to compute message digests, checksums and HMACs for files, as well as for text and hex strings. It offers a choice of 13 of the most popular hash and checksum algorithms for calculations.
官网:http://www.slavasoft.com/hashcalc/

65111-escsfj314y.png

web版 大文件不合适

https://xuanwo.io/hashcalc/
51207-5uuo6jz391m.png

继在中国 Google 开发者大会上发布 Flutter 1.9 之后,今天 Dart 2.5 SDK 稳定版也正式到来,其中包括两个意义重大的全新功能技术预览:

  • ML Complete,由机器学习 (ML) 驱动的代码补全功能
  • dart:ffi 外部函数接口,用来直接从 Dart 调用 C 语言代码

另外,Dart 2.5 还增强了对常量表达式的支持。

37176-gfnihh1e23m.png

这个版本是我们向着针对客户端优化的最佳开发语言愿景迈出的又一步,让开发者可以在任何平台创建高效运行的应用。ML Complete 是我们现有生产力工具组件 (热重载、可自定义静态分析和 Dart DevTools 等) 的强大补充,第二个预览功能 dart:ffi 则使您能够在运行 Dart 代码的许多操作系统上调用现有的原生 API,以及用 C 编写的现有跨平台原生代码库。

我们热切地想要创建最佳的客户端开发语言。令人振奋的是,新的 IEEE Spectrum 2019 最佳开发语言评级已于近期出炉,而 Dart 已经跻身其中并位列第 16 名。在 "热门" 条目下,Dart 则排名第 10,在只考虑移动端开发语言时则排名第 6 (位于 Java、C、C++、C# 和 Swift 之后)。

IEEE Spectrum 2019 最佳开发语言

ML Complete: 基于机器学习的代码补全

类型化编程语言的核心优势之一,就是在类型中附带的信息使得 IDE / 编辑器能够在键入代码时提供强大的代码补全功能,从而帮助开发者提高效率。通过代码补全,开发者只需要输入代码的开头部分即可从提供的选项中进行选择,从而避免拼写错误,也便于探索各种 API。

但随着 API 数量的增长,探索 API 也变得愈发困难,因为补全功能提供的列表太长,开发者无法按照字母顺序去逐一浏览。在过去的一年里,我们一直在努力让机器学习来解决这个问题。简单地讲,我们通过分析 GitHub 上大量开源的 Dart 代码来训练一个模型,用以分析特定上下文时不同代码成员的出现模式。这个基于 TensorFlow Lite 打造的模型在被训练成型后,可以在开发者编写代码时预测接下来需要用到的代码内容。这个新功能我们称之为 ML Complete。

ML Complete 今天推出预览版。它内置于 Dart 分析器中,因此可用于所有支持 Dart 的编辑器,包括 Android Studio、IntelliJ 和 VS Code。有关如何启用此预览功能,以及如何提供反馈和报告问题,请参阅我们的反馈 wiki 页。

免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。