不积跬步无以至千里,本人从事Java开发多年,通过记录分享的形式,记录自己从事编程的一些心路历程和技术总结,希望能结交更多志同道合的朋友,个人见识有限,难免会有疏忽和错误之处,还望各位大佬能够指点迷津,感激不尽。 本文整理的Java知识汇总主要包括Java基础、Java进阶、数据库、JVM、消息队列、缓存、微服务与分布式、Java面试系列、高并发、数据结构与算法、计算机网络、开发工具、搜索引擎、大数据、团队管理、运维等。包含一个Java开发工程师所需的绝大多数知识。相信只要勤奋学习,每天进步一点点,各位大佬总有一天会成为飞过沧海横过大洋的海鸥。总结记录的同时,希望大家一起共同进步。
Java基础
Java概述和常见Dos命令
常见Dos命令、Java历史、Java跨平台、第一个HelloWorld例子
Java环境搭建
Java基础语法
计算机存储单位转换(KB MB GB TB PB EB ZB)
Java特性
Java类与对象详解 Java三大特性(一)—封装 Java三大特性(二)—继承 Java三大特性(三)—多态 Java中的接口详解 super和this关键字详解 群主发红包带你深入了解继承和super、this关键字 Java中的final关键字详解😁 final、finally、 finalize 有什么不同? Java中的强引用、软引用、弱引用、幻象引用有什么区别和使用场景 Java中的四种权限修饰符 Java引用类型(class、interface)用法总结详解 内部类与匿名内部类详解 static关键字详解 Java中的泛型详解 Java中的拆箱与装箱
常用集合
Java中的Iterator迭代器详解 Java中的Collection集合 Java中的集合实现赌神、赌圣、赌侠斗地主
List
List集合和其子类ArrayList、LinkedList
ArrayList
ArrayList类基础使用 Java实现List中集合的元素进行排序 Java实现List集合去重的5种方式 List集合按照某个字段或者属性分组的两种方式
LinkedList
Set
Set集合和其子类HashSet、LinkedHashSet
HashSet
LinkedHashSet
Map
Map接口和其子类HashMap遍历、LinkedHashMap
HashMap
CurrentHashMap
CopyOnWriteArrayList
常用API
Base64
Base64和byte[]数组互转的两种方式 Base64码常见操作(url链接文件转base64编码、本地文件转base64编码等)
Random类
String类
Arrays类
Math类
Math常用的数学运算(包括取整、取绝对值、保留几位小数等)
Object类
Java顶层类Object类(toString、equals)
时间处理
时间处理:当天早上七点到第二天早上七点 置成当天的23:59:59 日期工具类-操作字符串和Date、LocalDate互转,两个日期的时间差等 Java中的日期时间类(Date、DateFormat、Calendar)解读
System类
StringBuffer、StringBuilder
Java中的StringBuilder类 String、StringBuffer、StringBuilder 有什么区别?
Collections
集合工具类Collections指南,以及Comparable和Comparator排序详解
fastjson
Java异常
NoClassDefFoundError 和 ClassNotFoundException 有什么区别 Exception和Error有什么区别吗 Java异常体系和分类 Java中的异常处理详解(try、catch、finally、throw、throws) Java自定义异常
多线程
多线程基本概念(并发与并行、线程与进程)和入门案例 多线程原理和常用方法以及Thread和Runnable的区别 多线程安全问题原理和解决办法,Synchronized和ReentrantLock使用与区别 Java中线程的6种状态详解(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED) Java线程中的wait、notify和notifyAll解析 Java线程池详解
IO流
File类详解(获取文件名称、大小、路径、创建等) Java中的递归详解 Java字节流和字符流详解 Java流处理之高效读写的缓冲流 Java流处理之转换编码的转换流 Java流处理之序列化和打印流 Java把文件压缩成.zip压缩包和解压.zip压缩包(ZipOutputStream、ZipInputStream)
网络编程
Java网络编程入门(软件结构、网络通信协议、网络编程三要素) Java网络编程之通过代码实现Socket通信 Java网络编程之实现文件上传 Java网络编程之InetAddress类详解,URL和URI的区别,URLDecoder和URLEncoder,IPv6和IPv4区别,IPv6的三种表示方法 TCP的三次握手和四次挥手的过程
Java8新特性
Java8中Lambda函数式编程详解 Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function) Stream流
Java进阶
Junit单元测试
反射
注解
JDBC
Java中的JDBC详解 数据库连接池入门(c3p0、Druid) Spring JdbcTemplate使用详解
HTML和CSS
JavaScript
一文入门JavaScript 深入JavaScript之BOM、DOM和事件
Request和Response
常见的http请求参数和响应参数,前后端交互参数说明 Java中的Request和Response详解
XML
Tomcat
web服务器软件:Tomcat入门(window安装和配置Tomcat)
servlet
jQuery
一文入门jQuery 一文深入jQuery AJAX和JSON详解
Cookie和Session
Filter和Listener
常用加解密
数据库
事务的四大特性 事务的隔离级别详解 SQL中的DQL DML DDL和DCL是怎么区分和定义的
MySQL
长文一次说完MySQL常用语句和命令等汇总 windows 10下载安装mysql5.7 MySQL查询某个表中的所有字段并通过逗号分隔连接 MySQL中的DATEDIFF()、PERIOD_DIFF()和TIMESTAMPDIFF()函数使用 MySQL数据库执行Update卡死问题解决 count(字段),count(_)和count(1)的区别 group by和having的区别 SQL语句执行顺序是什么样的呢 MySQL查看数据库表中的重复记录并删除 MySQL使用性能优化—查看数据库的最大连接数、当前连接数等 MySQL/Oracle怎么把一个表的数据复制到另一个表 MySQL执行如下group by 语句报错:1055 - Expression ...this is incompatible with sql_mode=only_full_group_by
Oracle
oracle数据库表创建自增量主键 Oracle触发器概念和模板 完全卸载oracle11g步骤
JVM
VM虚拟机配置动态ip和静态ip访问 Java内存模型(JMM) 怎么打印当前ClassLoader 加载了哪些Jar class文件和类加载机制 直接内存 程序计数器 虚拟机栈(栈) 本地方法栈 Java堆 JVM调优
常用框架
如何学习一个新技术或者新框架? 新技术或者新框架是随问题产生的,它的存在就是为了解决问题。 可以分如下步骤去学习:
- 了解这项技术的概念和这项技术能够解决什么问题。
- 学习这项技术需要储备哪些知识并学习。
- 在实际开发中的应用,注意事项。
- 了解实现原理。
- 深入熟悉这项技术的原理,是否能够做相关拓展。
- 深入和拓展的时候,会发现一些曾经上的知识误区,及时修正和总结。
- 交流分享,融会贯通。
Spring
Spring从入门到精通(一)—Spring概述、Spring的优势和体系结构 Spring从入门到精通(二)—Spring核心思想之IOC Spring从入门到精通(三)—Spring核心思想之AOP Spring从入门到精通(四)—IOC之BeanFactory与ApplicationContext区别 Spring从入门到精通(五)—Spring快速入门 Spring从入门到精通(六)—实例化Bean的三种⽅式 Spring从入门到精通(七)—Bean标签详解 Spring从入门到精通(八)—注解开发 Spring从入门到精通(九)—IOC之延迟加载(lazy-Init ) Spring 的事务传播特性和隔离级别
Spring MVC
MyBatis
MyBatis从入门到精通(一)—MyBatis基础知识和快速入门 MyBatis从入门到精通(二)—mybatis的Dao实现和配置文件深入 MyBatis从入门到精通(三)—MyBatis多表查询和注解开发 MyBatis从入门到精通(四)—MyBatis缓存和二级缓存整合Redis MyBatis从入门到精通(五)—MyBatis插件原理探究和自定义插件实现 MyBatis从入门到精通(六)—MyBatis架构原理 MyBatis从入门到精通(七)—源码剖析之Configuration、SqlSession、Executor、StatementHandler细节 MyBatis从入门到精通(八)—源码剖析之Mapper代理方式细节 MyBatis从入门到精通(九)—源码剖析之二级缓存细节 MyBatis从入门到精通(十)—源码剖析之延迟加载源码细节 自定义持久层框架MyORMFramework(一)—JDBC分析和解决思路 自定义持久层框架MyORMFramework(二)—框架设计 自定义持久层框架MyORMFramework(三)—框架实现
Spring JPA
SpringBoot
相关整合: springboot快速入门 springboot发送邮件 springboot建父工程,整合Thymeleaf模板引擎 springboot+quartz构建定时任务 SpringBoot设置允许跨域请求
Canal
Dubbo
Shiro
Spring Security
MyCat
Tomcat
设计模式
Spring中用到了哪些设计模式? 23种设计模式汇总概述 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
Redis
Windows10安装免安装版redis Linux下载安装redis和zookeeper 一文入门Redis(下载安装、Redis常见数据类型、持久化、命令和客户端操作) Redis数据类型 Redis的淘汰策略 Redis中缓存雪崩、缓存击穿和缓存穿透
微服务与分布式
服务注册发现
Nacos
Nacos基本概念和单机部署 Nacos客户端注册报错 Nacos集群部署-高可用保证
服务调用
服务配置
SpringCloud版本升级后bootstrap.yml配置不生效
负载均衡
服务限流
熔断降级
网关路由
服务权限
链路追踪
Windows下载安装zipkin linux下载安装zipkin
分布式事务
Java面试系列
面试官:谈谈Spring中用到了哪些设计模式? 面试官:使用无界队列的线程池会导致内存飙升吗? 面试官:可以说下Java内存模型(JMM)吗 Docker常见面试题 面试官:可以谈谈乐观锁和悲观锁吗
低代码开发
flowable camunda activiti功能对比和趋势
activiti
Activiti产生的背景和作用 BPMN和DMN基本概念和使用案例 Camunda整体架构和相关概念
高并发
线程池
Java线程池Executor详解 面试官:使用无界队列的线程池会导致内存飙升吗?
JUC
AQS同步组件-CountDownLatch解析和案例 AQS同步组件-Semaphore(信号量)解析和案例 AQS同步组件-CyclicBarrier(循环屏障)解析和用例 AQS同步组件-ReentrantLock、ReentrantReadWriteLock解析和用例 AQS同步组件-FutureTask、ForkJoin解析和用例
扩容
缓存
消息队列
RabbitMQ
RocketMq
Windows环境RocketMQ broker启动失败闪退
Kafka
应用拆分
应用限流
服务降级
分库分表
高可用保证
数据结构与算法
Java中的数据结构之常见的五种数据结构 数据结构: 栈 队列 堆 数组 链表 树 图 算法: 常见的排序算法 二分查找算法 分治算法 动态规划算法 KMP算法 贪心算法 普利姆算法
开发工具
IntelliJ IDEA
idea常用快捷键 idea好用插件收集,总有一款适合你 idea设置Run Dashboard同时开启多个服务 idea运行报Error running ‘XApplication‘_ Command line is too long. Shorten command line for XApplication idea设置显示maven工具栏 idea中通过ssh推送代码到gitee_github报错 idea回退到上一次光标的位置失效:win8/win10 禁用ctrl+alt+方向键 idea中ctrl+alt+v快速生成返回变量无效 idea中快速实现继承父类方法 idea中查看某个类的继承关系 idea中配置通过tomcat启动web项目 idea中项目运行报错:Error_(33, 51) java_ -source 1.5 中不支持 diamond 运算符_ (请使用 -source 7 或更高版本以启用 diamond 运算符)
Git
Git基本概念和下载安装 常用的Git代码托管服务 github或者gitee配置ssh免密登录 ssh-keygen -t rsa -C xxxx@xxxx.com解释 Git常用命令 git 本地新建分支上传报错The current branch dev has no upstream branch.To push the current branch and setremote
Maven
Maven安装和基本概念 Maven中常用命令以及idea中使用maven指南
Docker
添加docker权限给其他用户使用 Docker命令汇总 Linux安装Docker并配置Docker镜像加速,daemon.json完整配置详解 Docker安装Redis并配置启动
postman
JMeter
压力测试工具-JMeter安装和使用 Apache Bench(AB)性能测试压测接口
Navicat
gradle
服务器
Nginx
Linux下安装和使用Nginx nginx安装和配置详解 nginx访问日志报错:[error] 4560#4560_ 117823 client intended to send too large body 7562419 bytes,错误码413
Tomcat
Windows操作
windows下使用curl命令 电脑卡慢怎么办 Windows10系统安装docker Windows10如何合并任务栏下的多窗口_多文件夹 谷歌浏览器设置地址栏默认搜索为百度搜索 Windows10安装免安装版redis 怎么把软件添加到右键菜单 QQ、微信可以正常访问通讯,浏览器无法打开网页
搜索引擎
Windows下载安装ELK(Elasticsearch、Kibana、Logstash) ElasticSearch
web前端
老弟教你用CSS和JS实现曾经风靡一时的微信打飞机游戏 10天从入门到精通Vue(一)-vue基本概念和基础语法(v-text、v-bind、v-on、v-model等)
大数据
Flink
团队管理
文档管理
swagger
设置swagger文档自动同步到YApi 访问swagger文档报错Illegal DefaultValue 1024 for parameter type integer,java.lang.NumberFormatException 让Typora单词拼写不冒红线 团队成长 技术影响力 系统拆分 任务规划
运维
Jenkins GitLab CI 通过钉钉机器人发送群消息通知
Linux
Linux常用指令(命令)超级无敌全合集加图文说明 tailf、tail -f、tail -F三者区别 Linux下安装和使用Nginx uptime命令详解 Linux的top命令详解 Linux rpm 命令使用详解 Linux下安装lrzsz Linux下安装JDK 在Linux服务器下查看公网IP地址 linux查看某个文件夹的大小(ls命令、du命令详解) linux查看服务器开放的端口和启用的端口五种方式