自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

restart1025的博客

所学知识分享,欢迎大家讨论和指导

  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 Excel提取单元格中的数字

1、给出数字的起始位置和长度。示例公式:=–mid(a1,5,3) 公式结果为提取A1单元格中从第5位开始的3个数字。 2、提取某特定字符串后的数字。示例公式:=-lookup(0,-mid(a1,find(“ABC”,a1)+LEN(“ABC”),row(1:99))) 公式结果为提取A1单元格中字符串ABC之后的数字。 3、数字在一侧其他则中文字符组成。示例公式:数字在前,公式=left(...

2018-03-02 13:56:19 8677 1

原创 POI 导出Excel文档

/** * 创建ExcelFile文件流 * @param sheetNameArray 每个sheet页的名字 * @param titles 每个sheet页的表头 * @param cellValue 每行数据在map中的字段, 一定要和titles严格对应(如果list无数据, 则可以不传) * @param list 每个sheet页的数据

2017-11-07 10:06:17 365

原创 Mybatis SQLException with Error code '911', Extracted SQL state class '42' from value '42000'

问题: MyBatis 查询Oracle数据库表或者视图,一直很正常,直到今天有一个需求需要查询数据库的系统表all_tab_columns,然后就报出这个错误一开始我以为MyBatis不能直接查询数据库系统表,网上还搜不出MyBatis查询系统表相关问题所以我后来用一个视图存储查询结果,然后MyBatis直接查询视图,发现还是这个错误,于是觉得问题不在这里最后,经过一系列排查和师兄的帮助下

2017-11-03 15:03:18 4407 1

原创 文件大小Byte转化为KB、MB、GB等

最近做关于文件上传下载的服务,想记录一下文件的大小,但是file.length()输出的是Byte,于是想转化为Kb、Mb、Gb等 /** * 将文件大小由Byte转为MB或者KB * @return */ private String fileSizeByteToM(Long size) { BigDecimal fileSize = n

2017-10-31 10:57:35 7649

原创 在 Linux 上给用户赋予指定目录的读写权限

使用用户组来为用户赋予指定目录的读写权限如果用户已经拥有了默认的用户组(通常组名与用户名相同),或者已经所属某个用户组,就可以简单的通过变更文件夹的所属用户组来完成。# chgrp -R storm /usr/local如果想重新建立用户及用户组,并且重新设置权限,需要按照下面步骤操作。1、创建用户# useradd restart10252、设置密码# passwd restart10253、创建

2017-09-14 10:42:46 58944 1

翻译 centos7 关闭firewall安装iptables并配置

一、配置防火墙,开启80端口、3306端口CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。1、关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动2、安装iptables防火墙yum i

2017-09-14 09:39:21 328

原创 剑指offer(十八)二叉树的镜像

题目操作给定的二叉树,将其变换为源二叉树的镜像。案例二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \

2017-09-01 16:13:40 211

原创 剑指offer(十七)数的子结构

题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)案例输入:{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}输出:true分析需要一个个去遍历节点,如果当前节点的值等于B节点的根节点的值那就从此节点开始,遍历其和B链表的所有节点如果不符合,则继续往下遍历A链表解题代码/**public class TreeNode {

2017-09-01 15:37:52 241

原创 剑指offer(十六)合并两个排序的链表

题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。案例输入{1,3,5},{2,4,6},则应该输出{1,2,3,4,5,6}分析两个递增链表,合并成一个单调不减的链表需要从跟节点开始,比较两个链表大小,然后将最小的放入新的链表中,最小链表所在的链表则需要舍弃该节点,然后继续比较解题代码/*public class ListNode {

2017-09-01 13:55:09 172

原创 剑指offer(十五)反转链表

题目输入一个链表,反转链表后,输出链表的所有元素。案例输入:{1,2,3,4,5},输出{5,4,3,2,1}分析首先需要一个新的空链表作为存储然后每次取出一个节点,也是用链表存储最后加上原本的链表,一共需要三个链表结构所以我们需要定义两个新的链表解题代码/*public class ListNode { int val; ListNode next = null;

2017-09-01 10:26:22 218

原创 算法之冒泡排序

概念冒泡排序算法需要遍历几次数组。每次遍历都要比较连续相邻的元素,如果某一对相邻元素是降序,则互换它们的值,否则保持不变。由于较小的值像“气泡”一样逐渐浮向顶部,而较大的值沉向底部,所以叫冒泡排序。时间复杂度最差的情况下,冒泡排序算法需要进行n-1次遍历。第一次遍历需要n-1次比较,第二次遍历需要n-2次比较,依次进行;因此比较总数为:(n-1)+(n-2)+…+2+1=n(n-1)/2=O(n2

2017-08-31 11:09:42 352

原创 剑指offer(十四)链表中倒数第k个结点

题目输入一个链表,输出该链表中倒数第k个结点。案例输入{1,2,3,4,5}, 1,则输出5分析这道题再次验证了思维的重要性最初的思路,就是先遍历链表,算出长度,然后再次遍历到n-k,然后返回,当然思路和做法都是正确的,但是却不是最优的优化之后,我想到了便利的时候将每一个节点都放进List中,然后直接get(n-k)就好了,这样只需要遍历一次但是放进去的时候会出现一点问题,因为放进去的是一

2017-08-29 23:25:33 211

原创 剑指offer(十三)调整数组顺序使奇数位于偶数前面

题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。案例{1,8,3,4,5,6} ->{1,3,5,8,4,6}分析1、要想保证原有次序,可以顺次移动或相邻交换。2、i从左向右遍历,找到第一个偶数。3、j从i+1开始向后找,直到找到第一个奇数。4、将[i,…,j-1

2017-08-29 18:44:58 214

原创 剑指offer(十二)数值的整数次方

题目给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。案例2.5的3次方,3.6的5次方,2.8的-3次方等等分析第一想法就是return Math.pow(base, exponent);然后通过了,这也是一个方法,java内部封装好的工具类但是题目显然不是为了让我们那么随便过去的,而是要达到锻炼的目的一种就是直接循环,先将exp

2017-08-29 16:44:01 249

原创 剑指offer(十一)二进制中1的个数

题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。案例1在二进制中是0000 0001,所以1的个数是13在二进制中是0000 0011,所以1的个数是2负数在二进制中是用其对应正数的补码再加一来表示的,即:-3所对应的二进制是0000 0011,其补码是1111 1100,再加一则是1111 1101,1的个数是7位分析将二进制数不断右移位至0即可遍历所有的1,但是中间

2017-08-28 23:33:09 295

原创 剑指offer(十)矩形覆盖

题目我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析先找规律,n<=0时,结果肯定返回0n = 1时,返回值为1;n=2时,返回值为2;n=3时,返回值为3等等当为n时,还是按照之前的思想,化整为零,从一处着手现在看第一个1*1的位置,它有两种放置的方式,横着或者竖着放置矩形当它竖着放置的时候,剩余的就是f

2017-08-28 23:12:17 298

原创 剑指offer(九)变态跳台阶

题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解析将之前的跳台阶理解透彻之后,这个就非常简单了,思路不会的可以参考剑指offer(八)跳台阶 n = 1和2 的结果不变,还是1和2n = 3时,结果为4,f(2) + f(1) + 1 = 2f(2)n = 4时,结果为8,f(3) + f(2) + f(1) + 1 = 2

2017-08-28 17:35:05 297

原创 剑指offer(八)跳台阶

题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。案例 台阶 跳法 1 1 2 2 3 3 4 5 5 8等等,以此类推分析我想出来的方法是,利用组合来获取最终结果即如果是全部一级一级跳,有一种方法;然后一个2级,其他都是一级跳,有n种方法;以此类推,就是组合的计算,m个2级,则是在 (n - 2

2017-08-28 16:47:19 279

原创 JAVA实现排列组合

排列的计算公式: 组合的计算公式 阶乘的实现 /** * 计算阶乘数,即n! = n * (n-1) * ... * 2 * 1 * @param n * @return */ private static long factorial(int n) { long sum = 1; while( n > 0 )

2017-08-28 13:54:27 21918 2

原创 剑指offer(七)斐波那契数列

题目 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39定义 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法

2017-08-27 23:39:14 544

原创 剑指offer(六)旋转数组的最小数字

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。若数组大小为0,请返回0。NOTE:给出的所有元素都大于0。案例 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 分析 看到题目和案例,说是非递减数组,那默认就是递增数组了于是按照递增数组思路来做,第一想法就是从后往

2017-08-27 23:07:56 187

原创 剑指offer(五)两个栈实现队列

题目 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析 这题没有什么案例,就是用两个栈来完成队列的操作之前也写过这部分代码,自己找到看了一下,感觉有点不对,于是试了一下,发现真的不通过,正好再完善一下栈的特性是先进后出,队列呢是先进先出,想用两个栈完成队列的操作还是挺简单的先将一个栈作为存储,即每次进来都用stack1来进行存储,然后出的时候,将所

2017-08-27 20:33:45 182

原创 剑指offer(四)重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。案例 输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析 对于这道题,之前都是接触二叉树的遍历,对于逆向重建真的没有一点思路,然后想找规律做出来,最终想法受限,结果失败了。然后看网上大神的做法和思路

2017-08-27 20:22:45 209

原创 剑指offer(三)从尾到头打印链表

题目 输入一个链表,从尾到头打印链表每个节点的值。案例 输入一个链表,将值打印出来(我的案例上是将值放到ArrayList中去) ListNode root = new ListNode(); root.val = 1; root.nxt = new ListNode(); root.nxt.val = 2; root.nxt.nxt =

2017-08-23 17:49:44 222

原创 剑指offer(二)替换字符

题目展示 请实现一个函数,将一个字符串中的空格替换成“%20”。案例: 当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.思考题目 第一想法,直接用字符串的replace方法替换,即str.toString().replace(” “, “%20”);然后拿去验证,发现竟然验证通过了。本着精益求精的思想,想着可能人家想让我们自己实现repl

2017-08-23 16:20:14 199

原创 剑指offer(一)二维数组中的查找

题目是:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上往下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该函数。案例: 一个二维数组,每行、每列都是递增排序。 例如下面这个数组,如果查找数字7,则返回true,如果查找数组5,则返回false。 1 2 8 9 2 4 9 12 4 7 10 13 6 8

2017-08-23 12:12:47 219

原创 后台传输JSON或List<对象>,前台对应的解析方法

今天在前台展示信息的时候,直接从后台返回List,list是直接从数据库取出来的对象集合,前台用c:forEach循环的话正常显示,代码如下:<ul id="uldiv"> <c:forEach items='${userList }' var="user"> <li>用户名:${user.username }----密码:${user.password }----</li>

2017-08-15 15:16:38 3957

原创 Gradle4.0转换Spring源码为eclipse时出现的问题

最近受到老大影响,想看一下spring源码,于是从github上将源码clone下来,用Gradle去编译,然后导入eclipse分析。编译的时候,其他地方都很正常,但是spring-tx文件夹下编译的时候就一直出错,错误如下:* Where:Script 'D:\study\spring-framework\gradle\ide.gradle' line:24* What went wrong

2017-08-10 15:42:58 2215

原创 SpringBoot支持JSP页面跳转(基于Gradle)

在Controller中使用 @RestController 注解,该注解是spring 4.0引入的,其包含了 @Controller 和 @ResponseBody 注解。我们可以理解为 @Controller的增强版。专门为响应内容式的 Controller 而设计的,可以直接响应对象为JSON。 而 @Controller 用来响应页面,spring-boot 支持多种模版引擎包括:

2017-08-09 13:50:44 2177 1

原创 SpringBoot连接SQLite数据库(基于Spring-Data-Jpa和Gradle配置)

最近学习SpringBoot,但是电脑没办法装Mysql,所以想着用SQLite来作为数据库,下面简单介绍一下配置。 - 先配置gradlecompile 'org.springframework.boot:spring-boot-starter-web', 'org.springframework.boot:spring-boot-starter-data-jpa',

2017-08-08 14:07:14 11811 1

翻译 数据库范式介绍

今天面试题目里面让罗列数据库的范式,并且简单介绍一下,但是因为学习范式过去太久,平时设计数据库虽然有这种思想,但是却没有刻意去分清概念,现在简单介绍一下。范式(NF):按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。实际上可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。数据库范式也分为1NF,2NF,3NF,BCNF,4N

2017-07-18 00:33:05 360

原创 完全二叉树遍历

完全二叉树的三种遍历:前序遍历:根 — 左子树 — 右子树中序遍历:左子树 — 根 — 右子树后序遍历:左子树 — 右子树 — 根import java.util.LinkedList;import java.util.List;public class BTreeTraverse { private static List<Node> list = new LinkedList

2017-07-16 23:17:49 941

原创 单向链表的构造

public class LinkList { private Node headNode; public void createLinked( int[] a ){ Node tailNode = new Node();//上一节点 headNode = tailNode;//第一个节点是当前结点 Node newNode;//当前节点

2017-07-16 22:32:33 211

原创 算法之插入排序

平均时间复杂度:O(n2)空间复杂度:O(1) (用于记录需要插入的数据)稳定性:稳定import java.util.Arrays;public class Test { public static void main(String[] args) { Integer[] arr = {3, 5, 2, 8, 9, 10}; arr = Test.sort(a

2017-07-13 22:59:19 159

原创 Linux命令账号(用户、用户组)控制(五)

基于账号的访问控制基于账户身份对资源访问进行控制 账户类别:用户账户、组账户识别方式:UID、GID用户账号 超级用户root、系统用户、普通用户组账号(组账号用来区分权限,不用于登录) 基本组(私有组)附加组(公共组)账号的存放类别账号数据的存放 存储在本机磁盘中(本地账户)存储在网络上的专门的服务器(网络账户)本地账户的数据文件 /etc/paawd、/etc/sha

2017-07-12 17:15:28 511

原创 Linux命令yum及源码安装(四)

yum 命令工具查看软件列表 格式:yum list [软件名].. ..示例代码:#yum list(列出所有包,会显示已安装的包和可用的包)检索软件及相关信息 用法:yum search 关键词(查找关键词)yum info [软件名]…(查看软件的描述)yum provides 文档路径…(查看那些软件能提供该文件)示例代码:#yum search httpd#yum i

2017-07-12 14:07:12 438

原创 Linux命令vi、vim及rpm安装(三)

vi与vim编辑器vi:Virsual Interface(Linux/Unix中默认的文本编辑器,许多程序的编辑功能会调用vi)vim:Vi Improved(vi编辑器的增强版本,语法高亮等扩展功能)格式:#vim filename开始编辑操作:i:在光标所在字符前插入a:在光标所在字符后插入o:在光标所在行的下面另起一新行插入s:删除光标所在的字符并开始插入I:在光标所在行的行首

2017-07-12 11:36:06 6345

原创 Linux命令行阅读、统计、检索、(解)压缩、查找(二)

阅读文本内容cat:查看全部 格式:cat [选项]… 文件名… -n:在每一行(含空行)前显示行号more:阅读 格式:more [选项] 文件名… 按Enter键下翻一行、空格键下翻一屏 按b向上翻一屏 按q或Q键退出、/键向后查找 按?键了解操作说明less阅读(较好) less [选项] 文件名… 按PgUp向前翻页、PgDn向后翻页 按?键向前、按/键向后

2017-07-12 08:50:43 515

原创 Linux命令基础操作(一)

控制台界面转换各种Linux版本一般有7个界面,其中1个是图形界面,6个是控制台界面(输命令)。编号为tty1~tty7图形界面<->字符终端 : Ctrl + Alt + Fn(n代表1234567)主提示符-[当前用户@主机名 工作目录]#辅助提示符- root用户(管理员)登录后,该提示符为“#”[root@localhost ~]#- 普通用户登录后,该提示符为“$”[root

2017-07-11 12:01:12 399

翻译 request获取当前应用的根路径

String basePath = request.getScheme()+"://"+request.getServerName() +":"+request.getServerPort()+request.getContextPath()+ "/"; request.getScheme() 返回协议的名称 http,和后面的”://” 拼起来就成了 http://request.get

2017-06-30 15:44:22 2113

Bootstrap3.3.6的后台主题UI框架

Bootstrap3.3.6的后台主题UI框架

2017-08-30

metronic_1.5.5_bootstrap3.0.3 源码页面展示全部

metronic_1.5.5_bootstrap3.0.3 源码、页面展示、css、js等全部

2017-08-18

shiro教程书籍

shiro的一本书籍教程

2017-08-16

空空如也

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

TA关注的人

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