小傅哥，想问问你一般是怎么进行功能拆解和梳理的，有的时候明明好好的梳理后，到开发时还会遇到某些功能没有考虑完善。

问题和建议：

1. 研发做细节设计进行拆解和梳理后有无架构师、前端&后端、测试、产品、运营等项目成员参与评审？
2. 产品是否在开发阶段继续增加或者调整需求了？
3. 研发在开发时候是否完全遵守开了开发的规则标准？
4. 另外即使最完整的设计，也可能会在具体的开发实现过程中，遇到一些功能是设计阶段没有考虑清楚的。但只要这个变化是可控的就可以。

---

小傅哥，作为入行不久的人来说，是关注技术深度，还是关注技术广度。

以我个人的经验来看，技术广度和技术深度的学习是相辅相成的，当你能拿起铁锹挖土、挖沙子、挖坑，挖的多了就会想着能不能来个挖掘机深入的挖一下！

在你所能接触的日常业务开发过程中，一定会潜移默化的开始听闻到知晓到了解到学习各种各样的技术，以及为了解决某个问题时研究新的组件或者框架。对于新人来说其实你最开始手里的能力也就只能让你用这些框架或者轮子，只有当你不断的一点点熟练各个框架后，才可能深入的去了解一些技术的内核，但这些技术的内核又和其他技术关联。只要你不断的学习，你就会遇到一会需要扩宽技术知晓度，一会又要深挖技术底层实现，这样的学习过程像一个双螺旋结构，互相相应着。

所以，对你现在来说可以更多的关注使用，但在使用完成后进行总结，尝试去阅读一些自己好像很难理解的技术内容，慢慢的，这些知识会随时你学习时间的增加，一点点被你的大脑吸收！

---

小傅哥，来自传统行业，项目多为管理系统，出去面试的时候很吃亏，请问这种情况该怎么包装项目经验，获得更多的面试机会，谢谢！

一般管理系统都是面向B端人群使用，此类系统很难有一些技术上的亮点，比如：分库分表、分布式开发、并发经验、秒杀场景、系统优化等，那么如果需要包装，其实也就是需要自己学习补充此类技术内容。

可以参考学习的类型项目包括以下三方面：

组件：以考察源码以及核心技术的使用能力，比如开发一些：RPC、网关、数据库路由、分布式任务等，把这样的技术学习是使用放到面试简历中，一定是会加分的。如果有学习此类内容的想法，建议先阅读设计、之后是 Spring 源码，最后是关于中间件的设计和开发。这三项内容目前小傅哥都有写，可以进行学习。

业务：通常你出去面试特别高频的问题，往往集中在电商、交易、秒杀、抽奖、活动这些方面，那么你可以有针对性的在 github 搜索一些关于此类的项目，还是蛮多的。

运维：此类项目多以部署服务、系统压测、性能监控、插件开发为主，比如一些低代码平台也是从此类技术中衍生出来的，如果你能在面试中说上一些，也是非常不错的。

没有空空荡荡的包装，只有深入的学习和实践，才能在面试中不被问住！从以上这些方面下手吧！

---

问一个工作中遇到的问题,需要导出数据生成excel，整个流程就是读数据-->生成excel(单sheet页)-->每200个生成7z压缩包-->上传文件服务器-->更新任务，生成excel时使用了多线程,目前从日志情况看来1s生成一个,还有什么方法可以优化生成速度,目前想到了excel模板读入内存中，别的还请给点优化建议

一般此类集中式的任务，建议通过分布式的方式进行处理。可以把多线程拆分为多服务操作。比如：

1. 使用分布式任务的方式进行处理，把需要生成的 excel 划分为不同的任务清单，之后这个清单信息交给分布式集群中不同的任务实例进行处理。
2. 也可以通过MQ的方式替换多线程生成，也算是一种把生成excel的任务拆解到不同的机器上去执行。
3. 其实无论如何都是在想办法去集中化，没必要非得压榨一台机器的性能，除非你那只有一台机器。 

---

提问：傅哥 我想了解下互联网公司在项目上线前是如何进行一个全面的性能测试的。比如内存占用，cpu占用，还有网络的负载情况等等

一般较大型的互联网公司都有比较完善的运维服务，包括上线发布、系统监控、数据库监控、机器监控、网络监控等等，这些监控系统中可以提供：日志打印、链路追踪、TP99、TP999、QPS、TPS、可用率、调用时长、数据库耗时、redis耗时、逻辑耗时、内存占比、CPU、LOAD、IO、数据库慢查询、数据库连接数、数据库事务等等。基本上目前在阿里以及专门做监控组件的公司，都提供了以上各种监控工具，可以使用下。

例如：使用字节码插桩方式的非入侵的全链路监控，就能打印各项信息。

==========================================================

onTransformation：class org.itstack.demo.test.ApiTest
测试结果：hi2 悟空
测试结果：hi1 哪咤
测试结果：hi3 悟空
链路追踪(MQ)：608a1cbf-ef1f-4195-bdc7-c3729a114f8d org.itstack.demo.test.ApiTest.http_lt3 耗时：111ms
测试结果：hi2 哪咤

init: 192MB	 max: 2708MB	 used: 43MB	 committed: 184MB	 use rate: 23%
init: 2MB	 max: 0MB	 used: 13MB	 committed: 14MB	 use rate: 95%

