java基础面试题一

目录

1、Java语言概述

1.1一个”.java”源文件中是否可以包括多个类?有什么限制

1.2Java 的优势

1.3常用的几个命令行操作都有哪些?(至少4个)

1.4Java 中是否存在内存溢出、内存泄漏?如何解决?举例说明

1. 内存溢出(OutOfMemoryError)

2. 内存泄漏(Memory Leak)

1.5. 如何看待Java是一门半编译半解释型的语言

2、变量与运算符

2.1 高效的方式计算2 * 8的值

2.2 &和&&的区别?

2.3 Java中的基本类型有哪些?String 是最基本的数据类型吗?

2.4 Java开发中计算金额时使用什么数据类型?

2.5 char型变量中能不能存储一个中文汉字,为什么?(*通快递)

2.6 代码分析

2.7 int i=0; i=i++执行这两句化后变量 i 的值为

2.8 如何将两个变量的值互换

2.9 boolean 占几个字节

2.10 为什么Java中0.1 + 0.2结果不是0.3?

3.流程控制语句

3.1 break和continue的作用

3.2 if分支语句和switch分支语句的异同之处

3.3 switch语句中忘写break会发生什么

3.4 Java支持哪些类型循环

3.5 while和do while循环的区别

4.数组

4.1 数组有没有length()这个方法? String有没有length()这个方法?

4.2 有数组int[] arr,用Java代码将数组元素顺序颠倒

4.3 为什么数组要从0开始编号,而不是1

4.4 数组有什么排序的方式,手写一下

4.5 常见排序算法,说下快排过程,时间复杂度?

4.6 二分算法实现数组的查找

4.7 怎么求数组的最大子序列和

4.8 Arrays 类的排序方法是什么?如何实现排序的?


1、Java语言概述

1.1一个”.java”源文件中是否可以包括多个类?有什么限制

是!

一个源文件中可以声明多个类,但是最多只能有一个类使用public进行声明。 且要求声明为public的类的类名与源文件名相同。

1.2Java 的优势

  • 跨平台型

  • 安全性高

  • 简单性

  • 高性能

  • 面向对象性

  • 健壮性

1.3常用的几个命令行操作都有哪些?(至少4个)

  • 编译Java文件javac FileName.java
    将Java源文件编译为字节码文件(.class),例如javac HelloWorld.java

  • 运行Java程序java ClassName
    运行编译后的字节码文件。例如,编译生成的HelloWorld.class可以通过java HelloWorld来执行。

  • 查看Java版本java -version
    用于查看当前安装的Java版本,方便检查兼容性等问题。

  • 打包为JAR文件jar cf jarFileName.jar *.class
    将多个.class文件打包成一个JAR文件。例如,将所有的.class文件打包为MyApp.jar,可使用jar cf MyApp.jar *.class

1.4Java 中是否存在内存溢出、内存泄漏?如何解决?举例说明

1.4.1 内存溢出(OutOfMemoryError)

内存溢出通常发生在JVM无法分配足够的内存给应用程序时,表现为OutOfMemoryError。它主要分为以下几种类型:

  • 堆内存溢出:在堆区存放了大量数据,通常是因为对象过多或使用了大对象。

    • 示例:在代码中创建过多的对象或使用了大量的字符串常量,导致内存不足。
    • 解决方法:增大JVM的堆内存分配,例如通过-Xmx参数来设置堆内存大小;优化代码,避免不必要的大量对象创建。
  • 栈内存溢出:由于方法递归层级太深或无限递归,导致栈区内存耗尽。

    • 示例:函数递归层数过多或无限递归,导致栈空间耗尽。
    • 解决方法:优化递归逻辑,避免无限递归;增加JVM的栈大小,如-Xss参数。
  • 永久代溢出(元空间):在Java 8之前,类的元数据信息存放在永久代(PermGen),而Java 8之后存放在元空间(Metaspace)。

    • 示例:过多类的加载,或频繁生成和加载动态类。
    • 解决方法:通过-XX:MaxMetaspaceSize增加元空间大小,或减少动态类生成和加载。

1.4.2 内存泄漏(Memory Leak)

