自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

回忆的证据

养成坚持写博客的习惯,万一老年痴呆了呢

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 YGC问题排查

YGC 在新生代中进行,首先要清楚新生代的堆结构划分。新生代分为Eden区和两个Survivor区,其中Eden:from:to = 8:1:1 (比例可以通过参数 –XX:SurvivorRatio 来设定 ),这是最基本的认识。为什么会有新生代?如果不分代,所有对象全部在一个区域,每次GC都需要对全堆进行扫描,存在效率问题。分代后,可分别控制回收频率,并采用不同的回收算法,确保GC性能全局最优。为什么新生代会采用复制算法?

2023-11-13 14:19:15 80

原创 高并发下如何保证接口的幂等性?

接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景:有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败吧?

2023-11-07 15:19:23 46

原创 mq的那些事儿

最近mq越来越火,很多公司在用,很多人在用,其重要性不言而喻。但是如果我让你回答下面的这些问题:我们为什么要用mq?引入mq会多哪些问题?如何解决这些问题?你心中是否有答案了呢?本文将会一一为你解答,这些看似平常却很有意义的问题。

2023-11-07 14:12:44 54

原创 高并发系统的 18 个小技巧!

今天这篇文章跟大家一起聊聊高并发系统设计一些关键点,希望对你会有所帮助。

2023-11-06 14:35:39 194

原创 如何保证数据库和缓存双写一致性?

数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深,跟大家一起聊聊,数据库和缓存双写数据一致性问题常见的解决方案,这些方案中可能存在的坑,以及最优方案是什么。

2023-11-06 14:30:23 93

原创 缓存穿透、缓存击穿和缓存雪崩

对于从事后端开发的同学来说,缓存已经变成的项目中必不可少的技术之一。没错,缓存能给我们系统显著的提升性能。但如果你使用不好,或者缺乏相关经验,它也会带来很多意想不到的问题。今天我们一起聊聊如果在项目中引入了缓存,可能会给我们带来的下面这三大问题。看看你中招了没?但如果出现以下这两种特殊情况,比如:用户请求的id在缓存中不存在。恶意用户伪造不存在的id发起请求。这样的用户请求导致的结果是:每次从缓存中都查不到数据,而需要查询数据库,同时数据库中也没有查到该数据,也没法放入缓存。

2023-11-06 10:41:12 31

原创 7 种异步编程实现方式!性能炸裂!!拿捏了

最近有很多小伙伴给我留言,能不能总结下异步编程,今天就和大家简单聊聊这个话题。早期的系统是同步的,容易理解,我们来看个例子

2022-11-10 15:30:22 223 2

转载 springboot利用ThreadPoolTaskExecutor多线程批量插入百万级数据

开发目的:提高百万级数据插入效率。采取方案:利用ThreadPoolTaskExecutor多线程批量插入。采用技术:springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+ThreadPoolTaskExecutor等。

2022-11-10 14:45:38 1911 1

转载 Java 序列化和反序列化为什么要实现 Serializable 接口?

(1) 序列化和反序列化是什么?(2) 实现序列化和反序列化为什么要实现Serializable接口?(3) 实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?(4) 我要为serialVersionUID指定个什么值?

2022-09-16 16:01:59 92

转载 小公司里用SpringBoot做MySQL分库分表,踩了一些坑!

我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:读和写所有压力都由一台数据库承担,压力大数据库服务器磁盘损坏则 数据丢失,单点故障

2022-09-15 16:21:18 120

转载 线程池灵魂8连问,你挡的住吗?

面试官:日常工作中有用到线程池吗?什么是线程池?为什么要使用线程池?

2022-09-13 16:46:06 186

转载 将Bean放入Spring容器有哪几种方式?

将bean放入Spring容器中有哪些方式?我们知道平时在开发中使用Spring的时候,都是将对象交由Spring去管理,那么将一个对象加入到Spring容器中,有哪些方式呢,下面我就来总结一下# @Configuration + @Bean这种方式其实,在上一篇文章已经介绍过了,也是我们最常用的一种方式,@Configuration用来声明一个配置类,然后使用 @Bean 注解,用于声明一个bean,将其加入到Spring容器中。具体代码如下:@Configurationpublic

2021-12-30 10:48:35 59

转载 MySQL之 JSON 这张牌

关系型的结构化存储存在一定的弊端,因为它需要预先定义好所有的列以及列对应的类型。但是业务在发展过程中,或许需要扩展单个列的描述功能,这时,如果能用好 JSON 数据类型,那就能打通关系型和非关系型数据的存储之间的界限,为业务提供更好的架构选择。当然,很多同学在用 JSON 数据类型时会遇到各种各样的问题,其中最容易犯的误区就是将类型 JSON 简单理解成字符串类型。但当你看完这篇文章后,会真正认识到 JSON 数据类型的威力,从而在实际工作中更好地存储非结构化的数据。# JSON 数据类型JSO

2021-12-24 10:08:46 101

转载 自定义注解之用户操作日志记录

简介我在使用spring完成项目的时候需要完成记录日志,我开始以为Spring 的AOP功能,就可以轻松解决,半个小时都不用,可是经过一番了解过后,发现一般的日志记录,只能记录一些简单的操作,例如表名、表名称等记录不到。这个时侯就用到了自定义注解,把想要记录的内容放在注解中,通过切入点来获取到注解参数,然后将参数插入数据库记录。|Spring AOP对于Spring Aop的基本介绍大家可以看看:https://blog.csdn.net/yjt520557/article/deta.

2021-12-21 10:26:38 546

转载 JAVA8 Stream

