IntelliJ IDEA快捷键及调试

文章目录

  • 一、IntelliJ IDEA 常用快捷键一览表
    • 1-IDEA的日常快捷键
      • 第1组:通用型
      • 第2组:提高编写速度(上)
      • 第3组:提高编写速度(下)
      • 第4组:类结构、查找和查看源码
      • 第5组:查找、替换与关闭
      • 第6组:调整格式
    • 2-Debug快捷键
  • 二、查看快捷键
    • 1-已知快捷键操作名,未知快捷键
    • 2-已知快捷键,不知道对应的操作名
    • 3-自定义快捷键
    • 4-使用其它平台快捷键
  • 三、IDEA断点调试(Debug)
    • 1-为什么需要Debug
    • 2-Debug的步骤
      • 1、添加断点
      • 2、启动调试
      • 3、单步调试工具介绍
    • 3-多种Debug情况介绍
      • 1、 行断点
      • 2、 方法断点
      • 3、 字段断点
      • 4、 条件断点
      • 5、 异常断点(暂略)
      • 6、线程调试(暂略)
      • 7、 强制结束
    • 4-自定义调试数据视图(暂略)
    • 5-常见问题
  • 四、IDEA常用插件
    • 推荐1:Alibaba Java Coding Guidelines
    • 推荐2:jclasslib bytecode viewer
    • 推荐3:Translation
    • 推荐4:GenerateAllSetter
    • 推荐5:Rainbow Brackets
    • 推荐6:CodeGlance Pro
    • 推荐7:Statistic
    • 推荐8:Presentation Assistant
    • 推荐9:Key Promoter X
    • 推荐10:JavaDoc
    • 推荐11: LeetCode Editor
    • 推荐12:GsonFormatPlus
    • 插件13:Material Theme UI

一、IntelliJ IDEA 常用快捷键一览表

1-IDEA的日常快捷键

第1组:通用型

说明快捷键
复制代码-copyctrl + c
粘贴-pastectrl + v
剪切-cutctrl + x
撤销-undoctrl + z
反撤销-redoctrl + shift + z
保存-save allctrl + s
全选-select allctrl + a

第2组:提高编写速度(上)

说明快捷键
智能提示-editalt + enter
提示代码模板-insert live templatectrl+j
使用xx块环绕-surround with …ctrl+alt+t
调出生成getter/setter/构造器等结构-generate …alt+insert
自动生成返回值变量-introduce variable …ctrl+alt+v
复制指定行的代码-duplicate line or selectionctrl+d
删除指定行的代码-delete linectrl+y
切换到下一行代码空位-start new lineshift + enter
切换到上一行代码空位-start new line before currentctrl +alt+ enter
向上移动代码-move statement upctrl+shift+↑
向下移动代码-move statement downctrl+shift+↓
向上移动一行-move line upalt+shift+↑
向下移动一行-move line downalt+shift+↓
方法的形参列表提醒-parameter infoctrl+p

第3组:提高编写速度(下)

说明快捷键
批量修改指定的变量名、方法名、类名等-renameshift+f6
抽取代码重构方法-extract method …ctrl+alt+m
重写父类的方法-override methods …ctrl+o
实现接口的方法-implements methods …ctrl+i
选中的结构的大小写的切换-toggle casectrl+shift+u
批量导包-optimize importsctrl+alt+o

第4组:类结构、查找和查看源码

说明快捷键
如何查看源码-go to class…ctrl + 选中指定的结构 或 ctrl+n
显示当前类结构,支持搜索指定的方法、属性等-file structurectrl+f12
退回到前一个编辑的页面-backctrl+alt+←
进入到下一个编辑的页面-forwardctrl+alt+→
打开的类文件之间切换-select previous/next tabalt+←/→
光标选中指定的类,查看继承树结构-Type Hierarchyctrl+h
查看方法文档-quick documentationctrl+q
类的UML关系图-show uml popupctrl+alt+u
定位某行-go to line/columnctrl+g
回溯变量或方法的来源-go to implementation(s)ctrl+alt+b
折叠方法实现-collapse allctrl+shift+ -
展开方法实现-expand allctrl+shift+ +

第5组:查找、替换与关闭

说明快捷键
查找指定的结构ctlr+f
快速查找:选中的Word快速定位到下一个-find nextctrl+l
查找与替换-replacectrl+r
直接定位到当前行的首位-move caret to line starthome
直接定位到当前行的末位 -move caret to line endend
查询当前元素在当前文件中的引用,然后按 F3 可以选择ctrl+f7
全项目搜索文本-find in path …ctrl+shift+f
关闭当前窗口-closectrl+f4

