自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (3)
  • 收藏
  • 关注

原创 LeetCode - 649. Dota2 参议院

LeetCode - 649. Dota2 参议院649. Dota2 参议院649. Dota2 参议院Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利: 如果参议员发现有权利投票的参

2021-08-16 13:47:47 109

原创 Java-AQS(Abstract Queued Synchronizer)解析与源码分析

Java-AQS解析与源码分析概述分析AQS中的方法可重写的方法源码分析线程的2 种等待模式线程在队列中的状态枚举成员变量独占式同步状态的获取和释放获取释放共享式同步状态获取与释放锁的可重入公平锁和非公平锁概述Abstract Queued Synchronizer用来构建锁或者其他同步组件的基础框架,它使用了一个int 成员变量表示同步状态,通过内置的FIFO 队列来完成资源获取线程的排队工作。分析AQS 自身没有实现任何同步接口,它仅仅是定义了若干同步状态获取和释放的方法来供自定义同步组件使用

2021-08-16 10:40:30 167

原创 Java-ThreadLocal解析与源码分析

Java-ThreadLocal解析与源码分析解析源码解析ThreadLocal内存泄露分析解析ThreadLocal和Synchronized都用于解决多线程并发访问,synchronized 是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程訪问。而ThreadLocal 为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。Spring的事务就借助了ThreadLocal,Spring从数据库连接池取得一个Connection,将

2021-08-16 10:01:46 123

原创 LeetCode-144. 二叉树的前序遍历

LeetCode-144. 二叉树的前序遍历144. 二叉树的前序遍历144. 二叉树的前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0

2021-08-15 21:35:42 61

原创 LeetCode-103. 二叉树的锯齿形层序遍历

LeetCode-103. 二叉树的锯齿形层序遍历103. 二叉树的锯齿形层序遍历103. 二叉树的锯齿形层序遍历给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层序遍历如下:[[3],[20,9],[15,7]] public List<List<Integer>> z

2021-08-15 20:56:22 63

原创 LeetCode-107. 二叉树的层序遍历 II

LeetCode-107. 二叉树的层序遍历 II107. 二叉树的层序遍历 II107. 二叉树的层序遍历 II给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层序遍历为:[[15,7],[9,20],[3]]public List<List<Integer>> levelO

2021-08-15 20:42:10 55

原创 LeetCode-102. 二叉树的层序遍历

