工程总结 – 配置管理
最佳实践 基于字符串的 KV 对即可,避免潜在的序列化和转义问题 不要整形、浮点等其他类型,布尔值用 0 和 1 表示; 若需要对象、字典、列表等复杂层次结构,应该使用 JSON ,或约定格式 一般语言内置的配置对象已够用,如 Java 的 Properties 等; 如果有复杂操作,上策开发静态工具类,下策新开或拓展配置对象 若要考虑可读性和可编辑性,可以考虑 XML 和 YAML 尽量避免涉及
最佳实践 基于字符串的 KV 对即可,避免潜在的序列化和转义问题 不要整形、浮点等其他类型,布尔值用 0 和 1 表示; 若需要对象、字典、列表等复杂层次结构,应该使用 JSON ,或约定格式 一般语言内置的配置对象已够用,如 Java 的 Properties 等; 如果有复杂操作,上策开发静态工具类,下策新开或拓展配置对象 若要考虑可读性和可编辑性,可以考虑 XML 和 YAML 尽量避免涉及
工作流引擎 Activiti 特点:是一个轻量级、开源的工作流引擎,基于Java开发。它提供了丰富的BPMN 2.0支持,能够方便地设计、执行和管理业务流程。Activiti的流程定义以XML文件形式存储,易于理解和维护。同时,它具有良好的扩展性,可与Spring等框架集成。 应用场景:适用于各种企业级业务流程管理,如请假流程、采购审批流程等。例如,在一个企业的报销流程中,可以使用Activiti
在编程开发中,对象拷贝通常有两种方式:浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。 浅拷贝 浅拷贝创建一个新的对象,该对象的内容是原对象元素的引用。这意味着如果原对象中的元素是可变的,修改新对象中的元素会影响原对象,反之亦然。 深拷贝 深拷贝创建一个新的对象,并递归地复制原对象及其所有嵌套的对象。这意味着新对象和原对象完全独立,修改一个对象不会影响另一个对象。 Java示例
消息队列传递形式 点对点(Point – to – Point, P2P) 特点:消息生产者发送消息到一个特定的队列,一个消费者从队列中获取消息。消息一旦被消费,就会从队列中移除。这种模式下,队列就像一个信箱,每个消息只被一个消费者处理,适合任务分发且只需要一个执行者的场景。 示例场景:订单处理系统中,订单消息发送到订单处理队列,一个订单处理服务从队列中获取订单并进行处理。
负载均衡 HTTP 重定向 DNS 域名解析 反向代理 IP 层负载均衡 链路层负载均衡 调度算法 RR 轮询 WR 轮询 SH 源地址 Hash DH 目的地址 Hash LC 最少链接 WLC 最少链接 SED 最短期望延迟 NG 永不排队 LBLC 基于局部性的最小连接 LBLCR 带复制的基于局部性的最小连接 转发模型 NAT DR TUN 会话管理 Session Sticky Sess
Python Python2 import sys i = sys.maxint Python3 import sys max = sys.maxsize min = -sys.maxsize -1 Scala 转为整数 .toInt JS 日期转换 (new Date(t_when.replace(/-/g,"/"))).getTime().toString() Date.p
集合运算 并(∪):两个关系需有相同的关系模式,并的对象是元组,由两个关系所有元组构成。 R∪S≡{ t | t∈R ∨ t∈S } 差(-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S的元组构成的集合。 R-S≡{ t | t∈R ∧ t∉S } 笛卡尔积(×):对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。 R×S≡{ t | t =<tr,ts
图 Q: 判断有向图是否存在回路,可以用哪些方法?。 A: 拓扑排序: 还有顶点未输出,但已经不存在没有前驱的顶点了。 拓扑排序,是对有向无回路图进行排序,以期找到一个线性序列,这个线性序列在生活正可以表示某些事情完成的相应顺序。如果说所求的图有回路的话,则不可能找到这个序列。 深度优先:从一个顶点出发存在搜回到自己的路径。 链表 Q: 如何在一个长度未知的单链表中快速找出位于中间的那个元素 A:
常见总线组件 的 EventBus <dependency> <groupId>com.today</groupId> <artifactId>event-bus_2.12</artifactId> <version>0.1-SNAPSHOT</version> </dependency> 常见问题及处