- 博客(41)
- 收藏
- 关注
原创 Java Fibonacci Search 斐波那契搜索算法代码实现详解
本期目录一,斐波那契搜索算法简述二,斐波那契搜索算法代码实现三,斐波那契搜索算法总结四,跳转搜索算法完整代码一,斐波那契搜索算法简述斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术。斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等分割。此搜索需要对数组进行排序。与二进制搜索不同,在二进制...
2020-04-13 14:53:29 1006 1
原创 Java Jump Search 跳转搜索算法代码实现详解
本期目录一,跳转搜索算法介绍二,跳转搜索算法代码实现三,跳转搜索算法总结四,跳转搜索算法完整代码一,跳转搜索算法简述此搜索类似于“二分法检索(binary search)”,但不会向前和向后跳转-我们只会向前跳转。请记住,跳转搜索还需要对集合进行排序。基本思想是通过固定步长跳过或跳过某些元素来代替搜索所有元素来检查更少的元素(与线性搜索相比)。在“跳转搜索”中,...
2020-03-09 09:43:36 1108
原创 Java Interpolation Search 插值搜索算法代码实现详解
本期目录一,插值搜索算法简述二,插值搜索算法代码实现三,插值搜索算法总结四,跳转搜索算法完整代码一,插值搜索算法简述插值搜索用于搜索排序数组中的元素。如果我们知道底层结构中的数据是均匀分布的,则此搜索特别有用。如果数据是均匀分布的,那么与二分法检索(binary search)相对,我们总是尝试在数组的中间查找元素,因此猜测元素的位置会更精确。插值搜索使用插值公...
2020-03-03 16:11:07 871
原创 Java Exponential Search 指数搜索算法代码实现详解
一,指数搜索算法简述指数搜索用于通过跳跃指数位置(即2的幂)来搜索元素。在此搜索中,我们基本上是试图找到一个相对较小的范围,在该范围内我们可以使用其他有界搜索算法(例如二进制搜索)来搜索元素。不用说,应该对集合进行排序以使其起作用。二,指数搜索算法代码实现/** * 指数搜索 * @param integers * @param elementToSear...
2020-02-14 14:54:29 1513 1
原创 Java KMP(Knuth-Morris-Pratt )搜索算法代码实现详解
本期目录一,Knuth Morris Pratt搜索算法介绍二,Knuth Morris Pratt搜索算法思路三,Knuth Morris Pratt搜索算法代码实现四,Knuth Morris Pratt搜索算法总结五,Knuth Morris Pratt完整代码一,Knuth Morris Pratt搜索算法介绍KMP是一种用于在给定文本中查找算法(其实就是改进...
2020-01-14 10:24:42 1646 2
原创 Java 二分法检索算法代码实现详解
本期目录一,二分法检索算法介绍二,二分法检索算法思路三,二分法检索算法代码实现四,以算法时间复杂度和空间复杂度总结算法。一,二分法检索算法介绍二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中。是最常用的搜索算法之一,这主要是由于其搜索时间短。二,二分法检索算法思路这种搜索使用分而治之...
2020-01-10 18:18:27 5540 9
原创 Java 线性搜索算法代码实现详解
本期目录一,搜索算法介绍二,线性搜索算法实现一,搜索算法介绍搜索是在常规业务应用程序中执行的最常见操作之一。这涉及读取存储在数据结构中的一些数据喜欢Arrays,List,Map等。更通常情况下,该搜索操作确定用于最终用户的应用程序的响应。(ps:让我们看一下百度百科专业的解释)搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解...
2020-01-09 11:56:01 2367 4
原创 Java 8 Optional 类最佳使用方法
Java8的版本,新增了Optional和Lambda表达式,Optional主要用于作为返回类型(主要解决的问题是臭名昭著的空指针异常(NullPointerException)),并将其与流(或返回可选的方法)相结合以构建连贯API。但是,有些情况可以被认为是陷阱,因为它们会降低代码的质量,甚至导致意想不到的错误。总结以下26个例子,以避免这些陷阱,关于Lambda使用方法可看我另一篇文章“点...
2019-11-13 10:15:35 5724 4
原创 编写Spring MVC控制器的14个技巧
本期目录1.使用@Controller构造型2.实现控制器接口3.扩展AbstractController类4.为处理程序方法指定URL映射5.为处理程序方法指定HTTP请求方法6.将请求参数映射到处理程序方法7.返回模型和视图8.将对象放入模型9.处理程序方法中的重定向10.处理表格提交和表格验证11.处理文件上传12.在控制器中自动装配业务类...
2019-11-05 10:35:57 13324 12
原创 HTTP协议详解(基础概念 方法 状态码 首部 连接 Cookie 新特性 安全)
一 、基础概念URIURI 包含 URL 和 URN。请求和响应报文1. 请求报文2. 响应报文二、HTTP 方法客户端发送的请求报文第一行为请求行,包含了方法字段。GET获取资源当前网络请求中,绝大部分使用的是 GET 方法。HEAD获取报文首部和 GET 方法类似,但是不返回报文实体主体部分。主要...
2019-10-24 11:45:14 9477 9
原创 Java AES 256加密解密示例
Java支持许多安全的加密算法,但是其中一些功能较弱,无法在安全性要求很高的应用程序中使用。例如,数据加密标准(DES)加密算法被认为是高度不安全的。今天介绍一下AES 256加密解密。 什么是AES 256? 高级加密标准 (英语:Advanced Encryption Standard,缩写:AES ),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。...
2019-10-23 11:10:56 6755 3
原创 Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt)
一、工具类 md5加密工具类 public class MD5Utils { private static final String hexDigIts[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; /** * MD5加密 * @param ori...
2019-10-18 18:13:45 8579 22
原创 Java排序算法实现方式(算法思路 过程动图)
排序算法待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。使用辅助函数 less() 和 swap() 来进行比较和交换的操作,使得代码的可读性和可移植性更好。敲黑板:排序算法的成本模型是比较和交换的次数,也是衡量排序算法的好坏的方式。 选择排序(Selection Sort) ...
2019-10-15 19:53:28 4462 5
原创 实现调用API接口(Apsara Clouder专项技能认证:实现调用API接口总结)
今天去阿里云官网闲逛发现有Apsara Clouder专项技能认证:实现调用API接口认证,就去考试了,也总结了一下基础什么是API? API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 API分类都有...
2019-09-25 00:02:13 4374 1
原创 Ruby on Rails 教程之快速入门
一,简介Ruby on Rails是一个框架,一个使Web 应用的开发、部署和维护变得更容易的框架。自从发布第一个版本以来, Rails 已经从一个默默无闻的玩具蜕变成了一种世界性的现象。它拿下了一个又一个的奖项,更重要的是,很多web2.0 应用都选择它作为基础框架。Rails 已经不再只是一小撮黑客推崇的时髦玩艺:很多跨国公司正在用它来开发自己的web 应用。为什么会这样? 有几个方...
2019-07-22 14:13:41 10750 3
原创 常用API系列: Scanner类、匿名对象、Random类、ArrayList集合、String类、static类、Arrays工具类、Math类
常用API系列API概述什么是API: API(Application Programming Interface) 应用程序编程接口,JavaAPI是一本程序员字典,是JDK中提供给我们使用类的说明文档。这些类将底层的代码实现封装了起来,不需要关系这些类如何实现,只需要是学习如何使用即...
2019-05-01 21:58:36 2593 1
原创 Java1.8新特性Lombda表达式语法、Stream流常用方法: forEach、filter、Map、Count、limit、skip、concat
半夜整理了一下Stream流常用方法,其实stream 流 核心理念 只关注实现,不关注如何实现,如fliter只是过滤,forEach只是遍历等,要理解核心理念才能卓越的使用。代码配合Lombda表达式简洁明了,逻辑清晰(下面有Lomdba表达式语法格式)import java.util.*;import java.util.stream.Stream;/** * st...
2019-04-20 01:42:59 11662 3
原创 IntelliJ IDEA 快捷键 Mac版(个人自用最新版)
Mac键盘符号和修饰键说明⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ↓ 下箭头 ← 左箭头 → 右箭头 ⇞ Page Up(Fn+↑) ⇟ Page Down(Fn+↓) Home Fn + ← End Fn + → ⇥ 右制表符(T...
2019-01-10 13:41:26 12564 1
原创 Multimap介绍+遍历使用+方法及说明
先介绍:Multimap 顾名思义通过名字可想,Multi就是很多的意思,允许我们一个关键字对应多个value,所有说Multimap允许重复的键值插入容器。(一般使用map,只能保证一个key对应一个value)一:如果在开发中遇到List存在嵌套的情况,通常的实现方式是使用两个for循环嵌套,这样使得执行步骤增加,大大降低了系统的性能。这个时候强烈推荐使用Multimap数据结构!二:...
2019-01-07 18:41:56 40628
原创 Lombok 介绍+使用
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。Lombok能通过注解的方式,在编译时自...
2019-01-06 18:33:11 36026 2
原创 javax.validation 效验工具(validation-api组件)使用教程
在后端开发时,不可避免的需要处理一些校验, 如果是写if-else这种代码去校验, 那会有一大段这样的代码。不过还好有个校验插件:javax.validation.validation-api,不过一般会引用hibernate的校验组件:org.hibernate.hibernate-validator, 它已经引用了validation-api组件。首先pom.xml引入依赖 &l...
2019-01-06 16:02:22 59955
转载 时间复杂度(漫画详解)
时间复杂度 这篇文章是在csdn公众号 程序人生中发布的。是我到目前为止所看到的关于时间复杂度介绍的最好的文章,简介 清晰 明了。所以拿来po出来 仅供学习交流,如侵则删。 正文:    时间复杂度的意义 究竟什么是时间复杂度呢?让我们来想象一个场景:某
2018-12-24 09:59:02 11494
原创 java图片处理Thumbnails使用教程
直接放代码了 public class ImageUtil { public static void main(String[] args) throws IOException { // 利用当前线程获取水印图片绝对路径 String basePath = Thread.currentThread().getContextClassLoader().getResource("...
2018-11-21 10:22:52 14220
原创 Linux系统之SSH Secure工具安装使用教程(远程工具中文乱码解决)
实际开发中,Linux服务器都在其他的地方,我们要通过远程的方式去连接Linux并操作它,Linux远程的操作工具有很多,企业中常用的有Puttty、secureCRT、SSH Secure等。课程中我们使用SSH Secure工具进行远程连接,该工具是免费的图形化界面及命令行窗口集一身的远程工具。安装包如下: ...
2018-11-15 11:37:38 11841
原创 Linux系统基本命令(超详细图解)
一,目录切换命令window中通过图形化界面和鼠标可以任意切换需要进入的目录,但Linux必须通过cd命令切换目录。cd usr 切换到该目录下usr目录cd../ 切换到上一层目录cd / 切换到系统根目录cd~ 切换到用户主目录cd - 切换到上一个所在目录二,目录的操作命令(增删改查)目录的操作命令(增删改查)1.命令:mkdir 目录名称示例:在...
2018-11-14 17:52:50 13577
原创 mysql数据库explain 使用与结果定义
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如:explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的...
2018-11-14 09:27:07 12639 1
原创 MySQL索引原理及索引性能优化
一,MYSQL索引优点:通过建立唯一索引或者主键索引保证了数据库表中每一行的唯一性,大大提高了检索的数据效率以及减少表的检索行。 MYSQL索引缺点: 在创建索引和维护索引会耗费时间随着数据量的增加而增加,索引文件会占用物理空间,当对表的数据进行增,删,改的时候索引也要动态的维护,这样就会降低数据的维护速度。 二,MySQL的索引分类:1....
2018-11-13 16:51:35 11725 4
原创 TCP/IP协议简述+常见面试题
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers)第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(sy...
2018-11-13 10:10:27 35107 8
原创 Java 反射总结
一、什么是反射:反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操...
2018-10-22 11:28:52 11014
原创 java三种代理模式(SpringAop切面原理基于java三种代理模式)
静态代理总结:1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.2.缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.如何解决静态代理中的缺点呢?答案是可以使用动态代理方式动态代理有以下特点:1.代理对象,不需要实现接口2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象...
2018-10-20 11:46:01 12275
原创 Maven安装使用教程(超详细附图)
Maven的简介 什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Maven好处 普通的传统项目 Maven项目分析:maven项目为什么这么小?没有jar。 需要jar吗?肯定需要。没有存在于maven项目里面,jar存在于哪? 依赖管理 2 Maven的安装配置 下载安装 ...
2018-10-20 11:26:10 11643 2
原创 Java生成随机数并随机输出不重复的值
一个小Demo,网上有很多类似的代码,测试了一下网上的代码为了让随机输出值不重复,重复循环达到目的的效果,但循环次数过多严重影响性能。通过ArrayList的remove方法实现了生成随机数并随机输出不重复的值比网上的效果好一百倍,没有利用重复循环达到目的不会影响性能...
2018-10-20 11:15:15 23849 5
原创 Missing artifact org.springframework:spring-webmvc:jar:${spring.version} 错误解决
创建了一个maven项目在pom.xml里部署环境突然报错了,在网上找了半天试了很多方法一直没好,仔细一看是没有描述了这个项目构建环境中的前提条件错误信息实例:Missingartifacorg.springframework:spring-core:jar:${spring.version}错误解决办法: <properties> <!--描...
2018-09-28 15:19:29 20080 7
原创 Tomcat运行错误,端口占用(8005, 8080, 8009)
Tomcat错误信息如下:Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using th...
2018-09-05 15:10:08 13475
原创 java获取Timestamp类型的当前系统时间
java获取取得Timestamp类型的当前系统时间java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = new Timestamp(System.currentTimeMillis()); 方法2: Date date = new Date(); Timestamp nousedate ...
2018-08-29 18:05:05 35247 2
原创 mysql之count()函数详解
1.count()函数是用来统计表中记录的一个函数,返回匹配条件的行数。 2.count()语法:(1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。(2)count(1)---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。(3...
2018-08-14 17:47:34 12463
原创 web开发之转发(request.getRequestDispatcher().forward(request,response))和重定向(response.sendRedirect())区别
在进行web开发时,跳转是最常见的,今天在这里来学习下2种跳转:第一种是request.getRequestDispatcher().forward(request,response):1、属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信...
2018-08-05 15:11:53 13065
原创 用户·角色·权限·数据库表的设计基于角色的访问控制RBAC
Java web项目中,无论项目是大是小,或多或少都会涉及到用户访问权限的控制,权限管理总体的设计思路就是,不该看的不看,不该做的不做!据我目前的了解,我所知道的几种实现访问权限控制的方式有:JQuery的zTree设计权限树; 权限框架shiro; 基于角色的访问控制RBAC;这是我所知道的几种权限管理,如果有误或是还有其他的方法,望指正! 而今天我要说的就是基于角色的访问控制RBAC...
2018-07-31 11:39:17 14047 2
原创 mysql常用语句(简单增删改查)
一、插入(复制)表数据1、INSERT INTO 语句(1)插入新的一行数据[sql]view plaincopyINSERTINTOPersonsVALUES('Gates','Bill','Xuanwumen10','Beijing');(2)在指定的列中插入数据[sql]view plaincopyINSERTINTOPerso...
2018-06-19 08:59:52 24464
原创 DAO设计模式
DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。1设定DAO接口:使用interface 接口设...
2018-06-11 21:13:50 11839
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人