【思维导图】Java后端学习笔记-算法和数据结构-脑图

合集下载

数据结构——图思维导图-高清简单脑图模板-知犀思维导图

数据结构——图思维导图-高清简单脑图模板-知犀思维导图

数据结构——图图的定义和基本术语
定义是由一个顶点集V和一个顶点间的关系集合组成的数据结构
分类
有向图
无向图
基本术语
有(无)向网弧或边带权的图
子图
完全图含有e=n(n-1)/2条边的无向图
有向完全图含有e=n(n-1)条弧的有向图
稀疏图边或弧的个数<nlogn
稠密图边或弧的个数>=nlogn
度(入度+出度)
入度以顶点v为弧尾的弧的数目
出度以顶点v为弧头的弧的数目
路径长度路径上边的数目
连通图图中任意两个顶点之间都有路径相通
图的遍历
深度优先搜索DPS
类似于先序遍历
实质对每个顶点查找其邻接点的过程
广度优先搜索BFS实质通过边或弧找邻接点的过程
图的存储结构
邻接矩阵
有向图:对称统计第i行1的个数可得顶点i的出度
无向图:不对称统计第j列1的个数可得顶点j的入度
邻接表只存储图中已有的弧或边的信息
有向图的十字链表将有向图的邻接表和逆邻接表结合起来的一种链
图的应用
最小生成树
普里姆(Prim)算法
贪心算法
最短路径
Dijkstra算法
Floyd算法
拓扑排序
关键路径。

Java程序设计(基础)思维导图-简单高清脑图_知犀思维导图思维导图-简单高清脑图_知犀

Java程序设计(基础)思维导图-简单高清脑图_知犀思维导图思维导图-简单高清脑图_知犀

Java程序设计(基础)概述特点面向对象平台可移植性分布式多线程安全性工作方式开发工具JDKjavacjava javadocIDElntelliJEclipse NetBeans术语JDK JREJVM API源程序结构package管理类解决命名冲突import class 注释行注释//块注释/*…*/文档注释/**…*/@author @param@return @throws基本语法关键字有特殊含义的单词(50)能用的(48)不能用的(2)gotoconst 标识符给类、接囗、方法、变量等起的名字命名规则字母、数字、下划线和$,数字不能开头大小写敏感不能跟关键字和保留字(null、true、false)冲突见名知意驼峰标识类名每个单词首字母大写变量和方法名从第二个单词开始每个单词首字母大写命名常量全大写,多个单词用下划线隔开运算符分类算术运算符赋值运算符关系运算符短路运算符条件运算符(三目运算符)自增/自减运算符正负号运算符移位运算符布尔运算符位运算符new 创建对象instanceof运行时类型识别()强制类型转换改变运算优先级[]下标运算符.取成员运算符优先级搞不清楚优先级直接加()结合性从左向右从右向左赋值运算自加自减条件运算正负号字面量整型字面量:100、100L浮点型字面量:3.5、3.5F、3.123e2字符字面量:'a'、'\t'、'\123'布尔型字面量:true、false引用字面量:null类型字面量:String.class、int.class分隔符数据类型基本类型整叙byteshortintlong小数floatdoublecharboolean 枚举类型enum引用类型String数组自定义的类或接囗面向对象基本概念类对象的蓝图和模板类与类之间的关系IS-A:继承泛化实现HAS-A:关联关联聚合合成USE-A:依赖定义类[访问修饰符] [修饰符] class类名 [extends 父类] [implements 接囗1,接口2,...] {}属性:数据抽象方法:行为抽象构造器创建对象:new构造器()对象一切皆为对象对象都有属性和行为对象都是唯一的对象都属于某个类消息调用对象的方法就是给对象发送了一个消息一个对象能够接受某种消息,就意味着该对象向外界提供了某种服务三大支柱封装隐藏一切可隐藏的实现细节,只暴露最简单的编程接囗继承从已有类创建新类的过程提供继承信息的类叫父类(基类、超类)得到继承信息的类叫子类(派生类)子类可以继承到父类中public、protected的属性和方法Java中的继承是单继承Object类是所有类的父类多态定义解释1:同样的引用调用同样的方法却做了不同的事情解释2:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但对A系统来说是透明的实现方法重写:不同的子类对父类的同一方法给出不同的实现版本对象造型:用父类型的引用引用子类型的对象相关内容访问修饰符类public默认方法、属性、内部类public protected默认private抽象类如果一个类有抽象方法,这个类必须被声明为抽象类抽象类中可以没有抽象方法,抽象类也可以有自己的构造器抽象类不能实例化(不能创建对象)强烈建议:将被继承的类设计成抽象类接囗接囗是约定:实现接囗的类必须重写接口中所有方法,否则就要声明为抽象类接囗代表能力:实现了接囗的类就具备了接囗所描述的能力接囗是一种角色:一个类可以实现多个接囗,一个接囗也可以被多个类实现Java中的接囗单方法接囗:这个唯一的方法通常都是回调方法ActionListener Runnable Comparable标识接囗:没有方法,但是表示了某种能力CloneableSerializable常量接囗:这是接囗最不正确的用法内部类相当于外部类中的一个属性内部类可以访问外部类的私有成员设计原则单一职责原则专业化模块化开闭原则抽象是关键封装可变性依赖倒转原则里氏替换原则接囗隔离原则合成聚合复用原则迪米特法则字符串String创建字符串对象String s="Hello";s引用静态区的字符串字面量String s=new String(Hello")s引用堆上的字符串对象字符串的方法长度:length()取字符:charAt(int)变大/小写:toUpperCase()/toLowerCase()连接:concat(String)比较:equals(String)/compareTo(String)判断开头/结尾:startsWith(String)/endsWith(String)模式匹配:indexOf(String,[int])/lastlndexOf(String,[int]取子串:substring(int,[int])修剪左右两边空白:trim()替换:replace(String,String)/replaceAII(String,String拆分:split(String)String代表的是不变字符串可以被修改的字符串StringBuilder 适用于单线程环境StringBuffer适用于多个线程操作同一个字符串的场景方法在指定位置插入字符串:insert(int,String)删除指定位置的字符:delete(int,int)倒转:reverse()追加:append(String)方法[访问修饰符] [修饰符]返回类型方法名([参数列表])[异常声明]访问修饰符public protected默认private修饰符static abstractfinal修饰变量,变量变成常量修饰类,类不能被继承修饰方法,方法不能被重写synchronizednative方法调用静态方法:类名.方法名(实参列表)非静态方法:对象.方法名(实参列表)递归数组基本用法数组的定义数组的初始化new静态初始化length属性下标运算Arrays工具类sort:排序toString:将数组变成字符串copyOf:数组拷贝equals:比较数组元素是否相同二维数组一个普通数组,每个元素又是一个数组应用表格矩阵2D游戏中的地图棋盘流程控制循环结构分类while循环do…while循环for循环for-each循环相关关键字breakcontinue分支结构if...elseswitch...case...default顺序结构。