内存泄漏是指程序中存在的无用对象无法被GC(垃圾回收器)清除,导致内存逐渐被占满。

  • 示例:在集合(如ListMap)中不断添加对象但从未清除,即便这些对象已经不再需要。
    • 解决方法:避免在集合中无限添加对象,可以手动移除不再使用的对象;另外,使用弱引用(WeakReference)来保存不重要的数据对象,这样当对象不再需要时可以被GC回收。

实际代码示例

import java.util.ArrayList;
import java.util.List;public class MemoryLeakExample {public static void main(String[] args) {List<String> list = new ArrayList<>();// 模拟内存泄漏while (true) {list.add("Memory Leak Example"); // 不断向集合中添加数据而不清除}}
}

此示例代码会导致内存泄漏,因为程序一直在向list中添加字符串而不清理内存,最终会导致OutOfMemoryError

1.5. 如何看待Java是一门半编译半解释型的语言

2、变量与运算符

2.1 高效的方式计算2 * 8的值

使用 <<

2.2 &和&&的区别?

1. & - 按位与 和 逻辑与

  • 按位与:如果&用于两个整数或二进制数字之间,它会执行逐位比较。仅当两个位都为1时,结果为1
    • 示例5 & 35的二进制是010130011),结果为0001,即1。
  • 逻辑与:如果&用于两个布尔表达式之间,它作为逻辑运算符。它会在两边表达式都为true时返回true
    • 示例true & false 返回false

    注意:使用&进行逻辑运算时,不会短路。即便左侧表达式为false,右侧表达式也会被计算。

2. && - 逻辑与(带短路特性)

  • &&只能用于布尔表达式的逻辑运算,表示逻辑与操作,且具有短路特性

  • 短路特性:如果第一个表达式为false,则整个表达式必定为false,此时右侧表达式不会被计算

    • 示例(a != 0) && (b / a > 1),若a0,则(a != 0)false,右侧的除法操作不会执行,从而避免除零异常。
int a = 0;
int b = 10;// 使用 &&,具有短路特性
if (a != 0 && b / a > 1) {System.out.println("不会抛出异常");
}// 使用 &,没有短路特性
if (a != 0 & b / a > 1) {System.out.println("此处可能会抛出除零异常");
}

2.3 Java中的基本类型有哪些?String 是最基本的数据类型吗?

1. 整数类型

  • byte:占用1字节,取值范围为-128127
  • short:占用2字节,取值范围为-32,76832,767
  • int:占用4字节,取值范围为-2^312^31 - 1
  • long:占用8字节,取值范围为-2^632^63 - 1

2. 浮点数类型

  • float:占用4字节,单精度浮点数。
  • double:占用8字节,双精度浮点数。

3. 字符类型

  • char:占用2字节,存储单个字符(Unicode编码),取值范围为065,535

4. 布尔类型

  • boolean:占用1位,取值为truefalse

String 不是基本数据类型

String在Java中不是基本数据类型,而是一个引用数据类型(类)。尽管String的使用方式类似于基本数据类型,但它实际上是一个对象,可以调用方法,例如length()substring()等。String在Java中是不可变的,每次对String的修改都会创建一个新的对象。

2.4 Java开发中计算金额时使用什么数据类型?

不能使用float或double,因为精度不高。

使用BigDecimal类替换,可以实现任意精度的数据的运算。

2.5 char型变量中能不能存储一个中文汉字,为什么?(*通快递)

可以的。char c1 = '中';

char c2 = 'a'。

因为char使用的是unicode字符集,包含了世界范围的所有的字符。

2.6 代码分析

short s1=1; 
s1=s1+1;  //有什么错?  =右边是int类型。需要强转
short s1=1;
s1+=1; //有什么错?   没错

2.7 int i=0; i=i++执行这两句化后变量 i 的值为

0。  

2.8 如何将两个变量的值互换

String s1 = "abc";
String s2 = "123";String temp = s1;
s1 = s2;
s2 = temp;

2.9 boolean 占几个字节

编译时不谈占几个字节。但是JVM在给boolean类型分配内存空间时,boolean类型的变量占据一个槽位(slot,等于4个字节)。
细节:true:1  false:0>拓展:在内存中,byte\short\char\boolean\int\float : 占用1个slotdouble\long :占用2个slot

2.10 为什么Java中0.1 + 0.2结果不是0.3?

在代码中测试0.1 + 0.2,你会惊讶的发现,结果不是0.3,而是0.3000……4。这是为什么?

