首页 > 科技 > 善待你身边做程序员的那个朋友做个很容易被淘汰的CRUD程序也难

善待你身边做程序员的那个朋友做个很容易被淘汰的CRUD程序也难

然后我们聊聊平常程序员能用到的基础,计算机是一门很大的学科,下至离散数学、微积分、自动机理论,中间还有硬件、计算机组成原理、编译器、程序语言、操作系统、算法,上到各种设计模式、架构设计其实都可以算作基础,但是很多其实程序员平常可能不太用得到,我们就说一个做web的后端程序员可能需要用到的基础知识,假设程序员已经掌握一门编程语言,足够完成自己想的事情,并对一些基础概念有了解



我们从一个http请求说起,请求通过网络将一些数据通过网络发送到服务端,这中间首先要经过HTTP协议进行数据的传递(不讨论数据链路层和IP层、TCP的那些事情),这里面就会涉及到HTTP协议的问题,比如header里面有那些常用的字段,比如指定字符集、编码方式、会话方式等等,然后通过header就知道对body里面的数据进行如何的处理,比如序列化或者反序列化, 还有为什么会有跨域的问题?为什么要用 https?什么又是http1.0 2.0,然后通过这些通常就要再去学习一个web框架,就会涉及到这个框架是怎么对上面这些进行处理的了, 关键点:http协议与web框架


请求处理部分,通常就要做具体的业务逻辑处理了,什么是cookie、session、token、jwt?为什么要保存这些数据?什么又是表单?中间件又是什么鬼?此处通常又会涉及到分层架构比如什么是MVC?数据库又是什么?为啥又要出个缓存?消息队列又是啥?然后就会涉及到我们的业务类型和业务数据,比如该用什么数据模型?什么存储?什么序列化方式?什么索引方式?什么又是事务?关键点:分层架构、数据库与事务、NOSQL、数据结构与算法


如果把上面这些都学完已经可以做个CRUD程序员了,大多数培训出来的也就这个样子,然后就是单机不行了,首先是业务上做水平或者垂直拆分?拆着拆着,就是一堆服务了,好吧就叫微服务吧?怎么发现彼此?怎么通信?怎么传递数据?怎么管理?挂了怎么办?怎么提供统一接口?关键点:微服务、服务发现、通信方式、故障隔离、网关


经过上面的学习你已经是一个入门级别的程序员了,但是你还只是个会使用各种工具的程序员,那么我们要开始独立去面对一个小的业务模块了,怎么设计模块?什么是架构?怎么协作开发?怎么做测试?TTD是啥?敏捷又是啥?持续集成是什么鬼?服务怎么部署?docker是啥?kubernetes是啥?监控日志又是啥?关键点:敏捷、测试驱动开发、持续集成、持续交付、docker与kubernetes、监控与日志


经过这些我感觉已经能做个基本的程序员了,但是目前也只是个更全面的工具程序员了,我们总不能一直使用各种工具吧,我得熟悉底层的各种源码吧?不说精读个数据库,泛读个web框架、几万行代码的中间件,貌似是得学习一下吧?你以为你可以读懂了?去一边去吧,你为什么读不懂源码?你说我会了数据结构,好吧程序都是并发的,作者可能为了并发的安全性又去改动了一下,比如结合操作系统的copy on write机制,实现个redis的备份?利用磁盘顺序写,搞个wal日志?写个os cache批量刷盘?数据可能是通过网络传输的, socket是啥?粘包拆包又是啥?IO又为啥要多路复用? 这些玩意是啥?并发!!关键词:操作系统、Linux底层机制、并发、网络


经过这些,你感觉完了?别闹,读完一个中间件源码就完了嘛?你知道编译器嘛?微机原理呢?电子技术呢?计算机组成原理呢?你了解分布式嘛?一致性呢?共识和时钟又是个啥?分布式锁怎么玩的?大数据了解嘛?service mesh明白嘛?data mesh呢?5G已经在路上,能赶上嘛?


阿弥陀佛,回头是岸,学海无涯,放下屠刀,立地下岗!

程序员:方丈我还没到34岁,能不能救救我?

方丈:施主,瞅你骨骼惊奇,分布式微服务架构样样精通,但是我们只招985/211,计算机科班出身的996程序员,你愿意12127嘛?

程序员:方丈,我可以住公司!

方丈:那我们考虑考虑,拿起简历放到旁边的第1000零1的简历上做备选

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/263605.html