java学习笔记(持续更新中...)

Java 中的基本数据类型主要包括以下7种:

  1. byte:字节型,占用 1 字节,范围-128 到 127。
  2. char:字符型,占用 2 字节,范围 0 到 65535。
  3. short:短整型,占用 2 字节,范围-32768 到 32767。
  4. int:整型,占用 4 字节,范围-2147483648 到 2147483647。
  5. long:长整型,占用 8 字节,范围-9223372036854775808 到 9223372036854775807。
  6. float:单精度浮点型,占用 4 字节,有效位可以达到 6-7 位。精确到小数点后 6~7 位。
  7. double:双精度浮点型,占用 8 字节,有效位可以达到 15 位。精确到小数点后 15~16 位。

这些类型在内存中的占用大小是固定的,但是它们可以存储的值的大小或者精度是不同的。例如,byte、short、int、long 类型可以存储整数,但是它们存储的最大值和最小值是不同的;float 和 double 可以存储浮点数,但是它们的精度(小数点后几位)是不同的。

按照精度从大到小排列Java中这些基本数据类型,主要针对的是这些类型所能表示的数值范围或精确度,我们按照数值范围和精确度来排序:

  1. double:双精度浮点型,精度最高,可以表示的数非常大或非常小,精确到小数点后15~16位。
  2. float:单精度浮点型,精度次之,可以表示的数范围较大,精确到小数点后6~7位。
  3. long:长整型,可以表示的整数范围很大,从-9223372036854775808到9223372036854775807。
  4. int:整型,可以表示的整数范围较大,从-2147483648到2147483647。
  5. short:短整型,表示的整数范围较小,从-32768到32767。
  6. byte:字节型,表示的整数范围最小,从-128到127。
  7. char:字符型,虽然它是用来表示Unicode字符的,不过由于它在底层是以一个无符号的16位整数存储,理论上可以视作从0到65535的范围,但是它主要用于表示字符而不是数值,所以在这个列表中的位置比较特殊。如果只从数值的角度考虑,则可以考虑它大致位于shortint之间,但实际用途有所不同。

这里重点是基于能表示的数值范围和精确度进行排序。需要注意的是,精确度主要是指浮点数(float和double)的精确度,而对于整数类型(byte, short, int, long)则主要考虑的是它们能表示的数值范围。而char主要用于表示字符,但在某些语境下也可能被用作数值处理。

Java 中的常用算术运算符包括以下几种:

  1. 加号 +:用于两个数值的加法运算,或者用于字符串的连接操作。

  2. 减号 -:用于两个数值的减法运算。

  3. 乘号 *:用于两个数值的乘法运算。

  4. 除号 /:用于两个数值的除法运算。如果两个操作数都是整数,则执行整数除法,结果为商的整数部分;如果至少有一个操作数为浮点数,则执行浮点除法。

  5. 取模 %:俗称取余,用于两个数值的取模运算,结果为两数相除后的余数。

  6. 自增 ++:将变量的值增加 1,分为前缀形式(例如++i,先进行自增运算,再返回运算后的值)与后缀形式(例如i++,先返回当前值,然后再进行自增运算)。

  7. 自减 --:将变量的值减少 1,也分为前缀形式(例如--i)与后缀形式(例如i--)。

请注意,使用这些运算符时可能需要考虑运算的类型转换和溢出等问题。例如,当两个整数相除时,如果你希望得到浮点数结果,至少需要有一个操作数进行显式或隐式的类型转换为浮点数。

++ii++ ,以及 --ii-- 都是 Java 中的自增和自减运算符,主要的区别在于它们在表达式中的值和它们对原变量的修改时间不同。

  1. ++i(前缀自增):首先,将 i 的值加 1,然后返回加 1 后的 i。这就意味着,如果我们在一个表达式中使用 ++i,那么在这个表达式中,i 的值都是自增后的值。

  2. i++(后缀自增):首先,返回当前的 i,然后再将 i 的值加 1。这就意味着,如果我们在一个表达式中使用 i++,那么在这个表达式中,i 的值都是自增前的值。

同样,

  1. –i(前缀自减):首先,将 i 的值减 1,然后返回减 1 后的 i。这就意味着,如果我们在一个表达式中使用 --i,那么在这个表达式中,i 的值都是自减后的值。

  2. i–(后缀自减):首先,返回当前的 i,然后再将 i 的值减 1。这就意味着,如果我们在一个表达式中使用 i--,那么在这个表达式中,i 的值都是自减前的值。

