自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 正常青蛙跳与变态青蛙跳的实现

当青蛙仅仅只能跳一阶或者两阶时,第n阶取决于本次f(n-1)+f(n-2)递归实现public static int normalJump(int target) { if(target<=0) { return 0; }else if(target ==1) { return 1; }e...

2020-04-09 23:31:09 193

原创 redis

1,redis主从分离(读写分离) 一个主服务器,多个从服务器 主服务器master负责写,从服务器slave读取内容 文件路径 从服务器配置 启动从服务器 进行验证 启动主服务器的客户端,向redis主服务器存入值 从 从服务器获取到keys...

2020-04-06 16:50:45 162

原创 求解N皇后问题的回溯法java实现

N皇后问题要求求解N*N的棋盘上放置N个皇后,并使各皇后彼此不受攻击的所有可能的棋盘布局皇后彼此不受攻击的约束条件是:任何两个皇后均不能在同一行,同一列,或者同一对角线思路:采用一维数组X表示N皇后的解,X【i】的值表示第i行皇后所在的列号采用一维数组本身的数据结构就很好解决了任何两个皇后不会出现在同一行中,因此,只需考虑任意两个皇后不能在同一列,和对角元素即可不出现在同一列的条件...

2020-01-13 21:29:13 362

原创 多线程(哲学家吃饭问题)代码实现

哲学家进餐问题描述有五个哲学家,他们的生活方式是交替地进行思考和进餐,哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,平时哲学家进行思考,饥饿时便试图取其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,该哲学家进餐完毕后,放下左右两只筷子又继续思考。约束条件(1)只有拿到两只筷子时,哲学家才能吃饭。(2)如果筷子已被别人拿走,则必须等别人吃完之后才能拿...

2020-01-05 18:39:56 904

原创 多线程死锁java代码实现

线程中发生死锁的原理:执行多线程任务中,出现了多个同步,即存在多个锁对象,且在一个同步中嵌套了其他的同步,可以这样简单理解,有一个线程任务,在获得锁a之后执行一些操作,接着需要获得锁b才能执行接下来的操作,另一个类,正好与该类相反,先获取锁a,执行,再获取锁b执行,存在某一时刻,二者都进入了获取第二个锁资源的时刻,但是run()方法未执行完毕,也不会释放锁资源,两个线程将会处于无限等待状态,造...

2020-01-05 16:45:53 682

原创 生产者与消费者的代码实现(等待与唤醒机制)

一,线程安全问题的产生:简单总结,线程安全问题是由于多个线程对全局变量或者静态变量进行了写操作。二,线程安全问题的处理:线程同步(Synchronized)线程同步的两种方式:同步代码块,同步方法synchronized(锁对象){有出现对全局或静态变量执行写操作的代码}public synchronized void method{ 可能会产生线程安全问题的代...

2020-01-05 15:13:23 372 3

原创 多线程(笔记整理)

一,进程,线程,多线程的概念进程:一般指正在运行的某个程序,当一个程序进入内存运行,就变为一个进程。线程:进程的最小执行单元,一个进程至少包含一个线程多线程:简单理解,一个进程中有多个线程在同时执行。二,程序运行原理分时调度(所有线程轮流使用CPU的使用权)抢占式调度(优先级高的程序优先使用CPU的执行权)三,创建线程的方式1,创建一个类并继承Thread,重写Th...

2020-01-05 10:38:55 148

原创 双重校验锁机制实现单例模式

解决单例模式的漏洞,仅仅依靠在上次代码实现单例模式是不可行的,依靠上次的设计模式下,其保持可靠性的必要条件是该代码需在单线程的情况下进行执行,若是存在多线程就难以保证对象的唯一性,线程A,线程B,先后执行get方法,进行对象为空的判断,某个线程争抢到锁资源,进行实例化对象,并进行赋值,细节处理,在创建对象是需要在进行一次对象为空的判断,因为该线程执行完实例化对象后,其他线程抢到锁资源,会再次创建一...

2019-12-30 16:32:01 1269 1

原创 java 单例模式懒汉和饿汉

对于单例模式就是保证内存中仅仅创建一个该类的实例对象针对于其对象的创建时间,分为懒汉模式和饿汉模式懒汉模式下:使用该类的情况下在进行对象的创建,而饿汉模式下,则是直接将该类及其对象直接加载进内存两种模式的测试,因为直接私有了构造方法,因此该对象在该类的内部直接创建,因此返回该类的对象的方法需以static修饰符进行修饰。然后便可以调用该类的其他公共方法,且保证该类的对象仅在内存中加载过...

2019-12-30 16:07:10 265

原创 基于适配器模式下的装饰者模式

有些类被final修饰的类,想继承进行方法的扩充,但却不能被继承。有些类想使用它的方法,但是却又不想继承,这两种情况就是装饰者的应用场景:本质就是将该类,成员变量的方式实现调用方法,并进行补充代码实现:interface Factory{ String productFunction();}//基础类实现该接口,返回“商品”的字符串final class Base...

2019-12-28 11:45:19 102

原创 MVC模型各层次的执行分类

(标准的业务分层) 1View层:(显示层) 通过请求,从后台获取数据,渲染到界面(加载界面)layui render方法(封装创建一行) 请求:form(get,post两种方式)/ajax(两种手段) form表单:一旦请求发出,立即跳转新的资源(不管后台是否成功) ajax:局部刷新技术,界面不会跳转 两种的选择依据:要否要实现界面跳转 ...

2019-12-27 13:08:07 689

原创 java设计模式适配器

适配者模式即是将一个接口转化为另一个接口方式1:类适配器:继承真正的功能类,并实现对外开放的接口,在实现抽象方法时,直接调用父类的方法即可,即是super。function(), main方法使用时以规定接口的类型而实质创建该实现类对象调用方法时,实际上执行的是功能类的方法。(体现了多态调用)方式2:对象适配器:仅仅实现对外开放的接口,将真正的功能类作为适配器类的成员变量,并必须设置有参的...

2019-12-27 12:03:46 74

原创 Map集合存储大于9的16进制数据以实现十进制对任意数制转换

对于大于9 的数据而言,其16进制的表现形式是从A-F,因此需要Map集合以键值对的形式对数据进行一一映射,以方便进行获取不同的进制的相互转化。在该代码的实现过程中,主要是利用java.util.HashMap包,以及lang包下的String类的方法,charAt(),获得指定索引下的字符,并将其+"",的方式转化为字符串,以利用StringBuilder对字符串的索引值为0开始...

2019-12-25 08:57:44 214

原创 Servlet笔记整理

1,Apache 和 Tomcat 的联系和区别区别:apache是普通服务器,只支持静态网页,tomcat可处理jsp动态网页 apache稳定性很好,可以运行一年不重启,而tomcat则不一定。联系:tomcat是运行在apache的web服务器,它只是一个servlet的容器,可以认为是apache的扩展,但可以独立于apache运行2,servlet生命周...

2019-12-23 21:28:49 199

原创 折半插入排序java实现

对于一个有序的数组而言,折半查找的性能明显会更优于顺序查找,因此,在array[0]-array[i-1]中按照关键字在有序的序列中确定array[i] 的插入位置时,可利用折半查找实现该位置的确定。该方案与之前的直接插入算法思想一致,仅仅是将确定插入位置的方法由倒序查找变为二分查找而已。处理该方案的主要细节问题是,在执行过程中当high和low指向同一索引值时,移动数据量的规模,二分查找很好...

2019-12-22 17:09:04 164

原创 一道关于数据库的面试题

有以下数据表:1,score表:2,student 表3,subjec 表题目1:在分数表里,插入一条记录:wang chemical 70 分 的记录分析:添加记录时,需要获取wang 的student_id(在student表里进行查询),需要获取科目的subject_id(在subject表里进行查询)将查询结果集放到value中即可执行SQ...

2019-12-22 12:06:41 142

原创 设置岗哨为-1的直接插入排序算法的java代码实现(改进上次的判断条件过多问题)

在上次的代码执行过程中,未设置返回索引为-1,对于三种情况需要逐一进行判断,执行不同的策略,该方案优化上述的缺陷,使之达到一种自适应状态,相对巧妙的解决了冲突域的问题:注意的细节问题在代码中有详细的注释。当设置岗哨为-1,对于 情况2:找到后,j=0,将从lookout+1之后的数据向后移动一位,并array[lookout+1] = temp; 情况3:未找到,j=0,temp是目前最小的数...

2019-12-22 10:58:07 209

原创 基于插入排序的算法实现(只是实现自己最初的想法)

这次排序算法的设计思想是从一个数组的1索引开始,进行数组的遍历,并且一直确保正在遍历的索引值之前的数据是有序的,每次遍历一个数据时,将其放置到合适的位置上即可,但是该算法的判断条件过多,会显得比较麻烦,且每次从后往前找到合适的位置时,都要平均将数组的一半大小的数据进行移动,因此,这次代码的实现仅仅是个人想法的实现.外层循环用 i 去遍历整个数组,内层循环用j从后往前判断array[j]与arr...

2019-12-22 09:07:40 92

原创 双向链表java代码实现(带头结点和尾结点)

考虑到单向链表的缺点,所有节点的遍历都是从头结点开始,若一条记录居于整个链表的结尾,当要查询该记录效率就会比较低,采用双向链表,会更具有扩展性;在实现过程的整体思路,定义一个链表类,在其中定义一个节点类,在链表类定义头和尾结点的构造方法中创建结点对象,使其头节点的next指向尾结点,尾结点的prenode 指向head,进行链表的初始化。接着就相对简单,定义增加,删除,修改,查询等方法。注...

2019-12-21 14:16:16 808

原创 选择排序算法java实现

选择类排序算法的思想:在第i趟的记录中选取关键字第i小的记录作为该有序序列的第i个记录,关键点:如何从剩余的待排序序列中找出最小或者最大的那个记录。对于其稳定性进行分析:出现重复的数据时,若交换是一个位置由前变后,则发生了位置的改变,因此该算法不稳定。代码实现:import java.util.Arrays;public class ChoiceSort { public...

2019-12-20 13:13:39 109

原创 设置flag的冒泡排序算法java代码实现

冒泡排序算法,在扫描待排序记录序列时,顺序比较相邻的两个记录的关键字大小,如果是逆序,就交换位置,在传统的冒泡排序算法中,需要将外层循环执行n-1,每一次内层循环执行n-i次判断,在逆序的条件下执行数据的交换,但是若某一趟排序过程结束后,没有发现一个逆序,就可以直接结束整个排序过程,因此设置flag标志。该排序算法的空间复杂度:需要一个辅助空间进行交换,为O(1)稳定性:排序的结果并不会出...

2019-12-20 12:37:11 643

原创 快速排序的java代码实现(更改为赋值的方式)

针对上一次代码的改进,以及二者的区别加以描述:1,第一种快排方式是外层循环从右至左的指针r,和从左至右的指针l,指向同一索引值,再进行交换,此刻二者指向索引处的值必定是小于或者等于基准值的,从而在外层循环结束后再次进行值的交换,确保交换后的值使再其左侧都是小于基准值,而右侧都是大于基准值,然后在递归调用该方法,即递推使得排序的规模一直在减少,直至数据规模为1,进行回归;2.第二种快速排序的...

2019-12-18 21:31:58 270

原创 快速排序算法代码实现

在算法设计中应注意的几点;1,在快速排序中对于划分好的左右两边需要采用递归算法,直至递归的规模为1,对于左侧的数据,可以是一直以0为基准的,而对于右侧的数据区,它的起始位置是动态变化,因此需要进行索引的备份,已实现对右侧数据的递归排序进行成功实现。这也是起始最难以理解的部分,不清晰为什么需要对left,right,进行赋值给变量i和j。2,注重判断条件,已实现不必要的交换,尽量减少对内存资...

2019-12-16 23:46:34 451

原创 java实现单向链表(已泛型方式进行存储任意对象)

以工具类的思想,进行设计存储任意类型的单向链表该链表实现对节点元素的增,删,修改,查找,但通常这种类型的数据结构一般的应用场景为对数据的增添与删除;先说明一下设计过程中特别注意的小细节:1.每次改变节点的大小时,不要忘记对其size值进行修改;add()方法,size++,remove()方法,size--;2.循环查找索引值的节点是,注意迭代的方式,进行更精准的思考,在第一次实现遍历...

2019-12-14 20:52:53 374

原创 交换主函数变量的值

c语言中实现“交换两个整型变量的值“的函数函数形参与实参在内存中的处理;void exchange (int int)void exchange (int one ,int another){int temp;temp=one ;one=another;another=temp;}int main(){int num1;int num2;scanf("%d%d",&amp;num1,&amp;nu...

2018-04-14 12:11:29 337

空空如也

空空如也

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

TA关注的人

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