那么什么是Stream?Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream可以由数组或集合创建,对流的操作分为两种:1. 中间操作,每次返回一个新的流,可以有多个。2. 终端操作,每个流只能进行一次终端操作,终端操作结束后流无法再次使用。终端操作会产生一个新的集合或值。另外,Stream有几个特性:1. stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。2. ...

2021-09-02 16:44:19 117

转载 Redis变慢了,如何快速排查?

Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。# 使用复杂度高的命令如果在使用Redis时,发现访问延迟突然增大,如何进行排查?首先,第一步,建议你去查看一下Redis的慢日志。Redis提供了慢日志命令的统计功能,我们通过以下设置,就可以查看有哪些命令在执行

2021-09-02 10:34:06 101

原创 看看啥情况

<iframe width="100%" height="300" src="https://c.runoob.com/iframe/5656" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

2021-08-10 16:07:30 54

转载 Redis 内存满了怎么办?

Redis占用内存大小我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小//设置Redis最大占用内存大小为100Mmaxmemory100mbredis的配置文件不一定使用的是安装目录下面的redis.conf文件,启动redis服务的时候是可以传一个参数指定redi..

2021-02-26 10:49:21 116

转载 JVM的那些事

在 tomcat/bin/catalina.sh 的 第一行#!/bin/sh 下添加JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.awt.headless=true"-Xms256m JVM初始分配的堆内存, 生产环境建议与...

2020-03-15 15:58:57 69

原创 SpringBoot与数据访问(版本1.5.10)

1.SpringBoot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种xxxTemplate、xxxRepository来简化我们对数据访问层的操作。对我们来说只需要进行简单的设置即可。SpringBoot只要有starter就会有相应的xxxAutoConfigration,例如:MybatisAutoConfiguration1、JDB...

2018-12-29 18:05:26 252

转载 Java集合继承关系图

  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。  数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。  集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。上述类图中,实线边框的是实现类,比如ArrayList,Li...

2018-12-10 16:49:36 497

原创 JVM参数设置以及查看堆内存的大小

1.在eclipse设置JVM参数2. 在Tomcat服务器上设置JVM参数(在startup.bat里面配置)      set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m  或者      set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m      设置CATALINA_OPTS 和 ...

2018-12-10 15:40:14 8533

转载 Spring事务管理机制的实现原理-动态代理

之前在做项目中遇到spring无法进行事务代理问题,最后发现是因为没有写接口我们先来分析一下Spring事务管理机制的实现原理。由于Spring内置AOP默认使用动态代理模式实现,我们就先来分析一下动态代理模式的实现方 法。动态代理模式的核心就在于代码中不出现与具体应用层相关联的接口或者类引用,如上所说,这个代理类适用于任何接口的实现。下面我们来看一个例子。public class Tx...

2018-12-04 15:46:25 681

原创 JAVA自定义注解

java注解使用是相当频繁,特别是在搭建一些框架时,用到类的反射获取方法和属性,用的尤其多。 java中元注解有四个: @Retention @Target @Document @Inherited;   @Retention:注解的保留位置               @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字...

2018-12-04 15:13:04 95

原创 springMVC解决中文乱码问题

1.配置Web.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" metadata-complete="tru

2018-12-04 13:49:52 172

原创 Linux下安装centos7教程

注意事项:安装时一定要选好网络,网络选择NAT模式,安装完成之后,检查是否可以连接外网,curl www.baidu.comLinux常用命令:1.cp nginx-1.8.0.tar.gz(文件) nginx(文件夹路径)2.使用yum安装一些必要的环境:yum install gcc 查看是否安装成功:which gccyum install gcc-c++   查看是否安装成功:which ...

2018-07-02 15:37:27 241

原创 Aop简单搭建

第一步:在springMvc的xml文件里配置 &lt;context:component-scan base-package="com.aspectJ"/&gt; &lt;aop:aspectj-autoproxy/&gt;第二步:编写Aop配置的java类package com.aspectJ;/** * Created by tang on 2018/4/25. */...

2018-06-14 16:52:13 204

原创 spring quartz

Spring无缝的集成了Quartz(阔吃),使得企业可以更好的使用Quartz进行任务的调度。Spring整合Quartz进行配置遵循下面的步骤:        1:定义工作任务的Job        2:定义触发器Trigger,并将触发器与工作任务绑定        3:定义调度器,并将Trigger注册到SchedulerapplicationContext-quartz.xml代码如下:...

2018-06-11 11:56:28 92

转载 MySQL触发器使用详解

MySQL触发器使用详解MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。创建触发器在MySQL中,创建触发器语法如下:代码如下:CREATE TRIGGER trigger_nametrigger_timetrigger_event ON tbl_nameFOR EACH ROWtrigger_...

2018-04-18 11:44:41 143

原创 MYSQL存储过程详解

注意事项:1.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程2.存储过程名称后面必须加括号,哪怕该存储过程没有参数传递一、创建存储过程DROP PROCEDURE tangInOut;CREATE PROCEDURE tangInOut(in a int,INOUT b int,OUT c int)BEGINIF a IS NULL THEN SET a=0; END IF;IF ...

2018-04-18 11:33:42 117

转载 MYSQL的存储过程和游标的使用

1、存储过程存储过程是什么,简单来讲,就像Java中的方法(函数),不过它是SQL世界中的方法。大部分时候,我们所使用都是单条SQL,用来针对一个或多表连接。但是也有情况,是据判断先对表A执行操作,变动后再结合表B进行操作。即SQL的执行可能需要考虑包含业务规则在内的智能处理。封装操作的好处就不过多说明,无非是简化,复用,降低耦合等,同时,它还具有更高的性能。考虑这种业务情况,现在你需要获得订单总...

2018-03-16 11:50:57 212

java操作Excel实现企业级批量处理

java操作Excel实现企业级批量处理代码

2014-11-14

空空如也

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

TA关注的人

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