LeetCode-102. 二叉树的层序遍历102. 二叉树的层序遍历102. 二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]public List<List<Integer>> levelOrder(TreeNode root) {

2021-08-15 20:36:20 56

原创 LeetCode-198. 打家劫舍

LeetCode-198. 打家劫舍198. 打家劫舍198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到

2021-08-14 21:02:02 136

原创 Spring-Springboot启动源码分析

Spring-Springboot启动源码分析概念SPISpringboot上下文容器的启动内置tomcat的启动和部署自动配置源码概念SPISPI在Springboot中是指去读取META_INF/spring.factories 目录的配置文件内容,把配置文件中的类加载到spring 容器中。那么如果需要将一个类加载到Spring容器中有几种办法:通过xml 的bean 标签通过加@Component 注解被@ComponentScan 扫描通过在spring.factories 配置该

2021-08-14 13:13:39 120 1

原创 LeetCode-206. 反转链表

这里写目录标题LeetCode-206. 反转链表LeetCode-206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000class Solution {

2021-08-09 17:09:37 50

原创 大厂高频面试题-线程系列

大厂高频面试题-线程系列线程的生命周期,线程有几种状态sleep()、wait()、join()、yield()的区别区别ThreadLocal的原理和使用场景ThreadLocal内存泄露原因,如何避免volatile线程池中线程复用原理线程的生命周期,线程有几种状态五种状态:创建、就绪、运行、阻塞、停止阻塞又分三种:等待阻塞:运行的线程执行wait方法,释放占用的资源,JVM会把当前线程放入等待池中,进入这个状态是不能自动唤醒的,必须依靠其他线程调用notify或者notifyAll唤醒,wa

2021-08-09 16:35:34 74

原创 大厂高频面试题-Java系列

大厂高频面试题-Java系列String、StringBuffer、StringBuilderArrayList和LinkedList区别HashMap底层实现ConcurrentHashMap原理,jdk7和jdk8版本的区别Java的异常体系String、StringBuffer、StringBuilderString是final的,不可变的,每次操作都会产生新的String对象StringBuffer是线程安全的,StringBuilder是线程非安全的StringBuffer内的方法是经过s

2021-08-09 13:49:03 121

原创 大厂高频面试题-Spring系列

大厂高频面试题-Spring系列AOPIOCBeanFactoryBean的生命周期Bean的作用域单例Bean是线程安全的么Spring使用了哪些设计模式及应用场景Spring事务的实现方式原理以及隔离级别Spring事务传播机制Spring事务什么时候会失效Bean的自动装配,有哪些方式SpringBoot自动装配原理如何理解springboot的starter什么是嵌入式服务器,为什么使用嵌入式服务器AOPIOCBeanFactoryBean的生命周期Bean的作用域单例Bean是线程安全

2021-08-08 21:22:24 135

原创 Spring-事务传播级别

Spring-事务传播级别PROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEWPROPAGATION_SUPPORTSPROPAGATION_MANDATORYPROPAGATION_NOT_SUPPORTEDPROPAGATION_NEVERPROPAGATION_NESTED对比PROPAGATION_REQUIRED默认为REQUIRED,如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。@Transactional

2021-08-07 17:40:13 82

原创 Spring-AOP链式调用@After、@Before、@AfterReturning、@Around、@AfterThrowing

这里写目录标题一级目录一级目录

2021-08-07 13:55:38 640

原创 Spring-AOP介绍

Spring-AOP一级目录一级目录

2021-08-07 10:01:36 66

原创 Spring-Bean的多例作用域与Bean销毁

Spring-Bean的多例作用域与Bean销毁概述Bean的销毁概述Scope如果是Prototype,不管是不是同一个线程,只要是getBean就会得到一个新的实例。Request作用域,把实例存储到request对象Session作用域,把实例存储到session对象中,request和session作用域只会在web环境中才会存在。Bean的销毁Bean创建完成之后就会对这个bean注册一个销毁的Adapter对象registerDisposableBeanIfNecessary(be

2021-08-07 09:11:44 1233

原创 LeetCode-3. 无重复字符的最长子串

LeetCode-3. 无重复字符的最长子串3. 无重复字符的最长子串3. 无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串

2021-08-06 12:14:47 76

原创 LeetCode-2. 两数相加

这里写目录标题2. 两数相加2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 =

2021-08-06 10:43:49 50

原创 LeetCode-并查集

LeetCode-并查集面试题 17.07. 婴儿名字面试题 17.07. 婴儿名字每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果 John 和 Jon 是相同的,并且 Jon 和 Johnny 相同,则 John 与 Johnny 也相同,即它们有传递和对称性

2021-08-05 21:18:48 79

原创 Spring-@Autowired、@Resource、@Inject区别以及Spring为什么建议建议用构造器的方式注入

Spring-@Autowired、@Resource、@Inject区别以及Spring为什么建议建议用构造器的方式注入@Autowired@Inject@ResourceSpring的注入方式基于Field注入基于setter方法注入基于constructor注入基于field注入的坏处Spring推荐使用构造器注入@AutowiredSpring提供的注解@Autowiredprivate Test test;装配顺序:按照type在上下文中找bea,即查找类型为Test的bean如

2021-08-05 14:04:25 451

原创 Leetcode-括号生成

Leetcode-括号生成22. 括号生成面试题 08.09. 括号解法22. 括号生成https://leetcode-cn.com/problems/generate-parentheses/数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n &lt

2021-08-04 22:12:12 32

原创 Spring-Bean的实例化过程及循环依赖解决

Spring-component-scan概述概述

2021-08-03 17:29:16 209

原创 MyBatis-架构与原理

MyBatis-常见面试题一级目录一级目录

2021-08-02 13:45:07 43

原创 Spring-源码概述与容器加载

Spring-源码概述一级目录一级目录

2021-08-01 22:17:46 133 1

原创 Netty-网络协议与Netty常见面试题

Netty-网络协议与Netty常见面试题TCP三次握手过程为什么需要三次握手TCP四次挥手为什么要有TIME_WAIT状态SYN洪水攻击如果设计QQ,网络协议该如何设计Netty的特点Netty的线程模型TCP粘包和拆包的原因及解决方法零拷贝实现如何解决JDK的selector BUG如何单机支持百万长连接TCP三次握手过程为什么需要三次握手TCP是可靠的传输协议,三次握手能保证数据可靠传输又能提高传输效率。两次握手不能保证连接已建立四次握手没有必要TCP四次挥手为什么要有TIME_WA

2021-08-01 15:24:41 146

原创 Netty-概述与组件

Netty-概述与组件选择Netty的原因为什么使用NIO而不是AIOChannelFutureNetty组件ChannelEventLoopChannelFutureChannelHandlerChannelPipelineByteBuf选择Netty的原因虽然NIO提供了多路复用IO,但是没有信息格式的封装,例如对Json,但是Netty的ChannelHandler提供了封装NIO的类库和API很复杂,需要了解Selector、ByteBuffer等,很复杂客户端权限、心跳控制、粘包拆包的处

2021-07-29 16:43:36 64

原创 Netty-网络协议与滑动窗口

Netty-网络协议与滑动窗口TCP三次握手漏洞:四次挥手心跳TCP通信原理Socket套接字TCP缓冲区窗口机制滑动窗口目的Http过程TCP三次握手三次握手原因:TCP是面向连接的,需要双方都确认连接的建立。第一次握手:客户端请求建立连接第二次握手:服务器应答,并请求建立连接第三次握手:客户端针对服务器请求的确认应答漏洞:SYN洪泛攻击网络服务所在的端口发送大量伪造原地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻止其他用户进行访问解决方案:无效连接

2021-07-29 14:01:39 369

原创 JVM性能调优-调优原则

JVM性能调优-调优案例与实战JVM调优原则目的调优实战参数响应时间合理使用缓存JVM调优原则大多数需要GC调优的不是参数问题,而是代码问题大多数情况下,分析GC情况优化代码比优化参数多得多GC调优是最后的手段目的GC时间够小GC次数够少发生FullGC的周期足够长,时间合理,最好是不发生FullGC执行频率不高,不低于10分钟1次调优实战参数开启分析日志 -XX:+PrintGCDetails调整Metadata空间 -XX:MetaspaceSize=64m 减少F

2021-07-29 12:05:50 95

原创 JVM性能调优-内存溢出与泄露

JVM性能调优-类加载机制内存溢出原因内存溢出的方式内存泄露原因内存泄露的方式溢出和泄露避免浅堆(Shallow Heap)深堆(Retained Heap)IncomingOutgoing命令行工具jpsjstatjinfojmapjstack内存溢出原因申请内存时,没有足够的内存空间内存溢出的方式栈溢出(栈的默认大小是1M)堆溢出方法区溢出本地内存溢出:分配的本地内存大小大于JVM 的限制内存泄露原因申请内存后,无法释放已申请的内存内存泄露的方式长生命周期的对象持有短生命

2021-07-29 11:21:53 123

原创 JVM性能调优-类加载机制

JVM性能调优-执行系统与类加载机制概述加载验证准备解析初始化双亲委派模型启动类加载器扩展类加载器应用程序类加载器Tomcat类加载机制问题概述初始化的5种情况:遇到new、getstatic、putstatic 或invokestatic 这4 条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。这4 条指令的最常见的Java 代码场景是:1.1 使用new 关键字实例化对象的时候1.2 读取或设置一个类的静态字段(被final 修饰、已在编译期把结果放入常量池的静态字段除外)的时

2021-07-28 21:15:05 109

原创 JVM性能调优-垃圾回收及算法

JVM性能调优-垃圾回收及算法概述引用计数法可达性分析(Java)引用类型强引用软引用弱引用虚引用Minor GCFull GC垃圾回收算法复制算法标记-清除(Mark-Sweep)标记-整理(Mark-Compact)分代回收CMS过程:缺点:G1Young GCMixed GC过程特点概述引用计数法对象添加一个引用计数器,当对象增加一个引用时计数器加1,引用失效时计数器减1。引用计数为0 的对象可被回收。对象相互引用时,很难判断对象是否该回收。可达性分析(Java)通过一系列的GC Root

2021-07-28 17:26:07 148

原创 JVM性能调优-对象内存分配+Java泛型

JVM性能调优-对象内存分配概述对象的内存布局对象头实例数据对其填充对象的访问方式句柄直接指针堆内存分配策略Java泛型泛型类泛型接口泛型方法概述加载检查分配内存,具体是使用指针碰撞还是空闲列表要看采用的GC方式内存空间初始化(如默认值)设置(对象头、元数据、分代年龄)对象初始化(constructor)对象的内存布局对象头对象自身运行数据hashcodegc垃圾回收年龄锁状态标志线程持有的锁偏向线程ID偏向时间戳等等类型指针:对象是哪个类的实例拥有的实例数据

2021-07-28 16:12:56 91

原创 JVM性能调优-理解JVM内存区域+常量池问题

JVM性能调优-理解JVM内存区域概述程序计数器栈本地方法栈方法区堆JVM各版本内存区域变化直接内存问题概述线程私有(运行指令):程序计数器、虚拟机栈、本地方法栈线程共享(存储数据):堆、方法区(Java8去掉了)程序计数器唯一不会OOM指向当前线程正在执行的字节码指令的地址(行号)栈存储当前线程方法所需的数据、指令、返回地址-Xss 1M每个方法在执行的时候都会创建一个栈帧局部变量表操作数帧动态连接返回地址本地方法栈保存native方法的信息,调用native方法

2021-07-28 14:52:16 92

原创 Kafka 常见面试题(二)

Kafka 常见面试题(二)Consumer位移自动提交时机Consumer消费过慢会有什么问题Consumer位移自动提交时机Kafka consumer不需要手动提交offset,可以自动提交。// 是否自动提交偏移量props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");// 自动提交偏移量props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "5000"); //

2021-07-27 11:04:57 176

原创 Java并发编程-基础、线程共享与协作(一)

Java并发编程概述概述并发:应用能够交替执行不同的任务,比如单CPU可以执行多个任务是以不可察觉的速度切换任务,达到“并发执行的效果”并行:应用能够执行不同的任务,这些任务是同时执行的。...

2021-07-26 17:15:50 45

原创 SpringCloud-Sleuth+Zipkin

SpringCloud-Sleuth+Zipkin概述zipkin同类产品组成Zipkin+Sleuth原理概述将一次请求分布式调用,使用GPS定位串起来,记录每个调用的耗时、性能等日志,并通过可视化工具展示。AlibabaCloud全家桶没有对应的链路追踪系统,使用Sleuth和Zipking(内部使用的鹰眼)Sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路路,一条请求链路路中包含一个Trace ID,多个Span IDzipkin大规模分布式系统的APM工具,和Sleut

2021-07-25 20:23:43 120

原创 SpringCloud-Nacos+Ribbon+Gateway

SpringCloud-Gateway概述统一接入流量监控安全防护整合NacosGateway配置项路由Predicates网关鉴权概述系统唯一对外的入口,介于客户端和服务端之间的中间层,处理非业务功能,提供路由请求、鉴权、监控、缓存、限流等功能。统一接入智能路由AB测试、灰度测试负责均衡,容灾处理日志埋点流量监控限流处理服务降级安全防护鉴权处理监控网络隔离AlibabaCloud全家桶还没对应的网关,用SpringCloud官方推荐的Gateway。gatewa

2021-07-25 20:01:15 546

原创 SpringCloud-Nacos+Sentinel+Feign

SpringCloud-Nacos+Sentinel+Feign高并发问题解决方案面向失败编程-容错方案Sentinel核心概念配置流量控制两种规则流量控制效果熔断策略熔断状态Alibaba Cloud升级异常种类Feign+Sentinel高并发问题多个服务之间相互依赖,可能会导致系统负载过高,突发流量或网络异常等情况,导致服务不可用。解决方案面向失败编程:不被外界影响不被请求拖垮2.1 上游服务2.2 下游服务面向失败编程-容错方案限流漏斗,不管流量多大,均匀的流入容器,令

2021-07-25 17:31:22 332

原创 注册中心选型-Zookeeper、eureka、nacos

注册中心选型-Zookeeper、eureka、nacos概述ZookeeperEurekaNacos概述一致性协议健康检查雪崩保护访问协议SpringCloud集成NacosCP+APTCP+HTTP+Mysql+ClientBeat有Http、DNSEurekaAP心跳有httpConsulTCP、HTTP、gRPC、Cmd无http、dns支持ZookeeperCPKeep Alive无TCPZookeeperCP

2021-07-25 12:52:14 4672

android-sdk_r08-windows

android-sdk_r08-windows,android安装资源

2011-09-15

jre-6u20-windows-i586-s

jre-6u20-windows-i586-s用于安装网页jre环境的工具

2011-09-14

空空如也

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

TA关注的人

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