自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 分库分表?如何做到永不迁移数据和避免热点?

mysql分库分表

2023-03-02 11:25:13 391

原创 Okhttp java.io.EOFException: \n not found: size=0 content= unexpected end...

Okhttp java.io.EOFException: \n not found: size=0 content= unexpected end...

2023-01-12 15:13:08 2422

转载 获取客户端真实IP

但是在客户通过向代理软件就不能获取到客户端的真实IP地址了。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。J2EE的SERVLET标准接口javax.servlet.http.HttpServletRequest提供了getRemoteAddr()方法,用来取得来访者的IP地址。

2023-01-12 14:17:53 349

原创 CXF导致的JVM MetaSpace OOM问题

线上CXF版本: 3.1.12**使用场景:**定时任务,每次任务启动时调用jaxWsDynamicClientFactory.createClient(wsdlUrl)创建客户端client,每次任务结束前调用client.destroy()销毁客户端**问题:**任务运行一段时间后,metaspace溢出导致服务重启**分析dump文件:**发现程序创建了大量的URLClassLoader,链式引用,无法回收,最后导致MetaSpace溢出CXF源码分析:jaxWsDynamicClient

2021-11-07 22:06:24 1281 7

原创 CPU使用率和负载区别及分析

当我们使用top命令查看系统的资源使用情况时会看到 load average,如下图所示。它表示系统在1、5、15分钟的平均工作负载。那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢?load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。这个数字越小越好。1. CPU负载和CPU利用率的区别CPU利用率:显示的是程序在运行期间实时占用的

2021-11-01 11:19:50 5376

原创 sql分组排序

对于这样的sql需求:按照某个字段分组排序,选出每组里第一条数据进行展示,可用如下方法达成。Mysql:SELECT vin, SUBSTRING_INDEX(GROUP_CONCAT(status ORDER BY update_time desc),',',1),MAX(update_time) FROM tr_party_account_role WHERE role_code = 'primary_user' GROUP BY vin;Oracle,Hive,Impala:

2021-10-28 17:00:48 3922

原创 线程池中传递MDC

