自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 ThreadPoolExecutor-线程池的理解

1.再说线程池之前先了解下线程、用户级线程、内核级线程概念线程可以通过继承Thread,实现Runnable接口以及实现Callable接口来创建线程,它是比进程更小执行单位。 线程的生命周期和状态 用户级线程: 用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态切换,...

2019-11-18 10:25:46 315

原创 ThreadLocal理解

1.ThreadLocal的类层级结构2.ThreadLocal作用ThreadLocal修饰的变量:使得每个线程都拥有该变量的本地副本。(你有你的,我有我的,你修改你的并不会影响我的变量的值)3.ThreadLocal使用场景适用于高并发场景下,各个线程通过不同变量值完成操作的场景。4.源码解析set(T value) get() remove()...

2019-11-12 18:09:35 265

原创 volatile关键字理解

1.JMM层面 每个线程从主内存中读取数据,读入自己的本地工作内存进行相应的修改,每个线程的本地工作内存相互独立的。因此这就可能造成一个线程读取内存的数据进行的相应的修改,但是没有及时的写入内存,造成其他线程读取到过时的数据,因此有数据不一致性问题。为了解决这个问题,我们可以使用volatile来定义该变量。2.特性可见性:一个线程修改了全局变量的值以后,其他线程也可见。实现机制是通...

2019-11-11 10:53:36 221

原创 Java关键字-synchronized理解

1.作用及版本多线程环境下用来控制资源同步访问的,同步控制的代码块是原子操作。 JDK1.6以前的synchronized是一把重量级锁,监视器锁(monitor),当一个线程获取到锁之后,其他线程想要获取锁就必须等待,也就是其他线程是阻塞状态(Blocked)。当前线程获取到锁执行完之后释放锁,这时阻塞队列里面的线程会去竞争锁,竞争到锁的线程又继续执行。由于这个时候发生了线程切换,因此...

2019-11-08 17:28:07 165

原创 JDK1.8-ArrayList-add/get/remove 源码流程解析

1.add(E e)2.get(int index)3.remove(Object o)4.安全性:ArrayList由于没有加同步和任何的锁机制,因此不是线程安全的。可能出现数组越界或者脏读等问题。想要线程安全可以使用Vector。5. remove(Object o)和remove(int index)区别:remove(Object o)返回true/fals...

2019-11-07 15:55:18 241

原创 JDK1.8-HashMap get/remove 操作流程解析

1. get(Object key)注意:如果Node数组不空的话,它每次都会去取数组第一个元素,看该元素的key以及key生成的hashCode值是否和传过去的Object key以及key生成的hash值是否分别对应相等,如果是的话,直接返回Node数组第一个元素,返回其value值。否则根据上图往下走。2.remove(Object key)...

2019-11-04 22:13:02 322

原创 JDK1.8-HashMap-Put操作源码流程解析

1.Put 操作流程图2.当put操作发生hash冲突的时候,会用拉链法解决冲突。但是如果在同一内存地址冲突的数据超过8个时,并且这个时候Node数组的容量大于等于64,那么这个时候再在该位置添加元素会把单链表变成双向链表最后再转换成红黑树来进行存储数据。采用红黑树存储数据目的是在该冲突的地址查询数据的时候能够更快,提高查询效率。存储结构转换图:3.红黑树为了保证其特定,在插入元...

2019-11-03 21:51:37 723

原创 JDK1.8-ReentrantLock.lockInterruptibly流程分析

1.ReentrantLock.lockInterruptibly流程图2. 注意该方法说明ReentrantLock是可中断锁,被中断后可以调用某个线程的是否中断方法(t1.isInterrupted)来确认该线程是否被中断。3.线程被中断后会报InterruptedException,我们可以捕获该异常,之后再做相应的业务逻辑处理。...

2019-10-22 15:50:07 185

原创 JDK1.8-ReentrantLock解锁过程

ReentrantLock解锁流程图实例代码package com.sap.leo.test;import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader;import jdk.nashorn.internal.ir.Block;import java.util.concurrent....

2019-10-22 09:27:20 470

原创 JDK1.8-ReenrantLock 加锁过程

