自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Maven项目不展示maven标签

maven项目,右侧不显示maven栏

2022-08-10 12:04:33 908 1

原创 git 相关操作整理

git 强制本地分支推送覆盖远程分支

2022-08-08 11:36:54 499

原创 IDEA设置terminal为Linux子系统

1. 查看bash位置2. 配置IDEA3. 重启IDEA并验证

2022-04-26 14:19:35 973 1

原创 Metaq理解

1. Metaq是什么?MetaQ是一款分布式、队列模型的消息中间件分为Topic与Queue两种模式,Push和Pull两种方式消费支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。...

2022-03-31 15:06:37 1429

原创 Sentinel 学习

整理自:【尚硅谷】Sentinel视频教程丨Alibaba流量控制组件sentinel_哔哩哔哩_bilibili分布式防控场景-流量控制Sentinel的核心骨架是ProcessSlotChain,将不同的Slot按照顺序串在一起(责任链模式),从而实现各个功能(系统保护、流量控制、熔断降级)NodeSelectorSlot:收集资源路径,以树状存储,用于根据调用路径来进行限流ClusterBuilderSlot: 用于存储资源统计信息以及调用者信息,例如资源RT、QPS、Thr

2022-03-31 14:38:59 636

转载 Netty简单理解 【转】

转:彻底理解Netty,这一篇文章就够了 - 掘金1. 从HTTP说起有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。 我们回顾一下传统的HTTP服务器的原理1、创建一个ServerSocket,监听并绑定一个端口2、一系列客户端来请求这个端口3、服务器使用Accept,获得一个来自客户端的Socket连接对象4、启动一个新线程处理连接...

2022-03-24 14:48:52 280

原创 分布式事务

1. 分布式事务如何理解?分为两个阶段【二阶段提交 Alibaba组件 Smeta就是这种方式】1. 事务协调者,向各个服务发起数据操作的请求,每一个服务进行独立的处理 ,但是数据不提交2.事务协调者收到各个服务完成的报告后,再次下达命令来完成事物提交,于是数据才会发生真正的变更2. Smata的三个重要角色?其中:这里有用到@Transactional 是Spring中的声明事物注解。同时smata对其进行了扩展,也支持了远程分布式事务...

2022-03-24 14:01:39 509

原创 Java CountDownLatch和Semaphore

