自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_50275872的博客

在沙滩上捡的一点鹅卵石

  • 博客(41)
  • 收藏
  • 关注

原创 @PostConstruct虽好,请勿乱用

1.@PostConstruct 修饰的方法是在bean初始化的时候执行,并且相比其它初始化方法,它们的顺序是@PostConstruct> nitializingBean > init-method2.不要在@PostConstruct 中执行耗时任务,它会影响程序的启动速度,如果实在有这样的需求可以考虑异步执行或者使用定时任务。3.程序中如果有类似future.get获取线程执行结果的代码,尽量使用有超时时间的get方法。

2023-11-21 15:52:19 558

原创 动态代理JDK与cglib的区别之:如何处理被代理方法中的This调用

动态代理JDK与cglib在存在方法循环嵌套时的区别

2023-09-11 13:10:13 186

原创 一个由Dubbo Thread pool is EXHAUSTED引发的问题排查

Dubbo Thread pool is EXHAUSTED

2022-09-12 01:12:07 2357 1

原创 ThreadLocal内存泄漏分析以及Dubbo使用ThreadLocal时的优化

ThreadLcoal 内存泄漏分析

2022-08-07 19:35:14 1365

原创 Dubbo路由规则:静态标签的使用与扩展

Dubbo 路由静态标签的使用

2022-08-01 23:35:32 1047

原创 SpringMVC统一封装响应结果接口返回String类型时的异常问题分析

利用ResponseAdvisor对Controller的响应结果做了统一封装,接口返回String类型时,抛出类型转换异常。

2022-06-26 03:00:30 1633 2

原创 Netty指南(8):Netty的TCP粘包和拆包解决方案