第6组:调整格式

说明快捷键
格式化代码-reformat codectrl+alt+l
使用单行注释-comment with line commentctrl + /
使用/取消多行注释-comment with block commentctrl + shift + /
选中数行,整体往后移动-tabtab
选中数行,整体往前移动-prev tabshift + tab

2-Debug快捷键

说明快捷键
单步调试(不进入函数内部)- step overF8
单步调试(进入函数内部)- step intoF7
强制单步调试(进入函数内部) - force step intoalt+shift+f7
选择要进入的函数 - smart step intoshift + F7
跳出函数 - step outshift + F8
运行到断点 - run to cursoralt + F9
继续执行,进入下一个断点或执行完程序 - resume programF9
停止 - stopCtrl+F2
查看断点 - view breakpointsCtrl+Shift+F8
关闭 - closeCtrl+F4

二、查看快捷键

1-已知快捷键操作名,未知快捷键

image.png

2-已知快捷键,不知道对应的操作名

image.png

3-自定义快捷键

image.png

4-使用其它平台快捷键

image.png
苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。

三、IDEA断点调试(Debug)

1-为什么需要Debug

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试工具(Debug)来查找错误了。

运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!====================如果出现如下的三种情况,都又必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。比如:多线程情况下,处理线程安全问题。

2-Debug的步骤

Debug(调试)程序步骤如下:

1、添加断点

2、启动调试

3、单步执行

4、观察变量和执行流程,找到并解决问题

1、添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

image.png

2、启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫image.png”)等等。

image.png

3、单步调试工具介绍

image.png

image.png

【解释】

