不要瞎写!不要瞎写!不要瞎写!
后端服务代码分层是个老话题,但最近几年没什么人聊了,因为吹牛的去聊虚拟化、高可用、k8s,骗钱的去聊ai了。也导致一些新人基础代码没怎么写过,就开始疯狂学习这些高大上的东西,不过我一直觉得,先把基础的搞好了,再提高大上也不迟。而且这些年来我见过了各种分层,但似乎没有哪一种是能够真正解决了高复用,低耦合,又不麻烦的,大部分是都是会偏向于理论化,实际用在项目上总会放人懵逼,这一块代码到底要放哪呢?怎么放更合理呢?以至于每次有新模块时,我都会纠结怎么设计,因为老觉得之前做的还有可改进的地方;经过好多年的思考和迭代,希望能总结出一些东西来 首先,MVC对于当下的服务分层有些太简单了,或者说最早设计出来时就太简单了,只是一个偏指导性的,而且当下前端的解耦,让View层更不变的可有可无,让我感觉更有指导方向的是阿里牵头出过的《java开发手册》,虽然我用过c,php,golang,甚至matlab,C#,js,但唯独没有正经用过java,不过java本身是一个工程向很重,架构方法论发展非常好的语言,哪怕不用java,它也会在设计模式、工程架构上对人有很高的启示和示范 再提问题,为什么要分层?我个人
水有什么问题? 先说结论,正常经过水处理厂出来的水肯定是没有问题的,这点还是可以放心的,要处理的是因为以下几个点。 水在从处理厂到家里这一路可能会因为管线老化之类问题,掺进来一些杂质。如铁锈、泥沙、颗粒物等 北方水质会相对硬一些,如北京当地水硬度在400左右,哪怕使用南水北调的水垢也在200以上 水质并不能保证冷水直饮,煮汤、煮粥、直饮这类入口的水还是应当使用纯净水,另外增加饮水机的话订水又比较繁琐,机器也占用空间 先直接给方案graph LR subgraph 前置大蓝瓶 pp1(PP棉) --> cto1(CTO压缩活性炭) end subgraph 厨房 洗菜盆 直饮龙头 管线机 洗碗机 end subgraph 饮水机 pp2(PP棉) --> 软化树脂 --> cto2(CTO压缩活性炭) --> RO膜反渗透 --> 后置椰壳活性炭 --> 储水桶 end subgraph 厕所 洗脸池 花洒 洗衣机 马桶 智能马桶盖 end 入户阀门 --> 前置过滤器 --> pp1 cto1 --> 洗菜盆 cto1 --> 中央软水机 --> 燃气热水器 cto1
前几天老家一个同学想买电动车,见我开电动车,问我选哪个好,我说为什么要买电动车?我要能买油车肯定不买电动。后来一番交流,发现原来大家的思维逻辑是不一样的。 我选车的路径就是:我能买油车吗?不能;能买混动吗?不能;好,买纯电,然后在纯电里同价位也没几样,选一个就行。 同学的选车逻辑是:纯电开起来省钱、保养便宜、有科技感、内饰也好、国产品牌也不贵。所以选纯电 我对纯电的顾虑就是:我没有私人车位,回家不能用家用充电桩,充电麻烦,跑长途还得提前规划下 同学对纯电的看法:在老家车位不是问题,家充又便宜,跑长途?换油车啊,又不得摇号才有指标,家里有油车 经过以上交流,我发现我对电动车的焦虑放在对方角度是完全不存在的 所以啊:电动车应该去非一线城市推广,人家都是主动要求买新能源,光在一线城市搞这些乱七八糟的政策干啥 我问他你看上哪个了,他说看哪个都不赖…… 倒也是,除了内饰也看不出什么,电池一共那几个供应商、系统好多也做的还行,所以我意见就是:要是你开就信仰比亚迪的技术,要是你媳妇要开就主抓欧拉好猫的颜值 刚问他最终买的什么,他表示没买,说因为穷,我觉得,还是因为,不够喜欢
不知道不觉又跨年了,在我还年轻的时候有一个特殊的跨年,就是进入2000年的千年,这不止是千位数的改变,同时也让当时的人记住了一个名词 -- 千年虫(Year 2000 Problem,简称Y2K) 我记得当时还小,所有人都在谈千年虫,但实际上又基本没什么人知道到底啥是千年虫,还没等我长到足够的智力去问这个根本原因时这事就过去了,大家也就都不关心了。在我费劲巴拉找了半天资料后发现,当年互联网确实不够发达,网上并没有留下太多根本原因的记录,而且对于我这种非当时的程序员来说并不太理解当时产生这种问题的操作。 具体原因是早期大家使用日期时是用6位数字来表示的,比如1999年12月31日就是991231这6位数,这个习惯号称是来自第一位女程序员(同时也是第一个bug的发现者,Grace Murray Hopper),之后被COBOL语言继承,进而传播到全世界。这个是在1944年时就埋下来的种子,问题是到了2000年1月1日时这6位数字就变成了000101,这时候会带来的问题就是这个数字是代表1900年呢,还是2000年呢,你可能会想问题不大,大家统一认为是2000年就可以,但是对于需要计算时间差
魔术师在变魔术时经常会让观众心里随便想一个或说一个数字出来,这个数字在我们看来就是一个随机数,因为包括我们自己在内的所有人在说出来之前都不知道会是个什么数。 那么随机数具备什么特征才叫随机数呢?比如随机从1-10区间选一个整数,那应该有以下要求 在可选范围内每个数都有机会被选到,并且概率在统计学上应该是相同的,比如一个人如果比较痛恨4这个数,那从来不选,那不行;他比较喜欢8,那每选3个数时总有1个8也不行。 对于人来说,说一个随机数应该很简单,可能因为我们不能预估我们的想法,也可能是因为我们的脑回路太复杂,我们控制不了。转而到对于计算机来说就不简单了,计算机是要求按程序严格执行的,本身就有可重复运行的性质,是典型的一根筋,不可能产生任何随机『想法』。计算机就好像是捡了几个石块,只能执行2块石头加3块石头等于5块石头,你要想让石头堆自己随机蹦出几个来是不可能的。 但是我们用到的软件上经常会有『随机』的东西,比如登录时的验证码、游戏里打怪的掉血量之类的,那计算机是自己『想』出来一个随机数的呢? 刚才说了计算机都是一根筋,就是输入1+1就会输出2,如果需要一个『随机』数的话,那就需要给它
eLangX