迷茫,坚持不下去了
这是「编程杂感」系列第 7 期。我想尽可能每周或者每两周分享一篇 「编程杂感」, 分享自己最近的思考和碰到的比较有趣的东西。每个周末思考 「编程杂感」 要分享的内容,对我来说是一件非常有意义的事情。如果我分享的内容,对你也有帮助或者启发的话,那就更有意义了。😁
另外,分享的内容,我不太想局限在编程领域。编程不是一个程序员的全部,还有其他很有意思的东西等待我们发现。
思考
知识面
一位星球读者提问:“面试官说我知识面很零碎”。
我的回答:
知识面很零碎,实际上表达的意思是你的深度不够,浮于表面。我不清楚具体应该怎么将所学的知识点串起来,我只知道学习任何一个模块比如并发、比如分布式,都应该先从全局了解大概,再从具体的接入点深入研究。比如问你分布式缓存,你就要想到 Redis :Redis 和 MySQL 的对比、Redis 和同类型软件的对比、Redis 用来解决什么问题,Redis 常见数据结构、每种数据结构的应用场景...... 再比如针对 Redis 的某个数据结构,面试官可能会问 xxx (比如点赞、排行榜等等)如何设计?
一定不要死记硬背,尽量能够和自己已知的知识产生火花,比如你在复习缓存相关面试题的时候,可以顺便看看操作系统中类似的内容 比如 CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。再比如你在复习消息队列面试题的时候,你想到这个东西属于提高网站并发的家伙,然后,你顺便就可以看看读写分离、分库分表、缓存、负载均衡这些东西。
了解自己
前几天一位读者找到我咨询一些问题,我回答的比较仓促。
我这里把聊天记录原滋原味地放出来,希望可以解答和这位读者有类似疑问的小伙伴的问题。
开源
最近两周,awesome-java[1] (非常棒的 Java 开源项目集合)这个项目中又添加了 2 个不错的开源项目。
MeterSphere[2] : 一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,全面兼容 JMeter、Postman、Swagger 等开源、主流标准。 Disruptor[3] :高性能内存队列,用于解决内存队列的延迟问题(在性能测试中发现竟然与 I/O 操作处于同样的数量级)。 《高性能内存队列——Disruptor》[4] 《你应该知道的高性能无锁队列 Disruptor》[5]
阅读
这两周我阅读了很多质量非常高的文章,我这里简单分享一些我觉得对大家有用的。另外,这些文章中的一些我觉得比较优秀的观点我也会分享出来。
1.《那些年,我们见过的 Java 服务端乱象—阿里巴巴中间件》👍👍👍👍
a.建议 Redis 相关的代码要单独抽一个Repository
!
@Repository
public class UserRedis {
@Autowired
private RedisTemplate<String, String> redisTemplate;
public UserDO save(UserDO user) {
}
}
b.尽量减少返回给前端的无用的数据(VO)。
很多开源项目在这块其实做的比较佛系,很多就是直接把整个对象中的所有信息都返回给前端,也不管有没有用!
为什么要限制接口返回的数据呢?
接口返回的数据量太大,有些数据根本用不到,属实浪费。 可能会导致有些敏感的数据暴露了出来,造成安全问题。 ......
c.一些通用的静态函数放入工具类中,需要的时候直接使用!
/** 用户辅助类 */
public class UserHelper {
/** 获取用户名称 */
public static String getUserName(UserDO user) {...}
...
}
2.《你精通那么多技术,为何还是做不好一个项目?—四猿外》 👍👍👍👍👍
前期不注意代码质量和系统架构是导致项目最终走向衰败的最常见诱因。 提高代码质量的一些手段: 复用:打造自己的 lib 和 framework 控制逻辑分离:业务模板 充血枚举类型
3.《再读《重构》- ThoughtWorks 洞见》 👍👍👍👍👍
下面是我对本文内容所做的总结,感兴趣的小伙伴可以仔细看看。
4.《Pulsar 系列》
最近消息队列 Pulsar 貌似比较火爆,我阅读了一些相关的文章,分享一下。
Pulsar 官方文档[6] 👍👍👍👍👍 :Pulsar 官方文档有中文版,对 Pulsar 的使用(比如如何在 Java 集成和使用 Pulsar )以及各种特性的介绍非常详细,想要深入研究 Pulsar 的小伙伴,一定要多看几遍! 《比拼 Kafka, 大数据分析新秀 Pulsar 到底好在哪》[7] 👍👍👍👍:这是 2018 年 InfoQ 编辑翻译的一篇文章!详细介绍了 Pulsar 如何发送和消费消息、如何确认消息以及如何保存消息。并且,还将 Pulsar 和 Kafka 进行了对比。 《为什么放弃 Kafka,选择 Pulsar?》 👍👍👍:主要介绍了 Pulsar 的一些特性,并将其和 Kafka 和 RocketMQ 做了对比!
5.《阿里巴巴淘系技术的 DDD 系列的文章》
一共有 5 篇!5 篇读完之后,收益颇多!第二讲应用架构推荐一定要看一下,对于我们如何规划项目结构来解耦合挺有指导意义的!
其他的一些好文:
《职场 | 工作五年之后,对技术和业务的思考》 👍👍👍👍 《工程师应该怎么学习》[8] 👍👍👍👍👍
Guide 哥的一些原创:
《一坨一坨的 if/else 参数校验,终于被 SpringBoot 参数校验组件整干净了!》 《蘑菇街大三 Java 后端暑期实习》 《30 张图!手把手带你盘 Spring Boot 前后端分离实战项目!》
闲聊
昨天去家旁边的盲人按摩店体验了一次全身经络推拿,全身放松的感觉还是很赞的。
给我按摩的那个小哥是一位白化病患者,人很阳光,交流起来非常愉快。
我留意了一下,这个按摩店里的大多都是一些残疾人。作为消费者,我真心替他们感到高兴。
我想着以后可以尽量一个月来个 2 次,这样自己得到了放松,也顺便能够照顾一下店里的生意。
终于写完了这篇杂感,此刻我正在啃着玉米。这两周我吃了有很多根玉米了,讲真,比较嫩一点的玉米蒸出来是真的好吃,汁水很多,很甜。
如果你还想在编程杂感这个系列看到其他方向的内容的话,欢迎在评论区留言!
参考资料
awesome-java: https://github.com/CodingDocs/awesome-java
[2]MeterSphere: https://github.com/metersphere/metersphere
[3]Disruptor: https://github.com/LMAX-Exchange/disruptor
[4]《高性能内存队列——Disruptor》: https://tech.meituan.com/2016/11/18/disruptor.html
[5]《你应该知道的高性能无锁队列 Disruptor》: https://juejin.cn/post/6844903648875528206
[6]Pulsar 官方文档: https://pulsar.apache.org/docs/zh-CN/next/concepts-overview/
[7]《比拼 Kafka, 大数据分析新秀 Pulsar 到底好在哪》: https://www.infoq.cn/article/1UaxFKWUhUKTY1t_5gPq
[8]《工程师应该怎么学习》: https://www.xargin.com/how-to-learn/
推荐👍 :1049天,100K!简单复盘!
推荐👍 :年薪 40W Java 开发是什么水平?
推荐👍 :Github掘金计划:Github上的一些优质项目搜罗