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

Effective Java要点笔记

创建是否有init一些前置过程?...优点: builder 可以一次构建实例对象,而JavaBean方式虽然比构造可读性好点,但会使对象状态处于不一致状态,线程安全维护成本太高了。...builder方式在进行构造可以加入校验参数逻辑确保正确通过builder构建实例 builder 可以在真正创建对象之前进行各种参数修改调整,甚至可以自动设置某些域 builder 因为是变化...再讲单例实现 常见有三种 枚举 静态属性或静态块 双重检查锁 不需要实例类 尽量把构造私有化,比如一些工具类,避免不必要对象意外创建 对象如果可重用,就少创建点 但是如果因为多创建实例而提高了程序清晰性...,相等对象必须具有相同hashCode~ 不要将equals声明中Object对象替换为其它类型,应该覆盖Object equals方法 要始终覆盖toString方法,打印信息更加具有可读性

42410

查询优化基础知识—SQL语句处理过程

此哈希在 Oracle 数据库版本中是确定性,因此单个实例或不同实例相同语句具有相同 SQL ID。...当用户提交SQL语句,数据库将搜索共享 SQL 区域以查看现有的已解析语句是否具有相同哈希。...该语句执行计划哈希 SQL 语句可以在共享池中具有多个计划。通常,每个计划都有不同哈希。如果相同 SQL ID 具有多个计划哈希,则数据库就会知道此 SQL ID 存在多个计划。...下图是专用服务体系结构中 UPDATE 语句共享池检查简化表示。 图3-2共享池检查 如果检查确定共享池中语句具有相同哈希,则数据库将执行语义和环境检查以确定语句是否具有相同含义。...递归 SQL 将执行以下操作: 在执行 CREATE TABLE 语句之前发出 COMMIT 验证用户权限是否足以创建表 确定表应该驻留在哪个表空间中 确保未超出表空间配额 确保架构中没有对象具有相同名称

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

Effective-java-读书笔记之创建和销毁对象

可以更确切地描述正被返回对象.一个类需要多个带有相同签名构造, 可以用静态工厂方法, 并且慎重地选择名称以便突出它们之间区别.不必在每次调用它们时候都创建一个新对象....可以重复利用实例, 进行实例控制. 如果程序经常请求创建相同对象, 并且创建对象代价很高, 这项改动可以提升性能. (不可变类, 单例, 枚举).可以返回原类型子类型对象....可以使用一些惯用名称来弥补这一劣势:from: 类型转换方法.of: 聚集方法, 参数为多个, 返回的当前类型实例包含了它们.valueOf: 类型转换方法, 返回实例与参数具有相同.instance...更加安全; 灵活性: 可以利用单个builder构建多个对象, 可以自动填充某些域, 比如自增序列号.Builder模式不足: 为了创建对象必须先创建Builder, 在某些十分注重性能情况下, 可能就成了问题...Spring.第6条 避免创建不必要对象一般来说, 最好能重用对象而不是每次需要时候创建一个相同功能对象.

38000

vue3.0 Composition API 翻译版(超长)

缺乏用于在多个组件之间提取和重用逻辑干净且免费机制。(有关逻辑提取和重用更多详细信息) 该RFC中提出API在组织组件代码为用户提供了更大灵活性。...state.count在将来某个时间发生突变,内部函数将再次执行。 这是Vue反应系统本质。您从data()组件中返回对象,它会在内部使之具有反应性reactive()。...这是因为JavaScript基本类型是通过而不是通过引用传递 ? 将分配给对象作为属性,也会发生相同问题。如果一个反应性在分配为属性或从函数返回不能保持其反应性,那么它将不是很有用。...没有创建仅用于逻辑重用不必要组件实例。 #与现有API一起使用 Composition API可以与现有的基于选项API一起使用。...我们已经讨论了是否有可能完全避免使用Ref概念并仅使用反应性对象,但是: 计算获取可以返回原始类型,因此不可避免地要使用类似Ref容器。

