V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  VVVYGD  ›  全部回复第 1 页 / 共 3 页
回复总数  50
1  2  3  
39 天前
回复了 miaotaizi 创建的主题 Java 流程引擎和状态机有什么区别?
流程引擎一般用 DAG 模型,状态机( FSM )更丰富,可以兼容更多的场景。我就是用 FSM 来做流程引擎的。https://github.com/yametech/echoer
配享太庙
@f0rb 是的,这里用了一种类 SQL 的方式去转成 mongo 的查询,也可以实现其他的的 nosql 查询,虽然我也不太明确还有哪些语法,哈哈。
虽然有点倒反天罡,但是还是比较行的,讲解了动静态链 FFI 原理。用了 rust 之后,只觉得 C++在语法主义层面比 rust 好,不过开发工具 c++没有 rust 好,所以一直坚持用 rust 实现各种 api 业务。 快速的项目用 python 组合 Nextjs+ AI 写真的爽
@f0rb 因为这个是转换成 Expr 的,在 rust 里是可以做前置检查的。
@f0rb 其实就是类似 SQL 解析,这里 https://github.com/ddx2x/crossgate/blob/master/condition/src/cond.rs
https://github.com/ddx2x/crossgate/blob/master/condition/src/cond.y 将语法树解析为 Expr ,然后将解析的 Expr 转换成 mongo 的谓词条件 https://github.com/ddx2x/crossgate/blob/master/src/store/mongo/filter.rs ,当然其实这个过程直接转换成 mongo SDK 的对象 doc. 例如原本 sql:select username ,amount from users where local="abc" and(xx=1 or
b =2 and c=3) 我这边的使用写法是 new_condition().withTable("users").fields(["username","amount"]).wheres(#b" local="abc" && (xx=1 || b=2 && c=3)")
@f0rb 例如 :a=1&&b=2||c=1&&b=2&&abc='abc21' 转换成的就是
MongoFilter(Document({"$or": Array([Document({"$and": Array([Document({"a": Document({"$eq": Int64(1)})}), Document({"b": Document({"$eq": Int64(2)})})])}), Document({"$and": Array([Document({"c": Document({"$eq": Int64(1)})}), Document({"$and": Array([Document({"b": Document({"$eq": Int64(2)})}), Document({"abc": Document({"$eq": String("abc21")})})])})])})])})


参考 https://github.com/ddx2x/crossgate/blob/master/src/store/condition.rs 测试样例
差不多吧, a > 1 会转换成 yacc 语法解析成 field(a, gt,1). ->. mongo 的实现者转换成 真实的 {$gt:{a:1}}
@f0rb 汗,按个回车就回复了,我这里抽象 Condition<Filter> ,然后把 ab=123 & abc='123' 这种语法转成 mongo db 的 filter, 实现了大部份的逻辑,我小团队业务中用还是挺好用的,你可以看看。
@f0rb 是的,我用 rust 写的并加入了查询谓词解析,例如查询 ab=123 & abc='123' 这样的,你可以参考里面的 yacc 在 go 里使用。
非常好, 之前我也写过一个类似的,不过用于 document 数据库 https://github.com/ddx2x/crossgate
@ihainan 是的,但是大部份地区都是不行的
@xhatt510 首先,你要开通了 iptv,然后通过查找或者别人家提供你的地区里的 iptv 的组播地址 m3u8 然后在其它设备就能看了,需要在路由器做 iptv + 默认 vlan 的绑定,udpxy 只是可以通过 IGMP 协商切换台而已。 有点复杂,不建议搞,直接电视看
165 天前
回复了 kanner 创建的主题 酷工作 [杭州][广州][AI 方向公司]招开发工程师
已投
166 天前
回复了 h3xz 创建的主题 Qt 如何在 QT 中的多个级别的窗口之间传输消息
xiodie,看起来你是要个 eventbus
241 天前
回复了 uniy 创建的主题 Go 编程语言 难道 Go 就没有好用的工作审批流框架吗
好多年前写的,不过有点庞大,参考下,基于 fsm 状态机实现的。https://github.com/yametech/echoer
@hefish 是的,程序跟人只要一个能跑就行
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2939 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 14:02 · PVG 22:02 · LAX 06:02 · JFK 09:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.