自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辉哥的博客

男人生来不是享受安逸的

  • 博客(173)
  • 资源 (2)
  • 收藏
  • 关注

原创 Git批量删除指定分支

批量删除本地分支git branch -a | grep -v -E 'master|dev|pre' | xargs git branch -D批量删除远程分支git branch -r| grep -v -E 'master|dev|pre' | sed 's/origin\///g' | xargs -I {} git push origin :{}批量删除远程模糊匹配分支git branch -r| grep 'fix-*' | sed 's/origin\///g' | xar

2021-08-12 16:03:35 562

原创 Mysql一之索引的使用及索引的优缺点

关于索引的分类上篇<Mysql一之索引概述>已有概述这里就不做赘述了。该篇主要从四个方面去阐述,什么情况下使用索引、索引使用的注意事项、什么情况会导致索引失效、以及索引的优缺点;一、什么情况下使用索引大概总结有以下几点吧,但不仅限于以下可能还有其他情况,也欢迎各位评论区补充。在经常需要搜索查询的列上创建索引,可以提升搜索查询的速度; 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构(例如Mysql的主键自增默认主键索引); 在经常用在连接的列上,这些列主要...

2021-08-12 09:21:46 330

原创 Redlock之分布式锁实现原理

前景回顾 上篇文章Redis之分布式锁实现原理简述了通过SET key_name my_random_value NX PX 30000(NX:if not exist -> True,否则 -> False;PX 表示过期时间用毫秒级)方式实现的redis分布锁以及redisson锁。 但是文末也提出这种实现方式也是存在问题的:redis这种方式的锁只作用在一个Redis节点上,即使Redis通过sentinel保证高可用,如果这个master节点...

2021-04-23 14:49:34 840 2

原创 Redis之分布式锁实现原理

认识分布式系统服务架构的大致发展流程和分类,说了大致啊不必细究,毕竟只是为了方便对分布式不了解的同学有个初步认知。MVC架构 :当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡实现负载分流;此时,用于分离前后逻辑的Mvc架构是关键。 RPC架构:当垂直应用越来越多,应用之间交互不可避免,将核心和公共业务抽取出来,作为独立的服务,实现前后台逻辑分离、此时,用于提高业务复用和拆分的RPC框架是关键。 SOA架构:随着业务发展,服务数量越来越多,服务生命周期管控和运行态的治理

2021-04-19 14:45:49 614

原创 JVM之锁的理解

1. 初识锁1.1 锁的认知 说起锁给人的第一反应就是各种门上的锁、车锁等等物理存在的可见的实物锁,功能就是为了保护人身财产乃至生命的安全的。今天所说的锁也是类似功能,但是是我们不可见的是java虚拟机内部的锁,后端开发都知道锁是多线程开发过程中必不可少的工具之一,它的基本作用是保护临界区资源不会被多线程同时访问而造成破坏,如果多线程访问临界区资源造成资源结果不一致从而导致系统运行最终结果出现错误。如果使用锁进行对该资源进行锁定,让多线程排队去访问使用资源,这样就保证了多线程访问资源对象...

2021-04-07 14:44:42 526

原创 ElasticSearch学习之(十)-Logstash实现从ES同步数据到Mysql数据库

Logstash概述 Logstash是一个具有实时管道功能的开源数据收集引擎,Logstash可以动态地将来自不同数据源的数据统一起来,并将数据规范化为所选择的目的地,清理和大众化所有数据,用于各种高级下游分析和可视化用例。虽然Logstash最初推动了日志收集方面的创新,但是它的功能远远超出了这个用例,任何类型的事件都可以通过大量的输入、过滤器和输出插件来丰富和转换,使用许多原生编解码可以进一步简化摄取过程。Logstash通过利用大量和多种数据来提高洞察力。Logstash工作原理...

2021-03-12 14:36:56 2004 1

原创 SpringCloud系列之-hystrix详解

hystrix是什么官方地址:https://github.com/Netflix/Hystrix Hystrix是由Netflix开源的一个服务隔离组件,通过服务隔离来避免由于依赖延迟、异常,引起资源耗尽导致系统不可用的解决方案。在分布式系统,尤其是在这个微服务盛行的年代,日常开发中我们一定会依赖各种服务,那么依赖的服务一定会出现调用失败的情况。Hystrix就是解决这种状况的一个工具,它通过提供了逻辑上延时和错误容忍的解决力来协助我们完成分布式系统的交互。Hystrix 通过分离服务...

