摘要:
```java import lombok.extern.slf4j.Slf4j; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import java.lang.reflect.Field; import java.util.Optional; @Slf4j public class App 阅读全文
摘要:
Java线程池相关类 最后再说一点: 阿里开发规范为什么不允许直接使用Executors创建线程池? 是因为Executors还是通过调用ThreadPoolExecutor实现,但是对于最大线程数和队列提供了默认方式,该方式容易被调用者忽略从而导致OOM问题,所以需要开发者根据实际情况选择合适的参 阅读全文
摘要:
Java中的CopyOnWrite容器 CopyOnWrite 容器即写时复制容器(简称 COW ),通俗理解就是当修改容器元素时候不直接在当前容器修改,而且先将当前内容进行复制,然后在新的容器中修改,修改完成之后再将原容器的引用指向新容器,这样做的好处是可以对容器进行并发的读,而不用加锁,因为 阅读全文
摘要:
Java锁原理学习 为了学习Java锁的原理,参照ReentrantLock实现了自己的可重入锁,代码如下: 先上AQS的相关方法: 以下是自己实现的MyLock: 测试程序: 以下补充Semaphore的原理: Semaphore是一个计数信号量,必须由获得它的线程释放,常用于限制可以访问资源的线 阅读全文
摘要:
oAuth2流程: 1. 应用请求oAuth2服务器获取token(提供凭证) 2. 应用携带token请求服务(header) 3. 服务读取token并请求oAuth2服务器验证token,并获取用户信息 4. 应用验证用户权限 JWT (Json Web Token) 自包含(不用请求oAut 阅读全文
摘要:
参考:https://www.cnblogs.com/v1haoge/p/6106456.html 阅读全文
摘要:
HandlerAdapter,顾名思义,是Handler的适配器,为了适配各种Handler,从而可以以统一的方式获取ModelAndView。 这段话说的很好: springmvc通过HandlerMapping获取到可以处理的handler,这些handler的类型各不相同,对请求的预处理,参数 阅读全文
摘要:
窗口函数格式: 窗口函数大体可以分为以下两种: 1. 能够作为窗口函数的聚合函数(sum,avg,count,max,min) 2. rank、dense_rank、row_number等专用窗口函数。 窗口函数和聚合函数的区别: 聚合函数针对分组只返回一个结果 窗口函数针对分组中的每一行返回函数的 阅读全文
摘要:
KMP算法的重点在于: 当某一个字符与主串不匹配时,我们应该知道把指针j移动到哪里 java // next[j] = k,表示当T[i] != P[j]时,j指针的下一个位置 public static int[] getNext(String ps) { char[] p = ps.toChar 阅读全文
摘要:
Kettle应用实例 需求 数据库中有很多坐标,需要通过百度地图API取到对应地点的信息,并入库。 步骤描述 1. 从数据库读取经纬度 2. 调用百度地图API拿到数据 3. 解析数据 4. 结果入库 具体实现 1. 从数据库读取经纬度 该步骤使用kettle的 表输入 实现,SQL如下所示: 阅读全文