简单讲讲自己成为架构的经历

被屯了


楼主 清风_树  发布于 2019-01-17 23:34:00 +0800 CST  
没人回复感觉好尴尬了

lz刚下班

楼主 清风_树  发布于 2019-01-17 23:35:00 +0800 CST  
学习的道路上

我的经验是有人指引真的会少走很多弯路 所以有这个帖子 希望能帮助到大家


为什么没人啊

楼主 清风_树  发布于 2019-01-17 23:36:00 +0800 CST  
旁边一个四年java辅导新人的帖子都有那么多回复 郁闷

是不是得上业绩啊

本人支付宝a1系统owner
作为主架构师开发了新资金处理系统 业务量级2亿/天

目前作为主架(支付宝内部称号 表示项目核心架构师)做支付宝的一个二级域核心系统 后续tps日常2万 日数据笔数4亿级别 db的tps10万+

楼主 清风_树  发布于 2019-01-17 23:43:00 +0800 CST  
上班路上 更新一波 发现百度不支持markdown啊 尴尬

楼主 清风_树  发布于 2019-01-18 10:45:00 +0800 CST  
大家细心的话会发现 中级的介绍都不是以技术开头的 中级也是一个瓶颈 lz当初用了两年

在我眼里很多5-8年的java开发都卡在这一层级上 甚至有十年的开发还是卡在这个层级上


简单来说说我的理解
1. 中级开发专注解决问题而不是专注技术
2. 中级开发会慢慢不提一些技术而是提一些概念
3. 中级开发第一时间想到的是要怎么去思考

而高级已经有自己的方法论了 这个后面会说

我会慢慢结合我自己的经历给大家多多分享一下这部分内容 有面试的有架构的 有技术的

楼主 清风_树  发布于 2019-01-18 11:06:00 +0800 CST  
大家能不能看的懂啊给点反馈……

楼主 清风_树  发布于 2019-01-18 11:07:00 +0800 CST  
下面 我会以“面向对象”这个广为熟知的概念 来一层层抽丝剥茧 让大家感受递进之路

先上提纲
初级:面向对象是一种“编程”思想
中级:面向对象是一种“设计”思想
高级:面向对象是一种设计“思想”

希望大家体会体会 下午或者晚上会更新一次

楼主 清风_树  发布于 2019-01-18 11:30:00 +0800 CST  
## 初级开发者的"面向对象"
### 导论
面向对象这个概念,应该是大家学习java或者是学习编程遇到的第一个"坎".
因为这个概念对于新手来说是十分抽象的.大家一开始很难理解什么是"对象".什么叫面向对象编程.

这里我简单使用一个例子来表述一下:盖房子.

这个例子真的和软件开发十分相似,建筑行业的很多思想也和软件开发类似.

我们盖房子需要一个东西:"结构".我们需要定义这个房子的结构和框架以便大家理解.
同时软件编程一样,我们需要定义一个事物来"组织"我们的代码.

所以对于新人来说.首先理解"面向对象"是一种编程方法.是一种对于代码进行组织然后实现
业务功能的方法和设计思想.

楼主 清风_树  发布于 2019-01-18 21:39:00 +0800 CST  
### 何为对象
可能编程中最难的部分就是理解什么是对象了.上面我们理解面向对象是代码组织的一种方法.

那么这个方法具体是什么呢?我个人的理解就两个字:抽象.

即.我们需要用代码来实现真实社会中的一个功能,一个事情或者表现真实社会中的事务.
但是代码又全都是一个个符号和语法.如何能真正的组织我们的代码.然后实现功能呢.

这个时候必须对现实生活中的一些"特征"进行抽象,然后映射到我们的编程设计中.这种特征的抽象
就是抽象出一个个对象的概念.

比如我们设计一个程序用来卖苹果.那么在程序中.苹果就可以是一个对象.他的特征是有重量和有数量.

然后进一步.我们会针对"数量"和"重量"来进行实现售卖的功能.然后大家发现我们自然而然的忽略了"苹果"
这两个字.这就是之前说的"抽象".而面向对象就是把一个个实物进行抽象,用我们的代码进行组织

所以,请记住"对象"是对现实事务的特征的一种抽象.

楼主 清风_树  发布于 2019-01-18 22:12:00 +0800 CST  
### 何为面向对象编程
介绍完何为"对象".我们继续介绍如何运用对象进行编程.

还是上面卖苹果的例子.我们把苹果抽象成了"数量"和"重量".那么售卖者会提供一个功能,价钱=`"数量"*"重量"*"单价"`
这就是我们组织代码的方式.

其核心的本质就是.我们基于"万物皆对象"这种方法,组织我们自己的代码.从而让代码能够有一定的聚合和分类.让代码好理解一些.

所以对于新人来理解面向对象:这是一种编程方式.编程绝对不是几百上千个if和循环组成的.而应该是一个个对象互相交互形成的

注意!新人在写代码的时候可以强制要求自己使用多个对象来组成自己的功能.千万别写一个几百行的大功能

