静态域[详解]

2023-05-16

不知道静态域是什么,目前有两种想法

1是代表static修饰的属性、方法等的集合,即所有static修饰的都算

2是认为仅仅代表静态代码块,即

static {
    
    }

下面正式研究"何为静态域"

        查到的文章基本分静态域、静态常量、静态方法这几块进行介绍,内容都大差不大但都没有很明确指出何为静态域静态域和其他静态相关(静态属性、静态方法等)之间的关系

下面也分静态域、静态常量、静态方法这几块进行讲解,最后总结再解答我前面的问题

静态域说法1

如果将类中的域定义为static则这个域属于这个类,而不属于这个类的某个对象。每个类中只有一个这样的域,而每一个类对象对于所有的实例域(即没有定义为static的域)都有自己的一份拷贝

例如
class Employee{
    ……
    private int id;
    private static int nextId = 1;
}

如果有1000个Employee类的实例则有1000个实例域id,但是只有一个静态域nextId。即使没有一个Employee实例,静态域nextId也会存在。静态域也称为类域,它属于类,不属于任何对象

小结

就是static修饰的域可以叫静态域、类域;静态域是类级别,不是对象级别的、对象不存在,静态域也会存在

静态域说法2

        静态域又称为类域,顾名思义在静态域中的变量或者常量以及方法在整个类中都是有效的。一般我们用static关键字来定义静态域,被static修饰的变量或者常量以及方法都处在静态域中->这里比说法1明确多了,说法1对静态域的定义就是static修饰的域。而域具体代表哪块屈区域并没有说明。再看这里,第二句话指明静态域就是包含所有被static修饰的东西。也就是所有被static修饰的回收集到一块专门的空间中,类似类的生命周期中的初始化阶段执行的clinit()。对不对,继续看

静态域说法3

一个静态域、多个实例域,即前面说不管实例存不存在静态域都会存在且共享这一个,而实例域则和实例相关联。可通过下面例子验证

public class EmployeeTest {
    public static void main(String[] args){
        Employee[] temp = new Employee[5];

        for (int i = 0; i < 5; i++)
            temp[i] = new Employee();

        for (int i = 0; i < 5; i++){
            temp[i].setID();
            System.out.println("My number is: " + temp[i].getID());     }
    }
}

class Employee{

    private int id;
    private static int nextId = 1;

    public Employee(){}

    public void setID(){
        id = nextId;
        nextId++;     }

    public int getID(){
        return id;      }

}

静态域说法4

如果别人问你static的作用

你说静态修饰 类的属性 和 类的方法,别人认为你是合格的

如果你说 可以构成 静态代码块,那别人认为你还可以

如果你说可以构成 静态内部类,那别人认为你不错

如果你说了静态导包,那别人认为你很OK->没听过,不过下面挑重点讲会讲,不过也是了解即可的程度

静态内部类

1、内部类一般只为其外部类使用

2、内部类提供了某种进入外部类的窗户,内部类存在外部类的引用,所以内部类可以直接访问外部类的属性

3、最吸引人的原因:每个内部类都能独立地继承一个接口,而无论外部类是否已经继承了某个接口。因此内部类使多重继承的解决方案变得更加完整

        外部类按常规的类访问方式(以对象的方式)使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。外部类访问内部类需要创建对象访问。有一点需要注意,内部类不能访问外部类所在的局部变量,只能访问final修饰的局部变量

内部类向上转型

内部类也可以和普通类一样拥有向上转型的特性。将内部类向上转型为基类型,尤其是接口时,内部类就有了用武之地。如果内部类是private的,只可以被它的外部类问从而完全隐藏实现的细节

方法内的类

方法内创建的类(注意方法中也能定义类)不能加访问修饰符。另外方法内部的类也不是在调用方法时才会创建的,它们一样也被事先编译了

静态导包

        静态导包就是java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性

一般我们导入一个类都用 
import com…..ClassName;

而静态导入是这样
import static com…..ClassName.*;

可见多个static,还有就是类名ClassName后面多了个.*

意思是导入这个类里的静态方法。当然也可以只导入某个静态方法,只要把 .* 换成静态方法名即可。然后在这个类中就可以直接用方法名调用静态方法而不必用类名.方法名 的方式来调用->就是调用静态属性、静态方法啥的直接写属性名、方法名即可

好处

这种方法的好处就是可以简化一些操作

