![](https://img-blog.csdnimg.cn/20201014180756923.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 评论 -
【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema。反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高。1.选择优化的数据类型更小的通常更好。 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期更少。简单就好 更简单的数据类型的操作通常需要更少的CPU周期。例如,整型数字转载 2021-11-10 16:38:30 · 90 阅读 · 0 评论 -
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 评论 -
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 评论 -
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 评论 -
大数据交互平台HUE的一些优势
本文系统地讲解了Hue作为大数据分析交互平台的优势!欢迎批评指正!Hue Web应用的架构Hue 是一个Web应用,用来简化用户和Hadoop集群的交互。Hue技术架构,如下图所示,从总体上来讲,Hue应用采用的是B/S架构,该web应用的后台采用python编程语言别写的。大体上可以分为三层,分别是前端view层、Web服务层和Backend服务层。Web服务层和Backend服务层之间使用RPC的方式调用。Hue整合大数据技术栈架构由于大数据框架很多,为了解决某个问题,一般来说会用到多个框架转载 2021-06-16 17:01:49 · 1588 阅读 · 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 评论 -
多线程的一些杂项(整理中)
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 评论 -
Spring MockMvc
使用MockMvc有两种方式指定孤立的某个controller进行测试:单元测试,不需要构造ApplicationContext 集成整个WebApplicationContext进行测试:集成测试,会构造整个WebAppApplicationContext@RunWith(SpringJUnit4ClassRunner.class)class MyWebTests { MockMvc mockMvc; @BeforeEach void setup() {翻译 2021-05-24 18:52:15 · 647 阅读 · 0 评论 -
Spring TestContext Framework @ContextConfiguration注解的使用
目录前言Context configuration with XML resourcesContext configuration with Groovy scriptsContext configuration with annotated classesContext configuration with environment profilesMixing XML, Groovy scripts, and annotated classesContext configura翻译 2021-05-23 21:35:22 · 1376 阅读 · 0 评论 -
jmockit自查手册(待改进)
目录初探mock创建并使用mock对象Expectationsrecord-replay-verify模型Regular v.s. Strict ExpectationExpectation调用特定对象的方法灵活的参数匹配调用次数的限制显式验证在verification中捕获调用参数使用Delegate在Expectation中定制result级联mock部分mockmock接口自动注入被测试类MockUp直接用匿名内部类Mock.原创 2021-05-14 16:21:01 · 1505 阅读 · 2 评论 -
高性能mysql 高性能的索引策略
覆盖索引如果索引中已经包含你所有查找的所有字段,就没必要回表(读磁盘查表),这就叫覆盖索引。 由于innodb使用了聚簇索引,且innodb的二级索引在叶子节点中保存了行的主键,所以若二级索引可以覆盖查询,就能省去反查主键的消耗。 覆盖索引要求索引中必须存储索引列的值,而hash索引、空间索引、全文索引都不支持存储索引列的值,所以不是所有索引都支持覆盖索引,mysql只支持btree做覆盖索引。聚簇索引索引下推...原创 2021-05-06 11:53:29 · 182 阅读 · 0 评论 -
2021-05-05 强引用、弱引用、虚引用(待改进)
强引用Object o=new Object();Object o1=o;gc就不会收集该对象,除非通过以下代码o=null;o1=null;这种需要人工干预才能进行的垃圾回收,显得并不那么方便,有时候我们希望内存不足时,某些对象能被直接回收,不需要手动释放 gc时,某些对象能被直接回收,不需要手动释放SoftReference和WeakReference恰提供了这种和java内存管理沟通的方式。软引用SoftReference在jvm报告内存不足之前会清除所有的软.原创 2021-05-05 11:12:55 · 63 阅读 · 0 评论 -
mysql执行计划与性能优化(待改进)
文章目录执行计划包含的信息idselect_typetabletypepossible_keyskeykey_lenExtra执行计划包含的信息id查询中,查询子任务操作的顺序,若序号相同则从上到下执行;若顺序不同,数值越大,执行优先级越高.select_type表示查询中每个查询子任务的类型simple:简单查询,查询中不包含子任务或unionprimary:查询中若包含复杂的查询子任务,则最外层的select为primarysubQuery:where里的查询子任务类型为subQ原创 2021-04-17 22:11:57 · 419 阅读 · 0 评论 -
mysql性能优化 最左前缀匹配原则
准备数据:https://dev.mysql.com/doc/employee/en/employees-installation.html,导入后的er图原创 2021-04-15 14:00:40 · 532 阅读 · 0 评论