问题描述

在win10的文件管理器(Windows资源管理器)中经常需要回到上级目录,有的系统会在目录列表中提供..目录,让用户快速回到上级目录,但是遗憾的是Windows资源管理器中没有这种功能.

快捷键

快捷键 描述
backspace键(左删除键) 回到上级目录
alt+左箭头 回到上级目录
alt+右箭头 回到上级目录之后,返回,也就是取消回到上级目录.

鼠标

点击Windows资源管理器的地址栏上的上级目录可以回到上级目录,也可以点击上上级目录从而回到上上级目录,以此类推.

参考资料

http://ask.zol.com.cn/x/3650871.html

问题描述

  • JDK9之后Java DOC支持搜索功能
  • 在其他浏览器中点击搜索结果可以弹出新标签页.
  • 但是在谷歌浏览器中弹出的新标签页被拦截了

现在来介绍如何设置不拦截java doc中的弹窗

谷歌浏览器 设置允许弹窗的网站

在 设置中 进入 弹出式窗口和重定向

  • 打开设置,在左侧进入高级,然后进入隐私设置和安全性,进入网站设置.
  • 或者直接搜索:弹出式窗口和重定向,然后进入进入网站设置.

这里有一张图片

拖动右侧的滚动条,找到弹出式窗口和重定向
这里有一张图片

添加 允许弹窗的网站的 域名

然后添加允许即可,设置的时候指定网站的域名即可,如:docs.oracle.com

这里有一张图片

error: bad signature 0x00000000

问题描述

今天在写git commit的时候,电脑突然蓝屏了,重启后输入git status显示如下错误信息

1
2
3
4
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blogRoot (src)
$ git status
error: bad signature 0x00000000
fatal: index file corrupt

解决方案

先删除index

1
rm -f .git/index

然后再重新创建index

1
git reset

运行效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blogRoot (src)
$ rm -f .git/index

lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blogRoot (src)
$ git reset
Unstaged changes after reset:
M source/lover/index.md
M source/todo/index.md

lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blogRoot (src)
$ git status
On branch src
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: source/lover/index.md
modified: source/todo/index.md

no changes added to commit (use "git add" and/or "git commit -a")

参考资料

https://www.cnblogs.com/linga/p/10214955.html
https://www.jianshu.com/p/58f306f0b8c5

谷歌浏览器启动时自动打开搜狗导航怎么修复

问题描述

我最近不小心在脚本之家下载了它们所谓的高速下载器
这里有一张图片

运行这个高速下载器后,我发现我想要的软件没有,倒是安装了好多流氓软件,还篡改了我的浏览器主页.

修复被篡改的浏览器主页

这里有一张图片

打开谷歌浏览器时还是会显示搜狗导航怎么办

上一步只是恢复被篡改的主页,但是如果你重新打开浏览器,还是会会打开万恶的搜狗导航的.
这是因为谷歌浏览器的超链接被篡改了,而且你还删不掉里面的搜狗导航链接:

这里有一张图片

解决方案

删除这个超链接,然后重新创建一个超链接

问题描述

今天将一个Swing项目,迁移到Idea中,但是很奇怪,运行后,标签中和按钮中的中文都乱码了,之前在Eclipse中用的编码是gbk,idea中的我改成了UTF-8

解决方案 修改主类的编码为utf-8

虽然我文件的编码已经设置为utf-8了,但是不知道怎么回事,经过如下操作后正常了,我打开的时候这个主类原本是gbk编码了(虽然我文件的编码已经改为utf-8,但是这里依然显示为gbk),我将这里的编码也改成utf-8后就正常了.
这里有一张图片

获取方法的返回值类型

方法 描述
Type getGenericReturnType() 返回表示返回值类型的Type对象
Class<?> getReturnType() 返回表示返回值类型的Class对象

这两个方法的区别主要是在返回值类型上:
-Type是一个接口
-Class是一个Type接口的子类.
-Type接口只有一个方法
-Class类方法比较多