例如打印操作
System.out.println(…);    就可以将其写入一个静态方法print(…)
在使用时直接print(…)就可以了
print(…)

但是这种方法建议是在有很多重复调用的时候使用;如果仅有一到两次调用不如直接写来的方便

example

在Java 5中,import语句得到了增强,可以提供甚至更加强大的减少击键次数功能。虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入,当你想使用static成员时可以使用静态导入(在API中的类和你自己的类上都可以使用该特性)

下面是静态导入前后的代码实例

在静态导入之前

public class TestStatic {

    public static void main(String[] args) {

        System.out.println(Integer.MAX_VALUE);

        System.out.println(Integer.toHexString(42));    }

}

在静态导入之后

import static java.lang.System.out;
import static java.lang.Integer.*;

public class TestStaticImport {

    public static void main(String[] args) {

        out.println(MAX_VALUE);

        out.println(toHexString(42));    }}

确实,代码节省了,可读性下降。至此静态导包介绍完了,下面讲一些注意点 

1、虽然该特性通常称为“静态导入”,但语法必须是import static不能说static import,后面再跟你想导入的static成员的完全限定名称或者通配符。在本例中,我们是在System类的out对象上进行静态导入

2、提防含糊不清的命名static成员

        如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误。因为Integer和Long都有一个MAX_VALUE常量,所以Java就不知道你在引用哪个MAX_VALUE

所以记住,1、你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入;2、这种方式建议是在有很多重复调用的时候使用

静态域说法5

,英文文档中为field,也就是我们常说的字段、属性。

比如类的字段(属性),局部的、全局的。所以、所谓的域其实是“field”的翻译,那么静态域就只能是静态属性了

java中的域分为两类:静态域(一个类中只有一个这样的域)、实例域(每一个对象对于所有的实例域都有自己的一份拷贝)

下面举例认识一下域

public class InitialOrderTest {               
     静态变量          
    public static String staticField = "静态变量";          
     变量          
    public String field = "变量";                  
     静态初始化块        
    static {          
        System.out.println(staticField);  
        System.out.println("静态初始化块");  
    }                  
     初始化块              
    {          
        System.out.println(field);  
        System.out.println("初始化块");        
    }                  
     构造器          
    public InitialOrderTest() {  
        System.out.println("构造器");       }
                  
    public static void main(String[] args) {  
        new InitialOrderTest();              
    }          
}

前面说静态域只能单单指静态属性了,可下面还是将静态变量、静态初始化块归为静态域

将变量、初始化块归为实例域

构造器另算

所以静态域现在指的是静态相关的,即static修饰的都算在内

域的初始化

属于拓展内容

初始化域即给域赋值有以下几种方式

      1)赋予默认赋值
      2)声明变量时同时赋值
      3)块赋值(实例块和静态块)
      4)构造器赋值

如果同时存在以上几种赋值方式,那么域的最终值会是哪个呢?这里涉及到域的初始化顺序的问题

域的初始化分为两种情况     

一种是在建立对象即进行类的实例化时域的初始化
另一种是在不建立对象,只装载类的时候域的初始化

一、构建对象时域的初始化

构建对象,就是用new class()语句建立一个新的类的对象。在这种情况下,类中的域是按照如下顺序进行初始化的

赋予默认值-->(静态域、静态块)-->(实例域、实例块)-->构造器

举例:假设一个域即变量int a,当建立对象时,首先赋予它一个默认值,int类型的默认值为0;如果a为静态域并且在静态块中被赋值,那么就按照静态域和静态块在程序中出现的顺序先后执行;如果同时还在实例块中被赋值,则再执行实例块中的赋值语句(静态域不可能再是实例域);最后执行构造器中的赋值语句(如果在构造器中有被赋值的话)。如果变量a是实例域,则不会有静态域和在静态块中赋值(不能在静态块中给实例域赋值)的情况,其他同前所述

二、装载类时域的初始化化

有两种情况是只装载类而不实例化类
一是用java classname执行程序时
二是用classname.statement调用类的静态域或静态方法时

装载类时这个类并没有被实例化也就不能形成对象,所以不能对实例域进行初始化。因此只有静态域、静态块才能被初始化执行,执行规则同构建对象时的规则

静态域说法6

其实前面的说法看下来就明白何为静态域了,静态相关的就是静态域,即static修饰都算

