自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法——最小生成树与最短路径相关算法

最小生成树算法普利姆算法代码参考:https://blog.csdn.net/tingting256/article/details/50471033具体如何判断是否构成回路,举例说明:克鲁斯卡尔算法代码参考:https://blog.csdn.net/luoshixian099/article/details/51908175最短路径算...

2020-02-27 17:36:07 308

转载 算法——贪心算法

1什么是贪心算法?贪心算法,又称贪婪算法(Greedy Algorithm),是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。贪婪算法是一种分阶段的工作,在每一个阶段,可以认为所做决定是最好的,而不考虑将来的后果。这种“眼下能够拿到的就拿”的策略是这类算法名称的来源。贪心算法没有固定的算法框架,算法设计的关...

2020-02-27 16:05:43 602

原创 算法——KMP算法

暴力匹配假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0。相当于每次...

2020-02-27 15:40:10 290

转载 算法——动态规划算法

动态规划的核心思路动态规划的解题核心主要分为两步:第一步:定义问题有的问题过于抽象,或者过于啰嗦干扰我们解题的思路,我们要做的就是将题干中的问题转化成一系列同类问题的某个解的情况,比如说:题目:求一个数列中最大连续子序列的和。我们要将这个原问题转化为:定义问题:Fk是第k项前的最大序列和,求F1~FN中最大值。通过换一种表述方式,我们清晰的发现了解决问题的思...

2020-02-27 14:28:38 322

转载 算法——分治算法

一、基本概念在计算机科学中,分治法是一种很重要的算法。分治算法,字面上的解释是“分而治之”,分治算法主要是三点:将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题----“分” 将最后子问题可以简单的直接求解----“治” 将所有子问题的解合并起来就是原问题打得解----“合”这三点是分治算法的主要特点,只要是符合这三个特点的问题都可以使用分治算法进行解决...

2020-02-27 13:49:51 1327

转载 算法——图的深度优先遍历和广度优先遍历

更多参考:深度优先遍历:深度优先遍历是图论中的经典算法。其利用了深度优先搜索算法可以产生目标图的相应拓扑排序表,采用拓扑排序表可以解决很多相关的图论问题,如最大路径问题等等。根据深度优先遍历的特点我们利用Java集合类的栈Stack先进后出的特点来实现。我用二叉树来进行深度优先搜索。深度优先搜索的步骤为:(1)首先节点 1 进栈,节点1在栈顶;(2)然后节点1出...

2020-02-27 11:42:13 1232

原创 数据结构——图

图的创建有两个比较关键的点:1、添加节点 2、添加边,完成这两步,一个最基本的图就创建出来了代码实现参考:https://blog.csdn.net/picway/article/details/68151479...

2020-02-27 10:59:23 127

原创 数据结构——树

为什么需要树这种数据结构?举例说明(树的查找很快,而且添加和删除也很灵活)二叉树的概念完全二叉树的理解参考:https://blog.csdn.net/maqingbin8888/article/details/81984187二叉树的前序、中序和后序遍历不管是哪种形式的遍历,都肯定是从根节点开始的。过程有些类似递归回溯的思想。实现参考:https:...

2020-02-26 22:08:16 125

原创 数据结构——哈希表

基本信息可参考查看《常见数据结构》哈希表的实现思路哈希表通常由数组 +链表或者数组 + 二叉树来构造。此处以数组 +链表实现:代码参考:https://www.cnblogs.com/xiaoxiongcanguan/p/10190861.html代码如下:雇员类链表类(含对链表基本的增删改查操作,此处只写出增加操作)哈希表(含对哈希表的增删改查等...

2020-02-25 16:41:03 156

原创 算法——常见查找算法

线性查找这一查找很简单,就是遍历对比,然后返回下标,如果要查找所有的,就把下标放到一个集合里再返回即可。二分查找需要注意这里的关键词“有序”,如果一个数组是无序的,需要先进行排序然后才能用二分查找。代码实现如下:插值查找插值查找是对二分查找的一种优化举例说明这种处理可以使得定位范围更精准。斐波那契查找辅助理解:https://...

