自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ascend2015的博客

不会写代码的化学狗不是好的韭菜

  • 博客(146)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 Double.MIN_VALUE踩的一个坑

这里在输入的数据都是正数的情况下,是没有问题的,但在有负数的情况下就不对。它是2^-1074,是个大于0的值,但随手实现这个方法时没多想,埋了个坑。原因在于Double.MIN_VALUE。

2023-03-24 15:11:36 293 1

原创 PDF box 结合POI 将pdf转为PPT

将PDF转为图片,将图片插入每一页PPT上,保持原尺寸和比例。

2022-12-08 15:53:00 535

原创 正则表达式替换Nth个匹配项

正则表达式提取第N个匹配项

2022-11-03 17:19:11 202

原创 使用 feign.RequestInterceptor 进行认证操作

老外是这么说的:意思就是当使用Feign客户端进行服务之间的交互时,可以使用来修改请求的相关信息,比如Header。

2022-08-23 16:57:41 679

原创 Java GC(2)—— G1垃圾收集器

Garbage First(简称G1)收集器可以称为垃圾收集器技术史上里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。Oracle在Jdk7时就将G1收集器作为了hotspot虚拟机的一项重要特征,但直到数年以后的Jdk7 Upate4才移除了实验性标志;此后又经过了一些迭代,到Jdk8 Update40时,G1提供并发的类卸载的支持,补全了计划功能的最后一块拼图,在这之后,G1才称得上是全功能的垃圾收集器。G1的最初目标是取代Jdk5 中发布的CMS收集器,现在已

2022-06-19 01:55:34 298

原创 PageHelper滥用导致的分页异常

我们在判断无需从数据库取数时,使用了去构造了空页对象,然后引发了一些明明无需分页的查询,却意外被分页的问题。使用后存放在ThreadLocal中没有被PageInterceptor拦截到,并正常消费,分页参数被保存在线程中,当这个线程被再次调用时,就触发了分页。以下是相应的源码PageHelper是继承自上述PageMethod的。...

2022-06-16 11:24:52 618

原创 Java GC(1)—— Java 经典垃圾收集器

Serial收集器是最基础、历史最悠久的收集器,在jdk1.3之前,也是新生代垃圾收集器的唯一选择。它是单线程工作的,且在垃圾收集期间需要暂停所有的用户线程,也称为“Stop The World”,简写为STW,这个动作由虚拟机自行发起,在用户不可知、不可控的情况下,每工作一段时间就会暂停收集垃圾带来的就是并不友好的用户体验。运行流程示意图如下HotSpot虚拟机团队一直在为降低STW导致的停顿而努力,不断推陈出新,研发了许多新的收集器,比如Parallel、CMS、G1,越来越优秀、越来越复杂,虽然仍然不

2022-06-01 02:13:43 291

原创 Spring Boot与Caffine/Redis 缓存的整合

1.Caffine本地缓存技术Caffine是一个借鉴了Guava Cache思想优化了算法而来的。1.1Caffine Cache在算法上的优点我们常见的缓存淘汰策略有:FIFO,LRU,LFU。他们的命中率是按序递增的,同时实现成本也是随着增加,Guava封装实现了这些策略,但并没有改进他们的缺陷:FIFO:先进缓存的会被淘汰,最终导致命中率低。LRU:最近最少使用,每次访问数据都会将其放到队尾,如果需要淘汰,则淘汰队首元素。带来的问题是,如果有一个高频热点数据近期没有访问,而是新来的数据被

2022-05-24 21:06:07 2952

原创 Spring异步线程池配置与使用

在当前开发的数据分析平台中经常会涉及到较大数据集的上传与下载,由于数据处理的业务耗时较长,因此可能会导致请求超时,即使请求成功,长时间的等待也不利于用户体验。这种情况可以考虑异步处理,Spring为我们实现了十分便利的支持,使用@EnableAsync即可使用异步方法执行功能,使用@Async即可开启一个线程任务。Spring会搜索上下文中唯一的TaskExecutor实例,或一个名为taskExecutor的...

2022-03-09 19:14:21 2237 1

原创 Java包装类型的比较

首先看一道题,Double d1 = 100.0;Double d2 = 100.0;Double d3 = 200.0;Double d4 = 200.0;System.out.println(d1==d2);System.out.println(d3==d4);问输出的内容是什么?我开始觉得都是true可惜答案,都是false错的一塌糊涂在Java1.5以后,就有了...

2020-03-26 15:04:00 362

原创 TCP三次握手与四次挥手

