- 博客(49)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 简单的排序--冒泡、选择、插入
版权声明:尊重博主原创文章,转载请注明出处引言对数据进行排序是经常需要做的事情,下面介绍三种简单的排序。这三个算法都包含如下步骤,这两步循环执行,直到数据全部有序为止:1.比较两个数据项。2.交换两个数据项,或复制其中一项。但是,每种算法具体实现的细节有所不同。每个方法都是一个排序算法。/** * @Description Sort 简单排序算法 时间复杂度都是O(n²) * @Autho...
2017-04-06 14:58:14
474
转载 windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
我的一个java程序偶尔会出现cpu占用很高的情况一直不知道什么原因今天终于抽时间解决了系统是win2003jvisualvm 和 jconsole貌似都只能看到总共占用的cpu 看不到每个线程分别占用的cpu呢所以在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了最后的解决方法:1.找到java进程对应的pid。找pi...
2019-12-23 21:42:49
227
原创 HashMap 底层 原理(JDK 1.8)
前言原来看过1.7的hashMap底层,1.8更新后也稍微看了一下,没有进行仔细的总结,今天总结一下1.8底层的原理。本文只讨论1.8的底层原理。以下全文为1.8版本的HashMap 数据结构对于HashMap的数据结构,是老生常谈了,面试的时候经常会被问道。底层数据结构为数组+链表+红黑树,存储的是Node节点,红黑树是TreeNode。进行put操作在进行put...
2019-12-03 20:29:05
295
原创 记录一次线程运用不当,Tomcat JVM崩溃产生hs_err_pid.log 解决过程
前言每次tomcat在客户服务器上运行一个多月左右的时候,都会崩溃。然后tomcat自动停止,生成hs_err_pid.log文件。说明因为在原来服务器上就出现了tomcat崩溃,也不知道因为什么原因崩溃,多长时间崩溃。而且也没注意有pid.log文件,只是进行重启操作。后来还跑过去换服务器,重新进行部署。但是还是会崩溃,这次注意到pid.log文件,然后进行分析,一直找不到解决的原因...
2019-12-03 20:27:16
5421
2
原创 SpringMVC 事务回滚机制
Spring事物中,由Spring来负责管理数据库的数据连接,@Transactional只有应用到public方法才会有效,因为在获取事务注解时,会调用AbstractFallbackTransactionAttributeSource的computeTransactionAttribute方法。private TransactionAttribute computeTransaction...
2019-11-29 17:49:41
1075
1
原创 CentOS7编译JDK8,JVM虚拟机
引言最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》,决定自己来进行编译OpenJDK。由于书中目前编译OpenJDK版本是7,已经与现在版本有点过时。我选择的OpenJDK版本为8(虽然目前JDK版本已经到11了0.0)。编译OpenJDK7和OpenJDK8有一些差异 ,需要注意一下。比如:OpenJDK8 已经没有make sanity。网络...
2019-07-24 23:24:29
1252
原创 springboot-jsp使用配置
准备学习SpringBoot,但是配置好项目后发现可以给前台传输json数据,就是不能跳转jsp页面,查找好多资料发现SpringBoot官网强烈不推荐使用jsp,但是可以使用jsp。官方文档:https://docs.spring.io/spring-boot/docs/1.5.5.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-te...
2018-07-20 16:58:19
4430
2
原创 (GET plus POST) for a single request ([10,000])----tomcat 大数据量提交问题
引言 tomcat 大数据量同时提交的时候,如果提交的数据超过1万条,会出现:16-Jul-2018 11:39:27.772 信息 [http-nio-8080-exec-7] org.apache.tomcat.util.http.Parameters.processParameters More than the maximum number of request parame...
2018-07-16 11:41:50
872
原创 spring boot 读取resources下文件 和 打成jar 读取jar包中配置文件
问题: 由于使用spring boot + maven 管理项目,所以会把项目打成jar包来进行运行。在不打成jar的情况下,正常情况一般都是读取绝对路径来进行获取配置文件路径。String url = SensitiveWordInit.class.getResource("/").getFile();File file = ResourceUtils.getFil...
2018-06-28 17:13:55
18355
原创 打印两个有序链表的公共部分
引言 打印两个有序链表的公共部分。给定的两个链表的头部head1和head2,打印出两个链表公共部分。思路 定义两个指针,分别指向两个链表的头结点,比较value值,谁小移动谁;相等打印并同时移动,任何一个节点下一个节点是null,程序结束。代码实现public class TwoLinkedCommon { public static class Node{ ...
2018-04-18 22:30:10
270
原创 判断链表是不是回文数
引言 判断链表是不是回文数。给定一个链表,判断是不是回文数,返回true或者false。思路 链表代码 public static class Node{ public int value; //值 public Node next; // 下一个节点 public Node(int value) { th...
2018-04-18 21:24:58
1005
1
原创 “之”字形打印矩阵
引用给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵。例如 1,8,6,7 2,6,4,11 3,5,9,10打印结果是1,8,2,3,6,6,7,4,5,9,11,10。要求额外空间复杂度是O(1)。思路 两个坐标进行记录,都从0,0点开始。一个往右移动,移动到最右往下移动;另一个往下移动,移动到最下往右移动,两个坐标...
2018-04-09 23:18:41
1933
6
原创 打印两个有序链表的公共部分
引言 给定两个链表,打印两个链表中的公共部分。思路 从两个链表的第一个节点的value值开始比较,谁小移动谁。如果相等就输出,并同时移动到下一个节点。代码public class TwoLinkedListSame { /** * 链表 */ public static class Node{ public int value; ...
2018-04-07 22:25:08
209
原创 在行列都排好序的矩阵中找数
引言 给定一个有N*M的整型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好序的。实现一个函数,判断K是否在matrix中。 返回true或false 时间复杂度为O(N+M),额外空间复杂度为O(1)。 有两种解决方案: 思路1:从右上或者左下开始找。从右上点开始,如果这个数比要找到K大,那么不用考虑左上点这一列的数,直接往左走。 ...
2018-04-07 22:17:32
466
原创 实现返回栈中最小的元素
引用 实现一个特殊栈,在实现栈的基本功能的基础上,再实现返回栈中最小的元素。 要求:1.pop、push、getMin操作的时间复杂度都是O(1) 2.设计的栈类型可以使用现成的栈结构 思路: 1.因为要求时间都是O(1)、所以有可能在删除后会出现找不到最小值问题 2.创建两个栈,一个data栈,一个min栈,data栈记...
2018-04-07 22:00:48
608
原创 堆排序
引言 堆可以看成是一棵树,定义堆的高度可以看成是树的高度。是一个平衡二叉树,根节点永远是最大的值。每个根的子节点有两个,左子节点是2*i+1,右子节点是2*i+2。每个子节点的父节点是(i-1)/2。子节点用于比父节点小。每次找到最大值,替换到后面,然后慢慢把数组排序好。 堆排序的时间复杂度是O(N*logN),额外空间复杂度是O(1),实现不能做到稳定性。代码public class...
2018-04-03 22:10:06
134
原创 桶---求无序数组排序后,最大的相邻差值
引言 无限长的无序数组 ,正负零都有可能。求出排序后最大的相邻的差值 时间复杂度O(N) 且要求不能用非基于比较的排序思路 1. 找出数组中的最大元素,分配最大元素+1个桶,对桶等分如一号桶(0-9)、二号桶(10-19)..... 2. 因为元素最大是N,所以准备了N+1个桶,所以肯定最小桶和最大桶肯定有数,中间有空桶 3. 如果两个非空桶中间有空桶,那...
2018-04-01 16:04:41
246
原创 桶---连续整数,找中间缺少的两个数
引言 现在有1-N个连续整数,顺序被打乱了,但中间少两个数,请找到这两个数思路 1.有1-N个连续数组,中间少两个数,那么就准备一个N+2的boolean类型的数组桶 2.把连续数组元素的作为桶的下坐标,把桶下坐标的值变为true 3.从1开始循环boolean桶,把元素false的下坐标找出来,就是缺少的数代码public class FindMissedNumber {...
2018-04-01 15:49:15
557
原创 快速排序(2) -- 快速排序
引言 在前面说过荷兰国旗问题,快速排序就是在荷兰国旗的问题,在进行分组。把前面小于区域再进行荷兰国旗一样的排序,把大于区域也进行荷兰国旗一样的排序。这样 就出来了快速排序。 经典快速排序是用数组最后一位做比较值,但是这样容易出现最好情况和最坏情况。最坏情况就是比如最后一个位元素比前面的值都大,例如数组:[0,2,4,6,7,9],这样会出现最坏的情况,时间复杂度是O(N²),每次都值排...
2018-03-28 13:25:52
393
1
原创 快速排序(1) -- 荷兰国旗问题
引言 在一个无序的随机大小数组中,把元素分成三部分存放,大于x放前面,等于x放中间,大于x放后面。不用管大于x或者小于x元素在数据中的顺序问题。这就是荷兰国旗问题吧。就是把一堆数随机分成三部分。 例如此图:选择最后一位数6来进行比较,比6小的放前面,比6大的放后面,6放在中间位置。默认以后不提。定义两个指针,小于区域less指针,大于区域moes指针,也可以说是小于区域和大于区域的边界...
2018-03-27 23:54:44
1799
4
原创 归并排序--小和问题(逆序对)
引言 求小和问题:在随机元素,随机数组大小的数组中,找出左边比右边元素小的所有元素之和。 例如:数组[4,2,5,1,7,3,6] 第一个元素4比2大,不算小和,5比4和2都大,那就是4+2=6;1比4和2和5都小,不算小和;7比前面的都大,那就是上次小和6+4+2+5+1=18;然后3前面比2和1大,那就是18+2+1=21;最后6比4、2、5、1、3都大,结果就是21+4+...
2018-03-26 00:02:49
3016
6
原创 排序算法--归并排序
引言 归并排序的时间复杂度是O(N*logN),额外空间复杂度是O(N),可以实现做的稳定性。 归并排序的思想是把一个数组分成两半,把每一半都分成两个四分之一,把每个四分之一部分分成八分之一,依次类推,反复的分割数组,直到得到的子数组是只有一个数据项。然后把两个只有一个数据进行比较。创建等于其数据项大小的数组,把数据按大小顺序拷贝到新创建的数组中,把新的数组中的数据按顺序再拷贝回到原数...
2018-03-25 21:54:07
218
原创 栈和队列数据存储类型---队列(简单了解)
引言 前面介绍了栈数据存储类型,下面接着介绍队列数据存储类型。队列和栈一样也被用作程序员的工具。队列也是一种数据结构,有点类似栈,只是在队列中第一个插入的数据项也会最先被移除,先进先出。队列的作用就像人们排队买东西,第一个排队的人对于后面的人来说就是队头,队伍最后一个人对于整个队伍来说就是队尾。 现实排队中,当前一个人买完东西离开队伍后,其他人都向前移动。但是在计算机中,虽然也可以删除...
2018-03-23 23:40:22
1160
原创 简单栈的两道例子
引言 两道关于栈的简单例子: 1.单词逆序 用栈进行单词逆序:输入一个字符串,然后输出原字符串顺序倒置后的字符串。 首先,字符串从输入的时候一个接一个的提取出来并且压入栈中。接着它们依次弹出栈,并显示出来。因为栈的后进先出的特性,所以字母的顺序就颠倒过来了。/** * @Description Reverse 栈单词逆序--栈 * @author whm...
2018-03-22 23:03:13
4636
原创 栈和队列数据存储类型---栈(简单了解)
引言 数组是前面介绍排序和二分查找用的数据存储结构,和后面要遇到学习的其他结构(链表、树等等)一样,都适合用于数据库应用中作数据记录。这些数据结构便于数据的访问:它们易于进行插入、删除和查找特点数据项的操作。 本篇讲的数据存储类型是栈、队列甚至优先级队列中---栈。这三种数据存储类型它们主要作为构思算法的辅助工具,而不是完全的数据存储工具。这些数据机构的生命周期比那些数据库类型的结构要...
2018-03-22 00:14:56
607
原创 经典数据查询--二分查找(简单有序数组的二分查找)
引言 博主最近正在学习算法相关知识,是一个初学者。从初学者的角度来进行了解什么是二分查找。 二分查找就相当于猜数游戏。我们小时候经常玩的猜数游戏中所用的方法一样。在这个游戏里,一个朋友会让你猜他正想的一个1至100之间的数。当你猜了一个数后,他会告诉你三种选择中的一个:你猜的比他想的大,或小,或猜中了。 所以为了能用最小的次数猜中,必须从50开始猜。如果他说你猜的太小,则推出哪个...
2018-03-20 23:50:47
2499
原创 reids学习---上
最近这段时间正在学习redis,因为redis实在linux上面弄得,所以顺便学习了一下linux,现在就是redis学习总结。一、下载在https://redis.io/上进行下载redis,看不懂可以google翻译一下。下载后会使***.tar.gz,比如redis-4.0.2.tar.gz。二、安装2.1 安装虚拟机由于用的是linux,所以用VMware Workstation Pro装...
2017-11-20 12:22:52
180
原创 Spring MVC 多图片上传 ajax form表单 参数 提交后台
Spring MVC 进行form表单提交,并且上传多个图片和参数。
2017-07-18 12:46:12
3829
1
转载 JavaScript总结
原文地址:http://www.jianshu.com/p/cc479554df66配图.jpg输入内容:document.write();例:document.write("I love JavaScript!");警告:alert消息对话框。例:function rec(){var mychar="I love Java
2017-02-23 11:47:01
206
转载 源码阅读步骤
原文地址:http://zwchen.iteye.com/blog/1154193源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。 说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,未必适合现在的你。 虽然Tomcat的源码很漂
2017-02-22 11:40:22
1119
转载 请不要做浮躁的人
请不要做浮躁的人1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得
2017-02-22 11:36:28
166
转载 Java代码块和包装类
根据定义方式有三种代码块形式局部代码块定义位置: 在方法体内定义特点: 生命周期即短使用场景: if和for等语句的代码块初始化代码块定义方式: 在类内但方法体外定义,不要static修饰本质: 初始化代码块的执行语句都移至构造器,被最先执行静态代码块定义方式: 定义在类中,用static修饰该代码块特点: 随着类字节
2017-02-22 10:42:50
336
转载 给Java程序猿们推荐一些值得一看的好书
“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料 2.对着书上的代码自己敲的时候方便 “看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书
2017-02-22 10:40:28
2054
4
转载 我是一个线程(修订版)
本文转自别人,特别感谢大神.....第一回 初生牛犊我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”我一脸懵懂,“包裹,什么包裹?”
2017-01-15 17:44:14
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人