自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring+Mybatis应对代码扫描SQL注入问题

Spring+Mybatis应对代码扫描SQL注入问题在一些代码安全扫描中,经常会出现难以处理的“SQL注入”漏洞,也就是在Mybatis的Mapper中使用了${},这些地方无法轻易改为#{},例如需要动态决定查询的表名。那么我们应该如何应对这种棘手的情况呢?首先,我们做一个假设,扫描软件只能识别$。在这种情况下,我们可以考虑改变Mapper中的占位符,比如改为@{}。这样,我们只需要在SQL语句被实际执行前,把写在代码里的@替换成$就行了,功能不会受影响,且扫描软件无法发现。直接上代码:@C

2021-09-03 16:30:53 1918 1

原创 SpringBoot自定义Filter无法获取shiro session

SpringBoot自定义Filter无法获取shiro session最近在配置自定义filter时发现了一个问题:无法获取session。简单debug了一下发现shiro filter总是在filter链的最后,而我们知道如果要使用shiro session,必须要在shiro filter执行之后才行。为什么shiro filter总是在filter链最后呢?进一步debug发现,当我们通过ShiroFilterFactoryBean配置shiro filter时,最终实际装配到Spring

2021-04-10 09:20:05 905 2

翻译 java.util.concurrent.locks.AbstractQueuedSynchronizer介绍(Javadoc翻译)

提供一个实现阻塞锁和基于先进先出等待队列的同步器(信号量,事件等等)的框架。这个类被设计出来作为大多数同步器的基类,这些同步器依靠一个单一的原子int值来代表状态。//volatile int 或 AtomicInteger。子类必须定义一个protected的方法来改变这个状态,以及定义这个状态在获取和释放此类的对象时的意义。//获取和释放锁时state值是多少。基于这些,此类中的其他方法实现所有排队和阻塞的机制。子类可以维护其他的状态字段,但只有那个原子int值被用于同步,这个值通过getState,s

2020-08-05 17:11:46 2716

翻译 java.nio.channels.Selector介绍(Javadoc翻译)

Selector是多个SelectableChannel对象的多路复用器。//一个Selector对应多个SelectableChannel。Selector对象可以通过调用Selector.open()方法创建,这将会使用系统默认的SelectorProvider来创建一个新的Selector。Selector对象也可以通过调用(自定义的SelectorProvider对象的)openSelector()方法创建。Selector会一直保持打开状态直到通过调用close()方法关闭它。一个Select

2020-08-04 12:17:46 580

原创 Javascript中Uint8Array转base64字符串

直接上代码function arrayBufferToBase64(array) { array = new Uint8Array(array); var length = array.byteLength; var table = ['A','B','C','D','E','F','G','H', 'I','J','K','L','M','N','O','P',

2020-07-17 15:04:24 3108 4

原创 Spring容器刷新之obtainFreshBeanFactory

obtainFreshBeanFactory是容器刷新的第二步,主要是刷新beanfactory,然后返回beanfactory。 protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { refreshBeanFactory(); //模版方法,子类实现 return getBeanFactory(); ...

2020-04-19 01:30:39 195

原创 Spring容器刷新之prepareRefresh

prepareRefresh是容器刷新的第一步,过程比较简单,直接看中文注释。 protected void prepareRefresh() { // Switch to active. this.startupDate = System.currentTimeMillis(); //记录启动时间 //设置启动标志 this.closed.set(false); this...

2020-04-18 22:45:18 172

原创 Spring容器刷新之invokeBeanFactoryPostProcessors

invokeBeanFactoryPostProcessors是容器刷新的第五步,其作用就是创建已注册的BeanFactoryPostProceessor并执行他们的postProcess处理方法。这一过程的核心方法就是PostProcessorRegistrationDelegate类的静态方法invokeBeanFactoryPostProcessors(ConfigurableListabl...

2020-04-03 02:11:59 183

原创 Java内部类的弟弟行为

public OutterClass { public int a = new InnerClass().a; private class InnerClass { private int a = 3; private InnerClass(){} } private class InnerClass2 { private int a2 = new In...

2019-05-14 09:10:55 129

原创 Java8对lambda进行强制类型转换的技巧

今天在看Java8里Map的源码时发现了一个从没见过的写法public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K, V>> comparingByKey() { return (Comparator<Map.Entry<K, V>&...

2019-05-07 23:22:36 1013

原创 bootstrap模态框闪退,原因竟是......

bootstrap模态框闪退神坑如果你的触发器是一个button,而且这个button在一个form中,你一定要手动指定button的type=“button”,否则默认是"submit",点一下你的表单就提交了,页面刷新,你的模态框自然就闪退了。...

2019-03-27 17:04:16 972

原创 四位吸血鬼数

四位吸血鬼数算法题目来自《Thinking in Java》第四版,第四章最后一道练习题。下面是我的代码:public static void main(String args[]) { long t1 = System.currentTimeMillis(); int number = 0; int[] combo = new int[4]; left: for(i...

2018-10-25 11:46:04 350

空空如也

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

TA关注的人

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