1. 怎么理解CountDownLatch?【内部也是AQS】参照如上:线程1调用await阻塞。直到调用若干次的countDown后(具体次数,初始化的时候已经指定),才会唤醒继续2. 如果多个线程前置调用await呢?多次await,那么多个线程会进行排队 【唤醒的话,会依次唤醒】。也就是所有的阻塞都会被执行注意:ReentrantLock,不管是否是公平锁,都会唤醒第一个【具体是第二个结点】public class CountDownLatchDemo {.

2022-03-23 12:23:53 485

原创 Java ReentrantLock

1. 锁的意义——线程同步2. 案例——基于ReentrantLock来实现同步public class A { public static ReentrantLock reentrantLock = new ReentrantLock(); public static void main(String[] args) { new Thread(() -> { testSync(); }, "t1").start()

2022-03-23 02:49:12 4937

原创 Java AQS

1. 是什么?AQS是抽象队列同步器,是JUC包的核心,也是并发编程的核心2. 哪里使用到AQSReentrantLock的底层就是AQSReentrantLock lock = new ReentrantLock();然后可以执行lock的lock()方法当前锁场景:分为公平锁和非公平锁,默认是非公平如下:会创建出公平锁ReentrantLock lock = new ReentrantLock(true);思想很重要啊!...

2022-03-22 00:24:45 351

原创 Java Synchronized

转:阿里面试题深度解析:Synchronized(obj){...}是锁对象还是代码块?Why?_哔哩哔哩_bilibiliCAS是乐观锁的实现,synchronized就是悲观锁了1.

2022-03-18 14:09:43 153

原创 GO 协程、Channel

整理自:Golang通道Channel详解 - 掘金1. 协程:协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,并且在真正的实现中寄存于线程中,因此系统开销极小,可以有效的提高线程任务的并发性,而避免多线程的缺点2. 轻量:协程的最大优势在于其“轻量级”,可以轻松创建上百万个而不会导致系统资源衰竭,而线程和进程通常最多也不能超过1万个。这也是协程也叫轻量级线程的原因。3. Go 语言在语言级别支持轻量级线程,叫goroutine。Go 语言标准库提供的所有系统调用操作(当然也包括

2022-03-16 14:40:29 883

原创 Spring 循环依赖

整理自:阿里面试题深度解析:Sping Bean循环依赖问题该如何解决?_哔哩哔哩_bilibili1. 类的实例化?所有的类,在Spring框架启动过程中,都会被扫描到,并且是按顺序有序的实例化2. 如何解决循环依赖?...

2022-03-14 15:51:18 876

转载 Java 四种引用【转】

整理自:马士兵老师详解:Java的四种引用类型(对象的强、软、弱和虚引用)_哔哩哔哩_bilibili1. Java有哪些引用类型强软弱虚2. 什么是强引用?如上:M类重写了一个finalize 方法。正常不建议重写,重写的目的是为了跟踪M产生的对象被gc垃圾回收的过程。finalize在对象被回收的时候,会被调用到,所以:当看到打印finalize,就知道 对象被回收3. 软引用当空间不够了,软引用的对象会被回收可以通过-Xmx20M设置1. 问题来.

2022-03-14 14:56:55 141

转载 redis的过期策略【转】

转:Redis的过期策略以及内存淘汰机制_Felix-CSDN博客_redis过期策略和内存淘汰机制我们知道,redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样删除过期数据的?删除过期数据的策略是什么?这就是我们今天要讨论的第一个问题:Redis过期策略。redis为什么这么快,原因之一就是Redis操作都是基于内存的,既然是基于内存的,而内存的大小是有限的,当内存不足或占用过高时,怎么办?这就是我们今天要讨论的第二个问题:Redis的.

2022-03-14 10:39:28 9092 1

原创 异步MQ的选型?

核心问题?如何进行消息队列的技术选型?1. 你问什么要使用消息队列?公司有一个**的业务场景,这个业务场景有个**技术挑战,如果不用mq会很麻烦,但是用了mq之后带给了项目很多好处。2. 消息队列有哪些优点和缺点?任何技术一定是一把双刃剑,一定有很多好处,但是也会有一些坏处3. kafka、activemq、rocketmq、rabbitmq有什么区别,以及适合哪些场景?4. 相关mq了解activemq了解?ActiveMQ是...

2022-03-12 01:12:02 150

原创 GC 理解?

1. 对象什么时候会变成垃圾?当前对象,使用任何方式都不能访问它,那么此刻它就是一个垃圾2. GC root3. 古典的垃圾回收算法4. GC的分代假设年轻代:用于存储刚创建出来的对象老年代:年轻代数据经过清理后的提升5. GC 的古典时代Serial:用一个线程回收年轻代SerialOld:用一个线程回收老年代对于Serial而言:停止用户线程,然后使用一个线程近线回收但是有一个问题...

2022-03-10 19:43:25 384

原创 ThreadLocal 理解Ing

1. ThreadLocal是什么?当某些数据是以线程为作用域并且不同线程有不同数据副本时,考虑ThreadLocal。一句话理解ThreadLocal,向ThreadLocal里面存东西就是向它里面的Map存东西的,然后ThreadLocal把这个Map挂到当前的线程底下,这样Map就只属于这个线程了。2.ThreadLocal的简单使用public class ThreadLocaDemo { private static ThreadLocal<Str.

2022-03-10 03:03:29 162

转载 彩虹表(rainbow table)【转】

https://www.jianshu.com/p/732d9d9604111. 什么样子存储密码才是安全的呢?直接存储密码明文m 存储密码明文的哈希值hash(m) 存储密码明文的加盐哈希 hash(m+salt),这里的salt可以是用户名,手机号等,但必须保证每个用户的salt都不一样才是安全的。如果数据库被入侵。第一方式,明文存储,无安全性可言。第二种方式,虽然是入侵者得到的是hash值,但由于彩虹表的存在,也很容易批量还原出密码明文来。只有第三种方式才是相对安全的。.

2022-03-10 01:57:10 901

原创 算法-开放性题

甲乙丙(或ABC),3个人轮流掷(6面)骰子,先掷出6的人获胜,甲获胜的概率是多少?甲先扔开放性问题,不限制解法;精确到小数点 3 位计算复杂部分建议用编程计算public class Solution { public static void main(String[] args) { Solution solution = new Solution(); Double[] doubles = new Double[101]; ..

2022-03-03 13:42:13 368

原创 算法-动态规划

1. 最大子数组和 【非常有意思】给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。输入:nums = int maxSubArray(int[] nums) 输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。输入:nums = [1]输出:1输入:nums = [5,4,-1,7,8]输出:23 //[-2,1,-3,4,-1,...

2022-03-03 10:13:44 61

原创 ConcurrentHashMap 来,聊一聊原理?

https://blog.csdn.net/yunzhaji3762/article/details/113623168?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164620562716780265470824%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164620562716780265470824&biz_id=

2022-03-02 15:51:06 531

原创 说一下ArrayList和LinkedList的区别【整理中】

阿里面试官:说一下ArrayList和LinkedList的区别?_沉默王二-CSDN博客看到上面的内容?讲解很透彻,但是针对的是jdk14.这里针对jdk8.来说明下1. ArrayList 和LinkList 是 List 接口的两种不同实现,并且两者都不是线程安全的jdk8下:ArrayList 内部使用的动态数组来存储元素,LinkedList 内部使用的双向链表来存储元素,这也是 ArrayList 和 LinkedList 最本质的区别2. ArrayL...

2022-03-01 18:10:40 289

原创 go make new

1. Go语言中new和make都是用来内存分配的原语(allocation primitives)。简单的说,new只分配内存,make用于slice,map,和channel的初始化。package mainimport ( "fmt")func main() { var v *int fmt.Println(*v)}go run main2.gopanic: runtime error: invalid memory address or nil poi

2022-02-28 20:04:56 67

原创 redis AOF疑问、超时

1. BGREWRITE: 在后台(子进程)重写 AOF, 不会阻塞工作线程,能正常服务,此方法最常用。2. 那么使用AOF会不会出现一些其他问题?重写 AOF Buffer 是个不限大小的 buffer,但用户写入的数据量较多时会出现以下两个问题: 占用过多内存,浪费资源; 主进程将 AOF buffer 数据写入到新 AOF 文件中时会阻塞工作线程,用户正常请求的延时会变高,严重情况下会超时,主备同步也会出问题,断开重连,重新同步等。 3. redis 超时问题.

2022-02-28 18:12:07 717

转载 mysql 索引失效的几种场景

15个必知的Mysql索引失效场景,别再踩坑了!

2022-02-28 15:35:31 138

原创 volitaile 内存屏障

参考:什么是Volatile关键字?_独家技术的博客-CSDN博客_volatile1. 什么是指令重排序JVM在编译Java代码的时候,或者CPU在执行JVM字节码的时候,对现有的【指令顺序】进行【重新排序】2. 重排序的目的为了在不改变程序执行结果的前提下,优化程序的运行效率。需要注意的是,这里所说的不改变执行结果,指的是【单线程】下的程序执行结果3. 重排序会不会有什么其他问题?指令重排序是一把双刃剑,虽然优化了程序的执行效率,但是在某些情况下,会影响到【多线程】

2022-02-28 15:01:56 232

转载 线上大量CLOSE_WAIT的原因深入分析

转:线上大量CLOSE_WAIT的原因深入分析 - 掘金这一次重启真的无法解决问题了:一次 MySQL 主动关闭,导致服务出现大量 CLOSE_WAIT 的全流程排查过程。近日遇到一个线上服务 socket 资源被不断打满的情况。通过各种工具分析线上问题,定位到问题代码。这里对该问题发现、修复过程进行一下复盘总结。先看两张图。一张图是服务正常时监控到的 socket 状态,另一张当然就是异常啦!图一:正常时监控图二:异常时监控从图中的表现情况来..

2022-02-28 12:55:02 2188 1

原创 jvm 调优整理

1. jvisualvm工具这里可以看到各个区的变化情况2. Arthasdashboard如上:会发现线程id为8的这个cpu使用率一直很高。使用thread id。会显示出出问题的堆栈【39行哈】分析线程block :thread -b反编译jvm。老年代满了,会触发full gc,如果再次满了,长此以往会出现OOM?3. 调优的目的是什么?用工具查看只是其中的辅助手段。最终目的是为了减少full...

2022-02-27 20:37:55 187

原创 Bean相关 IoC Aop

Spring IoC容器 -Spring教程™1. 一个简单的Spring bean【讲一个对象类以bean的形式交托给Spring管理】Pom依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId&.

2022-02-26 15:37:16 280

原创 Java重写ToString()、equals和hashCode区别

0. "==" 和 equals区别Object类中的equals方法和“==”是一样的,没有区别,即俩个对象的比较是比较他们的栈内存中存储的内存地址。而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,他们比较的是值是不是相等//“==”对于基本数据类型,判断两个变量的值是否相等。/“equal”不能用于基本数据类型1、为什么要重写ToString?所有的对象都会有这个方法【继承Object】,如下默认情况下:getName+@

2022-02-26 02:09:08 652

原创 mac idea格式化

⌥⌘L

2022-02-25 17:58:06 1046

原创 Etcd整理

1. etcd是什么?[]A highly-available key value store for shared configuration and service discovery.多个节点之间通过 Raft 一致性算法的完成分布式一致性协同键值对存储:数据存储在分层组织的目录中,类似于我们日常使用的文件系统。存储方式,采用类似目录结构。 只有叶子节点才能真正存储数据,相当于文件。 叶子节点的父节点一定是目录,目录不能存储数据。 etcd 的场景默认处理的数据都是系统

2022-02-25 15:33:33 1244

原创 redis 集群、分布式锁

1. redis 主从同步数据可以从主服务器向任意数量的从服务器上同步全量复制:Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。增量复制:配置:只要在从节点里面配置上Master节点的ip地址。那么当从节点进行restart的时候 .会自动发起主从同步2. sentien「哨兵」模式Redis的主从复制..

2022-02-24 19:27:46 1970

原创 redis 缓存相关?

1. 缓存穿透指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。解决方案:i. 查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短ii. 布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对 DB 的查询。2. 缓存击穿3. 缓存雪崩同一时间大面积失效,那一瞬间Redis跟没有一.

2022-02-24 11:17:41 490

原创 redis string\list数据结构 持久化

1. stringredis 设计了一种简单动态字符串(SDS)来作为底层实现typedef char *sds;struct sdshdr { // buf 已占用长度 int len; // buf 剩余可用长度 int free; // 实际保存字符串数据的地方 char buf[];};二进制安全(只关心二进制化的字符、不关心具体格式,不会遇到\0进行停止,获取长度通过sds->len)、减少内存分配(动态空间预分

2022-02-23 11:36:07 476

原创 redis zset数据结构理解

参考:Redis数据结构之ziplist - 三石雨 - 博客园sortedset的两种编码分别是ziplist和skiplist 【根据情况选择具体使用哪一种编码】1. ziplist我们从 添加一个有序元素 zadd key score member 命令上就可以发现 key,score,member是同时设置的,score和member是同时作为value被存在list里面,member放在第一个节点,score放在第二个节点。ziplist内的集合元素按score从小到大排序,.

2022-02-23 11:27:16 1408

原创 arthas 简单整理

arthas1. trace实际上是在每一个invokeXXX前后插入代码,然后统计调用的时间2. arthas 排查NoSuchMethodError。 sc命令查找类所在的jar包 jad反编译 排查依赖3. ognl表达式 可以方便快速的获取结果,很强大,同时可以避免groovy出现的内存泄漏问题4. arthas 确认那个controller处理了请求?————首先:SpringMVC的DispatcherServlet是负责将请求分发,所有的请求都有经过它来统一分发。其中有一个核心的..

2022-02-22 16:20:33 173

原创 java 多线程整理

多线程1. Java 并发机制实现原子操作有两种: 一种是锁,一种是CAS[CAS是Compare And Swap]2. 进程是资源分配的最小单位,线程是cpu调度的最小单位3. thread start->startThread->thread_entry->run3. thread 实现了 Runnable4. Thread(Runnable target)5. Thread(Runnable target,String name) 6. 获取线程返回结果———...

2022-02-21 16:44:02 116

原创 java 基础整理

装箱就是自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型1. 只发生在编译阶段2. 自动装箱会涉及到缓存。普通的new 不会3. 拆箱时可能发生NullPointerException1. jedis.2. set nx px[分布式锁]3. del nx [只能删除自己的]4. lua脚本1. class对象。 反射 student.getClass Student.Class forName2. 在运行期间,一个类,只有一个Class对象产...

2022-02-21 10:47:06 153

空空如也

空空如也

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

TA关注的人

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