《Java高并发核心编程(卷2):多线程、锁、JMM、JUC、》读书笔记PPT模板思维导图下载

《Java高并发核心编程(卷2):多线程、锁、JMM、JUC、》读书笔记PPT模板思维导图下载

1.2.3 进程与线 程的区别
1.3.1 Thread类 详解
1.3.2 创建一个 空线程
1.3.3 线程创建 方法一:继承 Thre...
1.3.4 线程创建 方法二:实现 Runn...
1.3.5 优雅创建 Runnable线程...
1.3.6 通过实现 Runnable接口...
1.3.7 线程创建 方法三:使用 Call...
05
2
06
2.9.6 需要在 synchro nize...
第3章 CAS原理与JUC原子类
01
3.1 什 么是CAS
02
3.2 JUC 原子类
03
3.3 对 象操作的 原子性
04
3.4 ABA 问题
05
3.5 提 升高并发 场景下 CAS操作 的性能
02
2.2 synchro nized关 键字
03
2.3 生 产者-消 费者问题
04
2.4 Java对 象结构与 内置锁
05
2.5 偏 向锁的原 理与实战
06
2.6 轻 量级锁的 原理与实 战
2.8 偏向锁、轻 量级锁与重量级
锁的对比
2.7 重量级锁的 原理与实战
2.9 线程间通信
2.1.1 自增 运算不是线
06
5.2.6 CLH自旋 锁
05
5.2.5 CAS可能 导致“总 线风暴”
5.3.1 非公 平锁实战
5.3.2 公平 锁实战
5.4.1 锁的 可中断抢占
5.4.2 死锁 的监测与中 断
5.5.2 共享锁 Semaphore
5.5.1 独占锁
5.5.3 共享锁 CountDownLa...

大一计算机思维导图知识点

大一计算机思维导图知识点

大一计算机思维导图知识点计算机思维导图是一种以图形形式表达和展示信息关系的工具,在大一的计算机学习中具有重要的作用。

本文将介绍一些大一计算机课程中常用的思维导图知识点,帮助学生更好地理解和记忆相关概念。

一、计算机基础知识计算机基础知识是大一计算机学习的起点,包括计算机硬件、软件、操作系统等方面的内容。

在思维导图中可以用中心主题表示计算机基础知识,并通过分支主题展开以下内容:1. 计算机硬件- 中央处理器(CPU)- 内存- 硬盘- 显卡- 输入输出设备等2. 计算机软件- 操作系统- 应用软件- 开发工具等3. 操作系统- Windows- macOS- Linux等二、编程语言在大一的计算机学习中,编程语言是非常重要的一部分。

