首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Lombok学习

@Slf4j 注解在类,生成log变量,严格意义来说是常量,不用自己定义log常量,减少代码数量。...在构建器中:对于目标类中的所有的属性和未初始化的final字段,都会在构建器中创建对应属性; 在构建器中:创建一个无参的default构造函数。...在构建器中:对于实体类中的每个参数,都会对应创建类似于“setter”的方法,只不多方法名与该参数名相同。 并且返回值是构建器本身(便于链式调用),如上例所示。...在构建器中:一个build()方法,调用此方法,就会根据设置的值进行创建实体对象。 在构建器中:同时也会生成一个toString()方法。...在实体类中:会创建一个builder()方法,它的目的是用来创建构建器。

60110

JavaScript 学习-1.注释与 var 变量声明

调试 JavaScript 是依赖于浏览器运行的,在浏览器中我们有以下常用的三种方式可以调试代码。 方法一:直接写入 HTML 输出流 <!..."; console.log(user); // world 未使用 var 定义的变量 如果未使用var 直接定义的变量,它实际上是定义了全局对象 window 的一个属性,前面说了JavaScript...JavaScript 声明提升 JavaScript 中,变量及函数的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。... var user; console.log(user); // undefined 初始化的赋值不会提升 var 声明的变量可以提升,但是它的赋值不会被提升。...在 2015 后的 JavaScript 版本 (ES6) 允许我们使用 const 关键字来定义一个常量,使用 let 关键字定义的限定范围内作用域的变量。

