自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

灵动的艺术的博客

千里马常有而伯乐不常有

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

原创 Redis避坑指南

Redis避坑指南需要避免的坑杜绝大Value避免Key上亿热点Key踩雷缓存穿透缓存雪崩使用multiGet或者pipeline提速避免复杂操作缓存是Redis最常见的应用场景,主要是基于其高效的读写性能,且Redis内部支持事务,在使用时能够有效保证数据的一致性,同时持久化和主备机制保证了数据的高可用性。举例,网站发布一个促销活动,每天有百万人次访问,如果每次都从数据库查询,则需要消耗百万次数据库链接请求,耗费资源且低效。如果将这些数据存储到Redis(内存)中,每次查询时直接从内存中读取,不仅大大

2020-11-03 15:02:47 69

原创 JVM 参数优化建议

JVM 参数优化建议优化建议GC 日志优化建议垃圾回收器建议Heap建议其他内存回收器最佳实践ParNew + CMSG1Parallel Scavenge优化建议GC 日志优化建议在启动参数中添加 -XX:+PrintGC 或 -verbose:gc 开启日志打印在启动参数中添加 -XX:+PrintGCDetails 开启打印 GC 日志详情在启动参数中添加 -XX:+PrintGCDateStamps 和 -XX:+PrintGCTimeStamps 开启打印 GC 日志的时间在启动参数

2020-08-29 13:28:40 86

原创 图文并茂看CMS内存回收

CMS内存回收算法简述CMS 日志CMS 过程阶段 1: 初始标记(Initial Mark)CMS 日志2020-08-26T12:52:41.268+0800: 463.575: Total time for which application threads were stopped: 0.4222317 seconds, Stopping threads took: 0.0001890 seconds2020-08-26T12:52:41.268+0800: 463.575: Applicat

2020-08-29 12:48:09 172

转载 读懂 GC 日志

读懂 GC 日志安全点GC 打印控制可管理的 JVM 参数查看 JVM 参数调整 JVM 参数查看所有支持动态修改的 JVM 参数垃圾回收器日志解读CMS 日志解读JVM 配置示例这个课题拖了很久了,可以说读懂 GC 日志对于一个 java 后端开发来说是必须的事情。然而读懂 GC 日志并非是一件容易的事情,首先要对 JVM 内存模型有基本的理解,熟悉常用的 JVM 垃圾回收器,其次要知晓每个参数能够产生的效果,再次要清楚不同的垃圾回收器的日志该如何去读。这些要求给 java 后端开发读懂 gc 日志带来

2020-08-26 21:16:13 136

转载 老大难的GC原理及调优,这下全说清楚了

老大难的GC原理及调优,这下全说清楚了概述GC基础原理1 GC调优目标2 GC分代收集算法新生代(Young Generation)老年代(Old Generation)3 GC事件分类(1) Young GC(2) Old GC 、Full GC、Mixed GC4 GC日志分析5 内存分配策略CMS原理及调优1 名词解释2 CMS简介3 新生代垃圾回收4 老年代垃圾回收5 CMS常见问题G1原理及调优1 G1简介2 G1堆空间划分Region巨型对象3 G1工作模式4 全局并发标记5 G1调优注意点Fu

2020-08-13 13:15:52 167

原创 聊聊网络IO模型

聊聊NIO什么是IO?Linux网络I/O模型简介用户空间和内核空间文件描述符缓存IO网络I/O模型同步阻塞I/O同步非阻塞I/OI/O多路复用信号驱动I/O模型异步I/OI/O多路复用BIO socket编程BIOClientBIOServerBIOServerHandlerNIO socket编程缓冲区:BufferChannel多路复用器SelectorNIOClientHandleMultiplexerTimerServerReactor单线程Reactor模型多线程Reactor模型主从React

2020-07-28 21:12:05 224

转载 Java线程池实现原理及其在美团业务中的实践

Java线程池实现原理及其在美团业务中的实践一、写在前面1.1 线程池是什么1.2 线程池解决的问题是什么二、线程池核心设计与实现2.1 总体设计2.2 生命周期管理2.3 任务执行机制2.3.1 任务调度2.3.2 任务缓冲2.3.3 任务申请2.3.4 任务拒绝2.4 Worker线程管理2.4.1 Worker线程2.4.2 Worker线程增加2.4.3 Worker线程回收2.4.4 Worker线程执行任务三、线程池在业务中的实践3.1 业务背景3.2 实际问题及方案思考一、写在前面1.1

2020-07-24 15:35:21 93

原创 Mysql死锁日志阅读

Mysql死锁日志阅读死锁日志案例常见事物状态锁组合锁模式锁锁组合死锁日志案例2020-07-08 22:02:10 0x7fe014c18700*** (1) TRANSACTION:# TRANSACTION 1690883715 表示事务编号为 1690883715,ACTIVE 0 sec 表示活跃0秒,starting index read 表示事务状态为根据索引读取数据TRANSACTION 1690883715, ACTIVE 0 sec starting index read#

