- 博客(81)
- 资源 (1)
- 收藏
- 关注
原创 Java常用算法三:01背包问题
文章目录一、动态规划1、简介2、应用场景:背包问题二、01背包问题1.1 分析过程1.2 java实现01背包问题求解笔记来源:尚硅谷一、动态规划1、简介动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。(即下一个
2020-08-03 11:49:38 835
原创 Java常用算法二:分治法
文章目录一、分治算法的基本步骤二、分治算法解决汉诺塔问题2.1 汉诺塔的规则:2.2 使用分治算法笔记参考:尚硅谷分治法就是把很复杂的问题分而治之,把一个很大的问题分成几个很小的问题,再把这几个很小的问题分成很多个更小的问题。直到子问题可以简单地直接求解,那么原问题的解就是子问题解的集合。分治算法可以解决:二分搜索大整数乘法棋盘覆盖合并排序快速排序线性时间选择最接近点对问题循环赛日程表汉诺塔一、分治算法的基本步骤分治法在每一层递归上都有三个步骤:分解:将原问题分解为
2020-08-02 21:44:23 319
原创 JAVA常用算法一:二分查找【递归 or 非递归】
文章目录一、Java实现二分查找【递归】二、Java实现二分查找【非递归】三、测试一、Java实现二分查找【递归】 //递归使用二分查找 public static int binarySearchRecursion(int[] arr, int target, int left, int right) { if(left > right) return -1; int mid = (left + right) / 2; int midVal = arr[mid]; if(
2020-08-02 20:23:14 356
原创 java 反射机制及其应用
文章目录一、反射的概述二、关于Class类的理解并获取Class实例2.1 关于 java.lang.Class 类的理解2.2 获取Class实例的四种方式三、Class实例对应的结构说明四、理解类的加载过程与ClassLoader4.1 类的加载过程4.2 ClassLoader的理解笔记来源: 尚硅谷一、反射的概述Reflectlon (反射) 是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载
2020-07-31 12:06:18 447
原创 java Map及其实现类的底层原理
文章目录一、Map接口及其多个实现类的对比二、Map中存储的key-value特点三、HashMap在JDK7中的底层原理四、HashMap在JDK8中的底层原理五、HashMap在JDK7中的底层源码5.1 构造器5.2 put方法六、HashMap在JDK8的源码分析6.1 构造器6.2 put七、LinkedHashMap的底层实现笔记来源: 尚硅谷一、Map接口及其多个实现类的对比首先看下Map及其实现类的类图关系:Map:双列数据,存储key-value对的数据|实现类 |含义 |
2020-07-30 18:58:12 1254
原创 java实现数据结构-堆排序
文章目录一、堆排序的基本介绍二、堆排序的基本思想三、堆排序的实现3.1 堆排序的思路3.2 堆排序的java实现笔记来源: 尚硅谷一、堆排序的基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法, 堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn), 它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值, 称为大顶堆,注意: 没有要求结点的左孩子的值和右孩子的值的大小关系每个结点的值都小于或等于其左右孩子结点的值,称为小顶
2020-07-29 15:15:32 249
原创 尚硅谷设计模式笔记-适配器模式
Table of Contents generated with DocToc一、生活中的适配器二、程序中的适配器模式2.1 基本介绍2.2 工作原理三、类适配器模式3.1 应用实例3.2 类图3.3 java实现3.4 总结四、对象适配器五、接口适配器模式5.1 类图5.2 java实现一、生活中的适配器每个国家使用的插座标准不同,比如泰国用的是两孔的(欧标),中国用的是三孔的。我们到泰国旅游时,如果只带了三孔插头,则可以买个多功能转换插头【适..
2020-07-27 12:04:38 259
原创 Jexl表达式引擎-根据字符串动态执行JAVA
Table of Contents generated with DocToc一、使用场景二、市面上表达式引擎比较2.1 Aviator2.2 Jexl一、使用场景在做某些项目的时候,有时会遇到如下情景:用户需要传入某个JAVA 表达式,然后后台将这个表达式当作JAVA代码执行二、市面上表达式引擎比较我们有许多表达式引擎可供选择:JexlAviator2.1 Aviatoravitor具体使用技巧可以参考这篇博客:https://blog.csdn.ne..
2020-07-20 10:45:19 1229
转载 七种方法实现单例模式
笔记来源:尚硅谷目录一、单例模式的介绍二、饿汉式应用实例饿汉式(静态常量)饿汉式(静态代码块)三、懒汉式应用实例懒汉式(线程不安全,不推荐使用)懒汉式(线程安全,同步方法,也不推荐)四、双重检查(推荐使用)五、静态内部类(推荐使用)六、枚举(推荐使用)一、单例模式的介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创
2020-07-19 16:23:13 320
转载 fastjson将json字符串转化为java对象
目录一、导入一个fastjson的jar包二、Json字符串格式三、根据json的格式创建Java类四、给java类的所有属性添加setter方法五、转换为java对象一、导入一个fastjson的jar包在pom.xml里加上这个依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.
2020-07-16 09:52:42 4482 1
原创 尚硅谷设计模式笔记-装饰者模式
文章目录一、需求二、装饰者方法三、装饰者模式的JDK应用笔记来源:尚硅谷一、需求星巴克咖啡订单项目(咖啡馆) :咖啡种类/单品咖啡: Espresso(意大利浓咖啡)、 ShortBlack、 LongBlack(美式咖啡)、Decaf(无因咖啡)调料: Milk、 Soy(豆浆)、 Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用面向对象的方法来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合。二、装饰者方法说明
2020-07-09 11:10:29 366 1
原创 尚硅谷设计模式-观察者模式
文章目录一、需求二、解决方案2.1 普通方案2.2 观察者模式笔记来源:尚硅谷一、需求天气预报项目需求,具体要求如下:气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方二、解决方案2.1 普通方案网站调用的气象站dataChange()当数据定时更新时,气象站数据更新后,调用网站的update()
2020-07-08 21:07:30 244
原创 数据结构-B树
文章目录一、概念二、查找三、插入平衡二叉树不会退化为线性结构,所以查找效率高,在此基础上设计出了B树一、概念B树又称多路平衡查找树,B树中所有结点的孩子结点数的最大值称为B树的阶。一棵m阶B树或为空树,或为满足如下特性的m叉树:树中每个结点至多有m棵子树(即至多含有m-1个关键字)若根结点不是终端结点,则至少有两棵子树除根结点外的所有非叶结点至少有⌈m/2T⌉棵子树(即⌈m/2⌉-1 个关键字)非叶子节点结构:所有叶子节点(失败节点)都出现在同一层次上,并不带任
2020-07-02 10:45:02 258
原创 数据结构之查找-顺序查找,折半查找,分块查找
文章目录一、顺序查找1.1 无序表的顺序查找1.2 有序表的顺序查找二、折半查找三、分块查找一、顺序查找顺序查找又称线性查找,主要用于在线性表中进行查找。1.1 无序表的顺序查找对无序线性表进行顺序查找,查找失败时要遍历整个线性表int search_seq_u(int elems[], int key) { int i; for(i = elems.length-1; i >=0 && elems[i]!=key; i--); return
2020-07-02 10:12:57 2148
原创 最小生成树的java实现
文章目录一、概念二、算法2.1 Prim算法2.2 Kruskal算法笔记来源:中国大学MOOC王道考研一、概念连通图:图中任意两点都是连通的,那么图被称作连通图生成树:连通图包含全部顶点的一个极小连通子图最小生成树:在含有n个顶点的带权无向连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树(不一定唯一)。性质1:不一定唯一性质2:如果所有边的权重都不相同,则一定唯一性质3:如果连通图只有n-1条边,则最
2020-07-01 16:30:56 2902
原创 3. 狂神的设计模式笔记-代理模式
文章目录一、静态代理1.1 角色分析:1.2 代码实现创建客户1.3 深入理解静态代理二、动态代理2.1 代码实现本文笔记来自于:狂神的设计模式代理模式的分类:静态代理动态代理一、静态代理1.1 角色分析:抽象角色:一般会使用接口或者抽象类来解决真实角色:被代理的角色(eg:房东)代理角色:代理真实角色后,我们一般会做一些附属操作(eg:中介)客户:访问对象的人(eg:租房的人)1.2 代码实现首先创建抽象角色,将共同业务放入其中public interface R
2020-06-29 12:30:56 3535
原创 2.设计模式-桥接模式
文章目录一、使用场景二、实现方法三、优势与劣势四、经典案例本文笔记来自于:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构模型,又称为柄体(Handle and Body)模式或接口(interface)模式。一、使用场景 我们观察以下结构,如果我们用java的类的继承关系去表示如下这张图的话,会发现修改起来非常麻烦。比如:新增一个品牌,需要在台式电脑,笔记本电脑,平板电脑三个类下再写三个子类新增一种电脑(人体电脑),就需要在这种电脑下再增加三个品
2020-06-28 20:38:52 236
原创 狂神设计模式笔记-工厂模式
文章目录一、简单工厂模式二、工厂方法模型核心本质:实例化对象不使用new,用工厂方法代替将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦详细分类:简单工厂模式:用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码)工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂模式:围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。满足OOP七大原则中的三个:开闭原则: 一个软件的实体应当对扩展开放,对修改关闭
2020-06-26 16:06:40 667
原创 11. 王道考研-二叉树的实现
文章目录一、二叉树的顺序存储二、二叉树的链式存储三、二叉树的遍历3.1递归算法3.2 非递归算法3.3 层次遍历3.4 由遍历序列构造二叉树3.5 线索二叉树一、二叉树的顺序存储完全二叉树:非完全二叉树(先要补成完全二叉树)二、二叉树的链式存储typedef char ElemType;typedef struct node { ElemType data; struct node *lchild; struct node *r
2020-06-24 11:31:56 624 1
原创 10. 王道考研-树与二叉树
文章目录一、树的概念二、树的性质三、二叉树3.1 特殊二叉树3.2 二叉树的性质一、树的概念树是一种逻辑结构,是n(n>=0)个节点的有限集合,n=0时,称为空树,而任意的非空树满足:1) 有且仅有一个特定的称为根的节点2) 当n> 1时,其余结点可分为m (m>0)个互不相交的有限集合,其中每一个集合本身又是一棵树,称为根结点的子树。基本术语:森林是m(m>=0)棵互不相交的树的集合二、树的性质树的结点数 = 所有节点的度数+1 = 边数 + 1度
2020-06-24 11:30:58 381
原创 9.特殊矩阵的压缩存储
压缩存储:指多个值相同的元素只分配一个存储空间, 对零元素不分配存储空间。特殊矩阵:指具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。特殊矩阵的压缩存储:找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现规律性分布、值相同的多个矩阵元素压缩存储到一个存储空间上。一、对称矩阵将对称矩阵存放为一维数组eg:若要取a[1,2] ,实则取一维数组的b[1](k=2(2-1)/2 + 1-1 = 1)二、三角矩阵前n(n+1)/2的空间存放的是非c的元素,.
2020-06-24 11:30:15 358
原创 13.链路层设备
一、物理层扩展主机:二、链路层扩展设备:网桥和交换机2.1 网桥网桥根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)网桥优点:过滤通信量,增大吞吐量扩大了物理传输范围提高了可靠性可互连不同物理层、不同MAC子层和不同速率的以太网。透明网桥:“透明”指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备一一自学习。A给B发送数据
2020-06-23 12:17:09 173
原创 9.CSMA_CD协议
先听再说,边听边说载波监听多点接入/碰撞检测CSMA/CD( carrier sense multiple access with collision detection)CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。一、传播时延对载波监听的影响最多是2τ(只要经过2τ时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。)二、如何确定碰撞后的重传时机截断二进制指数规避算法确定基本退避(推迟)
2020-06-23 12:16:38 775
原创 7.CSMA协议
载波监听多路访问协议CSMACS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上协议思想:发送帧之前,监听信道一、1-坚持CSMA坚持指的是对于监听信道忙之后的坚持。1-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道。空闲则直接传输,不必等待忙则一直监听,直到空闲马上传输如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程优点:只要媒体空闲,
2020-06-23 12:16:05 1262
原创 6.ALOHA协议
动态媒体接入控制/多点接入特点:信道并非在用户通信时固定分配给用户。一、纯ALOHA协议纯 ALOHA协议思想:不监听信道,不按时间槽发送,随机重发。想发就发二、时隙ALOHA协议时隙 ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。控制想发就发的随意性三、关于ALOHA和时隙ALOHA纯 ALOHA比时隙 ALOHA吞吐量更低,效率更低纯 ALOHA想发就发,时隙 ALOHA只有在时间片
2020-06-23 12:15:36 1287
原创 8.栈和队列的应用
文章目录一、栈的应用1.1 括号匹配问题2.2 表达式求值问题2.3 递归一、栈的应用1.1 括号匹配问题怎样判断是不是匹配序列呢?算法思想:1)初始一个空栈,顺序读入括号。2)若是右括号,则与栈顶元素进行匹配●若匹配,则弹出栈顶元素并进行下一个元素●若不匹配,则该序列不合法3)若是左括号,则压入栈中4)若全部元素遍历完毕,栈中非空则序列不合法代码如下:#include <malloc.h>#include <stdio.h>#include <
2020-06-23 12:12:16 244
原创 7.王道考研数据结构-队列
文章目录一、队列的基本操作二、队列(顺序队)的实现2.1 队列的初始化2.2 入队和出队三、循环队列(顺序队)3.1 循环队列的初始化3.2 判断队空3.3 入队3.4 出队四、链队4.1 链队的初始化4.2 判断队列是否为空4.3 入队和出队一、队列的基本操作二、队列(顺序队)的实现#define MaxSize 50#define ElemType inttypedef struct{ int front;//队首 int rear;//队尾 Elem
2020-06-23 11:08:47 541
原创 6.王道考研数据结构-栈
文章目录一、栈的基本操作二、栈的顺序存储结构2.1 栈的初始化2.2 判断栈空2.3 栈的进栈2.4 栈的出栈2.5 读出栈顶元素2.6 共享栈三、栈的链式存储结构一、栈的基本操作二、栈的顺序存储结构#define MaxSize 50#define ElemType inttypedef struct{ ElemType data[MaxSize];//保存数据的数组 int top;//指向栈顶数组下标(最初为-1)}SqStack;2.1 栈的初始化void I
2020-06-23 09:54:04 463
原创 5.顺序表和链表的最值,逆置和归并有序表
一、顺序表和链表的数据结构。顺序表:#include <malloc.h>#include <stdio.h>#include <stdlib.h>#define MaxSize 50#define ElemType int// 顺序表typedef struct { ElemType *data; int length;}SqList;void InitList(SqList *&L,ElemType a[],int n
2020-06-23 09:05:17 450
原创 4.特殊链表
一、双链表双链表需要注意的是插入和删除操作插入S->next = p->nextp->next->prior = SS->prior = p->nextp->next = S(这个必须放在最后)删除(删除q)p->next = q->nextq->next->prior = pfree(q)二、循环链表循环链表分为:循环单链表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上
2020-06-23 09:04:50 187
原创 4.检错编码
一、海明码海明码:能发现双比特错,纠正单比特错工作原理:牵一发而动全身确定校验码位数r海明不等式:确定校验码和数据的位置校验码全部放在2的几次方的位置求出校验码的值检错并纠错令所有要校验的位异或...
2020-06-22 11:38:27 246
原创 3.差错控制
差错从何而来?概括来说,传输中的差错都是由于噪声引起的。全局性1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。解决办法:提高信噪比来减少或避免干扰。(对传感器下手)局部性2.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。一、奇偶校验码特点:只能检测出奇数(1,3,5。。。)个比特错误,检错能力50%二、CRC循环冗余码发送端发送:接收端接收:11010110111110 ÷ 10011...
2020-06-22 11:28:36 319
原创 2.封装成帧和透明传输
一、 成帧封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。组帧的四种方法:字符计数法字符填充法零比特填充法违规编码法二、透明传输透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息
2020-06-22 11:28:06 386
原创 3. 线性表的链式结构
一、链表的声明typedef struct { ElemType data; struct LNode *next;}LNode, *LinkList;二、头插法s->next = L->nextL->next = s//头插法void CreateListF(LinkNode *&L,ElemType a[],int n){ L=(LinkNode *)malloc(sizeof(LinkNode)); L->next=NU.
2020-06-22 11:26:36 170
原创 2. 线性表的顺序结构
线性表是具有相同类型的n(n>=0)个元素的有限序列,其中n为表长,当n=0时,该表为空表线性表的九种基本操作:一、顺序表的定义我们采用数组动态分配的方法#define MaxSize 50#define ElemType inttypedef struct { ElemType *data; //数组的空间大小动态分配 int length;}SqList;初始化时动态分配地址空间:void InitList(SqList *&L,ElemTyp.
2020-06-22 10:19:12 98
原创 1.链路层概述
结点:主机、路由器链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路帧:链路层的协议数据单元,封装网络层数据报数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报(就像一个搬运工)数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强..
2020-06-22 09:08:28 235
原创 3.OSPF协议及链路状态算法
OSPF的特点:1.使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。最终整个区域内所有路由器都得到了这个信息的一个副本。2. 发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价一一费用、距离、时延、带宽等)3. 只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。一、步骤每个路由器发现它的邻居结点【 HELLO问候分组】,并了解邻居节点
2020-06-22 09:07:23 1014
原创 p46_IPv4地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。IP地址::={<网络号>,<主机号>}图中有6个子网比如222.1.3.0是网络号,3是主机号,222.1.3.3就是ip地址一、分类的IP地址二、特殊的IP地址三、私有IP地址...
2020-06-22 09:03:21 332
原创 p44_IP数据包格式
一、IP数据报格式二、IP分片数据链路层每帧可封装数据有上限,IP数据超过的要分片。标识:同一数据报的分片使用同一标识标志:片偏移(13bit):用于还原数据报顺序,指出某片在原分组1中的相对位置,以8B为单位比如:000…1就是在原数据报的8字节偏移。除了最后一个分片,其他大小都是8B的整数倍例题:片1偏移量:0片2偏移量:1400B/8B = 175片3偏移量:2800B/8B = 350三、数据报字段重要单位总长度单位:1B片偏移单位:8B首部长度单位:4
2020-06-22 09:02:46 273
原创 p41_数据报与虚电路
一、定义数据报方式为网络层提供无连接服务。无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。虚电路方式为网络层提供连接服务连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。二、几种传输单元名词辨析三、数据报(因特网在用)采用无连接服务每个分组携带源和目的地址路由器根据分组的目的地址和地址转发分组:基于路由协议/算法构建转发表;检索转发表:每个分
2020-06-22 09:02:16 177
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人