Java日经问题总结

本文旨在快速解决常规,常见,常识的三常问题.提供对应问题权威,有效,易懂的解决方案
查询问题或者答案自行Ctrl+F 在网页搜索关键字,都是搞开发的脑壳机灵点
如果有死链请留言或者Q群211286137中@我

为什么要用Java
给Java说句公道话–没有java写不出来的系统
别让自己“墙”了自己–千万不要觉得,整几个服务RPC一下,加个缓存,加个队列,就能叫架构,那只是系统集成罢了

通用Mapper是什么,怎么用?
通用Mapper官方文档–解决80%的配置和疑问

分页插件 PageHelper怎么用?
分页插件 PageHelper官方文档

Mybatis二级缓存->业务缓存的解决方案
深入了解MyBatis二级缓存-逆流而上–又名二级缓存从了解到放弃
Spring Cache简单介绍和使用–正儿八经的缓存方案
Spring Cache+Redis实现自定义注解缓存–新手参考demo

Java基础知识了解,包含Java8的最新调整
Java 核心知识库–没事多看看,吹比用得到

为什么不推荐使用Join
为什么MySQL不推荐使用子查询和join–自行百度其他资料进行扩展了解
分库分表的几种常见形式以及可能遇到的难题–介绍垂直分表,垂直分库,水平分表,水平分库分表等方案以及join性能问题拆分为in解决的方案

深入理解并发/并行,阻塞/非阻塞,同步/异步
Java深入理解并发/并行,阻塞/非阻塞,同步/异步–详细解释并发/并行,阻塞/非阻塞,同步/异步之间的同异

BIO,NIO,多路复用,AIO
BIO,NIO,多路复用,AIO–快速了解不同概念之间区别

Java 8 中的 Streams API 详解以及什么是中间操作,终端操作,短路操作
Java 8 中的 Streams API 详解–认真读,其实Stream很简单
从JIT到类加载再到实现原理解式Lambda编译慢的问题–Lambda表达式 在应用程序中首次使用时,需要额外加载ASM框架,因此需要更多的编译,加载的时间

Java8 方法引用的四种处理方式
Java笔记——Java8特性之Lambda、方法引用和Streams–解答由不同处理方式导致的二义性

Java8–什么是异步编程?
Java8–CompletableFuture 组合式异步编程-异步编程,并行编码,从代码层面优化程序执行效率
Java8函数之旅 (八) - 组合式异步编程–作者其他的文章也很不错
使用CompletionService获取多线程返回值–CompletionService 的使用场景
那些年我们追过的异步骚操作:ListenableFuture、CompletableFuture、RxJava(Observable)–完整又详细的介绍Completablefuture 的方法和RXJava的完整对比

想用Java做爬虫,应该怎么做?
分布式爬虫框架XXL-CRAWLER–许雪里的分布式爬虫框架,几行代码实现网页爬取和内容分析读取
分布式任务调度平台XXL-JOB–依旧是雪里的分布式系列,配合XXL-CRAWLER可以实现分布式定时爬虫,自动告警等等功能非常强大

Java匿名内部类使用外部变量时,外部变量必须是final
java匿名内部类使用外部变量时,外部变量必须是final–1.8之前外部变量必须为final修饰,之后只需在编译期间值不发生变化

Java为什么要用类型擦除实现泛型?
java为什么要用类型擦除实现泛型?–答案是向后兼容

批量插入的两种实现方案与其区别
批量插入的区别和实现–代码循环和数据库实现

Mybatis插入数据返回(回写)主键
Mybatis官方示例-useGeneratedKeys和keyProperty配置主键回写策略,需要一定英文基础或者网页翻译
MyBatis获取插入记录的自增长字段值–参考示例

JavaWeb——MVC与三层结构,什么是MVC,什么是三层结构,二者之间有何区别?
MVC模式与三层架构–详细解释了何为MVC何为三层结构,二者之间区别何在

Java要收费了怎么办?
Oracle 终于要向 Java 的非付费用户开枪了-怎么看?–答案是不会收费
V2EX讨论帖–企业支持和客服支持收费不代表不能够免费使用

什么是VO、DTO、DO、PO?
浅析VO、DTO、DO、PO的概念、区别和用处–没事就复习

Redis分布式锁实现
redis加锁的多种实现方案

UUID和雪花算法
如果再有人问你分布式 ID,这篇文章丢给他–解析uuid,雪花算法等

面向对象和面向过程
贫血模型与充血模型的对比–介绍了面向对象,面向过程,贫血模型,充血模型,DDD,TDD

什么是SOA,RPC,微服务,分布式
阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别–浅显易懂的讲解
四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构–不同架构的含义
一分钟弄懂什么是分布式和微服务–微服务可以不使用分布式

Spring中@Autowrite注解 @Resource 构造器注入有何不同?
快速讲解两者之间关系–推荐使用Resource
【Spring】浅谈spring为什么推荐使用构造器注入–使用构造器注入在启动时就会抛出循环依赖错误,不使用构造器则只能在调用时抛出