69120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JVM类加载机制与双亲委派模型

    特点 程序计数器 也叫PC寄存器,用于记录当前线程执行的字节码指令位置,以便线程在恢复执行时能够从正确的位置开始 线程私有 Java虚拟机栈 用于存储Java方法执行过程中的局部变量、方法参数和返回值...线程私有 堆 用于存储Java程序创建的对象,所有线程共享一个堆,堆中的对象可以被垃圾回收器回收,以便为新的对象分配空间 线程共享 元数据区 用于存储类的元数据信息,如类名、方法名、字段名等,以及动态生成的代理类...线程共享 运行时常量池就时类加载之后,把类中常量的信息移动到元数据区, 字符串常量池jdk1.7以后哦才能够元数据区移动到堆中 常量池时编译后的概念,属于字节码class文件中,而运行时常量池是类加载之后的概念...初始化器(Initializer) 负责执行Java类的静态初始化,包括静态变量的赋值、静态代码块的执行等 初始化器是类加载子系统的最后一个阶段 类加载的三个特点 双亲委派模型、 延迟加载(在需要某个类的时候再加载...,减少启动时间)、 动态加载(在jvm运行的时候动态加载和卸载类(反射机制)) 双亲委派机制 为何需要双亲委派机制 比如定义一个与jdk中重名的类,比如java.long.Object,与jdk同名同包

    25430

    一文掌握Java注解和反射-你总该用过@Override吧?

    @Deprecated 定义在java.lang.Deprecated中,用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择。...对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。...当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤对类进行初始化: 类的加载(Load) 将类的class文件读入内存,并将这些数据转换为方法区的运行时数据结构,然后为之创建一个...引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)。...==== public Reflection.User(java.lang.String,int) */ 动态创建对象 上面已经通过反射成功获取到了类的方法、属性和构造器,但是我们最重要的目的,还是创建对象并执行对象方法

    37120

    JavaScript 进阶 - 第1天

    ,在函数外部无法被访问 函数的参数也是函数内部的局部变量 不同函数内部声明的变量无法互相访问 函数执行完毕后,函数内部的变量实际被清空了 块作用域 在 JavaScript 中使用 {} 包裹的代码称为代码块...; // 报错 JavaScript 中除了变量外还有常量,常量与变量本质的区别是【常量必须要有值且不允许被重新赋值】,常量值为对象时其属性和方法允许重新赋值。...函数中未使用任何关键字声明的变量为全局变量,不推荐!!!...); // 18 总结: 赋值运算符 = 左侧的 {} 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量 对象属性的值将被赋值给与属性名相同的变量 对象中找不到与变量名一致的属性时变量值为...); // 18 总结: 赋值运算符 = 左侧的 {} 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量 对象属性的值将被赋值给与属性名相同的变量 对象中找不到与变量名一致的属性时变量值为

    80420

    消灭 Java 代码的“坏味道”

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    1.4K20

    消灭 Java 代码的“坏味道”

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    1.3K30

    内存、引用、封装、函数

    内存内存分区模型代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量、静态变量和常量栈区:由编译器自动分配释放,存放函数的参数值、局部变量等堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收内存分区意义...:不同分区存放的数据,赋予不同的生命周期,灵活编程程序运行前程序编译后,生成.exe可执行程序,未执行该程序前,分为两个区域:代码区:存放CPU执行的机器指令代码区是共享的,目的是对于频繁被执行的程序,...int(10); return p;}new操作符new在堆区开辟数据,释放利用delete利用new创建的数据,会返回该数据对应的类型的指针void test(){ int* p = new...int(10); cout 未初始化的内存p}也可以加中括号[]开辟或释放数组void...delete[] p;}该区域的数据在程序结束后由操作系统释放程序运行后栈区:由编译器自动分配释放,存放函数的参数值、局部变量等注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放作用

    76500

    消灭 Java 代码的“坏味道”

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    1.5K20

    JavaScript进阶-01

    ,在函数外部无法被访问 函数的参数也是函数内部的局部变量 不同函数内部声明的变量无法互相访问 函数执行完毕后,函数内部的变量实际被清空了 块作用域 在 JavaScript 中使用 {} 包裹的代码称为代码块... JavaScript 中除了变量外还有常量,常量与变量本质的区别是【常量必须要有值且不允许被重新赋值】,常量值为对象时其属性和方法允许重新赋值。...函数中未使用任何关键字声明的变量为全局变量,不推荐!!!...(age) // 18 总结: 赋值运算符 = 左侧的 {} 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量 对象属性的值将被赋值给与属性名相同的变量 对象中找不到与变量名一致的属性时变量值为...undefined 允许初始化变量的默认值,属性不存在或单元值为 undefined 时默认值才会生效 注:支持多维解构赋值,比较复杂后续有应用需求时再进一步分析

    71320

    笔记(一 )——Java零碎知识摘录

    即:java在运行状态中反射知道一个类里面的所有方法和属性;通过反射获得对象后,能够调用对象的任意属性和方法。...字符串一定会被保存到常量池中,且Java虚拟机如果发现常量池中已经存在需要创建的字符串中,它就不会重复创建,而是指向那个字符串即可,(深入Java源码剖析之字符串常量)这就类似于如下操作。...,然后堆中再创建一个常量池中此”china”对象的拷贝对象。...总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。...因为非static方法要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法的调用,而static方法调用时不需要创建对象,可以直接调用。

    54720

    Strust2总结及在面试中的一些问题.

    Action执行的控制 Struts 1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须共享同一个生命周期。...该文件是Web应用的配置文件 (配置常量 ) 后加载配置文件中修改的常量的值会覆盖前面配置文件修改的常量的值!...第二种 :创建独立model对象,页面通过ognl表达式封装 (属性驱动) 具体封装流程如下:传递username,调用setUsername,把username注入User中,将会新建一个User对象...4、④拦截器可以访问action上下文、值栈里的对象,而过滤器不能 5、⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦  拦截器 :是在面向切面编程的就是在你的...ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation

    93770

    c面向对象基础2-类和对象

    创建一个对象分为如下四步: 分配对象空间,并将对象成员变量初始化为0或空执行属性值的显式初始化执行构造方法返回对象的地址给相关的变量声明格式:[修饰符] 类名(形参列表){ //n条语句}通过new...由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象” 。...this最常的用法:在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。...静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非static成员。...方法区实际也是堆,只是用于存储类、常量相关的信息!用来存放程序中永远是不变或唯一的内容。

    24700

    struts2讲解

    Action执行的控制 Struts 1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须共享同一个生命周期。...) 后加载配置文件中修改的常量的值会覆盖前面配置文件修改的常量的值!...第二种 :创建独立model对象,页面通过ognl表达式封装 (属性驱动) 具体封装流程如下:传递username,调用setUsername,把username注入User中,将会新建一个User...4、④拦截器可以访问action上下文、值栈里的对象,而过滤器不能 5、⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦 拦截器 :是在面向切面编程的就是在你的...ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation

    70130

    TensorFlow修炼之道(2)——变量(Variable)

    与常量不同的时,常量创建后,值便无法更改,但是变量创建后 可以修改。并且修改后的值在多个Session中都是可以看见的。 训练模型时,需要使用变量(Variable)保存和更新参数。...变量是包含张量(tensor)的内存缓冲。变量必须要先被 初始化(initialize) ,而且可以在训练时和训练后保存(save)到磁盘中。...在低级TensorFlow API中编程(需要自己明确地创建图和会话),必须显式初始化变量。...大多数高级框架,如tf.contrib.slim、tf.estimator.Estimator和Keras在训练模型之前自动初始化变量。...要在训练开始前一次初始化所有可训练的变量,可以调用 tf.global_variables_initializer() 来完成。如果只想初始化某个变量,可以调用变量的 .initializer属性。

    1.2K40

    消灭 Java 代码的“坏味道”

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    75710

    消灭 Java 代码的“坏味道”

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    95931

    如何写好 Java 代码!

    反例: list.removeAll(list); // 性能差, 直接使用clear() 集合初始化尽量指定大小 java 的集合类用起来十分方便,但是看源码可知,集合也是有大小限制的。...L 在使用长整型常量值时,后面需要添加 L ,必须是大写的 L ,不能是小写的 l ,小写 l 容易跟数字 1 混淆而造成误解。...未使用的方法参数具有误导性,删除未使用的方法参数,使代码更简洁更易维护。...枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改。...理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的 Setter 方法,最好加上 final 修饰符。

    1.1K30
    领券