例如:

int i = 10;
System.out.println(++i); // 输出11, i的值现在是11
i = 10; // 重新赋值
System.out.println(i++); // 输出10,但是 i 的值现在是11

同样,对于自减运算符:

int i = 10;
System.out.println(--i); // 输出9,i的值现在是9
i = 10;  // 重新赋值
System.out.println(i--); // 输出10,但是i的值现在是9

所以,选择使用哪种形式,前缀还是后缀,取决于你是希望在表达式中使用的是变量改变前的值,还是改变后的值。

取模运算,也叫做取余运算,是一种在数学和计算机科学中常见的运算。优先定义在整数集上,是一种求余数的操作。在Java中,取模运算符为 %

取模运算的基本公式为:

a % b = a − F l o o r ( a / b ) ∗ b a \% b = a - Floor(a / b) * b a%b=aFloor(a/b)b

其中,Floor 表示向下取整,a 表示被除数,b 表示除数。

例如:

  • 13 % 5 = 13 - Floor(13 / 5) * 5 = 13 - 2 * 5 = 3。因此,13 除以 5 的余数是3。

在特定的数学和计算机科学应用中,取模运算有很多用途。例如,在哈希函数或者散列函数中,取模运算常用于将大的数值范围映射到小的数值范围(例:数组的索引)。同样,它也在循环队列和循环数组中发挥着重要的作用,可以简化在数组末尾和开头之间的过渡。

举例:

[root@master ~/java/javacode]# vim  ArithmeticOperator.java
public class ArithmeticOperator{
        public static void main(String[] args){
                System.out.println(10 / 4);
                double a =  10;
                System.out.println(a / 4);
                //默认按照最大精度进行计算
                System.out.println(10.0 / 4);

                //算术
                //单独情况下i++ 与++i是一样的
                int i = 10;
                //i++; // ==> 11
                //++i; // ==> 11
                System.out.println(i);

                //取模:a % b ==> a - a / b * b
                System.out.println(10 % 3); // 1
                System.out.println(10 % -3); // 1
                System.out.println(-10 % 3); // -1


                /*
                作为表达式使用:
                前++:先自增,后赋值
                后++:先赋值,后自增
                */
                int j = 10;
                //int f = j++; //f=j;j=j+1   f=10    j=11
                int f = ++j; //j=j+1;f=j  f=11    j=11
                System.out.println("f="+f+"\tj="+j);
        }
}

在这里插入图片描述
在Java中,逻辑运算符用于连接两个或多个布尔表达式,其结果也是布尔值(truefalse)。以下是Java中的几种基本逻辑运算符及其规则:

  1. && - 逻辑与(AND)运算符:

    • 如果两个操作数都为 true,结果为 true
    • 如果任何一个操作数为 false,结果为 false
    • && 是短路运算符,如果第一个操作数为 false,它将不会评估第二个操作数。
  2. || - 逻辑或(OR)运算符:

    • 如果两个操作数中任意一个为 true,结果为 true
    • 如果两个操作数都为 false,结果为 false
    • || 也是短路运算符,如果第一个操作数为 true,它将不会评估第二个操作数。
  3. ! - 逻辑非(NOT)运算符:

    • 如果操作数为 true,结果为 false
    • 如果操作数为 false,结果为 true

以下是一些逻辑运算符的使用示例:

boolean a = true;
boolean b = false;

// 逻辑与
boolean resultAnd = a && b; // 结果为 false,因为 b 是 false

// 逻辑或
boolean resultOr = a || b; // 结果为 true,因为 a 是 true

// 逻辑非
boolean resultNot = !a; // 结果为 false,因为 a 的取反是 false

使用逻辑运算符时需要特别注意操作符的短路行为,这在编写条件语句时非常有用,可以避免不必要的计算,例如,避免在条件判断中调用一个可能导致异常的方法:

if (obj != null && obj.someMethod()) {
    // 只有当 obj 不为 null 时才会调用 someMethod 方法.
}

在上面的代码中,如果 objnull,由于 && 的短路特性,将不会调用 someMethod 方法。这样可以有效避免 NullPointerException 的发生。

好的,我将通过例子来详细说明逻辑与(&)与短路与(&&),以及逻辑或(|)与短路或(||)之间的区别。

逻辑与&和短路与&&的比较

首先定义两个方法,这些方法会在被调用时打印一条信息,并返回布尔值:

public class LogicalDemo {
    public static void main(String[] args) {
        boolean result;
        boolean a, b;
        
        a = false;
        b = true;

        System.out.println("逻辑与 & 的操作:");
        result = testA(a) & testB(b);
        // 在这里,无论testA()的结果如何,testB()都将被执行

        System.out.println("\n短路与 && 的操作:");
        result = testA(a) && testB(b);
        // 在这里,如果testA()返回false,testB()不会被执行
    }

    public static boolean testA(boolean a) {
        System.out.println("testA 方法被调用,返回:" + a);
        return a;
    }

    public static boolean testB(boolean b) {
        System.out.println("testB 方法被调用,返回:" + b);
        return b;
    }
}

输出:

逻辑与 & 的操作:
testA 方法被调用,返回:false
testB 方法被调用,返回:true

短路与 && 的操作:
testA 方法被调用,返回:false

逻辑或|和短路或|| 的比较

类似地,我们可以使用同样的方法来展示逻辑或和短路或的区别:

        a = true;
        b = false;

        System.out.println("逻辑或 | 的操作:");
        result = testA(a) | testB(b);
        // 在这里,无论testA()的结果如何,testB()都将被执行

        System.out.println("\n短路或 || 的操作:");
        result = testA(a) || testB(b);
        // 在这里,如果testA()返回true,testB()不会被执行

输出:

逻辑或 | 的操作:
testA 方法被调用,返回:true
testB 方法被调用,返回:false

短路或 || 的操作:
testA 方法被调用,返回:true

在上面的示例中,可以看到:

  • 当使用逻辑与&时,不论testA()的结果如何,testB()都会被执行。
  • 当使用短路与&&时,由于testA()返回falsetestB()不会被执行,因为&&操作符已经确定整个表达式的结果必定是false
  • 当使用逻辑或|时,不论testA()的结果如何,testB()都会被执行。
  • 当使用短路或||时,由于testA()返回truetestB()不会被执行,因为||操作符已经确定整个表达式的结果必定是true

从这些例子中可以明显看出短路行为对程序执行流程的影响。使用短路逻辑与&&和短路逻辑或||通常可以提高效率,特别是当第二个操作数的计算代价高昂或者具有潜在副作用时(比如修改状态或进行I/O操作)。

例子1:

public class RelationalOperator{
        public static void main(String[] args){
//              int a = 1;
//              int b = 3;
//              boolean f = b < 3;
//              System.out.println(f);

                //demo01:
                boolean a = false;
                boolean b = true;
                boolean result , result2;
                //logic
                result = test1(a) && test2(b) ;
                result2 = test1(a) & test2(b) ;

                int a1 = 1;
                int b1 = 10;
                //短路与&&
                if ( a1 < 1 && b1++ < 90){
                System.out.println("ok");
                }
                System.out.println("a1="+a1+"\tb1="+b1);
                //逻辑与&
                if ( a1 < 1 & b1++ < 90){
                System.out.println("ok");
                }
                System.out.println("a1="+a1+"\tb1="+b1);
        }
                //定义一个方法
        public static boolean test1(boolean a){
                System.out.println("返回test1==>:"+a);
                return a;
        }
        public static boolean test2(boolean b){
                System.out.println("返回test2==>:"+b);
                return b;
        }
}

运行结果:

[root@master ~/java/javacode]# javac RelationalOperator.java  &&java RelationalOperator
返回test1==>:false
返回test1==>:false
返回test2==>:true
a1=1    b1=10
a1=1    b1=11

例子2:

[root@master ~/java/javacode]# vim RelationalOperator03.java
public class RelationalOperator03{
        public static void main(String[] args){
        int a = 100;
        int b = 10;
        //逻辑非(NOT)
        System.out.println(!(a<10)); // T
        System.out.println(!(a>10)); // F
		//异或
        System.out.println((a < 10)^(b <=10));
        }
}

结果:

[root@master ~/java/javacode]# javac  RelationalOperator03.java && java RelationalOperator03
true
false
true

例子3:

public class RelationalOperator03{
        public static void main(String[] args){
        int a = 100;
        int b = 10;
        if (++a==101 && ++b ==11){
                a =120;

        }
        System.out.println("a="+a+"\tb="+b);
        }
}

结果:

a=120   b=11

例子4:

public class RelationalOperator03{
        public static void main(String[] args){
        int a = 100;
        int b = 10;
        if (a++==101 & ++b ==11){
                a =120;

        }
        System.out.println("a="+a+"\tb="+b);
        }
}

