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

关于重构的总结

当事情被认为应该出错,别忘了检查是否抛出了预期的异常 不要因为测试无法捕捉所有的bug就不写测试,因为测试的确可以捕捉到大多数bug 代码的坏味道 名称 备注 重复代码 同一个类的两个函数有相同表达式...一个类有太多行为,或与另一个类有太多合作形成高度耦合时 搬移字段字段迁移到目标类,将源字段所有引用都改用为目标类的新字段 在其所驻之类之外的另一个类更多的使用到该字段 提炼类 建立新类,将相关的字段和函数迁移到新类...给对象增加一些可修改数据,确保对任何一个对象的修改都能影响到所有的引用此对象的地方 将引用对象改为对象 将它变成一个对象 一个引用对象很小且不可变且不易管理 以对象取代数组 已对象替换数组,...GUI控件,而领域对象函数需要访问这些数据 将单向关联改为双向关联 添加一个反向指针,使修改函数同时更新两条连接 两个类都需要使用到对方特性 将双向关联改为单向关联 去除不必要的关联 双向关联的类变成单向依赖...,直接调用前一个函数 一个函数的返回作为另一个函数的参数,且另一函数能调用该函数 引入参数对象 以一个对象取代这些参数 某些参数总是很自然地同时出现时 移除设函数 去掉该字段的所有设函数 类某个字段应该在该对象创建被设

96610

没有 SPN 的 Kerberoasting