以下是一些常见的编程语言:1. C语言- 基本语法- 数据类型- 控制结构- 数组与指针等2. Java语言- 类与对象- 继承与多态- 异常处理- 输入输出等3. Python语言- 基本语法- 字符串操作- 列表与元组- 文件操作等三、数据结构与算法数据结构与算法是计算机学习中的核心内容之一,对于学习和理解数据处理和算法设计非常重要。

以下是一些常见的知识点:1. 数据结构- 数组- 链表- 栈与队列- 树与图等2. 算法- 排序算法(冒泡排序、插入排序、快速排序等)- 查找算法(顺序查找、二分查找等)- 图算法(广度优先搜索、深度优先搜索等)四、数据库数据库是计算机存储和管理数据的重要工具,以下是一些常见的数据库相关知识点:1. 数据库基础- 数据库概念- 关系型数据库与非关系型数据库- 数据库的三范式等2. SQL语言- 基本语法- 数据库的增删改查操作- 数据库的连接与关联查询等3. 数据库设计- 实体关系模型(ER模型)- 数据表设计与规范化等五、计算机网络计算机网络是现代计算机通信的基础,以下是一些常见的计算机网络知识点:1. 网络基础- 互联网的基本概念- 网络协议与标准- IP地址与子网划分等2. 网络通信- TCP/IP协议- HTTP协议- DNS解析等3. 网络安全- 防火墙- VPN- 加密与解密等六、操作系统操作系统是计算机的核心软件之一,以下是一些常见的操作系统知识点:1. 操作系统基础- 进程管理- 内存管理- 文件系统等2. Windows操作系统- 常用命令- 系统配置与优化- 用户管理等3. Linux操作系统- 常用命令- 文件与目录管理- 用户与权限管理等以上是大一计算机思维导图知识点的简要介绍,学生可以根据个人需要在思维导图中添加更详细的内容。

java思维导图笔记

java思维导图笔记

Java思维导图笔记1. 什么是思维导图思维导图是一种用于展示思维和概念之间关系的图形工具。

它能够帮助我们整理、组织和表达思维。

在学习和思考过程中,使用思维导图可以更清晰地将复杂的信息归类和记录,提高信息的理解和记忆。

2. Java基本语法2.1 数据类型Java提供了一系列的数据类型,包括基本数据类型(如整数、浮点数、字符、布尔值)和引用数据类型(如类、接口、数组等)。

常见的基本数据类型有: - 整数类型:byte、short、int、long- 浮点数类型:float、double - 字符类型:char - 布尔类型:boolean引用数据类型: - 类(class):是面向对象编程中的基本概念,用来封装数据和方法。

- 接口(interface):是一种抽象的数据类型,用来定义类的行为规范。

- 数组(array):用来存储一组相同类型的元素。

2.2 控制流程语句控制流程语句用于控制程序的执行流程。

Java提供了三种主要的控制流程语句:顺序结构、选择结构和循环结构。

顺序结构是最简单的控制流程,指按照代码的先后顺序执行。

选择结构用于根据条件选择不同的执行路径。

常见的选择语句有:- if语句:用于根据一个条件判断选择是否执行某个代码块。

- switch语句:用于根据一个表达式的值选择执行不同的代码块。

循环结构用于重复执行某个代码块直到满足退出条件。

常见的循环语句有: - while语句:在循环开始之前,先判断条件是否满足,如果满足则执行循环体,然后再次判断条件。

- do-while语句:先执行一次循环体,然后再判断条件是否满足,如果满足则继续执行循环体。

- for语句:在循环开始之前,先执行初始化表达式,然后判断条件是否满足,如果满足则执行循环体,并在每次循环结束后执行更新表达式。

2.3 方法方法是一种可重复使用的代码块,用于执行特定的任务。

在Java 中,每个方法都有名称和参数列表,有时也有返回值。

Offer来了:Java面试核心知识点精讲(框架篇)

Offer来了:Java面试核心知识点精讲(框架篇)
Cloud Config
3 2.3 Spring
Cloud Eureka
4 2.4 Spring
Cloud Consul
5
2.5 Spring Cloud Feign
2.7 Spring Cloud Zuul
2.6 Spring Cloud Hystrink的 应用
作者介绍
这是《Offer来了:Java面试核心知识点精讲(框架篇)》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
读书笔记
我不清楚作者是为了凑篇幅还是什么,API相关的内容居多,原理性的东西不足。
- spring:原理/应用 IoC AOP MVC事务 MyBatis缓存 - spring cloud:原理/应用 boot config eureka consul hystrix zuul链路监控 - netty:原理/应用 - zk:原理/应用选举机制数据模型应用场景 - kafka:原 理/应用组成数据存储设计生产者并发设计 - Hadoop:原理/应用 HDFS MapReduce YARN - HBase:原理/应用列 式存储架构组成数据读写流程 - Cassandra:原理/应用数据模型 Gossip协议 NWR理论一致性hash副本策略/读 写机制 - ES:原理/应用数据模型分布式架构数据读写原理段合并 - spark:原理/应用特点模块组成运行机制 RDD/Streaming/SQL/DataFrame/DataSet - Flink:原理/应用核心概念架构事件驱动模型数据分析应用基于状 态的内存计算。
Offer来了:Java面试核心知识点精 讲(框架篇)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录

