自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dubbo服务调用过程 笔记

前面消费者提到过代理对象是通过JavassistProxyFactory 动态生成的,所以当调用sayHelloService.sayHello(name);时,实际上是调用proxy里面的返回的 InvokerInvocationHandler包装过的,基于前面已经包装过的directory,现在就是 InvokerInvocationHandler (MockClust...

2020-03-11 11:31:49 312

原创 Dubbo消费者启动过程 笔记

dubbo源码需要先了解dubbo的SPI机制,官网说明如下http://dubbo.apache.org/zh-cn/docs/source_code_guide/dubbo-spi.html入口 ReferenceBean的afterPropertiesSet(),跳过前面一些检查直接看getObject() if (this.shouldInit()) { ...

2020-03-10 18:49:14 515

原创 Dubbo生产者启动过程 笔记

dubbo源码需要先了解dubbo的SPI机制,官网说明如下http://dubbo.apache.org/zh-cn/docs/source_code_guide/dubbo-spi.htmlspring有个配置接口叫NamespaceHandlerResolver用于实现spring自己的SPI功能,有一个实现类DefaultNamespaceHandlerResolver,会在Spr...

2020-03-10 13:56:51 650

原创 idea 打jar包依赖不完整

本地仓库有依赖的jar,但是打包时却没有打包进去,原因时本地仓库的jar缺少pom文件,需要创建对应jar的pom文件。

2023-12-26 10:05:37 460

原创 idea debug elasticsearch8.6.2 源码

该版本默认开启了权限,访问localhost:9200需要输入账号密码。打开idea es代码,配置debug参数,ok后运行。2、idea打开项目工程,设置gradle和jdk。1、下载源码 8.6.2 zip包 并解压。然后cmd bug模式启动源码。4、确定后等待初次构建完成。已经成功进idea断点中。5、cmd进入源码目录。在 idea打上断点。

2023-02-27 10:49:57 651

原创 谷歌浏览器使用elasticsearch-head插件

http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/ http.cors.max-age 浏览器发送一个“预检”OPTIONS请求,...

2023-02-24 15:29:55 1104

原创 优惠券相关梳理

优惠券查询优惠券领取优惠券创建转赠领取

2022-04-13 16:55:59 230

原创 ShardingJDBC笔记(未完。。)

1、什么是分库分表? A:把一个数据库该分为多个,把一张表垂直或水平分割。2、为什么要分库分表? A:当我们的请求和数据量越来越大时,受到单机服务器的性能限制和单张表数据量的限制,已经无法满足我们的需求,我们需要多台数据库分散压力,从而提高服务的整体性能。shardingSphere 概览:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/demo项目:pom.xml...

2022-03-27 19:11:10 303

原创 SpringBoot Mybatis starter 原理

spring在启动过程中预留了许多扩展点,方便我们集成自己的插件。参考https://www.jianshu.com/p/1e212eac42acspringboot starter 原理在spring启动时会扫描所有 resources/META-INF 下的 spring.factories 文件,根据文件中的org.springframework.boot.autoconfigure.EnableAutoConfiguration 为key,加载等号右边的自定义类。...

2022-03-27 19:09:40 1358

原创 会员域功能梳理

2022-03-25 17:50:03 488

原创 Dubbo异步调用方式以及在商详中的应用

Dubbo异步调用三种方式从 2.7.0 开始,Dubbo 的所有异步编程接口开始以CompletableFuture为基础基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。使用 CompletableFuture 签名的接口需要服务提供者事先定义 CompletableFuture 签名的服务,具体参见服务端异步执行接口定义: public interface AsyncService { Compl...

2022-03-25 17:38:29 2040 1

原创 MapStruct 实现 bean 高效复制

官方文档 :https://mapstruct.org/documentation/stable/reference/html/MapStruct是一个注释处理器,用于生成类型安全、性能良好和无依赖关系的bean映射代码,自动生成get、set方法;maven 依赖<properties> <org.mapstruct.version>1.4.2.Final</org.mapstruct.version></properties>..

2021-04-01 15:01:11 246

原创 Arthas笔记

Arthas 是什么?Arthas 是阿里巴巴中间件团队开源的一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。Arthas 能做什么?1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception2.代码为什么没有执行到?没 commit?分支搞错了?3.无法在预发 debug ,只能通..

2021-03-25 17:07:40 165

原创 StringBoot根据不同环境加载Log4j配置

每个工程都有多个环境,不限于开发rd,测试qa,预发pre,线上online,这些环境对日志记录的需求是不一样的,目前开发中大家为了在开发测试环境能方便看日志,都会开启控制台输出,合并到master时这里难免会出现冲突或者将控制输出代码合并到master,仅仅在线上才会应用,这就需要不同环境有不同的log4j配置,可采取以下方式:##启用配置spring: profiles: active: local1、在application.yml或者application.propertie

2020-12-11 15:57:22 1277

原创 Log4j2 Filter配合ACM(Nacos)实现日志降级

原有日志降级实现方式为使用LogUtil工具类,在工具类中判断ACM状态实现日志降级,缺点很明显,打印日志中的行号是LogUtil方法的行号,而不是原始代码的行号。@Slf4jpublic class LogUtil { public static void logInfo(String format, Object... arguments){ if(!AcmSwitch.logInfoSwitchON){ return; }

2020-12-11 15:51:34 446

原创 CurrentHashMap笔记

数组中的Node类put方法 public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) th.

2020-12-10 10:58:32 221

原创 Hadoop结构流程图

2020-12-10 10:54:48 348

原创 记录一次排查oom

预发环境服务发生oom,乍一看才600多MB就oom?what?why?吓得马上查看了下堆大小发现才给的512MB,真是扣,这个要扩一下。查看dump分析发现是服务接入cat引起的,接了有一段时间了现在才oom,虽然内存配小了,但是还是要确定下加大内存会不会还有oom风险。开始分析是TcpSocketSender中的DefaultMessageQueue占用了大量的内存。在代码中查找:com.dianping.cat.message.io.TcpSocketSender。该

2020-10-28 09:29:38 202

原创 elasticsearch 第三节 特殊字段类型

join类型,父子节点必须在同一个分片#### join类型,父子节点必须在同一个分片DELETE menus_001#举例菜单PUT menus_001{ "settings": { "number_of_replicas": 1, "number_of_shards": 3 }, "mappings": { "properties": { "menuId":{ "type": "integer" }, .

2020-08-30 21:44:50 241

原创 elasticsearch 第三节 mappings和常用字段类型

mappings#创建索引字段映射,_source默认为truePUT shop_001{ "mappings": { "properties": { "shopName":{ "type": "text" }, "createTime":{ "type": "date" }, "city":{ "type": "text" } } }}#查看索.

2020-08-30 21:32:39 306

原创 elasticsearch 第二节 索引数据类型设计

要求字段个数不超1024GET _search{ "query": { "match_all": {} }}#存放一条数据,索引默认创建PUT /product_001/_doc/1{ "goodName":"apple", "createTime":"2020-08-23", "sku":[ "1", "2", "3" ]}#创建分片数和副本数PUT /product_002{ "settings": { "n

2020-08-23 19:35:22 169

原创 elasticsearch 第一节 环境搭建

虚拟机:centerOS7+elasticsearch 7.+kibana 7.+目标:搭建es集群保持es和kibana版本一致本次版本为 7.8.1下载地址:https://www.elastic.co/cn/downloads/es 6.+ 起不能用root账户启动,需要单独创建一个账户。新版es自带jdk,不过最好自行安装es包中对应的jdk版本,并配置环境变量,方便实用一些java命令。下载好后拷贝三台虚拟机,解压编辑配置文件本次三台机器地址:192.16.

2020-08-23 19:25:37 200

原创 docker 入门笔记

安装依赖sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2(以下可以使用阿里云镜像速度快,参考地址:https://blog.csdn.net/DavidSoCool/article/details/102915527)设置docker仓库sudo yum-config-manager...

2020-05-15 09:41:09 214

原创 zookeeper watch 实现原理笔记

zk三种注册监听方式:getData(),exists,getChildren。客户端发送的监听请求会放到队列中(outgoingQueue),队列会有一个 sendThread 处理,sendThread 通过发送 path 路径和 watcher 为 true ,到 server 注册 watch 事件。zk服务端会有一个 WatchManger 该类中有 HashMap<String,HashSet<Watcher>> watchTable ,key为path , Wa

2020-05-09 13:13:41 452

原创 Spring自定义注解实现HandlerInterceptorAdapter 拦截请求

注解类UnLoginAccessAnnotation.javaimport java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;...

2020-05-07 15:36:11 1481

原创 Springboot集成MybatisGenerator

pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav...

2020-04-22 15:38:01 126

原创 Elasticsearch 7.6.2 引入IK Analysis

系统:Cent OS 7Elasticsearch版本 : 7.6.2git地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/masterik analyzer需要和es版本对应,当前master对应es 7.x版本,直接下载最新的就行...

2020-04-22 13:43:34 2198

原创 CentOS 7 部署 Kibana7.6.2

虚拟机版本: CentOS 7JDK版本:1.8(需提前安装好,保证 命令 "java -version" 有输出版本信息)es版本: elasticsearch 7.6.2kibana版本: kibana 7.6.2从官网下载后解压运行,https://www.elastic.co/cn/downloads下面的步骤是官网教程:https://www.elastic.co/...

2020-04-22 13:08:31 1138

原创 CentOS 7 部署 elasticsearch 7.6.2

虚拟机版本: CentOS 7JDK版本:1.8(需提前安装好,保证 命令 "java -version" 有输出版本信息)es版本: elasticsearch 7.6.2从官网下载后解压运行,https://www.elastic.co/cn/downloads下面的步骤是官网教程:https://www.elastic.co/guide/en/elasticsearch/r...

2020-04-20 11:11:11 654

原创 kafka简单调优

生产者1、batch.size:生产者发送多个消息到broker上的同一个分区时,为了减少网络请求带来的性能开销,通过批量的方式 来提交消息,可以通过这个参数来控制批量提交的字节数大小,默认大小是16384byte,也就是16kb, 意味着当一批消息大小达到指定的batch.size的时候会统一发送。2、linger.ms:producer默认会把两次发送时间间隔内收集到的所有Reques...

2020-03-28 21:05:09 381

转载 打不开磁盘“E:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位-000003.vmdk”或它所依赖的某个快照磁盘。

vmware下启动Centos虚拟机报错虚拟无法打开磁盘 “打不开磁盘“E:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位-000003.vmdk”或它所依赖的某个快照磁盘。”或它所依赖的某个快照磁盘”原因: 未能锁定文件” 这主要是非正常关虚拟机造成的,具体原因如下:虚拟机为了防止有多虚拟机共用一个虚拟磁盘(就是后 缀为.vmd...

2020-03-16 13:31:24 6891 2

原创 Spring简单总结IOC、DI、AOP、MVC 笔记

IOC从refresh方法开始定位:会先通过getResource方法获取到资源的URL加载:通过loadBeanDefinitions方法把资源变成BeanDefinition对象注册:把BeanDefinition对象信息放到一个容器中,这个容器并不是IOC容器,对象中只是保存了配置信息DI主要是在getBean方法中主要通过instantiateBean将BeanDefini...

2020-03-11 22:27:53 166

转载 linux 运行java jar包

在linux系统中运行jar包主要有以下几种方式。1、java -jar XXX.jar这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。2、java -jar XXX.jar &&代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。3、nohupjava -jar XXX.jar &am...

2020-03-06 11:23:07 503

原创 java 线上应用排查CPU过高(模拟场景)

1、先使用top命令查看系统资源是使用信息,top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。我运行了个java进程模拟线上业务排查。top2、接着使用命令查看该进程详细的线程情况top -H -p 7607上面显示的PID是十进制,我们需要转换成十六进制方便查找printf "%x\n" 7623我们可以直接线上使用j...

2020-03-06 01:38:11 686

原创 springboot实现自己的starter

666666

2020-02-22 16:27:17 277

原创 springboot实现自动装配

首先创建一个maven工程并依赖spring-contextpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs...

2020-02-21 18:18:27 776 2

原创 Lock的基本使用及原理笔记

java.util.concurrent 并发工具包LockLock是个接口,ReentrantLock唯一实现Lock的类synchronized和ReentrantLock都支持重入锁当多个线程争抢锁,其他的会阻塞AQS同步工具1、独占->互斥2、共享->读写锁AQS的基本实现1、一个共享数据类记录锁的状态(有锁/无锁)state:锁标记,0是无锁、...

2020-02-19 12:19:35 491

原创 java线程笔记

使用线程的目的1、并行处理,加快程序运行速度java中如何应用线程1、实现Runnable接口2、Thread3、Callable/Future带返回值的线程4、ThreadPool 线程池实际应用1、线程池,不会直接new Thread()线程中断1、thread.interrupteed();线程的几种状态:1.初始(NEW):新创建了一个线程对象,但还没有调用star...

2020-02-19 12:16:02 173

原创 线程池的实现原理笔记

线程池的实现原理“池”1、复用已有资源2、控制资源总数线程池优势1、限流,控制线程数量2、降低频繁创建和小伙线程3、对于任务响应速度更快// 固定线程数线程池Executors.newFixedThreadPoolpublic static ExecutorService newFixedThreadPool(int nThreads) { retur...

2020-02-19 12:12:18 194

原创 idea 运行日志查看

help -> Show Log in Explorer打开后的文件夹如果有一些运行错误提示导入至中查看的可以在这里找到,比如在idea执行maven的reimport入时报错打开后会有对应的记录,日志是按时间顺序追加的,可以直接最下面搜索关键字maven,在根据错误信息找到对应的解决办法...

2019-12-05 15:14:13 23753

空空如也

空空如也

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

TA关注的人

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