只有在目标帐户的 Active Directory 设置了 DONT_REQ_PREAUTH 标志,它才会成功。...它依赖于有意为您在 AD 控制的帐户设置 DONT_REQ_PREAUTH 标志获取其$krb5asrep$ 哈希。...TGS请求 TGS-REQ 包含票证请求的服务主体名称、TGT 和使用 TGT 会话密钥加密包含当前时间戳的结构: TGS-REQ 数据包的内容 (#11) KDC 收到 TGS-REQ ,它会解密...探索主体名称的格式 让我们检查之前收集的 AS-REQ 数据包的主体名称: Kerberos 流量主体名称的示例 客户端主体名称在 cname 字段传递,服务主体名称在 sname 字段中发送。...使用不正确 SPN 的 Kerberoasting 帐户 KDC 禁止退票的 SPN 有两种类型: 错误的语法 SPN 重复的 SPN,即相同的 SPN 分配给多个帐户 如果 KDC 发现其中之一是这种情况

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

Activiti工作流框架学习笔记(一)之通用数据表详细介绍

一.数据库表名称说明 Activiti的数据库表分5大部分,名称以ACT开头,第二部分是表用例的两个字符的标志,该用例与服务API的大致匹配: ?...next.dbid:属性为1,表示Activiti数据库表ID生成,当前ID块最大为1(即数据库里还没有任何数据)。...schema.history:属性表示数据表结构更新历史,例如—— ? create(5.22.0.0)即表示使用了5.22版本的初始化脚本创建。...4.1.ACD_ID_USER用户表 流程引擎用户的信息被保存在ACT_ID_USER表,该表有以下字段: ?...5.5.ACT_RU_JOB工作数据表 在流程执行的过程,会有一些工作需要定时或者重复执行,这类工作数据被保存到ACT_RU_JOB表。 ?

2.6K30

Git 中文参考(八)

--chmod=(+|-)x 设置更新文件的执行权限。 --[no-]assume-unchanged 指定此标志,不会更新为路径记录的对象名称。...--replace 默认情况下,索引存在文件path, git update-index 拒绝添加path/file的尝试。同样,如果存在文件path/file,则无法添加文件path。...但是更改违反配置时会发出警告,因为配置的将在下次读取索引生效,这将消除该选项的预期效果。 -- 不要将任何更多的参数解释为选项。 要采取行动的文件。...引用包含空格的字段,就好像它们是 C 源代码的字符串一样;即,被双引号包围带有反斜杠逃逸。使用 40“0”字符或空字符串指定零。要指定缺失,请完全省略该及其前面的 SP。...无论使用哪种格式,都可以以 Git 识别为对象名称任何形式指定任何其他格式的命令或重复的产生错误。

10910

Python 高级笔记第二部分:数据库的概述和MySQL数据表操作

注意: 聚合分组的 select 后只能写聚合函数,无法查找其他字段,除非该字段全都一样....但是会占用数据库物理存储空间,对表数据更新,索引需要动态维护,降低数据写入效率。...(UNI):字段不允许重复,但可为 NULL,KEY标志为 UNI 主键索引(PRI):一个表只能有一个主键字段, 主键字段不允许重复,且不能为NULL,KEY标志为PRI。...✨级联动作:on delete / on update restrict(默认) : 主表删除或修改记录,如果从表中有相关联记录则不允许主表变动 cascade :主表删除记录或更改被参照字段...,从表会级联更新 set null:主表记录变动,从表外键字段变为null no action:不进行级联操作 ⭐️表关联关系 当我们应对复杂的数据关系的时候,数据表的设计就显得尤为重要,认识数据之间的依赖关系是更加合理创建数据表关联性的前提

1.7K20

MySQL数据索引与优化

更新操作远大于select操作,不建议添加索引。 索引底层数据结构了解 数据组织方面 选择树形存储 基础数据结构,hash时间复杂度(O(1))但支持顺序查找困难。...每个元素不保存数据,只保存索引即主键。 所有叶子节点形成一个有序链表。 ?...因为非终结点只是关键字的索引,所以任何关键字的查找必须走一条根到叶子的路。 B+树中叶子结点也形成一个链表,所以B+树在面对范围查询比B树更加高效。...前缀索引查询(注意选择性把握) 选择性指不重复的索引和数据表的记录总数的比值。选择性最高,即所有键不重复选择性为1。...使用索引查询数据,索引节点和数据被一起载入内存,不需要根据指针再进行一次IO读取。 无需维护辅助索引。出现数据页分裂,无需更新索引的数据块指针。 非聚簇索引图: ?

98151

《深入理解Java虚拟机》读书笔记(五)–类文件结构

如果多个标志同时存在,那么使用按位或(|)运算组合,判断标志,使用按位与(&),判断结果是否大于0即可。...修饰符 字段数据类型:基本类型、对象、数组 字段名称 上述信息,各个修饰符都是布尔,要么有某个修饰符,要么没有,很适合用标志位来表示,参考前面的访问标记。...而字段名称字段数据类型都是无法固定的,只能引用常量池中的常量来描述。...属性表集合没有那么严格的限制,只要不与已有属性名重复任何人实现的编译器都可以向属性表写入自己定义的属性信息,Java虚拟机运行时会忽略掉它不认识的属性。...如果没有该属性,对程序产生的主要影响就是抛出异常,堆栈中就不会显示出错的行号,并且在调试程序的时候也无法按照源码行来设置断点。

42650

Go命令官方指南【原译】

获取签出或更新Git存储库,它还会更新存储库引用的任何git子模块。 永远不会检出或更新存储在供应商目录的代码。 有关指定包的更多信息,请参阅“go help packages”。...它在深度优先的后序遍历访问它们,以便仅在所有依赖项之后列出包。未在命令行明确列出的包将DepOnly字段设置为true。 -e标志更改错误包的处理,无法找到或错误的包。...请注意,更换模块后,其“替换”字段描述替换模块,其“目录”字段设置为替换的源代码(如果存在)。(也就是说,如果Replace为非nil,则Dir设置为Replace.Dir,无法访问替换的源代码。)...-u标志添加有关可用升级的信息。给定模块的最新版本比当前模块更新,列表-u将Module的Update字段设置为有关较新模块的信息。...'go test'在包列表模式下运行时,'go test'会缓存成功的包测试结果,以避免不必要的重复运行测试。要禁用测试缓存,请使用除可缓存标志之外的任何测试标志或参数。

8K30

给女同事讲解MySQL数据库设计范式与反范式,她夸我“技术好”

1 第一范式 该范式是为了排除 重复组 的出现,因此要求数据库的每个列的值域都由原子组成;每个字段都只能是单一。1971年埃德加·科德提出了第一范式。即表中所有字段都是不可再分的。...1.2 解决方案 想要消除重复组的话,只要把每笔记录都转化为单一记录即可: 简单改动即可 即标准的二维表结构。...3.2 解决方案 将不与PK形成依赖关系的字段直接提出单独成表即可: 4 三范式评价 优点 范式化的更新通常比反范式快 数据较好的范式化后,很少或者没有冗余数据 范式化的数据比较小,放在内存操作较快...缺点 存在大量冗余数据 数据维护成本更高(删除异常,插入异常,更新异常) 在企业很好能做到严格意义上的范式成者反范式,一般需混合使用。...如果需要显示每个用户发了多少消息(类似论坛),可以每次执行一个昂贵的子查询来计算显示它;也可以在user表建个num_messages列,每当用户发新消息更新这个

58842

NumPy 1.26 中文文档(四十五)

这些元组根据名称(如果给定还有标题)放置在此字典。 *names 字段名称的有序元组。如果未定义字段,则为 NULL。 *f 指向一个包含类型需要实现内部特性的函数的结构体的指针。... nd 为 0 ,该数组有时被称为 0 阶数组。这样的数组具有未定义的维度和跨度,无法访问。宏 PyArray_NDIM 在 ndarraytypes.h 定义,指向这个数据成员。...这些元组被放在此字典,以名称(如果给定也是标题)为键。 *names 字段名称的有序元组。如果未定义字段,则为 NULL。 *f 指向包含类型需要实现内部功能的函数的结构的指针。... nd 为 0 ,有时称该数组为秩为 0 的数组。这样的数组具有未定义的维度和步幅,并且无法访问。宏 PyArray_NDIM 在 ndarraytypes.h 定义,指向此数据成员。...这些元组被放置在此字典,键为名称(如果给定也是标题)。 *names 一个有序的字段名称元组。如果未定义字段,则为 NULL。 *f 指向包含类型需要实现内部功能的函数的结构体指针。

3410

Class 类文件结构

遇到需要占用8位字节以上空间的数据项,则会按照高位在前的方式分割成若干个8位字节进行存储。...而这里的最大长度就是 length的最大,即u2类型能表达的最大65535。所以 Java程序如果定义了超过 64KB英文字符的变量或方法名,将会无法编译。...上述信息字段修饰符可以使用布尔类型表示,要么有要么没有。而字段名称无法固定的,只能引用常量池中的常量来描述。...Class 文件存储格式对方法的描述与对字段的描述几乎采用了完全一致的方式。方法表的结构如同字段表一样,依次包括了访问标志名称索引、描述符索引、属性表集合几项。...与 Class 文件其它的数据项目要求的顺序、长度和内容不同,属性表集合的限制稍微宽松一些,不再要求各个属性表具有严格的顺序,并且只要不与已有的属性名重复任何人实现的编译器都可以向属性表写入自己定义的属性信息

85320

SQL定义表(二)

递增的记录在已插入或更新的行的ROWVERSION字段名称空间可以包含具有RowVersion字段的表和不具有该字段的表。...对该表的任何后续插入或更新都会为该行的RowVersion字段分配一个顺序整数。该字段是只读的;尝试修改RowVersion会生成SQLCODE -138错误:无法为只读字段插入/更新。...每个串行计数器字段都维护自己的独立计数器。每当将一行插入表,串行计数器字段都会从其自动增量计数器接收一个正整数,该行没有提供任何(NULL)或为0。...每个表只能指定一个%AutoIncrement数据类型字段。每当将一行插入表,此字段都会从自动增量计数器接收一个正整数,该行没有提供任何(NULL)或为0。...这些类在InterSystems IRIS数据库中保存编译,它们会自动投影到与类定义相对应的关系表:每个类代表一个表;每个类代表一个表。每个属性代表一列,依此类推。

1.5K10

springboot第71集:字节跳动全栈一面经,一文让你走出微服务迷雾架构周刊

你可以在 node_modules/@toast-ui/chart/dist 目录下查找此文件,确认文件是否存在。 路径错误:检查文件路径是否正确。有时候可能是包更新后目录结构发生了变化。...详细描述和用途 **checkTableExist**: 此标志可用于检查主表或主要表在应用程序数据库存在。...在执行任何CRUD(创建、读取、更新、删除)操作之前,应用程序可能会检查此标志以确保表可用。 **checkBackupTableExist**: 这个变量可能用于验证备份表的存在。...在记录任何数据之前,应用程序将通过检查这个标志来确保日志表存在。 主键组成: 分区键:(accountId, day) 的组合形成复合分区键。这意味着数据根据这两个字段被分区分布在集群。...它提供了一种与Elasticsearch集群通信对数据执行索引、搜索、更新和删除操作的直接方式。

9810

八股文!!

任何一个路由器发生故障都会有问题 面向无连接:IP发包前不需要建立连接,即使接收方不存在也会直接发包。...快速重传 接收端按序接收报文,收到一个失序报文段,需要产生一个重复的确认报文,这个确认报文不该被延迟 发送端收到重复的确认报文无法判断重复确认是因为报文乱序到达还是报文丢失,因此等待少量重复的确认报文到来...有错乱分组到达不应延迟确认需要及时回复重复确认 收到一个重复确认意味着一个数据包到达目的主机 rto超时的拥塞避免 初始:cwnd = 1 ,ssthresh = 65535 超时时:ssthresh...增长 MSS的 重复确认的拥塞避免 初始:cwnd = 1 ,ssthresh = 65535 三次重复确认:ssthresh = cwnd/2 cwnd = cwnd + 3 * MSS 每次收到一个重复确认...机器崩溃 机器崩溃,tcp内核模块无法做出反应,对端不会接收到任何通知也不会再接收到任何数据 另一端read该套接字,将会被挂起或得到EAGAIN错误 另一端write该套接字将会持续重传,直到

94811

【MySQL】MySQL知识总结

对于任何想要使用 AUTO_INCREMENT 的列,应该定义为 NOT NULL,定义为 PRIMARY KEY 或定义为 UNIQUE 键(不能有重复的)。...(可以为空也就是没有设置非空约束) 设置表字段唯一约束(UNIQUE,UK) 数据库表某个字段上的内容不允许重复,可以使用UK约束进行设置。...UK约束在创建数据库为某些字段加上“UNIQUE”约束条件,保证所有记录字段上的重复。如果在用户插入的记录字段上的与其他记录字段上的重复,那么数据库管理系统会报错。...---- 设置表字段的默认(DEFAULT) 为数据库表插入一条新记录,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认。...更新的数据记录 (更新就是修改) 更新数据记录是数据操作中常见的操作,可以更新已经存在数据记录

7.1K52

定义和构建索引(四)

定义和构建索引(四) 位片索引 数字数据字段用于某些数值运算,位片索引用于该字段。位片索引将每个数值数据表示为二进制位串。...位片索引不是使用布尔标志来索引数值数据(如在位图索引那样),而是以二进制表示每个,并为二进制的每个数字创建一个位图,以记录哪些行的该二进制数字具有1。...(Salary) FROM SalesPerson WHERE Region=2 但是,索引无法满足WHERE条件,不使用位片索引,而必须通过读取包含要聚合的字段的表来执行。...这将显示当前名称空间中的模式列表,其中带有布尔标志,指示是否有任何表或视图与每个模式相关联。 从此列表中选择一个架构;该架构将显示在架构框。...该区分大小写。 第二个参数是SQL索引映射名称。这通常是索引的名称,指的是磁盘上存储索引的名称。对于新索引,这是在创建索引将使用的名称。该不区分大小写。

75030

RefactoringGuru 代码异味和重构技巧总结

内联函数 问题:方法主体比方法本身更明显,请使用此技巧。 解决方案:用方法的内容替换对方法的调用,删除方法本身。 提取变量 问题:你的表达式很难理解。...提取类 问题:一个类做两个类的工作,会非常笨拙。 解决方案:相反,创建一个新类,并将负责相关功能的字段和方法放在其中。...解决方案:删除这些方法,强制客户端直接调用最终方法。 引入外部方法 问题:实用程序类不包含所需的方法,并且无法将该方法添加到该类。...移除设置方法 问题:字段应该只在创建设置,之后任何时候都不能更改。 解决方案:删除设置字段的方法。 隐藏方法 问题:一个方法不被其他类使用,或者只在它自己的类层次结构中使用。...形成模板方法 问题:你的子类实现的算法包含顺序相同的类似步骤。 解决方案:将算法结构和相同的步骤移动到一个超类,并将不同步骤的实现留在子类

1.8K40

top命令

-d interval: 指定屏幕更新之间的延迟,覆盖个人配置文件的相应或启动默认,启动后也可以使用d或s交互命令更改。...-i: 空闲进程切换,以倒转最后一个记忆的i状态开始,关闭此切换,将不显示自上次更新以来未使用任何CPU的任务。 -n limit: 指定top在结束前应产生的最大迭代次数或帧数。...、拒绝、优先排序、管理和监视进行细粒度控制,一个系统上可以同时存在许多不同的cgroup层次结构,并且每个层次结构都连接到一个或多个子系统,子系统表示单个资源,注意: CGROUPS字段与大多数列不同,...,您选择显示命令行时,没有命令行的进程(如内核线程)将只显示程序名,此字段也可能受视图显示模式的影响,注意COMMAND字段与大多数列不同,不是固定宽度的,显示,它加上任何其他可变宽度列将分配所有剩余屏幕宽度...NI: Nice Value,负的nice意味着更高的优先级,而正的nice意味着更低的优先级,此字段的零表示在确定任务的调度能力不会调整优先级。

2.3K10

大数据ETL开发之图解Kettle工具(入门到精通)

1.选择合适的数据库连接 2.选择目标表,目标表可以提前在数据库手动创建好,也可以输入一个数据库不存在的表,然后点击下面的SQL按钮,利用kettle现场创建 3.如果目标表的表结构和输入的数据结构不一致...,还可以自己指定数据库字段 3.2.5 更新&插入/更新 更新和插入/更新,这两个控件是kettle提供的将数据库已经存在的记录与数据流里面的记录进行对比的控件。...,生成新的字段 执行结果: 3.3.7 排序记录&去除重复记录 去除重复记录是去除数据流里面相同的数据行。...原始数据: 1.Key字段:行转列,生成的列名字段名 2.字段名称:原本数据流字段名 3.Key:Key字段,这个是自己自定义的,一般都跟前面的字段名称一样 4.Value字段:对应的...任务:利用合并记录控件比较合并记录-新旧excel的数据,预览数据,查看标志字段的内容 原始数据: 1.旧数据源:选择旧数据来源的步骤 2.新数据源:选择新数据来源的步骤 3.标志字段:设置标志字段名称

9.8K715

高效的数据压缩编码方式 Protobuf

默认字段规则 字段名不能重复,必须唯一。 repeated 字段:可以在一个 message 重复任何数字多次(包括 0 ),不过这些重复的顺序被保留。...枚举的保留 如果您通过完全删除枚举条目或将其注释掉来更新枚举类型,未来的用户可以在对该类型进行自己的更新重新使用数值。...例如,一个旧的二进制文件解析由新的二进制文件发送的新数据的数据,这些新的字段将成为旧的二进制文件的未知字段。...消息编码,键和被连接成一个字节流。消息被解码,解析器需要能够跳过它无法识别的字段。这样,可以将新字段添加到消息,而不会破坏不知道它们的旧程序。这就是所谓的 “向后”兼容性。... sint32 或 sint64 被解析,它的被解码回原始的带符号的版本。 3.

4.4K11
领券