自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 有道云笔记图的链接

2021-11-04 15:35:01 153

转载 线程状态转换

2021-03-10 20:41:17 90

原创 park()和unpark()

插个眼先调用park()再调用unpark()先调用unpark()再调用park()

2021-03-10 20:10:12 180

原创 双向链表、循环链表以及循环双向链表的整理

双向链表引言页面的前进与回退已知某指针q的位置,求指针p。由于单链表节点中只有一个指向其直接后继结点的指针域,因此若已知某结点的指针域为p,找其前驱结点只能从该链表的头结点开始,顺链查找,直到找到某个结点q的直接后继为p为止。q所指的结点即为p的直接前驱,其时间复杂度为O(n)。所以要想让其时间复杂度达到O(1),可以选择增加一个指向直接前驱的指针域。双向链表的基本操作//定义结构体变量typedef struct node{ int data; //data域存放数据 str

2021-03-10 16:18:42 257 1

原创 join()源码分析--多线程设计模式(保护性暂停)

join()方法用到了保护性暂停的多线程设计模式写在前面虚假唤醒:当前线程还未获得值,但是因为其他线程调用notify()或notifyAll()方法将其唤醒,使其错误的向下执行。例子:public class test1 { static final Object room = new Object(); //两个状态变量 static boolean flag = false; static boolean tag = false; public static

2021-03-10 12:16:53 98 1

原创 设计模式之装饰者模式

装饰者模式和建造者模式的区别之一:装饰者模式关于组装过程的选择搭配是不确定的,可以有多种组装方式,比如穿衣服:可以先穿裤子,再穿衣服;而建造者模式的内部过程是确定的,比如建房子:得先打地基,再建房子。装饰者模式是一种递归调用,有装饰者和被装饰者,通过组合服用来减少类继承的大的数量级。具体例子:https://blog.csdn.net/qq_45072383/article/details/114054428...

2021-03-09 20:32:26 87

原创 可重入锁的相关疑惑

多线程可重入锁的相关疑惑在进行多线程的相关学习时,一定要先清楚synchronized的锁的对象到底是什么。1、synchronized修饰普通方法时,锁住的是该对象。2、synchronized修饰代码块时,锁住的时该对象。3、synchronized修饰被static修饰的方法时,锁住的是所有使用该类的对象。4、synchronized修饰类时,锁住的是所有该类的对象。为什么synchronized在存在继承关系的对象中可以锁重入进入父类的方法比如下面这个例子//父类public cl

2021-03-08 22:30:34 79

原创 设计模式之桥接模式

桥接模式桥接模式遵循合成复用原则,尽量使用合成聚合的方式,通过减少类的继承来降低耦合。聚合是一种弱的拥有关系,体现在与A对象可以包含B对象,但是B对象不是A对象的一部分;合成则是一种强的拥有关系,体现了严格的部分和整体的部分,部分和整体的生命周期是一样。关于桥接模式的案例手机的种类繁多,不同的手机如何使用相同的功能,并且保证后续使用功能的可扩展性。其实桥接模式就是一中解耦的方式,通过拆分不同对象的功能进行分类,然后通过组合的方式将两者关联起来,保证无论后续有多少品牌的出现,多少功能的出现,都可以很

2021-03-08 21:19:09 108 2

原创 HashMap的getOrDefault方法

getOrDefault()方法的代码如下: default V getOrDefault(Object key, V defaultValue) { V v; /*用v接受到获取的key,找到该key对应的值, 要是没有key接收到那么返回默认自己设置的参数。 */ return (((v = get(key)) != null) || containsKey(key)) ? v : de

2020-12-15 17:57:14 1692

原创 SSM整合Swagger,小练手

SSM整合Swagger关于swagger前期准备工作关于swagger刚听到swagger的时候,还不知道是个啥,百度了半天,其实就是一个提供API接口展示的UI界面,swagger根据它在各个方法注解标记来在页面上展示那些方法,还能直接在页面执行这些方法,返回响应信息并在页面展示。对于后台的咱们来说,就不需要写个啥前端界面了,用来熟悉一下ssm挺好的。前期准备工作首先是要导入与swagger和jason相关的依赖坐标<dependency> <groupId&gt

2020-12-06 14:18:31 277 1

原创 GitHub上传项目及自己出现的小问题

使用GitHub上传项目时,整个过程及遇到的错误。首先你需要有一个github项目并创建了一个仓库,本地要安装git,这部分应该是以前弄过,不再赘述。找到你的GitHub相应仓库,复制对应链接。接着在桌面右键点击选项git bush here打开gitbush,用 cd 路径名 跳转至你决定用来上传的指定目录,其实在哪个目录都可以,只是在一个文件夹中专门用来管理上传比较简洁,我的话就新建了一个git/upload专门用来上传。移动到你的指定目录之后,就可以使用git clone 上面保存的链接 将

2020-12-06 14:10:43 145

原创

对树的小小归纳树的存储双亲表示法孩子表示法孩子兄弟表示法二叉树二叉树的性质性质1性质2性质3树的存储因为之前就发过树的的概念啥的,所以这次就直接从树的存储开始。树的存储方式有不,我们来捋一捋(打字的时候发现的挺有趣的小东西:你能发现“一一”,“——”哪个是破折号吗1?另一个又是啥?哈哈哈)。这里先讲一下:ABC上图中A是双亲,B、C是孩子,其中B是左子树,C是右子树。ABCDEFGHI...

2020-04-19 17:50:50 241

原创 KMP算法啊啊啊

KMP算法问题引入串引子串的存储顺序存储结构链式存储结构问题来了直观解决方案KMP算法前言next数组KMP算法改进问题引入串引子我们在生活中可以看到很多的所谓“串”,比如现在我写的这段话就是“串”,更多的,比如我们在网上查找资料,如下图:"KMP"就是一个字符串,而每次我们所搜所完之后界面显示带红色的字就是与之匹配的串,其实就是在一个串中找与之匹配的字串,我感觉搜索的想法很简单:我呈...

2020-04-07 17:09:27 3437

原创 浅谈树与图

二叉树二叉树的概念和特点二叉树的递归定义:二叉树为空树,或是由一个根节点加上两棵分别为称为左子树和右子树的互不交的二叉树组成。左子树左子树右子树右子树左子树右子树ABDECFG二叉树的特点:1、每个节点最多只有两棵子树,及不存在结点读大于2的结点; 2、子树有左右之分,不能颠倒。123412341234线性结构树型结构第一个元素(无前驱)根结点(无前驱)...

2020-02-16 20:11:43 346 1

原创 模拟链表....

模拟链表先说句题外话:希望疫情早日接除,害!前言模拟链表就是用数组来模拟指针,用两个数组,一个数组data用来储存数据,数组right用来连接,其实就相当于链表里面int型变量data和结构体指针struct node *next;关于链表的相关内容我之前也写过了,有兴趣的可以点进去看看:链表故事开端看完模拟链表感觉这东西真的有点玄妙…不想链表那么直接,最后我看懂之后对着书敲了一遍,本...

2020-02-02 14:05:01 210

原创 链栈与链队列

链栈与链队列想想是该整理一下学长一钱不值的链栈与链队列的任务,,不知道自己这样写的有没有问题,符不符合原理,如果有什么问题,请大家能不吝赐教,帮忙斧正。链栈首先,我们先搞清楚,栈的原理就是现金后出,譬如往箱子里面放球,最先放进去的最后拿出来。下面给一下我臭臭的代码:#include<stdio.h>#include<stdlib.h>//定义结构体struct...

2020-01-15 14:26:42 260

原创 2019年12月第四周回顾旧知

函数在C语言中,由于C语言的函数库不太强大,如果把所有的程序代写在一个主函数中,会使主函数变得很长,不容易理解和发现错误,因此我们可以用“组装”的方法来使我们的代码变得更整洁美观,这就是模块化程序设计。我们可以事先定义好一些函数,然后在主函数中可以用一个简洁的函数名来实现各种我们所需要的功能。如上面这个源代码,它利用两个函数来实现输出一串星号和输出一行字符:自定义的函数我们在定义时不能在...

2019-12-29 18:38:39 169

原创 2019年12月第三周

题外话这周整体状态没有以前那么好了,我自己也认识到了,今年最后这一段时间也要认真才行,不想像高中一样留下悔恨,用陶渊明的一句话来自勉吧:识迷途其未远,觉今是而昨非。栈与队列队列与栈一个鲜明的区别就是队列是先进先出,栈是先进后出;形象的来说就是队列是在食堂打饭,而栈是先把东西放到桶里面,再取出东西的过程。栈举个回问字符串的例子,判断该字符串是不是回文字符串,“xyxyx”,“abcba”,...

2019-12-22 19:01:23 107

原创 2019年12月第一周

枚举、结构体和宏定义枚举与结构体一、结构体、枚举有三种定义变量的方法:1、先定义结构体(枚举类型),在说明结构体(枚举)变量。2、在定义结构体(枚举)类型的同时说明结构体(枚举)变量。3、直接说明结构体(枚举)变量二、变量赋值宏关于“#”宏定义宏定义深究合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右S...

2019-12-16 22:49:46 99 1

原创 2019年12月第二周--------链表

1.什么是链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。​ 这里需要两个头文件#include<stdio.h>#include<stdlib.h&g...

2019-12-16 22:48:35 72

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除