java的架构之路

对于java开发,只要入门,就可以做模块性开发了,这样做了几年开发,发现只是开发速度快了、出错率低了、解决问题的能力提升了,但依旧处于“搬砖”的层级上,平时也看书,但发现看书只是似懂非懂状态,过不了多久就忘了。如果把做软件项目比作盖楼,盖一座大楼需要各种人,如何在身处做技工的你,一步步提升呢?两个字:尝试
软件行业的尝试成本基本上是0。比如你的框架现在用的springMVC,你可以在业余时间尝试springboot。如果你的tomcat使用的NIO模式,你可以尝试换成APR模式。尝试做工具、做插件。尝试做运维等等。在不停的尝试中,广度的接触不同技术,然后在解决问题上,进行深度学习,进一步学习源码,从源码里分析出设计模式。如何进行循序渐进的系统性学习呢,这里说下大概的学习路线:

一、基础

设计模式

设计模式其实跟你的生活模式密切相关,所以这里说下怎么能将设计模式灵活的运用到开发中,而不是死记硬背。

  1. 单例模式:做饭用的锅,不能每次做饭,都得买个新锅,如果你钱够多,房间够大,如果物业好,还能定期清理
  2. 工厂模式:主要分为简单工厂和抽象工厂,二者就像是一开始就一个工厂能造机器人,后来呢,很多工厂都会造机器人,简单工厂是把造机器人的方法抽象了,而抽象工厂是把能造机器人的工厂抽象了
  3. 代理模式:只需要把需求告诉“专业”代理人,你只需要等待结果就好了_ 这个也是我最喜欢的
  4. 观察者模式:这个就厉害了,就像是有个间谍一直给你监听消息
  5. 模板模式:玩个魂斗罗,每次都得选人、选关,或者还得上上下下左左右右ABAB,按照他的模板搞就行了
  6. 原型模式:这个核心思想就是复制,将原型复制出一份成为克隆对象。比如每天写工作日报,会把昨天的复制一份,再修改成今天的,这是浅克隆。深克隆是把别人日报里能跟你牵扯到的,都复制了。
  7. 策略模式:一听就是得需要动脑子的模式,就像生活中你出去旅游,需要做多少攻略,选择什么样子的交通工具,选择多少行李等等
多线程
  1. 线程状态

    1.1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。
    1.2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。
    线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。
    1.3. 阻塞(BLOCKED):表示线程阻塞于锁。
    1.4. 等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
    1.5. 超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回。       
    1.6. 终止(TERMINATED):表示该线程已经执行完毕。
    
  2. 线程管理

    2.1. 线程的创建与运行,继承Thread类或者事项Runnable接口。
    2.2. 线程信息的获取和设置,Thread类有一些保存信息的属性,这些属性可以用来标示线程,显示线程的状态或者控制线程的优先级。
    2.3. 线程的中断,Java提供中断机制,可以使用它来结束一个线程。这种机制需要检查线程是否被中断,然后决定是否响应这个中断请求,线程允许中断请求并继续执行。
    2.4. 线程中断控制,使用Java异常InterruptedException()来控制控制。
    2.5. 线程的休眠和恢复,使用sleep()方法控制线程休眠。
    2.6. 等待线程的终止,Java中使用Thread类里的join()方法实现线程终止。当一个线程对象的join()方法被调用时,调用它的线程将被挂起,直到这个线程对象完成它的任务。
    2.7. 守护线程的创建和运行,Java有一种特殊的线程叫守护线程。这种线程优先级比较低,通常来说,当同一个应用程序里没有其他线程运行的时候,守护线程才运行。当守护线程时程序中唯一运行的线程时,守护线程执行结束后,JVM也就结束了这个线程。
    2.8. 线程局部变量的使用,共享数据是并发程序最核心的问题之一,对于继承Thread类或者实现Runnable接口对象来说尤其重要。
    
  3. 线程安全
    3.1. 线程锁:如果按照名称来说,锁大概有以下名词:
    自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁 ,互斥锁 ,悲观锁 ,乐观锁 ,公平锁 ,偏向锁, 对象锁,线程锁,锁粗化, 锁消除,轻量级锁,重量级锁, 信号量,独享锁,共享锁,分段锁。常见的锁Synchronized和Lock,分布式锁
    3.2. 锁机制:锁的happens-before关系,程序顺序规则:在一个线程中,前面的操作happens-before后面的操作
    锁规则:对同一个锁,解锁happens-before加锁。
    传递性规则:A happens-before B,B happens-before C,则A happens-before C

  4. 线程池
    4.1 线程池作用
    4.2 线程池核心类
    4.3 线程池原理
    4.4 任务缓存队列及排队等策略

  5. Fork/Join框架
    5.1 使用场景
    5.2 ForkJoin 实现原理
    5.3 容错处理

spring

spring这里就不详细介绍了,因为有太多的东西需要介绍了,但是一定要明白它是怎么实现的,比如请求是如何分发的,页面是如何加载的,orm框架的session是如何管理的、懒加载是如何实现的等等。spring包含以下大的方面,可以逐个突破。

  1. spring core包类
  2. spring AOP
  3. spring ORM
  4. spring Dao
  5. spring Web
  6. spring Context
  7. spring WebMvc

二、分布式

分布式架构
  1. 分布式架构的演进
  2. CDN加速
  3. 负载均衡
  4. 系统监控、容灾、存储动态扩容
  5. 架构设计及业务驱动设计
  6. CAP
分布式中间件
  1. 消息通信:mq、kafka
  2. redis主从复制、持久化方式策略
  3. Nginx反向代理服务器及负载均衡配置
  4. 基于Netty的高性能IM聊天
  5. Netty与tomcat apr场景应用
分布式架构实战
  1. 分布式事务解决方案
  2. 分布式锁的解决方案
  3. 分布式下定时任务
  4. 分布式下Session跨域共享及单点登录解决方案

三、微服务

springCloud
  1. Eureka 服务注册
  2. Ribbon 负载均衡
  3. Feign 服务请求
  4. Hystrix服务熔断处理
  5. Zuul微服务网关
  6. Admin服务监控
  7. Config配置中心
Docker
  1. Docker镜像、仓库、容器
  2. 基于Swarm构建Docker集群
  3. Docker在框架里的配置
微服务实战
  1. springCloud里的security配置
  2. springCloud里的Outh2.0配置
  3. springCloud里的mq、tomcat等优化
  4. 应该如何设计服务,如何进行服务拆分

四、性能优化

Tomcat优化
  1. tomcat运行机制
  2. 分析tomcat线程模型
  3. tomcat 系统参数优化
  4. 基准测试
JVM优化
  1. JVM工具检测占用内存比较大线程
  2. 内存模型
  3. GC日志
  4. 实战MAT分析dump文件
  5. 了解垃圾回收器及场景优化
数据库调优
  1. sql执行计划详解
  2. 索引优化
  3. SQL语句优化
  4. 分区、主从

欢迎大家关注我,联系我进行技术讨论。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值