自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 快速自查 - 声明式事务XML方式

声明式事务XML方式快速自查

2023-01-28 20:14:15 140

原创 快速自查 - 编程式事务管理

编程式事务管理快速自查

2023-01-28 18:31:58 210

原创 一文搞懂 - Spring事务基本概念

本文简述开发过程中常会碰到的事务概念,很多人都知道但却总是概念模糊,若能脱口而出将成功人前显圣。

2023-01-13 00:05:10 141

转载 Spring整合tkMapper

spring整合tkMapper自查手册

2022-12-20 16:53:18 166

转载 【代码赏析】如何写出优雅代码

重构,改善既有代码的设计(实战篇)_张云瀚的博客-CSDN博客_重构改善既有代码的设计

2022-12-12 22:25:08 79

转载 -D -X -XX 参数的区别

-D,-X,-XX-XX 是 JVM 的所有实现都支持的最常用的选项。

2022-12-12 21:50:40 654

转载 【代码赏析】使用hibernateValidator进行校验

使用hibernateValidator进行校验

2022-12-09 10:14:58 121

转载 【代码赏析】优雅定义异常

【代码赏析】优雅定义异常

2022-12-02 23:26:49 125

转载 理解Interface中default关键字

​default关键字修饰的方法就是初始化的抽象方法​

2022-11-27 16:09:13 275

转载 Springboot常用注解

springboot常用注解

2022-11-26 17:15:51 55

原创 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 854

转载 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 1527

原创 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 924

原创 JVisualVm处理OOM异常

jvisualvm定位oom问题

2021-11-25 20:40:56 1346

转载 Tomcat报too many open files

2021-11-24 17:53:46 898

转载 【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化

良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema。反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高。1.选择优化的数据类型更小的通常更好。​ 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期更少。简单就好​ 更简单的数据类型的操作通常需要更少的CPU周期。例如,整型数字

2021-11-10 16:38:30 85

原创 【快速自查】类加载器与双亲委托

力求言简意赅介绍类加载器与双亲委托,方便开发人员自查。

2021-11-03 20:05:54 360

翻译 windows更新node版本

卸载原有node直接到【控制面板】-【卸载程序】- 搜索node双击卸载。如果你原来装了node,这一步必须做。不然nvm会exit code 145或者其他乱七八糟的错误。通过nvm管理并安装新node下载installer,解压后就是一个exe文件,一路下一步即可。安装成功后,通过在cmd输入nvm version,判断是否安装成功。nvm version1.1.8使用nvm自由安装、卸载、升级、降级、查看node常用命令如下,这里我是先查看是否已安装n...

2021-11-01 18:38:20 2472

翻译 error /node_modules/node-sass: Command failed

诊断error /var/www/html/vue-storefront/node_modules/node-sass: Command failed.Exit code: 1Command: node scripts/build.jsArguments: Directory: /var/www/html/vue-storefront/node_modules/node-sassOutput:Building: /usr/bin/node /var/www/html/vue-storef.

2021-11-01 18:19:15 1104

原创 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 523 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 52

翻译 Insert on duplicated key 踩坑

场景若你使用了主从Mysql 若你的表有多个唯一索引那么不建议使用on duplicated key,因为mysql不知道用哪个唯一key做去重,虽然默认选择第一个(按索引被添加到表上的顺序排序),但存在极端情况,如主库按顺序添加索引,而从库一股脑一起所有唯一索引一起添加,那么从库就不知道哪个是第一个索引,去重就会有问题。Description:When mysql executes INSERT ON DUPLICATE KEY INSERT, the storage engine ch

2021-08-24 12:34:28 1391

转载 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 10562

转载 通过ClassPathBeanDefinitionScanner实现使用自定义注解进行bean注入(待改进)

spring提供自动扫描功能的核心类是:ClassPathBeanDefinitionScanner该类根据提供个基础包名,扫描classpath下该包名的路径下,找到符合条件的类并注册到容器中。默认情况下,ClassPathBeanDefinitionScanner将会扫面所有用Spring指定了的注解标识了的类,包括:@Component。也可以对扫描的机制进行配置,设置一些Filter,只有满足Filter的类才能被注册为Bean。在我们日常使用中经常会如下使用:<cont.

2021-08-16 18:59:09 992

原创 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 104

原创 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 629

转载 @Value的解析流程

前言启动时一直报错,发现是@Value完全未能解析表达式,所以跟随代码查看原因。step1 解析@Value注解,并返回其中的表达式。涉及QualifierAnnotationAutowireCandidateResolver:用于解析@Qualifier、@Autowired、@Value,并找到匹配的bean或值。step2 spring将表达式的解析委托给StringValueResovler1.这一步是在DefaultListableBeanFactory#doRe

2021-08-05 13:50:05 561

翻译 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 99

转载 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 768

转载 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 413

转载 查看索引各分片文档数

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 712

转载 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 236

转载 大数据学习记录

hive的四种文件存储格式

2021-07-02 12:35:14 62

转载 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 2155

转载 Elasticsearch 7学习笔记 高阶篇-聚合技术

一 聚合分析之 bucket(分组)&meteric(统计)这一节内容主要是介绍下 bucket(分组)的概念 以及 meteric(聚合统计)概念,其实我们做过开发写过sql的就很容易理解了。然后我们结合案例进行练习和体会不同的bucket,以及不同的meteric,强化我们对分组和聚合统计的理解和记忆。1.1 原理 bucket(分组)与metric(聚合统计)概念理解bucket它是指对一组数据进行分组假设一组数据为:city name北京 小李北京 小王...

2021-06-23 17:19:46 372

原创 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 164

转载 es7学习笔记 建表与字段类型(建索引)

待改进

2021-06-23 14:30:13 2382

原创 MockMvc触发Hibernate Validator踩坑

相关文章ResponseBodyAdvice和HttpMessageConverter应用浅析代zheng'li

2021-06-20 15:47:13 709

原创 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 473

转载 mybatis学习笔记

在SqlSessionFactoryBuilder中通过XMLConfigBuilder解析配置文件,解析的配置相关信息都会封装为一个Configuration对象 创建DefaultSessionFactory对象获取到SqlSessionFactory之后,就可以通过openSession方法,去获取SqlSession对象通过Confuguration对象去获取Mybatis相关配置信息, Environment对象包含了数据源和事务的配置 通过Confuguration对象去获取事务工

2021-06-17 12:43:28 304

空空如也

空空如也

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

TA关注的人

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