几乎所有现代的编程语言都会遇到上述问题,包括 JavaScript、Ruby、Python、Swift 和 Go 等。引发这个问题的原因是,它们都采用了IEEE 754标准

IEEE是指“电气与电子工程师协会”,其在1985年发布了一个IEEE 754计算标准,根据这个标准,小数的二进制表达能够有最大的精度上限提升。但无论如何,物理边界是突破不了的,它仍然不能实现“每一个十进制小数,都对应一个二进制小数”。正因如此,产生了0.1 + 0.2不等于0.3的问题。

具体的:

整数变为二进制,能够做到“每个十进制整数都有对应的二进制数”,比如数字3,二进制就是11;再比如,数字43就是二进制101011,这个毫无争议。

对于小数,并不能做到“每个小数都有对应的二进制数字”。举例来说,二进制小数0.0001表示十进制数0.0625 (至于它是如何计算的,不用深究);二进制小数0.0010表示十进制数0.125;二进制小数0.0011表示十进制数0.1875。看,对于四位的二进制小数,二进制小数虽然是连贯的,但是十进制小数却不是连贯的。比如,你无法用四位二进制小数的形式表示0.125 ~ 0.1875之间的十进制小数。

所以在编程中,遇见小数判断相等情况,比如开发银行、交易等系统,可以采用四舍五入或者“同乘同除”等方式进行验证,避免上述问题。

3.流程控制语句

3.1 break和continue的作用

  • break:终止整个循环。
  • continue:跳过当前循环的剩余部分,直接进行下一次循环。

3.2 if分支语句和switch分支语句的异同之处

  • if-else语句优势

    • if语句的条件是一个布尔类型值,if条件表达式为true则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广

    • switch语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表达式的结果是否等于某个常量值,使用场景较狭窄

  • switch语句优势

    • 当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用if和switch都可以,习惯上使用switch更多。因为效率稍高。当条件是区间范围的判断时,只能使用if语句。

    • 使用switch可以利用穿透性,同时执行多个分支,而if...else没有穿透性。

3.3 switch语句中忘写break会发生什么

case穿透

3.4 Java支持哪些类型循环

  • for;while;do-while

  • 增强for (或foreach)

3.5 while和do while循环的区别

  • do-while至少会执行一次。

4.数组

4.1 数组有没有length()这个方法? String有没有length()这个方法?

数组没有length(),是length属性。

String有length()

4.2 有数组int[] arr,用Java代码将数组元素顺序颠倒

public class ReverseArray {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};reverseArray(arr);// 输出颠倒后的数组for (int i : arr) {System.out.print(i + " ");}}public static void reverseArray(int[] arr) {int left = 0;int right = arr.length - 1;while (left < right) {// 交换 arr[left] 和 arr[right]int temp = arr[left];arr[left] = arr[right];arr[right] = temp;// 移动指针left++;right--;}}
}

4.3 为什么数组要从0开始编号,而不是1

数组的索引,表示了数组元素距离首地址的偏离量。因为第1个元素的地址与首地址相同,所以偏移量就是0。所以从0开始。  

4.4 数组有什么排序的方式,手写一下

冒泡。

快排。

4.5 常见排序算法,说下快排过程,时间复杂度?

快速排序的步骤

  1. 选取基准元素(Pivot):从待排序数组中选择一个基准元素。基准元素的选择可以是第一个元素、最后一个元素、随机元素或中间元素。

  2. 分区(Partition):将数组中的元素重新排序,使得基准元素左边的元素都小于它,右边的元素都大于它。此时,基准元素在其正确的排序位置上。

  3. 递归排序:递归地对基准元素左边和右边的子数组进行快速排序,直到子数组的长度为 1(已排序)。

快速排序代码示例 

public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high); // 获取基准元素的正确位置quickSort(arr, low, pivotIndex - 1);        // 对左子数组排序quickSort(arr, pivotIndex + 1, high);       // 对右子数组排序}}private static int partition(int[] arr, int low, int high) {int pivot = arr[high];  // 选择最后一个元素作为基准int i = low - 1;        // i 是比基准小的元素的最后位置for (int j = low; j < high; j++) {if (arr[j] < pivot) {       // 找到比基准小的元素i++;// 交换 arr[i] 和 arr[j]int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}// 将基准元素放到正确位置int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return i + 1; // 返回基准元素的索引}public static void main(String[] args) {int[] arr = {3, 6, 8, 10, 1, 2, 1};quickSort(arr, 0, arr.length - 1);for (int i : arr) {System.out.print(i + " ");}}
}

