- 博客(19)
- 收藏
- 关注
原创 Linux(Centos7)Mysql 8在线安装详细教程
plugin-load-add=validate_password.so:插件的加载方法,每次服务器启动时都必须给出该选项;启动没有安全检查插件(为修改密码做准备,5,7不需要)发现root用户只允许localhost主机登录登录。在服务器启动时使用该选项来控制插件的激活。首先打开/etc/my.cnf,
2023-08-11 16:16:31
718
1
原创 设计模式之建造者模式
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了构成一个对象所需部件的构造和装配。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。
2023-04-26 08:48:10
391
原创 设计模式之原型模式(对象深拷贝与浅拷贝)
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象,通俗点说就是对象的拷贝,而这种拷贝又可以分为深拷贝与浅拷贝,往后我们会深入叙述。
2023-04-25 22:53:35
757
原创 设计模式之工厂模式
在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重。所谓耦合严重就是在我们已经创建了对象的地方,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。而所谓的工厂模式其实就是一个只负责创建对象的工厂,我们不需要跟每个对象打交道,只需要跟工厂说你需要那个对象就可以了,彻底和对象解耦。如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦。
2023-04-23 22:57:57
547
原创 设计模式之单例模式(七种方法超详细)
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象,也就是说不能使用new关键字来创建对象。
2023-04-22 22:00:04
24369
3
原创 弗洛伊德龟兔赛跑算法
龟兔赛跑算法(Tortoise and Hare Algorithm)又称之为Floyd判圈算法(Floyd Cycle Detection Algorithm)它是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。该算法据高德纳称由美国科学家罗伯特·弗洛伊德发明。
2023-04-20 19:36:32
595
原创 数据算法之反转链表(五种方法)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]这道题来自力扣的第206题,今天我们尝试使用五种不同的方法来实现链表的反转。
2023-04-18 20:48:56
6682
原创 关于一道简单算法题的思考
今天看到了这样一道算法题:给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。这道题相信就连初学者都可以很容易的写出来他的算法,如果你和我写的一样,那么我们是同道中人。
2023-04-12 22:52:50
111
原创 数据算法之打印杨辉三角
正如图片中所看到的,杨辉 三角就长这个样子,杨辉三角具有很多特性,但是在这里我们只使用他的其中 一个特,即:>==每个数等于它上方两数之和。==在这里我们先将杨辉三角斜过来看,简化操作,通过将杨辉三角斜过来看可以得到一个这样的直角三角形:
2023-04-12 18:36:50
4189
原创 java内部类看这一篇就够(java内部类详解)
与我们在很多面向对象编程语言中看到的概念相比,接口和内部类更为复杂。例如,C++中就没有这样的概念。将这两者结合起来,就能解决C++尝试用多重继承特性来解决的问题。然而,C++中的多重继承使用起来相当困难,与之相比,Java的接口和内部类用起来更方便。尽管这些特性本身还算简单,但是就像多态性一样,如何使用这些特性是一个设计问题。随着时间的推移,你会更善于识别在什么情况下应该使用接口或内部类,抑或是两者一起使用。但是此时此刻,你至少应该熟悉其语法和语义。
2023-04-11 20:44:43
336
原创 线程大法修炼(多线程详解)
加瓦是一个普通的小青年一日上山采药不小心跌落山崖,进一山洞,山洞有一秘籍名曰 **“线程大法”**,加瓦翻开书籍:只见第一页赫然入眼曰:>**线程大法**其旁有文字题注:练此功分为五大阶段状态==1.新建状态2.就绪状态3.运行状态4.阻塞状态5.死亡状态==加瓦看了看有点不可思议,“什么玩意,还死亡状态,我还想活呢!”加瓦撇撇嘴不屑的就想离开。谁知山洞剧烈摇晃,洞门封闭
2023-04-10 19:03:32
152
原创 递归问题之栈溢出
递归所产生的的栈溢出问题主要是因为上一层的数据要等待下一层级执行完成之后才可以执行,所以造成了大量的内存占用,使用for循环就可以避免这一问题。● a 返回时发现:没什么可留给 b 的,将来返回的结果 b 提供就可以了,用不着我 a 了,我的内存就可以释放。● b 返回时发现:没什么可留给 c 的,将来返回的结果 c 提供就可以了,用不着我 b 了,我的内存就可以释放。这时a尾调用b,b尾调用c,而只有执行到c时才会依次的向上返回调用结果,但是编译器一般都会对这种尾调用做优化。时,发生了栈溢出的现象;
2023-03-06 19:01:52
898
原创 数据算法之插入排序
(这里用升序排序数组举例),插入排序的算法就是将已经排序好的数据全部的放在数组的左边,把没有完成排序的数据放在数组的右边,然后每次从没有排序的数据中每次从左边界依次的取出数据与已经排序的数据进行比较,将数据插入到合适的位置,在进行比较的时候,没有找到插入位置之前,比插入数据小的已经排序的数据都要向未排序区域移动一位,以便给插入数据空出位置,当找到比插入数据小的数据时,将插入数据插入到此数据的前一位,以后数据重复此操作完成排序。
2023-03-06 14:50:50
62
原创 数据算法之冒泡排序
(这里用升序排序数组举例),冒泡排序的算法就是将已经排好序的数据都放在数组的右边,未排序的数组放在左边,从数组的初始位置让这个数据一直与它后面的数据进行比较,如果比后面的数据小,则放弃更改,遍历下一位置的数据与后面的数据继续比较,当他比他后面的数据大时,则将二者进行换位,而后重复操作,就可以确保在我们的边界范围内,最大的数在我们的右边界,而后通过递归思想不断的缩小右边界,将未排序的数据依次进行上述操作排序,当右边界为0时说明排序完毕完成递归。
2023-03-06 13:35:54
158
原创 数据结构之链表
单向链表单向链表由多个节点组成,每一个节点又由指针域和数据域构成,另外每个链表还拥有一个哨兵节点(哑元),他并不存储数据,他来用作头尾。用来简化边界判断,哨兵节点的指针指向链表的第一个节点,而后第一个节点的指针域指向下一个节点,以此类推,最后一个节点的指针指向的节点为null。双向链表与单向链表不同的是,双向链表拥有两个指针域和一个数据域,并且数据域在两个指针域的中间,分别指向上一个节点和下一个节点的。循环链表又叫环形链表又分为单向环形链表和双向环形链表,不同的是环形链表的尾节点的指针指向的是第一个
2023-03-05 21:33:24
488
原创 JAVA中的堆和栈
在JAVA的内存空间中,存在重要的两个内容便是JAVA的堆和栈,两者都用来存放数据,但又有所区别。当你用各种工具使用java语言编写了一段程序,当这段程序被运行的时候,在java中的内存会有五块区域进行数据的存储,分别为程序计数器,本地方法区,方法区,堆,栈。1.堆就相当于当你new一个对象的时候,就会分配一个堆内存给你,当对象销毁时就会有垃圾回收机制来回收这个对象的堆空间。2.栈就好比一串珠子,你只能从一头加或者取,要取后面的就要把前面的取出来才可以。3.堆内存作用就是用来存放java中的对象和数组,当n
2023-02-24 21:08:05
4406
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人