52Heartz's Blog

分享科技与生活

查看帮助

在命令后边输入 /? 可以查看命令帮助。

例:

1
copy /?

关于区分大小写

批处理命令本身是不区分大小写的,但是变量可能要区分大小写。

copy con 命令

应该是代表 copy console 的意思。直接在命令行中编写并保存文件。

使用方法:

1
copy con [file_name]

例:

1
copy con test.txt

输入命令之后会另起一行,然后开始输入内容,需要换行时可以使用回车键换行。输入完成之后按 ctrl + Z 然后按回车完成编辑并保存。还有另外一种保存方法,输入完成之后直接按 ctrl + C

输入 copy con [file_name] 之后,如果当前目录下有同名文件,那么仍然会进入编辑状态,但是按一次回车之后命令行会询问是否覆盖文件,选择 No 的话就会退出编辑。选择 Yes 的话就会继续维持编辑状态,然后编辑完成之后保存退出。

其实执行 copy con [file_name] 命令并输入一行之后,文件会自动保存,但是如果刚刚输入命令还没有进行输入,可以按 ctrl + C 取消创建文件。

变量和 set 命令

为什么 tomcat 的启动脚本中使用两个双引号

为什么使用 if ""%1"" == """"

batch 中的判断都是基于字符串判断的,也就是说:

if a = aif ""1 == ""1 这种判断的结果都是 true。

但是判断表达式 == 的左右两边的字符串不能有空格,除非使用引号括起来。

假如有这么一个脚本 test.bat

1
if "%1" == "" (echo true) else (echo false)

那么有几种执行的可能:

1
2
3
4
5
6
> test.bat
true
> test.bat 1
false
> test.bat "1 2"
此时不应有 2""。

可以看到,当输入的参数需要包含空格的时候,需要使用引号引起来,但是这么一来,真正执行的时候就会变成 if ""1 2"" == "" (echo true) else (echo false),这样一来 == 运算符左边就被空格分开了。

所以,需要使用两个双引号应对这种情况,需要把脚本改为:

1
if """%1"" == """" (echo true) else (echo false)

关闭当前 CMD 窗口

1
exit

参考资料

  1. Windows 批处理 (cmd/bat) 常用命令小结
  2. Windows 命令 | Microsoft Docs
  3. cmd批处理常用符号详解 DOS/BAT_脚本之家
  4. windows批处理命令教程_DOS/BAT_脚本之家
  5. What is Copy Con? - Computer Hope
  6. Meaning con for DOS
  7. Escaping Double Quotes in Batch Script
  8. What is the proper way to test if a parameter is empty in a batch file?
  9. command line - BAT file: Open new cmd window and enter code in there - Stack Overflow
  10. Split long commands in multiple lines through Windows batch file - Stack Overflow
  11. timeout - How to sleep for five seconds in a batch file/cmd - Stack Overflow | windows - How to sleep in a batch file? - Server Fault

Java

使用 Java 实现的一个工具类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.security.MessageDigest;

public class JavaMD5Util {
public static String md5(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
} catch (Exception e) {
e.printStackTrace();
}

byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; ++i) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
} else {
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
}
return md5StrBuff.toString();
}

public static void main(String[] args) {
System.out.println(JavaMD5Util.md5("Hello"));
}
}

其他方法

  1. 使用 Apache commons 的 org.apache.commons.codec.digest.DigestUtils
  2. 使用 Spring提供的 org.springframework.util.DigestUtils
  3. 使用 Google Guava 的 com.google.common.io.Files.hash

参考资料

  1. Very slow to generate MD5 for large file using Java - Stack Overflow
  2. Fast MD5 Implementation in Java
  3. MessageDigest (Java Platform SE 8 )
  4. java MD5 - 简书
  5. MessageDigest简介 - xingle0917 - 博客园

浏览器有多少种刷新方式?

在前端开发的时候,有时候修改完代码,但是在浏览器中刷新却看不到效果,这种情况可能是因为浏览器使用了之前的缓存,这个时候需要让浏览器强制刷新,不使用缓存。

不同的浏览器刷新的方式也不尽相同,以下记录一下常用浏览器中的操作。

Chrome

Chrome-refresh-types

在 Chrome 中打开 DevTools 的情况下,右键单击地址栏旁边的刷新按钮,会出现一个列表,其中列出了 Chrome 支持的三种刷新方式。

快捷键操作对应于:

Chrome-refresh-types

参考资料

  1. Google Chrome: hard reload vs. normal reload - gHacks Tech News
  2. Chrome keyboard shortcuts - Google Chrome Help
  3. What requests do browsers’ “F5” and “Ctrl + F5” refreshes generate?
  4. F5和CTRL+F5的区别 - 紫云飞 - 博客园

如果你想知道 ORDER BY RAND() 有什么作用,请参考ORDER BY RAND() 是什么?这个章节。

如果你想知道 ORDER BY RAND() 的原理,请参考ORDER BY RAND() 的原理这个章节。

如果你想知道使用 ORDER BY RAND() 的注意事项,请参考使用 ORDER BY RAND() 的注意事项

如果你想知道其他数据库如何获取随机的数据,请参考其他数据库如何实现 ORDER BY RAND()

阅读全文 »
0%