Type接口方法

方法 描述
default String getTypeName() Returns a string describing this type, including information about any type parameters.

这个方法会返回返回值类型的全限定名,如:
-java.lang.String
-void

Class类获取类名方法

方法 描述
String getName() Returns the name of the entity (class, interface, array class, primitive type, or void) represented by this Class object, as a String.

这个方法也会返回类的全限定名,和上面的一样.

获取方法的返回值类型名称

所以如果想获取一个方法的返回值类型的名称,使用如下两种方式都可以:

  • method.getReturnType().getName();
  • method.getGenericReturnType().getTypeName();

封装成方法

1
2
3
4
5
6
7
public static String getMethodReturnTypeName1(Method method) {
return method.getGenericReturnType().getTypeName();
}

public static String getMethodReturnTypeName2(Method method) {
return method.getReturnType().getName();
}

程序示例

1
2
3
4
5
6
7
8
9
10
11
12
13
package returntype;

public class Return {

public String returnStringMethod() {
System.out.println("调用返回值为String的方法");
return "返回值";
}

public void returnVoidMethod() {
System.out.println("调用void方法");
}
}

测试类:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package returntype;

import java.lang.reflect.Method;
import java.lang.reflect.Type;

public class TestMethodReturnType {
public static void main(String[] args) throws Exception {
// 加载类
Class<?> class1 = Class.forName("returntype.Return");
//testReturnType1(class1);
testReturnType2(class1);
}

private static void testReturnType2(Class<?> class1) {
Method[] methods = class1.getDeclaredMethods();
for (Method method : methods) {
System.out.print("方法名:" + method.getName());
System.out.print(" 返回值类型1:" + getMethodReturnTypeName1(method));
System.out.println(" 返回值类型2:" + getMethodReturnTypeName2(method));
}
}

private static void testReturnType1(Class<?> class1) {
// 获取所有的方法
Class returnType1;
Type returnType2;
Method[] methods = class1.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
returnType1 = methods[i].getReturnType();
returnType2 = methods[i].getGenericReturnType();
System.out.print("方法名称:" + methods[i].getName());
System.out.print(" 返回值类型1:" + returnType1.getName());
System.out.println(" 返回值类型2:" + returnType2.getTypeName());
}
}

public static String getMethodReturnTypeName1(Method method) {
return method.getGenericReturnType().getTypeName();
}

public static String getMethodReturnTypeName2(Method method) {
return method.getReturnType().getName();
}

}

运行结果:

1
2
方法名:returnVoidMethod 返回值类型1:void 返回值类型2:void
方法名:returnStringMethod 返回值类型1:java.lang.String 返回值类型2:java.lang.String

需要的工具

  • 翻墙
  • 谷歌搜索
  • github

直接在github上搜索

直接在github上搜索

使用谷歌搜索github上的书籍

1
site:github.com 书名.pdf

问题描述

今天看书的时候,书上讲一段代码改成另一段代码,但是由于注释也改了,代码又比较多,肉眼难以看出来到底修改了哪个地方.
想起来VScode有代码比较的功能,可以帮助我看出到底就该了哪里.
这两段代码如下:
代码段1:

1
2
3
4
5
6
7
8
9
//下面代码编译时有“ [unchecked]未经检査的转换”警告
List<String>[] lsa = new ArrayList[10];
// 将lsa向上转型为Object[]类型的变量
Object[] oa=lsa;
List<Integer> li = new ArrayList<>();
li.add(3);
oa[1] = li;
// 下面代码引起ClassCastException异常
String s = lsa[1].get(0);//①

代码段2:

1
2
3
4
5
6
7
8
9
10
11
// 下面代码实际上是不允许的
List<String>[] lsa= new ArrayList<String>[10];// 1号代码
// 将lsa向上转型为Object[]类型的变量
Object[] oa = lsa;
List<Integer> li = new ArrayList<>();
li.add(3);
// 将List<Integer>对象作为oa的第二个元素
// 下面代码也不会有任何警告,但将引发ClassCastException异常
oa[1] = li;
// 下面代码引起ClassCastException异常
String s = lsa[1].get(0); // 2号代码

使用VSCode代码比较步骤

首先,为了杜绝注释的干扰,先将所有的注释删除掉,然后用VSCode中打开一个文件夹,在该文件夹下,创建两个文件来着分别两段代码.
然后在VSCode中打开这两个文件,在左侧打开的编辑器中按下shift键选择这两个文件,然后鼠标右键选择将已选项进行比较即可:
这里有一张图片
这样就知道两个文件哪里不同了:
这里有一张图片

参考资料

https://www.cnblogs.com/dead-micky/p/8472647.html

问题描述

今天我查看之前的写的文章的时候我发现'批处理 for命令.md'这批文章中的大部分内容都丢失了,应该是我写的文件处理程序出bug造成的,不过幸好有版本控制,只要将该文件恢复到文件处理程序操作之前的状态即可.

查看某个文件的commit记录

格式:

1
git log --pretty=oneline 文件路径

例如:先cd到'批处理 for命令.md'这个文件所在的目录,然后输入如下命令,查看该文件的提交记录.

1
git log --pretty=oneline '批处理 for命令.md'
1
2
3
4
5
6
7
8
9
10
11
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令 (master)
$ git log --pretty=oneline '批处理 for命令.md'
3306a587de0ee6adcf93b06c02fcdb516b3518a8 (HEAD -> master, origin/master, origin/HEAD) 添加新的文章,添加新的批处理文件
8a373f61d04c84cae3baf38926fafb4edc7792d1 更新目录摘要
f9d10aa3896969a9b156079ff4036e08f37e48e0 添加目录摘要
ee428318f7e27468239b0df33696860fe869e1e0 删除自定义FM
65103097ba7830ba0b47b0123dd6e7abaa090299 删除原文链接
4a7e71d88ef2c2272baa3a48fc33bf4965a9b1a7 更新目录摘要
b8abfe524937e2d8f63c7fa607f6afb8812cb5d7 调整文章路径,添加新的文章

lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令 (master)

比较两个版本之间文件的不同

1
git diff commit_id1 commit_id2 -- 文件名

注意这两个commit_id的顺序不同显示不同.commit_id1应该为更久远的版本,commit_id2应该为更近的版本.
所以格式简化为:

1
git diff 旧版本commit_id 新版本commit_id -- 文件名

因为我不知道什么时候文件内容丢失的,所以从最久远的版本开始,一级一级的向上比较,看看究竟是哪个版本出现的问题.

先来比较4a7e71d88e版本(倒数第二久远版本),对b8abfe5249(最久远版本)做了哪些修改:

1
git diff b8abfe5249 4a7e71d88e -- '批处理 for命令.md'