8.9K10

Java 设计模式最佳实践:二、创建型模式

这意味着块一次只能由一个线程执行,但只有在实例尚未创建锁定才有意义。单例实例已经创建,每个线程都可以以不同步方式获取当前实例。...当我们有一个复杂类需要实例化为具有不同结构或不同内部状态不同对象,我们可以使用不同类来封装实例化逻辑。这些类被称为构建。...每次我们需要来自同一类具有不同结构对象,我们都可以创建另一个构建创建这样实例。 同样概念不仅可以用于需要不同表示类,也可以用于由其他对象组成复杂对象。...具有方法链接匿名构建 如前所述,处理来自同一类且应采用不同形式对象最直观方法是为每个场景创建几个构造实例化它们。使用构建模式来避免这种情况是一种很好做法。...有几种情况需要克隆已实例对象对象创建依赖于外部资源或硬件密集型操作 当我们需要一个具有相同状态同一对象副本,而不必重做所有操作以达到该状态 当我们需要一个对象实例而不知道它属于哪个具体类

34810

WPF面试题-来自ChatGPT解答

转换通常用于以下情况: 数据类型转换:绑定源数据类型与目标属性类型不匹配转换可以将源数据转换为目标类型,以便正确地显示或使用。...数据适配:绑定源数据与目标属性数据结构不匹配转换可以将源数据适配为目标属性所需数据结构,以便正确地显示或使用。...这意味着副本将具有与原始对象相同属性和子对象引用。如果原始对象是冻结(即IsFrozen属性为true),则副本也将是冻结。...这意味着副本将具有与原始对象相同的当前属性,但子对象引用将是共享。如果原始对象是冻结(即IsFrozen属性为true),则副本也将是冻结。...这使得CloneCurrentValue()方法在需要创建一个与原始对象具有相同属性对象非常有用,而不需要复制子对象引用。 35.

35930

【愚公系列】2023年11月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)

具体享元是享元模式具体实现,它允许多个对象共享相同状态信息,以降低内存消耗和提高性能。通过将共享状态与非共享状态分离,具体享元对象能够在多个客户端之间共享,并在需要动态创建。...客户端请求创建一个享元对象,工厂会检查池中是否已存在相应对象对象共享:如果池中已经存在相应享元对象,享元工厂将直接返回该对象引用,而不是创建对象。这确保了相似对象共享。...这可能导致一些信息分散在不同地方,增加了代码复杂性和维护难度。维护共享状态一致性:共享状态一致性需要得到维护。如果多个享元对象共享相同状态,其中一个对象修改了状态,可能会影响到其他对象。...例如,文本编辑字符或图像处理中像素对象。共享相同状态:享元模式适用于对象之间存在相同或可共享状态信息。这些状态信息可以多个对象共享,从而减少内存占用。...例如,多个按钮对象具有相同样式和行为。状态外部化:对象状态可以被外部化,并且可以多个对象之间共享可以考虑使用享元模式。共享状态信息通常存储在享元对象之外,可以多个对象之间共享。

20831

Unity基础教程系列(三)——复用对象(Object Pools)

然而,试图销毁多个形状,你很可能会得到一个错误。...默认情况下,它们具有相同宽度,并且标签在文本下面有足够空白空间。你可以将滑块向上拖动到标签底部边缘它会吸附到它旁边。 ?...通过创建独立开发构建,并将其自动连接到编辑进行分析,可以获得更好数据。 ?...在Get方法开始,检查是否启用了回收。如果是,检查池是否存在。如果没有,则此时创建池。 ? 3.4 从池中检索一个对象 实例化形状并设置其ID现有代码现在应该只在不回收使用。...3.7 在Action里进行回收 不管回收是否被启用,游戏都是一样,你可以通过观察层级窗口来看到区别。创建和销毁以相同速度进行时,你会看到形状将会活跃(激活)和不活跃,而不是被创建和销毁。

2.8K10

