前言
Java作为最全面的语言,国内开发者也是最多的,Java综合起来各方面都不错,在大部分场景下是一种稳健的技术选择。加上近年来安卓的推动,目前也是最流行的一种语言。
现在Java的就业市场看起来还是挺大的,而且工资也是比较可观的,**但我为什么说是看起来呢?**其实,最主要的原因还是市场决定的,每年涌入市场的Java开发人员应该是最多的,但是市场上Java初级开发人员早已经饱和了,也就造成了就业市场较大的假象。如果初级程序员一直不提升技术,那么注定要被淘汰。
那么要如何才能系统的学习Java语言,从一名初中级开发人员成长到一名高级开发甚至是架构师呢?下面请听我娓娓道来!(tips:以下包含的一些学习笔记,都是由各路大牛以及我自己整理的,各位可以好好食用!)
专题5:Java序列化
- 1、什么是java序列化,如何实现java序列化?
- 2、保存(持久化)对象及其状态到内存或者磁盘
- 3、序列化对象以字节数组保持-静态成员不保存
- 4、序列化用户远程对象传输
- 5、Serializable 实现序列化
- 6、writeObject 和 readObject 自定义序列化策略
- 7、序列化 ID
- 8、序列化并不保存静态变量
- 9、Transient 关键字阻止该变量被序列化到文件中
- 10、序列化(深 clone 一中实现)
文章图片
专题6:Java注解
- 1、4种标准元注解是哪四种?
- 2、注解是什么?
- 1、Java中实现多线程有几种方法
- 2、继承 Thread 类
- 3、实现 Runnable 接口。
- 4、ExecutorService、 Callable、 Future 有返回值线程
- 5、基于线程池的方式
- 6、4 种线程池
- 7、如何停止一个正在运行的线程
- 8、notify()和notifyAll()有什么区别?
- 9、sleep()和wait() 有什么区别?
- 10、volatile 是什么?可以保证有序性吗?
- 11、Thread 类中的start() 和 run() 方法有什么区别?
- 12、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
- 13、为什么wait和notify方法要在同步块中调用?
- 14、Java中interrupted 和 isInterruptedd方法的区别?
- 15、Java中synchronized 和 ReentrantLock 有什么不同?
- 16、有三个线程T1,T2,T3,如何保证顺序执行?
- 17、SynchronizedMap和ConcurrentHashMap有什么区别?
- 18、什么是线程安全
- 19、Thread类中的yield方法有什么作用?
- 20、Java线程池中submit() 和 execute()方法有什么区别?
- 21、说一说自己对于 synchronized 关键字的了解
- 22、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
- 23、什么是线程安全?Vector是一个线程安全类吗?
- 24、volatile关键字的作用?
- 25、简述一下你对线程池的理解
- 26、线程生命周期(状态)
- 27、新建状态(NEW)
- 28、就绪状态(RUNNABLE)
- 29、运行状态(RUNNING)
- 30、阻塞状态(BLOCKED)
- 31、线程死亡(DEAD)
- 32、终止线程 4 种方式
- 33、start 与 run 区别
- 34、JAVA 后台线程
- 35、什么是乐观锁
- 36、什么是悲观锁
- 37、什么是自旋锁
- 38、Synchronized 同步锁
- 39、ReentrantLock
- 40、Condition 类和 Object 类锁方法区别区别
- 41、tryLock 和 lock 和 lockInterruptibly 的区别
- 42、Semaphore 信号量
- 43、Semaphore 与 ReentrantLock 区别
- 44、可重入锁(递归锁)
- 45、公平锁与非公平锁
- 46、ReadWriteLock 读写锁
- 47、共享锁和独占锁
- 48、重量级锁(Mutex Lock)
- 49、轻量级锁
- 50、偏向锁
- 51、分段锁
- 52、锁优化
- 53、线程基本方法
- 54、线程等待(wait)
- 55、线程睡眠(sleep)
- 56、线程让步(yield)
- 57、线程中断(interrupt)
- 58、Join 等待其他线程终止
- 59、为什么要用 join()方法?
- 60、线程唤醒(notify)
- 61、线程其他方法
- 62、进程
- 63、上下文
- 64、寄存器
- 65、程序计数器
- 66、PCB-“切换桢”
- 67、上下文切换的活动
- 68、引起线程上下文切换的原因
- 69、同步锁
- 70、死锁
- 71、线程池原理
- 72、线程复
- 73、线程池的组成
- 74、拒绝策略
- 75、Java 线程池工作过程
- 76、JAVA 阻塞队列原理
- 77、Java 中的阻塞队列
- 78、ArrayBlockingQueue(公平、非公平)
- 79、LinkedBlockingQueue(两个独立锁提高并发)
- 80、PriorityBlockingQueue(compareTo 排序实现优先)
- 81、DelayQueue(缓存失效、定时任务 )
- 82、SynchronousQueue(不存储数据、可用于传递数据)
- 83、LinkedTransferQueue
- 84、LinkedBlockingDeque
- 85、在 java 中守护线程和本地线程区别
- 86、线程与进程的区别?
- 87、什么是多线程中的上下文切换?
- 88、死锁与活锁的区别,死锁与饥饿的区别?
- 89、Java 中用到的线程调度算法是什么?
- 90、什么是线程组,为什么在 Java 中不推荐使用?
- 91、为什么使用 Executor 框架?
- 92、在 Java 中 Executor 和 Executors 的区别?
- 93、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?
- 94、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
- 95、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
- 96、什么是 Executors 框架?
- 97、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
- 98、什么是 Callable 和 Future?
- 99、什么是 FutureTask?使用 ExecutorService 启动任务。
- 【程序员|程序员经验分享(2021年字节跳动+京东+美团面试总结)】100、什么是并发容器的实现?
- 101、多线程同步和互斥有几种实现方法,都是什么?
- 102、什么是竞争条件?你怎样发现和解决竞争?
- 103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- 104、Java中,你怎样唤醒一个阻塞的线程?
- 105、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
- 106、什么是不可变对象,它对写并发应用有什么帮助?
- 107、Java 中用到的线程调度算法是什么?
- 108、什么是线程组,为什么在 Java 中不推荐使用?
文章图片
专题8:JVM
- 1、java中会存在内存泄漏吗,请简单描述。
- 2、64 位 JVM 中,int 的长度是多数?
- 3、Serial 与 Parallel GC 之间的不同之处?
- 4、32 位和 64 位的 JVM,int 类型变量的长度是多数?
- 5、Java 中 WeakReference 与 SoftReference 的区别?
- 6、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用?
- 7、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
- 8、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
- 9、JRE、JDK、JVM 及 JIT 之间有什么不同?
- 10、解释 Java 堆空间及 GC?
- 11、JVM 内存区域
- 12、程序计数器(线程私有)
- 13、虚拟机栈(线程私有)
- 14、本地方法区(线程私有)
- 15、你能保证 GC 执行吗?
- 16、怎么获取 Java 程序使用的内存?堆使用的百分比?
- 17、Java 中堆和栈有什么区别?
- 18、描述一下 JVM 加载 class 文件的原理机制
- 19、GC 是什么?为什么要有 GC?
- 20、堆(Heap-线程共享) -运行时数据区
- 21、方法区/永久代(线程共享)
- 22、JVM 运行时内存
- 23、新生代
- 24、老年代
- 25、永久代
- 26、JAVA8 与元数据
- 27、引用计数法
- 28、可达性分析
- 29、标记清除算法( Mark-Sweep)
- 30、复制算法(copying)
- 31、标记整理算法(Mark-Compact)
- 32、分代收集算法
- 33、新生代与复制算法
- 34、老年代与标记复制算法
- 35、JAVA 强引用
- 36、JAVA软引用
- 37、JAVA弱引用
- 38、JAVA虚引用
- 39、分代收集算法
- 40、在新生代-复制算法
- 41、在老年代-标记整理算法
- 42、分区收集算法
- 43、GC 垃圾收集器
- 44、Serial 垃圾收集器(单线程、 复制算法)
- 45、ParNew 垃圾收集器(Serial+多线程)
- 46、Parallel Scavenge 收集器(多线程复制算法、高效)
- 57、Serial Old 收集器(单线程标记整理算法 )
- 58、Parallel Old 收集器(多线程标记整理算法)
- 59、CMS 收集器(多线程标记清除算法)
- 60、G1 收集器
- 61、JVM 类加载机制
- 62、类加载器
- 63、双亲委派
- 64、OSGI( 动态模型系统)
- 65、动态改变构造
- 66、模块化编程与热插拔
- 67、JVM内存模型
- 68、栈
- 69、本地方法栈
- 70、程序计数器
- 71、堆
- 72、方法区
- 73、分代回收
- 74、堆和栈的区别
- 75、什么时候会触发FullGC
- 76、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
- 77、对象分配规则
- 78、描述一下JVM加载class文件的原理机制?
- 79、Java对象创建过程
- 80、简述Java的对象结构
- 81、如何判断对象可以被回收
- 82、JVM的永久代中会发生垃圾回收么
- 83、垃圾收集算法
- 84、调优命令有哪些?
- 85、调优工具
- 86、Minor GC与Full GC分别在什么时候发生?
- 87、你知道哪些JVM性能调优
文章图片
专题9:Mysql
文章图片
- 1、数据库存储引擎
- 2、InnoDB(B+树)
- 2、TokuDB( Fractal Tree-节点带数据)
- 3、MyIASM
- 4、Memory
- 5、数据库引擎有哪些
- 6、InnoDB与MyISAM的区别
- 7、索引
- 8、常见索引原则有
- 9、数据库的三范式是什么
- 10、第一范式(1st NF - 列都是不可再分)
- 11、第二范式(2nd NF- 每个表只描述一件事情)
- 12、第三范式(3rd NF- 不存在对非主键列的传递依赖)
- 13、数据库是事务
- 14、SQL优化
- 15、简单说一说drop、delete与truncate的区别
- 16、什么是视图
- 17、什么是内联接、左外联接、右外联接?
- 18、并发事务带来哪些问题?
- 19、事务隔离级别有哪些?MySQL的默认隔离级别是?
- 20、大表如何优化?
- 21、水平分区
- 22、分库分表之后,id 主键如何处理
- 23、存储过程(特定功能的 SQL 语句集)
- 24、存储过程优化思路
- 25、触发器(一段能自动执行的程序)
- 26、数据库并发策略
- 27、MySQL 中有哪几种锁?
- 28、MySQL 中有哪些不同的表格?
- 29、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
- 30、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 31、CHAR 和 VARCHAR 的区别?
- 32、主键和候选键有什么区别?
- 33、myisamchk 是用来做什么的?
- 34、MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 35、如果一个表有一列定义为 TIMESTAMP,将发生什么?
- 36、你怎么看到为表格定义的所有索引?
- 37、LIKE 声明中的%和_是什么意思?
- 38、列对比运算符是什么?
- 39、BLOB 和 TEXT 有什么区别?
- 40、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
- 41、MyISAM 表格将在哪里存储,并且还提供其存储格式?
- 42、MySQL 如何优化 DISTINCT?
- 43、如何显示前 50 行?
- 44、可以使用多少列创建索引?
- 45、NOW()和 CURRENT_DATE()有什么区别?
- 46、什么是非标准字符串类型?
- 47、什么是通用 SQL 函数?
- 48、MySQL 支持事务吗?
- 49、MySQL 里记录货币用什么字段类型好
- 50、MySQL 有关权限的表都有哪几个?
- 51、列的字符串类型可以是什么?
- 52、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
- 53、锁的优化策略
- 54、索引的底层实现原理和优化
- 55、什么情况下设置了索引但无法使用
- 56、实践中如何优化 MySQL
- 57、优化数据库的方法
- 58、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
- 59、数据库中的事务是什么?
- 60、SQL 注入漏洞产生的原因?如何防止?
- 61、为表中得字段选择合适得数据类型
- 62、存储时期
- 63、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题
- 64、解释 MySQL 外连接、内连接与自连接的区别
- 65、Myql 中的事务回滚机制概述
- 66、SQL 语言包括哪几部分?每部分都有哪些操作关键
- 67、完整性约束包括哪些?
- 68、什么是锁?
- 69、什么叫视图?游标是什么?
- 70、什么是存储过程?用什么来调用?
- 71、如何通俗地理解三个范式?
- 72、什么是基本表?什么是视图?
- 73、试述视图的优点?
- 74、NULL 是什么意思
- 75、主键、外键和索引的区别?
- 76、你可以用什么来确保表格里的字段只接受特定范围里的值?
- 77、说说对 SQL 语句优化有哪些方法?(选择几条)
- 78、什么是乐观锁
- 79、什么是悲观锁
- 80、什么是时间戳
- 81、什么是行级锁
- 82、什么是表级锁
- 83、什么是页级锁
资料领取方式:点击这里前往蓝色传送门
目录:
文章图片
文章图片
部分内容:
文章图片
文章图片
Spring源码
- 第一部分 Spring 概述
- 第二部分 核心思想
- 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
- 第四部分 Spring IOC 高级应用
基础特性
高级特性 - 第五部分 Spring IOC源码深度剖析
设计优雅
设计模式
注意:原则、方法和技巧 - 第六部分 Spring AOP 应用
声明事务控制 - 第七部分 Spring AOP源码深度剖析
必要的笔记、必要的图、通俗易懂的语言化解知识难点
文章图片
文章图片
脚手框架:SpringBoot技术
它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
- SpringBoot入门
- 配置文件
- 日志
- Web开发
- Docker
- SpringBoot与数据访问
- 启动配置原理
- 自定义starter
文章图片
文章图片
微服务架构:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
文章图片
文章图片
Spring MVC 目录:
文章图片
文章图片
文章图片
部分内容:
文章图片
文章图片
:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
[外链图片转存中…(img-qoU8KoFY-1621577114140)]
Spring MVC 目录:
[外链图片转存中…(img-4z82Rr5r-1621577114141)]
[外链图片转存中…(img-MADVz2FO-1621577114142)]
[外链图片转存中…(img-PzucMTgC-1621577114142)]
部分内容:
[外链图片转存中…(img-mk5egrCE-1621577114143)]
[外链图片转存中…(img-aqgJOLMf-1621577114144)]
推荐阅读
- 大数据|Pair智能标注神器,全面升级,更加智能
- 后端|Java 8中 Stream 的小知识
- 缓冲|@Cacheable注解
- SpringBoot|2021-08-06Spring @Cacheable注解的使用
- 后端|35 设计优秀的分布式锁
- Java项目|1-1/2+1/3-1/4+1/5-...1/n 键盘获取n 结果小数;从键盘上输入n result = a+aa+aaa+aaaa+...n部分相加
- springboot|mybatis-plus代码生成器的使用
- 微服务|猿创征文| NoSQL数据库简介
- 面试|OSChina 周四乱弹 ——男生做女生那些亲密动作是有多难()