时间复杂度

  • 平均时间复杂度O(n log n),其中 n 是数组的长度。
  • 最坏时间复杂度O(n^2),最坏情况发生在每次分区时选择的基准总是数组的最大或最小值,这会导致分区极不平衡。
  • 最好时间复杂度O(n log n),当每次分区都能将数组平分时。

4.6 二分算法实现数组的查找

public class BinarySearch {public static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2; // 避免直接相加可能产生的溢出if (arr[mid] == target) {return mid; // 找到目标,返回索引} else if (arr[mid] < target) {left = mid + 1; // 目标在右半部分} else {right = mid - 1; // 目标在左半部分}}return -1; // 若未找到目标,返回 -1}public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 必须为已排序数组int target = 7;int result = binarySearch(arr, target);if (result != -1) {System.out.println("目标元素在索引位置: " + result);} else {System.out.println("目标元素未找到");}}
}

代码说明

  1. left 指针指向数组的起始位置,right 指针指向数组的末尾位置。
  2. 计算中间位置 mid
  3. 如果 arr[mid] 等于 target,返回 mid 索引。
  4. 如果 arr[mid] 小于 target,则将 left 移动到 mid + 1,表示只需在右半部分查找。
  5. 如果 arr[mid] 大于 target,则将 right 移动到 mid - 1,表示只需在左半部分查找。
  6. 如果 left 超过 right,说明目标元素不存在于数组中,返回 -1。

时间复杂度

  • 时间复杂度O(log n),每次查找范围减半。
  • 空间复杂度O(1),只需常量空间。

4.7 怎么求数组的最大子序列和

/** 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。* 求所有子数组的和的最大值。要求时间复杂度为O(n)。例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。*/
public class ArrDemo {public static void main(String[] args) {int[] arr = new int[]{1, -2, 3, 10, -4, 7, 2, -5};int i = getGreatestSum(arr);System.out.println(i);}public static int getGreatestSum(int[] arr){int greatestSum = 0;if(arr == null || arr.length == 0){return 0;}int temp = greatestSum;for(int i = 0;i < arr.length;i++){temp += arr[i];if(temp < 0){temp = 0;}if(temp > greatestSum){greatestSum = temp;}}if(greatestSum == 0){greatestSum = arr[0];for(int i = 1;i < arr.length;i++){if(greatestSum < arr[i]){greatestSum = arr[i];}}}return greatestSum;}
}

4.8 Arrays 类的排序方法是什么?如何实现排序的?

Arrays.sort() 的常见用法

  1. 基本数据类型排序

    • Arrays.sort(int[] a)
    • Arrays.sort(double[] a)
    • Arrays.sort(char[] a)

    对于基本数据类型数组,Arrays.sort() 使用了双轴快速排序算法(Dual-Pivot Quicksort)。它是一种对传统快速排序进行优化的算法,适用于大多数情况。该算法在 Java 7 中引入,能够有效地减少比较次数和内存访问,具有较好的性能。

  2. 对象数组排序

    • Arrays.sort(T[] a):用于 Comparable 对象数组的排序。
    • Arrays.sort(T[] a, Comparator<? super T> c):用于指定 Comparator 比较器的对象数组排序。

    对于对象数组,Arrays.sort() 使用了Timsort。Timsort 是一种混合排序算法,结合了归并排序和插入排序,适合处理部分已排序的数据。在 Java 8 中,Timsort 被广泛应用于对象数组的排序,因为它具有稳定性(相同元素的顺序不会改变),并且在大多数情况下效率较高。

实现原理

  • 双轴快速排序(Dual-Pivot Quicksort)

    1. 选择两个基准点,将数组划分为三个部分:小于第一个基准点、介于两个基准点之间、大于第二个基准点的部分。
    2. 递归地对这三个部分进行快速排序。
    3. 双轴快速排序在大多数情况下比单轴快速排序更高效,但仍然是不稳定排序。
  • Timsort

    1. 将数组分成若干小块(run)并分别排序。
    2. 在较小块的元素已排序的情况下,使用插入排序。
    3. 然后将小块归并排序,结合了归并排序的效率和插入排序的稳定性。
    4. Timsort 是一种稳定的排序算法,在处理已部分排序的数据时效率更高。

