上篇关于流程引擎的文章还是快两年以前的《微服务业务生命周期流程管控引擎》,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真正的高度抽象,形成产品底座,上层支持更大灵活程度的自定义应用搭建。当然这个不是本篇文章的主题,核心希望给各位朋友表达的还是对于逻辑流程抽象的关注,特别是现在的很多应用是在围绕行业展开,如何在各种杂乱的功能点之中,做到杂而不乱,又如何通过核心的控制模块提供标准化的接入,我通过OSS.Pipeline这个引擎框架类库,和大家分享一下我的思路(如有不足,还望指出探讨),需要说明的是,此框架是类库级引擎,不依赖数据库等存
上篇关于流程引擎的文章还是快两年以前的《微服务业务生命周期流程管控引擎》,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真正的高度抽象,形成产品底座,上层支持更大灵活程度的自定义应用搭建。当然这个不是本篇文章的主题,核心希望给各位朋友表达的还是对于逻辑流程抽象的关注,特别是现在的很多应用是在围绕行业展开,如何在各种杂乱的功能点之中,做到杂而不乱,又如何通过核心的控制模块提供标准化的接入,我通过OSS.Pipeline这个引擎框架类库,和大家分享一下我的思路(如有不足,还望指出探讨),需要说明的是,此框架是类库级引擎,不依赖数据库等存
最近在用rust写一个redis的数据校验工具。redis-rs中具备redis::ConnectionLiketrait,借助它可以较好的来抽象校验过程。在开发中,不免要定义struct中的某些元素为traitobject,从而带来一些rust语言中的生命周期问题。本文不具体讨论redis的数据校验过程,通过一个简单的例子来聊聊struct中traitobject元素的生命周期问题。首先来定义一个basetrait,该trait中只包含一个函数,返回String类型。pubtraitBase{fnsay(&self)->String;}接下来,定义两个实现了Basetrait的structA
最近在用rust写一个redis的数据校验工具。redis-rs中具备redis::ConnectionLiketrait,借助它可以较好的来抽象校验过程。在开发中,不免要定义struct中的某些元素为traitobject,从而带来一些rust语言中的生命周期问题。本文不具体讨论redis的数据校验过程,通过一个简单的例子来聊聊struct中traitobject元素的生命周期问题。首先来定义一个basetrait,该trait中只包含一个函数,返回String类型。pubtraitBase{fnsay(&self)->String;}接下来,定义两个实现了Basetrait的structA
我曾经努力寻求技术向管理方面转型,管理一个不大不小的团队,实现梦想中的“伟大”抱负,突破技术、完美的产品和先进的管理理念。随着岁数变大,这种欲望逐渐强烈,同时也伴随着焦虑,本质上是用转型掩盖意识到的危机。也有很多程序员想转管理岗位,是否也有类似的情况,还是真的不想写代码了,可能每个人的情况不太一样。 梦想总是要有的,万一实现了呢。有一天,我就真的实现了所谓的转型,从我一个人发展到二十多人的团队,利用一年多的时间实现了系统平台的从无到有,心中的满足感、成就感溢于言表。确实要实现很多想法,技术的完善、框架的重构、业务的发展,产品化的应用等。系统平台从无到有,我可以决定怎么做,但是有了
我曾经努力寻求技术向管理方面转型,管理一个不大不小的团队,实现梦想中的“伟大”抱负,突破技术、完美的产品和先进的管理理念。随着岁数变大,这种欲望逐渐强烈,同时也伴随着焦虑,本质上是用转型掩盖意识到的危机。也有很多程序员想转管理岗位,是否也有类似的情况,还是真的不想写代码了,可能每个人的情况不太一样。 梦想总是要有的,万一实现了呢。有一天,我就真的实现了所谓的转型,从我一个人发展到二十多人的团队,利用一年多的时间实现了系统平台的从无到有,心中的满足感、成就感溢于言表。确实要实现很多想法,技术的完善、框架的重构、业务的发展,产品化的应用等。系统平台从无到有,我可以决定怎么做,但是有了
一、了解帧的概念游戏的本质就是一个死循环每一次循环都会处理游戏逻辑并更新一次游戏画面之所以能看到画面在动是因为切换画面速度达到一定速度时人眼就会认为画面是动态且流畅的一帧就是执行了一次循环Unity底层已经封装好了这个死循环我们只需要利用Unity的生命周期函数的规则来执行游戏逻辑即可FPS(FramesPerSecond)即每秒钟帧数一般我们说60帧30帧意思是1秒更新60次、30次画面1s=1000ms60帧:1帧为1000ms/60≈16.66ms30帧:1帧为1000ms/30≈33.33ms游戏卡顿的原因:跑1帧游戏逻辑的计算量过大,或者硬件性能过低,无法在一帧的时间内处理完所有游戏
一、了解帧的概念游戏的本质就是一个死循环每一次循环都会处理游戏逻辑并更新一次游戏画面之所以能看到画面在动是因为切换画面速度达到一定速度时人眼就会认为画面是动态且流畅的一帧就是执行了一次循环Unity底层已经封装好了这个死循环我们只需要利用Unity的生命周期函数的规则来执行游戏逻辑即可FPS(FramesPerSecond)即每秒钟帧数一般我们说60帧30帧意思是1秒更新60次、30次画面1s=1000ms60帧:1帧为1000ms/60≈16.66ms30帧:1帧为1000ms/30≈33.33ms游戏卡顿的原因:跑1帧游戏逻辑的计算量过大,或者硬件性能过低,无法在一帧的时间内处理完所有游戏
首先说明一下关于UE4中一些对象的名字前缀吧,虽然这个不是这一关于Actor的内容,但是后续都要用到,所以就先说明白。关于Class类前缀:派生自 Actor 的类前缀为A,比如AController。派生自 Object 的类前缀为U,比如UComponent。派生自 SWidget(SlateUI)的类前缀为S,比如SButton Enums 的前缀为E,比如EFortificationType。Interface 类的前缀通常为I,比如IAbilitySystemInterface。Template 类的前缀为T,比如TArray。其余类的前缀均为字母F,比如FVector。--好了,现
首先说明一下关于UE4中一些对象的名字前缀吧,虽然这个不是这一关于Actor的内容,但是后续都要用到,所以就先说明白。关于Class类前缀:派生自 Actor 的类前缀为A,比如AController。派生自 Object 的类前缀为U,比如UComponent。派生自 SWidget(SlateUI)的类前缀为S,比如SButton Enums 的前缀为E,比如EFortificationType。Interface 类的前缀通常为I,比如IAbilitySystemInterface。Template 类的前缀为T,比如TArray。其余类的前缀均为字母F,比如FVector。--好了,现