面向状态机编程:复杂业务逻辑应对之道

在研发项目中,经常能遇到复杂的状态流转类的业务场景,比如游戏编程中NPC的跳跃、前进、转向等状态变化,电商领域订单的状态变化等。这类情况其实可以有一种优雅的实现方法:状态机。本文重点介绍有限状态机,并结合具体项目,通过状态机的应用将状态和业务逻辑解耦,便于简化复杂业务逻辑,降低理解成本。另外,重点讲解如何优雅的解决更广泛的复杂业务问题。

基于Kafka和Elasticsearch构建实时站内搜索功能的实践

目前我们在构建一个多租户多产品类网站,为了让用户更好的找到他们所需要的产品,我们需要构建站内搜索功能,并且它应该是实时更新的。本文将会讨论构建这一功能的核心基础设施,以及支持此搜索能力的技术栈。

并发编程-CompletableFuture解析

CompletableFuture对象是JDK1.8版本新引入的类,这个类实现了两个接口,一个是Future接口,一个是CompletionStage接口。

C++在HotSpot VM中一种巧妙的内存管理方式

在HotSpot VM中定义了一个Relocation类及相关的子类,可以通过这些类操作不同的重定位数据,如在CodeCache中读写这些数据。这些类需要的内存很小,但是不同的类需要的内存大小又不一样,所以做了如下的设计: #include #include "iostream"

【matplotlib 实战】--柱状图

柱状图,是一种使用矩形条,对不同类别进行数值比较的统计图表。在柱状图上,分类变量的每个实体都被表示为一个矩形(通俗讲即为“柱子”),而数值则决定了柱子的高度。 1. 主要元素 柱状图是一种用长方形柱子表示数据的图表。它包含三个主要元素: 横轴(x轴):表示数据的类别或时间。 纵轴(y轴):表示数据的

Python常见面试题017: Python中是否可以获取类的所有实例

017. Python中是否可以获取类的所有实例 转载请注明出处,https://www.cnblogs.com/wuxianfeng023 出处 https://docs.python.org/zh-cn/3.9/faq/programming.html#faq-multidimensional-

一篇带你了解如何使用纯前端类Excel表格构建现金流量表

现金流量表(Cash Flow Statement),是指反映企业在一定会计期间现金和现金等价物流入和流出的报表。现金流量表是企业财务报表的三个基本报告之一(另外两个是资产负债表和损益表)。 为了全面系统地揭示企业一定时期的财务状况、经营成果和现金流量,财务报表需按财政部会计准则的标准格式设计,因此

ES 实战复杂sql查询、修改字段类型

转载请注明出处: 1.查询索引得 mapping 与 setting get 直接查询 索引名称时,会返回 该 索引得 mapping 和 settings 得配置,上述返回得结构如下: { "terra-syslog_2023-07-12" : { "aliases" : { }, "mappin

GO 指针数据类型的使用

转载请注明出处: 在Go语言中,指针类型允许直接访问和修改某个变量的内存地址。通过使用指针,我们可以在函数之间共享数据或者在函数内部修改外部变量的值。 以下是关于Go语言指针类型的一些重要语法和示例: 定义指针变量: 使用*表示指针类型,并将其放置在变量类型前面。例如:var ptr *int声明了

JavaScript中的四种枚举方式

字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合。 一周的日子(星期一,星期二,...,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子。 当一个变量有一个来自有限的预定义常量的值时,使用枚举是很方便的。枚举使你不必使用魔法数字和字符串(这

装饰器模式:让你的对象变得更强大

在日常开发中,当需要给一个现有类添加附加职责,而又不能采用生成子类的方法进行扩充时。例如,该类被隐藏或者该类是终极类或者采用继承方式会产生大量的子类。这时候,我们该怎么办呢?我们可以使用装饰器器模式来解决这个问题,**本文将从以下四个方面讲解装饰器器模式**。 - 简介 - 优缺点 - 应用场景 -

详解Native Memory Tracking 追踪区域分析

摘要:本篇将介绍NMT追踪区域的部分内存类型——Java heap、Class、Thread、Code 以及 GC。 本文分享自华为云社区《Native Memory Tracking 详解(2):追踪区域分析(一)》,作者:毕昇小助手。 本篇将介绍NMT追踪区域的部分内存类型——Java heap

深度解析9种ScheduledThreadPoolExecutor的构造方法

摘要:今天我们就来一起手撕ScheduledThreadPoolExecutor类的源代码。 本文分享自华为云社区《深度解析ScheduledThreadPoolExecutor类的源代码》,作者:冰 河。 在之前的文章中,我们深度分析了ThreadPoolExecutor类的源代码,而Schedu

记一次多个Java Agent同时使用的类增强冲突问题及分析

摘要:Java Agent技术常被用于加载class文件之前进行拦截并修改字节码,以实现对Java应用的无侵入式增强。 本文分享自华为云社区《记一次多个JavaAgent同时使用的类增强冲突问题及分析》,作者:Vansittart。 问题背景 Java Agent技术常被用于加载class文件之前进

详解Native Memory Tracking之追踪区域分析

摘要:本篇图文将介绍追踪区域的内存类型以及 NMT 无法追踪的内存。 本文分享自华为云社区《【技术剖析】17. Native Memory Tracking 详解(3)追踪区域分析(二)》,作者:毕昇小助手。 Compiler Compiler 就是 JIT 编译器线程在编译 code 时本身所使用

5个高并发导致数仓资源类报错分析

摘要:集群运行过程中,有时候会执行并发量比较高的业务场景,一些数据库没有为这种高并发作业配置合适的参数,会导致作业大量报错,这篇文章让你玩转并发作业。 本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】在线运维 - 高并发导致资源类报错分析解决》,作者:323老四。 集群运行过程中,有

如何优雅的处理异常

Java 语言按照错误严重性,从 throwale 根类衍生出 Error 和 Exception 两大派系。本文从异常的定义、处理异常的方式、如何优雅的抛出异常以及处理异常等方面来聊聊如何异常这件事

Swift与OC混编

Swift调OC 在Swift项目中调用OC类中的方法需要有个{targetName}-Bridging-Header.h文件,在这个文件中导入OC要暴露给Swift的类。 {targetName}-Bridging-Header.h文件的创建有2种方式 1.自己手动创建,然后在配置文件的Objec

iOS测试包的安装方法

iOS测试包根据要安装的机器类型可以分为2种: .app模拟器测试包 .ipa真机测试包 .app模拟器测试包的安装方式 方式一:Xcode生成安装包 1.Xcode运行项目,生成app包 2.将APP包拖到模拟器中 方式二:IPA包下载得到安装包 1.将ipa包的后缀改成.zip, 然后解压 2.

iOS开发基础136-防暴力点击

要在Objective-C中创建一个高度可复用的工具类,以防止按钮的暴力点击,并且使用切面编程(AOP)的方式,我们可以考虑使用Aspects这个库来实现方法的拦截。以下是具体的实现步骤: 第一步:引入Aspects库 首先,需要将Aspects集成到项目中。Aspects是一个轻量级的AOP框架,