结果:

a=101   b=11

例子5:

public class RelationalOperator03{
        public static void main(String[] args){
        int a = 100;
        int b = 10;
        if (a++==100 || ++b ==10){
                a =120;

        }
        System.out.println("a="+a+"\tb="+b);
        }
}

结果:

a=120   b=10

例子6:

public class RelationalOperator03{
        public static void main(String[] args){
        int a = 100;
        int b = 10;
        if (a++==100 | ++b ==10){
                a =120;

        }
        System.out.println("a="+a+"\tb="+b);
        }
}

结果:

a=120   b=11

例子7:

public class RelationalOperator03{
        public static void main(String[] args){
        boolean x =true;
        boolean y = false;
        short z = 46;
        if ((y = true) && (z++==46)) z++;
        if ((x = false) || (++z==49)) z++;
        System.out.println("x="+x+"\ty="+y+"\tz="+z);
        }
}

结果:

x=false y=true  z=50

三元运算符

Java 中的三元运算符(ternary operator)是唯一的一个条件运算符,它包含三个操作数,可以用于代替简单的 if-else 语句,以实现代码简化。它的一般形式如下:

variable = Expression1 ? Expression2 : Expression3;

这里的工作原理解释如下:

  • Expression1:这是一个布尔表达式,决定了接下来的计算路径,如果表达式为 true,将执行 Expression2,否则执行 Expression3
  • Expression2:这是 Expression1true 时被赋值给 variable 的值。
  • Expression3:这是 Expression1false 时被赋值给 variable 的值。

使用三元运算符时需要特别注意以下几点:

  1. 表达式的类型必须是兼容的:Expression2Expression3 应该返回兼容类型的值,或可自动转换为变量类型。否则,可能导致编译错误。

  2. 三元运算符可以嵌套:但为了阅读和维护的便利性,应尽量避免复杂的嵌套,因为它会使代码难以阅读。

  3. 三元运算符是右结合的:意味着嵌套的三元运算符会从右向左进行求值。

  4. 三元运算符无法替代所有的 if-else 逻辑:仅在条件下根据不同的真值选择不同的值时使用,不应用于复杂的程序逻辑或执行多条语句。

下面是一个简单的例子1:

int a = 5;
int b = 10;
int max = (a > b) ? a : b; // 如果a大于b,max值为a,否则为b

例子2:

public class TernaryOperator{
        public static void main(String[] args){
                int a = 10 , b = 99;
                int result = a > b ? a++ : b--;//b--:先进行赋值:result=b ==> 99;在进行b--操作:b=b-1 ==> 98;
                System.out.println("result="+result+"\ta="+a+"\tb="+b);
        }
}

运行结果:

result=99       a=10    b=98

例子3:

public class TernaryOperator{
        public static void main(String[] args){
                int a = 10 , b = 99;
                int result = a > b ? a++ : --b; //--b:先计算b=b-1 ==>98;在进行赋值:result=b ==> 98;
                System.out.println("result="+result+"\ta="+a+"\tb="+b);
        }
}

运行结果:

result=98       a=10    b=98

例子4:

public class TernaryOperator{
        public static void main(String[] args){
                int a = 10 , b = 99;
                int result = a < b ? a++ : --b;
                System.out.println("result="+result+"\ta="+a+"\tb="+b);
        }
}

运行结果:

result=10       a=11    b=99

例子5:

public class TernaryOperator{
        public static void main(String[] args){
                int a = 10 , b = 99;
                int result = a < b ? ++a : b--;
                System.out.println("result="+result+"\ta="+a+"\tb="+b);
        }
}

运行结果:

result=11       a=11    b=99

在使用时,不仅要考量代码的简洁性,还要保持代码的可读性和后期维护的方便性。

特性:三元运算符数据类型强转
例子:

public class TernaryOperator02{
        public static void main(String[] args){
                int a = 10 , b = 99;
                double result = a < b ? 1.1 : b; //double result = a;
                System.out.println("result="+result+"\ta="+a+"\tb="+b);
        }
}

运行结果:

result=1.1      a=10    b=99
三元运算符作业

比较3个数,并返回最大值:
解题思路:

  • n1 与 n2 做比较得出其中较大的值;
  • n3 与 n2/n1中的较大值比较,返回较大值
public class TernaryOperatorExercise{
        public static void main(String[] args){
                int a = 10 , b = 123 , c = 321;
                //1. n1 与 n2 做比较得出其中较大的值;
                int result = a > b ? a : b ;
                //2. n3 与 n2/n1中的较大值比较,返回较大值
                int result2 = c > result ? c :result;
                System.out.println("result="+result+"\nresult2="+result2);
        }
}

