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

最近项目太慢 感觉突然索然无味 出差回上海的路上聊聊自己的经历吧

同学们可以参考学习 就当我自己的吐槽了





楼主 清风_树  发布于 2019-01-17 13:04:00 +0800 CST  
回想当初
第一次接触软件这个概念还是看的硅谷传奇这个电影
当初年少无知 把硅看成了蛙 还以为是什么科幻电影 没想到是微软创建的故事

就这一个电影没想到影响了自己近半生 感叹事事无常 人生早已注定

第一次编程还是初中毕业时学习的flash 当时使用action scrip 现在还记得一个函数 duplicate 也是flash最能让小白体会到软件的魅力和软件强大

不过后来发现 编程都是黑白屏幕 哪有什么炫丽的画面

楼主 清风_树  发布于 2019-01-17 13:14:00 +0800 CST  
简单整理一下思路 后续会慢慢更新
1. 简单介绍自己的经历
2. 讲诉自己的学习思路和学习过程
3. 自己培养的学习方法
4. 架构方法论

如果大家有别的想听的我也可以聊

楼主 清风_树  发布于 2019-01-17 13:21:00 +0800 CST  
哎 好像没人看 就自己吐槽吧

lz大学以高出一本四十分的水平选错了院校 被调剂成了物理专业 悔不当初啊

大学毕业后考上了研究生
年少轻狂 觉得不能人生就这样走下去了
研究生退学了

研究生退学之后没有了校招的便利 没有社招的经验 可以说真正的人生低谷

现在想想 人生在于方向 没有方向所有的选择都是错误的

22岁 我第一次站在人生的十字路口 迷茫了

楼主 清风_树  发布于 2019-01-17 13:52:00 +0800 CST  
从头来看

人生低谷
任何方向都很艰难
任何方向都很美好
只要自己努力 每走一步都是向上攀爬

楼主 清风_树  发布于 2019-01-17 14:38:00 +0800 CST  
当时lz整理了一下思路 还是坚定的选择软件这条路

为了糊口 选了.net 做c# 在北方外包很多 糊口还是容易的

感觉应该没人比我艰难 只要有饭吃 就可以开始自己努力

楼主 清风_树  发布于 2019-01-17 14:41:00 +0800 CST  
外包做了一年后 慢慢理解了软件开发 工资只有三千多一点 记不清了

然后准备学习java
lz有个习惯 学习喜欢体系化学习 把知识构建成学习体系 然后开始努力

简单介绍一下当时的体系 现在看还很粗糙

1. java基础技术 基础api 内存概念 多线程等 以网上资料和thinking in java为主通读深刻理解

2. 面向对象设计思想 以设计模式来理解编程思想 运用编程抽象现实概念

3. 互联网技术 通用框架 通用数据库 典型设计方式 如当时很火的ssh和ssi

4. 新兴高级技术概念 分布式高并发 lz那个时候并不理解这些概念 所以投一归类成框架来学习的(lucene redis elasticsearch这些框架的罗列 然后反过来理解思路)

楼主 清风_树  发布于 2019-01-17 14:48:00 +0800 CST  
后面lz的人生迎来第一次转折
我来上海了

应该是2014年左右 互联网风口 趁着这股风口lz凭借上面说的第一点和第二点就拿到了 8k的工资 当时感觉一切都值得了

为了学习 每天几乎都爱凌晨三点睡
现在几乎没有那个时候的记忆了 只有代码代码 每天只有学习工作和基本的生理需求

找到上海的工作之后 我在看着东方明珠 痛哭流涕

楼主 清风_树  发布于 2019-01-17 14:55:00 +0800 CST  
快到公司了 晚上简单总结一下然后列个java入门学习提纲给大家参考参考

楼主 清风_树  发布于 2019-01-17 14:58:00 +0800 CST  
# java基础
java基础以thinking in java来进行入门.
说实话,thinking in java这本书不仅仅适合新手,而且适合比较资深的人员.
由于书籍相对顶级峰会和论文的滞后性,一些内容并不适合专家这个title的.大家注意
我会罗列一下java基础.然后介绍一下自己学习的深度

1. java基础-小白级别到新手级别
1.1 面向对象.简单知道面向对象是什么就好了.
1.2 java语言基础:jvm概念,半静态,.class定义,环境变量,操作符,基本语法(if,for),内置变量类型等.
1.3 jvm基础:内存概念,初始化过程,gc过程,访问控制,变量类型(这些仅仅知道概念即可)
1.4 java-api系列:java容器系列(list,map),string,io,泛型等(图形化记得不用学了)
1.5 简单设计:方法重写/重载,java的类继承,多态的概念.封装的概念等

可以说学完第一步就到了java的小白级别了.注意小白级别关注点是"浅尝即止".这里面的很多内容是java专家级别都不一定能回答好的.所以千万别走弯路.

我举个例子,java容器系列里面有个HashMap.有个问题是HashMap的内存结构和并发控制.这个问题曾经问倒了80%的阿里开发.所以最怕的以为自己会了其实是错的.

学完这些内容了就达到了"新手级别".哈下面几个问题各位可以简单想想.回答的上来就是新手级别了

Q1:static一个方法和static一个变量,使用他们的时候访问的内存是一样的么?
Q2:方法重写时,需要不需要方法的返回值必须相同.

后面简单介绍一下java新手-工作人需要的东西.还有天坑为什么说这些概念复杂.

楼主 清风_树  发布于 2019-01-17 19:04:00 +0800 CST  
说实话 我写的东西不知道大家能不能看的懂 可能很多同学会怀疑 比如hashmap有这么难么