下面借助《java核心技术卷一》再来看看静态域

上面介绍了何为"声明",即数据类型 变量 分号的形式是"声明" 。讲这个是为了和"初始化"区分开来

"初始化"就是"声明"的基础上进行赋值 

因为经常"声明"、"初始化"用词不规范,所以上面特意讲讲。再"声明"有时也"定义"代替,不过后者不怎么用

所以,大多数文章就是直接cv书上的内容罢了。静态域到此已经懂了,下面静态常量、静态方法啥的算拓展吧 

静态常量

        如果一个域被定义为static final,则这个域就是一个静态常量。静态变量使用的比较少,但是静态常量却使用的比较多。在实际的开发中,静态常量可以做到改一处能多处使用,能大大的减少修改和出错的地方

不能省略任何一个关键字。若是少了static,则该域变成了一个实例域,需要由类对象对其进行访问。若是省略了final,则该域变成了静态域,静态方法可以对其进行修改

建议:如果你要使用static修饰常量并且权限修饰符为public的话,建议加上final。不然的话,你的常量任意一个类都可以进行修改,那么这个常量也就失去了意义

静态变量和非静态变量的区别是

静态变量被所有的对象所共享,在内存中只有一个副本【存放在方法区】。它当且仅当在类初次加载时会被初始化【加final和不加final的static变量初始化的位置不一样】。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
 

static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。是因为它的特性:只会在类加载的时候执行一次。所以很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行

静态方法

        静态方法是一种不能向对象实施操作的方法。Math的pow()就是一个静态方法,在运算时不使用任何Math对象。换句话说,没有隐式的参数this。因为静态方法不能操作对象,所以不能在静态方法中访问实例域,但是静态方法可以访问自身类中的静态域。可以使用对象调用静态方法,但是这样容易引起混淆。因为计算的结果与对象毫无关系,建议还是使用类名而不是类对象调用静态方法->没有隐式参数,隐式参数指的是this。换句话说,没有隐式的参数。可以认为静态方法是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)

例如
public static int getNextId( ){
    return nextId;    }

如果去掉其中的关键字static,它就成了非静态方法,但是也可以访问类中的静态域,这时就需要由该类的对象来调用该函数

在下面两种情况下使用静态方法

1.一个方法不需要访问对象的状态(对象的实例域),其所需的参数都是通过显式的提供

2.一个方法只需访问类的静态域

类方法可以调用其他类的static方法。可以在类方法中生成实例对象再调用实例方法

调用类方法的方式:可由实例对象调用,还可以由类名直接调用

类中的实例方法可以用类名直接调用吗?

不可以。实例方法需要先创建实例,然后才可以调用实例的方法

工厂方法

我不熟,所以直接cv了,不对下面进行研究

静态方法还有一种常见的用途,例如:NumberFormat类使用工厂方法产生不同风格的格式对象

NumberFormat currencyFormatter =NumberFormat.getCurrencyInstance();

NumberFormat percentFormatter=NumberFormat.getPercentInstance();

doublen n= 0.3;

System.out.println(currencyFormatter.format(n));//输出 ¥0.30

System.out.println(percentFormatter.format(n)); //输出 30%

为什么NumberFormat类不利用构造器完成这些操作呢?主要的原因有两个:

1、无法命名构造器。构造器的名字必须与类名相同,但是,这里希望将得到的货币实例和百分比实例采用不同的名字。

2、当使用构造器时,无法改变所构造的对象类型。而Factory方法将返回一个DecimalFormat类对象,这是NumberFormat的子类。

5、main方法

我们学习java的时候,程序中大多会有一个main 方法,我们都称作程序的入口,main方法不对任何对象进行操作,事实上,在启动程序的时候,还没有任何一个对象,静态的main方法将执行并创建程序所需的对象


常见的笔试面试题(再看看)

class Person{

    static{

        System.out.println("person static");    }

    public Person(String str) {

        System.out.println("person "+str);    }

    }

public class Test {

    Person person = new Person("Test");

    static{

        System.out.println("test static");    }

    public Test() {

        System.out.println("test constructor");    }

    public static void main(String[] args) {

        new MyClass();    }
    }



class MyClass extends Test {

    Person person = new Person("MyClass");

    static{

        System.out.println("myclass static");

        }

    public MyClass() {

        System.out.println("myclass constructor");     }    }
