timystruct 前世今生(2) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
moverinfo
V2EX    程序员

timystruct 前世今生(2)

  •  
  •   moverinfo 26 天前 via iPhone 1986 次点击

    有很多朋友都很纳闷,现在都什么时候了,你还需要考虑计算机资源吗?而且现在的资源都很便宜。如果从眼前的经济实用性角度看待问题,这个我也认同。但从技术发展的长远角度来看,节约资源,提高效率,永远是作为技术人员所追求的。这就是为什么我们仍然在看到不断有新的语言出现,比如 RUST 。而为什么 Spring 框架里搞 Bean 的生命周期概念,目的不也是在节约内存资源吗?关于这个话题,我们后面还可以继续探讨,就不在这里过多强调了。

    其实模块化带来的好处很多,尤其是处在微服务时代。在一个项目起步的时候,我们很难知道一个项目是否就应该采用微服务架构。大多数人都是跟风,做到后面发现实现这些需求根本不应该搞微服务。想切回单体架构又特别麻烦。而且还是一个系统改造工程。那如果一个框架能在单体架构与微服务架构之间切换,那不是很棒的一件事吗?你可能会想了解 tinystruct 是如何实现的,我用简单的比喻形容它:一个项目像一根电缆,而服务或功能则是电缆里的每一根导线。这就是 tinystruct 的设计理念之一。这世界上没有一样复杂的事物是不可能被拆分成一个特定规模的小的单元。

    作为一个能运行在低端设备上的框架,除了模块化以外,就是外部依赖。如果要实现一个功能,却依赖很多,必然导致资源不可控。毕竟有些依赖会耗费很多资源,而有一些依赖一时半会,你想去掉并不是那么容易。所以,你可能会注意到 tinystruct 框架里,并没有使用一些常用的库,比如 Jackson ,也没有像 fastjson 里搞一堆的将 JSON 硬生生地映射为某个 Java 对象。在我的设计哲学里,我更喜欢简单,职责单一,这才是减少 bug 的关键。

    当我们有时候接到一个任务,需要写一个工具,而这个工具可能仅仅就是处理一个小需求,比如从处理一些 excel 文件数据。很多朋友用惯了 Springboot 就自然的建了一个 Springboot 项目。然后,又接到一个爬虫需求,又去建了一个 Springboot 项目。不过,有些比较资深的程序员就会想,我为什么要用这么大的一个框架,去完成这么小的任务呢?如果你去找个替代品,貌似在 Java 世界里,找不到几个可以拿来用的。那就自己从零到一写一个纯 Java 的工具吧。写到一半你会发现你要写很多东西,比如访问数据库,比如 JSON 格式的转换,处理 HTML 的库等等。于是搞不下去了。甚至很多人忘了在没有 Spring 框架下如何去写 Java 了。从这种现象中,我们可以发现一些问题。首先就是习惯了杀鸡用牛刀;其次,淡化了 Java 原有的运行模式;最后,感觉这个 Java 世界只有 Spring boot 再没有别的,完全失去了程序员该有的创新意识。甚至很多人都觉得换个工作可能只能跑快递了。我想对 Java 程序员说的是,框架是被你使用的,你可以根据需要选择它,而不能让框架把自己绑架了。

    不过,我要强调的是,本人无意去撼动一个被众人推崇的框架,只是认为 tinystruct 或许是一个补充,或者可以满足一部分小众需求。或者只要能帮我自己解决一点问题就好。我本身也不是靠这个吃饭的。只是分享一下我个人的一种解决问题的方式而已。你是否感兴趣,我丝毫不在意。我也不建议你放弃你的吃饭的家伙来选择一个你觉得可能对你是无聊的东西。

    (未完待续)

    tinystruct 前世今生( 1 ): https://v2ex.com/t/1158684?p=1#reply7

    13 条回复    2025-09-15 19:19:42 +08:00
    ruanimal
        1
    ruanimal  
       26 天前   5
    有很多朋友都很纳闷,然而并没有人纳闷
    cloudzhou
        2
    cloudzhou  
       26 天前
    我是支持程序员推广自行开发的组件的,比各种水贴好多了,timystruct -> tinystruct

    问题一:

    Q:而为什么 Spring 框架里搞 Bean 的生命周期概念,目的不也是在节约内存资源吗?
    A: Bean 生命周期如果只是为了单例,那么声明全局变量即可,而 Spring 最大价值在于 约定即配置,一致的开发模式,IOC

    Spring 本身很优秀,他的笨重是组件带来的,你如果使用 Spring 一个最简单例子,会发现秒级别启动

    问题二:
    你要说明 tinystruct 能做什么,带来什么,我看了你的 git repo ,我看不懂
    Ketteiron
        3
    Ketteiron  
       26 天前
    @cloudzhou #2 他这个框架亮点就是一句话"designed for AI integration",但是对 java 生态本身没有什么意义,没有解决问题。
    moverinfo
        4
    moverinfo  
    OP
       26 天前 via iPhone
    @cloudzhou 嗯,我只是想说明一下 Spring 是通过生命周期来实现优化和管理并节约资源的,不是无所谓的事情。Spring 框架挺优秀的,如果你更有追求的话,有些框架可以是毫秒级。关于这个框架能做什么,真的无法用三言两语说清楚。就像你第一眼也看不出 Spring 是干啥的,我只能简单的说就是一个轻量级的 Java 模块化开发框架。
    cs8425
        5
    cs8425  
       26 天前
    对于小任务小工具
    更纳闷的是为何要用 java?
    用更适合的语言跟工具不是更好?
    MIUIOS
        6
    MIUIOS  
       26 天前
    为啥不放在推广节点
    Gilfoyle26
        7
    Gilfoyle26  
       26 天前
    Java 我都快放弃了,你现在告诉我,纳闷???现在都什么时候了,还在搞茴香豆的茴有几种写法
    moverinfo
        8
    moverinfo  
    OP
       26 天前 via iPhone
    @cs8425 Java 有 Java 的优势,但是你也要知道,公司里面不是想换就能换的。
    @Gilfoyle26 不用放弃,Java 还是有市场的。别被脚本语言吓坏了。
    cloudzhou
        9
    cloudzhou  
       26 天前
    @moverinfo 不是 Spring 优秀,在 Spring 之前,业务开发的理念 DDD 、IOC 等就如荼如火,Spring 只是其中杰出的代表。Spring 是干啥的清晰得很。

    而你推广一个东西,要理念优先,别人认同你的理念才会去了解你的产品
    而不是:“真的无法用三言两语说清楚”
    moverinfo
        10
    moverinfo  
    OP
       26 天前 via iPhone
    @cloudzhou 你说的有道理,如果说的是框架的设计理念可以用几个关键词来概括:简洁 simplicity 、模块化 modularity 、无侵入 non-intrusive 。
    cloudzhou
        11
    cloudzhou  
       26 天前
    @moverinfo 你这样说的话,吸引不了别人的

    业务开发者,要解决的是心智问题,提高效率的问题,其他次要的
    moverinfo
        12
    moverinfo  
    OP
       26 天前 via iPhone
    @cloudzhou ,那就我自己用吧。前几年帮公司搞了一个机器人项目,就是基于它开发出来的,目前为止还在运行中,几十号人的运营团队,人手一套,避免了大量手工错误,节省了不少人力成本。
    moverinfo
        13
    moverinfo  
    OP
       26 天前 via iPhone
    @dssxzuxc 我的确做了一个 AI 集成范例 https://github.com/tinystruct/smalltalk 在这个过程中,让我更深的体会到了 Java 集成 AI 多么的嗦。如果雨 Python 真要友好简洁好多倍,但是没办法,Java 的日子还是要往下过的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1385 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:50 PVG 00:50 LAX 09:50 JFK 12:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86