2020-07-09 17:24:37 213

转载 解决死锁之路(终结篇) - 再见死锁

解决死锁之路(终结篇) - 再见死锁一、开启锁监控1. 基于系统表2. 基于系统参数二、读懂死锁日志三、常见死锁分析3.1 死锁案例一3.2 死锁案例二死锁案例三3.4 如何避免死锁总结在前面的几篇博客中,我们学习了事务,隔离级别,各种锁类型,以及各种 SQL 语句的加锁原理,这一系列的知识学习下来,断断续续,竟然已经过去了大半年的时间。随着对数据库原理的学习越来越深入,越发现一发不可收拾,这里...

2020-05-07 14:35:39 228

原创 @Valid 参数校验不生效问题解决

@Valid 参数校验不生效问题解决问题现象手动检查问题现象import lombok.Data;import javax.validation.constraints.NotNull;@Datapublic class IDDTO { @NotNull private Long id;}@Slf4j@Controller@RequestMapping("...

2020-04-30 13:59:39 5609

原创 jstack 线程状态详解

jstack 线程状态详解jatsck 用法线程状态一图以庇之系统线程状态 (Native Thread Status)jatsck 用法#jstack -hUsage: jstack [-l] <pid> (to connect to running process) jstack -F [-m] [-l] <pid> ...

2020-04-22 12:03:52 251

原创 进程与线程

进程与线程进程与线程进程线程线程与进程的区别线程的状态进程与线程进程进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资...

2020-04-22 11:16:18 105

转载 mysql 索引加锁分析

mysql 索引加锁分析背景MVCC:Snapshot Read vs Current ReadCluster Index:聚簇索引2PL:Two-Phase LockingIsolation Level一条简单SQL的加锁实现分析组合一:id主键+RC组合二:id唯一索引+RC组合三:id非唯一索引+RC组合四:id无索引+RC组合五:id主键+RR组合六:id唯一索引+RR组合七:id非唯一索...

2020-04-21 14:41:05 491

转载 谈谈MySQL的锁

谈谈MySQL的锁MySQL中的锁锁的类型锁的粒度表锁页锁行锁InnoDB中的锁意向锁行锁的算法一致性非锁定读一致性锁定读锁带来的问题死锁锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具。在计算机中,是协调多个进程或县城并发访问某一资源的一种机制。在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有...

2020-04-21 11:11:45 84

转载 谈谈MySQL InnoDB存储引擎事务的ACID特性

谈谈MySQL InnoDB存储引擎事务的ACID特性前言ACID问题:隔离性里隔离级别的问题:Redo log对比binlogredo log blockcrash recoveryUndo log基本文件结构Undo log的格式purge多版本控制MVCCInnoDB存储引擎的行结构事务链表ReadViewRC和RR隔离级别ReadView的实现方式总结为什么InnoDB能够保证原子性A?用...

2020-04-21 10:38:34 143

原创 记一次系统频繁502故障处理

记一次系统频繁502故障处理故障说明查看机器指标继续查看指标top -p 242757 -Hprintf '%x\n' 242828查看阻塞线程在干什么查看内存使用情况jmap -histo:live 242757|lessdump内存信息故障说明最新发现线上机器总是会出现请求成功几次然后又一次502失败。查看机日志发现拒绝执行[2019-11-06 15:31:55.841][NettyC...

2019-11-06 16:22:12 9900

原创 Maven冲突 omitted for conflict with 解决

Maven冲突 omitted for conflict with 解决实际开发过程中,我们可能经常遇见omitted for conflict with/omitted for duplicate。

2019-09-29 10:21:46 16349 3

原创 IPV4内网地址网段

内网地址分为A,B和C类以下这些地址都属于内网A类地址范围:10.0.0.0 - 10.255.255.255B类地址范围:172.16.0.0 - 172.31.255.255C类地址范围:192.168.0.0 - 192.168.255.255除了以上的地址和一些比较特殊的地址如127.0.0.1, 169.254.0.0/16等,其他的都属于公网地址...

2019-09-19 11:03:31 1937

原创 不建议使用sun.misc.BASE64Encoder

最近在项目中用到sun.misc.BASE64Encoder包的BASE64Encoder对字符串进行编码,但是将编码后的字符串输出后发现字符串中存在换行符\r\ngoogle 原来“回车换行符(\r\n)”是在Windows才有,而Linux只有换行(\n),Mac只有回车(\r)。建议使用import org.apache.commons.codec.binary.Base64;进行替换...

2019-07-16 19:36:29 3318 1

原创 偶像的力量-松哥经典语录

偶像的力量-松哥经典语录网络传输 拆包/粘包网络传输 拆包/粘包缓冲区不够了,就得拆包,接受端没及时读取缓冲区数据,就会粘包粘包、拆包问题很好解决的,在应用层报文中带长度信息就解决这个问题了tcp的报文头是没长度的,因为是可靠传输。udp有长度信息,所以不会发生拆包粘包问题。在应用层报文中带长度信息就解决这个问题了,否则字节流不知道从哪个地方断开。哪天tcp协议升级了,假如加入了长度信...

2019-07-12 10:27:40 173

转载 HTTP协议网络请求状态码

HTTP协议网络请求状态码2开头3开头4开头5开头1xx - 信息提示2xx - 成功3xx - 重定向301 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。   新的永久性的 URI 应当在响应的 Location 域...

2019-07-02 14:40:58 185

原创 Redis数据结构

Redis数据结构String使用场景常用命令SET可选参数SETNXINCRNoteMSETMSETNX其他List使用场景Set使用场景SortedSet使用场景:Hash使用场景:Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LR...

2019-06-28 10:45:07 137

转载 Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解为什么需要 Stream什么是聚合操作Stream 总览什么是流流的构成流的使用详解流的操作map/flatMapfilterforEachfindFirstreducelimit/skipsortedmin/max/distinctMatch进阶:自己生成流Stream.generateStream.iterategroupingBy/partit...

2019-06-26 11:48:09 608

转载 Java 8 的 Lambda 表达式和流处理

Java 8 的 Lambda 表达式和流处理Lambda 表达式引入 Lambda 表达式的动机函数式接口目标类型名称解析流顺序执行和 并行执行相遇顺序Spliterator有状态和无状态操作流水线源中间操作终结操作总结原文地址Lambda 表达式当提到 Java 8 的时候,Lambda 表达式总是第一个提到的新特性。Lambda 表达式把函数式编程风格引入到了 Java 平台上,可以极...

2019-06-26 11:27:00 933

转载 函数式编程中的重要概念

函数式编程中的重要概念函数式编程范式的意义函数类型与高阶函数部分函数柯里化闭包递归记忆化原文地址函数式编程范式的意义在众多的编程范式中,大多数开发人员比较熟悉的是面向对象编程范式。一方面是由于面向对象编程语言比较流行,与之相关的资源比较丰富;另外一方面是由于大部分学校和培训机构的课程设置,都选择流行的面向对象编程语言。面向对象编程范式的优点在于其抽象方式与现实中的概念比较相近。比如,学生、课...

2019-06-26 11:15:17 1662

转载 函数式编程思想概论

函数式编程思想概论前言函数λ 演算λ项绑定变量和自由变量约简α 变换β 约简η 变换纯函数、副作用和引用透明性函数式编程与并发编程总结原文地址前言在讨论函数式编程(Functional Programming)的具体内容之前,我们首先看一下函数式编程的含义。在维基百科上,函数式编程的定义如下:“函数式编程是一种编程范式。它把计算当成是数学函数的求值,从而避免改变状态和使用可变数据。它是一种声...

2019-06-26 10:57:16 3530

原创 Java8 日期、时间骚操作

Java8 日期、时间骚操作LocalDate和LocalTimeLocalDateLocalTimeLocalDateTime日期解析与格式化时间调整TemporalAdjuster定制TemporalAdjuster在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。故此,Java8引入了一套全新的...

2019-06-20 15:31:27 397

转载 Hotspot JVM的常用选项

Hotspot JVM的常用选项选项的分类XX选项的语法指定JVM的类型:-server,-client指定JIT编译器的模式:-Xint,-Xcomp,-Xmixed-version和-showversion查看XX选项的值: -XX:+PrintCommandLineFlags, -XX:+PrintFlagsInitial和-XX:+PrintFlagsFinal内存大小相关的选项Outof...

2019-06-18 19:03:25 100

原创 Java 指令与字节码

Java 指令与字节码查看class文件编写简单java代码编译代码查看class文件Java字节码总的结构表常量池常量池容量计数器鉴于十进制的计算机还遥遥无期,我们目前的计算机都是二进制的计算机,而二进制的计算机仅能识别0和1的信号。经过0和1的多位组合又可以产生更多不同的信号。另外,现在计算机领域通过进行0和1的多位组合表示对字符进行编码(例如Unicode),我们的计算机可以处理字符。同样...

2019-05-10 12:25:29 454

原创 多线程与死锁

多线程与死锁动态顺序锁死锁Jconsole 查看死锁固定锁顺序避免死锁协作锁之间发生死锁开放调用避免死锁RetreenLock锁超时解决死锁Java多线程开发中,为了避免多个线程对同一份数据的操作,我们需要对我们的线程做加锁的操作,只要加锁,就必然存在锁竞争的问题,如果锁竞争的问题处理不当就会出现死锁问题。死锁会让程序一直卡住,程序不再往下执行。我们只能通过中止并重启的方式来让程序重新执行。这...

2019-05-09 13:25:54 293

原创 Mysql 数据库事物及隔离级别

Mysql 数据库事物及隔离级别事务的基本要素(ACID)事务的隔离级别问题数据准备READ UNCOMMITTED事务的基本要素(ACID)原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。...

2019-05-08 11:24:27 107

原创 Mysql Join总结

Mysql Join总结Mysql 连接数据准备新建测试数据库新建测试数据表MySQL交叉连接(CROSS JOIN)MySQL内连接(INNER JOIN)MySQL左连接(LEFT JOIN)MySQL右连接(RIGHT JOIN)ON 与Where首先,一张最完美的图来展示我们可能遇到的各种连接场景,当然这幅图不适合Mysql,因为Mysql不支持Full Join,但是我们依然可以来理解...

2019-05-07 15:42:43 533

原创 URL和URI

URL和URIURL 统一资源定位符URN 统一资源名称URI 统一资源标识符联系与区别总结URL 统一资源定位符URL 英文全称为 Uniform Resource Locator,中文为翻译“统一资源定位符”,是Internet上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。URL是在网络上定位资源的最普遍使用的方式,它提供了一种通过描述其网络位置或主...

2019-05-06 17:58:39 173

原创 Mysql主从复制搭建 与读写分离

Mysql主从复制搭建准备条件Master-Server 配置修改配置重启Mysql配置主从复制账户Slave-Server 配置修改配置重启Mysql配置Master信息开启主从复制读写分离Master-Server 配置Slave-Server 配置准备条件准备2台机器先安装MySQL 5.7.20Master-Server : 192.168.0.100Slave-Server : ...

2019-04-11 13:50:30 159

原创 Centos 源码安装安装Mysql

Centos 安装Mysql源码下载安装cmake(mysql5.5以后是通过cmake来编译的)前置条件configCURSES_LIBRARY 错误安装ncurses-devel继续config安装配置初始化添加systemV控制脚本启动尝试链接修改密码尝试链接添加系统路径环境变量源码下载传送门安装cmake(mysql5.5以后是通过cmake来编译的)yum install -y...

2019-03-26 17:06:47 210

原创 Centos7增加swap交换空间避免OOM

Centos7增加swap交换空间避免OOM检查系统的Swap信息检查可用的存储空间创建Swap文件启用Swap文件使Swap文件永久生效更改Swap配置(可选)如下所示,当我们使用服务器进行比较耗内存的操作的时候,我们的进程通常会出现由于内存不足被系统内核Kill掉的情况。#tail -f /var/log/messagesMar 26 12:53:14 iZbp10exab3v6j02j...

2019-03-26 14:01:36 855

原创 FastJson的SerializerFeature序列化特性说明

FastJson的SerializerFeature序列化特性说明FastJson 简单使用SerializerFeatureSerializerFeature 说明WriteEnumUsingName || WriteEnumUsingToStringDisableCircularReferenceDetectWriteDateUseDateFormatFastJson 简单使用我们在使用f...

2019-03-20 14:16:57 3667

原创 CentOS PHP5.6源码安装

CentOS PHP5.6源码安装安装编译环境新建安装目录下载源码解压移动配置安装php虚拟机运行配置文件配置systemV控制脚本配置php.ini配置 php-fpm.conf启动安装可能出现的错误依赖记录错误一错误二错误三错误四错误五安装编译环境yum install gcc-c++新建安装目录mkdir -p /usr/local/php5.6 &amp;&amp; cd /us...

2019-03-08 12:51:26 875

原创 CSDN2018博客之星评选结果预测第二弹

CSDN2018博客之星评选结果预测第二弹CSDN2018博客之星活动开始之初,出于个人娱乐,我做了一次《大数据预测CSDN2018博客之星评选结果》,受到了较多好评,当然也十分荣幸的受到CSDN官方重视,并将文章放置在Banner推广位。至今,CSDN2018博客之星的评选结果即将出炉。我很荣幸收到了CSDN官方的邀请,他们希望我能够在结果出炉之前再次作出一次大胆预测。所以,我将再次开启大胆...

2019-02-10 17:59:26 11550 5

原创 深度学习Python协程

深度学习Python协程基本定义可迭代对象迭代器生成器yield协程基本案例协程状态使用协程连续计算平均值协程返回值yield fromyield from与同步非阻塞基本定义可迭代对象可迭代对象(Iterable):可以直接作用于for循环的对象统称为可迭代对象。可以使用isinstance()判断一个对象是否是Iterable对象。&gt;&gt;&gt; from collectio...

2018-12-24 19:49:06 555 3

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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