我以为结果是

test static 

myclass static

person static 

myclass con

实际是

test static

myclass static

person static

person Test

test constructor

person MyClass

myclass constructor

解释:首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加载MyClass类。在加载MyClass类的时候,发现MyClass类继承自Test类,但是由于Test类已经被加载了,所以只需要加载MyClass类,那么就会执行MyClass类的中的static块。在加载完之后,就通过构造器来生成对象。而在生成对象的时候,必须先初始化父类的成员变量,因此会执行Test中的Person person = new Person(),而Person类还没有被加载过,因此会先加载Person类并执行Person类中的static块,接着执行父类的构造器,完成了父类的初始化,然后就来初始化自身了,因此会接着执行MyClass中的Person person = new Person(),最后执行MyClass的构造器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态域[详解] 的相关文章

  • 虚拟机如何使用共享文件夹传文件

    项目场景 xff1a 在使用VMware平台 xff0c ubuntu操作系统时 xff0c ftp文件传输一直报错 问题描述 xff1a 尝试了多种 xff0c 更改电脑设置 xff0c 甚至重装虚拟机 xff0c 始终如下图报错 解决方
  • 强化学习入门DQN详解

    Deep Q Network 参考资料 xff1a B站莫烦 xff1a https www bilibili com video BV13W411Y75P spm id from 61 333 337 search card all cl
  • 某项目因为多次流标导致实际项目时间严重压缩,我该咋办?

    问题 xff1a 某政府项目 xff0c 三个月前就开始招标 xff0c 因各种原因 xff0c 流标三次 xff0c 导致时间拖太长 原计划一期工期三个月 43 xff0c 1月底上线 xff0c 但因为招投标影响直到一个月前签订了合同
  • ROS创建工作空间及功能包流程总结整理(python)

    ROS创建工作空间及功能包流程总结整理 xff08 python xff09 参考资料 xff1a B站赵虚左 xff1a https www bilibili com video BV1Ci4y1L7ZZ p 61 19 amp vd s
  • ROS自定义发布消息类型

    ROS自定义发布消息类型 xff1a 在 ROS 通信协议中 xff0c 数据载体是一个较为重要组成部分 xff0c 在上一案例中 xff0c ROS 中通过 std msgs 封装了一些原生的数据类型 比如 String Int32 In
  • ROS服务通信:自定义数据文件以及服务端和客户端代码编写流程及步骤详解

    ROS服务通信具体实现流程 demo xff1a 实现两个整型数相加求和 xff0c 客户端发送两个整型数 xff0c 服务端对其求和 服务通信也需要自定义服务数据类型 xff0c 即自定义srv文件 xff0c 该过程和自定义msg文件非
  • ROS TF静态坐标变换实现

    ROS TF静态坐标变换实现 法一 xff1a 编码实现 发布方代码实现 xff1a 创建功能包并添加依赖 catkin create pkg tf static roscpp rospy std msgs tf2 tf2 ros tf2
  • ROS:Gazebo导入自定义环境

    Gazebo导入自定义环境 之前的案例gazebo中导入的是一个空世界empty world xff0c 这里会介绍如何导入房屋数目等自定义的环境 xff08 1 xff09 启动 gazebo 打开构建面板 xff0c 绘制仿真环境 xf
  • ROS导航实现:SLAM建图(slam_gmapping)与保存(map_server)

    导航实现 xff1a SLAM建图 先安装相关的ROS功能包 安装 gmapping 包 用于构建地图 sudo apt install ros lt ROS版本 gt gmapping 安装地图服务包 用于保存与读取地图 sudo apt
  • ROS导航实现:amcl定位

    ROS导航实现 xff1a amcl定位 xff08 1 xff09 首先编写启动amcl的launch文件 xff0c 这里建议复制粘贴模板 xff0c 再修改相关的参数即可 xff0c 步骤如下 xff1a 主目录下进入amcl文件 r
  • ROS导航实现之路径规划

    导航实现之路径规划 move base 功能包提供了基于动作 action 的路径规划实现 xff0c move base 可以根据给定的目标点 xff0c 控制机器人底盘运动至目标位置 xff0c 并且在运动过程中会连续反馈机器人自身的姿
  • 创建个人网站(github pages)并将站点一键托管到Github

    创建个人网站 xff08 github pages xff09 并将站点一键托管到Github 内容 xff1a 使用网站生成器mkdocs将markdown文件生成wiki站点并挂载到github的流程总结 亮点 xff1a 个人网站一键
  • 视觉SLAM十四讲(第2版)总结

    最近看完了 视觉SLAM十四讲 xff08 第2版 xff09 xff1a 从理论到实践 xff08 高翔等著 xff09 xff0c 原书分两部分 xff0c 先介绍了数学基础 xff0c 然后介绍了具体的SLAM实践 xff0c 非常适
  • 我的公众号 - 豆芽儿 软件研发人才生长社区

    为你系统分享敏捷开发 项目管理 需求分析 软件设计 UML 中层领导力 CMMI IT职场 ACP 软考 PMP等 高大上 的实用知识 xff0c 帮助你进阶为高端人才 xff01
  • Openblas 下载和使用方法

    Openblas 下载及使用 环境 xff1a 平台 xff1a Ubuntu 20 04 xff0c Orin xff1a Arm Cortex A78AE v8 2 64 bit 步骤 xff1a 1 去github 下载openbla
  • FreeRTOS学习记录

    FreeRTOS学习记录 前言FreeRTOS学习记录在STM32CubeMX中配置FreeRTOS 前言 本人小白 xff0c 最近学习了FreeRTOS操作系统 xff0c 打算做一点记录 学习的过程中虽然做了点练习 xff0c 不过都
  • 如何给华三交换机恢复出厂设置及命令

    如何给华三交换机恢复出厂设置及命令 在前几天 xff0c 上级单位线路重新规划 xff0c 需要我们将单位的线路进行改造 xff0c 这就涉及到了网络设备的重新配置 经查看 xff0c 上级接入交换机的业务端口配置为access xff0c
  • 解决Linux下Docker下载安装太慢

    卸载先前版本 yum remove docker docker span class token operator span client docker span class token operator span client span
  • sqlyong连接docker中的mysql 失败can‘t connect to MySQL server on (*******:3306)

    解决sqlyong连接docker中myslq失败 xff1a 一 查看mysql是否运行docker ps 二 查看mysql端口映射是否与连接相符 三 进入mysql容器查看是否能够进行本地连接docker exec it mysql
  • 解决springboot+webSocket出现404错误

    这是因为websocket创建的bean是由自己来管理的 需要将其创建的bean交给spring管理 创建websocketconfig span class token keyword package span com span clas