运行结果:

result=123
result2=321

用一条语句解决:

public class TernaryOperatorExercise{
        public static void main(String[] args){
                int a = 10 , b = 123 , c = 321;
                int result2 = c > (a > b ? a : b) ?
                				c :(a > b ? a : b);
                System.out.println("result2="+result2);
        }
}

运算优先符

在程序设计中,运算符优先级决定了表达式中各个运算符的运算顺序。了解和掌握每种运算符的优先级是非常重要的,因为它决定了如何对表达式进行求值。下面是一些常见编程语言(如C/C++、Java、Python等)中运算符的优先级列表,从**高到低排序**(使用“R-->L”表示从右向左运算,使用“L->R”表示从左向右运算)

下面是更新后的表格:

优先级类别运算符描述运算方向
1括号()表达式内的括号优先计算L–>R
2成员访问.->对象和指针成员访问L–>R
3单目运算符!~+(正)、-(负)、++(前置)、--(前置)、*(解引用)、&(取地址)单个操作数的运算符R–>L
4类型转换类型转换操作(int), (double)L–>R
5乘除模*/%乘法、除法、取模运算L–>R
6加减法+-加法、减法L–>R
7位移运算<<>>左右位移L–>R
8关系比较<><=>=大小比较L–>R
9相等比较==!=等于、不等于比较L–>R
10位运算&^、``按位与、异或、或
11逻辑运算&&、``
12条件运算符?:三元条件运算R->L
13赋值运算符=+=-=*=/=%=<<=>>=&=^=、`=`赋值及其复合形式
14逗号,表达式分隔符L->R

每个运算符的运算方向决定了如果有多个同级运算符出现在一个表达式中,它们是如何顺序执行的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

针对多智能体协作框架的元编程——METAGPT

M ETA GPT: M ETA P ROGRAMMING FOR M ULTI -A GENT COLLABORATIVE F RAMEWORK 1.概述 现有的多智能体系统主要面临以下问题&#xff1a; 复杂性处理不足&#xff1a;传统的多智能体系统主要关注简单任务&#xff0c;对于复杂任务的处理能力有限&#xff0c;缺乏深入探索和…

Dvws靶场

文章目录 一、XXE外部实体注入二、No-SQL注入三、Insecure Direct Object Reference四、Mass Assignment五、Information Disclosure六、Command Injection七、SQL注入 一、XXE外部实体注入 访问http://192.168.92.6/dvwsuserservice?wsdl&#xff0c;发现一个SOAP服务。在SO…

vite项目启动后用局域网不能访问

今天来解决一个问题&#xff1a;基于Vite构建的Vue项目在启动后只能通过localhost这种形式访问 如果把localhost换成本主机的局域网ip地址之后页面无法访问了。 就连用127.0.0.1都无法访问。尝试多次之后&#xff0c;最后证明只有使用localhost这种形式才可以 原因&#xff1…

解锁机器学习的无限可能:深入探究scikit-learn的强大功能

解锁机器学习的无限可能&#xff1a;深入探究scikit-learn的强大功能 第一部分&#xff1a;背景和功能介绍 在数据科学和机器学习领域&#xff0c;scikit-learn&#xff08;简称sklearn&#xff09;是一个广泛使用的Python库。它提供了简单高效的工具用于数据挖掘和数据分析&a…

德勤报告:税务合规与转型过程中的技术应用

在当前数据驱动的时代&#xff0c;税务管理已不再是简单的合规问题&#xff0c;而是涉及到企业战略和运营的各个层面。德勤最新发布的《2023年税务转型趋势调研》详细探讨了全球企业在面对日益复杂的税务环境时&#xff0c;如何通过技术手段实现税务合规、税务转型和税务运营的…

乙二醇水溶液物性参数

1.1 乙二醇水溶液的冰点、沸点 乙二醇水溶液作为重要的载冷剂&#xff0c;其物理性质对设备和系统的设计都十分重要&#xff0c;下面是乙二醇水溶液的冰点沸点和其浓度的关系。&#xff08;数据来源 ASHRAE 手册 2005&#xff09; 1.2 乙二醇水溶液粘度 乙二醇水溶液作为重要…

【debug】vscode配置c/c++环境及查看调试信息m1 mac

