自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Otter改造 增加Springboot模块和外部调用接口

名称:otter ['ɒtə(r)]译意: 水獭,数据搬运工语言: 纯java开发定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。

2023-09-16 15:50:56 555 1

原创 Otter同步报错 Caused by: java.lang.NoSuchFieldError: MYSQL

1 文件位置: node/etl/src/main/java/com/alibaba/otter/node/etl/common/db/utils/DdlUtils.java。2 需要 import com.alibaba.druid.sql.ast.statement.SQLAssignItem;通常是由于访问了某个类不存在的成员变量,可能是代码没编译更新,或者使用了不同版本的依赖。在Otter这里,原因是 Otter 使用了不同的 Druid 版本。可以参考 github issue。

2023-09-14 19:53:06 438

原创 解决 SLF4J: Class path contains multiple SLF4J bindings.

由于是我打包的SDK,包含源码,它要被别的项目引入,适合打包阶段排除,也就是上述说的方案。反而不适合别的项目自行排除,即下面这种方式:

2023-09-13 14:15:54 1047

原创 Leetcode 1679. K 和数对的最大数目 双指针法

给你一个整数数组 nums 和一个整数 k。每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。返回你可以对数组执行的最大操作数。示例 1:输入:nums = [1,2,3,4], k = 5输出:2示例 2:输入:nums = [3,1,3,4,3], k = 6输出:1。

2023-05-26 08:23:03 678

原创 npm和cnpm区别

npm(node package manager)是node的包管理工具。

2023-05-25 10:50:03 95

原创 面试题:如何知道java对象被垃圾回收掉,用代码实现一个能监听对象被回收的功能

Java中无法直接判断一个对象是否被垃圾回收掉,因为Java的垃圾回收机制是自动的,程序员并不需要手动清理对象。但是,如果我们想要知道一个对象何时被回收掉,可以使用。方法,这个方法会在对象被垃圾回收前调用一次。我们可以重写这个方法,在这个方法里面打印日志或者执行其他操作,以便于我们观察对象何时被回收掉。方法来观察Java对象何时被回收掉,但并不能保证该方法总是会被调用,因为它只是一个建议性的方法,Java垃圾回收机制并不保证它被执行。在这个方法中,我们打印了一条日志,表示该对象即将被回收掉。

2023-04-29 01:50:14 1125

原创 Java线程同步和协作的5种方式

问题:有3个线程为A,B,C,同时启动,C必须等待A和B完成才能继续执行,如何实现?要求:仅使用 java 语言和它原生API使用 Java 中提供的 CountDownLatch 类实现线程之间的同步和协作使用 Java 中提供的 CyclicBarrier 类实现线程之间的同步和协作使用join()方法:Thread类提供了join()方法,可以让一个线程等待另一个线程执行完毕后再继续执行。

2023-04-29 01:06:44 2452

原创 LeetCode213 打家劫舍 II 动态规划法

此题是 198. 打家劫舍 的拓展版: 唯一的区别是此题中的房间是 环状排列 的(即首尾相接),而 198 题中的房间是 单排排列 的;而这也是此题的难点。如果偷第 i 个房间,意味着跳过了 第 i -1个房间,金额等于前两个步骤的金额 dp[i-2] 加上第 i 个房间;前 0 间房子的最大偷窃价值为 dp1[0]=nums[0] ,,不能偷窃相邻房间因此 dp1[1] = dp1[0]解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

2023-04-24 20:17:07 375

原创 LeetCode122 买卖股票的最佳时机 II 贪心算法

题目链接 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。示例 1:输入:prices = [7,1,5,3,6,4]输出:7。

2023-04-24 17:05:10 182

原创 LeetCode121 买卖股票的最佳时机 遍历法和动态规划

题目地址:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。示例 1:输入:[7,1,5,3,6,4]输出:5。

2023-04-24 15:30:36 369

原创 LeetCode154 寻找旋转排序数组中的最小值 II

注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]]。已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。请你找出并返回数组中的 最小元素。若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]输入:nums = [2,2,2,0,1]输入:nums = [1,3,5]

2023-04-16 18:55:54 321

原创 Leetcode394 字符串解码 递归和非递归

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。输入:s = “2[abc]3[cd]ef” 输出:“abcabccdcdcdef”输入:s = “abc3[cd]xyz” 输出:“abccdcdcdxyz”输入:s = “3[a2[c]]” 输出:“accaccacc”输入:s = “3[a]2[bc]” 输出:“aaabcbc”给定一个经过编码的字符串,返回它解码后的字符串。

