- 博客(46)
- 资源 (4)
- 收藏
- 关注
原创 dubbo 的几种远程调用接口协议
协议 dubbo rmi hessian http webservice 连接个数 单一连接 多连接 多连接 多连接 多连接 连接方式 长连接 短连接 短连接 短连接 短连借 传输协议 tcp tcp http http http 传输方式 nio异步 同步传输 同步传输 同步传输 同步传输 序列化 hessian二进制序列化
2022-03-02 14:34:57
486
转载 g1源码之YoungGC技术细节探究
笔者经过上次研究ZGC的代码之后,感受到了ZGC性能的提升和设计的巧妙,由此知道了ZGC的各种优势。但是现在日常生产中许多应用还是用的JAVA8和G1,作为一个对技术有追求的程序员,不由得产生了看一看G1源码的想法。笔者一直本着比较学习才能收获更多的原则,所以打开了java8的源码,开始学习G1,再学习过程中发现,G1的代码相较于zgc阅读起来稍微有些困难,花的时间更长一些。网上许多关于G1源码的文章并不是很全面,有些问题也没有讲清楚,笔者会尽量将源码的细节阐述清楚。首先G1的GC过程分为4个阶段或者说
2022-02-28 19:05:58
1709
转载 JVM源码分析之安全点safepoint
涉及到一个概念safepoint,openjdk的实现位于openjdk/hotspot/src/share/vm/runtime/safepoint.cpp什么是safepointsafepoint可以用在不同地方,比如GC、Deoptimization,在Hotspot VM中,GC safepoint比较常见,需要一个数据结构记录每个线程的调用栈、寄存器等一些重要的数据区域里什么地方包含了GC管理的指针。从线程角度看,safepoint可以理解成是在代码执行过程中的一些特殊位置,当线程执行
2022-02-16 15:41:14
377
转载 Java中9种常见的CMS GC问题分析与解决
. 写在前面| 本文主要针对 Hotspot VM 中“CMS + ParNew”组合的一些使用场景进行总结。重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多,另外本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料。| 总字数 2 万左右(不包含代码片段),整体阅读时间约 30min ,文章较长,可以选择你感兴趣的场景进行研究。1.1 引言自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来的悬挂指针(D
2022-02-07 16:00:58
878
原创 cat 中几个统计jvm 和system 的类
ClassLoadingInfoCollectorprivate Map<String, Number> doClassLoadingCollect() { ClassLoadingMXBean classLoadingMXBean = ManagementFactory.getClassLoadingMXBean(); Map<String, Number> map = new LinkedHashMap<String, Number..
2021-12-14 16:10:40
922
转载 消失的异常堆栈
https://juejin.im/post/5a77ba3c5188257a6a78a6e1#heading-0异常栈信息不见了之JVM参数OmitStackTraceInFastThrow - 简书是由于多次打印同一个异常多次之后,JVM做了优化,不再打印异常栈,官网的解释如下:Release Notesjvm源码这样说:...
2021-12-13 17:58:02
116
原创 Guava RateLimiter
RateLimiter r = RateLimiter.create(5);r.acquire(5)-------源码------------------acquirepublic double acquire(int permits) { long microsToWait = reserve(permits); stopwatch.sleepMicrosUninterruptibly(microsToWait); return 1.0 * microsToWai.
2021-11-25 15:56:24
94
原创 惰性惰性惰性
public class Lazy<T> implements Supplier<T> { private final Supplier<? extends T> supplier; private T value; private Lazy(Supplier<? extends T> supplier) { this.supplier = supplier; } public static &.
2021-11-08 16:00:39
108
原创 不使用e.printStackTrace()打印日志
1.e.printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,通常排查异常日志不太方便。2.e.printStackTrace()语句产生的字符串记录的是堆栈信息,如果信息太长太多,字符串常量池所在的内存块没有空间了,即内存满了,就会出现内存满了等待死锁的问题...
2021-11-02 11:19:25
407
转载 Elasticsearch内核解析 - 数据模型篇
Elasticsearch是一个实时的分布式搜索和分析引擎,它可以帮助我们用很快的速度去处理大规模数据,可以用于全文检索、结构化检索、推荐、分析以及统计聚合等多种场景。Elasticsearch是一个建立在全文搜索引擎库Apache Lucene 基础上的分布式搜索引擎,Lucene最早的版本是2000年发布的,距今已经18年,是当今最先进,最高效的全功能开源搜索引擎框架,众多搜索领域的系统都基于Lucene开发,比如Nutch,Solr和Elasticsearch等。Elasticsearch第一个版
2021-10-14 16:01:45
596
转载 Lucene解析 - IndexWriter
在上一篇文章我们介绍了Lucene的基本概念,在本篇文章我们将深入Lucene中最核心的类之一IndexWriter,来探索Lucene中数据写入和索引构建的整个过程。IndexWriter// initializationDirectory index = new NIOFSDirectory(Paths.get("/index"));IndexWriterConfig config = new IndexWriterConfig();IndexWriter writer = new In
2021-10-14 15:20:26
412
转载 Elasticsearch 内核解析 -查询篇
我们仍然先从Elasticsearch的两个身份:NoSQL和Search领域的查询区别说起。读操作实时性和《Elasticsearch内核解析 - 写入篇》中的“写操作”一样,对于搜索而言是近实时的,延迟在100ms以上,对于NoSQL则需要是实时的。一致性指的是写入成功后,下次读操作一定要能读取到最新的数据。对于搜索,这个要求会低一些,可以有一些延迟。但是对于NoSQL数据库,则一般要求最好是强一致性的。结果匹配上,NoSQL作为数据库,查询过程中只有符合不符合两种情况,而搜索里面还有是
2021-10-13 19:34:58
687
转载 Elasticsearch 内核解析-写入篇
目前的Elasticsearch有两个明显的身份,一个是分布式搜索系统,另一个是分布式NoSQL数据库,对于这两种不同的身份,读写语义基本类似,但也有一点差异。写操作实时性: 搜索系统的Index一般都是NRT(Near Real Time),近实时的,比如Elasticsearch中,Index的实时性是由refresh控制的,默认是1s,最快可到100ms,那么也就意味着Index doc成功后,需要等待一秒钟后才可以被搜索到。 NoSQL数据库的Write基本都是RT(Real Ti
2021-10-13 19:34:07
219
原创 es sort排序illegal_argument_exception
createTime 的字段类型:"createTime":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } 代码中使用sourceBuilder.sort("createTime", SortOrder.DESC);查询不到数据,查看返回结果:Fielddata is disabled on text fields by...
2021-09-23 11:29:20
576
原创 git clone failed报错 4069 bytes of body are still expected
clone 时提示clone failed异常信息如下:4:07 下午 Clone failed 4069 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet early EOF fetch-pack: invalid inde...
2021-09-03 16:58:58
7328
4
转载 Spring Boot 2.+的默认连接池HikariCP详解
性能测试:各连接池性能测试:https://blog.youkuaiyun.com/qq_31125793/article/details/51241943推荐hikari的理由:https://blog.youkuaiyun.com/zxl315/article/details/80420688测试结论 1:性能方面hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。 2:druid功能最为全面,s...
2021-08-27 19:23:16
968
转载 springboot 连接池wait_timeout超时设置
使用阿里云的时序数据库时90s连接空闲会回收,导致请求时报错,设置数据库连接池的空闲超时时间,在网上找的相关配置参数,比较全的:使用springboot 线程池连接MySQL时,mysql数据库wait_timeout 为8个小时,所以程序第二天发现报错,在url配置了 autoReconnect=true 也不行,查询配置以下#验证连接的有效性spring.datasource.test-while-idle=true#获取连接时候验证,会影响性能spring.datasource..
2021-08-27 16:50:12
5789
原创 java 实现二分查找
public int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] == target) { return mid; } else if (.
2021-08-26 19:42:09
97
原创 java 工具类
from datetime import datetimefrom flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()class BaseModel(object): # 定义基础模型 gmt_modified = db.Column(db.DATETIME, default=datetime.now()) ...
2021-08-26 17:08:32
74
转载 elasticsearch的_all和_source
Y9MXSIF79G-eyJsaWNlbnNlSWQiOiJZOU1YU0lGNzlHIiwibGljZW5zZWVOYW1lIjoiSkJGYW1pbHkgQ2hpbmEiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmY...
2021-08-26 16:48:55
891
原创 idea maven cannot download sources Sources not found for:org.xxxx.xxxx:xxxx:1.0.0
点击dounload sources时,提示:Cannot download sourcesSources not found for:org.apache.lucene:lucene-core:8.9.0解决方案:执行mvnmvn dependency:resolve -Dclassifier=sources
2021-08-25 16:28:02
161
原创 关于ArrayList.subList 序列化问题
目前为止用得最多的集合是List s=new ArrayList(),没有之一;对集合截断的话,经常用到subList(0,2);但是今天遇到一个问题,return s.subList(0,2) 的结果在tair put操作时,报反序列话错误;原因是因为:subList 对象不支持反序列化;...
2018-09-12 23:11:48
2407
原创 spring boot 上传文件出错:java.io.IOException: The temporary upload location
现象:上传excel,出现报错:[Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io
2018-01-12 10:55:49
38758
3
原创 关于Long类型相等判断
工作中有时候忽略了一些细小的失误:1.Long 类型值相等的判断:一直以为i.equals(1)会是ture看一下Long equals的底层实现吧:一个很小的,一直忽略的点!
2017-12-22 14:08:06
2141
原创 java 8 Stream Collectors使用注意
JAVA 8 新特性:Stream() Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)Collectors:在使用Collectors.tomap()时,注意key值不
2017-06-28 20:47:00
856
转载 SQL 的相关概念DQL DML DDL
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。1. 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT FROM WHERE 2 .数据操纵语言DML数据操纵语言DML主要有三种形式:1) 插入:INSERT2) 更新:UP
2017-06-26 16:33:18
298
转载 Java 工具类
1.org.apache.commons.io.IOUtils closeQuietly();toString();close();readFully()lineIterator()copyLarge()readLines()toInputStream()write()toByteArray() 2.org.apache.commons.io.File
2017-06-26 10:17:05
283
转载 Java中Comparable与Comparator的区别
相同Comparable和Comparator都是用来实现对象的比较、排序要想对象比较、排序,都需要实现Comparable或Comparator接口Comparable和Comparator都是Java的接口区别Comparator位于java.util包下,而Comparable位于java.lang包下Comparable接口的实现是在类的内部(如 String、
2017-06-20 18:54:44
241
转载 Preconditions优雅的检验参数(Guava)
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高。 说明:参数验证,我们每次都要添加if
2017-06-20 13:58:25
724
转载 Centos 上安装mysql+修改初始密码
一直只在windows系统上安装mysql,比较简单,直接在mysql官网上下载安装文件,一直下一步,就ok了。 这次尝试在lunix系统上安装mysql,也是参考网上的文章:网上参考链接 自己在这里也在粘贴一遍:
2017-05-19 18:18:36
649
转载 (转载)Java中HashMap底层实现原理(JDK1.8)源码分析
近期在看一些java底层的东西,看到一篇分析hashMap不错的文章,跟大家分享一下。在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,
2017-03-22 16:09:50
310
转载 Docker 常用命令
镜像相关操作 1.docker images 查看本机所有的镜像 2.docker search 【option】 item 查找某个镜像 OPTIONS说明:--automated :只列出 automated build类型的镜像;--no-trunc :显示完整的镜像描述;-s :列出收藏数不小于指定
2017-03-09 17:19:59
259
转载 Docker 安装tomcat
准备工作:安装Docker 1.docker的安装比较简单(lunix 下),yum install docker 2.启动docker服务:service docker start Docker命令安装Tomcat 1.下载tomcat镜像 docker search tomcat-----查找镜像 docker pull
2017-03-09 17:04:14
385
转载 Java equals()与hashCode()方法
1.如果两个对象相同,那么它们的hashCode值一定要相同; 2.如果两个对象的hashCode相同,它们并不一定相同(这里说的对象相同指的是用eqauls方法比较)。 如不按要求去做了,会发现相同的对象可以出现在Set集合中,同时,增加新元素的效率会大大下降。 3.equals()相等的两个对象,hashcode()一定相等;equals()不相等的两个对象,却并
2017-03-01 15:31:02
207
原创 Java Object类
Object 1.equals() public boolean equals(Object obj) { return (this == obj); }2.toString() public String toString() { return getClass().getName() + "@" + Integ
2017-03-01 15:23:02
215
原创 mongodb 3.4 配置sharding分片
摘抄mongodb官网:Sharding is a method for distributing data across multiplemachines. MongoDB uses sharding to support deployments with very large datasets and high throughput operations.Database sy
2017-02-28 13:14:16
1074
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人