让ChatGPT教我学生成器模式

它提供了一个高层次接口,通过指导具体生成器构建步骤来创建产品。 用途: 构建复杂对象:生成器模式适用于构建复杂对象场景,特别是对象具有多个部件或属性,并且构建过程需要一定顺序和步骤。...重用构建代码:生成器模式可以通过复用相同构建代码来构建不同产品变体。通过修改具体生成器实现,可以创建具有不同属性或配置不同产品。...## 优点 - 构建复杂对象:生成器模式适用于构建复杂对象场景,特别是对象具有多个部件或属性,并且构建过程需要一定顺序和步骤。...- 重用构建代码:生成器模式可以通过复用相同构建代码来构建不同产品变体。通过修改具体生成器实现,可以创建具有不同属性或配置不同产品。这样可以减少重复代码编写,提高代码重用性。...## 适用场景 - 构建复杂对象需要构建对象具有复杂内部结构,包含多个部件或属性,并且构建过程需要一定顺序和步骤,生成器模式非常适用。

18620

什么是面向对象编程?OOP 深入解释

它用于将软件程序构建为简单、可重用代码蓝图(通常称为类),用于创建对象各个实例。有许多面向对象编程语言,包括 JavaScript、C++ 、Java和Python。...类通常表示广泛类别,例如Car或Dog共享属性。这些类定义此类型实例具有哪些属性,例如color,但不定义特定对象这些属性。 类还可以包含称为方法函数,这些函数仅适用于该类型对象。...这些代表抽象类具体示例,例如myCar或goldenRetriever。每个对象可以具有类中定义属性唯一。...然后我们可以设置类中定义属性来描述我车,而不影响其他对象或类模板。 然后我们可以重用这个类来表示任意数量汽车。...该方法代码在类定义中定义。 实例化单个对象,这些对象可以调用类中定义方法。在下面的代码片段中,bark方法是在Dog类中定义,bark()方法是在Rufus对象上调用

66010

「JAVA」面向对象三大特征:封装、继承、多态,以高内聚、低耦合为目标

继承优点: 有效解决了代码重用问题,使代码拓展更加灵活; 通过从继承关系,可以从始至终完整体现出一个应用体系,逻辑更加清晰; 一般在开发中是先有多个自定义类,再从多个类中写共同代码,抽象生成一个父类...this主要存在于两个位置: 构造中:就表示当前正在创建对象 方法中:表示方法调用者对象 一个对象创建之后,JVM会为对象分配一个引用该对象自身引用:this。...在子类初始化过程中会创建子类对象,但在创建子类对象之前,会先创建父类对象;也就是说调用子类构造之前,在子类构造中会先调用父类构造,如果没有显式调用父类构造,那么默认情况下会隐式调用父类无参数构造...toString():表示把一个对象转换为字符串,打印对象,调用就是对象toString方法,默认情况下打印对象十六进制hashCode。...语法格式如下: boolean b = 对象A instanceof 类B; // 判断 A对象是否是 B类实例,如果是,返回true. instanceof运算符: 若对象是类实例返回true。

1K40

ASP.NET Core 中内存管理和垃圾回收 (GC)

例如,在 Web 请求存在期间引用对象生存期较短。 应用程序级别单一实例通常会迁移到第 2 代。 ASP.NET Core 应用启动,GC 会: 为初始堆段保留一些内存。...在调查内存泄漏非常有用。 在进行调查时会验证 GC 是否从内存中删除了所有无关联对象,以便可以度量内存。...实例: 在由 GCCollectionMode 指定时间,强制对 0 代到指定代进行垃圾回收,另有数值指定回收是否应该为阻碍性。...上面的示例演示了如何将 HttpClient 实例设为静态,并由所有请求重用重用可防止资源耗尽。 对象对象池: 使用重用模式。 适用于创建成本高昂对象。...可以使用 ArrayPool 创建 byte 缓冲区池,从而优化上面的代码。 静态实例可在请求间重用。 此方法不同之处在于,会从 API 返回共用对象