JAVA学习路线图.doc

JAVA学习路线图.doc

JA V A学习路线图Java 基础Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的oop 特性:封装、继承、多态。

此外还有泛型、反射的特性,很多框架的技术都依赖它,比如Spring 核心的Ioc 和AOP,都用到了反射,而且Java 自身的动态代理也是利用反射实现的。

此外还有Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在Web 开发中无处不在,也是面试经常会被问到的,所以在自学Java 后端之前,不妨先打好这些基础,另外还有Java8 的一些新特性,也要重点关注,比如Lambda 表达式、集合的Stream 流操作、全新的Date API 等等,关于新特性,我也写了几篇关于这方面的博客,请自行找吧,就不贴出来了。

关于书籍推荐,我是不建议初学者一开始就拿着「Java 编程思想」啃的,因为当初我就是那个当天下午决定自学Java,晚上就抱着这本书啃的人,说实话,我当时真的不懂它在说啥,因为我没有一点的面向对象语言编程的基础,而这本书又写得太博大精深了,在当时的我来说,完全是天书,但是我认为它仍然是Java 界的圣经,每读一次都有所收获。

我在这里推荐你们一开始先看「Java 核心技术」,这本书讲得比较通俗易懂,初学者比较能接受。

关于视频推荐,我当初就是听某客的毕向东老师讲的Java 基础教程(可以关注我的微信公众号获取),毕老师讲的实在是太生动有趣了,不知不觉把我带进Java 的坑里无法自拔,有时候我会听他视频时笑出声来,也许是我那段自学阶段最有趣的时刻了。

数据库关于sql 方面:SQL 教程、MySQL 教程我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。

我建议学sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的sql 是非常重要的。

在这里我说下我在项目一直秉承着sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。

《大话数据结构》第二章:算法(思维导图)

《大话数据结构》第二章:算法(思维导图)

2. 算法定义算法是解决特点问题求解步骤的描述, 在计算机中表现为指令的有限序列, 并且每条指令表示一个或多个操作。

没有通用的算法, 就像没有万能药一样。

特定的问题,有特定的对应的算法。

特性输入算法具有0个或多个输入。

输出算法至少有1个或多个输出。

有穷性指算法在执行有限的步骤之后, 自动结束而不会出现无限循环, 并且每个步骤在可接受的时间内完成。

确定性算法的每一步骤都具有确定的含义, 不会出现二义性。

可能性算法的每一步都必须是可行的, 也就是说每一步都能够通过执行有限次数完成。

设计算法的要求正确性指算法至少应该具有输入、输出和加工处理无歧义性、能正确反应问题的需求、能够得到问题的正确答案。

可读性算法设计的另一目的是为了便于阅读、理解和交流。

健壮性当输入数据不合法时, 算法也能做出相关处理, 而不是产生异常或莫名其妙的结果。

时间效率高和存储量低算法最好用最少的存储空间,花费最少的实际,办成同样的事。

算法的度量方法事后统计方法通过设计好的测试程序和数据, 利用计算机计时器多不同算法编制的程序的运行时间进行比较, 从而确定算法效率的高低。

具有很大缺陷:编号程序后才能发现程序的运行时间, 若算法很糟糕,不就是竹篮打水一场空。

不同计算机硬件和软件各有不同会造成结果的不同。

(操作系统、编译器、运行框架、处理器的不同)很难设计算法的测试数据, 小的测试数据往往无法测试出算法的真正的效率。

事前分析估算方法在计算机程序编制前, 一句统计方法对算法进行估算。

对于运行时间的影响因素:算法采用的策略、方法编译产生的代码指令问题的输入规模(指输入量的多少)机器执行指令的速度时间复杂度如何推导大O阶?1. 用常数1取代运行时间中所有加法常数(忽略加法常数)2. 在修改后的运行次数函数中, 只保留最高阶项。

3. 如果最高阶项存在且不是1, 则去除与这个项相乘的常数。

得到的结果就是大O阶。

常数阶O(1)线性阶O(n)对数阶O(logn)平方阶O(n^2)用的时间复杂度所耗费的时间从小到大依次是:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档