自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第一页总结

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。递归思路:每一个子递归都将当前节点下一个节点的下一个节点指向当前节点,当前节点的下一个节点置空。递归终止条件:head为空或head.next为空。迭代思路:用pre和cur两个指针遍历链表给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

2024-06-15 22:05:49 803

原创 【LeetCode】回溯

主要就是在选择前先把不能选的排除调,比如全排列是要排除掉已经选了的数字,n皇后是要把当前列,左上角斜线和右上角斜线 有皇后的排除掉。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]做选择的时候要把当前位置不能放皇后的排除掉,排除的方法就是看当前列,左上角斜线,右上角斜线有没有皇后。n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

2024-03-22 17:56:16 629

原创 【LeetCode】总结

和反转全部的区别其实是要记住【不参与反转的第一个节点】,如何得到不参与反转的第一个节点,就是递归到basecase也就是n=1的下一个节点。反转M-N可以转换成 反转前N,只需将head向前移动到left为1就是反转前N了。设置两个指针prev和cur,prev指向head的前一个节点,cur指向head。

2024-02-23 16:58:42 435

原创 单例模式以及以用户id区分的单例模式

单例模式写单例模式 双重检查常考问题为什么要有私有构造器为什么用volatile修饰写单例模式 双重检查import java.util.*;Class Singleton{ // 构造器 private Singleton(){ } // 创建对象 private static volatile Singleton singleton; public static Singleton getSingleton(){ if(single

2021-08-16 16:56:55 409

原创 【LeetCode】贪心

贪心55. 跳跃游戏55. 跳跃游戏55. 跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的

2021-07-13 19:31:06 480

原创 【LeetCode】二分法总结

二分法总结33. 搜索旋转排序数组33. 搜索旋转排序数组整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,

2021-07-13 16:45:48 533

原创 【LeetCode】数组

31、下一个排列31、下一个排列31、下一个排列实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输

2021-07-13 15:32:39 350

原创 【LeetCode】位运算

位运算java移位运算符总结通过异或136. 只出现一次的数字.java剑指offer 56-1 数组中数字出现的次数剑指offer 56-2 数组中数字出现的次数2很多题目都和位运算相关,但是自己可能看到一些题目会想不到位运算,这里就总结一下。java移位运算符总结<< : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以2>>> :

2021-07-12 20:26:08 141 1

原创 【LeetCode】dfs和bfs

dfs和bfsdfsdfs解决的问题剑指 Offer 38. 字符串的排列Acwing排列数字参考:lzh【算法学习笔记】17:DFS与BFSdfsdfs解决的问题深度优先搜索常用于解决需要给出所有方案的问题,因为它的搜索顺序就是能够得到一个完整的搜索路径(方案)后回退再去搜索其它的方案。剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb

2021-06-22 21:41:45 369

原创 【LeetCode】树与图的dfs和bfs

参考:lzh的笔记树与图的存储结构:邻接表由于树是特殊的图,所以我们存储树也是用的邻接表或邻接图。邻接表是指对于图上的每个结点来说,用一个单链表存储它的临接点。我们需要h[],e[],ne[],idx来表示这个邻接点:h[v] : 指向节点v形成的链表的头节点注意初始化为-1e[i] : 第i个点的值v(表示下标和值的映射)ne[i] : 表示邻接表链表中 i 节点的下一个节点idx : 当前遍历到的节点的索引,等边都插入完idx就是节点个数在节点a的后面插入b:idx为当前遍历

2021-06-22 20:01:36 377 1

原创 【LeetCode】拓扑排序

拓扑排序拓扑排序 模板AcWing 848. 有向图的拓扑序列拓扑排序 模板拓扑排序用bfs来访问所有的节点,把入度为0的节点加入到队列中;每次从队列中取出一个节点,相当于从图删除这个节点,这样此节点的后继节点的入度都减1,再把入度为0的节点加到队列中。时间复杂度时间复杂度 O(n+m)O(n+m), nn 表示点数,mm 表示边数java 模板AcWing 848. 有向图的拓扑序列【题目描述】给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该

2021-06-18 16:59:41 1097

原创 【LeetCode】字符串总结

65. 有效数字思路: class Solution { public boolean isNumber(String s) { int n = s.length(); char[] cs = s.toCharArray(); int idx = -1; // 通过 e/E 对字符串进行分割 for (int i = 0; i < n; i++) {

2021-06-17 16:02:39 350

原创 【Java】Java8新特性:CompletableFuture

CompletableFutureJava CompletableFuture 详解

2021-06-17 15:41:53 613 1

原创 【LeetCode】动态规划系列总结

动态规划系列总结用到dp的题目类型解题套路322. 零钱兑换参考:labuladong的算法小抄用到dp的题目类型动态规划问题的一般形式都是求最值解题套路动态规划三要素:重叠子问题最优子结构状态转移方程核心思想就是穷举所有可行解求最值—>列出正确的「状态转移方程」得到状态转移方程:状态转移方程其实就代表着暴力解,然后用DP table 优化明确 base case明确「状态」原问题和子问题中会变化的变量明确「选择」导致状态变化的行为定义 dp 数组/函数的含义

2021-06-01 00:57:32 486 1

原创 【LeetCode】双指针

双指针双指针场景例题26. 删除有序数组中的重复项15. 三数之和双指针场景例题26. 删除有序数组中的重复项给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// num

2021-05-07 21:45:56 315

原创 【LeetCode】单调栈相关题目总结

单调栈单调栈用单调栈的类型42. 接雨水496. 下一个更大元素 I503. 下一个更大元素 II单调栈用单调栈的类型42. 接雨水42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。提示:n == height.length0 <= n <= 3 * 1040 <= height[i] <= 105思路:有坑才能接住雨水,所谓的坑其实就是有左右两个边界,那我们只要找到每个坑的边界,就可以通过这个边

2021-05-06 14:25:49 603

原创 【git学习】

git学习常用命令merge常用命令git status查看在你上次提交之后是否有对文件进行再次修改git checkout (branchname) 切换分支merge当分支和master有冲突的时候,merge时可以用idea解决git -> merge

2021-04-26 15:53:07 91

原创 【LeetCode】滑动窗口系列总结

滑动窗口系列总结用到滑动窗口的类型滑动窗口模板我们要修改的点例题76. 最小覆盖子串排列相关567. 字符串排列438. 找到字符串中所有字母异位词3. 无重复字符的最长子串904. 水果成篮用到滑动窗口的类型滑动窗口模板我们要修改的点扩张窗口时(right++) 如何更新窗口数据收缩窗口的条件收缩窗口时(left–)如何更新窗口数据一般收缩和扩张更新数据都是对应的注意更新答案的地方:明确我们需要的答案在哪部分,例如3.无重复最长子串,我们需要的答案就是在收缩完窗口才保证窗

2021-03-28 23:35:56 916

原创 【Docker】Docker部署Nginx、tomcat、es

Docker部署Nginx、tomcat、esDocker部署Nginx端口暴露Docker部署tomcatDocker 部署elasticsearch+kibanakibana连接elasticsearchDocker部署Nginx搜索镜像也可以去docker官网搜索,这样可以查看具体的版本信息docker search nginx拉取下载镜像 pulldocker pull nginxdocker images # 查看是否下载成功镜像运行-d 后台运行–name 给容器命名

2021-03-27 00:15:52 159

原创 【Docker】常用命令

Docker常用命令帮助命令镜像命令查询镜像搜索镜像下载镜像删除镜像容器命令新建容器并启动查看正在运行的容器退出容器删除容器启动和停止容器的操作常用的其他命令帮助命令官方文档命令查询打印当前docker的版本信息docker version #docker版本信息docker info #docker系统信息,包括镜像和容器数量docker --help #万能命令镜像命令查询镜像查看所有本地主机

2021-03-24 22:07:32 260

原创 【Docker】Docker组成及运行原理

Docker学习Docker组成docker官方文档docker仓库地址Docker组成镜像(image):docker镜像好比一个模板,可以通过这个模板来创建容器服务,tomcat镜像

2021-03-20 21:33:06 217

原创 【算法】刷题上常用的数据结构的方法

栈二叉树的迭代遍历要用到栈,java 创建栈 Deque<Integer> stack = new LinkedList<Integer>(); 常用方法:stack.isEmpty(); //判断是否为空stack.push(num);//入栈int num = stack.pop(); //出栈int top = stack.peek();//查看栈顶元素...

2021-02-27 12:20:57 174

原创 【算法】dfs总结

二叉树的迭代遍历用压栈的方法来进行迭代 ,最关键的是用null标志来区分每个递归调用栈,不同遍历顺序只用改变压栈顺序即可(先序遍历:右节点->左结点->根节点 //中序遍历: 右节点->根节点->左结点 //后序遍历: 根节点->右节点->左结点)我们在每次处理过的结点压栈后,在给他后面压一个空结点,这样栈顶元素如果是null就说明他下面的那个结点已经被处理过了,就直接访问就好了。这样前序遍历、中序遍历、后序遍历就统一了!class Solution {

2021-02-27 12:18:08 164 1

原创 【算法】排序问题整理

排序快排TopK问题使用堆解决使用快排快排选一个基数,使基数左边的都小于它,右边的都大于它,然后以基数为分界点对左右两边区间进行同样的操作class Solution { public int[] sortArray(int[] nums) { int n = nums.length; quickSort(nums,0,n-1); return nums; } public void quickSort(in

2021-02-27 09:11:55 142

原创 【并发】面试整理

有序:TreeMap线程不安全跳表 线程安全ThreadLocal

2021-02-25 16:03:12 83

原创 我的面试

我的面试阿里淘系技术部 一面2.25阿里淘系技术部 一面2.25项目问题项目中遇到哪些问题是如何解决的用一台Redis存热点问题,有大量请求过来Redis扛不住了该如何解决消息队列消费端消息丢失怎么解决、发送端消息丢失怎么解决RocketMQ保证消息顺序性本地缓存用什么实现的guava的底层原理JAVA基础遇到过的JAVA异常计算机网络TCP连接断开MysqlMysql底层实现原理如果有500万条数据,用java从mysql读查询语句该怎么写

2021-02-25 15:48:02 224

原创 【消息队列】面试题及答案整理

消息队列面试题为什么要使用消息队列/消息队列的应用场景使用了消息队列会有什么缺点如何保证消息队列是高可用的RocketMQ是如何保证消息队列是高可用的如何保证消息不被重复消费/如何保证消息消费的幂等性如何保证消费的可靠性传输RocketMQ如何保证消费的可靠性传输RabbitMQ如何保证消费的可靠性传输Kafaka如何保证消费的可靠性传输如何保证消息的顺序性RocketMQ处理消息积压问题为什么要使用消息队列/消息队列的应用场景消息队列的主要作用是:解耦、异步、削峰。解耦如果A系统要发送数据给B、

2021-02-24 15:06:25 7046

原创 【消息队列】RocketMQ架构和特性

消息队列RocketMQRocketMQ架构RocketMQ 分为四个角色:NameServer Cluster 注册中心每一个NameServer都会拥有全量的Broker Cluster的信息,因为NameServer是无状态的Broker ClusterBroker为定时向NameServer发送心跳,进行注册Consumer Cluster无状态的Producer Cluster无状态的无状态的 也就是相互之间没有感知主从数据同步方式:同步:master执行完后还要把

2021-02-23 23:31:49 362

原创 【Spring】Spring整合Mybatis核心原理分析

Spring整合Mybatis核心原理分析1.3.2版本Mybatis的注册逻辑:实现ImportBeanDefinitionRegistrar接口,重写其registerBeanDefinitions方法 :注册mapper接口,并将接口声明为FactoryBean,设置拦截方法,生成代理类。参考1.3.2版本通过@MapperScan导入了MapperScannerRegistrar类MapperScannerRegistrar类实现了ImportBeanDefinitionRegistra

2021-02-22 23:05:19 148

原创 【Spring】面试问题整理

Spring面试问题整理IOC循环依赖IOC谈谈对spring ioc的理解spring ioc主要就是控制反转和依赖注入控制反转:把依赖注入:循环依赖如何解决循环依赖: 用三级缓存为什么要用三级缓存解决循环依赖因为用三级缓存可以保证两个代理对象能够相互拿到循环依赖对普通的对象的相互依赖 用两级缓存就可以解决...

2021-02-22 12:22:40 176 1

原创 【Redis】面试问题及答案整理

Redis面试问题整理redis的常见数据类型及应用场景redis是单线程为什么还这么快redis 和 memcached 的区别redis 内存淘汰机制

2021-02-21 19:47:06 450

原创 【LeetCode】链表专题总结

LeetCode链表专题总结双指针找链表的中间结点(快慢指针)获取倒数第k个元素(快慢指针)环形链表判断链表是否有环返回链表开始入环的第一个节点判断环的长度反转链表反转整个链表反转链表前N个节点反转单链表的一部分回文链表重排链表相交链表链表排序问题链表经典题目两数相加合并链表合并两个有序链表合并k个排序链表基础操作插入节点删除节点删除单向链表中间的某个节点删除p节点后面的元素双指针找链表的中间结点(快慢指针)通过快慢指针fast 和slow 都从head开始,fast走两步,slow走一步,当fast

2021-02-20 23:43:52 382 1

原创 【ElasticSearch】

ElasticSearches的名词解释搜索引擎基础es是倒排索引TF-IDF搜索引擎是一个检索服务,主要分全文检索(如百度)和垂直检索(如京东)。ElasticSearch是分布式的索引库,对内就是一个nosql的数据库,我们称为索引。对外提供检索服务,方式是http或者transport协议(7.0以后不支持)对外提供搜索。es的名词解释搜索引擎基础es是倒排索引es用的是倒排索引, 根据value去找key一个value可以对应很多个key正向索引:(根据key找value)类似

2021-02-14 23:58:39 105

原创 【Zookeeper】集群模式启动源码解析

Zookeeper集群模式启动源码解析runFromConfigquorumPeer.start() 集群模式服务器启动步骤listener.run()startLeaderElection()createElectionAlgorithm()super.start() 启动集群Leader选举功能sendNotifications()状态ServerState:LOOKING:(启动的时候默认状态)集群里没有选举出Leader的时候,所有节点都是这个状态FOLLOWING:Follower的状态

2021-02-11 01:05:45 200

原创 【Zookeeper】典型使用场景实战

公平锁 互斥锁InterProcessMutexacquireattemptLock 加锁createsTheLock() 创建节点创建父节点是容器节点,这样这个节点的所有子节点都被删除后,它就会被删除子节点是临时顺序结点internalLockLoop() 判断刚刚创建的节点是不是序号最小的获取所有子节点并排序getsTheLock 看当前节点是不是最小的不是最小的就去监听前一个结点Zookeeper和redis分布式锁比较redis是主从模式,

2021-02-10 17:15:40 422 2

原创 【Zookeeper】单机模式启动与接收数据模型源码解析

Zookeeper单机模式启动与接收数据模型源码解析DataTree : 节点的存储形式DataNode服务端架构ZooKeeperServerMain.main(args)runFromConfig 单机环境下启动Zookeeper绑定端口start() :SelectorThread和AcceptThread的启动RequestProcessorDataTree : 节点的存储形式DataNode服务端架构当服务端接收到命令做的事:解析配置文件:先持久化命令,即事务日志、快照再更新

2021-02-09 02:27:08 146

原创 【Zookeeper】集群

Zookeeper集群角色集群环境搭建集群动态配置角色LeaderFollowerObserverObserver存在的价值这个Zookeeper的机制有关:Zookeeper使用叫zd的一致性协议,所有的写请求都会有Leader来处理(Follower、Observer接受到请求也会把请求转给LeaderLeader对写请求的处理:首先把写请求存到事务日志,然后把这个写请求转发到其他的Follower结点,Follower结点也会把这个写请求存到事务日志中,当集群中有一半的机器存

2021-02-08 17:29:34 126

原创 【Zookeeper】Zookeeper客户端使用 Curator的使用

Zookeeper客户端创建Zookeeper客户端使用Zookeeper完成增删查改获取数据的方式同步异步curator客户端连接创建节点自定义线程池创建Zookeeper客户端我们创建Zookeeper客户端时的sendThread和eventThread都是守护线程(没有业务线程在运行的时候,守护线程就会退出)。因此我们不能在main 里直接new Zookeeper,因为可能当我们创建好Zookeeper客户端后连接还没建立,main线程就结束了,而我们的两个线程都是守护线程,main线程一退

2021-02-08 13:47:26 268

原创 【Zookeeper】ZooKeeper 内存数据和持久化

ZooKeeper 内存数据和持久化ZooKeeper 内存数据和持久化Zookeeper在内存中的存储形式事务日志数据快照为什么有了事务日志还要快照数据ZooKeeper 内存数据和持久化Zookeeper在内存中的存储形式Zookeeper数据的组织形式为一个类似文件系统的数据结构,而这些数据都是存储在内存中的, 所以我们可以认为,Zookeeper是一个基于内存的小型数据库内存中的数据Zookeeper是以DataNode的形式存在ConcurrentHashMap中的public c

2021-02-08 01:58:14 532

原创 【Zookeeper】1、Zookeeper特性与节点数据类型详解

Zookeeper特性与节点数据类型详解Zookeeper介绍Zookeeper经典应用场景zookeeper特性文件系统数据结构节点类型关于节点命令监听通知机制Zookeeper的ACL( Access Control List )权限控制相关命令口令模式秘钥授权明文授权Super 超级管理员模式IP授权Zookeeper介绍zookeeper,它是一个分布式协调框架,是Apache Hadoop 的一个子项 目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服

2021-02-08 01:31:03 509

空空如也

空空如也

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

TA关注的人

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