2020-02-25 11:49:19 139

原创 算法——常见排序算法

基本介绍举例说明代码如下package day0515;public class demo_sort { public static void main(String[] args) { //冒泡排序算法 int[] numbers=new int[]{3, 9, -1, 10, 20}; int i,j; ...

2020-02-21 11:51:23 194

原创 排序算法概述与算法时间复杂度

时间频度算法的时间复杂度常见的时间复杂度注意,时间复杂度怎么理解呢?如果一段程序不会因为变量的规模而使得执行次数发生变化,那么时间复杂度就是O(1),比如下面这个代码就不会因为i = 200000就会使得代码的执行次数变多。平均时间复杂度和最坏时间复杂度空间复杂度注:本文内容来自《韩顺平_java数据结构与...

2020-02-21 10:52:39 170

原创 数据结构与算法——递归回溯

简单来说,递归就是方法自己调用自己。有点类似于从底层开始一步一步地往上归纳。每次调用时必须传入不同的变量,用该变量来判断作为最后退出的条件,否则递归将无限执行下去直到栈内存溢出。两个简单的小例子打印问题举例:递归的常用场景递归的使用规则我的理解:其实在逻辑上就是调用的方法里还有方法,然后方法里还有方法……只不过,当每一层里的方法都是自己时,就称之为递归。...

2020-02-20 18:08:31 277 1

转载 递归与回溯的理解

递归程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模 较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。通常来说,为了描述问题的某一状态,必须用到该状态的上一个状...

2020-02-20 16:41:19 646

原创 数据结构——栈

栈的应用场景数组模拟栈的思路分析代码截图如下:其他的实现参考:https://blog.csdn.net/weixin_42220532/article/details/101314493栈实现综合计算器1、使用栈来实现综合计算器    2、思路分析(示意图)要注意的一点是,一旦处理完了符号的优先级,则剩下的数据已经没有优先级的问题了,先算后...

2020-02-20 12:19:31 190

原创 数据结构——链表

单链表单链表的创建和遍历在学习链表之前,我还一直在想,数组在内存中是连续的,但是链表不连续,怎么去实现呢?我们难道还能像创建一个数组一样去创建一个叫做“链表”的数据结构?原来链表是通过创建节点对象来实现的,在节点对象中存放目标数据和下一个对象的内存地址。相当于在队列中需要有一个数组来存放数据一样。...

2020-02-20 10:51:10 258

转载 数组和链表的区别

我们知道遍历数组和链表的时间复杂度都是O(n),但是在实际中确实数组的速度要比链表快,这是为什么呢?1、首先,数组是具有相同的数据类型且按一定次序排列的一组变量的集合体,构成一个数组的这些变量称为数组元素。数组在内存中的地址是连续相邻的,而链表在内存的地址是散列的,不连续的。2、CPU缓存会把一片连续的内存空间读入,因为数组结构是连续的内存地址,所以数组全部或者部分元素被连续存在CPU缓存...

2020-02-19 15:50:18 198

原创 数据结构——队列

创建队列、塞值和拿值当我们创建一个LinkedList的时候,就可以用来模拟队列,因为该集合里有大量操作首尾元素的方法,之后就可以在该队列里进行数据的添加和获取。但是当我们使用数组来实现时,如何创建一个队列呢?最大值怎么确定?首尾初始值怎么确定?这一步骤中我就有了一些疑惑,如果我把创建队列、添加队列数据和删除队列数据分别用三个方法来表示,那么队列的首尾值该怎么跟随着队列呢?难道...

2020-02-18 15:52:37 187

原创 关于取模运算的特点与应用

对于取模(取余)运算%,比如A % M,结果永远都是在[0, M-1)之间循环,这一特点有很多应用场景1、最常见的就是对2取模来判断奇偶数2、循环队列中通过对最大容量取模来控制数组下标,防止索引越界...

2020-02-18 14:58:33 1318

原创 JAVA集合的相关处理总结

1、注意集合只能存放对象,不能存放基本类型的数据,1.5之后有了自动拆箱/装箱才弥补了这一缺点,但是有些地方转换不了要注意,比如List<int[]> result = Arrays.asList(new int[5]); // 我期望的是List<int>List<Integer> result2 = Arrays.asList(new Intege...

2020-02-17 12:24:09 91

原创 JAVA数组的相关处理总结

1、Java 数组元素逆序Reverse的三种方式:https://blog.csdn.net/xhibiki/article/details/82930521

2020-02-17 12:06:16 103

转载 IDEA中性能分析工具JProfiler的安装

下载JProfiler(IDEA)插件方式1:在IDEA上直接下载Settings–plugins–Browse repositories搜索JProfiler 点击 install 按钮安装,然后重启IDEA工具看到如下图标则说明安装完成方式2:官网下载插件,手动安装。JProfiler官方下载地址在首页向下翻,中部位置能看到JProfile...

2020-02-17 10:21:26 2659

转载 数组-稀疏数组

当一个二维数组中的无效数据远远大于有效数据时,可以将这个二维数组转换成一个新的数组,达到压缩内存的目的,而这个新的数组就叫做稀疏数组。说明:这里的无效数据通常是指0或者其它许多相同的数据,是稳定的、默认的。比如: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0...

2020-02-17 10:19:51 122

原创 JAVA字符串的相关处理总结

1、Java拼接字符串时,去掉最后一个多余字符:https://blog.csdn.net/itmyhome1990/article/details/50519206/

2020-02-14 17:14:42 85

原创 J2SE:二维数组

为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。创建二维数组在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是...

2020-02-14 15:38:19 490

转载 常见数据结构

注:本文内容整理自韩顺平《java数据结构与算法》先激励激励自己数据结构是指组织数据的方式,它是算法的基础。线性结构和非线性结构线性结构:是一个有序数据元素的集合。它应该满足下面的特征:集合中必存在唯一的一个“第一个元素” 集合中必存在唯一的一个“最后的元素” 除最后一元素之外,其它数据元素均有唯一的“后继 除第一个元素之外,其它数据元素均有唯一的“前驱”非线性...

2020-02-13 22:53:30 683

原创 阿里java编程规范之异常处理、安全规约、MySql数据库

注:本文内容整理自《阿里java编码规范》,除“编程规约”外的其它规则。异常处理强制1、Java类库中可以通过预检查方式规避的 RuntimeException不应该通过catch的方式来处理,如: IndexOutOfBoundsException,NullPointerException 等。说明:无法通过预检查的异常不在此列,比如,在解析字符串形式的数字时,可能存在数字格式错误,...

2020-02-13 15:20:07 906 1

原创 阿里java编码规范之编程规约

注:本文内容整理自《阿里java编码规范》+《代码整洁之道》代码规范的重点在于保持代码可读性和团队协作的一致性,并不是说不遵守规范代码就无法运行。让代码可读、优雅、漂亮,是一件让自己舒服也让其他读代码的人更加舒服的事情。本文讲的是传统意义上的代码规范,包括变量命名、代码风格、控制语句、 代码注释等基本的编程习惯,以及从高并发场景中提炼出来的集合处理技巧与并发多线程的注意事项。命名风格...

2020-02-13 09:59:05 1002

转载 代码抽象层次的理解

抽象层次是面向对象方法中极其重要,但是又非常难以掌握的技巧。学会站在不同的抽象层次考虑问题是建立好模型的基础,所以笔者不能不在这里说一些与技术无关的“废话”。首先,抽象层次越高,具体信息越少,但是概括能力越强;反之,具体信息越丰富,结果越确定,但相应的概括能力越弱。从信息的表达能力上说,抽象层次越高表达能力越丰富,越容易理解。可能有人会对这个提出疑问,因为在人们的印象里,越是抽象的东西越难理解...

2020-02-12 18:27:31 1233

原创 JDBC的基本使用

JDBC:Java Database Connectivity,java数据库连接,其实就是用java语言来操作数据库。JDBC的本质:其实就是官方(sun公司)定义的一套用来操作所有关系型数据库的规则,即接口。然后各个厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)来编程,而真正执行的是驱动jar包中的实现类,即多态的方式。JDBC的使用步骤导入驱动j...

2020-01-15 22:50:45 614

转载 NIO的基本理解

NIO简介在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需要掌握:缓冲...

2020-01-12 22:46:29 222

原创 jsp的基本认识与理解

简介:JSP全称是JavaServer Pages,它和servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。相比servlet而言,servlet很难对数据进行排版,而jsp除了可以...

2020-01-12 13:29:57 960

转载 Jenkins的基本操作

jenkins是什么?Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有...

2020-01-11 23:52:45 1231

转载 rest以及restful的基本理解

传统下的API接口http是目前在互联网上使用最多的协议,没有之一。可是http的创始人一直都觉得,在过去10几年来,所有的人都在错误的使用Http.这句话怎么说呢?如果说你要删除一个数据,以往的做法通常是 delete/{id} 如果你要更新一个数据,可能是Post数据放Body,然后方法是 update/{id}, 或者是artichle/{id}?method=update...

2020-01-11 22:52:36 397

转载 Apache/Tomcat/JBOSS/Jetty/Nginx区别 与选择

总结:Apache/Tomcat/JBOSS/Nginx区别 .1、Apache是Web服务器,Tomcat是应用(Java)服务器。Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。Apache支持静态页,Tomcat支持动态的。2、Jetty:Tomcat内核作为其Servlet容器引擎,并加以审核和调优.大中型系统可以应用。能够提供数据库连接池服务,还支持其他 Web 技...

2020-01-10 22:36:18 217

原创 Tomcat的基本认识和使用

服务器:安装了服务器软件的计算机。通常都是高配置的计算机。服务器软件:接收用户的请求,处理请求,做出响应。web服务器软件:通过浏览器来进行访问的一种服务器软件。在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目。常见的java相关的web服务器软件:webLogic,oracle公司的产品,大型的javaee服务器,支持所有的javaee规范。收费的。(ja...

2020-01-10 22:23:09 297

转载 Http协议的基本理解

引入超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。T...

2020-01-10 21:49:57 305

原创 字符编码和字符集

编码和解码:按照某种规则,将字符存储到计算机中,称为【编码】 ;那么,将计算机中的二进制数据按照某种规则解析显示出来,称为【解码】。【字符编码】就是一套自然语言的字符和二进制数据之间的对应规则。把这种对应规则,写成一张表,就是【编码表,也叫字符集】。包括了各国家文字、标点符号、图形符号、数字等自然语言字符和二进制的对照。常见的有ASCLL编码表(最基本的)、GBK编码表(中国专用的)、UT...

2020-01-09 22:12:18 153

原创 Servlet之Filter过滤器的基本理解

Filter过滤器Filter和Servlet一样,本质上也是一个接口,javax.servlet.Filter接口。当客户端访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器一般用于完成通用的操作,比如多个资源具有共同的一个操作,可以抽取出来放到过滤器中。比如,登陆验证/统一编码处理/敏感字符过滤等等。使用步骤:1,定义一个类,实现Filter接口 2...

2020-01-09 22:02:35 590

转载 Servlet之Listener监听器的基本理解

ServletContextListener(Servlet全局监听器)首先要说明的是,ServletContextListener是一个接口,我们随便写一个类,只要这个类实现了ServletContextListener接口,那么这个类就实现了【监听ServletContext】的功能。那么,这个神奇的接口是如何定义的呢?我们来看一下这个接口的内部情况:package javax.se...

2020-01-09 22:01:18 252

空空如也

空空如也

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

TA关注的人

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