自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 递归算法的优缺点

算法的优点相对于迭代算法而言,结构更清晰、更简洁、更容易让人从宏观上理解程序的整体结构。容易使用数学归纳法证明算法的正确性。算法的缺点在递归调用的过程中会反复消耗系统开销以维护工作栈。这里提一点,在编写递归算法程序的过程中,如果程序消耗的栈空间超出限制,通常会出现一个栈溢出的异常。StackOverflowException...

2021-03-31 20:29:40 3282

原创 递归算法之汉诺塔问题

问题叙述故事背景:法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。移动规则问题要求:将A

2021-03-29 10:04:54 347

原创 递归算法之整数划分问题

问题描述将正整数n表示成一系列正整数之和,n = n1 + n2 + n3 +…+nk (其中ni为正整数,1<=ni<=n)举例说明,n = 4的情况下,共有5种划分情况4 = 44 = 3 + 14 = 2 + 24 = 2 + 1 + 14 = 1 + 1 + 1 + 1注意:这里的1 + 3 和3 + 1被认为是同一种划分情况。问题分析首先引入一个表示方式q(n,m)它的含义是,在正整数n的划分中,将最大加数不大于m的划分数表示为q(n,m)。这里根据m的不

2021-03-28 10:06:59 1215

原创 递归算法之全排列问题

全排列问题描述全排列问题,也就是说对于一个包含有限个数元素的集合,对它进行一个全排列,通俗点讲就是把这个集合中所有元素进行排列的所有可能情况。全排列问题的常规解题思路这里我们能以一个例子来进行描述,如下有这么一个集合 R = {r1,r2,r3,r4}那么这个集合的全排列共有哪些情况呢?首先,第一个位置放元素r1 剩下的就是元素{r2,r3,r4}的一个全排列 ;R1 = {r2,r3,r4}的全排列 这里又把r2放在第一个位置,剩下元素R2 = {r3,r4},这时要求R2的全排列,将r

2021-03-27 09:44:12 1628

原创 递归算法之斐波纳茨数列

斐波纳茨数列的简介费波纳茨数列是由一个从1,2开始,之后每个数字都等于前两个数字相加之和,以此类推从而产生无限多个数字系列。表达式形式F(n) = 1 n=1;F(n) = 2 n=2;F(n) = F(n-1) + F(n-2) n>2;迭代实现void fib_iteration(int n,long[] arr){ arr[0] = 1L; arr[1] = 2L; for(int i=2; i<n;i++){ arr[i] =

2021-03-26 09:58:35 462

原创 递归算法之阶乘问题

阶乘问题描述简单描述就是求n!= ?n! = n*(n-1)(n-2)(n-3)*…*1。迭代求阶乘long fac_iteration(int n){ long value = 1; for(int i=1;i<=n;i++){ value *= i; } return value;}空间复杂度O(1),时间复杂度O(n);递归求阶乘首先明确递归需要满足的两个条件。递归头是什么?n!=1 n=0。递归体是什么?n!=n*(n-1)! n>0。这里左

2021-03-25 18:23:10 411

原创 递归算法之概述

递归是什么?递归,通俗一点理解就是在我们常听说的俄罗斯套娃,从最外面的大娃娃一直跑到最里面的最小小的娃娃,然后又一层层的将娃娃套回去,然后得到最终的结果。编程中的递归算法书上的定义是这样说的:直接或间接调用自身的算法称为递归算法。递归算法需要满足的条件有两个:一个是必须要为递归设置一个递归的出口,也就是说套娃一定有一个是最最小的娃娃,不然递归是没有办法结束的。另一个是子问题必须与原问题本质相同并且更为简单。可以理解为,大娃娃和小娃娃是一模一样的,但是大娃娃要比小娃娃更大,做成小娃娃需要的材料要更

2021-03-25 18:02:52 405

原创 java实现LRU

java实现LRU什么是LRULRU就是计算机操作系统中常见的内存管理算法,中文名也叫最近最少使用页面置换算法。也就是在缺页的情况下,寻找最近最少被使用的页面,然后将它置换出内存,把新的页面置换到内存。实现思路数据结构:使用一个双向链表和一个HashMap<Integer,Node>。关键流程双向链表用来记录同一个级别的页面的先后访问顺序。map用来表示所有的级别的情况。如果页面在低级别的页面中命中,就将页面放到高级别的队列中的队头,满了就将队尾元素放到低一级别队列的队头。

2021-03-22 15:02:38 134

原创 JDBC

截断概念truncate: 截断所有的数据,如果截断的是主表,结构不能 存在外键关联,截断数据同时从结构上检查truncate 与delete 区别1、truncate -->ddl ,不涉及事务,就不能回滚 delete -->dml ,涉及事务,可以回滚2、truncate 截断所有的数据 delete 可以删除全部 或者 部分记录3、truncate从结构上检查是否存在主外键,如果存在,不让 删除 delete 从记录上检查是否存在主外键,如果存在,按参考外键约束

2020-11-02 21:52:50 559

原创 Xml

Xml一门标记语言标记语言是<>定义的标签分为单标签(闭和标签)和 双标签 (闭合标签)作用:做数据的存储、传输、解析…xml文件的格式1.<?xml version = "1.0" encoding = "UTF-8"?>2.xml文件中有且仅有一个 根标签 / 根元素3.xml是一个语言严格的标记语言4.属性: 帮助更完整/更全面的展示标签的作用 属性名 = “属性值”<?xml version = "1.0" encoding = "UTF-8"

2020-10-23 20:52:54 83

原创 反射

反射动态语言程序运行时,允许改变程序结构或变量类型的语言。有Python、Ruby等。显然C++,Java,C#不是动态语言。比如 JS``javavar i = 1;// int 类型 i = "a" ; //String类型java反射机制在运行状态,可以知道任意类或对象的属性和方法,一种动态调用方法和动态获取信息的机制。是java非常突出的动态相关机制:Reflection。很多优秀的开源框架都是通过反射完成的。可以实现的功能在运行时判断任意一个对象所属的类;

2020-10-22 20:59:22 173

原创 网络编程

网络编程什么是计算机网络?网络即将不同区域的电脑连接到一起, 组成局域网、城 域网或广域网。把分布在不同地理区域的计算机与专门 的外部设备用通信线路互连成一个规模大、功能强的网 络系统,从而使众多的计算机可以方便地互相传递信 息,共享硬件、软件、数据信息等资源。计算机网络的作用?资源共享信息传输与集中处理均衡负荷与分布处理IP地址​ 定义网络上的节点的一串字符,节点比如手机、电脑、ipad、服务器、交换机、路由器等。​ IP地址目前有两类:ipv4(大量使用)和ipv6​ 本机ip:

2020-10-21 20:24:16 183 1

原创 多线程

多线程什么是线程?线程是资源调度和分配的基本单位,是运行的最小单位。什么是多线程?多线程是指在同一个时间段内有多个线程同时运行。在考虑线程安全的情况时,需要为共享资源进行上锁,注意不能上死锁,否则为进入一个死循环,得不到运行结果。多线程的五种状态新生就绪运行阻塞终止如何用代码实现多线程?使用继承Thread类来实现public class Thread001 extends Thread{ @Override public void run() {

2020-10-19 21:48:48 80

空空如也

空空如也

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

TA关注的人

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