image.png:Step Over(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内。

image.png:Step Into(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内。

image.png:Force Step Into(Alt +Shift  + F7):进入下一步,如果当前行断点是调用一个核心类库方法,则进入该方法体内。(强制进入)

image.png:Step Out(Shift  + F8):跳出当前方法体。

image.png:Run to Cursor(Alt + F9):直接跳到光标处继续调试。

image.png:Resume Program(F9):恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上。(跳到下一个断点)

image.png:Stop(Ctrl + F2):结束调试。

image.png:View Breakpoints(Ctrl + Shift  + F8):查看所有断点

image.png:Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底。

image.png重新运行

image.png:显示执行点,若在此行代码中,进入了其中一个函数查看,想要再返回刚才调试的这一行代码,可以点这个按钮。

说明:在Debug过程中,可以动态的下断点。

3-多种Debug情况介绍

1、 行断点

  • 断点打在代码所在的行上。执行到此行时,会停下来。

【案例1】

package com.atguigu.debug;/*** ClassName: Debug01* Package: com.atguigu.debug* Description: 演示1:行断点  &  测试debug各个常见操作按钮*/
public class Debug01 {public static void main(String[] args) {//1.int m = 10;int n = 20;System.out.println("m = " + m + ",n = " + n);swap(m, n);System.out.println("m = " + m + ",n = " + n);//2.// int[] arr = new int[] {1,2,3,4,5};// System.out.println(arr);//地址值// char[] arr1 = new char[] {'a','b','c'};// System.out.println(arr1);//abc}public static void swap(int m,int n){int temp = m;m = n;n = temp;}}

此时得到的不是想要的结果

image.png

此时就可以通过调试来发现问题。

打断点在哪里打呢?一般在你怀疑出错的代码的前面一行打上断点。

比如现在怀疑swap()方法有问题,就可以将断点打到上面一行,如下:

image.png

断点是红色的,用鼠标左键在左边点一下即可。

接下来调试一下,点击“Debug”:

image.png

然后代码就会执行到首次添加断点的位置,此时这一行代码还没有执行。如下:

image.png

然后执行下一步:

image.png

此时想进入swap()方法内部,点击第二个按钮(因为这里的swap方法是自己写的,若是系统函数比如print函数,就需要第三个按钮强制进入):

image.png

然后一步一步执行:

image.png

此时swap()执行完毕,可以跳出来,不用继续执行后续代码:

image.png


【案例2】

package com.atguigu.debug;/*** ClassName: Debug01* Package: com.atguigu.debug* Description: 演示1:行断点  &  测试debug各个常见操作按钮*/
public class Debug01 {public static void main(String[] args) {//1.// int m = 10;// int n = 20;// System.out.println("m = " + m + ",n = " + n);// swap(m, n);// System.out.println("m = " + m + ",n = " + n);//2.int[] arr = new int[] {1,2,3,4,5};System.out.println(arr);//地址值char[] arr1 = new char[] {'a','b','c'};System.out.println(arr1);//abc}public static void swap(int m,int n){int temp = m;m = n;n = temp;}}

打断点进行调试:

image.png

强制进入print函数:

image.png

再次强制进入valueOf:

image.png

可以看到,直接调用toString:

image.png

这里可以跳出方法:

image.png

对于第二个也可以使用同样的方法进入调试:

image.png

2、 方法断点

  • 断点设置在方法的签名上,默认当进入时,断点可以被唤醒。
  • 也可以设置在方法退出时,断点也被唤醒

image.png

  • 在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法

【案例1】

package yuyi03.Debug;/*** ClassName: Debug02* Package: com.atguigu.debug* Description: 演示2: 方法断点* @Version 1.0*/
public class Debug02 {public static void main(String[] args) {//1.Son instance = new Son();instance.test();//        //2.类的多态性
//        Father instance1 = new Son();
//        instance1.test();
//
//        //3.接口的多态性
//        Consumer con = new ConsumerImpl();
//        con.accept("atguigu");

        //4.
//        HashMap map = new HashMap();
//        map.put("Tom",12);
//        map.put("Jerry",11);
//        map.put("Tony",20);}
}class Father{public void test(){System.out.println("Father : test1");System.out.println("Father : test2");}
}class Son extends Father{@Overridepublic void test(){System.out.println("Son : test1");System.out.println("Son : test2");}
}interface Consumer{void accept(String str);
}class ConsumerImpl implements Consumer{@Overridepublic void accept(String str) {System.out.println("ConsumerImple:" + str);}
}

方法断点,比如在这个方法左边打上断点,可以看到是一个菱形:

image.png

右键点击菱形,可以看到它指明了在进入方法的时候,会停留一下。

image.png

然后开始调试:

image.png

可以看到它直接停留在方法这里了:

image.png

这是因为上面调用这个方法了:

image.png

一调用这个方法,它就停留在这里了。

给方法声明这里加断点,就是看这个方法什么时候调用,调用的时候就重点看方法的执行。


【案例2】

package yuyi03.Debug;/*** ClassName: Debug02* Package: com.atguigu.debug* Description: 演示2: 方法断点* @Version 1.0*/
public class Debug02 {public static void main(String[] args) {//1.// Son instance = new Son();// instance.test();//2.类的多态性Father instance1 = new Son();instance1.test();//3.接口的多态性Consumer con = new ConsumerImpl();con.accept("atguigu");//4.
//        HashMap map = new HashMap();
//        map.put("Tom",12);
//        map.put("Jerry",11);
//        map.put("Tony",20);}
}class Father{public void test(){System.out.println("Father : test1");System.out.println("Father : test2");}
}class Son extends Father{@Overridepublic void test(){System.out.println("Son : test1");System.out.println("Son : test2");}
}interface Consumer{void accept(String str);
}class ConsumerImpl implements Consumer{@Overridepublic void accept(String str) {System.out.println("ConsumerImple:" + str);}
}

在方法声明处打上断点:

image.png

编写的时候,会认为调用的是父类/接口中的方法,实际执行的时候是子类/实现类中的方法:

image.png

那么此时调试会做停留吗?

可以发现其实停留了,而且停留在了子类Son这里,如下:

image.png

刚才说了,实际运行的时候,执行的是子类重写父类的方法。

所以这里是真正运行了。

为什么在父类那里打的断点,跳到了子类这里?这是因为子类将父类的方法给覆盖了。

接下来看一下“下一个可能有断点的位置”:image.png

可以看到跳到了Consumer实现类的地方:

image.png

通过Debug可以看到真正执行的是哪一个类的方法

现在可以查看一下当前代码中都有哪些位置有断点:

image.png

3、 字段断点

  • 在类的属性声明上打断点,默认对属性的修改操作进行监控

image.png

【案例1】

package com.atguigu.debug;/*** ClassName: Debug03* Package: com.atguigu.debug* Description: 演示3:字段断点* @Version 1.0*/
public class Debug03 {public static void main(String[] args) {Person p1 = new Person(3);System.out.println(p1.toString());}
}class Person{private int id = 1;	//显示赋值private String name;private int age;public Person() {}{id = 2;	//代码块赋值}public Person(int id) {this.id = id;	//构造器赋值}public Person(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

在属性前面加断点是一个小眼睛,比如:

image.png

右键可以看到,在修改当前属性的时候,会停留一下(相当于就是看一下哪些位置修改了):

image.png

现在我们调试一下,凡是修改了属性的位置都会停下来。

可以看到这里显式赋值算修改了,因为默认值是0。

image.png

此时p1对象还没有创建,调用构造器之前先是显示赋值了,所以this里面的id是0,如下:

image.png

点击这里,找到下一个断点位置代码块

image.png

此时this里面的id变为了1,说明显示赋值已经执行了。

再下一个位置就是构造器了,如下:

image.png

一共就这三个位置修改了id,再次寻找断点位置就会结束。

image.png

🎲拓展

若此时让它在访问的时候也停留一下。

右键点击小眼睛,将“字段访问”勾上:

image.png

那么在toString的时候也会停留一下:

image.png

4、 条件断点

有的时候会想,在条件满足的情况下停留一下。

package com.atguigu.debug;/*** ClassName: Debug04* Package: com.atguigu.debug* Description: 演示4:条件断点* @Version 1.0*/
public class Debug04 {public static void main(String[] args) {int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};for (int i = 0; i < arr.length; i++) {int target = arr[i];System.out.println(target);}}
}

针对上述代码,比如现在想在满足arr[i] % 3 == 0的条件下,执行断点。(若被3除不尽,就直接往后执行即可)

可以在这里加一个断点,然后右键:(在Condition里面添加条件)

image.png

若arr[i]除3可以除尽就停留一下。

现在做一个调试:

image.png

可以看见控制台已经输出了1和2,在3的位置停留了:

image.png

接下来看一下下一个断点的位置,可以发现在6的时候停留了:

image.png

以后需要在某个条件的情况下分析就可以使用条件断点,不需要让程序一步一步走

5、 异常断点(暂略)

  • 对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
package com.atguigu.debug;import java.util.Date;/*** ClassName: Debug05* Package: com.atguigu.debug* Description: 演示5:异常断点* @Version 1.0*/
public class Debug05 {public static void main(String[] args) {int m = 10;int n = 0;int result = m / n;System.out.println(result);//        Person p1 = new Person(1001);
//        System.out.println(p1.getName().toUpperCase());}
}

通过下图的方式,对指定的异常进行监控:

image.png

6、线程调试(暂略)

package com.atguigu.debug;/*** ClassName: Debug06* Package: com.atguigu.debug* Description: 演示6:线程调试* @Version 1.0*/
public class Debug06 {public static void main(String[] args) {test("Thread1");test("Thread2");}public static void test(String threadName) {new Thread(() -> System.out.println(Thread.currentThread().getName()),threadName).start();}}

image.png

7、 强制结束

package com.atguigu.debug;/*** ClassName: Debug07* Package: com.atguigu.debug* Description: 演示7:强制结束* @Version 1.0*/
public class Debug07 {public static void main(String[] args) {System.out.println("获取请求的数据");System.out.println("调用写入数据库的方法");insert();System.out.println("程序结束");}private static void insert() {System.out.println("进入insert()方法");System.out.println("获取数据库连接");System.out.println("将数据写入数据表中");System.out.println("写出操作完成");System.out.println("断开连接");}
}

比如在insert()的位置加了一个断点,然后调试:

image.png

然后进入insert()方法:

image.png

假设走到第二行已经知道是什么问题了,不想再往后执行了。

image.png

若此时强制停止image.png,可以发现后面的代码也执行了:

image.png

那怎么办呢?

选中当前方法,右键“Force Return”:

image.png

然后可以看到,中间很多就没有做了:

image.png

4-自定义调试数据视图(暂略)

package com.atguigu.debug;import java.util.HashMap;/*** ClassName: Debug08* Package: com.atguigu.debug* Description: 演示8:用户自定义数据视图* @Version 1.0*/
public class Debug08 {public static void main(String[] args) {HashMap<Integer,String> map = new HashMap<>();map.put(1,"高铁");map.put(2,"网购");map.put(3,"支付宝");map.put(4,"共享单车");System.out.println(map);}
}

设置如下:

image.png

image.png

5-常见问题

问题:使用Step Into时,会出现无法进入源码的情况。如何解决?

方案1:使用 force step into 即可

方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping

把Do not step into the classess中的java.*javax.* 取消勾选即可。

image.png

小结:

经验:初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。

简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。

四、IDEA常用插件

推荐1:Alibaba Java Coding Guidelines

image.png

阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。

使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码质量。

推荐2:jclasslib bytecode viewer

image.png

可视化的字节码查看器。

使用:

  1. 在 IDEA 打开想研究的类。
  2. 编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
  3. 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
  4. 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。

image.png

英文设置:

在 Help -> Edit Custom VM Options …,加上

-Duser.language=en

推荐3:Translation

image.png

注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID和密钥

绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…

使用:鼠标选中文本,点击右键即可自动翻译成多国语言。

注:请注意保管好你的应用密钥,防止其泄露。

推荐4:GenerateAllSetter

image.png

实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果属性较多很容易遗漏或者重复。

image.png

可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自己再跟进实际需求设置属性值。

推荐5:Rainbow Brackets

image.png

给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读。

image.png

推荐6:CodeGlance Pro

image.png

在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实用。

image.png

推荐7:Statistic

image.png

代码统计工具。

image.png

image.png

推荐8:Presentation Assistant

image.png

显示快捷键操作的按键。

推荐9:Key Promoter X

image.png

快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使用快捷键的习惯,告别死记硬背。

推荐10:JavaDoc

image.png

alt+insert,执行操作:

image.png

推荐11: LeetCode Editor

image.png

在 IDEA 里刷力扣算法题

image.png

推荐12:GsonFormatPlus

image.png

根据 json 生成对象。

使用:使用alt + s 或 alt + insert调取。

image.png

举例:

{"name": "tom","age": "18","gender": "man","hometown": {"province": "河北省","city": "石家庄市","county": "正定县"}
}

插件13:Material Theme UI

image.png

对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。

IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。

image.png

安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05|提示工程(下):用思维链和思维树提升模型思考质量 ## 什么是 Chain of Thought

05&#xff5c;提示工程&#xff08;下&#xff09;&#xff1a;用思维链和思维树提升模型思考质量 什么是 Chain of Thought CoT 这个概念来源于学术界&#xff0c;是谷歌大脑的 Jason Wei 等人于 2022 年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large La…

使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

1、通用的业务编码规则的管理功能 在前面随笔我们介绍了一个通用的业务编码规则的管理功能&#xff0c;通过代码生成工具Database2Sharp一步步的生成相关的后端和Winform、WPF的界面&#xff0c;进行了整合&#xff0c;通过利用代码生成工具Database2sharp生成节省了常规功能的…

DreamTuner :通过单张图片实现主题驱动的图像生成

该项目由字节跳动开发&#xff0c;你只需要提供一张图片&#xff0c;DreamTuner就能帮你生成与这张图片在主题和风格上一致的新图像。比如你有一张可乐照片&#xff0c;它可以根据你的要求将可乐放在任何场景中或添加其他元素形成一张完美海报&#xff01; 这个工具特别适用于需…

PyAV 使用浅谈

背景&#xff1a; PyAV是一个用于音频和视频处理的Python库&#xff0c;它提供了一个简单而强大的接口&#xff0c;用于解码、编码、处理和分析各种音频和视频格式。PyAV基于FFmpeg多媒体框架&#xff0c;它本质上是FFmpeg 的Python绑定&#xff0c;因此可以利用FFmpeg的功能来…

【MySQL】数据库之事务

目录 一、什么是事务 二、事务的ACID是什么&#xff1f; 三、有哪些典型的不一致性问题&#xff1f; 第一种&#xff1a;脏读 第二种&#xff1a;不可重复读 第三种&#xff1a;幻读 第四种&#xff1a;丢失更新 四、隔离级别有哪些&#xff1f; &#xff08;1&#xf…

Docker介绍、常用命令与操作

Docker介绍、常用命令与操作 学习前言为什么要学习DockerDocker里的必要基础概念常用命令与操作1、基础操作a、查看docker相关信息b、启动或者关闭docker 2、容器操作a、启动一个镜像i、后台运行ii、前台运行 b、容器运行情况查看c、日志查看d、容器删除 3、镜像操作a、镜像拉取…

框架面试题

文章目录 1. spring中的bean是线程安全的吗2. 事务的实现--AOP3. 项目中用到的AOP4.spring中事务的失效场景5. Bean的生命周期6.spring中的循环引用问题7. springMVC的执行流程8. springboot自动装配原理9. 常见注解10 Mybatis11 Mybatis一二级缓存 1. spring中的bean是线程安全…

PoE交换机传输距离是多少?100米?250米?

你们好&#xff0c;我的网工朋友。 今天和你聊聊PoE交换机&#xff0c;之前有系统地给你讲解过一篇&#xff0c;可以先回顾一下哈&#xff1a;《啥样的交换机才叫高级交换机&#xff1f;这张图告诉你》 为什么都说PoE交换机好&#xff1f;它最显著的特点就是&#xff1a; 可…

SQL手工注入漏洞测试(MySQL数据库)

一、实验平台 https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe 二、实验目标 获取到网站的KEY&#xff0c;并提交完成靶场。 三、实验步骤 ①、启动靶机&#xff0c;进行访问查找可能存在注入的页面 ②、通过测试判断注入点的位置(id) (1)…

PyTorch官网demo解读——第一个神经网络(3)

上一篇&#xff1a;PyTorch官网demo解读——第一个神经网络&#xff08;2&#xff09;-CSDN博客 上一篇文章我们讲解了第一个神经网络的模型&#xff0c;这一篇我们来聊聊梯度下降。 大佬说梯度下降是深度学习的灵魂&#xff1b;梯度是损失函数&#xff08;代价函数&#xff…

云渲染UE4像素流送搭建(winows、ubuntu)

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行&#xff0c;用户可以通过浏览器操作虚幻引擎应用程序&#xff0c;客户端无需下载虚幻引擎&#xff0c;本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.广义正态分布算法4.实验参数设定…

【序列化和反序列化】

&#x1f341;什么是序列化和反序列化&#xff1f; &#x1f341;典型解析&#x1f341;拓展知识仓&#x1f341;如何进行序列化和反序列化&#x1f341;未实现Serializable&#xff0c;可以序列化吗? &#x1f341;典型解析 在Java中&#xff0c;我们可以通过多种方式来创建对…

我的NPI项目之Android电源系列(四) -- 关于剩余充满时间的问题的代码跟踪-max1720x_battery.c qpnp-smb2.c

从我的NPI项目之Android电源系列(三)&#xff0c; 能够看出&#xff0c;healthd是通过读取/sys/class/power_supply/battery/time_to_full_now而进行充满剩余时间的。 在/sys/class/power_supply/battery/...目录下有很多文件&#xff0c;具体内容如下&#xff1a; /sys/class…

详谈 springboot整合shiro

背景&#xff1a; 本章将进一步的落地实践学习&#xff0c;在springboot中如何去整合shrio&#xff0c;整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤&#xff1a; 1. 添加依赖&#xff1a;首先&#xff0c;在pom.xml文件中添加Spring Boot和Shiro的相关依赖…

java接口限流详解

目录 1.简介1.1.为什么需要限流?1.2.限流和熔断有什么区别&#xff1f;1.3.限流和削峰有什么区别&#xff1f;1.4 缓存&#xff0c;降级&#xff0c;限流简介 2.应用级限流2.1 控制并发数量2.2 控制访问速率2.2.1 令牌桶算法2.2.2 漏桶算法 3.分布式限流4.交流群 1.简介 接口…

漏洞复现-红帆OA iorepsavexml.aspx文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

浅谈师范双非普本工科专业的秋招历程

本人普通师范院校通信工程专业&#xff0c;于秋招历程之中四处碰壁&#xff0c;迫于家庭等各种因素考虑&#xff0c;最终选择移动的偏远县城岗位的OFFER&#xff01;本人秋招历程之中&#xff0c;屡屡碰壁&#xff0c;也算得上“收获满满”&#xff01;我简单给各位浅谈一下我的…

气动冷凝水回收泵机械浮球泵的特点工作原理介绍 不需要电源

​ 1&#xff1a;气动凝水回收泵机械式介绍 气动冷凝水回收泵是一种设计用于不使用电力来泵送冷凝液、油和其他高温液体等的设备。它无需维护&#xff0c;能将大量凝结水和其它液体从低位、低压或真空场所泵送到高处及高压区域。与传统电泵相比&#xff0c;气动冷凝水回收泵可…

放大电路的静态分析和动态分析例题

(一) &#xff08;二&#xff09; (三) &#xff08;四&#xff09; &#xff08;五&#xff09;