自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA实现双向链表超详解(图解)

这一篇,说一下双链表的实现,双向链表一定是在单链表的基础上,进行优化,才能成为双链表,关于单链表的文章,可以看下面这个链接:https://blog.csdn.net/weixin_46726346/article/details/107687955所以一些重复的东西就不会再说了,言归正传,我们开始说双向链表;之前说过单链表的结构,我们再来看一下:单链表的查询方式,只能通过顺序遍历一遍才能查询,这也是单链表的一个缺陷,那有没有什么解决办法,或者是优化办法,这个时候双向链表出现了!我们来看一下双向

2020-07-31 14:51:33 81

原创 JAVA实现单链表超详解(图解)

这一篇,说一下java的单链表的实现,如果有C语言的基础的话,应该知道,在C语言中,链表的实现是用指针来实现的,也就是用指针来指向下一个节点的地址来实现链表。那在java中没有指针的这个概念,我们应该怎么实现,怎么来表示地址,怎么指向一个地址;我们来看一个例子:Student stu=new Student();那,我们知道这行代码是一个对象的实例化,那这行代码到底是什么意思呢?我们这样理解:stu这个变量存储在栈内存中,右边的new Student()存储在堆内存中,就像这样:也就是可以

2020-07-30 14:27:59 1623 4

原创 JAVA中的HashMap(原理篇)
原力计划

这一篇呢,是相对于自己的理解,说一说HashMap的底层原理,希望能以简单的方式来说明,便于去理解。。。。一、HashMap特点首先说到表,那一定伴随着数据的增删改查和遍历;那HashMap同样也有着这样的功能;那到底什么是HashMap,我们先说一下他的两个特点;1.存取无序2.键唯一那,HashMap中有两个参数,一个是key,一个是value;这个key是唯一的,也就对应了HashMap的查找方式;二、HashMap的创建我们从创建一个HashMap对象开始说起,当我们创建一个Ha

2020-07-18 15:37:37 878 5

原创 Git--Github部分(详解)

前三篇讲的部分,主要是在本地进行操作,没有进行远程库的连接。而这一篇,我们讲的主要是本地和远程库(这里指的是Github)的连接与操作。首先呢,我们要注册一个Github账号,然后登陆到这个网页的页面上。选则new一个库。起好名字之后我们就可以创建了。进入到这个页面中之后,我们看上面有一个地址栏https://github.com/ln20172746/Git-1.git这个地址栏就是这个远程库的地址,OK,我们要记住这个地址,因为我们要在本地进行连接,那么这个地址就是唯一的连接钥匙。

2020-10-30 09:37:07 7

原创 Git--分支部分(详解)

前两篇讲解了基础部分和回退部分,这一篇该说一下分支这个部分了。所谓分支,就是不想所有的任务都在主分支上进行,从而先创建一个其他的分支,等大部分功能都完善好了再整理到主分支上,这样来避免出错和复杂的提交记录。1.git branch这条指令的意思是,查看分支。可以看到现在只有一个分支master,也就是我们的主分支,只要进行了git初始化,那么就一定会有一个主分支,前两篇的操作也都是在这个master上进行的,也可以看到master前面有一个*,代表的就是当前分支为master。2.git bra

2020-10-29 18:40:11 13

原创 Git--回退部分(详解)

上一篇主要说的是,Git的基础部分,也就是代码的add操作和commit操作是主要说的点。这一篇呢,主要说一下怎么把代码从版本库,暂存区中回退。例子也用上一篇中的例子继续说。1.git reset HEAD^^/HEAD~2这个指令的意思是,让版本库,暂存区的内容回退2次。工作区不变。那回退一次的操作就是git reset HEAD^/HEAD~1,这个规律不难看的出来吧。OK,现在我们来试一下。我现在给a.txt再执行两次add和commit操作。然后我们看一下提交记录可以看到啊,我

2020-10-29 11:38:40 12

原创 Git--基础部分(详解)