但是我建议大家学习的第一点就是怀疑问题并且主动去找到答案 这个也是非常重要的能力

楼主 清风_树  发布于 2019-01-17 19:06:00 +0800 CST  
就hashmap的问题我引用一下内网ata的描述 大家可以看看师傅真的理解了



看到代码规约这一条的时候,我觉得是不是有点太 low 了,身为开发,大家都知道 HashMap 的原理。

什么?这个要通过插件监测?没必要吧,哪个开发不知道默认大小,何时 resize 啊,然后我和孤尽打赌随机咨询几位同学以下几个问题:

HashMap 默认bucket数组多大?
如果new HashMap<>(19),bucket数组多大?
HashMap 什么时候开辟bucket数组占用内存?
HashMap 何时扩容?
抽样调查的结果出乎我的意料:

HashMap 默认bucket数组多大?(答案是16,大概一半的同学答错)
如果new HashMap<>(19),bucket数组多大?(答案是32,大多被咨询同学都不太了解这个点)
HashMap 什么时候开辟bucket数组占用内存?(答案是第一次 put 时,一半同学认为是 new 的时候)
HashMap 何时扩容?(答案是put的元素达到容量乘负载因子的时候,默认16*0.75,有1/4同学中枪)
HashMap 是写代码时最常用的集合类之一,看来大家也不是全都很了解。孤尽乘胜追击又抛出问题:JDK8中 HashMap 和之前 HashMap 有什么不同?

楼主 清风_树  发布于 2019-01-17 19:26:00 +0800 CST  
孤尽大家应该都认识

就是阿里巴巴开发规范的作者

楼主 清风_树  发布于 2019-01-17 19:28:00 +0800 CST  
上班上的头疼 楼下抽根烟

看到吧里很多人问找工作的问题
还有人问不会高并发能不能找到工作

首先上观点 不会高并发肯定能找到工作 并且以我的经验(面试经验+去年36w业务tps支撑)看很多问高并发的人根本不了解什么是高并发

所以我的观点是 初中级工作(20k以内的)凭借基础知识加架构能力足矣


多说无益 上面介绍了java基础 后面会面对初中级java来介绍技能部分


楼主 清风_树  发布于 2019-01-17 20:19:00 +0800 CST  
好像没人关注哎 我介绍的都是干货啊

楼主 清风_树  发布于 2019-01-17 20:21:00 +0800 CST  
今天真是无聊 写了好多内容 发现没人关注又不想发了

郁闷

楼主 清风_树  发布于 2019-01-17 20:48:00 +0800 CST  
希望大家不要浮躁 静下心来

软件行业是难得的付出就有回报的行业

有两个词一直陪伴着我
一个是专注 一个是方向

不同阶段的人可能有不同的理解 这里就不过多解释了

楼主 清风_树  发布于 2019-01-17 20:53:00 +0800 CST  
当然了一些问题大家也可以问我 我可以给出我的理解和我的回答

楼主 清风_树  发布于 2019-01-17 21:02:00 +0800 CST  
# 工作技能
当初lz由于是自学.所以直接就奔着找工作去的.所以我的经历比较适合奔着工作去或者入门的程序员提升自己的人来学习.

当然有同学有自己的方法论了肯定更好.多多交流分享

## 框架基础
之前说了来到了上海,lz第二个选择是互联网公司.所以内容都是互联网公司的一些经验.
对于企业级并不一定完全满足
### 新手
1. jdbc.事实上软件的本质也是信息和数据的处理.所以作为java访问数据库的基础.jdbc肯定肯定是需要完全了解的.
2. ORM框架,目前比较火的应该还是mybatis.这些半orm框架是一定要掌握的.可以学习helloword然后思考功能实现,最后思考数据层如何设计
3. spring.spring作为一个框架,现在基本上已经脱离框架了.现在更像一个完备的技术栈.ps.我完全没有学习过springboot.因为我学习的时候还没有springboot.现在也完全不用springboot.对于新人来说**必须**先学习spring的基础之后再来学习其他的
4. 服务端mvc框架,推荐springmvc.如果是cs类的架构可能会用一些restfull的框架,不过无所谓.这些架构还比较简单.
5. web容器.tomcat了解一下?

以上就是新手的内容了.全部学习完毕可以说自己是初级java开发了.当然了前提是必须在理解的基础上再来表示自己学会.还是两个问题.

Q1:简单介绍一下服务器使用tomcat情况下类加载器和spring类加载器的交互
Q2:为什么说mybatic是半orm框架

楼主 清风_树  发布于 2019-01-17 22:35:00 +0800 CST  
这里说一下我的一些软件层次理解 大家可以交流交流

我发的初级程序员 大家可以发现推荐的都是基础技术 框架 api 等内容 所以初级程序员的关键词是学习和掌握

后面我会发中级 中级部分会明显有带有一定的方向性和思考性
所谓方向是指某些技术只有特定的业务场景会用 比如前端框架
所谓思考是指 你需要思考我为什么要用某种技术 解决了什么问题可能你没有答案 但是要有思考
所以中级的关键词是方向和思考


高级-资深 关键词是剑宗和气宗 本人偏气宗 后面详细理解

专家很简单 javaone qcorn等论坛上演讲的都是专家 大家可以体会体会

楼主 清风_树  发布于 2019-01-17 23:27:00 +0800 CST  

楼主:清风_树

字数:23707

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

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

评论数:1927条评论

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

 

热门帖子

随机列表

大家在看