2021-02-20 18:07:28 2324

原创 JVM之性能监控工具-vmstat命令

监控内存、CPU/ IO使用的命令--vmstat / iostatvmstat详解语法格式: vmstat [-V] [-n] [-S unit] [delay [count]]参数解释: -V:显示vmstat版本信息 -n:只在开始时显示一次各字段名称 -a:显示活跃和非活跃内存 -d:显示各个磁盘相关统计信息 -D:显示磁盘总体信息 -p:显示指定磁盘分区统计信息 -s:显示内存相关统计信息及多种系统活动数量 -m:显示sla...

2021-01-11 11:35:12 225 1

原创 JVM之性能监控工具-top命令

显示系统资源整体使用情况--top命令[root@app data]# toptop - 09:33:21 up 207 days, 8:54, 1 user, load average: 0.07, 0.05, 0.07Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.7 us, 0.5 sy, 0.0 ni, 98.6 id, 0.3 wa, 0.0 hi, 0.0

2021-01-11 10:34:42 1311

原创 String之StringBuffer、StringBuilder、String对比说明

1. 简述关于StringBuffer、StringBuilder、String算是老生常谈的问题,今天抽空整理下部分细节。先大概看下类图,StringBuilder和StringBuilder的继承是完全一致的,当然String本身也是实现Serializable和CharSequence接口的,三者类都是由final修饰的也就是具备final修饰的特性不能被继承。2. 三者拼接字符串的操作实现String的拼接很简单直接加号操作即可,这样就会创建的新的String对象分配内存空间。大量的

2020-12-17 11:25:59 155

原创 面试总结之-美团面试总结(三)