OK,关于Git的介绍与安装,这里不作说明。这一篇和之后的几篇文章,主要是通过命令行来进行git操作。、现在开始说,我们怎么在自己的文件夹中使用git指令,进行代码管理。首先学习git肯定要知道git管理代码有这三个区域,这一篇主要就是讲解如何用git指令来在这三个区域中玩起来。首先我们先进入一个空文件夹。然后右键Git Bush Here,进入命令窗口。1、git init这个指令是用来初始化git库,也就是把这个文件夹初始化成一个可以用git进行管理的文件夹。如果你在这个文件夹中,

2020-10-27 15:09:36 11

原创 JS中的任务队列(详解)

说起任务队列的话,首先我们要回顾一下JS语言的特点。我们知道,Javascript 这门脚本语言诞生的使命就是为处理页面中用户的交互,以及操作 DOM 而诞生的。所以JS的设计就是单线程的,总不能多线程来操作DOM结构吧(那不就乱套了吗)。那么什么是单线程,其实就是任务一个接着一个做,不能同时处理多个任务。那这样就会导致一个问题,如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。那JS是如何解决这个问题呢?我用一张图来说一下:有一说一我这个图画的是真的好!

2020-10-21 19:56:45 50

原创 JS闭包的深入理解---函数防抖(详解4)

在上一篇中,我们知道了函数节流的实现方式,用原始的方法和闭包的方法,阐述二者之间的差异。那现在说到函数防抖也容易理解的多.我们可以来先看一下什么是函数防抖:一个需要频繁触发的函数,规定时间内只让最后一次生效,前面的不生效(例如搜索功能)什么意思呢,就是比如有个按钮,我kuku一直点击它,那么在一定时间内(时间是我自己设置的)只有最后一次生效。OK,似乎就是和函数节流反过来,现在我们用原来的方法实现一下他:<button id="btn1">原始方法</button>

2020-10-19 21:00:27 42

原创 JS闭包的深入理解---函数节流(详解3)

