自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端自动创建react项目脚手架

执行命令行:npm install -g create-vite。npm执行npm install 很慢 还出现证书问题。, 注意本地和测试环境可以这么设置,生产环境不建议,

2025-03-30 22:32:01 349

原创 oracle 查询json数据

sql语句:select * from case where JSON_VALUE(column, ‘$.key’) = ‘target value’jpa specification:cb.equal(cb.function(“JSON_VALUE”, String.class, root.get(“column name”), cb.literal(“$.account_tag” )), “arget value”)

2024-12-24 14:43:09 311

原创 go项目启动流程

对于MAC或者Linux操作系统,可以用cat .bash_profile指令查看当前的GOPROXY,如果需要配置新的,可以在终端用以下指令修改。是Go语言的安装目录,用于指定Go编译器和标准库的位置。更新 go.sum 文件:确保 go.sum 文件中包含所有依赖项的正确校验和。移除未使用的依赖项:从 go.mod 文件中删除那些在代码中不再使用的依赖项。添加缺失的依赖项:添加代码中使用但尚未记录在 go.mod 文件中的依赖项。4: 对于一般的go项目,我们的启动文件是 main.go文件。

2024-11-09 17:26:16 586

原创 字符串的去重全排列

若字符串长度为n,将第一个字母分别与后面每一个字母进行交换,生成n种不同的全排列;再用第二个元素与后面每一个元素进行交换,生成n - 1种不同的全排列……编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。:逐个位置进行选择,一个位置选择了字符后,后面位置不能再选择这个字符,可以用set进行去重.输出:[“qwe”, “qew”, “wqe”, “weq”, “ewq”, “eqw”]仔细观察可以发现,求不同全排列的问题其实是可以利用交换字符串元素来完成的;输出:[“ab”, “ba”]

2024-11-09 17:03:56 210

原创 java-查看当前jvm项目使用的垃圾回收器的方法

JDK 9 之前‌:默认的垃圾回收器是Parallel Scavenge(新生代)+ Parallel Old(老年代)。Parallel Scavenge和Parallel Old都是并行多线程的垃圾收集器,主要追求CPU吞吐量,适合需要高效率处理大量计算任务的场景‌12。‌JDK 9 及以后‌:默认的垃圾回收器变为G1(Garbage-First Garbage Collector)。G1垃圾收集器主要针对大内存数据库或复杂应用,追求停顿时间短,适合需要低延迟的应用场景‌12。

2024-10-06 20:45:20 771 1

原创 leetcode99 恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。解释:2 不能在 3 的右子树中,因为 2 < 3。解释:3 不能是 1 的左孩子,因为 3 > 1。输入:root = [3,1,4,null,null,2]输入:root = [1,3,null,null,2]我们可以找出不符合升序的两个节点,将他们的值交换。输出:[2,1,4,null,null,3]输出:[3,1,null,null,2]所以采用中序遍历时,节点的值是升序的。第一次不满足升序的节点的前一个。

2024-10-06 20:44:43 487

原创 app广告推送常见业务术语

GMV: 商品交易总额(Gross Merchandise Volume)DMP=data management platform=数据管理平台。DAU: 日活跃用户(Daily Active Users)DSP=demand side platform=需求方平台。SSP=supply side platform=供给方平台。RTB=real time bidding=实时竞价。RTA=real time API =实时API。ADX=ad exchange=广告交易平台。

2024-09-11 11:45:29 209

原创 leetcode 61 旋转链表

具体代码中,我们首先计算出链表的长度 n,并找到该链表的末尾节点,将其与头节点相连。然后我们找到新链表的最后一个节点(即原链表的第 (n−1)−(k%n) 个节点),将当前闭合为环的链表断开,即可得到我们所需要的结果。这样我们可以知道,新链表的最后一个节点为原链表的第 (n−1)−(k%n) 个节点(从 0 开始计数)。注意,当链表长度不大于 1,或者 k 为 n 的倍数时,新链表将与原链表相同,我们无需处理直接返回头节点。给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