Spring注解@Component、@Repository、@Service、@Controller区别
例举出不同注解的使用场景–定义不同,功能相同

java.util.concurrent(juc)
JUC-Lock–讲解得很详细
Actomic原子类–基于cas实现的具有原子性的实现
jdk1.8 LongAdder源码学习–使用LongAdder代替Actomic提升性能
死磕 java并发包之LongAdder源码分析–详细的注释进行源码学习
ConcurrentHashMap 能否保证绝对的线程安全?–详细讲解了1.7中ConcurrentHashMap和1.8ConcurrentHashMap的区别
ConcurrentHashMap, ConcurrentSkipListMap实现原理–内部结构的演变
死磕 java集合之ConcurrentSkipListMap源码分析——发现个bug–清晰说明ConcurrentSkipListMap结构
ConcurrentHashMap 1.8为什么要使用CAS+Synchronized取代Segment+ReentrantLock–sync是龟兔赛跑中的乌龟,活得久就是硬道理
面试必问的CAS,你懂了吗?–CAS的ABA问题

线程安全和单例
Sychronized in Java–讲解Sychronized的锁范围以及单例的构造

Java是值传递还是引用传递
java基本数据类型传递与引用传递区别详解–Java只有值传递

Java重写equal()时为什么也得重写hashCode()
重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源–重写hashCode是为了Map

Java中return与finally的先后关系
Java中return与finally的先后关系–在栈中解释两者的相关关系

JDK Dynamic Proxy 和 CGLIB
Spring AOP无法拦截内部方法调用–JDK Dynamic Proxy 无法拦截this
Spring代理自调用–this问题和3种解决方案

Spring 循环依赖相关
Spring-bean的循环依赖以及解决方式–Spring三层缓存解决bean的循环依赖,但但无法解决"A的构造方法中依赖了B的实例对象,同时B的构造方法中依赖了A的实例对象”这类问题了"
浅谈Spring解决循环依赖的三种方式–虽然Spring目前推荐构造器注入但是会带来代码膨胀和互相依赖问题,所以个人建议使用setter方式也就是@Resource注解注入
一文告诉你Spring是如何利用“三级缓存“巧妙解决Bean的循环依赖问题的【享学Spring】–Spring 三级缓存和构造器循环依赖
以下为选读:

为什么不建议用 try catch?因为懒和菜的人看不懂
为什么不建议用 try catch?–try catch机制非常好。那些觉得try catch不行的人,是他们自己的水平有问题,无法理解这种机制。并且这群人写代码不遵守规则,喜欢偷懒,这才造成try catch不好的错觉。
Java异常的栈轨迹及Java Exception性能问题–try…catch和if…else的性能开销在同一数量级
不明白为什么java要用try…catch…。不用完全没有影响啊?–回答得都很经典
关于try-catch的讨论–32楼说的非常好

数据结构
数据结构教程–学会就月薪10W

不会算法怎么办?
循序渐进理解时间复杂度和空间复杂度–算法前置必读,理解什么是"O"
解析Arrays中sort方法的黑科技–讲解基本数据类型和非基本数据类型排序算法的区别
Timsort——自适应、稳定、高效排序算法–Java1.8之后默认使用的排序算法,例如Arrays.sort(T[]) Stream.sorted() List.sort() Collections.sort(),本质上都是调用了Arrays.sort() (在1.8之后),legacyMergeSort()已被逐渐弃用
JDK(四)JDK1.8源码分析【排序】DualPivotQuicksort–在Arrays.sort()的基本类型重载方法中使用
十大经典排序算法最强总结(含Java代码实现)–非常好的算法讲解
动态可视化算法学习-学完年薪百万
排序算法整合(冒泡,快速,希尔,拓扑,归并)–详细好理解的排序算法
java中Arrays.parallelSort和Arrays.sort性能对比–排序建议使用Stream.parallel.sorted(),会调用Arrays.parallelSort()性能比Arrays.sort()更高,而且在数据量低于1 << 13 即8192 或者 CPU核心为1时会自动降级为串行执行

高级进阶知识
如何编写无法维护的代码–对世界投以恶意只会获得恶意

后端架构师技术图谱–内容过多建议挑选感兴趣的内容学习,首先推荐算法和设计模式
互联网 Java 工程师大厂面试+学习指南–redis讲的不错,其他内容正在更新中

大数据
大数据入门指南–大数据常用工具

单例模式写法
Java 利用枚举实现单例模式–枚举写法-单例模式最优解
Java单例模式的七种写法–七种写法简介

顶级程序员的百宝箱
顶级程序员的百宝箱-各式各样的文档

Java的协程
Kotlin 协程真的比 Java 线程更高效吗?|备用链接–Kotlin其实是假协程(2020年3月30日 12:17:23之前)
Java的协程特性计划–loom在未来版本会加入jdk(jdk14未加入)
为什么 Java 坚持多线程不选择协程?–知乎上的讨论

你可能感兴趣的:(JAVA)