30930

ASP.NET Core 中内存管理和垃圾回收 (GC)

例如,在 Web 请求存在期间引用对象生存期较短。 应用程序级别单一实例通常会迁移到第 2 代。 ASP.NET Core 应用启动,GC 会: 为初始堆段保留一些内存。...在调查内存泄漏非常有用。 在进行调查时会验证 GC 是否从内存中删除了所有无关联对象,以便可以度量内存。...实例: 在由 GCCollectionMode 指定时间,强制对 0 代到指定代进行垃圾回收,另有数值指定回收是否应该为阻碍性。...上面的示例演示了如何将 HttpClient 实例设为静态,并由所有请求重用重用可防止资源耗尽。 对象对象池: 使用重用模式。 适用于创建成本高昂对象。...可以使用 ArrayPool 创建 byte 缓冲区池,从而优化上面的代码。 静态实例可在请求间重用。 此方法不同之处在于,会从 API 返回共用对象

39720

把 React 作为 UI 运行时来使用

这样一来输入框中状态就不会丢失了。 列表 比较树中同一位置元素类型对于是否重用还是重建相应宿主实例往往已经足够。 但这只适用于子元素是静止并且不会重排序情况。...这就是为什么每次输出中包含元素数组,React 都会让你指定一个叫做 key 属性: ? key 给予 React 判断子元素是否真正相同能力,即使在渲染前后它在父元素中位置不是相同。...即使 中子元素们改变位置后,这个方法同样有效。在渲染前后 key 仍然相同时,React 会重用先前宿主实例,然后重新排序其兄弟元素。...深度和广度达到一定程度,你可以让 React 去缓存【https://en.wikipedia.org/wiki/Memoization】子树并且重用先前渲染结果 prop 在浅比较之后是相同时...它就像 “updater” 升级模式在这里你可以给每一次更新命名: ? action 字段可以是任意,尽管对象是常用选择。

2.5K40

c#面试题抽象类和接口区别-金三银四面试:C#程序员经常遇到30道基础面试题,想你所想

方法参数上out方法参数关键字使方法引用传递到方法同一个变量。控制传递回调用方法,在方法中对参数所做任何更改都将反映在该变量中。   希望方法返回多个,声明out方法非常有用。...您可以创建类型实例,将它们作为参数传递,将它们存储为局部变量,或将它们存储在另一类型或对象字段中。类型没有与存储类实例相关系统开销,并且它们不需要构造函数。类型可以有字段、属性和事件。...尽管不能从一种类型派生出另一种类型,但是所用语言处理虚方法比处理非虚方法或静态方法更方便可以类型定义虚方法。   引用类型变量又称为对象,可存储对实际数据引用。...“多态性”指定义具有功能不同但名称相同方法或属性多个能力,这些类可由客户端代码在运行时交换使用。也就是由重载和重写实现多态。重载一般是同一类中一组同名方法,但签名。...反射提供了访问程序集、模块和类型信息一种机制。您可以使用反射动态创建类型实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型方法或访问其字段和属性。

1.9K20

【深入浅出C#】章节 4: 面向对象编程基础:封装、继承和多态

代码复用:封装可以将一组相关数据和操作封装为一个类,这样可以实现代码复用。其他对象可以通过创建该类实例来获取相同功能和行为,避免重复编写相似的代码。...属性访问和赋值: 使用属性可以像访问字段一样使用点.运算符来获取和设置属性。例如,对象.属性名称可以获取属性对象.属性名称 = 可以设置属性。...方法调用: 使用方法可以通过方法名称和参数列表来调用方法,并获取方法返回(如果有)。方法调用可以通过对象或类名进行,具体取决于方法是实例方法还是静态方法。...方法重载指在同一个类中定义多个具有相同名称但参数列表不同方法。...这两个方法具有相同名称但参数列表不同,这就是方法重载。在 Main 方法中,创建了一个 Calculator 类实例 calculator。