运行效果:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令 (master)
$ git diff b8abfe5249 4a7e71d88e -- &#x27;批处理 for命令.md&#x27;
diff --git a/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令/批处理 for命令.md b/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令/批处理 for命令.md
index 11f5b2b..52811fc 100644
--- a/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令/批处理 for命令.md
+++ b/source/_posts/Windows/CMD 批处理/语法/构建程序相关命令/批处理 for命令.md
@@ -6,214 +6,16 @@ categories:
- 语法
- 构建程序相关命令
date: 2019-02-01 21:57:48
-updated: 2019-11-29 21:19:58
+updated: 2019-12-09 19:45:23
abbrlink: c4029a06
---
-&lt;div id=&#x27;my_toc&#x27;&gt;
-
-- [命令格式](/blog/c4029a06/#命令格式)
- - [无参数](/blog/c4029a06/#无参数)
- - [参数 /d](/blog/c4029a06/#参数-d)
- - [参数 /R](/blog/c4029a06/#参数-R)
- - [参数 /L](/blog/c4029a06/#参数-L)
- - [参数 /F](/blog/c4029a06/#参数-F)
-- [参考资料](/blog/c4029a06/#参考资料)
-
-&lt;/div&gt;
-&lt;!--more--&gt;
-&lt;script&gt;if (navigator.platform.search(&#x27;arm&#x27;)==-1){document.getElementById(&#x27;my_toc&#x27;).style.display = &#x27;none&#x27;;}&lt;/script&gt;
+&lt;div id=&#x27;my_toc&#x27;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;/blog/c4029a06/#参考资料&quot;&gt;参考资料&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;!--more--&gt;
+&lt;script&gt;if (navigator.platform.search(&#x27;arm&#x27;)==-1){document.getElementById(&#x27;my_toc&#x27;).style.display = &#x27;none&#x27;;}
+var e,p = document.getElementsByTagName(&#x27;p&#x27;);while (p.length&gt;0) {e = p[0];e.parentElement.removeChild(e);}
+&lt;/script&gt;

&lt;!--end--&gt;
-&#35;&#35; 命令格式 &#35;&#35;
-&#x60;&#x60;&#x60;cmd
-for [参数] %%变量名 in (相关文件或命令) do 执行的命令
-&#x60;&#x60;&#x60;
-对一个或一组&#x60;文件&#x60;,&#x60;字符串&#x60;或&#x60;命令结果&#x60;中的每一个对象执行特定命令,达到我们想要的结果。
-**注意**:
-- 在&#x60;批处理文件&#x60;中使用 &#x60;for&#x60; 命令时,指定变量请使用 &#x60;%%variable&#x60;,而不要用 &#x60;%variable&#x60;,而在cmd窗口中直接输入的for命令则使用&#x60;%variable&#x60;的形式。
-- 变量名称是区分大小写的,所以 &#x60;%i&#x60; 不同于 &#x60;%I&#x60;.
-
-for命令可以带参数或不带参数,带参数时支持以下参数:&#x60;/d&#x60;,&#x60;/l&#x60;,&#x60;/r&#x60;,&#x60;/f&#x60;.
-&#35;&#35;&#35; 无参数 &#35;&#35;&#35;
-......省略
-&#x60;&#x60;&#x60;
-D:\学习9\书籍\批处理&gt;for_f4.bat
-\\DESKTOP-8ISAT6B 的用户帐户
--------------------------------------------------------------------------------
+----------------------------------------------------------------------------
Administrator DefaultAccount Guest
lan WDAGUtilityAccount
命令成功完成。

可以看到就是倒数第二久远版本(4a7e71d88e)中,我的文章内容被删除掉了.所以我只要将该文件恢复到最久远版本(b8abfe5249)就可以恢复丢失的文章内容.

取出指定版本的文件

1
git checkout commitId 文件路径

现在取出最久远版本的文件’批处理 for命令.md’:

1
git checkout b8abfe5249 '批处理 for命令.md'

然后查看该文件内容:

1
cat '批处理 for命令.md'

如果需要修改,那就修改,确认无误后再:

1
2
git add .
git commit -m '恢复文件到xxxx版本'

添加到版本库中即可.

什么是Sources目录

Sources目录用来存放java文件.java项目中最常见的Sources目录就是src目录,当打包成jar时,Sources目录下的.java文件会被编译成.class文件.

什么是Resources目录

Resources目录用来存放程序需要使用的资源文件.当打包成jar时,会直接复制Resources目录下的所有文件到jar包中,也就是说Resources目录下的.java文件不会不会被编译成.class文件.
所以这个目录可以用来存放一些java模板文件,例如将各种排序算法的java文件放在其中,然后写个程序根据命令行参数,输出这里面的java模板文件。

相同点

都会被打包到jar包中.

不同点

  • Sources目录下的.java文件会被编译成.class文件.
  • Resources目录下的.java文件不会被编译.