楼主 清风_树  发布于 2019-01-18 22:13:00 +0800 CST  
### 面向对象的基本技术
当我们理解了面向对象的一些概念之后.我们可以尝试使用面向对象来解决问题.大家应该知道.不仅仅是"我们"来用面向对象.同时有非常多的前人一样使用面向对象的工具来解决问题.所以这些前人的智慧就形成了一些公用的方法.

这些通常的做法和解决具有某些特征的问题的方法叫:设计模式.

大家可以通过设计模式来更加进一步的理解面向对象技术.
此外,除了设计模式以外还有一些java语言支持的操作和原则.我们同样可以学习
比如面向对象五大原则:SRP,OCP,LSP,DIP,ISP.这些内容.

当然初级开发可以从一些基本的面向对象操作来学习
比如:接口,实现类,继承,多态,包装.这些概念,然后自己思考然后来写一个程序.

楼主 清风_树  发布于 2019-01-19 00:37:00 +0800 CST  
楼主下班了 正好更新一波

楼主 清风_树  发布于 2019-01-19 00:37:00 +0800 CST  
小区灯已经完全黑了

后面我会更新一波中级面向对象思想 然后主要谈谈自己经历和一些纯技术

当然一些比较“高级的”互联网技术我也会深入讲解 比如分布式 常见高并发 业务拆分 数据拆分 大规模互联网应用架构等内容

感觉这样才能帮助道更多同学


楼主 清风_树  发布于 2019-01-19 00:55:00 +0800 CST  
我发帖是希望大家能互相交流
也希望帮助到大家

大家总是膜拜是啥意思 希望大家认真看看我发的内容 多看几遍然后反馈一下意见

楼主 清风_树  发布于 2019-01-19 01:11:00 +0800 CST  
今天年会得去乌镇 苦逼 今天会更新一下中级部分的

大家可以发现我的很多经验和方法还是以思想为主 一些技术和逻辑个人感觉比较简单 所以我的经历肯定不是适合所有人 但是希望能给大家帮助

楼主 清风_树  发布于 2019-01-19 08:51:00 +0800 CST  
年会完毕了 更新一下

楼主 清风_树  发布于 2019-01-20 01:00:00 +0800 CST  
## 中级开发的面向对象

### 导论
其实对于中级开发,可能已经应用了大量的面向对象的编程技术了.比如spring就是一个大的工厂设计模式实现的ioc.

所以慢慢"如何写代码"以及如何组织自己的代码,如何来实现一些CRUD已经不是问题了.甚至能脱口而出一些设计模式,用设计模式的思考方法来思考一些内容.

所以此时就开始理解面向对象为一种"设计"方式了.此时考虑的不仅仅是实现,而且是整个"架构"来如何"设计".而考虑架构的时候就是一个设计的使用方法了.

楼主 清风_树  发布于 2019-01-20 01:00:00 +0800 CST  
今天先更系这些 明天更系一些架构东西

后面就不更新思想性质的内容了 更新一些lz的经历和基础技术

如果有高级程序 想了解分布式和高并发这些内容 可以问我

楼主 清风_树  发布于 2019-01-20 01:07:00 +0800 CST  
### 架构方法
- 一个架构的初步设计想法
当我们在说架构的时候是在说什么?为什么说运用面向对象是一种"设计"的方法.因为对于中级开发来说.往往面临一个独立的开发业务功能.那么如何实现这个功能,一定需要对功能进行"设计".他们会设计多少个类.设计整体的结构.

进一步,假如需要这个同学写一个企业级别的架构.那么需要怎么做呢?此时可能需要机遇现有业务情况做"设计"的"设计",进一步把我们组织代码的方式来进行抽象.这句话貌似很难理解.我来简单举个例子

1. 如果我们写数据层代码,使用jdbc来书写,那么可能10个业务都需要进行prepare,写sql,然后execute
2. ok,我们把这些数据库的操作全部面向对象.我们使用mybatis框架,不用面向jdbc了.仅仅需要书写很多个bean和对应的sql即可.
3. 如果我们有100个业务呢?我们发现所有的业务几乎都有getById方法,并且getById里面的sql都是全量返回一个bean的所有信息.那么我们是不是可以通过反射来实现这部分的功能,一个sql完成所有工作呢?

上面就是一层一层更加抽象的方式来组合我们的代码.

- 进阶思考
中级程序员面对的问题可能多种多样,此时他们会接触到另外一些方法论.比如aop.比如soa.比如mvc.比如微服务等等.

当我在罗列这些词语的时候感觉就看到了几年前的自己,感觉每个概念和每个技术都要运用到自己的设计或者架构中.

中级程序员慢慢自己手中的工具会越来越多.可选择的也越来越多.活灵活现的使用我上面的这些设计方法.并且有了自己的理解就可以慢慢成为高级程序员了

楼主 清风_树  发布于 2019-01-21 11:52:00 +0800 CST  

楼主:清风_树

字数:23707

发表时间:2019-01-17 21:04:00 +0800 CST

更新时间:2021-02-23 06:19:43 +0800 CST

评论数:1927条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看