- 博客(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
原创 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
原创 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
原创 记录一次排查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实现自动装配
首先创建一个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关注的人