编程思维转变

C 2022-2-24 1527

坛里老是C大的叫,其实我技术水平相当落后,还停留在2014年PHP鼎盛时期(后面大学折腾+出国,没学过新的),而且不思进取。论坛里比我技术好的一抓一大把,看着一大堆00后脚本框架玩的飞起,心里既羡慕又抵触。像我这种又老又没精力折腾的,慢慢地就被淘汰了。世界就这样,要不断拥抱新变化,然而拥抱了也干不过人体的衰老和精力的丧失。所谓长江后浪推前浪,新旧更迭、天道轮回。之前抱怨半个多月也该专心研究下技术了,这两年接触新技术挺多的。

面向对象,虽然我天天骂不过大家都在用,也没啥办法。以前写PHP就是纯粹的面向过程,会写几个函数(方法)都感觉自己很牛逼了。后面了解面向对象的一大堆东西,其实概念倒不是很难懂,主要是学名词费劲,像什么继承、泛型、抽象、接口。感觉面向对象最大的优势,就是把所有功能模块化,每个模块内有自己的数据和方法,闭环处理然后输出。如果function的话举例说一个循环变量,就必须在调用方法前先定义,面向对象等于把这个变量和方法打包了一下,然后内部消化了。尽管如此我还是觉得面向对象麻烦、逻辑难懂,写程序能不用尽量不用。

数据库,以前搞的都是MySQL类型的数据库,比如MySQL、MariaDB、PostgreSQL,除了语法不一样,基本原理和用法是差不多的。但是现在大数据盛行,很多需求都向NoSQL转移了,比如流行的Hadoop、Redis、MongoDB、KV都是这个范畴内的,学几个便可以触类旁通。我个人对这玩意的理解很简单,就是传统MySQL是指定有什么字段,每个行都包括这么多列,而NoSQL本质上是一个K-V类型,由用户自己定义V值内可以存储的字段,整合起来就是一个对象。这样的话每行可以有不同的字段结构,灵活性更高,还可以根据需求进行索引,性能也相对提升。

现在跟公司上班,号称国家高新技术企业,所以啥都是最新的,技术也是SpringCloud+Hadoop+Redis+Vue这一套。虽然项目代码写得稀烂,跟着搞搞还是能学到不少东西的。想到了我自己的程序规划,之前还想着循序渐进逐步改善,现在想想长痛不如短痛,万事开头难,不如一步到位做好。由PHP+MySQL改为NodeJS+MongoDB,一方面拥抱异步、携程、面向对象,另一方面这俩玩意在以后的Serverless大潮里也能经久不衰,主要是可以白嫖CloudflareWorkers+MongoDB(或者KV、CouchDB、NoSQL,反正都是NoSQL改改就能通用)。等公司这项目搞差不多了,自己的程序也该基本搞定了。

NodeJS + NoSQL 解决了以前开发的痛点:

1. 不适用缓存让数据库中的程序配置一次性读取。PHP每次运行都是从头建立数据库连接,读取文件。而NodeJS则是运行时建立数据库连接,读取配置,后续访客进入只是额外建立一个Server对象。这样可以实现仅站长首次运行加载配置。

2. 数据库如何对同列多个数值创建多个索引?MySQL无法解决,而MongoDB可以轻松利用Multikey Index实现这一功能。

NodeJS + NoSQL 可用的白嫖托管方案:

1. AlwaysData(NodeJS + CouchDB)

2. Cloudflare(Workers JS + KV)

3. Deta.sh(Micro NodeJS + Base NoSQL) 

文件存储的话回头接入第三方接口部署,也再搞个本地存储对接的程序。

近期设想:搞一个超大型分布式图片库

最新回复 (10)
  • yixianc 2022-2-24
    2

    目前来说。。。vue还真的是要会

  • C 2022-2-24
    3
    yixianc 目前来说。。。vue还真的是要会

    工作不是前端的话其实没必要,Vue语法很多是前后倒置,感觉挺奇怪的。

    如果只是自己玩玩,把HTML+CSS+JS这三学明白就差不多了。

  • v6666 2022-2-24
    4

    cf的那个workers kv我是真觉得不好用,纯粹的kv很难解决以前的跨表查询这种需求

  • C 2022-2-24
    5
    v6666 cf的那个workers kv我是真觉得不好用,纯粹的kv很难解决以前的跨表查询这种需求

    mongodb和大部分nosql都没有跨表查询,只能重写查询语句了。

  • 匿名 2022-2-24
    6
  • C 2022-2-24
    7
    匿名 C大威武

    还是大C舒服点

  • wxjv99 2022-2-24
    8
    C mongodb和大部分nosql都没有跨表查询,只能重写查询语句了。

    微服务的话,基本上是告别跨表查询了

    NoSQL数据库 完美吻合程序里 聚合根/子实体间的关系

    出来工作就一直用的ORM框架,SQL语句现在都只会一点点了。。。

    这家伙太懒了,什么也没留下。
  • C 2022-2-24
    9
    wxjv99 微服务的话,基本上是告别跨表查询了 NoSQL数据库 完美吻合程序里 聚合根/子实体间的关系 出来工作就一直用的ORM框架,SQL语句现在都只会一点点了。。。

    是的,数据库(NoSQL)和前端(Vue)都开始往KV方向转变,编程思维统一是迟早的事。

  • mxb 2022-2-24
    10

    我们公司还有好多PHP服务,不过都是历史遗留的,新服务都切到go了

    https://mxb.cc
  • C 2022-2-24
    11
    mxb 我们公司还有好多PHP服务,不过都是历史遗留的,新服务都切到go了

    随着数据量增长这是必然趋势了。特别是数据库分布式,传统自增ID也会被淘汰,改用唯一性的ObjectID来存储。这样即便是不同地区的集群,也能最终实现数据统一。

返回
发新帖