ReenrantLock 加锁过程流程图以及AQS队列入队情况2.公平锁与非公平锁区别非公平锁: 当锁释放的时候,获取锁的线程会和队列中第一个线程竞争锁资源,但是已经在队列中的线程还是按照先进先出的顺序去获取锁。 公平锁: 当锁释放的时候,队列中第一个线程会去获取锁资源。3.队列中元素如何出队?当t1释放资源,t2如果获取到锁,那么会把t2之前结点的指针都断开,让GC回收该结点...

2019-10-21 16:37:44 668

原创 Java-伪代码实现一把锁

1.多线程情况下自己手动模拟实现一把锁(伪代码)Version1.0:自旋 volatile int status = 0; //是否有线程获取到锁,0表示没有//主业务流程public static void testSync(){ thread.lock(); //当前线程尝试获取锁 ... //获取到锁之后处理业务逻辑 thread.unlock(); //...

2019-10-17 15:12:10 534

原创 创建Entity,由于级联关系导致显示的时候会有n层嵌套问题

1.问题现象CustomerAttribute和CustomerAttributeText表,是1对N的关系,在保存CustomerAttribute的时候,把保存的结果返回给前台,会出现n层嵌套的问题。2.原因:级联导致3.解决方案:返回的数据不要直接返回CustomerAttribute,用dto去接,这样就没有级联n层问题...

2019-09-03 10:40:41 205

原创 删除表提示:外键关联错误解决

1.有两张表CustomerAttribute,CustomerAttributeTextCustomerAttribute结构:GUID(主键),Name,DataType,Code. CustomerAttributeText结构:GUID(主键),AttributeGuid(CustomerAttribute主键),Language,Name2.直接用sql语句删除CustomerA...

2019-09-03 10:35:50 933

原创 通过反射获取Entity的数据

