自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

及时雨的csdn

水滴石穿,绳锯木断,做好点滴积累

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

原创 this调用无法使用aop拦截的问题解决

this调用无法使用aop拦截的问题解决

2022-11-01 23:21:29 370 1

原创 SPRING aop 代码演示

spring aop的简单实例和环绕通知的注意点

2022-11-01 23:04:59 334

转载 ThreadLocal内存泄露代码演示,和内存泄露原因分析

引发的内存泄漏分析预备知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内

2021-10-02 17:30:54 644

转载 Spring Boot 拦截器、过滤器、监听器

1. 拦截器、过滤器、监听器区别拦截器(interceptor):依赖于web框架,基于Java的反射机制,属于AOP的一种应用。一个拦截器实例在一个controller生命周期内可以多次调用。只能拦截Controller的请求。过滤器(Filter):依赖于Servlet容器,基于函数回掉,可以对几乎所有请求过滤,一个过滤器实例只能在容器初使化调用一次。监听器(Listener):web监听器是Servlet中的特殊的类,用于监听web的特定事件,随web应用启动而启动,只初始化一次。2. 有什

2021-10-01 17:52:03 788

转载 mysql主从执行sql失败:Slave_IO_Running: No, Slave_SQL_Running: No.

详细报错:Slave_IO_Running: No, Slave_SQL_Running: No. Please make sure replication runs before using gh-ost.网上找了下资料,特此记录:一、问题描述:当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。二、Slave两个关键进程mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave

2021-05-28 10:39:45 540

原创 记一次由于cas和线程调度出现的问题