一、Netty编解码器与Handler调用机制1.1 基本说明Netty 的组件设计:Netty 的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe 等ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现 ChannelInboundHandler 接口(或 ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被业务逻辑处理。当要给客户端发送

2022-05-06 00:44:58 667 1

原创 Netty指南(7):Google protobuf 基本介绍

一、Google protobuf1.1 编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码[示意图]codec(编解码器)的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据1.2 Netty 本身的编码解码的机制和问题分析Netty 自身提供了一些 codec(编解码器)Netty 提供的编码器

2022-05-06 00:32:08 482

原创 Netty指南(6):Netty核心模块组件简介

一、Netty核心模块组件1.1 Bootstrap、ServerBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。常见的方法有public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup

2022-05-06 00:28:50 267

原创 Netty指南(5):Netty高性能架构设计之Reactor线程模型

一、Netty高性能架构设计1.1 线程模型基本介绍不同的线程模式,对程序的性能有很大影响,为了搞清 Netty 线程模式,我们来系统的讲解下各个线程模式,最后看看 Netty 线程模型有什么优越性。目前存在的线程模型有:传统阻塞 I/O 服务模型 Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor多线程;主从 Reactor多线程Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型

2022-05-06 00:20:22 321

原创 Netty指南(4):理解NIO与零拷贝原理

1 NIO 与零拷贝1.1 零拷贝基本介绍零拷贝是网络编程的关键,很多性能优化都离不开。在 Java 程序中,常用的零拷贝有 mmap(内存映射)和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?我们分析 mmap 和 sendFile 这两个零拷贝另外我们看下 NIO 中如何使用零拷贝1.2 传统 IO 数据读写Java 传统 IO 和网络编程的一段代码File file = new File("test.txt");RandomAccessFile raf =

2022-05-06 00:00:09 196

原创 Netty指南(3):深入理解Java NIO编程

一、Java NIO编程1.1 Java NIO 基本介绍同步异步阻塞非阻塞可参考IO 与 NIOJava NIO 全称 Java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO),是同步非阻塞的。NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。【基本案例】NIO 有三大核心部分: Channel(通道)、Buffer(

2022-05-05 23:53:13 330

原创 Netty指南(2):Java BIO模型工作机制

二、Java BIO编程2.1 I/O 模型2.1.1 模型基本说明I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。Java 共支持 3 种网络编程模型 I/O 模式:BIO、NIO、AIO。Java BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。【简单示意图】Java NIO:同步非阻塞,服务器实现模式为一个线程处

2022-05-05 23:09:17 140

原创 Netty指南(1):Netty简介

一、Netty介绍与应用场景1.1 Netty 的介绍Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。Netty 本质是一个 NIO 框架,适用于服务器通讯相关的多种应用场景。要透彻理解 Netty,需要先学

2022-05-05 22:50:17 225

原创 并发编程的艺术(11):JUC里的工具类介绍

JUC

2022-04-21 01:22:12 945

原创 并发编程的艺术(10):深入了解Java里的线程池

ThreadPoolExecutor

2022-04-21 01:09:13 2807

原创 并发编程的艺术(9):final的使用和原理

final

2022-04-21 00:59:37 413

原创 并发编程的艺术(8):Java里的无锁模型

无锁模型

2022-04-21 00:51:49 267

原创 并发编程的艺术(7):Java的内存模型、volatile及happens-before

共享模型之内存

2022-04-21 00:42:24 180

原创 并发编程的艺术(6):详解ReentrantLock的原理

AQS ReentrantLock

2022-04-21 00:31:17 149

原创 并发编程的艺术(5):ReentrantLock的使用

ReentrantLock

2022-04-21 00:22:50 365

原创 并发编程的艺术(4):浅谈wait/notify、park/unpark的使用和原理

wait/notify、park/unpark

2022-04-21 00:06:29 1126

原创 并发编程的艺术(3):深入理解Synchronized的原理

Synchronized原理

2022-04-20 23:49:00 193

原创 并发编程的艺术(2):Synchronized的使用场景

Synchronized

2022-04-20 16:33:23 803

原创 并发编程的艺术(1):详解Java中的线程

进程与线程一个进程之内可以分为

2022-04-20 10:51:05 701

原创 Redis的设计与实现(6):Redis如何实现高可用

十、SentinelSentinel(哨兵)是Redis的高可用性(Hign Availability,HA)的解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及属下的所有从服务器。当主服务器下线时,自动将下线的某个主服务器属下的某个从服务器升级为新的主服务器。从而实现故障转移,当原来的主服务器重新上线时,会被降级为从服务器。下面展示了哨兵监视主从的状态:10.1启动并初始化Sentinel启动Sentinel有两种方式:redis-sentine

2022-04-18 01:03:38 595

原创 Redis的设计与实现(5):主从复制策略和优化

九、复制通过SLAVEOF命令或配置文件中设置slaveof选项,让一个服务器去复制另一个服务器,被复制的为主服务器,对其复制的称为从服务器。9.1旧版复制功能Redis在2.8以前使用旧版本复制,在短线重连后的从服务器会遇上低效的情况。Redis的复制功能分为同步和命令传播俩操作:同步用于把从服务器的数据库状态更新至主服务器的数据库状态。命令传播是在主服务器的数据库状态被修改时,导致主从数据库状态不一致时,让主从回到一致的过程。同步从服务器对主服务器的同步(下文以主从代替),需要向主服

2022-04-18 01:00:15 687

原创 Redis的设计与实现(4):什么是Redis的事件驱动程序

六、事件Redis服务器是一个事件驱动程序,主要有两种:文件事件:Redis服务器通过套接字与客户端连接,文件事件就是服务器对套接字操作的抽象。服务器与客户端通信会产生相应文件事件,服务器通过监听这些事件来完成一系列网络通信操作。时间事件:Redis服务器有一些需要在给定时间内执行的操作,而时间事件就是对这类定时操作的抽象。简单来说,文件事件就是套接字操作相关的事件;时间事件就是定时操作相关事件。6.1文件事件Redis基于Reactor模式开发的网络事件处理器,就是文件事件处理器(file

2022-04-18 00:52:24 990

原创 Redis的设计与实现(3):持久化策略RDB、AOF

RDB AOF

2022-04-18 00:41:27 569

原创 Redis的设计与实现(2):如何处理过期键

Redis的过期策略

2022-04-18 00:20:43 368

原创 Redis的设计与实现(1):5种基本数据结构的底层实现

5种数据结构

2022-04-17 23:56:22 1021

原创 深入理解MySQL(7):MySQL如何调优

MySQL九、MySQL调优影响MySQL的性能因素:系统各种配置及规则数据超大文本数据Schema设计对系统的性能影响硬件环境对系统性能的影响对于MySQL层优化一般遵从五个原则:减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘IO返回更少的数据:只返回需要的字段和数据分页处理 减少磁盘io及网络io减少交互次数:批量DML操作,函数存储等减少数据连接次数减少服务器CPU开销:尽量减少数据库排序操作以及全表查询,减少cpu 内存占用利用更多资源:使用表分区,

2022-04-13 02:03:46 971

原创 深入理解MySQL(6):MySQL日志简析

MySQL中的日志查询日志(log):记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。慢查询日志(slow query log):设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。默认不启动,可用`set global...

2022-04-13 01:40:53 1352

原创 深入理解MySQL(5):详谈MySQL锁算法

MySQL的锁

2022-04-13 01:27:05 972

原创 深入理解MySQL(4):详谈MySQL事务及MVCC原理

MySQL事务

2022-04-13 01:19:38 1109

原创 深入理解MySQL(3):详谈SQL的执行顺序

MySQL五、SQL执行顺序编写的一条sql语句SELECT DISTINCT <select_list> FROM <left_table> <join_type>JOIN<right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list>

2022-04-13 01:08:09 1753

原创 深入理解MySQL(2):详谈索引结构

MySQL

2022-04-13 00:59:44 1002 1

原创 计算机网络-HTTP和TCP/IP协议简介

一、HTTP1.常见名词名称简介LAN Local Area Network 局域网WLAN Wireless Local Area Network 无线局域网WAN Wide Area Network 广域网MAC Media Access Control 网卡地址CSMA Carrier Sense Multiple Access

2022-04-13 00:35:50 8619 1

原创 深入理解MySQL(1):架构与存储引擎简介

MySQL学习笔记

2022-04-11 15:31:30 671

原创 Kibana常用查询命令

kibana 查询es 数据常用命令

2021-09-25 11:58:12 16685

空空如也

空空如也

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

TA关注的人

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