Java开发技术
1、基础技术
数据结构与算法
逻辑结构:数据对象中的数据元素之间的逻辑关系
1.集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系。
2.线性结构:线性结构中的数据元素之间是一对一的关系。
3.树形结构:树形结构中的数据元素之间是一对多的关系。
4.图形结构:图形结构中的数据元素之间是多对多的关系。
物理机构:数据的逻辑结构在计算机中的储存形式
1.顺序储存结构:把数据元素储存在连续的存储单元。
2.链式储存结构:把数据元素储存在任意的存储单元(可以是连续或者不连续)。
知识点 | 链接 |
---|---|
算法复杂性分析 | 对一个算法需要多少计算时间和存储空间作定量的分析 |
线性表、链表数据结构详解 | |
队列、栈数据结构详解 | |
基础排序算法详解 | |
快排与并归排序详解 | |
二分搜索、哈希表详解 | |
并查集算法详解 | |
树,基本概念,二叉树(遍历)详解 | |
图、深度优先遍历、广度优先遍历 | |
最小生成树、最短路径详解 | |
Bloom Filter/Bitmap |
数据库技术
-
知识点 链接 Mysql执行计划与索引 索引是帮助mysql高效获取数据的数据结构
使用explan关键字可以知道mysql是如何处理SQL语句的mysql之SQL索引优化 使用有索引的列或主键进行order by 操作 mysql锁与事务隔离级别详解 mysql B+tree存储 mysql主从同步原理与优化方案 mysql读写分离proxy与jdbc方式对比 mysql垂直与水平分库分表 -
知识点 链接 Redis特性介绍与实操 Redis 有 5 种基础数据结构
string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)Redis集群演变过程&,集群部署 数据结构&五种数据类型对象 Redis集群高可用伸缩架构 Redis cluster开发与通信协议 群集分配算法与动态水平扩容,监控 缓存击穿与雪崩预防策略 Redis与mysql数据库同步数据一致性解决方案
23种设计模式 GOF
创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
知识点 | 链接 |
---|---|
工厂模式(Factory) | 用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类 |
单例模式(Singleton) | |
代理模式(Proxy) | |
委派模式(Delegate) | |
观察者模式(Observer) | |
策略模式(Strategy) | |
模版模式(Template) |
应用开发
Spring
知识点 链接 Spring Ioc容器设计理念与源码 Spring容器设计中,BeanFactory实现容器的基本功能,ApplicationContext作为容器高级形态存在 Spring事务失效与解决方案详解 Spring MVC源码与原理深度解析 Spring5 日志框架、Testing、WebFlux等新特性 Spring aop源码与原理深度解析 Spring源码如何阅读 熟悉常见的Spring面试题 详解Spring IOC、AOP、MVC应用 MyBatis
知识点 链接 整体认识mybatis与mybatis体系结构 Mybatis核心应用配置与原理解析 Mybatis核心流程与源码分析 Mybatis与Spring整合原理详解 一级、二级缓存使用场景详解 徒手教大家实现mybatis与思想 Configuration、SqlSession、SqlSessionFactory、Executors MappedStatement、StatementHandler、ResultSetHandler等核心概念 MyBatis设计模式:工厂、构建、单例、责任链、代理、模版、装饰模式详解
2、工作技术
消息中间件
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。
-
知识点 链接 初识消息中间件,在分布式应用场景 部署与快速开始&;特性详解 RocketMq监控与高可用详解 RocketMq特性详解 RocketMq源码分析详解 RocketMq高可用&;伸缩部署详解 -
知识点 链接 kafka集群搭建与使用 kafka设计原理分析 kafka分布式实战详解 kafka高可用&;伸缩部署详解
Java并发编程
并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程,就能让程序最大限度的并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行的更快,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于硬件和软件的资源限制问题,本章会介绍几种并发编程的挑战,以及解决方案。
知识点 | 链接 |
---|---|
Java并发之Executor线程池体系 | Executors.newCachedThreadPool(无界线程池,自动线程回收) Executors.newFixedThreadPool(固定大小的线程池); Executors.newSingleThreadExecutor(单一后台线程); |
Java并发之lock与Java内存模型 | |
Java并发之CAS原理 | |
并发编程之定时线程池 | |
Java并发DCL详解 | |
Java并发Fork-join框架原理 | |
Java并发ThreadPoolExecutor原理 |
分布式技术
分布式系统是一个硬件或者软件组件分布在不同网络计算机上,彼此之间仅仅通过消息传递来进行通信和协调的系统。一个分布式系统通常具有以下特点:
1.分布式:在空间上随意分布,
2.对等性:组成分布式系统的所有节点都是对等的。
3.并发性
4.缺乏全局时钟。在分布式系统很难确定多个时间的顺序,原因就是分布式系统缺乏一个全局的时钟。
5.故障总是会发生。
分布式系统体系机构面对着诸多的难题和挑战:
1.通信异常:分布式系统需要在各个节点之间进行网络通信,而网络本身是不可靠的。
2.网络分区:当网络由于发生异常情况,最终导致组成分布式系统的所有节点,只有部分节点之间能够进行通信,另一些节点则不能。这种现象称为网络分区,俗称脑裂。
3.三态:分布式系统的每一次请求与响应存在特有的三态概念,即成功、失败、超时。
4.节点故障:指组成分布式系统的服务器节点出现的宕机或“僵死”现象。
-
知识点 链接 Zookeeper介绍 用来解决分布式应用中经常遇到的一些数据管理问题
如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等Zookeeper快速入门与集群部署 Zookeeper之zkclient&;curator 开发分布式Zookeeper项目 Zookeeper核心源码分析 Zookeeper容灾与扩容详解 Zookeeper企业跨机房运维 -
知识点 链接 Dubbo介绍 快速掌握Dubbo企业常规应用 Dubbo调用模块详解 Dubbo协议模块源码剖析 Dubbo容错机制与高扩展性分析 Dubbo设计原理分析与源码详解 Dubbo负载均衡策略分析 Dubbo管控后台管理与部署详解 -
知识点 链接 Netty介绍 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架 Java NIO BIO AIO详解 Netty线程模型详解 Netty编码解码框架解析 Netty RPC框架实战 Netty TCP粘包/拆包解决方案 Netty企业级性能调优方案
微服务技术
微服务是系统架构上的一种设计风格,它的主旨是将一根原本独立的系统拆分多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。被拆分的每一个小型服务都围绕着系统中某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护这自身的数据存储、业务并发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所有这些微服务可以使用不同的语言来编写。
-
知识点 链接 Spring Boot介绍 Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。
还集成了嵌入式的Web服务器,系统监控等很多有用的功能Spring Boot快速启动开始及核心配置详解 Spring Boot热部署详解 Spring Boot集成Mybatis Spring Boot集成Redis缓存 Spring Boot核心组件actuator -
知识点 链接 Spring Cloud介绍 一站式解决方案 hystrix实现服务限流,降级,熔断详解 分布式配置中心Config详解 Zuul和Gateway统一网关,服务路由,过滤器使用 Fegin声明式服务调用详解及源码分析 Hystrix实现自定义接口降级,监控数据及监控数据聚合 微服务技术架构 -
知识点 链接 Docker介绍 基于LXC技术之上搭建的Container容器引擎
将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。Docker的镜像,仓库,容器讲解 Docker快速开始搭建Docker环境 DockerFile,DockerCompose使用及服务编排实现 Kubernetes介绍与快速开始 Kubernetes部署一套生产环境
JVM调优
1.年轻代大小选择
响应时间优先的应用
吞吐量优先的应用
2.年老代大小选择
响应时间优先的应用
吞吐量优先的应用
3.较小堆引起的碎片问题
知识点 | 链接 |
---|---|
JVM调优 | JVM调用(一) |
JVM整体结构与垃圾回收算法介绍 | |
什么是JVM内存模型 | |
类加载器深入解析 | |
GC日志格式详解,从日志排查问题 | |
GC调优实战 | |
各种垃圾回收使用场景 | |
面试JVM题分析详解 | |
互联网项目JVM调优实战 |
3、提升技术
源码分析
Spring源码深入分析
知识点 链接 Ioc容器设计理念与bean的注册原理分析及其源码解读 @Configuration原理分析,依赖注入底层原理分析 容器启动流程,bean的生命周期及其源码分析 bean的循环依赖源码分析,bean构建过程中各大后置处理器作用及其源码分析 Spring AOP源码与原理深度解析,Cglib和Jdk动态代理区别 Spring MVC源码与原理解析 @EnableWebMvche MessageConverter源码分析 Spring事务失效之谜,事务隔离级别和事务传播属性源码分析 Mybatis源码深入分析
知识点 链接 Mybatis核心流程与源码分析 Mybatis执行器源码分析 Mybatis缓存源码分析 CachingExecutor一级 二级缓存源码分析 Configuration、SqlSession、SqlSessionFactory、源码分析 ExecutorMappedStatement、StatementHandler、ResultSetHandler源码分析 Mabatis执行引擎Executor、BaseExecutor、SimpleExecutor
ReuseExecutor、BatchExecutor、
Mybatis注解@Select、@Result*、@Insert、@Delete、@Update分析ShardingSphere源码深入分析
知识点 链接 Sharding-jdbc核心流程与源码分析 分布式事务&;分布式主键源码详解 Sql解析:SQLParsingEngine源码详解 Sql路由:ParsingSQLRouter源码解析 Sql改写:SQLRewriteEngine、SQLToken、SQLBuilder源码解析 Sql执行:SQLExecuteCallback源码分析 Sql归并:MergeEngine源码分析 Jedis/Redis源码深入分析
知识点 链接 Jedis与Redis工作原理通讯详解 Jedis与Redis工作序列化协议详解 Redis内存结构与数据结构模型 RESP协议+、-、$、*序列化协议详解 Zookeeper源码深入分析
知识点 链接 Zookeeper核心流程与源码分析 Zookeeper序列化协议详解 Java并发源码深入分析
知识点 链接 Java并发线程池源码详解 Java、Map、List、Queue结构详解
项目实战
知识点 | 链接 |
---|---|
Flasher-分布式缓存框架 | 基于Redis Cluster实现 QPS千万级别 |
Api-Gateway-网关系统 | Java Rest API系统 |
源码双十一电商系统 | 基于Dubbo的大型分布式、高可用电商平台 可用于互联网电子商务系统 |
4、拓展技术
国内互联网开源框架
知识点 | 链接 |
---|---|
阿里巴巴的Nacos-动态服务发现、配置和服务管理平台 | |
阿里巴巴的Sentinel-高可用流量管理框架 | |
百度的UidGenerator-分布式ID生成器 | |
百度的Disconf分布式配置管理平台 | |
阿里巴巴的Dubbo-Java高性能开源RPC框架 | |
阿里巴巴的RocketMQ-Java分布式消息中间件 | |
京东金融的Sharding-sphere-Java数据库中间件 | |
国美的Flasher-分布式缓存框架 | |
美团的分布式调度XXL-JOB |
国内互联网大咖
知识点 | 链接 |
---|---|
https://ke.qq.com/course/408007 |
后端技术
前端技术
技术 | 名称 | 官网 |
---|---|---|
jQuery | 函式库 | http://jquery.com/ |
Bootstrap | 前端框架 | http://getbootstrap.com/ |
Bootstrap-table | Bootstrap数据表格 | http://bootstrap-table.wenzhixin.net.cn/ |
Font-awesome | 字体图标 | http://fontawesome.io/ |
material-design-iconic-font | 字体图标 | https://github.com/zavoloklom/material-design-iconic-font |
Waves | 点击效果插件 | https://github.com/fians/Waves |
zTree | 树插件 | http://www.treejs.cn/v3/ |
Select2 | 选择框插件 | https://github.com/select2/select2 |
jquery-confirm | 弹出窗口插件 | https://github.com/craftpip/jquery-confirm |
jQuery EasyUI | 基于jQuery的UI插件集合体 | http://www.jeasyui.com |
React | 界面构建框架 | https://github.com/facebook/react |
Editor.md | Markdown编辑器 | https://github.com/pandao/editor.md |
技术 | 名称 | 官网 |
---|---|---|
subscribe | gqz | http://ganquanzhong.top |
名称 | 类型 | 描述 | 地址 |
---|---|---|---|
Eureka | 源码 | 服务发现 | https://github.com/Netflix/eureka |
Feign | 源码 | 声明式服务调用 | https://github.com/OpenFeign/feign |
Hystrix | 源码 | 服务熔断 | https://github.com/Netflix/Hystrix |
spring-boot | 源码 | SpringBoot | https://github.com/spring-projects/spring-boot |
hutool | 工具 | 国产工具大全 | https://gitee.com/loolly/hutool |
Mybatis-PageHelper | 工具 | Mybatis翻页插件 | https://github.com/pagehelper/Mybatis-PageHelper |
mybatis-plus | 工具 | mybatis 增强工具包 | https://github.com/baomidou/mybatis-plus |
guava | 工具 | 谷歌工具包 | https://github.com/google/guava |
weixin-popular | 工具 | 微信SDK JAVA (公众平台、开放平台、 商户平台、 服务商平台) | https://github.com/liyiorg/weixin-popular |
spring-boot-examples | 面试/学习 | Spring Boot 技术栈示例代码,快速简单上手教程。 | https://github.com/ityouknow/spring-boot-examples |
springboot-learning-example | 面试/学习 | spring boot 实践学习案例 | https://github.com/JeffLi1993/springboot-learning-example |
TheAlgorithms/Java | 面试/学习 | 数据结构与算法 | https://github.com/TheAlgorithms/Java |
java-design-patterns | 面试/学习 | Java设计模式 | https://github.com/iluwatar/java-design-patterns |
interviews | 面试/学习 | 软件工程技术面试个人指南 | https://github.com/kdn251/interviews/blob/master/README-zh-cn.md |
skill-map | 面试/学习 | 程序员技能图谱 | https://github.com/TeamStuQ/skill-map |
Interview-Notebook | 面试/学习 | 面试知识 | https://github.com/CyC2018/Interview-Notebook |
mapSource | 面试/学习 | Java思维导图 | https://gitee.com/java-mindmap/mapSource |
java_wiki | 面试/学习 | Java学习资料 | https://gitee.com/log4j/java_wiki |
Java-Interview | 面试/学习 | Java知识点 | https://github.com/crossoverJie/Java-Interview |
simplemall | 框架 | 基于SpringCloud的微服务架构实战案例项目 | https://github.com/backkoms/simplemall |
paascloud-master | 框架 | spring cloud + vue 全家桶实战,模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目 | https://github.com/paascloud/paascloud-master |
SuperBoot | 框架 | 基于SpringCloud、SpringBoot敏捷开发框架 | https://github.com/7040210/SuperBoot |
xxl-job | 框架 | 分布式任务调度平台 | https://github.com/xuxueli/xxl-job |
jeecg | 框架 | 基于代码生成器的J2EE快速开发平台 | https://github.com/zhangdaiscott/jeecg |
jeesite | 框架 | Java EE(J2EE)快速开发框架 | https://github.com/thinkgem/jeesite |
jeegem | 框架 | SpringMVC+Spring+Mybatis+Dubbo+Zookeeper+Redis+ActiveMQ Spring boot,Spring cloud,Dubbo,Elasticsearch,Redis,ActiveMQ,Nginx, Mycat,Spring,MongoDB,ZeroMQ,Git,Nosql,Jvm,Mecached,Netty,Nio,Mina,Nutch, Webservice,Activiti,Shiro,Tomcat | https://gitee.com/jeegem/jeegem |
Cloud-Admin | 框架 | Cloud-Admin是国内首个基于Spring Cloud微服务化开发平台 | https://gitee.com/minull/ace-security |
MCMS | 框架 | Java快速开发平台!基于Spring、SpringMVC、Mybatis架构 | https://gitee.com/mingSoft/MCMS |
JFinal | 框架 | JFinal 是基于 Java 语言的极速 WEB + ORM 框架 | https://gitee.com/jfinal/jfinal |
iBase4J | 框架 | 基于SpringBoot 2.0 | https://gitee.com/iBase4J/iBase4J |
zheng | 框架 | 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构 | https://gitee.com/shuzheng/zheng |
spring-cloud-book | 框架 | 使用Spring Cloud与Docker实战微服务 | https://gitee.com/itmuch/spring-cloud-book |
gitignore | 工具 | gitignore大全 | https://github.com/github/gitignore |
octotree | 插件 | github属性菜单 | https://github.com/buunguyen/octotree |
https://github.com/search?q=stars%3A>10000&type=Code
https://github.com/trending/java?since=monthly
Java开发技术的更多相关文章
- 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-
1.0.0 Summary Tittle:[EatBook]-NO.2.EatBook.2.JavaArchitecture.1.001-<修炼Java开发技术在架构中体验设计模式和算法之美&g ...
- Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师
一.分布式架构体系 分布式怎么来的.传统的电信.银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正也不缺钱,IBM小型机,大型机,采购了堆 ...
- 2020 年最流行的 Java 开发技术
不知不觉间,2020 年即将于十几天之后到来,作为技术圈中你,准备好迎接最新的变化了吗?在本文中,我们将以编程界最常用的编程语言 Java 为例,分享最为主流的技术与工具. 作者 | divyesh. ...
- 《修炼Java开发技术 在架构中体验设计模式和算法之美》 - 书摘精要
(P7) 建议直接加入到软件公司中去,这样会学到很多实际的东西: 程序员最主要的发展方向是资深技术专家,无论是 Java..Net 还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师: 增强 ...
- Java开发笔记(八十三)利用注解技术检查空指针
注解属于比较高级的Java开发技术,前面介绍的内置注解专用于编译器检查代码,另外一些注解则由各大框架定义与调用,像Web开发常见的Spring框架.Mybatis框架,Android开发常见的Butt ...
- 阿里巴巴天猫超市团队招聘java开发工程师
大家好,发个招聘信息:我是阿里巴巴集天猫超市开发团队的同学,我们部门目前在杭州招人,P6岗位,要求至少本科,熟悉java,spring等java开发技术,最好有互联网企业开发经验,感兴趣的可以通过我直 ...
- 学大数据一定要会Java开发吗?
Java是目前使用广泛的编程语言之一,具有的众多特性,特别适合作为大数据应用的开发语言.Java语言功能强大和简单易用,不仅吸收了C++语言的各种优点还摒弃了C++里难以理解的多继承.指针等概念. J ...
- JAVA智能设备基于OpenGL的3D开发技术 之AABB碰撞检测算法论述
摘要:无论是PC机的3D还是智能设备应用上,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量3D引擎是否完善的标准.现有许多3D碰撞检测算法,其中AABB碰撞检测是一种卓有成效而又经典的检测算 ...
- 作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?
其实这个问题很简单,我用最简单的语言给大家描述一下,学习一样东西就要了解这样东西学完了要干什么事情,有什么作用.然后就是应该学习哪些必要的内容,该如何运用得当的方法进行有效率的学习不至于自己摸不着头脑 ...
随机推荐
- Kakfa集群(2.11-0.10.1.0)版本滚动升级方案
Kafka集群版本升级(2.11-0.10.1.0)升级(2.11-0.10.2.2) 官网升级说明: 一.系统环境Zookeeper集群:172.16.2.10172.16.2.11172.16.2 ...
- shell脚本监测进程并重启
本人实例: #!/bin/bash ps -ef | grep elastic | grep -v grepif [ $? -ne 0 ]thenecho "start process... ...
- webstrom 2019 注册码(可用 2019年10月14日08:59:18)
K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGOiBodHRwOi8va ...
- ArchLinux下electronssr无法启动的解决措施
ArchLinux下electronssr无法启动的解决措施 今天重新配置electron-ssr时发现闪退(无法启动). 于是开始查错 首先是找到了目录位置 /usr/electron-ssr/el ...
- 简单的leetcode题
简单的leetcode题 环绕字符串中唯一的子字符串 把字符串 s 看作是\("abcdefghijklmnopqrstuvwxyz"\)的无限环绕字符串,所以 s 看起来是这样的 ...
- Selenium实战(七)——自动发送邮件
SMPT(Simple Mail Transfer Protocol)简单邮件传输协议,是一组由源地址到目的地址传送邮件的规则,可以控制信件的中转方式.Python的smptlib模块提供了简单的AP ...
- 【笔记】机器学习 - 李宏毅 - 1 - Introduction & next step
Machine Learning == Looking for a Function AI过程的解释:用户输入信息,计算机经过处理,输出反馈信息(输入输出信息的形式可以是文字.语音.图像等). 因为从 ...
- JSP数据交互2
application对象 application对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等. 运用实例:网页访问计数器. < ...
- STL-list 链表
#include <iostream> #include <list> using namespace std; int main() { // list可以在头部和尾部插入和 ...
- 用友UAP NC 开发环境抛出"JDK默认编辑器找不到"
此节点是升级65之前开发的,已经很久不使用,今天在开发环境使用,点查询抛出此异常. 最后问了人解决方法,就是往JRE系统库加入对应的jar包