2023-04-13 15:13:56 503

原创 Golang编译报错 ‘invalid char’

最近在新电脑安装go环境,发现 golang 包名如果有汉字就不能编译运行。具体来讲,就是报错 ‘invalid char’但是,我在以前的电脑上运行没有问题。

2023-04-09 00:34:52 1311

原创 go配置代理

go大多数依赖都在github.com上,直接拉取非常耗时,甚至超时。打开 https://goproxy.io/zh/然后按照步骤,采用长久生效的方式去配置。配置国内代理将缓解这个问题。

2023-04-08 20:02:19 938

原创 解决go: go.mod file not found in current directory or any parent directory

go.mod 文件是`go run`、 `go build`、 `go install` 的前提,只有 .go文件是不够的。

2023-04-08 17:15:02 3046 2

原创 ‘go install‘ requires a version when current directory is not in a module

至此问题解决

2023-04-08 16:24:21 2128

原创 简洁易懂的配置Go开发环境MacOS

拖到下面选择18的版本(主要是稳定),另外M1芯片的要注意用 ARM64 的。

2023-04-08 14:58:21 618

原创 自行车线控前叉换线之——鸡米螺丝

山地车线控、肩空更换线芯,鸡米螺丝。

2022-10-12 22:26:38 1499

原创 内走线的自行车如何更换变速线

山地车、公路车内走线,换变速线技巧;内走线工具使用说明

2022-10-12 22:04:51 3568 1

原创 Go 语言 sync.WaitGroup 等人策略

了解 Go 语言 sync.WaitGroup

2022-08-22 17:54:10 188

原创 Go语言系列-协程-GMP简介-附字节跳动内推

Go 语言特别适合编写高并发程序,简单,高效,离不开 Go 语言原生支持的协程(go routine)。与传统多线程开发不同,Go 语言通过更加轻量级的协程让开发更加便捷,同时避免了许多传统多线程开发需要面对的困难。Go 语言的并发编程,理解两个内容——协程以及 GMP 模型在 Go 语言中,协程被认为是轻量级的线程。协程和线程之间通过 Go 语言的调度器关联。协程与线程的关系为 M:N,即多对多。Go 语言调度器把多个协程调度到一个线程,或者把一个协程调度到多个线程执行。如果多个协程被分配到不同的线程,这

2022-07-08 23:46:57 281

原创 LeetCode77 组合 - 递归实现

熟悉我的读者朋友都知道,我是面向思维做题,做题是为了保持时间复杂度、空间复杂度的敏感,顺便锻炼一下脑筋,把思维用代码表达出来。题目的解法不止一种,一般记住一两种就差不多了。我的选择标准是:思路简单,代码清晰题目链接给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例.

2022-02-19 14:54:52 361

原创 LeetCode11 盛最多水的容器 双指针法

思路简单,代码清晰。题目链接:https://leetcode-cn.com/problems/container-with-most-water给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图.

2022-02-13 00:10:09 132

原创 LeetCode167 两数之和 II - 输入有序数组 双指针的运用

链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假

2022-02-06 15:54:24 353

原创 LeetCode15 三数之和 双指针法

链接:https://leetcode-cn.com/problems/3sum给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]

2022-02-05 15:31:56 516

原创 LeetCode1248 统计「优美子数组」 前缀和的方法

再次分享一道前缀和的题目可以说它在 560. 和为 K 的子数组 前缀和的运用 上面套了壳本质都是计算前缀和数组,然后用 Map 优化访问效率。链接:https://leetcode-cn.com/problems/count-number-of-nice-subarrays给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中 「优美子数组」 的数目。示例 1:输入:nums = [1,1,2,1,1]

2022-02-04 13:40:20 855

原创 LeetCode42接雨水 暴力法和双指针

链接:https://leetcode-cn.com/problems/trapping-rain-water给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例1输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2:输入:height = [4,2,0,

2022-02-03 15:32:14 6432

原创 560. 和为 K 的子数组 前缀和的运用

链接:https://leetcode-cn.com/problems/subarray-sum-equals-k给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出:2示例 2:输入:nums = [1,2,3], k = 3输出:2示例 3:输入:nums = [1,0,1], k = 1输出:4提示:1 <= nums.length <= 2 * 10^

2022-02-02 16:05:00 488

原创 LeetCode215 数组中的第K个最大元素