线程池中传递MDC@Beanpublic Executor asyncServiceExecutor() { logger.info("start asyncServiceExecutor"); // 使用VisiableThreadPoolTaskExecutor ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); // 配置核心线程数 executor.setCorePoolSize(

2021-04-15 17:35:09 1237

原创 logback后缀超过1000的日志文件不删除

bug描述:https://jira.qos.ch/browse/LOGBACK-1175commits:https://github.com/qos-ch/logback/commit/f264607fb450但是!!!这个bug在1.3.0-alpha1中才修复,最新的released版本1.2.3中,这个bug依旧存在。logback

2021-03-09 13:11:40 1673

转载 HotSpot JVM垃圾回收器总结

HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器.我们可以根据自己实际的应用需求选择最适合的垃圾收集器.根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率.1 SerialSTW:工作线程全部停止。单线程只会使用一个CPU或一条GC线程进行垃圾回收,并且在垃圾回收过程中暂停其他所有的工作线程,从而用户的请求或图形化界面会出现卡顿.适合Client模式一般客户端应用...

2021-03-02 11:19:20 290

转载 伪共享(false sharing),并发编程无声的性能杀手

共享(false sharing),并发编程无声的性能杀手在并发编程过程中,我们大部分的焦点都放在如何控制共享变量的访问控制上(代码层面),但是很少人会关注系统硬件及 JVM 底层相关的影响因素。前段时间学习了一个牛X的高性能异步处理框架 Disruptor,它被誉为“最快的消息框架”,其 LMAX 架构能够在一个线程里每秒处理 6百万 订单!在讲到 Disruptor 为什么这么快时,接触到了一个概念——伪共享( false sharing ),其中提到:缓存行上的写竞争是运行在 SMP 系统中并行线

2021-02-22 10:54:10 595

转载 java synchronized锁升级流程

转载自:https://blog.dreamtobe.cn/2015/11/13/java_synchronized/

2021-01-13 22:35:31 224

转载 深入理解CPU上下文切换

我们都知道CPU上下文切换,会增加系统负载。那什么是CPU上下文,为什么要切换?什么是CPU上下文我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器(Program Counter,PC)。CPU 寄存器,是

2020-12-14 22:06:33 186

原创 [Cloudera][JDBC](10140) Error converting value to long

使用spark通过impala-jdbc读取kudu表报错:java.sql.SQLDataException: [Cloudera][JDBC](10140) Error converting value to long.通过自定义方言解决 //注册自定义方言 JdbcDialects.registerDialect(new JdbcDialect() { override def canHandle(url: String): Boolean = url.startsWith

2020-11-07 15:45:03 1510

原创 Mysql char和varchar的区别

建表语句CREATE TABLE `bbb` ( `id` bigint(20) NOT NULL, `a` varchar(10) DEFAULT NULL, `b` char(10) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;Insert语句-- 插入a,b的值均带空格INSERT INTO `test`.`bbb` (`id`, `a`, `b`) VALUES ('13'

2020-08-01 11:32:24 131 1

原创 搜索推荐

需求:用户每输入一个字都可能会发请求查询搜索框中的搜索推荐。所以搜索推荐的请求量远高于搜索框中的搜索。es针对这种情况提供了suggestion api,并提供的专门的数据结构应对搜索推荐,性能高于match,但它应用起来也有局限性,就是只能做前缀匹配。再结合pinyin分词器可以做到输入拼音字母就提示中文。如果想做非前缀匹配,可以考虑Ngram。不过Ngram有些复杂,需要开发者自定义分析器。比如有个网址www.baidu.com,用户可能记不清具体网址了,只记得网址中有du,此时用户输入du两个字母也是

2020-06-27 16:27:09 302

转载 网络编程释疑之:同步,异步,阻塞,非阻塞

一讲到网络编程的I/O模型,总会涉及到这几个概念。问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦。今天我也来给大家讲解一下我对这几个概念的理解。既然网络上众说纷纭,不如找个权威参考一下,这个权威就是《UNIX网络编程:卷一》第六章——I/O复用。书中向我们提及了5种类UNIX下可用的I/O模型:阻塞式I/O;非阻塞式I/O;I/O复用(select,poll,epoll…);信号驱动式I/O(SIGI

2020-06-24 14:37:53 183

转载 nginx问题排查: upstream prematurely closed connection while reading response header from upstream

问题背景我们这边是一个基于Nginx的API网关(以下标记为A),最近两天有调用方反馈,偶尔会出现502错误,我们从Nginx的error日志里看,就会发现有" upstream prematurely closed connection while reading response header from upstream"这么一条错误日志,翻译过来其实就是上游服务过早的关闭了连接,意思很清楚...

2020-05-08 11:12:22 34742 3

原创 Redis单线程为什么这么快

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现...

2020-05-03 23:17:00 159

转载 Connection reset by peer原因分析定位

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。背景client和server通过websocket协议通信,长连接保活,server前有nginx做反向代理,client和server是多对多关系;server端定时给client下发任务,client执行任务并将结果上...

2020-05-01 23:25:40 1314

原创 java排查CPU占用过高

背景记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高的线程?排查思路top -c //-c表示显示整个命令行,而不只是显示命令名结果如下:PID=21900的进程占用CPU高,则查看该进程各个线程的cpu使用情况top -Hp 219...

2020-04-24 10:51:11 418

原创 spring-kafka配置批量监听

spring-kafka开启批量监听极简方法,无需通过@Bean注解手动创建KafkaListenerContainerFactory的Bean@Configurationpublic class KafkaConfig { @Autowired private ConcurrentKafkaListenerContainerFactory listenerContainer...

2020-02-20 22:30:56 1057 1

原创 logback totalSizeCap超过2G失效

低版本logback totalSizeCap超过2G,配置失效导致不会自动删除日志文件,将logback版本升级至>=1.2.0可解决。 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-co...

2020-01-20 15:42:59 1721

原创 Java OutOfMemoryError: unable to create new native thread

java.lang.OutOfMemoryError共有8种类型,其中java.lang.OutOfMemoryError: unable to create new native thread是很常见的一种,这类错误通常发生在应用试图创建新线程时。可能原因系统内存耗尽,无法为新线程分配内存创建线程数超过了操作系统的限制解决方案排查应用是否创建了过多的线程通过jstack确定应...

2020-01-19 10:36:59 261

原创 Java加密算法库BouncyCastle

BouncyCastle是一个提供了很多哈希算法和加密算法的第三方库。它提供了Java标准库没有的一些算法,例如,RipeMD160哈希算法。其它第三方库还有Commons Codec等。我们来看一下如何使用BouncyCastle这个第三方提供的算法。首先,我们必须把BouncyCastle提供的jar包放到classpath中。这个jar包就是bcprov-jdk15on-xxx.jar,...

2020-01-12 22:37:46 3607

原创 nginx双向认证配置proxy_ssl_verify_depth详解

当待验证的客户端证书是由intermediate-CA签发,而非有root-CA签发时,需要在proxy_ssl_trusted_certificate中配置intermediate-CA和root-CA组成的证书链文件也就是说,直接尝试使用中级 CA 来验证客户端是无法通过的,openssl 会自动的去找中级 CA 的签发者一层层验证上去,直到找到根。因此,在实际使用的时候,需要注意一下两点...

2019-12-23 13:46:11 6046

转载 Java并发精选面试题

Java 并发编程1、并发编程三要素?2、实现可见性的方法有哪些?3、多线程的价值?4、创建线程的有哪些方式?5、创建线程的三种方式的对比?6、线程的状态流转图7、Java 线程具有五中基本状态8、什么是线程池?有哪几种创建方式?9、四种线程池的创建:10、线程池的优点?11、常用的并发工具类有哪些?12、CyclicBarrier 和 CountDownLatch 的区别...

2019-12-04 10:25:43 135

转载 MySQL · 性能优化 · MySQL常见SQL错误用法

1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT *FROM operationWHERE type = 'SQLStats' AND name = 'Slo...

2019-10-29 10:43:39 198

转载 XStream内存泄漏

一、起支付系统突然出现频繁的超时,查看error日志没有什么发现,凭经验去gc日志瞅一眼,有频繁的full gc,而且每两次gc,老年代会有80%的内存无法被回收,基本确认是系统出现内存泄漏,导致老年代空间被占满,频繁触发full gc,full gc 触发stop the word,导致业务接口超时。二、承2.1、dump内存数据#netstat -tunlp|grep 端口号#jma...

2019-08-16 14:55:42 856

转载 Percona和MariaDB对比

转载:链接:https://www.imooc.com/article/30432缘起自从甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险。而且Oracle对培养MySQL这个免费的儿子并不太用心,漏洞修补和版本升级的速度一段时间非常缓慢,所以业界对MySQL的未来普遍不抱有乐观态度。因此社区采用分支的方式来避开这个风险,例如谷歌、Facebook、RedHat都将MySQL替换成了...

2019-07-18 09:40:06 2255

原创 Springboot 自动配置数据源被覆盖

Springboot 自动配置数据源被覆盖

2019-03-17 21:38:27 1072

原创 Elastic-Search updateByQuery conflicts

Elastic-Search updateByQuery详解前言解决冲突的思路1.采用分布式锁2.基于乐观锁重试机制参考前言ES嵌套索引的增删改其实是不安全的,所有的数据库db系统都会存在并发问题,像关系型数据库MySQL,Oracle,SQL Server,默认采用的是悲观锁,而在Elastic-Search中采用的乐观锁。下面先熟悉下什么是乐观锁和悲观锁:悲观锁(Pessimistic...

2019-03-17 21:36:23 1400

原创 RocketMQ集群搭建

RocketMQ集群搭建1.集群架构集群环境配置集群配置文件修改启动脚本参数详细搭建步骤Rocketmq-Console搭建步骤停止集群注意点参考1.集群架构集群环境配置OS: Red Hat 4.8.5-16 Memory: 8G 2台JDK 1.8.0_151-b12集群配置文件[broker-a-m] broker-a.propertiesbrokerClusterNa...

2019-02-23 23:53:40 370 1

空空如也

空空如也

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

TA关注的人

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