有了上两篇关于闭包的理解,我们就可以用闭包来实现一些功能。而函数节流就是一个很经典的例子:首先我们来解释一下什么是函数节流:一次函数执行后,只有大于设定的执行周期才执行第2次。有个需要频繁触发的函数,处于优化的性能考虑,在规定时间内,只让函数触发第一次生效,后面的不生效。意思就是,比如有个按钮,你kuku一直点,我设置成两秒内只有第一次生效,后面的不会生效,哎这就是函数节流。我先用传统的方法实现一下:首先有一个按钮,再来一个方法: var f1 = function () {

2020-10-19 14:58:13 30

原创 JS闭包的深入理解(详解2)

OK,通过上一篇文章,我们理解了闭包是怎么实现的后,我们就可以看一个比较经典的小例子了。如图,如果我在网页上显示了一个ul,里面有3个li,然后我给这三个li绑定点击事件,所实现出的效果是点击第一个li就打印1,点击第二个li就打印2,点击第三个li就打印3。OK,似乎并不是很难,如果我们用之前固有的理解方法似乎可以这么写: var oul1=document.getElementById('ul1'); var oli1= oul1.getElementsByTagName('li

2020-10-19 09:33:24 22

原创 JS闭包的深入理解(详解1)

OK,如果说到JS中的闭包,给我的感觉就是它能很好地体现出JS函数式编程的特点。它不同于我们之前学的C,C++,JAVA中,函数只能被声明,调用,或者是类的成员方法。在JS中,函数可以赋值给一个变量,而JS又是弱类型语言,所以在JS中函数就可以作为参数或者是返回值(这一点就是蛮好玩的)。OK,了解了上面,我们就来看一下什么是闭包?定义:函数嵌套函数,并且内层函数作为返回值,引用外部函数的参数或变量。乍一看似乎不好理解,emmm,我们就通过例子来一步步理解闭包的概念。例子一function f1

2020-10-19 08:56:46 22

原创 JAVA递归解决迷宫问题(详解)

如果说到递归思想,首先想到的肯定是一些比较常见的问题,什么阶乘,最大公约数,等等。而这些也是比较简单很容易理解的。而这一篇文章讲的问题是关于迷宫的一个小问题。我们用二维数组来模拟一个迷宫:“1”就是代表城墙的意思,右下角的“0”是终点位置,给一个起点位置,如果在不穿过城墙的情况下可以到达终点,那么就说这个起点位置是正确的。很简单的一个游戏,如果我们用代码来找这么一条路的话应该怎么实现呢?如果我们从红色的这个开始走,我们要用什么样的思路来实现呢。我们可以规定一个步骤:1.判断下面是否可以走

2020-10-06 19:06:20 101

原创 JAVA用栈计算后缀表达式(详解)

在上一篇我们已经说过如何计算中缀表达式了,那么这一篇就来说一下如何来计算后缀表达式的值。后缀表达式呢,要比中缀表达式的计算要容易得多。和上一次一样,我们先来分析一下过程应该是什么样子呢?我这里有一个后缀表达式,一个栈,还有分析过程,我们就拿这个表达式来做一下演示。我们从左到右扫描,34都是数字直接入栈。然后遇到运算符+,我们弹出栈的两个数并运算,结果入栈。然后下一个是5,直接入栈。再下个是*,依旧弹出两个数,进行运算。结果入栈然后下个是6,我们直接入栈。然后是 - ,我们依旧弹出

2020-09-30 11:53:51 125

原创 JAVA用栈计算中缀表达式(详解)

那,在上一篇呢,已经写好了如何去实现一个栈了。在最开始我就说过,栈的实现很简单,但用栈来解决一些实际问题,可能会有点难度。今天这一篇就是用栈这个数据结构,来解决中缀表达式的计算。也就是数学表达式的计算。题目也很简单:假如有个字符串表达式(“5+2*5-4/1”),用栈来计算这个表达式的值。OKK,现在我们来分析一下怎么来做。然后再用代码实现。那,这是我整理好的思路,似乎第一眼看到后,很懵逼。没有关系,我们用一个例子来分析一下,瞬间就会明了。就用上面我提到过的表达式(5+2*5-4/1)。

2020-09-27 16:17:13 78

原创 JAVA用数组实现栈(详解)

关于栈是什么,这里是真的不多说了,不管学什么语言,只要涉及到数据结构,一定在开始就有栈这个概念。而我们所熟知的也就是先进后出。但也是这个先进后出最能体现出栈的特点。总得来说呢,栈的实现并不难,但是很多算法和功能实现都需要用到栈,所以栈这个数据结构也变得至关重要,所以这一篇,我们就说一下怎么用数组实现一个栈。我们先从原理下手, 想一想一个栈我应该怎么实现出来?看图,如果我有一个数组arr为空,并且有一个变量top,让他初始值为-1;每次添加元素,我们就让top++,并且把值给arr[ top ],

2020-09-24 22:33:25 22

原创 JAVA用环形链表解决约瑟夫问题(详解)

那如果想解决约瑟夫问题,那我们就再来回顾一下约瑟夫问题:约瑟夫问题是个有名的问题:N个人围成一圈,从某一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。那这句话的意思是什么呢,要怎么理解呢?我们用图来看一下:看一看到五个圆围成了一个圈,每个圆有自己的编号。假设我们从1号开始报数,每次报数后的第二个会被杀掉。那么第一个出局的应该是2号。这个时候再从第三个开始报数,然后第4号淘汰。然后再从第四号开始报数,以此类推。。。。最后确定出一个淘汰的顺序。OK。原理我们已经知道了,那

2020-09-23 14:46:12 37

原创 JAVA实现环形链表(详解)

关于单链表和双向链表,在之前的LinkedList源码里我已经写过一次了。。。所以这次关于链表的分析就只剩环形链表了而这一篇,主要是讲解原理以及代码实现,不涉及到解决问题。所以接下来的重点主要在于如何用代码来实现出一个环形链表。所谓环形链表也就是在单链表的基础上,让最后一个节点的next指向第一个节点,所以说这次我们就不能设置头节点了(不然最后一个节点会指向一个没用的节点)。。那我们就开始写第一步,也就是最开始的一步,创建一个节点类。public class Node { private

2020-09-22 22:50:10 106

原创 JAVA数组实现环形队列(下篇)

关于上一篇文章,测试了代码发现所实现的队列只能使用一次。、是一个问题很大的数据结构。所以为了能够让队列变得优化,对上一篇的代码进行了修改。关于上一篇队列的实现,只能使用一次的原因也说过了。这里再简单说一下:如果我们在队列里面添加满元素后:rear指向最后一个数组元素的位置。这个时候队列满了。然后我们再出队出队一直出。即便最后一个元素也出队了,但是里面的元素并没有删除,只是front++到了rear的位置,因为二者相等,所以起到了一个队列为空的效果。但也正是因为这样。我们这个队列才只能

2020-09-12 21:24:41 19

原创 JAVA数组实现队列(上篇)

这一篇,说一下怎么用JAVA实现一个队列,那我们就要知道什么是队列,队列是一种比较简单的数据结构,我们来看一下队列的定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。也就是我们经常所说的**“先进先出”**。那如果我们用数组实现一个队列,我所学过的语言实现的方法似乎都大致一样。首先我们创建一个数组是一定的,大小可以由用户来确定。然

2020-09-11 15:59:38 15

原创 JAVA中的二维数组和稀疏数组之间的转换

由于是开学季,也确实是好久没有更新博客了,主要也是因为自己一直在学新东西,之前的没啥好分享的了。今天开始主要就是更新JAVA中的数据结构,第一篇就是关于稀疏数组的转换问题。说到稀疏数组,首先要知道稀疏数组是什么?我在网上找到了一张图。我们来看左边,是一个正常的二维数组,但是这个二维数组的大部分元素都是0.似乎有些浪费空间,我们有没有一种方法能够简化这种二维数组。这个时候稀疏数组出现了,让我们看一下右边的数组。我们记住,稀疏数组的列数一定是3,分别代表行列值。而且稀疏数组的第一行数据代表的是

2020-09-09 11:59:35 28

原创 JQuery实现表格内容过滤(附代码)

效果显示:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> th

2020-08-15 13:48:18 45

原创 JQuery实现单行变色表格(附代码)

效果展示:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> th {

2020-08-15 13:27:44 57

原创 JQuery实现一个提交框(附代码)

效果显示:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * {

2020-08-14 18:36:54 55

原创 JQuery实现轮播图(附代码)

之前有写过一篇用原生dom写的轮播图实现代码:宝贝点进来吧,有你想要的而这次用JQuery写的,还是用之前的html结构和css样式,只是改变了js的代码部分。所以这次就把用JQuery写的js代码写下来。。。。。代码: <script src="./jquery-3.5.1.min.js"></script> <script> var currentIndex = 0; var timer; //图片滑动

2020-08-14 14:11:48 37

原创 JQuery实现选项卡( 附代码)

样式:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * {

2020-08-14 10:37:20 40

原创 DOM经典例子(轮播图)

效果显示:功能:1、每两秒自动换页;2、可以进行1,2,。。翻页;3、可以通过>或者<进行翻页;图片资源:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <

2020-08-12 20:22:11 47

原创 DOM经典例子(选项卡2)

效果:方法2:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *

2020-08-12 18:19:47 35

原创 DOM经典例子(选项卡1)

实现效果:方法1:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style>

2020-08-12 18:09:36 34

原创 DOM经典例子(放大镜)

首先声明一下,我的两张图片是400 300和800 600的,所以代码中的div大小设置也是依赖于这个的。如果图片大小更换,代码中的div的大小也要改变,而且如果两张图片要求是1:2的。我把我的图片页拿出来了。。。OK,代码附上。。。。。。。。。。。。。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" co

2020-08-11 15:18:03 31

原创 DOM经典例子(元素拖拽)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * {

2020-08-11 14:13:09 42

原创 JavaScript 让你意外的瞬间(函数2)

这一篇呢,是对之前的函数那一篇的补充,因为又找到好玩的了,所以自然要给与补充。再附上上一篇函数的文章:https://blog.csdn.net/weixin_46726346/article/details/107911551上一篇忘记说了JS中函数最有趣的特点了。根源就是,JS的函数是一个对象,是Function类型的对象。那,由于函数是一个对象,那么函数名就是一个指向函数对象的指针。就像一个变量名指向一个对象的地址一样。。。那这就有趣了,我完全可以这么做。 <script&gt

2020-08-10 19:01:23 27

原创 JavaScript 让你意外的瞬间(Array类型)

除了Object类型,Array类型应该是JS中最常用的引用类型了。并且JS的数组和其他的语言,像JAVA,C有着很大的区别,具体体现在:JS数组中的每一项可以保存任何数据类型的数据。JS的数组大小是可以动态调整的。这两个特点在JAVA或者C中的定长数组是不可行的。所以在我看来,JS的数组,更像其他语言封装好的一个比较强大的类。。。。我们来看一下JS中数组是怎么创建的。 <script> var arr1=new Array(); var ar

2020-08-10 18:39:25 49

原创 JavaScript 让你意外的瞬间(变量和对象)

我们知道定义变量的时候,可以给变量赋值。包括基本数据类型和引用类型。这一篇主要简单的说一下二者的区别(引用类型以对象为例)在哪里。也是,挺有意思的。首先第一点呢,就是对象可以自定义属性,什么意思呢。 <script> var person=new Object(); person.name="wangwu"; console.log(person.name); </script>就像这样,打印出来也是wangw

2020-08-10 14:50:46 36

原创 JavaScript 让你意外的瞬间(函数)

函数呢,对于任何一门语言都是一个核心的概念。在C或者JAVA中,我们定义函数,要么是Void无返回类型的,要么是有返回值类型的。那在JS中呢,定义一个函数没有那么多条条框框。。。。。又是很特别的。我们来看一下JS中的函数怎么写: <script> function f1(name,age){ console.log(name+age); } f1("wangwu ",13); </script&g

2020-08-10 14:20:00 30

原创 JavaScript 让你意外的瞬间(关系操作符)

继上一篇说完逻辑运算符,这里又要说关系操作符了,也是今天最后一篇了。。。。加油,奥利给。。。先说比较运算符,我们知道如果比较两个数字的话,就很简单的比较就好了,那如果两个操作数不是数字呢。自然是有一套转换规则的,我这里就不打出来了,只是举几个好玩的例子。。。 <script> console.log("ABC">"abc"); </script>这行代码的输出结果是什么呢?是false,也就是“ABC”<“abc”.因为这个

2020-08-09 21:12:01 23

原创 JavaScript 让你意外的瞬间(逻辑运算符)

JS中的逻辑运算符呢,emmm,是很让我惊讶的。。。因为是真的踩到过坑。。。这里不说“!”非运算,因为它和C或者JAVA应该不会差别很大,这里主要说另外两个。1、在之前的学习中,我觉得不管哪门语言,&&运算符的返回值,应该一定为boolean吧。但在JS中,不这么认为,这个时候JS变得高大上起来了。。。。那,如果&&的两个操作数都为boolean值得话,那他和JAVA是没有区别的。但如果,如果!有一个操作数,不为布尔值,那么它的返回结果就不一定是布尔值。我们

2020-08-09 20:48:28 85

原创 JavaScript 让你意外的瞬间(数据类型)

在JS中有5中基本数据类型和一种复杂数据类型,这一篇直说前五个基本数据类型,因为,后面还没复习到(hhhhhhh)。1、OK,先说第一个Undefined,这个类型只有一个值:undefined。我们上一篇说过,没有初始化的变量会默认赋值为undefined。这里我们要区别一个问题。没有初始化和没有定义是两码事。 <script> var x; console.log(x); console.log(y); </sc

2020-08-09 20:06:44 340 1

原创 JavaScript 让你意外的瞬间(变量Var)

emmm,于我而言呢,我是先学习C,然后C++,再到JAVA,到现在的JS,所以在学习JS的过程中,遇到了一些,很意外,很惊喜,很无奈的一些知识点。所以自己想以这种方式复习一下JS,并且进行一个知识的汇总整理。OK,现在开始,就从这一篇开始。我们知道JS中的变量是松散类型的,所谓松散类型就是可以用来保存任何数据类型的数据。换句话说:每个变量仅仅是一个用于保存值得占位符而已。 <script> var a1; var a2=5; v

2020-08-09 19:32:31 61

原创 CSS盒模型【框模型】(详解)

关于CSS的最后一点,就是盒模型了,也叫CSS的框模型。CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式,在之前

2020-08-08 13:41:08 71

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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