49730

Effective Java(一)

为了创建对象,必须先创建构建。虽然创建这个构建开销在实践中可能不那么明显,但是在某些十分注重性能情况下,可能就成问题了。...简而言之,如果类构造或者静态工厂中具有多个参数,设计这种类,Builder模式就是一种不错选择,特别是大多数参数都是可选或者类型相同时候。...满足该需求最简单模式是,创建一个新实例,就将该资源传到构造中。...避免创建不必要对象 一般来说,最好能重用单个对象,而不是在每次需要时候就创建一个相同功能对象重用方式既快速,又流行。如果对象是不可变(immutable),它就始终可以重用。...而且,它可以保证,对于所有在同一台虚拟机中运行代码,只要它们包含相同字符串字面常量,该对象就会被重用

64910

Flink DataSet编程指南-demo演示及注意事项

用于比较字段必须是有效关键字段,即可比较。如果多个元组具有最小(最大)字段,则返回这些元组任意元组。MinBy(MaxBy)可以应用于完整数据集或分组数据集。...我们将用户函数发出对象引用到运行时作为输出对象。 FlinkDataSet API具有两种不同Flink runtime 创建重用输入对象模式。...2,启用对象重用对象重用启用模式下,Flinkruntime 最小化对象实例数量。这可以提高性能并可以减少Java垃圾收集压力。...从Iterable参数读取输入对象 从Iterable接收输入对象只有在调用next()方法之前才有效。一个Iterable或Iterator可以多次服务于相同对象实例。...读取输出对象 给予收集或作为方法结果返回对象可能会更改其。 读取输出对象是不安全。 修改输出对象可以修改输出对象并再次发出。

10.7K120

猫眼 面经和答案

要判断一个元素是否存在,布隆过滤器会对该元素进行相同哈希映射,然后查看对应位置是否都为1,若都为1,则认为元素存在于集合中,若存在任一位为0,则认为元素不存在于集合中。...布隆过滤器缺点包括: 存在一定误判率:由于多个元素可能映射到同一个位,所以判断一个元素是否存在,存在一定误判率,即可能将不存在元素误判为存在。...在Spring中,解决循环依赖是通过使用三级缓存(三个map)来实现。具体原理如下: 创建对象A,首先会检查A是否在一级缓存中,如果在则直接返回A实例。...在创建A对象过程中,如果发现A依赖于B,那么Spring会先去创建B对象创建B对象,同样会检查B是否在一级缓存中,如果在则直接返回B实例。...发生哈希冲突,即不同键映射到了相同哈希桶位置,HashMap会在该位置上维护一个链表或红黑树(JDK8之后),将具有相同哈希键值对存储在同一个桶中。

16210

本体入门(一):本体构建 101

第二步 考虑重用现有的本体 在从头开始构建本体之前,最好先调研是否有相关本体已经被构建出来了。我们可以基于这些本体进行进一步改进和扩展。...4.4 什么时候创建类 一般来说,如果子类包含超类所不具有的特征可以考虑创建,包括: 有额外属性 属性有不同限制 参与了和超类不同关系 在实际应用中,子类通常具有新属性,或新属性,抑或新属性限制...领域专家普遍认为应该将某些概念与现有本体进行区分时,也需要为这些概念创建类。 最后,我们不应该为每种额外限制都构建子类,需要在创建有用新类和创建过多类中间保持平衡。...定义了转置关系后,知识系统会根据一个自动填充另一个: ? 5.2 默认 大部分系统允许为属性指定默认。如果一个类大部分实例具有相同某个属性,则我们可以将其设置为默认。...在制定命名规范,我们需要明确系统特征,例如: 对于类、属性和实例是否共享命名空间(即是否可以使用相同名称) 是否大小写敏感 名字中允许哪些分隔符 6.1 大小写与分隔符 对于一个本体中命名,保持同样大小写习惯可以提升其可读性

2.2K31
领券