1.TCP报文的首部格式共32位,包含:1.序号:用于对字节流进行编号,例如序号为x,表示第一个字节的编号为x,如果携带的数据长度为100,那么下一个序号应当是x+100;2.确认号:期望收到的下一个报文段的序号,例如,收到一个报文段,它的序号是y,长度为100,那么下一个期望收到的序号就是y+100,那么这个确认号就是y+100;3.数据偏移:指报文的数据部分距离报文的起始位置的长度,也...

2020-03-04 15:04:42 162

原创 300.最长上升子序列

给定一个无序的整数数组,找出其中最长上升子序列的长度。解题思路:状态定义:dp[i]表示截至nums的第i个元素时的最长上升子序列的长度。转移方程:设j∈[0,i),考虑每一轮计算dp[i]时,遍历[0,i)区间,做以下判断:1.当nums[i]>nums[j],此时nums[i]可以置于nums[j]之后,此时最长上升子序列的长度为dp[j]+1;2.当nums[i]&...

2020-02-01 21:29:55 229

原创 Java的日期格式引发的BUG

我在用SimpleDateFormat时,年份一直习惯用"yyyy",在上上周跨年的一周,突然有个小伙伴发现他的代码输出的日期年份莫名奇妙的+1了,2019-12-31变成了2020-12-31,并且表示,之前都是正常的啊,为毛突然就多了一年。看了一下,嗯,这货所有的年份用的都是"YYYY",而这个pattern表示的本周所在的年份,那么上上周的结束周六是2020年1月4日,所在的年份显而易见是...

2020-01-16 10:56:49 812 1

原创 破坏事务原子性、一致性的问题

复盘了一下上周写的代码,没注意的情况下在Controller中调用了Service的多个DML操作,这就是妥妥的数据不安全的操作。我们在Service层配置的事务的隔离级别统一为DEFAULT,传播机制为REQUIRED,也就是说支持当前事务,如果当前没有事务,则开启新的事务。而由于Controller层并没有事务控制,在该层执行多个DML操作,如果其中有部分操作失败了,就会导致事务的原子性遭到...

2020-01-10 14:33:08 794

原创 ClassNotFoundException和NoClassDefFoundError的区别

不知道现在有没有和敝司一样,每次的发版是将本次更改过的代码编译后,将class文件打包到一个压缩包中去替换线上文件的,然后我经常会漏掉文件,也挺无语的这次到测试环境,项目一启动,功能测试到某个模块,报了个NoClassDefFoundError行吧,就说说ClassNotFoundException和NoClassDefFoundError的区别吧先看看这俩的定义ClassNotFound...

2020-01-05 21:05:33 150

原创 JavaWeb项目IDEA启动后OutOfMemoryError: PermGen space错误

IDEA针对Tomcat的JVM参数设置碰到个问题,项目启动后一直有OutOfMemoryError: PermGen space错误,这个问题第一反应改IDEA的VM Options,没用,然后去改了Tomcat的Catalina.bat中的JAVA_OPTS,依然没有卵用,最后才直接去改了右上角edit Configuration中的VM options,解决。...

2020-01-03 15:21:36 469

原创 Webpack综述

WebPack是一个现代Js应用的静态模块打包器,使用Webpack处理应用时,它会递归地构建一个依赖关系图,其中包含了应用所需的各个模块,并将这些模块打包为一个或多个bundle。Webpack有四个核心概念入口(Entry)输出(Output)Loader插件(Plugins)入口它负责指示Webpack使用哪个模块作为构建内部依赖图的起始点,进入起点后,Webpack会找出...

2019-12-31 15:08:58 161 1

原创 Oracle内建函数小结

这不是一篇格式规整、逻辑严谨、内容引人致胜的博客,只是工作中碰到的博主自己认为常用且值得一记的随手笔记。1.ROW_NUMBER()用来标注行号,用法如下SELECT ROW_NUMBER() OVER(PARTITION BY T.PARTITION_FIELD ORDER BY T.SORT_FIELD) RN, T.OTHER_FIELD1, T.OTHER_FIELD2 F...

2019-11-04 10:28:09 195

原创 Java设计模式学习笔记(四)——结构型模式

2.3 结构型模式2.3.1 适配器模式定义:适配器模式就是把一个类的接口转化为用户期待的另一个接口,从而使得原本因接口不一致无法一起工作的两个类能够一起工作。可以分为类结构型模式和对象结构型模式应用场景:系统需要使用现有的类,但此类的接口不符合系统的规范;想建立一个可以重复使用的类,使它能够和一些彼此之间没有多大关系的类、以及一些在将来可能引入的类协同工作,而这些类不一定有一致接口;...

