1. 编程语言类型:首先,Python、C/C++、Java 都是强类型的编程语言。强类型的编程语言定义如下: 强类型的编程语言是一种强制类型定义的编程语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型的编程语言是一种弱类型定义的编程语言,某一个变量被定义类型,该 ...
微服务架构是一种软件开发模式,它将一个复杂的应用程序拆分为多个个独立的、小型的、可复用的服务,每个服务负责一个特定的业务功能。 微服务架构有许多优点,例如提高系统的可扩展性、可维护性、可测试性和故障容忍性。 但是,微服务架构也有很多问题需要注意,例如如何设计合理的划分服务接口、如何在服务间实现高效通 ...
要研究类加载过程,我们先要知道关于 Java 处理代码的流程是怎么样的。 第一步:编写源代码 这一步是我们最熟悉的,就是我们在 idea 上写的业务代码,生成 Example.java 文件。 public class Example { public static void main(String ...
落地DDD是一件很困难的事情。首先在思想认知层面就比较难以突破。这篇文章记录我对DDD的学习、感悟与项目工程代码重构实战心得! ...
一、定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。备忘录模式是一种对象行为型模式,其别名为标记(Token)模式。 二、描述 备忘录模式的核心在于备忘录类以及用于管理备忘录的负责人类的设计,包含以下三个角色: 1、Orig ...
1. 可演进的API 1.1. 随着需求的变化,你需要改变你的API,即代码之间的共享接口 1.2. 改变API很容易,但很难做到正确 1.3. 保持API小巧 1.3.1. 小巧的API更易于理解和演进 1.3.2. 只添加即刻需要的API方法或字段 1.3.3. 带有许多字段的API方法应该有合 ...
1. 行为准则 2. 需求的不确定性 2.1. 不断变化的客户需求 2.2. 软件项目无法避免的挑战 2.3. 产品需求和环境会随着时间的推移而改变,你的应用程序也必须随之改变 2.4. 不断变化的需求会导致不稳定性,使开发工作偏离轨道 2.5. 通过构建可演进的架构来适应不断变化的需求 2.5.1 ...
一、定义 义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。 二、描述 在中介者模式中,引入了用于协调其他对象/类之间的相互调用的中介者类,为了让系统具有更好的灵活 ...
面向对象编程是一种强大而灵活的编程范式,它可以帮助我们更好地组织和管理代码,提高代码的可读性和可维护性,这使得它特别适合用在大型工程项目中。然而,我们也需要注意其可能带来的问题,尤其是在并发和复杂系统中。 ...
本文重点为管道模式的抽象与应用,上述示例仅为个人理解。实际应用中,此案例长于应对各种规则冗杂的业务场景,便于规则编排。 ...
一、定义 提供一种方法顺序访问一个聚合对象中的各个元素,且不用暴露该对象的内部表示。迭代器模式是一种对象行为型模式,又称为游标(Cursor)模式。 二、描述 在软件系统中,聚合对象拥有两个职责:一是存储数据,二是遍历数据。从依赖性来看,前者是聚合对象的基本职责,而后者既是可变化的,又是可分离的。因 ...
前言 这是第三次博客作业,总结了近三次PTA大作业的完成情况,作业7、8次的大作业的小题目围绕着HashMap、ArrayList和自定义接口来展开,大题目则是课程成绩程序的第二次第三次迭代,因为第一次课程成绩的程序写的结构不太好,于是重新写的,第三次迭代并没有拿到满分,后面也没有时间改了。期末考试 ...
一、前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐;4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另外,一般来讲,在同配置下,kafka的读性能是要优于写性能的,写操作时,数据要从网卡拷贝至堆内存,然 ...
2.7Python(目前ArcGIS使用)代码转化为3.5Python(目前ArcGIS Pro使用)代码 Analyze Tools For Pro (2to3命令) 基本操作 调用ArcToolbox的两种形式 #arcpy.ToolboxAlias.ToolName() #arcpy.Tool ...
我们有时候也会看到一些博客看到或者听到一些同事在说:这个业务有什么难的,不就是CRUD么?在软件生命周期初期,我们通过CRUD这种方式我们可以快速的实现业务规则,交付项目,但随着业务逐渐复杂,通过CRUD这种粗暴方式不可避免地会淹没业务核心规则,产生很多祖传(屎山)代码,系统交接的时候我们经常会听到... ...
概述 随着科技的进步,软件系统的部署架构也在不断演进,从以前传统的物理机到虚拟机、Docker和Kubernetes,我们经历了一系列变化。 这些技术的引入给我们带来了更高的资源利用率、更快的部署速度和更强大的扩展性,下面让我们一起探索这些演进,了解如何从传统部署走向现代化架构,为软件系统的开发和部 ...
这是一本比较冷门的书《设计规则:模块化的力量》,虽然豆瓣上只有58个评价,但是确实能学到很多东西。 这本书对我非常深远。不是是投资,创业,还是其他领域,模块化思想都能帮上你。这本书告诉我们生万物的规则。 书籍电子版PDF(建议及时保存,避免被和谐):https://pan.quark.cn/s/aa ...
Batrix企业能力库,是京东物流战略级项目-技术中台架构升级项目的基础底座。致力于建立企业级业务复用能力平台,依托能力复用业务框架Batrix,通过通用能力/扩展能力的定义及复用,灵活支持业务差异化场景的快速能力编排组装,从而通过技术驱动的方式助力业务整体交付吞吐率。本文重点为大家介绍交易域如何使... ...
一、定义 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种行为型模式。 二、描述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它主要用于描述如何使用面向对象语言构成一个简单的语言解释器,包含以下四个角色: 1、Ab ...
推荐一本日本网友Kenji Hiranabe写的《线性代数的艺术》。这本书是基于MIT大牛Gilbert Strang教授的《每个人的线性代数》制作的。 虽然《线性代数的艺术》这本书仅仅只有12页的内容,就把线性代数的重点全画完了,清晰明了。 《线性代数的艺术》PDF版本:https://pan.q ...