![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 67
刀剑如梦TOTO333
这个作者很懒,什么都没留下…
展开
-
Spring+PowerMock+Junit
记一次单元测试 java.lang.ClassCastException: com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi在用单元测试Junit测试部门的SDK时,有个md5鉴权步骤,出现了java.lang.ClassCastException: com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi错误,经排查是J...原创 2021-12-14 19:22:32 · 881 阅读 · 0 评论 -
jvm的gc log 以及各种参数
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Xms20M -Xmx20M -Xmn10M -XX:NewRatio=1-XX:NewRatio=1 表示新生代占1,老年代占2。则新生代占整个堆的1/3。(这个参数一般不会使用) -XX:+UseParNewGC表示年轻代使用serial的多线程版本,它是server模式下首选的新生代收集器,因为能与cms配合...转载 2021-12-07 11:53:51 · 1555 阅读 · 0 评论 -
jvm的SafePoint
垃圾收集通常会导致stop the world,但并不是stop the world的唯一途径,应该说应用程序只要到达safepoint就会触发stop the world。safe point在到达safe point后,jvm里的所有工作的应用线程都会被挂起,只有垃圾收集的native线程会持续不断地跑。因为只有保证垃圾收集线程对jvm中地数据结构具有独占式的访问权限,它才能够做一些诸如标记GC Root 或是 移动堆中对象之类 或是 替换方法栈中的方法 之类的操作。safe po.原创 2021-12-06 17:09:18 · 949 阅读 · 0 评论 -
JVisualVm处理OOM异常
jvisualvm定位oom问题原创 2021-11-25 20:40:56 · 1368 阅读 · 0 评论 -
Tomcat报too many open files
无转载 2021-11-24 17:53:46 · 937 阅读 · 0 评论 -
【快速自查】类加载器与双亲委托
力求言简意赅介绍类加载器与双亲委托,方便开发人员自查。原创 2021-11-03 20:05:54 · 367 阅读 · 0 评论 -
Java8学习手册
函数什么是函数函数其实就是匿名内部类。Java8之前 public interface Checker{ boolean doCheck(String name); } @Test public void fun2() { Checker checker = new Checker() { @Override public boolean doCheck(String name) {原创 2021-09-16 19:23:14 · 558 阅读 · 1 评论 -
MySQL学习笔记目录
mysql高性能索引策略(待改进)https://blog.csdn.net/qq_26950567/article/details/116450761最左前缀匹配原则https://blog.csdn.net/qq_26950567/article/details/115722382mysql执行计划(待改进)https://blog.csdn.net/qq_26950567/article/details/115802700insert on duplicated key 踩坑原创 2021-08-24 13:43:13 · 53 阅读 · 0 评论 -
AbstractRoutingDataSource详解,分析多数据源切换原理
在spring中有一个抽象类AbstractRoutingDataSource类,通过这个类可以实现动态数据源切换。如下是这个类的成员变量// 是存储将要切换的多数据源bean信息,一般是<beanName,DataSource-bean>private Map<Object, Object> targetDataSources;private Object defaultTargetDataSource;private Map<Object, DataSource转载 2021-08-18 18:52:38 · 10745 阅读 · 0 评论 -
通过ClassPathBeanDefinitionScanner实现使用自定义注解进行bean注入(待改进)
spring提供自动扫描功能的核心类是:ClassPathBeanDefinitionScanner该类根据提供个基础包名,扫描classpath下该包名的路径下,找到符合条件的类并注册到容器中。默认情况下,ClassPathBeanDefinitionScanner将会扫面所有用Spring指定了的注解标识了的类,包括:@Component。也可以对扫描的机制进行配置,设置一些Filter,只有满足Filter的类才能被注册为Bean。在我们日常使用中经常会如下使用:<cont.转载 2021-08-16 18:59:09 · 1022 阅读 · 0 评论 -
JAVA8 函数式编程学习笔记
接口里可以有default修饰的非抽象方法只要实现了该接口,所有实现类都将拥有该默认方法。interface A { int doSth(); default void say() { sout("hello"); }}函数式接口,其本质是只能拥有一个抽象方法,但是能拥有多个非抽象方法的接口,的匿名内部类。psvm() { Person person = new Person() { public void say(原创 2021-08-08 19:09:18 · 107 阅读 · 0 评论 -
GenericConverter的用法随笔
spring官网原文翻译:GenericConverter是converter接口的一个比较精致的实现,它支持多个source和目标类型的转化,同时还提供了source和目标类型的上下文,这个上下文能让你实现基于属性上的注解或信息来进行类型转换。getConvertibleTypes返回一个source->target的键值对,然后通过实现convert接口来实现你的转换逻辑。sou...原创 2019-12-24 17:07:05 · 1996 阅读 · 0 评论 -
ConditionalGenericConverter 的用法随笔
spring 官网翻译有时你可能希望在特定条件为真的情况下才运行转换器。例如,您可能希望仅在目标字段上出现特定注释时才运行转换器,或者仅在目标类上定义特定方法(例如静态valueOf方法)时才运行转换器。ConditionalGenericConverter是联合的GenericConverter和ConditionalConverter的接口,它恰是一个能让你定义这样的匹配规则的组合接口。...原创 2019-12-24 17:46:07 · 1415 阅读 · 0 评论 -
Spring标准event和自定义event
Spring的事件同样是基于观察者模式,只要是观察者模式,就含有主题,主题,针对该主题的事件(事件),向主题发布事件的人(发布者),订阅主题并接收事件的人(订阅者)。在Spring中,一般是这样玩的:如果一个类扩展了ApplicationEvent则它是一个针对某某主题的事件,该类中的source可以当作这个主题如果一个类实现了ApplicationListener接口,并将其注册为...翻译 2019-12-31 14:59:01 · 550 阅读 · 0 评论 -
es7分页死亡记录
前言做了个功能,es要查询分页。我用了search api的total hits做了总条数,鱼唇地忽略了search api最多只能查窗口大小条.....直接死亡。踩到的坑Seach Api最多只能查询窗口大小条我们当然可以直接使用search去统计文档数量,只要不指定查询条件,然后查询结果中的total就是文档的总数量。POST vpe_future_price_mid_dimension/_search{"query": {...原创 2021-08-05 17:36:54 · 676 阅读 · 0 评论 -
@Value的解析流程
前言启动时一直报错,发现是@Value完全未能解析表达式,所以跟随代码查看原因。step1 解析@Value注解,并返回其中的表达式。涉及QualifierAnnotationAutowireCandidateResolver:用于解析@Qualifier、@Autowired、@Value,并找到匹配的bean或值。step2 spring将表达式的解析委托给StringValueResovler1.这一步是在DefaultListableBeanFactory#doRe转载 2021-08-05 13:50:05 · 574 阅读 · 0 评论 -
SpringAOP自查手册
spring中的pointCut API6.1.2. Operations on Pointcutsspring支持切点的交集和并集。你可以使用PointCuts类中的静态方法创建pointCut,也可以使用ComposablePointCut。当然更快捷的方法是使用AspectJ pointCut 表达式。6.1.3. AspectJ Expression Pointcuts至2.0起,spring最重要的pointCut类,是基于AspectJ提供类库的org.springframewo翻译 2021-07-23 18:36:35 · 104 阅读 · 0 评论 -
es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错
ElasticSearch负载不均衡现象:往es7集群中推数时,发生如下情况接口出现很多400 发现集群中某台机器cpu被怼爆 发生fullGC产生400报错的原因是es7做了熔断优化,当jvm内存使用超过阈值,为了避免丑陋的oom,会直接限流并抛出EsRejectedExecutionException。我们强硬的关掉了这个配置,因为我们的推数有失败重试。产生fullGC是因为一个bulk批处理的数据量太大,我们一个文档1.5M,800个文档作为一批,两个线程并行推,jvm内转载 2021-07-22 14:01:18 · 798 阅读 · 0 评论 -
es的批处理
bulk相当于数据库里的bash操作。bulk的格式1. action:index/create/update/deletecreate 如果文档不存在就创建,但如果文档存在就返回错误index 如果文档不存在就创建,如果文档存在就更新update 更新一个文档,如果文档不存在就返回错误delete 删除一个文档,如果要删除的文档id不存在,就返回错误2. metadata:_index,_type,_id3. request body:_source(删除操作不需要加reque.转载 2021-07-19 18:32:35 · 420 阅读 · 0 评论 -
查看索引各分片文档数
1、引言有人可能觉得,查看文档数量不是很简单吗?直接GET /_cat/count/index_name?v不就可以了吗?事实上远不止这么简单,比如嵌套文档的情况等。相信你看了我这篇文章之后你会感叹原来统计文档有这么多讲究啊。2、正文cat/count(无法统计被删除文档)首先是最常用的的方式,也是一种快速查询文档的优先推荐方式,cat count api我们使用kibana自带的电商索引来实验。GET _cat/count/kibana_sample_data_ecomme转载 2021-07-19 11:28:25 · 734 阅读 · 0 评论 -
elasticsearch中 refresh 和flush区别
elasticsearch中有两个比较重要的操作:refresh 和 flushrefresh操作当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索。而这个实时建索引并可以被搜索的过程实际上是一次es 索引提交(commit)的过程,如果这个提交的过程直接将数据写入磁盘(fsync)必然会影响性能,所以es中设计了一种机制,即:先将index-buffer中文档(document)解析完成的segment写到filesystem cache之中,这样避免了比较损耗性能io转载 2021-07-06 16:00:08 · 245 阅读 · 0 评论 -
大数据学习记录
hive的四种文件存储格式转载 2021-07-02 12:35:14 · 65 阅读 · 0 评论 -
spark-sql中数据类型比较(double vs decimal)
1、创建表,数据类型是double和decimalcreate external table tmp.tmp_test(amt1 double,amt3 decimal(20,8))STORED AS parquetlocation 'hdfs://reh/user/hive/dev/tmp_dev/tmp_test';2、测试数据为“111111.1232”,查询显示正常:spark-sql> insert overwrite table tmp.tmp_test> s转载 2021-07-02 11:17:58 · 2220 阅读 · 0 评论 -
Elasticsearch 7学习笔记 高阶篇-聚合技术
一 聚合分析之 bucket(分组)&meteric(统计)这一节内容主要是介绍下 bucket(分组)的概念 以及 meteric(聚合统计)概念,其实我们做过开发写过sql的就很容易理解了。然后我们结合案例进行练习和体会不同的bucket,以及不同的meteric,强化我们对分组和聚合统计的理解和记忆。1.1 原理 bucket(分组)与metric(聚合统计)概念理解bucket它是指对一组数据进行分组假设一组数据为:city name北京 小李北京 小王...转载 2021-06-23 17:19:46 · 386 阅读 · 0 评论 -
es7学习笔记 待整理
输入的值精确匹配数组中的某个值如图,我存入了两个文档,nameSet字段是个数组,现在我希望:输入10010,返回文档1 输入10086,返回文档2 输入100,返回空创建文档POST /hello/_doc/1{ "nameSet":["10010","100101","100102"], "name":"10010"}POST /hello/_doc/2{ "nameSet":["10086","100861","100862"], "name原创 2021-06-23 15:18:59 · 174 阅读 · 0 评论 -
es7学习笔记 建表与字段类型(建索引)
待改进转载 2021-06-23 14:30:13 · 2458 阅读 · 0 评论 -
MockMvc触发Hibernate Validator踩坑
相关文章ResponseBodyAdvice和HttpMessageConverter应用浅析代zheng'li原创 2021-06-20 15:47:13 · 739 阅读 · 0 评论 -
ElasticSearch7 学习笔记
一切都是jsonMysql与es中名词的对应关系Index 对应 MySQL 中的 Database Type 对应 MySQL 中的 Table Document 对应 MySQL 中表的记录 field对应MySQL中表的columnes在后台将每个索引划分成多个分片,分片可以在集群中不同服务器之间进行转移。standalone模式的es,一个人就是一个集群,其集群名字默认为elasticSearch。es文档的特点(Document的特点)document同时包含key:v原创 2021-06-17 22:19:56 · 486 阅读 · 0 评论 -
mybatis学习笔记
在SqlSessionFactoryBuilder中通过XMLConfigBuilder解析配置文件,解析的配置相关信息都会封装为一个Configuration对象 创建DefaultSessionFactory对象获取到SqlSessionFactory之后,就可以通过openSession方法,去获取SqlSession对象通过Confuguration对象去获取Mybatis相关配置信息, Environment对象包含了数据源和事务的配置 通过Confuguration对象去获取事务工转载 2021-06-17 12:43:28 · 351 阅读 · 0 评论 -
JMX待整理
待整理原创 2021-06-08 19:57:25 · 59 阅读 · 0 评论 -
TestExecutionListener
@TestExecutionListener是类级别注解,与@ContextConfiguration连用。@ContextConfiguration@TestExecutionListeners({CustomTestExecutionListener.class, AnotherTestExecutionListener.class}) class CustomTestExecutionListenerTests { // class body...}...翻译 2021-06-07 11:29:41 · 1716 阅读 · 0 评论 -
PowerMock自查手册(待整理)
待改进原创 2021-06-07 11:03:04 · 94 阅读 · 0 评论 -
构建企业用的单元测试体系(整理中)
待改进原创 2021-06-07 10:31:35 · 63 阅读 · 0 评论 -
Semaphore源码解析(整理中)
待改进原创 2021-06-07 10:29:44 · 63 阅读 · 0 评论 -
如何估算吞吐量与线程池大小
如何估算吞吐量以及线程池大小March 21, 2019估算吞吐量现在有一个task,它的执行时间分为2部分,第一部分做数学运算,第二部分等待IO。这两部分就是所谓的计算操作与等待操作。那么现在要求估算在CPU火力全开的情况下,执行这个task能够达到的吞吐量峰值是多少?那么我们要先知道执行这个task总共需要多少时间,计算部分花费多少时间,等待部分花费多少时间。假设这个task的计算部分花费1秒,等待部分花费9秒,并且开了10个线程执行10个task,在单核CPU的情况下可以.转载 2021-06-04 13:48:03 · 309 阅读 · 0 评论 -
多线程的一些杂项(整理中)
Thread.interrupted和Thread.isInterrupted前者:用于判断线程是否被中断,判断后将中断状态清除。这表明,针对一个被中断的线程,连续liang原创 2021-06-01 19:43:13 · 59 阅读 · 0 评论 -
java线程池ThreadPoolExecutor类详解
跟随大神的脚步,转载自https://www.cnblogs.com/dafanjoy/p/9729358.htmlhttps://www.cnblogs.com/huangjuncong/p/10031525.html并进行批注、验证、总结。线程池有哪些参数corePoolSize:线程池核心线程个数; workQueue:用于保存等待执行的任务的阻塞队列;比如基于数组的有界ArrayBlockingQueue,基于链表的无界LinkedBlockingQueue,最多只有一个元..原创 2021-06-01 18:44:38 · 366 阅读 · 1 评论 -
ReentrantLock源码解析(整理中)
可以很轻易的看到其内部有个基于AQS的sync抽象类,并且基于这个抽象类创建了公平锁FairSync和非公平锁NonFairSync两个静态内部类。通过构造方法可以看出如果不特别指定是否公平,则创建的是非公平锁。FairSync中对AQS的tryAquire()方法的实现判断当前有没有线程获取锁 若没有线程获取锁(state=0),则state增加,且将当前线程标记为独占线程 如果当前线程已经是独占线程,则表示同一个线程重复获取锁(可重入锁),则继续累加state/** ..原创 2021-06-01 18:44:00 · 124 阅读 · 1 评论 -
AbstractQueueSynchronizer详解(整理中)
跟随大神的脚步,转载自并进行批注、验证、总结。原创 2021-06-01 18:36:18 · 217 阅读 · 0 评论 -
Spring5 Cache Abstraction
Since version 3.1, the Spring Framework provides support for transparently adding caching to an existing Spring application. Similar to thetransactionsupport, the caching abstraction allows consistent use of various caching solutions with minimal impact ..转载 2021-05-26 22:47:01 · 91 阅读 · 0 评论