2019-09-09 09:55:51 150

转载 倒排索引——搜索引擎原理

这是一篇copy 的文章就不标原创了1)基本概念文档泛指一切以文本形式存在的存储对象,包括html、xml、word、pdf等等。文档集合多个文档组成的集合。文档编号在搜索引擎内部,为文档集合中的每个文档赋予的内部唯一编号,并以此作为唯一标识。单词编号在搜索引擎内部,为单词赋予的唯一表征。倒排索引一种单词-文档矩阵的具体实现形式,通过倒排索引,可以根据单词快速地定位包含单词的...

2019-08-09 13:48:18 429

原创 基于HashMap和双向链表的LRU缓存

public class LRU<K, V> implements Iterable<K> { private Node head; private Node tail; private HashMap<K, Node> map; private int maxSize; private class Node { ...

2019-07-22 11:00:08 299

原创 Oracle 存储过程语法及使用

写在前面本来这种东西作为一个写Java的我以为应该是基本用不上的,以前基本就是听过而已的一个概念,但是实际接到的一个需求就是需要数据库去定期执行存储过程,本着打好基础的目的,还是稍微学习了一下,本篇并不学术、系统、严谨,就是随笔写个使用经验防遗忘。Oracle存储过程的基本语法create [or replace] procedure 过程名( p1 in|out datatype, ...

2019-07-10 17:40:09 2341

原创 子数组的和的差值最小

这个问题是泛微面经的评论里一个老哥碰到的,对于我这种算法彩笔来说还是写写记下来的好。题目数组中的数分为两组,给出一个算法,使得两个组的和的差的绝对值最小。数组中的数的取值范围是0<x<100,元素个数也是大于0,小于100比如a[]={2,4,5,6,7},得出的两组数{2,4,,6}和{5,7},abs(sum(a1)-sum(a2))=0;比如{2,5,6,10},abs(...

2019-06-03 00:11:45 1293

原创 LeetCode动态规划(困难)

32.给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()" //对字符串遍历,进行括弧有效性验证,记录最大的有效长度。同样的方式,倒序再来一次,取最大值 //多读几遍源码总能懂的 ...

2019-05-10 13:51:53 515

原创 LeetCode动态规划(中等难度)

这两题是求二叉树数目的package com.coding.leetcode;import java.util.List;import java.util.ArrayList;import com.coding.adt.*;public class LeetCodeSolution{ /** * 不同的二叉树1: * 思路:假设n个结点存在二叉排序树的个数死...

2019-04-29 15:20:27 574

原创 MySQL索引的问题

关于B树、B+树我们都知道数据库的索引是基于B树、B+树这样的数据结构,这里并不打算就树的数据结构展开说,我也是一直看一直忘。引用一篇文章B树与B+树,有兴趣的自行了解吧。MySQL的存储引擎和索引顺序查找在实际工程中的时间复杂度O(N)是不能容忍的,这是索引产生的原因。如果表中只有一个字段,在这个字段上建立主键,我们可以很轻松地脑补出这个字段关键字存储在B+树上的每个结点。但是如果是多字段...

2019-04-18 16:37:18 162

转载 MySQL的优化(一)

原文:mysql36条军规核心规则1.尽量不在数据库中做运算。2.控制单表数据量:INT不超过1000W条,含CHAR不超过500W条。合理分表分库。3.保持表的精简:字段数应少而精。4.平衡范式与冗余:遵循三大范式。适当时也可以牺牲范式,增加冗余。5.拒绝3B:Big SQL,Big Transaction,Big batch——大SQL,大事务,大批量。字段类规则1.用好数值字...

2019-04-16 17:14:34 142

原创 leetcode基础题——设计问题

这类主要是会用到基础的数据结构,考察的是对基础数据结构的掌握程度和灵活使用。1. Shuffle an array随机打乱一个没有重复元素的数组这里我们遍历数组,然后将第i个元素与i+1前的任意元素交换位置。/*** */package leetcode;import java.util.Random;public class ShuffleSolution { p...

2019-03-17 22:39:14 313

原创 LeetCode动态规划(简单)

1.1 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1...

2019-03-13 00:04:31 211

原创 Jquery单键选择文件ajax方式上传

业务中碰到的需求,一个按钮,然后选择文件上传&lt;form id="fileUploadForm" enctype="multipart/form-data"&gt; &lt;input type="file" name="fileUpload" id="fileUpload" style="display:none" multiple="multi

2019-03-11 18:07:17 748

原创 Response返回PDF页面

这个需求出奇地简单,当然需要在服务器端事先准备好PDF,然后response.setContentType("appliacation/pdf");//服务器PDF所在位置,无所谓的,你爱放哪儿放哪儿,这边我是在项目里,用的相对路径String realPath=request.getRealPath(PDF_PATH);InputStream in=new FileInputStream...

2019-03-11 16:55:50 4294 3

原创 剑指Offer试题——Java实现(四)

4.1 在不使用±*/的条件下,计算两个整数相加这里考察的就是对位运算的掌握情况public static int addWithoutOperator(int num1,int num2){ while(num2!=0){ //计算个位 int tmp=num1^num2; //计算进位 num2=(num1&amp;amp;amp;amp;num2)&amp;amp;amp;lt;&amp;amp;amp;lt;1; num1=tmp;

2019-03-06 15:01:03 142

原创 LeetCode基础题——字符串篇

一共也是10题,时间关系,先上4题,明天再补package leetcode;public class StringProblems { public static void reverseString(char[] s) { int len = s.length; for (int i = 1; i &amp;amp;lt;= s.length / 2; i++)...

2019-03-05 23:33:33 237

原创 LeetCode基础题——数组篇

package leetcode;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class BasicalAlgrithm { /** * 去除数组中重复元素,返回新数组大小 */ public static i...

2019-03-03 22:41:23 258

原创 为什么单线程的redis如此之快

Redis作为一种性能优越的KV缓存服务器被广泛使用在各种后端项目中,在校招的面试题中存在感也特别高,Redis是高频问题。作为一只菜鸡,我知道的仅仅是:它的快是因为将数据存储在了内存中。然后就陷入和面试官互相注视的尴尬处境中,其实我们心中都明白这仅仅是Redis卓越性能原因的一小部分。几个月后的今天,作为一个看过很多大佬文章的菜鸡,我决定把大佬的东西复读一遍。Redis性能之所以如此之高,得益...

2019-03-01 17:10:55 188

原创 算法思想(一)——动态规划基础

一直觉得无论是背多少遍排序,背多少leetcode的题目,都是舍本逐末的,这些是术不是道,算法思想才是根本,但是所谓的普遍规律在教材上通常都是抽象和晦涩的,算法思想给我的感觉也是如此,《算法导论》里用来描述它的语言十分地生涩,可是如果希望以后在遇到算法笔试或者是面试手撕算法题时不再无从下手,也只能硬着头皮上了。本篇讨论动态规划的概念性问题。动态规划基础最优子结构1.什么时候用算法导论种介绍...

2019-02-26 23:36:43 441

原创 Java数据结构之二叉平衡树

首先二叉平衡树依然是一课二叉搜索树,关于二叉搜索树以及其平均查找时间的分析,可以见关于二叉查找树的平均查找时间的问题这一篇。我可能写得不太好,所以最好还是参考一些教材,教材的描述通常会更为严谨,博客比较适合临阵磨枪。通常我们认为二叉搜索树的平均查找时间为O(logN),但不排除极端状况下二叉查找树会成为链表,那么此时,查找时间就会上升到O(N),这有悖于我们使用二叉查找树的初衷,好在我们遭遇到的问...

2019-02-20 16:07:05 637

原创 剑指offer试题——Java实现(三)

非递归方式实现求解斐波那契数列第n个元素public int fib1(int n){ int result=0; int preOne=1; int preTwo=0; if(n==0) return result; if(n==1) return preOne; for(int i=0;i&amp;amp;lt;n;i++){ result=preOne+preTwo; preT...

2019-02-18 17:35:57 147

原创 Java数据结构之红黑树

红黑树首先是一个平衡二叉树,但是它不是完美的平衡二叉树。让一棵二叉查找树在动态插入的过程中保持平衡需要的代价比较高,红黑树是为此产生的。1. 红黑树的性质每个节点只能是红色或者是黑色;根节点必须是黑色;每个叶子节点是黑色,注意,这里叶子节点指末端空节点;如果一个节点是红色,那么它的子节点必然是黑色,这意味着不存在两个连续的红色节点;从一个节点到该节点的子孙节点的所有路径上包含相同数量...

2019-02-15 17:08:38 498

原创 剑指offer试题——Java实现(二)

2 二叉树篇2.1 判断二叉树2是否是二叉树1的子树public class TreeTest{ public boolean hasSubTree(TreeNode root1,TreeNode root2){ boolean result=false; if(root1!=null&amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;root2!=null){ if(root1.data==root2.da...

2019-02-11 17:30:58 157

spring-IOC教程

来自极客学院平台的springIoc文档

2017-08-21

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

TA关注的人

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