链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4题目分析这道题,实际上就是考排序算法。对数组从大

2022-02-01 20:53:38 185

原创 Innodb 之 Undo log 作用

Undo log 是 MySQL Innodb 引擎中最重要的一个组成部分,它的作用贯穿于 Innodb 两个最主要的部分:并发控制(Concurrency Control)和故障恢复(Crash Recovery)。undo log 的作用:事务回滚undo log 记录了数据修改之前的历史值。故障发生时,为了保证原子性,恢复线程执行 undo log,将数据还原到之前的状态。MVCC 多版本并发控制(Multi-Versioin Concurrency Control)通常知道,并发环境下

2022-02-01 15:09:00 1145

原创 1109. 航班预订统计 差分思想的运用

链接:https://leetcode-cn.com/problems/corporate-flight-bookings这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为 n 的数组 answer,里面的元素是每个航

2022-02-01 00:48:31 600

原创 155. 最小栈

题目链接:https://leetcode-cn.com/problems/min-stack设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0

2022-01-23 17:36:15 92

原创 Kafka 架构和设计原则

http://notes.stephenholiday.com/Kafka.pdf首先我们介绍 Kafka 的基本概念。topic: 把特定类型的消息流称为 topicproducer: 生产者能把消息发到 topicbroker:被发布的消息会保存在一些服务器,这些服务器称为 brokersconsumer: 消费者能从 broker 订阅一个或多个 topic,并且能从 broker 拉取并处理消息消息传送就是这么简单,Kafka API 会反映这一简单性。下面展示了生产者发送消息的.

2022-01-18 20:08:09 3200

原创 20. 有效的括号

今天分享一道简单题,跟栈相关的题目链接:https://leetcode-cn.com/problems/valid-parentheses给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4

2022-01-16 16:06:25 150

原创 链表是否有环,以及环的位置

介绍两道算法题,与环形链表有关。LeetCode 141. Linked List Cycle(Easy)LeetCode 142. Linked List Cycle II(Medium)这两道题有连续性,第一道判断单链表是否有环,第二道是找到环形链表成环的节点,返回该节点的引用。环形链表给定一个链表,判断链表中是否有环。示例:输入:head = [3,2,0,-4] 输出:true解释:链表中有一个环,其尾部连接到第二个节点。思路这道题有两个解法,哈希表和快慢指针

2022-01-09 15:29:40 713

原创 25. K 个一组翻转链表

今天介绍一道 hard 级别的题目链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group1 题目描述:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1输入:head =

2022-01-09 14:08:20 55

原创 MySQL 查询优化

读《高性能MySQL》第一章:一个章节就讲清楚 MySQL 架构,锁,事务,多版本并发控制等,讲得很精炼,需要了解过才能读懂上下文。四、五、六章:主要介绍查询优化,比较贴近日常业务开发工作八、九、十四章:讲服务器优化,硬件优化,应用层优化十、十一,十二、十五:讲复制,扩展,高可用,备份与恢复,与MySQL的高可用、扩展性有关一说到提高 SQL 的查询效率,脑海里条件反应似的想到加索引。其实加索引这是一方面。我觉得需要一个系统的、有结构的分类和总结。大致分为库表结构优化、索引设计优化和查询.

2021-12-25 23:48:05 261

原创 设计与架构究竟是什么

选自《架构整洁之道》第1章 设计与架构究竟是什么一直以来,设计(Design)与架构(Architecture)这两个概念让大多数人十分迷惑——什么是设计?什么是架构?二者究竟有什么区别?本书的一个重要目标就是要清晰、明确地对二者进行定义。首先我要明确地说,二者没有任何区别。一丁点区别都没有!“架构”这个词往往使用于“高层级”的讨论中。这类讨论一般都把“底层”的实现细节排除在外。而“设计”一词,往往用来指代具体的系统底层组织结构和实现的细节。但是,从一个真正的系统架构师的日常工作来看,这样的区分.

2021-12-21 01:17:14 492

原创 154. 寻找旋转排序数组中的最小值 II

链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]

2021-12-21 00:54:19 86

原创 283. 移动零

链接:https://leetcode-cn.com/problems/move-zeroes给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题目分析:其实题目说的很清楚了,把0全部挪到后面去。要求是不能开辟新数组。这道题和【 26. 删除有序数组中的重复项】类似定义快慢指针,快指针用于遍历数组,慢指针用来做

2021-12-19 22:11:09 175

空空如也

空空如也

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

TA关注的人

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