2024-09-03 20:35:01 440

原创 leetcode1514 最大概率路径(Bellman-ford算法详解)

为了解决这个问题,我们需要在无向图中找到两个节点之间的路径,以最大化边概率的乘积。Bellman-Ford算法通常用于在具有负权重的图中找到最短路径,可以用来解决这个问题。我们将通过迭代更新起始点到达每个节点的最大概率来求最终的最大概率。

2024-08-31 21:38:33 510

原创 Windows系统下Go安装与使用

windows环境下go安装教程

2024-08-18 16:45:06 416

原创 2502. 设计内存分配器

内存分配器模拟

2024-07-26 15:36:16 943

原创 存取款系统接口设计

设计一个存取款接口,入参是账户数组balances 与存取款请求体数组requests。之前的取款时间在24之前的,在24小时之后返回上次取款额度的百分之2并向下取整。当前余额不足,返回余额不足帐号。返回: {900, 295}注明:1号账户余额不足。

2024-07-11 18:14:41 367

原创 交易系统接口设计

Type type;类型:余额,应收款项,应付款项。包含金额,币种,精度。request与response与上述类似。SubBalance结构: {

2024-07-09 09:56:42 319

原创 Java信号量semaphore的原理与使用方法

如果没有可用的许可,线程就会被阻塞,直到有其他线程释放一个许可。相反,release()方法会增加许可的数量,并有可能唤醒等待的线程。通过限制可用的连接数量,Semaphore确保了不会有太多的线程同时访问数据库。线程可以通过acquire()方法来获取许可,如果没有可用的许可,该线程就会阻塞,直到有许可可用。理解了Semaphore的基础和原理后,咱们现在可以探索它在实际场景中的具体使用。它的核心就是维护了一个许可集。简单来说,就是有一定数量的许可,线程需要先获取到许可,才能执行,执行完毕后再释放许可。

2024-07-07 11:21:52 488 1

原创 最小栈问题

思路是可以借助一个辅助栈,辅助栈与原始栈存储相同多的元素,对应位置是从栈底到当前栈顶这个区间的最小值,即当前栈的最小元素。设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。--> 返回 -3.minStack.getMin();--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。

2024-07-07 07:00:00 362

原创 1116. 打印零与奇偶数

解释:三条线程异步执行,其中一个调用 zero(),另一个线程调用 even(),最后一个线程调用odd()。此题与1115很像,都是线程的交替执行问题,不同的是有三个线程,可以用同步信号量来实现交替打印。void zero(printNumber) 调用 printNumber 以输出一个 0。” ,其中序列的长度必须为 2n。void odd(printNumber) 调用 printNumber 以输出奇数。线程 A:调用 zero() ,只输出 0。线程 C:调用 odd() ,只输出奇数。

2024-07-06 16:51:15 403

原创 Leetcode 59. 螺旋打印矩阵

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。更简单,因为边界更可控,是正方形,可以从外圈向中央逼近,重点是边界的处理,避免重复。输出:[[1,2,3],[8,9,4],[7,6,5]]

2024-07-06 11:30:51 453

原创 Leetcode 54. 螺旋打印矩阵

此题的关键是正确变换方向,变换方向的时机是走到了数组边界,或者是走到了已遍历的位置,所以需要记录已遍历的位置;由于变换方向的过程是循环的,周期是4,所以可以用一个自增数字对4的余数表示方向。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]输出:[1,2,3,6,9,8,7,4,5]

2024-07-06 11:21:51 814

原创 简易银行交易系统

交易有效时,我们将账号 account1 的余额减少 money,账号 account2 的余额增加 money。boolean transfer(int account1, int account2, long money) 从编号为 account1 的账户向编号为 account2 的账户转帐 money 美元。如果要进行操作的帐号不在已有的帐号中,即 account>n,那么交易无效。// 账户 5 的余额为 $30 - $20 = $10 ,账户 1 的余额为 $10 + $20 = $30。