name: PS Scavenge	 count:0	 took:0	 pool name:[PS Eden Space, PS Survivor Space]
name: PS MarkSweep	 count:0	 took:0	 pool name:[PS Eden Space, PS Survivor Space, PS Old Gen]
-------------------------------------------------------------------------------------------------
链路追踪(MQ)：608a1cbf-ef1f-4195-bdc7-c3729a114f8d org.itstack.demo.test.ApiTest.http_lt2 耗时：338ms

init: 192MB	 max: 2708MB	 used: 43MB	 committed: 184MB	 use rate: 23%
init: 2MB	 max: 0MB	 used: 13MB	 committed: 14MB	 use rate: 95%

name: PS Scavenge	 count:0	 took:0	 pool name:[PS Eden Space, PS Survivor Space]
name: PS MarkSweep	 count:0	 took:0	 pool name:[PS Eden Space, PS Survivor Space, PS Old Gen]

-------------------------------------------------------------------------------------------------

---

你好，傅哥，我是从读者晋级成粉丝的，最早就看过傅哥第一版的关于设计模式的文章，写的很有意思，奈何一致没找到组织，哈哈，傅哥，想跟您聊一下几个问题，最近太困扰我了

      1.面临选择，回家和继续在一线城市中奋斗， 其实生活都是自己选择的，可是非得两难的处境中挣扎，对于我自身，属于Java后端的从业者，目前是工作时间不到两年，除了提升自己技术之外，也更需要锻炼自己的抵抗外界的不确定性，想问一下傅哥就目前而言，如何技术实力提升的同时，需要习惯或者思维方式，可以更好的锻炼自己，想要进大厂

      2.对于技术学习，一般从什么开始，我可能就直接从官网，或者搜个视频就直接开始了，但是感觉自己学的技术点很松散，想问一下傅哥，您如果学习一个新的技术点，比如dubbo的，怎么系统开始，多面手的展开


     3.傅哥的文章我基本都在读，公众号中的文章质量都很高，基本是一周2-3 篇， 很干货，您平时都是怎么做时间管理的？对于自己一天您一般时怎么规划的？

     4.傅哥，最近看的一本书是什么？

1. 不知道你目前是否在大厂还是一般的小企业中，在技术学习上是否可以有充足的土壤环境？
2. 其实除了一线城市，其他很多城市并没有这样的技术氛围，如果冒然离开，可能自己会后悔。
3. 就我自己而言，工作两年的时候，正是从一个传统的外包行业跳槽到互联网。因为平时喜欢折腾各类技术，也经常总结整理资料，所以从传统行业到互联网并没有太大的压力。
4. 在公司中工作不太可能一直长久下去，到了一定年纪可以开始考虑以后的出路，比如35-40岁，自己还能做点什么、身体还健康吗、坚持跑步吗、持续学习吗，这些都是你在不确定性因素中获利的必要条件。
5. 关于技术学习，我的方式是：头几年时候自己积累的少，新技术完全没用过，就找视频、找案例，越简单、越快速入门越好。但随着时间的推移和自身技术的积累，目前对于新技术的学习，我更喜欢先做做案例，之后看看源码。就比如 RPC 框架 Dubbo 而言，我的方式是照着它的源码，自己实现了一个简单的 RPC 服务，别说，实现完之后，真的是很通透。但这样的手写的方式对新人压力不小，你需要学过一定的设计模式、Spring源码、扩展类的技术如Netty、字节码框架等等，来支撑你学习新技术点中的各项内容。
6. 目前我的时间安排，主要是早睡早起、起来跑步、周末肝文、假期肝文，日常时间积累碎片内容，大块时间时候进行整理。两年时间中，基本没有过一个较长的假期用于玩，都是在写文章，哪怕是在医院陪床的时候。对了，还有一个非常重要的点，就是离公司非常近，可以走路回家。
7. 关于看书，以前学习的过程主要以看书为主，每个月都会拿出一部分钱用来买书，买服务器、买资料、总之只要是有价值于我的内容，我不会把钱浪费在出去玩、出去喝上。而目前学习的方式主要是看源码、文档、做案例，所以看书的内容就会少一些。有时候出版社送的书，会阅读下，以及逛图书馆的时候会翻阅翻阅。

希望你可以继续坚持学习下来，每一个知识项只要你能一直坚持做，2-3年一定可以成为这个领域的专家，职位和收入也会随之而来！

---

问个跟之前相关的问题，我也是来自传统行业，目前项目是springboot+dubbo。但是就看的招聘看，springcloud已经成为必须得技能，目前从我看到的两门慕课网课程来看，基本的springcloud技术栈功能都很浅很少。。想问问小傅哥有什么好的学习建议或者系列专栏博客之类的。视频课程也行。或者有什么从零上手的springcloud开源项目。同理，在面试之前，传统行业，我们如何学习工作之外的技术栈。

1. 其实较大型的互联网中 SpringCloud 使用的没有 Dubbo 或者公司自研的 RPC 框架多。
2. SpringBoot + Mybatis + Dubbo + MQ + 分布式任务 + 分库分表 + 配置中心 + 网关 + 数据同步 ES 的组合比较多。
3. 学习 SpringCloud 推荐：https://github.com/forezp/SpringCloudLearning
4. 传统行业职位的技术栈，这个我建议你先梳理出一个 xmind 表，列出你目前已经会的技术、想学的技术，之后我按照互联网中用到的技术栈，来给你总结，告诉你可以先从哪个开始。