自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 文件上传失败: java.io.IOException: The temporary upload location [...] is not valid

临时目录不存在,可能原因系统运行久了,临时文件目录被系统自动清除了。启动时增加参数-Djava.io.tmpdir=自定义目录。重启服务,重启后被删除的tomcat目录会重新生成。tmpwatch 删除文件的逻辑。设置文件临时存储路径。

2023-03-23 10:56:52 3668 1

转载 MySQL数据库之互联网常用分库分表方案

一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 ->分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库。2、CPU瓶颈第一种:SQL问题,如..

2022-04-28 15:03:12 856

转载 【转载】图解 Java 中那 18 把锁

乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个数据,所以每次操作前都会上锁,这样其他线程想操作这个数据拿不到锁只能阻塞了。在 Java 语言中synchronized和ReentrantLock等就是典型的悲观锁...

2022-02-15 10:23:10 378

转载 【转载】MySQL经典36问

原文地址:程序员大彬的MySQL经典36问!本期 MySQL 面试题的目录如下: 事务的四大特性? 事务隔离级别有哪些? 索引 什么是索引? 索引的优缺点? 索引的作用? 什么情况下需要建索引? 什么情况下不建索引? 索引的数据结构 Hash 索引和 B+ 树索引的区别? 为什么 B+ 树比 B 树更适合实现数据库索引? 索引有什么分类?.

2022-01-25 09:53:27 295

原创 【异步并行案例】CompletableFuture

【场景】当一个接口需要调用多个外部接口的时候,自己的接口会随着调用外部接口的耗时增加而增加,如果多个外部接口并行,那么自己接口至少需要多个外部接口的总耗时才能响应,如果多个外部接口异步请求,便可大大节省请求外部接口所耗时。具体请看下图:以下简单的写了下代码,类似的实现方式: private ExecutorService executor = Executors.newFixedThreadPool(3); @Test void test01() throws Ex..

2021-12-30 16:19:12 569

原创 java后端程序员常用工具【持续更新...】

【正则表达式】https://regexr.com/【Json格式化工具】http://json.cn/https://www.bejson.com/【在线Cron表达式生成器】https://www.matools.com/cron/https://cron.qqe2.com/【时间戳转换工具】http://tool.chinaz.com/tools/unixtime.aspx【在线文本差异比较工具】https://www.qianbo.com.

2021-11-16 10:35:03 4384

原创 【策略模式】SpringBoot 使用自定义注解实现策略模式【订单场景模拟】【超详细】【含代码源码】

一、前言整体思路:通过在策略类上使用自定义注解,定义的orderType不同来区分各种订单,再根据不同的orderType将策略类存储,使用时再根据orderType获取策略类做不同的处理。代码结构:(案例以京东、淘宝、苏宁订单类型为例)二、代码1、自定义策略注解注解import com.hong.strategy.enums.OrderTypeEnum;import java.lang.annotation.ElementType;import java.lang.a..

2021-10-09 17:38:36 2599 2

转载 MySQL Binlog 详细介绍

Binlog 简介MySQL中一般有以下几种日志:日志类型 写入日志的信息 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 二进制日志 记录更改数据的语句 中继日志 从复制主服务器接收的数据更改 慢查询日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询 DDL日志(元数据日志) 元数据操作由DDL语句执行 本文主要介绍二进制日志 bi..

2021-09-22 14:19:15 832

原创 【踩坑记录】@PostConstruct 注解未生效解决方案

代码如下:@Data@Componentpublic class YmlConfig { @Value("${test.test01}") private String test01; public static String TEST01; @PostConstruct public void init() { TEST01= this.test01; }}下面这个方案可能会获取到 null 值,原因:@Compo..

2021-08-31 16:46:30 11014 2

转载 java 手机号脱敏处理 String.replaceAll()方法

String mobile = "12345678901";String s1 = mobile.replaceAll("(\\d{3})\\d*(\\d{1})", "$1****$2");String s2 = mobile.replaceAll("(\\d{3})\\d*(\\d{2})", "$1****$2");String s3 = mobile.replaceAll("(\\d{3})\\d*(\\d{3})", "$1****$2");String s4 = mobile.repl.

2021-08-20 18:00:06 2989

原创 xxl-job分布式调度中心-详细教程

一、文档地址中文文档 English Documentation

2021-08-04 17:38:16 316

原创 【绝对好用】java poi 导入、导出excel(支持xsl、xslx)

1、添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId.

