大家好,我是qxlx
2023年马上就要结束了,在此周末空闲时间进行整体复盘一下2023年关于自己的生活、工作、学习进度,以此进行记录。
01 工作
粗略算起来,来北京已经3年之久,那时候还是一个懵懵懂懂的学生,到现在已经成长为一个职场老油条。期间因为大环境问题,去年换过一次工作。今年也算是成长比较坎坷的一年,职场上的不如意,凡凡心酸,还是不说太多。对于自己来说也算是一个比较好的成长机会,开始独立负责项目,遇到问题时从慌忙到开始独立解决一些问题。总体上工作上还好,进一步体会到工作中不仅仅技术重要,如何从领导到角度思考问题、解决问题 更重要。
在实际的工作中,新手可能一聊完需求,就马上上手准备开发,但是这样往往针对一些需求不了解的前提下,会导致重复返工。所以一定要想好在动手。另一个就是变更是故障之源,在修改任何代码、数据的时候,我们一定要确认好之后,才进行修改。
今年工作上比较多的地方是,开始独立承担一些项目,可以cover住整个风控项目,业务流程、数据流程,都是时间的一些积累。另外一个不足的地方就是,工作中其实是提供了一个解决问题的实际场景,想要多学习还是要靠平时8小时之外。进行系统化、体系化的学习。
02 学习
之前毕业后,自己的重心主要放在了学习架构相关的课程,后来发现对于现阶段的自己,更重要的是要把基础打扎实。从3月份到12月,输出了100多篇文章
整体路线就是:MySQL->Redis->Kafka->分布式->OS\网络->Spring\JUC源码
今年看过的专栏:
mysql45讲、消息队列高手课、Redis核心技术与实战、后端存储实战课、kafka核心技术与实战、分布式技术原理与算法解析、深入浅出分布式技术原理、分布式数据库 30 讲、分布式协议与算法实战、系统性能调优必知必会、重温左耳听风两遍(在这里向耗子叔致敬)、重温许式伟的架构课、趣谈网络协议、透视 HTTP 协议(部分)、趣谈 Linux 操作系统(部分)、代码之丑、设计模式之美(部分)、Linux 性能优化实战(部分)、Java之美(部分)
大厂学院:Redis、设计模式、Spring源码解读、周阳JUC
算法部分
从9月开始,坚持每天都刷题。
开始从年中总结自己的技能树 (后续也会不断的更新,欢迎star)
https://github.com/qxlx/skill-tree
03 生活
重要事件
国庆带女朋友回家见了家长 😄
这一年去过的地方。
夏天和同学(李工)一起骑行北京三环。21年骑行的北京二环。
- 海关博物馆、二刷(环球影城、国家博物馆、故宫、军事博物馆、电影博物馆)、农业展览馆、日坛、北京邮票博物馆
- 参加大学第一对同学的婚礼
- 休息日基本都是自己做饭,自己厨艺也慢慢有所提升。
- 今年看过的历史剧
- 大明王朝1566(权谋剧第一)、楚汉传奇、走向共和、老农民
04 24年计划
- 软件设计
- 阅读Kafka、Spring、Netty相关源码,并整理成博客。
- 算法
- 每日一题 坚持一年 以及将easy题刷完。争取达到1200题。
- 算法训练营视频学习完毕
- 性能优化
- 相关专栏、视频等
- 云原生
- Docker、K8s在深入学习。(云原生训练营)
- Go、pulsar
- 将Go并发深入学习,以及整理博客
- 技术管理 (技术经理实战训练营)
- 常用的中间件(es\zk\apollo等)
- 12本非技术书籍 / 5本技术书籍
最后,把我的座右铭送给你:日拱一卒,不期速成!
本篇的微信公众号文章
顺便花时间整理一下,今天在CSDN上发表的文章,按照系列划分基本如下
数据库
【数据库】join SQL语句原理优化
【数据库】数据库基础架构
【MySQL】聊聊数据库高可用
【数据库】聊聊MySQL的日志,binlog、undo log、redo log
【数据库】聊一下数据库的锁机制
【数据库】表数据delete了,表文件大小不变
【复盘】记录一次数据库连接超时问题
【复盘】记录一次锁库的生产故障
【复盘】记录一次数据库连接资源占用完毕
【复盘】主从延迟以及 Waiting for tablemetadata lock 线上问题
【数据库】数据库连接池导致系统吞吐量上不去-复盘
【数据库】聊聊一颗B+树 可以存储多少数据
Redis
【Redis】聊一下Redis基础架构
【Redis】Redis常用基本命令
【Redis】数据结构底层结构
【Redis】Redis 高性能IO模型原理
【Redis】IO多路复用机制
【Redis】聊一下持久化机制-AOF
【Redis】聊一下RDB持久化机制
【Redis】聊一下缓存双写一致性
【Redis】聊一下缓存雪崩、击穿、穿透、预热
【数据结构】Bloom Filter 布隆过滤器
【分布式系统】分布式锁实现之Redis
【Redis】聊一下Redis事务以及watch机制
【Redis】聊一下Redis数据同步/复制
【Redis】聊一下Redis的哨兵机制
【Redis】聊一下哨兵集群
【Redis】聊一下Redis切片集群的原理
消息队列
【消息队列】为什么使用消息队列,以及Kafka基本架构
【消息队列】聊一下Kafka Topic分区机制原理
【消息队列】消息积压了该如何处理
【消息队列】聊一下如何避免消息的重复消费
【消息队列】如何保证消息可靠传输
【消息队列】聊一下生产者消息发送流程
【消息队列】Kafka如何实现高性能IO
【消息队列】细说Kafka消费者的分区分配和重平衡
【消息队列】细说Kafka消费者位移机制
【消息队列】聊一下Kafka副本机制
【消息队列】聊一下Kafka多线程消费实例
【消息队列】Kafka高水位和Leader Epoch原理
【消息队列】Kafka主题管理机制
【消息队列】Kafka请求如何被处理的
【消息队列】Apache Pulsar存储计算分离
【复盘】记录一次生产事故-消息堆积
分布式领域
【分布式系统】分布式系统架构的冰与火
【分布式系统】架构演进方案
【分布式理论】聊一下 ACID、BASE、CAP、FLP
【分布式理论】两将军和拜占庭将军问题
【分布式存储】聊一下分布式存储中分片机制
【分布式存储】聊一下分布式存储之复制机制
【分布式存储】聊聊共识和一致性
【分布式存储】数据存储和检索~B+树
【分布式存储】数据存储和检索~LSM
【分布式存储】数据存储和检索~倒排索引&pageRank
【分布式系统】分布式系统的8个谬误
【分布式系统】聊聊系统监控
【分布式系统】聊聊服务调度
【分布式系统】聊聊流量和数据调度
【分布式系统】聊聊分布式事务中原子性
【分布式系统】聊聊高性能设计
【分布式共识】Basic Paxos 算法
【分布式共识】Multi-Paxos 算法思想
【分布式共识】Raft算法 选举一个领导者
【分布式共识】Raft算法 复制日志
【分布式共识】Raft算法 成员变更
性能设计篇
【性能设计篇】性能设计-缓存
【性能设计篇】数据库拓展
【性能设计篇】聊聊异步处理
【性能优化】聊聊性能优化那些事
【高可用架构】聊聊故障和高可用架构设计
【管理设计篇】聊聊系统部署生产有哪些方式
【管理设计篇】聊聊分布式配置中心
【弹力设计篇】聊聊API设计中的幂等性
【弹力设计篇】聊聊重试机制
【弹力设计篇】聊聊降级设计
【弹力设计篇】聊聊熔断设计
【弹力设计篇】聊聊限流设计
【弹力设计篇】聊聊异步通讯设计
【弹力设计篇】聊聊隔离设计
【弹力设计篇】聊聊灾备设计、异地多活设计
【弹力设计篇】弹力设计总结
网络协议
【网络协议】聊聊网络分层
【网络协议】聊聊ifconfig
【网络协议】聊聊DHCP和PXE 工作原理
【网络协议】聊聊从物理层到MAC层 ARP 交换机
【网络协议】聊聊拓扑网络结构与原理
【网络协议】聊聊ICMP与ping是如何测试网络联通性
【网络协议】聊聊网关 NAT机制
【网络协议】聊聊网络路由相关算法
【网络协议】聊聊UDP协议
【网络协议】聊聊TCP的三挥四握
【网络协议】聊聊TCP如何做到可靠传输的
【网络协议】聊聊套接字socket
【网络协议】聊聊http协议
【网络协议】聊聊HTTPS协议
【网络协议】聊聊DNS协议如何域名解析和负载均衡
【网络协议】聊聊CND如何进行提升系统读性能
【网络协议】聊聊HTTPDNS如何工作的
【网络协议】聊聊网络ReadTimeout和ConnectTimeout
操作系统
【Linux】uptime命令详解平均负载
【Linux】端口号进程 查询
【操作系统】聊聊用户态和内核态
【操作系统】聊聊文件传输的零拷贝、PageCache、异步IO机制
【操作系统】聊聊局部性原理是如何提升性能的
【操作系统】聊聊常见的内存管理方式
【操作系统】聊聊内存管理-分段-分页机制
【操作系统】聊聊页面置换算法
【操作系统】聊聊Linux内存工作机制
【操作系统】聊聊内存中的cache和buffer
【操作系统】聊聊进程、线程、协程
【操作系统】聊聊进程是如何调度的
【操作系统】聊聊协程为什么可以支撑高并发服务
【操作系统】聊聊进程间通信方式
【操作系统】聊聊C10K
【操作系统】聊聊文件系统是如何工作的
【操作系统】聊聊磁盘IO是如何工作的
【操作系统】聊聊什么是CPU上下文切换
【操作系统】聊聊CPU上下文切换实操
【操作系统】聊聊Linux软中断
【操作系统】聊聊不可中断进程和僵尸进程
并发编程
【并发编程JUC】Future和CompletableFuture机制
【Java并发】聊聊对象内存布局和syn锁升级过程
【Java并发】从simpleDateFormart聊聊threadlocal原理机制
【Java并发】聊聊AQS原理机制
【Java并发】聊聊ReentrantReadWriteLock锁降级和StampedLock邮戳锁
【Java并发】聊聊并发编程中的锁
【Java并发】聊聊死锁
【Java并发】聊聊如何优雅的暂停一个线程以及LockSupport
【Java并发】聊聊LongAdder应用场景及其原理
【Java集合】聊聊Hashmap的哈希函数、扩容、树化
【Java并发】聊聊线程池原理以及实际应用
【Java并发】聊聊创建线程池的几种方式以及实际生产如何应用
【Java并发】聊聊不安全的HashMap以及ConcurrentHashMap
【源码解析】聊聊线程池 实现原理与源码深度解析(一)
【源码解析】聊聊线程池 实现原理与源码深度解析(二)
【源码解析】聊聊阻塞队列之BlockingArrayQueue
【源码解析】聊聊阻塞队列之LinkedBlockingQueue
【源码解析】从ReentrantLock角度聊聊AQS原理
【源码解析】从Conditon角度聊聊AQS原理
【源码解析】从CountDownLatch角度聊聊AQS
【源码解析】从CyclicBarrier角度聊聊AQS
【源码解析】Semaphore角度聊聊AQS
【Java并发】聊聊线程的几种状态
【源码解析】聊聊ReentrantReadWriteLock是如何实现的读写锁
【并发设计模式】聊聊两阶段终止模式如何优雅终止线程
【并发设计模式】聊聊Immutability模式利用不变性解决并发问题
【并发设计模式】聊聊 基于Copy-on-Write模式下的CopyOnWriteArrayList
【并发设计模式】聊聊线程本地存储模式如何实现的线程安全
源码解析
【源码解析】一张图了解spring内部原理
【Spring】聊聊Spring如何解决的循环依赖以及三级缓存
【源码解析】Spring源码解读-bean的加载
【源码解析】Spring源码解读-beanFactory和Bean的后置处理器流程
【源码解析】聊聊SpringBean是如何初始化和创建
【源码解析】Spring Bean定义常见错误
【源码解析】聊聊SpringBoot自动装配如何实现的
其他
【Go进阶训练营】聊一下go的gc原理
【Go进阶训练营】内存分配原理
【软件工程】应对故障最佳实践
【复盘】聊一下如何高效学习
【复盘】记录一次类型不一致导致的Kafka消费异常问题
【编程范式】聊聊什么是数据类型和范式的本质
【编程范式】聊聊编程的本质
【编码规范】从代码之丑聊代码规范
【云原生】聊聊为什么需要docker以及其基础架构
【复盘】记录一次JVM 异常问题 java.lang.OutOfMemoryError: unable to create new native thread
【设计原则篇】聊聊单一职责原则
【设计原则篇】聊聊开闭原则
【设计原则篇】聊聊里氏替换原则
【设计原则篇】聊聊接口隔离原则
【设计模式】聊聊模板模式
【设计模式】聊聊策略模式
【设计模式】聊聊职责链模式
【Java异常】聊聊异常可能带来的坑