先直接上代码:import sun.misc.Unsafe;import java.lang.reflect.Field;public class UnSafeTest { private int i = 0; private static Unsafe UNSAFE; private static Long I_OFFSET; static { try { Field field = Unsafe.class.ge

2021-05-27 22:38:29 106 1

原创 2020.3版idea的application.yml显示不正确

如图,先看显示正确的长啥样:但是你的长这样:然后我找了很多网站照着操作都不行,最后发现是少了依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>没有这个依赖,文件是不会改变的

2021-05-13 23:34:48 624

原创 2020.3版idea的RunDashboard怎么显示出来

查看idea版本help>>About 2.启动你的maven项目(至少两个)3.打开View下的servicesview>>Tool Windows>>Services4.添加springBoot在弹出的区域点击加号,Run Configuration Type,在列表里面找到Spring Boot另外还有一种方式,不过我没用:https://blog.csdn.net/zhang1873310/article/det..

2021-05-12 00:23:40 515

原创 值大小相同的Integer和Long为什么hashCode值一样

关于Interger和Long的hashCode方法源码 /** * Returns a hash code for this <code>Integer</code>. * * @return a hash code value for this object, equal to the * primitive <code>int</code> value represented by

2021-03-30 17:45:53 435

转载 如何确定一个类在Java虚拟机中的唯一性

《深入理解JVM虚拟机:JVM高级特性与最佳实践》

2021-03-30 15:22:42 624

原创 线上java生产环境服务器变慢,诊断思路和方法

生产环境变慢,出现了服务器卡顿,那么就需要进行排查了,一般定位出问题的步骤如下:1.使用top命令找出CPU占比最高的ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题,定位到具体线程或者代码2.找出此进程pid下最耗cpu的线程ps -mp 进程号(pid) -o THREAD,tid,time参数解释-m:显示所有的线程 -p:pid进程使用CPU的时间 -o:该参数后是用户自定义格式3.将需要的线程ID转换为16进制格式(英文小写格式)prin

2021-03-24 14:36:44 3386

原创 Linux常见系统诊断命令

1.查看整机信息: top使用top命令的话,重点关注的是 %CPU、%MEM 、load average 三个指标,上图里面我们关注的是有一个java进程占用了11%的cpu,需要关注(主要是pid93733)。load average三个指标:分别代表1、5、15分钟的负载情况,如果这些平均值都大于0.6的话,说明现在的系统的负载很高在这个命令下,按1的话,可以看到每个CPU的占用情况uptime:系统性能命令的精简版2.CPU:vmstat查看CPU(包含但是不限于

2021-03-24 11:30:05 415 1

转载 Linux系统chmod,chown和chgrp的区别和使用

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读,可写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文

2021-03-23 15:31:51 696

原创 linux系统执行.java文件

如图,一个简单的Java程序,要把它丢到linux里面执行:package OOM;public class UnableCreateNewThreadDemo { public static void main(String[] args) { for (int i = 0; ; i++) { System.out.println("******** i = " + i); new Thread(() -> {

2021-03-23 14:40:29 778

转载 kafka面试题

基础题目1、Apache Kafka 是什么?Apach Kafka 是一款分布式流处理框架,用于实时构建流处理应用。它有一个核心 的功能广为人知,即作为企业级的消息引擎被广泛使用。你一定要先明确它的流处理框架地位,这样能给面试官留 下一个很专业的印象。2、什么是消费者组?消费者组是 Kafka 独有的概念,如果面试官问这 个,就说明他对此是有一定了解的。我先给出标准答案:1、定义:即消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制。2、原理:在 Kafka 中,消费者组

2021-03-17 17:20:51 220

原创 kafka命令行操作

首先是环境的搭建,我的本地环境是三台机器集群,master,slave1,slave2,端口号9092。zk采用的是本地环境,端口号21811.操作主题:1.1查看当前服务器中的所有topicbin/kafka-topics.sh --zookeeper master:2181 --list1.2创建topic选项说明:--topic 定义topic名--replication-factor 定义副本数--partitions 定义分区数bin/kafka-t..

2021-03-16 18:17:51 195

原创 linux命令执行批处理脚本启动和关闭kafka

1.脚本命令vim xcallkafka.sh#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2)case $1 in"start"){for host in

2021-03-16 17:07:25 711

原创 linux命令执行批处理脚本,例如jps,hostname...

1.脚本命令vim xcall.sh#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2)for host in ${hosts[@]}do echo "===

2021-03-16 16:38:56 539

原创 linux命令执行批处理脚本启动和关闭zookeeper

1.脚本命令:vim xcallzk.sh其中hosts文件和zkServer.sh的位置需要和你本机的安装位置一致#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2

2021-03-16 16:23:45 596

原创 并发编程之AQS中的CLH队列

CLH队列在AQS类文件的开头,作者添加了很长一段注释,向开发者解释CLH队列,以及AQS对CLH队列的使用。AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上,AQS类引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关:To enqueue into a CLH lock, you atomically splice it in as new tail. To dequeue, you jus

2021-03-10 16:22:38 1176

原创 LockSupport的park()和unpark()的简单使用

concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS框架借助于两个类:Unsafe(提供CAS操作) LockSupport(提供park/unpark操作)因此,LockSupport非常重要。两个重点(1)操作对象归根结底,LockSupport.park()和LockSupport.unpark(Thread thread)调用的是Unsafe中的native代码://LockSupport中public static

2021-03-09 16:55:09 1397

转载 Java的==和equals()以及自动装箱拆箱语法糖

抛一个问题大家先看下面的代码,先不要看答案自己做一下:public class AutoboxingTest { public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; .

2021-03-05 17:55:33 158

原创 mysql索引分类和优化

1.数据结构角度1.1B+树索引1.2Hash索引优点:查询效率高缺点:不支持范围查询1.3FULL TEXT索引2.物理存储角度2.1聚簇索引索引和数据存储在一起2.3非聚簇索引索引和数据存储分离3.逻辑角度3.1主键索引主键索引是特殊的唯一索引,而且不允许有空值随表一起建索引:CREATE TABLE customer (id INT(10) UNSIGNED AUTO_INCREMENT ,customer_no VARCHAR(200),c

2021-03-03 14:16:06 81

转载 mysql的事务总结

1、事务的基本要素(ACID)原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没

2021-02-24 18:05:46 117

原创 Thread 的join方法源码解读

一、作用  Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码:public class JoinTest { public static void main(String [] args) throws InterruptedException { ThreadJoinTest t1 = new ThreadJoinTest("小明"); ThreadJoinTest t2 = new ThreadJoi

2021-02-21 11:49:58 239

原创 数据库和缓存一致性,多文总结,欢迎纠错

本文主要讨论这么几个问题:(1)“缓存与数据库”需求缘起(2)“淘汰缓存”还是“更新缓存”(3)缓存和数据库的操作时序(4)缓存和数据库架构简析(5)方案选择最终一致性和强一致性,缓存已经在项目中被广泛使用,在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。所以参考了网上一些资料对这块进行讲解。先做一个说明,从理论上来说,给缓存设置

2021-01-23 11:38:23 245

转载 DB主从一致性架构优化4种方法

需求缘起大部分互联网的业务都是“读多写少”的场景,数据库层面,读性能往往成为瓶颈。如下图:业界通常采用“一主多从,读写分离,冗余多个读库”的数据库架构来提升数据库的读性能。这种架构的一个潜在缺点是,业务方有可能读取到并不是最新的旧数据:(1)系统先对DB-master进行了一个写操作,写主库(2)很短的时间内并发进行了一个读操作,读从库,此时主从同步没有完成,故读取到了一个旧数据(3)主从同步完成有没有办法解决或者缓解这类“由于主从延时导致读取到旧数据”的问题呢,这是本文要.

2021-01-21 17:14:58 169

原创 redis开启rdb和aof后文件正确恢复

1.服务器环境:3主3从,192.168.24.16,192.168.24.17,192.168.24.18,每一台服务器上2个节点,分别为主节点和从节点2.备份开启的备份策略是默认的rdb,aof没有打开使用 Redis Desktop Manager连接,数据库中有3条数据现在我需要同时开启aof和rdb两个持久化策略,假如我们直接关闭redis,并且打开aof的开关,我们看看保存的数据还在不在。更改配置之后重启redis发现数据没了appendo..

2021-01-15 17:58:21 5188 5

原创 Java8新特性Stream流的详细介绍及常用操作

1.什么是流Java8对流的定义就是“从支持数据处理操作的源生成的元素序列”。元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。因为集合是数据结构,所以它的主要目的是以特定的时间/空间复杂度存储和访问元素(如 ArrayList 与 LinkedList )。但流的目的在于表达计算,比如filter 、 sorted 和 map 。集合讲的是数据,流讲的是计算。 源——流会使用一个提供数据的源,如集合、数组或输入/输出资源。 请注意,从有序集合生成流时会保留原有的顺序

2021-01-06 09:48:35 2152

原创 java函数式接口,Lambda表达式以及方法引用

Lambda表达式可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多! 函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。 传递——Lambda表达式可以作为参数传递给方法或存储在变量中。 简洁——无需像匿名类

2020-12-30 17:12:25 253

原创 JAVA8知识点概览

行为参数化(Lambda 以及方法引用)Java 8通过借鉴函数式编程,提供了一种新的方式——通过向方法传递代码片段来解决这一问题。这种新的方法非常方便地提供了两种变体。传递一个Lambda表达式,即一段精简的代码片段,比如apple -> apple.getWeight() > 150传递一个方法引用,该方法引用指向了一个现有的方法,比如这样的代码:Apple::isHeavy这些值具有类似 Function<T, R> 、 Predicate<T..

2020-12-28 17:10:44 247

原创 使用java实现排序算法(多种方式)

直接上代码:package chapter7;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;public class SortDemo { /** * 冒泡排序O(n^2) * * @param a */ public static <AnyType extends Comparable<? s..

2020-12-21 11:00:05 175

原创 MySql处理超大分页方法和原理

超大分页怎么处理?当数据库数据量达到百万级别,而我们又需要在查询条件之后使用limit进行分页,那么我们就不能简单的使用普通的sql语句了。比如我们有下面一张表:CREATE TABLE `vote_record` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` varchar(20) NOT NULL DEFAULT '' COMMENT '用户Id', `vote_num` int(10) unsigned NO

2020-12-10 16:14:26 2992 2

原创 数据库设计的范式和反范式介绍

范式化第一范式:每一列都是不可再分的最小数据单元,确保每一列的原子性。 第二范式:如果一个关系满足1NF,并且除了主键以外的其它列,都依赖与该主键;即非键字段必须依赖于键字段 第三范式:在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)反范式化不满足范式的模型,就是反范式模型,反范式跟范式所要求的正好相反,在反范式的设计模式,并不是完全不遵守范式模型,而是允许适当的数据的冗余,用这个冗余去取操作数据时间的缩短。本质

2020-12-10 15:05:17 357

原创 MySQL的间隙锁简析

当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next -Key锁)。举例来说,假如emp表中只有101条记录,其empid的值分别是1,2,...,100,101,下面的SQL:Select * from emp where emp id > 100 for update; 是一个范围条件的检索,InnoDB

2020-12-09 17:13:11 405

转载 关于Spring事务管理最详细的一篇文章

目录1 初步理解2 核心接口2.1 事务管理器2.1.1 JDBC事务2.1.2 Hibernate事务2.1.3 Java持久化API事务(JPA)2.1.4 Java原生API事务2.2 基本事务属性的定义2.2.1 传播行为2.2.2 隔离级别2.2.3 只读2.2.4 事务超时2.2.5 回滚规则2.3 事务状态3 编程式事务3.1 编程式和声明式事务的区别3.2 如何实现编程式事务?3.2.1 使用TransactionTem

2020-12-08 16:45:01 557

原创 mysql表级锁和行级锁的场景分析

mysql的锁是由具体的存储引擎实现的。所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的。Mysql有三种级别的锁定:表级锁定、页级锁定、行级锁定MyISAM中是不会产生死锁的,因为MyISAM总是一次性获得所需的全部锁,要么全部满足,要么全部等待。而在InnoDB中,锁是逐步获得的,就造成了死锁的可能。MySQL这3种锁的特性可大致归纳如下。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;

2020-12-08 14:54:06 2337

原创 springAOP的基础术语,带图

面向切面编程( aspect-oriented programming , AOP )允许你把遍布应用各处的功能分离出来形成可重用的组件。

2020-12-07 14:42:21 329

原创 java的泛型擦除机制

java编程思想在泛型里面描述道:在泛型代码内部,无法获取任何有关泛型参数类型的信息.public class Test { public static void main(String[] args) { Class c1 = new ArrayList<String>().getClass(); Class c2 = new Ar...

2020-11-20 17:55:37 941

原创 java异常中try,catch,finally中和return返回之间的顺序和影响

目录1.走try块中的return2.走catch块中的return3.走finally块中的returnjava的异常捕捉的标准格式是try...catch...finally块,那么我们在与return结合的时候,返回值是如何确定的呢?1.走try块中的returnpublic class tryDemo { public static int show() { int b = 20; try { System.o

2020-11-19 16:13:46 282

空空如也

空空如也

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

TA关注的人

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