2021-06-11 09:51:50 2023 3

原创 shell命令按行分割文本文件

windows环境下可以使用 Git Bash执行 split 命令sed常用的分割文本的方法都是通过sed -n 命令来操作优点:是可以指定具体的行 缺点:每次分割要重新读取整个文本,效率比较低。split缺点:不能将结果一次放在指定的文件夹,此时可以已区别其他文件名的格式命名然后mv就行用法:split [参数] 需要分割的文件参数-b size:对file进行切分,每个小文件大小为size。可以指定单位b、k、m。-C size:与-b选项类似,但是切割时.

2021-05-25 10:40:18 5762

转载 RabbitMQ使用教程(超详细)

推荐springCloud教程:https://blog.csdn.net/hellozpc/article/details/83692496推荐Springboot2.0教程:https://blog.csdn.net/hellozpc/article/details/82531834文章目录 RabbitMQ实战教程 1.什么是MQ 2.RabbitMQ 2.1.RabbitMQ的简介 2.2.官网 2.3.MQ的其他产品 2.4.学习

2021-05-24 20:43:54 1937

翻译 Nginx 常用配置

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,其因丰富的功能集、稳定性、示例配置文件和低系统资源的消耗受到了开发者的欢迎。本文,我们总结了一些常用的 Nginx 配置代码,希望对大家有所帮助。侦听端口server{#StandardHTTPProtocollisten80;#StandardHTTPSProtocollisten443ssl;#Forhtt...

2021-05-24 15:07:51 140

原创 使用钉钉发送消息(可用于 服务异常通知、定时任务异常通知 等等...)

一、前言服务器上有时 定时任务、重要接口等出现异常,导致数据不正常,不能及时通知到服务负责人,及时处理问题。所以引入“钉钉”作为通知工具,当服务出现异常便可立即收到通知,及时处理!二、使用方式1、客户端配置机器人1、首先需要有阿里巴巴的“钉钉”客户端2、建立群聊(如果只想通知给自己,不想通知其他人,也可以与他们创建群聊之后再将他们踢出)3、点击“群设置”里面的“智能群助手”4、“添加机器人”5、“添加机器人”6、选择“自定义”7、给机...

2021-04-09 16:33:49 4226 1

原创 mysql Communications link failure 异常解决方案

主要异常信息(注意:解决方案在最后)The last packet successfully received from the server was 5,005 milliseconds ago. The last packet sent successfully to the server was 5,007 milliseconds ago.日志截图百度一下,一搜一大把资料,但是大致大多有一下两种方案1、修改mysql以下配置,重启mysqlset wait_timeou

2021-01-04 14:46:50 11328 4

转载 面试官:Spring 事务有哪些坑?

1、spring事务的原理?首先,我们先明白spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。那么,我们一般使用JDBC操作事务的时候,代码如下 (1)获取连接 Connection con = DriverManager.getConnection() (2)开启事务con.setAutoCommit(true/false); (3)执行CRUD (4)提交事务/回滚事务 con.commit() / con

2020-11-17 10:08:29 223

转载 图文并茂:HashMap 经典详解!

什么是HashMap?HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。文字描述永远要配上图才能更好的讲解数据结构,HashMa

2020-11-10 14:51:51 152

转载 二叉树的基础---四种遍历方式的

1. 基本介绍树结构多种多样,但是最常用的还是二叉树。二叉树中每个节点最多有两个子节点,这两个节点分别是左子节点和右子节点。注意:不要求都有两个子节点,可以只有左子节点,也可以只有右子节点。2. 二叉树的存储2.1. 链式存储法每个节点至少有三个字段,其中一个存储数据,另外两个是指向左右子节点的指针。这种存储方式比较常用,大部分二叉树代码都是通过这种结构来实现的。2.2. 数组存储法我们把根节点存储在下标 i=1 的位置,它的左子节点存储在下标为 2 *...

2020-08-12 20:46:25 304

转载 缓存穿透、缓存击穿、缓存雪崩区别和解决方案

一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 二、缓存穿透 描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0...

2020-08-12 20:42:39 127

转载 关于Synchronized竟然被面试者给怼趴下了

Synchronized 是什么来咱们先聊聊 Synchronized 是什么,你用过吗?Synchronized 用过的,简单的说是用来控制线程同步的。为了解决多线程下线程对资源的读写发生混乱,例如不同线程读写发生不一致的情况,所以需要给这些资源加上锁,保证资源读写的原子性。Synchronized 大致可以分为 2 类,一种是锁住对象,一种是锁住类: 1.锁对象: 同步代码块,Synchronized(o) 同步方法,相当于 Synchroni

2020-08-12 20:25:23 180

转载 数据量很大,分页查询很慢,有什么优化方案?

当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等

2020-07-21 09:34:24 270

原创 死循环while/for中new对象? 不怕 OOM 吗?

一、前言今天遇到一个又去的问题,在死循环中new对象,会造成 OOM 吗?把这问题发到技术群中,有说会,有说不会的,引起一片热论。我们还是来个demo模拟一下,看看什么结果吧二、模拟在死循环中new对象代码如下: public static void main(String[] args) { while (true) { try { log.info("new"); .

2020-07-01 15:48:44 2234 2

转载 图解!一文彻底弄懂九大常见数据结构!

数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一样的处理效率。常用的数据结构可根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等,非线性结构包括树、图等。数据结构种类繁多,本文将通过图解的方式对常用的数据结构进行理论上的介绍和讲解,以方便大家掌握常用数据结构的基本知识。1数组数组可以说是最基本最常见的数据结构。...

2020-06-19 14:27:31 583 1

转载 MySQL数据库面试题(超详细)

一、数据库基础知识为什么要使用数据库数据保存在内存优点: 存取速度快缺点: 数据不能永久保存数据保存在文件优点: 数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。 2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数...

2020-06-12 14:50:42 1568

转载 计算机网络体系结构划分

网上浏览视频,听歌,聊天,计算机是怎么在“你”、“我”之间传送数据?一、什么是TCP/IP协议?  首先我们看下什么是协议? 协议(Protocol)是为进行网络中的数据交换而建立的规则、标准或约定。用于不同系统中实体间的通信。两个实体要想通信,必须有同一种语言,而且,对于通信内容,怎样通信和何时通信,都必须遵守一定的规定,这些规定就是协议。  在互联网通信中,最重要和著名的就是TCP、IP两个协议,但是我们现在常说的TCP/IP协议并不是单指着两种协议,而是整个TCP/IP协议族。二、计.

2020-06-10 14:22:52 2006

转载 TCP三次握手原理

在众多的网络协议中,TCP协议占据着举足轻重的地位,你知道什么是TCP协议吗?一、TCP协议TCP(Transmission Control Protoco)协议属于计算机网络体系中的运输层。运输层的任务是负责向主机中应用层进程之间的通信提供通用的数据传输服务。所以可以通俗理解TCP协议就是进程间数据通讯传输协议。根据不同应用,运输层主要使用TCP和UDP两种协议之一。如果想要了解计算机网络体系分层概念,可以看我的上一篇博文 计算机网络体系结构划分二、TCP协议特点TCP协议本身是.

2020-06-10 11:02:01 544

转载 听我讲完Http的GET、POST原理,面试官给我倒了杯卡布奇诺

我有一个老朋友,我们叫他熊猫。发际线及将触碰到后脑勺,大框金丝眼镜也掩盖不住那黝黑的眼圈,显得格外的“程序员”;穿着也非常“不拘一格”,上半身是衬衣西服,下半身是牛仔裤配拖鞋。我和熊猫的感情很好,毕业后他去了上海而我开始北漂,但每次过节回老家我俩都会和朋友们一起吃饭,这次回家过年也不例外,我们朋友几个去了枣庄出名的小板凳酱骨头,饭后他给我们聊了聊4年前来这家公司的面试经历,据说跟面试官有着一番精彩的博弈;我们听得津津有味。以下是熊猫和面试官刘经理的对话。面试官:小李啊,你们常用的HT

2020-06-10 10:21:31 237

原创 AspectJ的使用方法

一、简介它不属于spring; AspectJ是一个AOP的框架; 定义了AOP语法; 有一个专门的编译器用来生成遵守Java字节编码规范的Class文件什么是AspectJAspectJ是使用面向切面的一个框架它扩展了Java语言(它本身也是一种语言)支持原生Java代码 有自己的编译器将代码翻译成Java字节码文件是为了方便编写AOP代码而出现的使用AOP编程的三个重点 通知 切点 织入二、实现AOP的方式1、方式一: xml配置实现AOP1.1、创建通知

2020-06-04 16:19:52 8222 2

转载 手把手教你,如何在windows系统搭建mysql主从复制的环境

背景最近在学习用Spring Aop来实现数据库读写分离的功能。 在编写代码之前,首先是要部署好mysql的环境,因为要实现读写分离,所以至少需要部署两个mysql实例,一主一从,并且主从实例之间能够自动同步,因为我的本机内存并不高,所以就打算在windows上直接搭建mysql的主从实例(不想开虚拟机),但这个过程中却遇到了一些麻烦,虽然最后都解决了,但也花费了不少的时间。为了避免以后在同样的事情上浪费时间,同时也方便读者们能复制相同的场景,所以就写下这篇博客来记录一下搭建环境的过程。环境说明

2020-05-29 09:51:20 262

转载 读写分离很难吗?springboot结合aop简单就实现了

前言入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码。在研究代码的过程中,发现项目里用到了Spring Aop来实现数据库的读写分离,本着自己爱学习(我自己都不信...)的性格,决定写个实例工程来实现spring aop读写分离的效果。环境部署数据库:MySql库数量:2个,一主一从关于mysql的主从环境部署之前已经写过文章介绍过了,这里就不再赘述,参考《手把手教你,如何在windows系统搭建mysql主从复制的环境》开始项目首先,毫无疑

2020-05-29 09:46:50 190

原创 Kafka安装详细教程

安装前期准备:1,准备三个节点(根据自己需求决定)2,三个节点上安装好zookeeper(也可以使用kafka自带的zookeeper)3,关闭防火墙chkconfig iptables off一、安装Zookeeper本文以 zookeeper-3.4.10 版本1、下载下载地址:https://zookeeper.apache.org/releases.html2、解压解压到 F:\tool 目录3、修改配置找到解压后 F:/tool/zookee..

2020-05-27 20:41:19 916

转载 理解分布式事务,高并发下分布式事务的解决方案-附索引的利弊

一.数据库事务的隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现×: 不会出现 脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed × √ √ Repeatable read...

2020-05-19 10:14:09 328

转载 高并发架构思路,附十万定时任务执行解决方案

一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。吞吐量:单位时间内处理的请求数量。QPS..

2020-05-18 20:07:13 1099

转载 服务端高并发分布式架构演进之路

1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署

2020-05-18 19:52:07 198

转载 MySQL索引详细介绍

一、什么是索引?为什么要建立索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。如果没有索引,那么将从表中第一条记录一条条

2020-05-14 10:46:43 224

转载 面试必问:如何检测并避免 Java 中的死锁?

经典但核心 java面试 问题之一。如果你没有参与过多线程并发 Java 应用程序的编码,你可能会失败。如何避免 Java 线程死锁?如何避免 Java 中的死锁?这是java面试的热门问题之一, 也是多线程的编程中的重口味之一, 主要在招高级程序员时容易被问到, 且有很多后续问题。尽管问题看起来非常基本, 但大多数 Java 开发人员一旦你开始深入, 就会陷入困境。面试问题总是以“什么是死锁?????”开始当两个或多个线程在等待彼此释放所需的资源(锁定)并陷入无限等待即是死锁。

2020-05-13 11:36:24 305

转载 Map 集合怎么也有这么多坑?一不小心又踩了好几个!

上一篇List 踩坑文章中,我们提到几个比较容易踩坑的点。作为 List 集合好兄弟 Map,我们也是天天都在使用,一不小心也会踩坑。今天我就来总结这些常见的坑,再捞自己一手,防止后续同学再继续踩坑。本文设计知识点如下:不是所有的 Map 都能包含 null这个踩坑经历还是发生在实习的时候,那时候有这样一段业务代码,功能很简单,从 XML 中读取相关配置,存入 Map 中。代码示例如下:那时候正好有个小需求,需要改动一下这段业务代码。改动的过程中,突然想到HashM...

2020-05-13 10:43:11 167

转载 一口气带你踩完五个 List 的大坑,真的是处处坑啊!

List 可谓是我们经常使用的集合类之一,几乎所有业务代码都离不开 List。既然天天在用,那就没准就会踩中这几个 List 常见坑。今天我们就来总结这些常见的坑在哪里,捞自己一手,防止后续同学再继续踩坑。本文设计知识点如下:ArrayList 这是李逵,还是李鬼?以前实习的时候,写过这样一段简单代码,通过Arrays#asList将数组转化为 List 集合。这段代码表面看起来没有任何问题,编译也能通过,但是真正测试运行的时候将会在第 4 行抛出 Unsupporte...

2020-05-13 10:24:20 254

空空如也

空空如也

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

TA关注的人

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