代码示例

import java.util.Arrays;
import java.util.Comparator;public class ArraysSortExample {public static void main(String[] args) {// 基本数据类型排序int[] intArray = {3, 1, 4, 1, 5, 9};Arrays.sort(intArray);System.out.println("排序后的int数组: " + Arrays.toString(intArray));// 对象数组排序(Comparable)String[] strArray = {"banana", "apple", "cherry"};Arrays.sort(strArray);System.out.println("排序后的String数组: " + Arrays.toString(strArray));// 对象数组排序(Comparator)Arrays.sort(strArray, Comparator.reverseOrder());System.out.println("按逆序排序的String数组: " + Arrays.toString(strArray));}
}

 

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

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

相关文章

RocketMQ | 源码分析 | Broker控制器的启动

在分布式消息中间件的领域中&#xff0c;RocketMQ 以其高性能、高可靠性和强大的功能占据着重要的地位。而 Broker 作为 RocketMQ 的核心组件之一&#xff0c;其控制器的启动过程涉及到众多关键环节和复杂的逻辑。理解这个过程对于深入掌握 RocketMQ 的运行机制以及在实际应用中…

从0开始深度学习(22)——从全连接层到卷积

多层感知机在处理图像这种高维数据时&#xff0c;因为模型需要大量的数据来训练这么多参数&#xff0c;会导致巨大的计算成本&#xff0c;还会增加过拟合的风险&#xff0c;所以人们选择使用卷积神经网络 1 不变性 在计算机视觉和深度学习领域&#xff0c;特指模型对输入数据中…

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本&#xff0c;与之前的版本相比&#xff0c;部分依赖包发生了变化&#xff0c;因此重新编译一版&#xff0c;也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号&#xff0c;可以选择只下载 2. 进…

系统性能优化——绑核

简要 绑核正如其名&#xff0c;将线程/进程绑定在一个或多个CPU核心。该技术可以使进程或线程在特定的处理器上运行&#xff0c;而不会被操作系统调度到其他处理器上。这里有两层含义。 如果线程被绑定在指定核心上&#xff0c;则只会在该核心上运行&#xff0c;即使其他核心…

2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也

这里给大家提供了4种镜像下载地址&#xff0c;包括CentOS官方镜像下载、阿里云开源镜像站下载、网易开源镜像下载搜狐开源镜像下载。 1.CentOS官网镜像下载 因为服务器在国外所以打开CentOS官方网站的时候可能会比较慢。大家可以选择后面几种国内镜像下载方式。 1.1进入CentO…

【面试经典150】day 8

#1024程序员节 | 征文# 作为一个未来的程序员&#xff0c;现在我要继续刷题了。 力扣时刻。 目录 1.接雨水 2.罗马数字转整数 3.最后一个单词的长度 4.最长公共前缀 5.反转字符串中的单词 1.接雨水 好好好好好好&#xff0c;一开始就接雨水。我记得接了n次了。。。 痛苦战…

矩阵概念 和 性质

目录 一、矩阵因式分解 二、矩阵在图形学的运用 一、矩阵因式分解 1、先将矩阵化为上三角阵&#xff0c;得到U 2、每个主元列以下元素 主元 得到下三角阵 二、矩阵在图形学的运用 二维移动&#xff1a; 子空间H&#xff1a; 零向量属于H 对H中任意向量u、v&#xff0c;uv…

spyglass关于cdc检测的一处bug

最近在使用22版spyglass的cdc检测功能&#xff0c;发现struct_check的cdc检测实际时存在一些bug的。 构造如下电路&#xff0c;当qualifier和destination信号汇聚时&#xff0c;如果des信号完全将qualifier gate住&#xff0c;sg仍然会报ac_sync。当然此问题可以通过后续funct…

共识算法Raft(day11)

引入 在分布式系统中&#xff0c;为了消除单点提高系统可用性&#xff0c;通常会创建副本来进行容错&#xff0c;但这会带来另一个问题就是&#xff0c;如何保证多个副本之间的数据一致性。 为了解决这个问题&#xff0c;计算机行内就提出了共识算法&#xff0c;它允许多个分…

27.9 调用go-ansible执行playbook拷贝json文件重载采集器

本节重点介绍 : go-ansible执行playbook编写分发重载的playbook编译执行 测试停掉一个节点测试停掉的节点再回来 go-ansible执行playbook 新增 goansiblerun/run.go package goansiblerunimport ("context""github.com/apenella/go-ansible/pkg/execute&qu…

【数学二】多元函数积分学-重积分-二重积分定义、性质、计算

考试要求 1、了解多元函数的概念&#xff0c;了解二元函数的几何意义. 2、了解二元函数的极限与连续的概念&#xff0c;了解有界闭区域上二元连续函数的性质. 3、了解多元函数偏导数与全微分的概念&#xff0c;会求多元复合函数一阶、二阶偏导数&#xff0c;会求全微分&#x…

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

分布式文件系统Minio实战

分布式文件存储系统Minio实战 1、分布式文件系统应用场景1.1 Minio介绍1.1.1 Minio优点 1.2 MinIO的基础概念1.3 纠删码EC&#xff08;Erasure Code&#xff09;1.4 存储形式1.5 存储方案 2、Minio环境搭建2.1 单机部署2.1.1 non-erasure code mode2.1.2 erasure code mode2.1.…

算法题总结(十九)——图论

图论 DFS框架 void dfs(参数) { if (终止条件) {存放结果;return; }for (选择&#xff1a;本节点所连接的其他节点) {处理节点;dfs(图&#xff0c;选择的节点); // 递归回溯&#xff0c;撤销处理结果 } }深搜三部曲 确认递归函数&#xff0c;参数确认终止条件处理目前搜索节…

【网络协议栈】Tcp协议(下)的可靠性和高效性(超时重传、快速重传、拥塞控制、流量控制)

绪论: 承接上文&#xff0c;上文写到Tcp协议的结构以及对tcp协议的性能优化的滑动窗口&#xff0c;本章我们将继续了解Tcp协议的可靠性和高效性的具体展示。后面我将继续完善网络协议栈的网络层协议敬请期待&#xff01; 话不多说安全带系好&#xff0c;发车啦&#xff08;建议…

【Qt】窗口——Qt窗口的概念、常用的窗口函数、菜单栏、工具栏、状态栏、浮动窗口、对话框

文章目录 Qt窗口Qt窗口的概念菜单栏工具栏状态栏浮动窗口对话框 Qt 窗口 Qt窗口的概念 QMainWindow 类概述&#xff1a; QMainWindow 是一个为用户提供主窗口程序的类&#xff0c;它继承自 QWidget 类&#xff0c;并且提供了一个预定义的布局。 菜单栏 菜单栏常用属性&#xf…

C语言初阶:十.结构体基础

♥感谢您阅读本篇文章&#xff0c;文章内容为个人对所学内容的整理总结&#xff0c;欢迎大佬在评论区指点一二。♥ ♥个人主页&#xff1a;折枝寄北-CSDN博客折枝寄北擅长C语言初阶,等方面的知识,折枝寄北关注python,c,java,qt,c语言领域.https://blog.csdn.net/2303_80170533?…

Android Kotlin中协程详解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家&#xff0c; &#x1f449;点击跳转到教程 前言 Kotlin协程介绍&#xff1a; Kotlin 协程是 Kotlin 语言中的一种用于处理异步编程的机制。它提供了一…

《Python网络安全项目实战》

《Python网络安全项目实战》 项目1 Python 环境安装任务1.1 Windows上安装Python任务1.2 Ubuntu环境下安装Python 项目2 Python基础练习任务2.1 使用数据类型任务2.2 使用组合数据类型任务2.3 使用控制结构任务2.4 使用函数任务2.5 使用模块 项目3 处理文件中的数据任务3.1 读文…

雷赛L6N伺服驱动器基本参数设置——EtherCAT 总线型

1、指令脉冲设置 PA0.08代表电机转一圈&#xff0c;所需要的指令脉冲数&#xff0c;该值驱动器默认值为0&#xff0c;该值更改后断电重启后生效。 2、编码器反馈脉冲设置 PA0.11&#xff0c;代表编码器输出每转脉冲数&#xff0c;实际反馈的脉冲数做了4倍频处理&#xff0c;设…