java知识树
- https://blog.csdn.net/aitaozi11/article/details/79652943 (学习Java的9张思维导图)
文章目录
针对技术栈学习
1. java基础
1.1 算法
0赞, 时间复杂度均为O(n^2)
- 冒泡排序, 需要空间n + 1,; 时间复杂度比较比较需要(n + 1) * n/2; 交换最少为0, 最大为(n + 1) * n/2;
- 选择排序, 需要空间n + 1; 比较次数: 太难算了, 是count这个数
public static void main(String[] args) {
int count = 0;
int n = 1;
for (int i = 0; i < n; i++ ){
for(int j = n; j > i; j--){
count++;
}
}
System.out.println(count);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
交换次数: n - 1
3. 直接插入排序: 比较最多: (n + 1) * n/2;
交换最多: (n + 1) * n/2;
- 106赞 (图解算法—希尔排序)
希尔排序: 希尔排序是插入排序的变种, 逻辑间隔分组排序, 时间复杂度比较难算, 有一种分组(1, 5, 19, 41,
…)的时间复杂度为O(n^1.3); 大大的有进步, 了不起
9赞 , 直接选择排序: 比选择排序还是要好一点的, 是在未排序的数组中比较, 但是时间复杂度仍然是O(n^2)
讲的不好, 看不懂
1赞, 图看懂一些
46赞 , 还是上一篇1赞的写的好一些
快速排序: 时间复杂度为O(n * log(n)), 取基准数来不断分割数组的一种排序(分治法的思想)
20赞, 堆排序利用完全二叉树的数据结构来排序, 分为大顶堆和小顶堆; 时间复杂度为O(n * log(n))
42赞, 归并排序; 时间复杂度O(n * log(n)), 空间复杂度: O(n); 为稳定的排序法
2赞, 基数排序, 把数拆分成个位, 十位, 百位… 从个位到顶级位依次比较, 是一种稳定的排序算法, 时间复杂度为: O (nlog®m),其中r为所采取的基数,而m为堆数; 这里对基数和堆数的定义不明, 先放着
32赞, 比较好懂; 二叉查找树: 根节点比左叶子要大, 比右叶子要小; 查询的时间复杂度: O(log(n)), 极端不平衡的状态下时间复杂度为O(n); 中序遍历: 不懂
191赞, 中序遍历: 左节点 -> 根节点-> 右节点的遍历
- 红黑树特性:
1.1. 根节点为黑色
1.2. 节点有两种可能颜色, 黑色; 红色;
1.3. 一个红黑树中, 任意根节点到叶子节点的路径上黑节点的数量相等
1.4. 根节点为nil时为黑色
1.5. 红色节点的两个子节点必然为黑色- 应用场景: TreeSet,TreeMap
- 时间复杂度: O(log(n))
1.2 基本
2赞, 没用, 实在是他娘的看不懂
106赞
1.3 设计模式
- 单例模式: 饿汉模式天生线程安全; 2. 在多线程中懒汉模式需要点操作来保证线程安全; 3. 使用场景: 对有限资源的使用, 比如打印机
1.4 正则表达式
1.5 java内存模型以及垃圾回收算法
65赞, 有点复杂, java虚拟机分为
111赞, 太长了, 吃不消看; 前面部分讲的跟楼上是一样的
2. web方面
2.1 SpringMVC的架构设计
3赞, 太复杂, 看不懂
5赞, 1. 纯servlet -> 2. 纯jsp -> 3. jsp + javaBean -> 4. jsp + javaBean + servlet (也就是MVC模式);
2.2 SpringAOP源码
2.3 Spring事务体系源码以及分布式事务Jotm Atomikos源码实现
2.4 数据库隔离级别
2.5 数据库
2.6 ORM框架: mybatis、Hibernate
2.7 SpringSecurity、shiro、SSO(单点登录)
2.8 日志
log4j, log4j2, jul, logback 都是日志的具体实现, 而common-logging(动态)和slf4j(静态)则是作为门面来使用
16年的文章, 日志可记录在控制台, 文件, 数据库, 也可配置日志记录级别, 定时记录日志.
2.9 datasource
3赞, 每次请求连接数据库耗时大约为140ms, 而使用连接池耗时大约10-20ms
2.10 HTTPS的实现原理
拜阮一峰大神, 用于加密通讯;
1.针对问题 = > 解决方法:
__1.1. 窃听 => 加密传播
__1.2. 篡改 => 校验机制
__1.3. 冒充 => 身份证书
2. 握手增加到4次
3. 分布式、java中间件、web服务器等方面
3.1 ZooKeeper源码
3.2 序列化和反序列化框架
3.9 web服务器tomcat、ngnix的设计原理
17赞, 看不懂, 没用
0赞, tomcat7默认使用bio, 默认并发150个线程; tomcat8之后默认使用nio, 基于缓冲区的io;
当并发超过250个时应考虑集群; apr是异步非阻塞, nio是同步非阻塞, bio是同步阻塞
2赞, 看不懂
对上文一坨文字的解释, 做了一个图来表示, servlet作为最内层被包装的对象; 其他没看懂, 估计是做了层层处理
4.大数据方向
java知识树的更多相关文章
- Java知识总结
...
- 实现网络数据提取你需要哪些java知识
本篇对一些常用的java知识做一个整合,三大特性.IO操作.线程处理.类集处理,目的在于能用这些只是实现一个网页爬虫的功能. Ⅰ 首先对于一个java开发的项目有一个整体性的了解认知,项目开发流程: ...
- MySQL知识树-查询语句
在日常的web应用开发过程中,一般会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇随笔我们就来一起看看MySQL查询知识相关的树是什么 ...
- Java知识体系
Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...
- java遍历树(深度遍历和广度遍历
java遍历树如现有以下一颗树:A B B1 B11 B2 B22 C C ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Java知识体系纲要
最近一段时间,把Java主要涉及到的大概念都大致学习了一遍,为了让自己能够更好地形成对Java知识体系的整体把握,先把学过的知识点添加到自己画的思维导图上. 整个Java知识体系的划分,我自己主要将它 ...
- java集合树状结构及源码
java集合树状结构及源码 最近一直想看一下java集合的源码,毕竟平时用的比较多,但总是感觉是跟着习惯new出来一个对象,比如ArrayList,HashMap等等,所以就简单的看了一下,了解了一下 ...
- 震惊!90%的程序员不知道的Java知识!
震惊!90%的程序员不知道的Java知识! 初学Java的时候都会接触的代码 public static void main(String[] args){ ... } 当时就像背公式一样把这行代码给 ...
随机推荐
- 1052 Linked List Sorting (25分)
题目 1. 思路 使用map存放所有的地址对 使用起始地址遍历map,结果存放在vector中 排序vector 输出vector 2. 注意点 开始的时候起始地址为-1 可能有些节点没有用到,注意排 ...
- Mybatis学习笔记——输入参数parameterType、Mybatis调用存储过程
输入参数:parameterType(两种取值符号) 1.类型为简单类型 区别: (1) #{可以为任意值} ${vaue}--->标识符只能是value (2) ...
- LVS-DR模式搭建
出于对架构的兴趣,一有时间我就会了解一下如何搭建一个高并发,高可用,可扩展的服务器运行环境.LVS-DR究竟现在的企业运用频率有多高其实我也不清楚,本文是下班之余断断续续研究搭建笔录,并且仅仅在vir ...
- 我竟然把today = new Date();写在了全局变量里面
let today = new Date();应该在每次用之前重新生成新的对象,因为对于例如 today.getTime() 这种方法,取得是today对象的time,而非调用today对象取得实时时 ...
- 用apscheduler写python定时脚本
apscheduler 官方文档:http://apscheduler.readthedocs.io/en/latest/ 写一个后台定时任务,一般2个选择,一个是apscheduler,一个cele ...
- css各类选择器类型和用法
1.ID 选择器(ID selector,IS):使用 # 标识selector,语法格式:#S{...}(S为选择器名).例:id为name的标签会匹配下面的样式 <style> #na ...
- CentOS安装docker,及其基本操作
CentOS安装docker,及其基本操作 一.安装docker Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上 1.uname -an 查看当前系统版本 2.y ...
- LED Magic Light - How Does The LED Light Change Color?
The LED Magic Light states that the color-changing LED is not an LED in the package, but three ...
- window10配置远程虚拟机window7上的mysql5.7数据源
原文链接:http://www.xitongcheng.com/jiaocheng/win10_article_18644.html windows10系统用户想要在电脑中设置ODBC数据源,于是手动 ...
- Vue-cli3 项目配置 Vue.config.js( 代替vue-cli2 build config)
Vue-cli3 搭建的项目 界面相对之前较为简洁 之前的build和config文件夹不见了,那么应该如何配置 如webpack等的配那 只需要在项目的根目录下新建 vue.config.js 文件 ...