之前用的一直是clion 但是经过反复调整&#xff0c;发现始终查看不了vector里面的数值&#xff08;只有指针地址&#xff09;&#xff0c;改用常用的vscode后调试成功 安装 安装vscode 以及vscode中的扩展安装 c/c,c/c extension pack,cmake,cmake tools,code runner,codeLLD…

深度学习笔记: 最详尽LinkedIn Feed 排名系统设计

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; LinkedIn Feed 排名 1. 问题陈述 设计一个个性化的LinkedIn Feed&#xff0c;以最大化用户的长期参与度…

2.2 窗口的创建

本书使用C语言编写Windows程序&#xff0c;因此需要搭建C语言开发环境&#xff0c;使用Visual Studio作为C语言的开发工具。 本节必须掌握的知识点&#xff1a; 第8练&#xff1a;Windows程序模型 第9练&#xff1a;注册窗口类 第10练&#xff1a;创建、显示和更新窗口 第11练…

【控制实践——二轮平衡车】【五】转动运动模型及控制方法

传送门 系列博客前言运动模型控制方法控制器设计 结论 系列博客 【控制实践——二轮平衡车】【一】运动分析及动力学建模 【控制实践——二轮平衡车】【二】实物设计和开源结构&代码 【控制实践——二轮平衡车】【三】基于PID的直立控制 【控制实践——二轮平衡车】【四】…

27 ssh+scp+nfs+yum进阶

ssh远程管理 ssh是一种安全通道协议&#xff0c;用来实现字符界面的远程登录。远程复制&#xff0c;远程文本传输。 ssh对通信双方的数据进行了加密。 用户名和密码登录 密钥对认证方式&#xff08;可以实现免密登录&#xff09; ssh 22 网络层 传输层 数据传输的过程中是…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么&#xff1f; Matlab&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名&#xff0c;广泛应用于科学研究、工程模拟…

【面试干货】什么是索引?

【面试干货】什么是索引&#xff1f; 1、索引的定义2、索引的工作原理3、索引在数据库管理系统中的作用 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、索引的定义 数据库索引是一个存储在磁盘上的数据结构&#xff0c;它以某种方式引用…

2024年全国青少信息素养大赛图形化编程挑战赛集训第一天编程题分享

大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训第一天题目 (一)比赛内容: 【小学低年级组】 1、图形化编程软件的使用:熟悉图形化编程软件中舞台区、角色列表区、功能区、脚本编 -3- 辑区的功能及使用。 2、基础功能模块的使用: a.运动模块:角…

ARM64汇编0A - thumb模式与IT块

本文主要讨论一下 32 位程序下的 thumb 模式相关东西&#xff0c;属于选读内容。 thumb模式 ARM模式的指令集宽度是32位而Thumb是16位宽度(但也可以是32位)。 Thumb也有很多不同的版本。不过不同的名字仅仅是为了区分不同版本的Thumb指令集而已(也就是对于处理器来说&#x…

10款必备软件,每款都是神器,赶快用起来吧!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/最近有很多小伙伴在咨询&#xff0c;我也抓紧时间整理了一些不错的软件和我陆续收到的&#xff0c;希望对大家有所帮助。 1. 全球鼠标——MouseI…

15_Vue3核心概念与实践

文章目录 Vue31. Vite2.使用Vite创建前端工程3.目录介绍4.SFC入门5.2.35.ViteVue样式导入方式6.响应式入门&&setup函数6.1 响应式数据6.2 省略setup(){} 省略default{}&#xff0c;return{}6.3 案例开发功能概述 7. 插值表达式8.文本渲染v-text/v-html9. 属性渲染v-bin…

基于Vue的前端瀑布流布局组件的设计与实现

摘要 随着前端技术的不断演进&#xff0c;复杂业务场景和多次迭代后的产品对组件化开发提出了更高的要求。传统的整块应用开发方式已无法满足快速迭代和高效维护的需求。因此&#xff0c;本文将介绍一款基于Vue的瀑布流布局组件&#xff0c;旨在通过组件化开发提升开发效率和降…

全球AI新闻速递6.7

1.智谱 AI 宣布全模型矩阵降价&#xff0c;开源 GLM-4-9B 系列模型。 2.复旦大学计划在2024-2025新学年推出至少100门。 3.思科&#xff1a;启动 10 亿美元 AI 基金&#xff0c;投资AI初创公司。 4.OpenAI和谷歌DeepMind员工联名发声&#xff1a;高级AI风险巨大&#xff0c;…