随机推荐

  • Bytebuffer源码剖析及实现原理

    Bytebuffer 官方解释A byte buffer xff0c 一个字节缓冲区 一 使用方法 ByteBuffer 初始状态是写模式 使用IO流即可写入数据 如 channel read 如果需要读取ByteBuffer中的数据调用f
  • Linux下安装并配置FTP文件服务器

    一 安装vsftpd 1 运行如下代码安装vsftpd yum install span class token operator span y vsftpd 2 运行以下命令设置FTP服务开机自启动 systemctl enable vs
  • Java 实现 图片OCR文字识别

    Java 实现图片OCR文字识别功能 前言 由于网上很多算法 以及语言库无法做到精准识别 所以综合条件下 使用了一款 space OCR API 的产品进行使用 每个月有25000条的 使用额度 日常使用或开发绰绰有余 网址链接 一 注册
  • js实现表单的校验

    js实现表单校验 CV即用 1 效果图 当每个输入框失去焦点时会通过正则表达式来验证输入的格式是否正确 点击登录按钮后 xff0c 如果有格式不正确的将无法登录 当校验全部通过以后才可以登录 2 源代码 xff1a HTML代码 xff1a
  • 你和国际项目经理(PMP),一步之遥?-张传波-专题视频课程

    你和国际项目经理 PMP xff0c 一步之遥 xff1f 913人已学习 课程介绍 项目管理是门实战性超强的大学问 xff0c 项目经理是一位能把控全局的 狠 角色 xff01 你距离这样的 狠 角色有多远呢 xff0c 你应该如何规划自
  • RTOS任务切换原理与实现

    曾今只是使用过移植好的RTOS进行任务开发 xff0c 对其实现的底层原理一直一知半解 xff0c 正好接触到了李述桐老师的课程以及一些网上的资料 xff0c 让我对实时操作系统的原理有了更深的理解 xff0c 特此把一些原理和思考记录下来
  • python报错:Process finished with exit code -1066598274 (0xC06D007E) 解决方法

    1 在运行Mask RCNN项目时 xff0c 导入官网下载的代码和数据集 xff0c 准备运行时报此错误 2 原因 官网要求python版本是3 4 xff0c 但是我python编译器版本为3 9 3 解决 将编译器版本更换为3 7试试
  • OpenCV4学习笔记(72)——ArUco模块之aruco标记的创建与检测

    今天要整理记录的是OpenCV中ArUco模块的基础内容 xff0c 包含aruco标记的创建与检测 要注意的是ArUco模块是包含在OpenCV的contrib拓展库中的 xff0c 需要自行下载OpenCV基础库和contrib拓展库进
  • OpenCV4学习笔记(74)——ArUco模块之对aruco标记进行实时姿态估计

    在之前的笔记 OpenCV4学习笔记 xff08 72 xff09 中 xff0c 记录了在OpenCV中关于aruco标记的创建和检测这方面的内容 xff0c 今天就基于aruco标记检测来进一步实现对aruco标记的实时姿态估计 首先我
  • OpenCV4学习笔记(75)——ArUco模块之实现AR(增强现实)效果

    今天要整理记录的是利用OpenCV中ArUco模块的aruco标记实现一个增强现实的小应用 xff0c 当然了本次笔记的内容也是需要建立在之前的 OpenCV4学习笔记 xff08 72 xff09 基础上的 所谓增强现实 Augmente
  • Ubuntu18.04配置orb-slam2+ROS,一次性通过./build_ros.sh

    1 换源 建议采用清华的源 xff0c 如果采用阿里的源后面很多依赖会报错 xff0c 换源之后记得更新 xff0c 建议勾选源代码 sudo apt get update 1 1 报错error 解决 xff1a sudo apt get
  • process has died 报错

    报错提示 UnicodeEncodeError 39 ascii 39 codec can 39 t encode characters in position 345 350 ordinal not in range 128 spawn
  • Mysql问题Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    java sql SQLSyntaxErrorException Expression 2 of SELECT list is not in GROUP BY clause and contains nonaggregated column
  • 【SAP-FI】承诺项目(Commitment item)详解

    定义 xff1a 承诺项目表示组织在财务管理区域 xff08 FM区域 xff09 内的功能分组 用途 xff1a 承诺项目将影响流动性的预算交易和商业交易分类为收入 xff0c 支出和现金余额项目 您可以将特定责任区域 xff08 资金中
  • 操作系统--03内存管理

    内存管理 第三章 xff1a 内存管理 xff08 存储器管理 xff09 3 内存保护的两种办法 xff1a 3 1 覆盖与交换3 2 连续分配管理方式3 3 动态分区分配算法1 首次适应算法 xff1a 2 最佳适应算法 xff1a 3
  • SCRUM敏捷项目管理实战(深圳站)

    1 内容提要 SCRUM是目前各互联网公司普遍采用的敏捷项目管理模式 xff0c 与传统的项目管理十大知识领域相比 xff0c 敏捷更加直击要害 xff0c 更加强调自组织和跨职能团队 xff0c 更能帮助企业高效率交付和盈利 xff01
  • 2021年最新gitee使用教程

    gitee简介 Gitee com xff08 码云 xff09 是 OSCHINA NET 推出的代码托管平台 xff0c 支持 Git 和 SVN xff0c 提供免费的私有仓库托管 目前已有超过 600 万的开发者选择 Gitee 为
  • 在vscode中运行c、c++(超级简单)

    第一 下载安装vscode 第二 下载插件 链接 xff1a https pan baidu com s 1mLdKbQWxkZJYhwH0ToD9oQ 提取码 xff1a 3kxe 复制这段内容后打开百度网盘手机App xff0c 操作更
  • flameshot安装并配置插入文字描述、设置默认保存路径、将截图内容添加到粘贴板中

    flameshot配置插入文字描述 设置默认保存路径 将截图内容添加到粘贴板中 安装 xff1a https github com flameshot org flameshot releases 下载相应rpm包 xff0c 安装即可 以
  • 静态域[详解]

    不知道静态域是什么 目前有两种想法 1是代表static修饰的属性 方法等的集合 即所有static修饰的都算 2是认为仅仅代表静态代码块 即 static 下面正式研究 34 何为静态域 34 查到的文章基本分静态域 静态常量 静态方法这