2024-07-04 11:18:33 1117

原创 Leetcode1115 交替打印 FooBar及其测试

解释:这里有两个线程被异步启动。其中一个调用 foo() 方法, 另一个调用 bar() 方法,“foobar” 将被输出一次。请设计修改程序,以确保 “foobar” 被输出 n 次。线程 A 将会调用 foo() 方法,而。可以使用同步信号量的奇偶来来实现交替打印。解释:“foobar” 将被输出两次。线程 B 将会调用 bar() 方法。输出:“foobarfoobar”输出:“foobar”

2024-07-02 21:41:26 304

原创 Leetcode1114 按序打印及其测试

输入 [1,2,3] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 second() 方法,线程 C 将会调用 third() 方法。输入 [1,3,2] 表示线程 A 将会调用 first() 方法,线程 B 将会调用 third() 方法,线程 C 将会调用 second() 方法。第二种是通过锁实现,前一个线释放的锁是后一个线程的执行条件。请设计修改程序,以确保 second() 方法在 first() 方法之后被执行,third() 方法在 second() 方法之后被执行。

2024-07-02 21:29:03 454

原创 Leetcode 131 分割回文串

字符串的分割方案F(s)是一个可以拆分为子问题的问题,我们设原字符串的长度为n, 考查以当前位置i为起始点的字符串s[i][n], 对应的分割方案结果集为F(s[i][n]),若子字符串s[i][j]是回文串,那么原问题的一个子集可以表示为 {s[i][j] , s[j][n] }.所以求字符串 s的所有子字符串,这个过程也是一个动态规划,求解 f[i][j] 的时候,为了利用上前置已求得的答案,注意i是递减的, j是递增的。输出:[[“a”,“a”,“b”],[“aa”,“b”]]输出:[[“a”]]

2024-07-01 19:02:42 320

原创 Leetcode 90. 子集 II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

2024-07-01 11:28:41 384

原创 Leetcode 78 数组子集

给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:nums 中的所有元素 互不相同。

2024-06-30 15:55:15 378

原创 leetcode 2741 特别的排列

其中 state 是状态压缩后的集合,其二进制表示中第 k 位为 1 则表示包含整数 nums[k]。求解时:其中j∈state。

2024-06-28 21:57:01 470

原创 二维平面无中心点的聚类算法

二维平面上有许多点p(x , y),按照彼此之间的欧式距离进行分为若干个集合。若点p1(x1, y1)与点p(x2, y2)之间距离小于d,则任务二者是邻居。给数据集的点进行编号,顺序遍历这些点,找出当前点的邻居,记住已经遍历过的点,直到遍历完数据集。

2024-06-28 14:32:10 352

原创 kafka的工作原理与常见问题

kafka是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域。

2024-06-27 19:06:55 505

原创 Leetcode40 无重复组合之和

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。若不考虑重复,一个简单的思路是递归+回溯,要考虑去重, 一种有效做法是先排序,相同元素在同一条递归路径下只被选取一次,这样可以实现有效剪枝。candidates 中的每个数字在每个组合中只能使用 一次。这个题是leetcode39的延续。注意:解集不能包含重复的组合。

2024-06-25 18:34:01 603

原创 Leetcode 560 和为 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。子数组是数组中元素的连续非空序列。本题是找出所有中和为 k 的子数组的个数,子数组的和可以用前缀和来表示,因此是一个前缀和的问题。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。

2024-06-25 18:03:36 246

原创 Leetcode84 柱状图中最大的矩形

在暴力查询的基础上,研究发现,在某些情况下,可以前置信息来加速后续的查询,也就是说,可以使用动态规划来解题。使用zuo[i]数组表示从0到i,柱状图中以heights[i]为高的最大矩形宽度,从左向右遍历一次,使用you[i]数组表示从i到 len -1(终点位置),柱状图中以heights[i]为高的最大矩形宽度,再遍历一次。,第二次遍历时,也就是从i到 len -1(终点位置),向右寻找柱状图中以heights[i]为高的最大矩形时,我们更新最大面积时记得加上前一次求出的左边宽度zuo[i]数。