三面1、照例自我介绍和项目介绍;2、上来就让我手撕一个单例模式。。。答:public class SingleInstanceDemo { private SingleInstanceDemo(){} private static volatile SingleInstanceDemo singleInstance; public static SingleInstanceDemo getInstance(){ if (singleInstance ==

2020-12-07 17:52:04 345

原创 面试总结之-美团面试总结(二)

二面1、自我介绍2、项目介绍,及其亮点介绍。3、然后问了我集合了解吗,让我说话ArrayList和LinkedList的区别?答:ArrayList底层是数组,LinkedList底层是链表,ArrayLIst查找数据快,LinkedList插入删除快;4、继续问我linkedList可以用for循环遍历吗?答;能不用尽量不要用,linkedList底层是链表,它使用for进行遍历,访问每一个元素都是从头开始访问然后直到找到这个元素,比如说找第三个节点,需要先找到第一个节点然后找到第

2020-12-07 17:35:45 404

原创 面试总结之-美团面试总结(一)

一面1、自我介绍2、项目介绍及其亮点3、Java的8种数据类型有哪些?答:int,short,long,float,double,byte,boolean,char;3、问了Integer缓存数据的范围?答:-128-127 Java 5 中引入的一个有助于节省内存、提高性能的特性Integer a = 127;Integer b = 127;Integer c = 128;Integer d = 128;int e = 127;int f = 128;System

2020-12-07 17:06:51 516

原创 Redis之反序列化失败问题追踪解决

事故起因由于业务需要数据库需要多加两个字段,然后就一顿操作猛如虎。重启项目当get redis存放的的对象时报错了。报错示例如下:com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 1388917379Serialization trace: at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClass

2020-12-05 19:36:53 5504

转载 Java8之集合stream操作合集

优雅的将一个对象的集合转化成另一个对象的集合List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails();List<CartDTO> cartDTOList = orderDetailList.stream() .map(e -> new CartDTO(e.getProductId(), e.getProductQuantity()))

2020-12-03 16:31:41 2223

原创 集合总结之单链表反转

概念简述 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。结点数据结构┌───┬───┐│data │next │└───┴───┘data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域) 链表通过每个结点的链域将线性表...

2020-11-18 18:01:45 187

原创 SpringCloud系列之-深入理解Feign

Feign介绍Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡。feign源码的github地址:https://github.com/OpenFeign/feign总起来说,F

2020-11-04 17:37:54 430

原创 SpringCloud系列之-深入理解Ribbon

Ribbon概述 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出LoadBalancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(其中Ribbon提供了多种策略(随机 (Random)、轮询 (RoundRobin)、一致性哈希 (ConsistentHash)、哈希 (Hash)、加权(Weighted)...

2020-11-04 15:51:48 341 1

原创 Mysql二之数据库主键为什么不推荐使用UUID

数据库存储引擎 通过上篇Mysql一之索引概述我们大概对数据索引有了一定的了解,但是再说mysql索引之前不知各位对存储引擎是否了解。数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。存储引擎分类 MySQL支持多个存储引擎作为对不同表的类型的处理...

2020-10-30 15:16:09 661 2

原创 Mysql一之索引概述

索引概念 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。 ...

2020-10-28 11:02:49 265

原创 面试总结

面试总结基础1、JVM结构原理、GC工作机制详情答:通过JVM内存结构、GC工作机制详解,说到GC,记住两点:①、GC是负责回收所有无任何引用对象的内存空间。 注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,②、GC回收机制的算法,a、引用计数法 b、可达性分析算法( 该算法的基本思路就是通过一些被称为引用链(GC Roots)的对象作为起点,从这些节点开始向下搜索,搜索走过的路径被称为(Reference Chain),当一个对象到GC Roots没有任何引用链相连时(即从GC

2020-10-26 14:00:47 251 5

原创 Date时间类型之如何避免SimpleDataFormat线程不安全问题

问题描述 SimpleDateFormat是我们常用的时间格式化类,也经常听到异样的声音SimpleDateFormat和DateFormat时线程不安全的。至于怎么线程不安全其实并未太多关注,至少我没有太多关注,今天偶有时间总结下这个问题,下面通过看源码来学习下为什么SimpleDateFormat和DateFormat类不是线程安全的:  SimpleDateFormat继承了DateFormat,在DateFormat中定义了一个protected属性的 Calendar类的对象:...

2020-10-26 13:37:15 673 2

原创 ORACLE数据库之ORA-02290检查校验问题解析

问题描述 首先是在开发需求迭代时,发现数据库某个非空字段需要修改成非必填类型。然后就一顿操作猛如虎(就是数据库直接把必输选项的对号取消了),测试环境一顿测试没问题,好了到了预生产环境,一开始就一片片报错:现实惨不忍睹,一片片啊。Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02290: check constraint (TEST.SYS_C0016848) violated; ]; ORA-02290: ...

2020-09-02 10:18:47 2367

原创 设计模式(三)-单例模式

单例模式概述 单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)。单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个...

2020-08-14 10:28:28 111

原创 设计模式(二)-软件开发过程中需要遵循的设计原则

1. 软件设计模式的概念 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。2. 软件开发设计过程中需要遵循的原则 在软件开发中,为了提高软件系统...

2020-08-13 18:17:26 4301

原创 IDEA的操作快捷键大全

导语 兄弟们还在使用eclipse或者myeclipse的兄弟姐们们,呼唤你们尽早使用IDEA替换吧,过渡期是有点别扭,但是过去之后将是彼岸花香满园,让你沉醉在编码的海洋中。基本操作Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近的改动过的代码块Ctrl+F12,可以显示当前文件的结构Ctrl+N,可以快速打开类Alt+Q,可以看到当前方法的声明Ctrl+P,可以显示参数信息...

2020-08-11 09:41:32 434

原创 Dubbo学习之(二)Dubbo负载均衡策略、集群容错策略和动态代理策略

Dubbo负载均衡策略random loadbalance:dubbo的默认负载均衡策略,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。roundrobin loadbalance:默认情况是均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性能差的机器负载过高。所以此时需要调整权重,让性能差的机器承载权重小一些,流量少一些。least

2020-07-30 13:51:33 289

原创 Dubbo学习之(一)Dubbo工作原理

认识Dubbo Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。同时也是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于...

2020-07-29 16:33:38 958

原创 Jmeter之简单接口压力测试实现

什么是压力测试? 压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,以及系统可以承受的压力情况。然后做针对性的测试与分析,找到影响系统性能的瓶颈,评估系统在实际使用环境下的效率情况,评价系统性能以及判断是否需要对应用系统进行优化处理或结构调整。并对系统资源进行优化。 软件系统的负载压力是指...

2020-07-27 16:39:18 725

原创 java之java类的生命周期简述

概述 Java对象我们都很熟悉,上来一顿操作猛如虎new 一个。但是说实话真要是说说类的创建过程及这个类的生命周期之类更深些的东西。估计回答起来就不是太顺畅了,当然个人感觉啊,大牛勿喷。下面咱们就聊聊java类的生命周期是如何运转的。 当编写完一个java的文件后,经过编译会生成一个后缀名为.class的文件(字节码文件),这种字节码文件是需要在java虚拟机中运行的。java类的生命周期就是指一个 .class文件从加载到卸载的全过程。一个java类的完整的生命周...

2020-07-22 16:51:02 1798

原创 jvm之垃圾回收机制

垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。下面主要说下堆内存的GC。Minor GC: 新生代通常存活时间较短,因此基于复制算法来进行回收,(想了解回收算法的请参考:https://blog.csdn.net/qq_39470733/article/details/77447521)所谓复制算法就是扫描出存活的对象,并复制到一块新...

2020-07-15 10:19:51 198

原创 线程、多线程之锁的简述

1. 概述 今天说的是无锁、偏向锁、轻量级锁、重量级锁。要注意的是,这四种状态都不是Java语言中的锁,而是Jvm为了提高锁的获取与释放效率而做的优化(使用synchronized时)的锁。在Java1.5之前synchronized是一个重量级锁,Java 1.6对synchronized进行的各种优化后,synchronized并不会显得那么重了。 了解这个几个锁之前希望大家对自旋锁,和java对象有一定了解,我就简单介绍下。1.1 自旋锁 ...

2020-07-01 11:19:36 253

原创 线程、多线程之ThreadLocal简述

1. ThreadLocal简介1.1ThreadLocal概述 通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢?JDK中提供的ThreadLocal类正是为了解决这样的问题。ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有...

2020-06-30 10:48:16 541

原创 线程、多线程之Atomic 简述

1. 介绍一下Atomic 原子类 Atomic 翻译成中文是原子的意思(事务的四个特性ACID,其中A就是原子性)。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包java.util.concurrent的原子类都存放在java.util.concurrent.atomi...

2020-06-17 17:10:54 960

原创 线程、多线程之volatile关键字

1. 讲一下Java内存模型 在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器,线程私有)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解决这个问题,就需要把变量声明为volatile,这就指示 JVM,这个变量是不稳定的,每次有线...

2020-06-12 17:50:28 223

原创 线程、多线程之synchronized关键字

1.synchronized关键字简述 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 在 Java 早期版本中,synchronized属于重量级锁(获取锁和释放锁的过程及其消耗性能),效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程...

2020-06-12 17:40:09 310

原创 Mybatis之Mybatis-Plus插件使用简述

还在为些SQL而烦恼的同学这个插件真的是好的福音,因为Mybatis-plus是真的好用。话不多说直接开整。1.引入POM首先说下项目背景该项目是基于JDK1.8、SpringBoot 2.0.2版本创建的,引入Mybatis-Plus插件pom,注意的是项目中集成mybatis-plus需要把mybatis、mybatis-spring去掉,避免冲突。(好的建议实体都结合lombok这个工具,添加了这个依赖,开发工具需要安装Lombok插件,最常用的用法就是在实体类中使用它的@Data注解,这样实

2020-05-21 13:54:44 3356

原创 spring事务管理之踩坑一

先来说下该博文的创作背景,要从一道经典的面试(网传是)说起下面贴上源码 @Autowired ITestMapper testMapper; public void parent(){ child(); User user = new User(); user.setName("lgh").setMobile(...

2020-03-31 11:26:39 268

原创 spring事务管理之详解

事务传播行为:  @Transactional(propagation=Propagation.REQUIRED) :如果有事务,那么加入事务,没有的话新建一个(默认情况下);  @Transactional(propagation=Propagation.NOT_SUPPORTED) :不开启事务;  @Transactional(propagation=Propagation.REQ...

2020-03-31 10:43:09 160

转载 消息中间件之-为什么要是用消息队列以及消息队列的优缺点分析

原文出处:https://blogdev.blog.csdn.net/article/details/1025818981 为什么要使用消息队列?回答:这个问题,咱只答三个最主要的应用场景(不可否认还有其他的,但是只答三个主要的),即以下六个字:(1)解耦传统模式:传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来...

2020-03-30 09:18:27 29674 6

elasticsearch-head-chrome-master.zip

通过安装谷歌的elasticsearch head 插件方便我们查看ES集群一些基本信息。

2019-08-16

文档搜索大师PKM

1.按标题瞬间搜索,和everything一样快,功能一样强大,来快速找到文档; 2.支持200多种文档格式的全文搜索,支持组合搜索“A .pdf”搜索包含A内容的PDF文档; 3.文件夹快速定位搜索来分析自己的知识体系; 4.支持本地智能备份、网盘备份等提升知识文档的安全性; 5.支持多维分类、标签、多文档关联等方式来归类整理自己的文档。

2018-09-17

空空如也

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

TA关注的人

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