编程思维转变
坛里老是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)
文件存储的话回头接入第三方接口部署,也再搞个本地存储对接的程序。
近期设想:搞一个超大型分布式图片库