应用场景:有些时候SQL比较难拼接(比如说:不确定通过哪个字段获取数据),这个时候我们可以利用java反射来获取数据1.Entity 实体类:@Entity@Table(name = EntitlementDbConstants.CUSTOMER_MASTER_DATA_VIEW)public abstract class CustomerMasterDataView{ p...

2019-09-02 13:41:40 1481

转载 Spring Data Jpa @Version字段理解

Reference:https://blog.csdn.net/topdeveloperr/article/details/86496113https://juejin.im/post/5b55b842f265da0f9e589e79#comment

2019-08-14 17:37:44 1381

转载 重写equals为何要重写hashCode方法

参考:https://blog.csdn.net/We_chuan/article/details/96426273

2019-07-30 15:22:10 98

转载 类锁、对象锁、多个线程一个锁、多个线程多个锁理解

原文参考:https://blog.csdn.net/qiushisoftware/article/details/79103702

2019-06-13 16:39:25 287

原创 SimpleDateFormat 全局变量在多线程环境中会出现线程安全问题

1.代码片段/** * Project Name:JVM * File Name:TestLeo.java * Description: TODO * Copyright: Copyright (c) 2017 * Company:SAP * * @author SAP * @date May 17, 2019 11:28:44 AM * @version *...

2019-05-20 17:56:01 850

原创 生成Excel,处理CSV Injection

1.问题原因:我们在界面填写好数据之后并生成excel,如果数据中是以"=+-@"开头,那么在我们Excel里面显示的时候会出现CSV Injection问题。2.如何解决:2.1解决思路:首先生成Excel的workbook,之后再遍历这个workbook,如果遇到以这些特殊字符开头的数据,那么把这些数据拿到之后,在其前面加一个TAB键。3.核心代码:import org.apa...

2019-05-07 15:40:35 1855 1

原创 Java_多线程模拟死锁过程

1.需求:通过Java程序来模拟死锁过程,之后通过Jconsole和Jstack分析死锁原因新起两个线程,互相拿着一个零界资源不放,并且又在请求一个新的资源,DeadLock1拿着obj1,想要obj2,DeadLock1拿着obj2,想要obj1,进而造成死锁。2.程序代碼/** * Project Name:JVM * File Name:JconsoleTest.jav...

2019-04-06 12:16:02 405

原创 Java-正则表达式:匹配特定字符开头,数字结尾的任一字符串

1.需求:通过正则表达式去匹配特定字符开头,数字结尾的字符串我这里去匹配字符"+,-,@,="开头,数字结尾的字符串2.代码public class Test_Leo{ public static void main(String[] args) { String data = "=calc|A!Z 666"; Pattern pa...

2019-04-03 17:16:49 47908 1

原创 创建Excel,解析Excel,处理CSV Injection

1.使用Apache POI创建和解析ExcelMaven依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <groupId>org.apache.poi</groupId> <artifactId>po...

2019-04-02 17:08:30 840

原创 使用Apache POI解析excel

1.使用Apache POI解析excel,包括.xls和.xlsxApache POI 针对Workbook有两种不同实现方式,分别是HSSFWorkbook(解析.xls文件)和XSSFWorkbook(解析.xlsx文件)2.Maven依赖:<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->...

2019-04-02 12:30:18 1092

原创 防止XSS Attack攻击的解决方案

需求:1.防止用户RequestBody里面数据包含XSS Attack代码2.防止用户RequestURL地址中包含XSS Attack代码解决方案及思路:1.写个拦截器拦截用户请求,之后正则表达式去过滤RequestBody和RequestURL部分包含恶意攻击的代码。2.具体代码如下/** * Project Name: * File Name:Securi...

2019-03-21 17:35:00 2316

转载 对集合里面Dto进行排序

对集合里面的Dto进行排序原文转载自:https://blog.csdn.net/xiaofei__/article/details/53138681

2019-01-03 16:01:54 992

原创 mockito when void throw exception

1、执行一个void的方法进行mock并抛异常:doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);eg: doNothing().when(validateSaveOrUpdate).validatePartiallyUpdate(anyObject());        verify(validateSa...

2018-03-15 15:55:05 4029

原创 Neon4.6 处理Groovy-Eclipse 插件安装不成功问题解决办法

问题:1)org.codeehaus.groovy.eclipse.2.6.1.xx-20120301-1300-e36-RELEASE is unknown in the solver! 2)"JDT Core patch for Groovy-Eclipse plugin on Eclipse 4.5" is not applicable to the current configur

2018-02-07 14:07:44 1012

转载 Spring 注解@Transaction

@Transaction注解

2018-02-07 10:18:23 392

转载 mysql procedure (存储过程)理解

procedure入门介绍

2018-01-31 10:03:16 388

转载 db中横表和竖表区别

Depending on the business requirements and development needs, various ways of storing date can be implemented. The first data layout is horizontal. This is a traditional way of storing data in a tab

2018-01-25 10:07:09 1009

原创 JPQL语句查询出来的数据如何直接用DTO去接

1.JPQL语句这样写的:@Repositorypublic interface IEntitlementRelevantEntitlementViewRepository extends JpaRepository{    /**     *      * Title: findRelevantEntitlementViewByEntlGuid Descrip

2018-01-11 17:55:11 1012

原创 @MappedSuperclass 含义以及子类重写父类字段名

1.@MappedSuperclass 含义1.1)基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用的属性,交给jpa统一生成主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperclas标识。1.2)

2018-01-11 16:12:54 1923

转载 Java String中"+"号的理解

Java String中”+”号的理解 原文参考

2017-12-13 13:04:04 1373

转载 java.lang.ThreadLocal 深入理解

java.lang.ThreadLocal 深入理解 原文参考

2017-12-11 12:27:43 195

原创 POSTMAN POST方式传入纯数组

主要关注其传入的参数格式: @PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) @ApiOperation(value = "", notes = "", response = EntitlementRepositoryEditableColumnsDto.class) publ

2017-11-24 10:07:53 27791 3

转载 Spring Data Jpa 和 Hiberate 的Criteria API的区别

原文参考1 原文参考2

2017-11-17 16:06:12 487

转载 JAVA基础----java中E,T,?的区别?

原文链接

2017-11-17 14:36:56 320

原创 Junit Test 常见问题

anyString()什么时候使用1.1).比如在controller层,API地址中有映射参数时,那么when的时候(模拟service层调用)就要用到anyString() eg: Controller Layer: @DeleteMapping(value = "/detail/lock/{guid}") @ApiOperation(value = "delete the l

2017-11-14 16:19:31 990

转载 ML 中Cost function为什么要除以2

ML 中Cost function为什么要除以2,可能很多人都跟我有同样的疑惑~ 1)原文参考 2)

2017-09-29 11:03:31 3433 1

转载 高数中梯度,导数,偏导,微分一些概念复习

高数中梯度,导数,偏导,微分一些概念复习原文链接

2017-09-28 17:09:22 455

Goovy日志打印脚本

1)SAP HCI上打印IFLOW的日志。2)能看到HTTP详细信息,包括header,body,property等信息。

2018-07-07

空空如也

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

TA关注的人

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