- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 ThreadPoolExecutor-线程池的理解
1.再说线程池之前先了解下线程、用户级线程、内核级线程概念线程可以通过继承Thread,实现Runnable接口以及实现Callable接口来创建线程,它是比进程更小执行单位。 线程的生命周期和状态 用户级线程: 用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态切换,...
2019-11-18 10:25:46
387
原创 ThreadLocal理解
1.ThreadLocal的类层级结构2.ThreadLocal作用ThreadLocal修饰的变量:使得每个线程都拥有该变量的本地副本。(你有你的,我有我的,你修改你的并不会影响我的变量的值)3.ThreadLocal使用场景适用于高并发场景下,各个线程通过不同变量值完成操作的场景。4.源码解析set(T value) get() remove()...
2019-11-12 18:09:35
319
原创 volatile关键字理解
1.JMM层面 每个线程从主内存中读取数据,读入自己的本地工作内存进行相应的修改,每个线程的本地工作内存相互独立的。因此这就可能造成一个线程读取内存的数据进行的相应的修改,但是没有及时的写入内存,造成其他线程读取到过时的数据,因此有数据不一致性问题。为了解决这个问题,我们可以使用volatile来定义该变量。2.特性可见性:一个线程修改了全局变量的值以后,其他线程也可见。实现机制是通...
2019-11-11 10:53:36
278
原创 Java关键字-synchronized理解
1.作用及版本多线程环境下用来控制资源同步访问的,同步控制的代码块是原子操作。 JDK1.6以前的synchronized是一把重量级锁,监视器锁(monitor),当一个线程获取到锁之后,其他线程想要获取锁就必须等待,也就是其他线程是阻塞状态(Blocked)。当前线程获取到锁执行完之后释放锁,这时阻塞队列里面的线程会去竞争锁,竞争到锁的线程又继续执行。由于这个时候发生了线程切换,因此...
2019-11-08 17:28:07
210
原创 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
282
原创 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
369
原创 JDK1.8-HashMap-Put操作源码流程解析
1.Put 操作流程图2.当put操作发生hash冲突的时候,会用拉链法解决冲突。但是如果在同一内存地址冲突的数据超过8个时,并且这个时候Node数组的容量大于等于64,那么这个时候再在该位置添加元素会把单链表变成双向链表最后再转换成红黑树来进行存储数据。采用红黑树存储数据目的是在该冲突的地址查询数据的时候能够更快,提高查询效率。存储结构转换图:3.红黑树为了保证其特定,在插入元...
2019-11-03 21:51:37
808
原创 JDK1.8-ReentrantLock.lockInterruptibly流程分析
1.ReentrantLock.lockInterruptibly流程图2. 注意该方法说明ReentrantLock是可中断锁,被中断后可以调用某个线程的是否中断方法(t1.isInterrupted)来确认该线程是否被中断。3.线程被中断后会报InterruptedException,我们可以捕获该异常,之后再做相应的业务逻辑处理。...
2019-10-22 15:50:07
235
原创 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
526
原创 JDK1.8-ReenrantLock 加锁过程
ReenrantLock 加锁过程流程图以及AQS队列入队情况2.公平锁与非公平锁区别非公平锁: 当锁释放的时候,获取锁的线程会和队列中第一个线程竞争锁资源,但是已经在队列中的线程还是按照先进先出的顺序去获取锁。 公平锁: 当锁释放的时候,队列中第一个线程会去获取锁资源。3.队列中元素如何出队?当t1释放资源,t2如果获取到锁,那么会把t2之前结点的指针都断开,让GC回收该结点...
2019-10-21 16:37:44
708
原创 Java-伪代码实现一把锁
1.多线程情况下自己手动模拟实现一把锁(伪代码)Version1.0:自旋 volatile int status = 0; //是否有线程获取到锁,0表示没有//主业务流程public static void testSync(){ thread.lock(); //当前线程尝试获取锁 ... //获取到锁之后处理业务逻辑 thread.unlock(); //...
2019-10-17 15:12:10
590
原创 创建Entity,由于级联关系导致显示的时候会有n层嵌套问题
1.问题现象CustomerAttribute和CustomerAttributeText表,是1对N的关系,在保存CustomerAttribute的时候,把保存的结果返回给前台,会出现n层嵌套的问题。2.原因:级联导致3.解决方案:返回的数据不要直接返回CustomerAttribute,用dto去接,这样就没有级联n层问题...
2019-09-03 10:40:41
244
原创 删除表提示:外键关联错误解决
1.有两张表CustomerAttribute,CustomerAttributeTextCustomerAttribute结构:GUID(主键),Name,DataType,Code. CustomerAttributeText结构:GUID(主键),AttributeGuid(CustomerAttribute主键),Language,Name2.直接用sql语句删除CustomerA...
2019-09-03 10:35:50
1018
原创 通过反射获取Entity的数据
应用场景:有些时候SQL比较难拼接(比如说:不确定通过哪个字段获取数据),这个时候我们可以利用java反射来获取数据1.Entity 实体类:@Entity@Table(name = EntitlementDbConstants.CUSTOMER_MASTER_DATA_VIEW)public abstract class CustomerMasterDataView{ p...
2019-09-02 13:41:40
1577
转载 Spring Data Jpa @Version字段理解
Reference:https://blog.youkuaiyun.com/topdeveloperr/article/details/86496113https://juejin.im/post/5b55b842f265da0f9e589e79#comment
2019-08-14 17:37:44
1443
转载 重写equals为何要重写hashCode方法
参考:https://blog.youkuaiyun.com/We_chuan/article/details/96426273
2019-07-30 15:22:10
137
转载 类锁、对象锁、多个线程一个锁、多个线程多个锁理解
原文参考:https://blog.youkuaiyun.com/qiushisoftware/article/details/79103702
2019-06-13 16:39:25
329
原创 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
896
原创 生成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
1979
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
448
原创 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
49435
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
957
原创 使用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
1167
原创 防止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
2455
转载 对集合里面Dto进行排序
对集合里面的Dto进行排序原文转载自:https://blog.youkuaiyun.com/xiaofei__/article/details/53138681
2019-01-03 16:01:54
1067
原创 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
4199
原创 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
1065
转载 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
1088
原创 JPQL语句查询出来的数据如何直接用DTO去接
1.JPQL语句这样写的:@Repositorypublic interface IEntitlementRelevantEntitlementViewRepository extends JpaRepository{ /** * * Title: findRelevantEntitlementViewByEntlGuid Descrip
2018-01-11 17:55:11
1104
原创 @MappedSuperclass 含义以及子类重写父类字段名
1.@MappedSuperclass 含义1.1)基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用的属性,交给jpa统一生成主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperclas标识。1.2)
2018-01-11 16:12:54
2057
原创 POSTMAN POST方式传入纯数组
主要关注其传入的参数格式: @PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) @ApiOperation(value = "", notes = "", response = EntitlementRepositoryEditableColumnsDto.class) publ
2017-11-24 10:07:53
27998
3
原创 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
1060
转载 ML 中Cost function为什么要除以2
ML 中Cost function为什么要除以2,可能很多人都跟我有同样的疑惑~ 1)原文参考 2)
2017-09-29 11:03:31
3670
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人