2024-06-23 17:57:58 732

原创 Leetcode85 01矩阵中的最大矩形

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。动态规划的思想,记录每一个位置向上能到达的最大高度,和向左能到达的最大宽度。每走一步记录当前的最大高度并计算此时的最大面积。在一个点进行遍历时,向左走该点的最大宽度,

2024-06-22 21:00:32 307

原创 Leetcode 221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵char[][] matrix内,找到只包含 ‘1’ 的最大正方形,并返回其面积。

2024-06-22 15:59:44 383

原创 前缀树的设计

前缀树的算法实现

2024-06-21 14:53:30 396

原创 Leetcode211. 添加与搜索单词 - 数据结构设计

如果当前字符是字母,则判断当前字符对应的子结点是否存在,如果子结点存在则移动到子结点,继续搜索下一个字符,如果子结点不存在则说明单词不存在,返回 false\text{false}false;如果搜索完给定的单词的最后一个字符,则当搜索到的最后一个结点的 isEnd\textit{isEnd}isEnd 为 true\text{true}true 时,给定的单词存在。特别地,当搜索到点号时,只要存在一个非空子结点可以搜索到给定的单词,即返回 true\text{true}true。// 返回 False。

2024-06-21 11:09:05 791

原创 Leetcode236 二叉树两节点的最近公共祖先

注意此题的前置条件是一定有公共祖先,所以可以先判断当前节点是不是祖先,如果是,则继续往下找左右子树,如果左右子树中,有一边找到的公共祖先不存在,直接返回另一边子树中的查找结果,否则返回当前根节点。百度百科中最近公共祖先的定义为:对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-06-17 18:40:35 432

原创 Leetcode275 H指数II

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。,可以把查找H指数的过程改成二分法,因为此题中H指数数组是已经排序好的,这样就可以实现log(N)时间复杂度。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。基于前一题的解题思路。

2024-06-17 10:19:15 235

原创 Leetcode274. H 指数(简单易于理解)

根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。如果 h 有多种可能的值,h 指数 是其中最大的那个。根据 H指数的定义,如果当前 H指数为 h 并且在遍历过程中找到当前值 citations[i]>h,则说明我们找到了一篇被引用了至少 h+1 次的论文。计算并返回该研究者的 h 指数。首先我们可以将初始的H 指数设为 0,然后将引用次数排序,并且对排序后的数组从大到小遍历。

2024-06-16 15:19:24 295

原创 基于ChatGPT的大型语言模型试用心得

近年来,ChatGPT这样的大型语言模型,它如同一颗冉冉升起的新星,迅速在商业、教育、娱乐等多个领域照亮了创新的天空,极大地革新了我们的工作与日常生活。这个平台不仅提供了无拘无束的AI聊天功能,还整合了AI绘画、语音对话、解题等多元化功能。目前试用了字节的豆包,kimi, 还有昆仑万维的天工AI,可以帮我们定制绘画,提高英语,学习编程知识,写作,提供更精准的信息。和ai聊了下,可以讨论兴趣爱好,对房价的观点,提供情绪价值。对于不懂的代码,它还会帮我们进行解读。还可以帮助我们写一些基础代码。

2024-06-16 11:56:00 475

原创 JAVA多线程实现的三种方式

Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,因而Callable功能更强些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值。Callable位于java.util.concurrent包下,和Runnable一样,它也是一个接口,在它里面也只声明了一个方法call(),这是一个泛型接口,call()函数返回的类型就是传递进来的V类型。

2024-06-13 18:59:08 549

原创 mysql索引失效的几种情况

mysql 索引失效的情况

2024-06-13 14:11:55 209

空空如也

空空如也

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

TA关注的人

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