自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mybatis集合映射association与collection

1、column="id" 将当前查询结果中的ID作为参数,传递给子查询selectSolidList。一对一:association。一对多:collection。比较容易理解,可参考官方文档。二、association。三、collection。

2025-03-18 15:59:34 486

原创 foreach标签

因为mybatis自动将List集合封装为list。注意:1处可任意字段,userIds或者list。注意:1、2处字段必须相同。2、使用@Param 注解。以上易混淆,需注意。

2025-03-18 14:35:59 214

原创 域名访问(内网ip到域名访问过程)

如果在你的服务器上使用非标准端口(如8080或8443,80和443可能会被运营商会限制访问),你可以继续使用默认的。2、使用NAT(Network Address Translation):通常可以保持默认设置,或者设置为较短时间(如 3600 秒)2、自己搭建的服务器需要向互联网服务提供商(ISP)申请。2、使用8080或者8443端口,NGINX监听这些端口。一、准备内网ip、公网ip、域名购买。1、云服务器会自动分配内网及公网ip。(或者留空,表示根域名)。二、将内网ip映射到公网。

2025-02-28 16:22:15 329

原创 自定义starter中的类无法自动注入

在启动类上用@ComponentScan写清所有的需要扫描的包。因为会覆盖@SpringbootApplication自带的包扫描(一般会扫描启动类同级及子包)。问题:导入自定义启动器starter时,里面的某个类无法自动注入。解决方法:包路径扫描问题。

2025-02-26 20:57:36 90

原创 若依前后端分离项目(二)Spring Security部分

安全框架包含两个部分:1、认证:用户登录2、授权:用户拥有什么权限、可以访问什么资源。

2025-02-10 10:41:04 240

原创 BigDecimal对象构造Double类型小数,出现很多位小数问题

结果:3.565667000000000061987748267711140215396881103515625。将Double类型转为String类型,再构造BigDecimal。会损失精度、出现很多位小数。结果:3.565667。

2025-01-09 10:06:41 215

原创 SSH克隆github项目

全程回车即可(不用输入ras文件名及密码)、为了方便下面的公钥查看。here,并gitclone即可成功拉取代码。出现Identityadded:xx添加成功。点击github头像-settings-如果status为stopped,执行。查看ssh代理是否打开,将公钥内容复制并粘贴至。

2024-12-05 18:17:11 636 5

原创 设计模式(四)装饰器模式与命令模式

ConcreteCommand(具体命令类)​:具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法。它对应具体的接收者对象,将接收者对象的动作绑定其中。可以将开关理解成一个请求的发送者,用户通过它来发送一个“开灯”请求,而电灯是“开灯”请求的最终接收者和处理者。发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。Command(抽象命令类)​:抽象命令类一般是一个抽象类或接口。,只有实现了抽象命令类的具体命令才与请求接收者相关联。

2024-11-13 11:15:45 427

原创 win docker desktop踩坑及解决方案(拉取镜像失败)

3、在C:\Users\THINKPAD(你的用户名)下创建 .wslconfig 注意有个点。解决方案:一开始我的3位置(见下图),没有配置是空的,一直登录不了。二、配置代理(科学上网,之后,需要配置docker代理)配置好baidu.com即可(其他也可),不要为空即可。一、docker desktop 登录不了。注意:1、2处均为http。4、打开下图所示开关。

2024-10-29 18:43:22 5319

原创 Git 分支操作-开发规范

重点:本地分支,先将 master 分支合并到新分支(以防master分支在你的开发过程中,有其他同事推送代码,至此,你本地的一开始拉取的master代码是旧的,因此需要先merge最新的master分支到你的本地,再将你的分支合并到master),之后再将新分支合并到 master 分支。在实际开发中,一般在主分支的基础上单独创建一个新的分支进行开发,最后合并到master分支,而不是直接在master分支进行开发。切换到master分支,将feature分支合并到master。删除远程分支,如下图。

2024-10-16 11:09:49 833

原创 mybatis注意事项

XML中的SQL的注释要用“”,不可以用“-- ”,否则仍会被执行。

2024-09-22 14:02:43 159

原创 常见echart图表 返回数据与Java实体类

总结:柱状图和折线图的数据格式基本一致,实体类相同。

2024-09-05 16:57:36 427

原创 表连接查询之两个left join与递归SQL

4、SELECT e.id, e.user_id, e.parent_id FROM e INNER JOIN ParentHierarchy ph ON e.id = ph.parent_id:递归的主体部分,将表e与已经构建的ParentHierarchy进行内连接,匹配e表中的id和ParentHierarchy中的parent_id,从而得到。左连接,将information表中的每一行与sys_user表中id等于information表中update_id的行匹配。(1,1,2,张三,李四),

2024-09-04 17:33:16 884

原创 VUE-组件间通信(三)全局事件总线

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为。$on:监听事件,当某个自定义事件被触发时,通过on方法注册的回调函数将被执行。,分别用来传输数据、数据地址和。一、作用:任意组件间通信。1、创建全局事件总线。

2024-08-31 18:01:15 703

原创 哈希表应用实例(记一次日常问题解决)

已知条件:100个公司(公司ID已知),每个公司有一个报告,报告内有产量。有一组记录,公司A,报告ID为1;分类之后,即可求每一类的产量和。需求:求每个公司的产量和。公司B,报告ID为2;公司C,报告ID为3;公司D,报告ID为4;公司A,报告ID为5;公司A,报告ID为6;公司B,报告ID为7;公司D,报告ID为8;

2024-08-22 17:09:08 254

原创 postgresql-主键自增

【代码】postgresql-主键自增。

2024-07-26 11:50:15 286

原创 数据库表结构创建

4、有一张主表weather_station:有字段id、name、address、weather_value、weather_unit、weather_origin。一张气温表:有关联字段weather_station_id(可用于存取主表数据)、type字段区分实测值还是默认值、其他字段id、value、unit、origin。{"name":"temp","value":"30","unit":"℃","origin":"白云气象站","type":"0"},Java实体类对应Object。

2024-07-25 19:51:19 264

原创 leetcode-动态规划-01背包

(2)状态转移方程 dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);所以递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);dp[1][1] = max(dp[0][1], dp[0][1- weight[i]] + value[i]) 一定在其左方且上方,重量是nums[i],价值也是nums[i],背包体积是sum/2。

2024-07-10 17:12:50 748 1

原创 leecode-动态规划-基础题目

一定是选最小的,所以dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1](2)dp[i][j]为从dp[0][0]到dp[i][j]的路径数。故:dp[i][j]=dp[i-1][j]+dp[i][j-1]遇到障碍,则停止赋值为1;

2024-07-09 17:05:01 305

原创 leetcode-22-贪心-01

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。为了满足更多的小孩,就不要造成饼干尺寸的浪费!是先遍历的胃口,再遍历的饼干。

2024-07-03 19:55:54 268

原创 leetcode-21-回溯-全排列及其去重

回溯总结:一般来说:组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果。相当于在每个分支上标记使用了那些元素,每个分支,元素只可以使用一次。的序列 nums ,按任意顺序 返回所有不重复的全排列。,这样我们才方便通过相邻的节点来判断是否重复使用了。数字的序列,返回其所有可能的全排列。其中,不需要使用startIndex。1、去重一定要对元素进行。2、树枝去重(更好理解)3、树层去重(效率更高)二、[47]全排列2。

2024-07-02 12:00:51 379

原创 leetcode-20-回溯-切割、子集

示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]子串:[startIndex,i] 即为分割线前面的部分、两个分割线之间的部分(长度至少为1)示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]不同的是先判断取的每一部分是否是回文串,是,则继续分割,下一层递归;给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

2024-06-29 21:28:22 435

原创 leetcode-19-回溯-组合问题(剪枝、去重)

示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]]至多从该起始位置开始遍历(否则元素个数不够):n - (k - path.size()) + 1。类似题目[216]、[17](有点难度)、[39]、[40](需要对开始索引做处理)[x, n]的数组长度起码应该是k-path.size()才有继续搜索的可能。解方程得 x = n+1 - (k-path.size()),那么 n-x+1 = k-path.size()

2024-06-27 21:20:31 657

原创 leetcode-18- [669]修剪二叉搜索树[108]将有序数组转换为二叉搜索树[538]把二叉搜索树转换为累加树

一般先考虑抽出一个子树,即左根右三个节点,之后根据条件,看往左子树还是右子树。二叉搜索树多考虑特性,不用考虑遍历顺序。一、[108]将有序数组转换为二叉搜索树。二、[538]把二叉搜索树转换为累加树。重点:一般二叉树多考虑遍历顺序,三、[669]修剪二叉搜索树。方向前进,或者结束递归返回。

2024-06-26 15:50:26 324

原创 CAS原理与JUC原子类

(2)底层原理:Unsafe类提供的CAS方法,直接通过native方式(通过指针直接操作内存),调用了底层的CPU指令cmpxchg(原子指令)。(1)概念及作用:增强Java语言操作底层资源的能力,里面的方法多为native修饰的方法(基于C++实现),不建议在代码中使用,不安全。(3)使用:类被final修饰,构造方法是私有的,因此不能外部实例化,只能通过反射调用。将value值分离成一个数组,获取最终的value时,则将数组的元素求和。1线程操作变量A,2线程修改为B,在1线程发现前又修改为A。

2024-06-25 16:39:54 476

原创 leetcode-17-[235]二叉搜索树的最近公共祖先[701]二叉搜索树中的插入操作[450]删除二叉搜索树中的节点

一、[235]二叉搜索树的最近公共祖先。二、[701]二叉搜索树中的插入操作。三、[450]删除二叉搜索树中的节点。1、叶子节点的删除思路如上题。

2024-06-25 13:28:06 257

原创 leetcode-16-[530]二叉搜索树的最小绝对差[501]二叉搜索树中的众数[236]二叉树的最近公共祖先

一、[530]二叉搜索树的最小绝对差。三、[236]二叉树的最近公共祖先。二、[501]二叉搜索树中的众数。注意:节点相等,而不是值相等。

2024-06-24 16:23:51 179

原创 leetcode-15-[654]最大二叉树[617]合并二叉树[700]二叉搜索树中的搜索[98]验证二叉搜索树

注意:可以与后序中序建树一起写,思想类似。三、[700]二叉搜索树中的搜索。注意:也可以新建树来存储节点。利用二叉搜索树的特性。四、[98]验证二叉搜索树。一、[654]最大二叉树。二、[617]合并二叉树。重点:类似于数组的双指针。

2024-06-22 20:29:03 295

原创 leetcode-14-[513]找树左下角的值[112]路径总和[113] 路径总和ii [106]从中序与后序遍历序列构造二叉树[105]从前序与中序遍历序列构造二叉树

因此:需暂存tmp(List),再赋值给res,否则只存入了根节点,其他元素都remove了。三、[106]从中序与后序遍历序列构造二叉树[105]从前序与中序遍历序列构造二叉树。如果你知道中序的左部分的size,就可以靠size去切割后序。中序点左点size和后续的左的size一定是一样的。二、[112]路径总和[113] 路径总和ii。重点:List为引用传递,指向同一个内存地址。一、[513]找树左下角的值。因为中序和后续都是先左后右。

2024-06-21 12:27:09 399

原创 leetcode-13-[110]平衡二叉树[257]二叉树的所有路径[404]左叶子之和[222]完全二叉树的节点个数

如:根节点的左子树,只有一个节点,符合条件,此时直接返回。重点:注意不能直接返回 root.left.val,即。应该暂存tmp=root.left.val,注意:注释的1、2两处得有返回值-1。而右子树还没有进行递归,解答错误。四、[222]完全二叉树的节点个数。在左右子树均进入递归后,再返回。另:后序遍历 逻辑更加容易理解。二、[257]二叉树的所有路径。一、[110]平衡二叉树。三、[404]左叶子之和。

2024-06-20 17:47:29 241

原创 leetcode-12-[226]翻转二叉树[101]对称二叉树[104]二叉树的最大深度[111]二叉树的最小深度

2、tmp为局部变量,不存值,直观来说,即层层递归之后的返回tmp,仍为一开始传入的tmp,中间过程忽略不计。1、题目中:最小深度是从根节点到最近叶子节点的最短路径上的节点数量。高度:任意节点到叶子节点(左右孩子都为空)的节点数。说明: 叶子节点是指没有子节点的节点。深度:任意节点到根节点的节点数。三、[104]二叉树的最大深度。四、[111]二叉树的最小深度。重点:交换节点应该传入根节点。一、[226]翻转二叉树。二、[101]对称二叉树。

2024-06-19 15:17:56 329

原创 leetcode-11-二叉树前中后序遍历以及层次遍历

10题解法类似,均可采用层次遍历的思想。前序遍历 (先根遍历) 中左右。[102]二叉树的层次遍历。

2024-06-18 17:08:08 236

原创 leetcode-10-[150]逆波兰表达式求值 [239]滑动窗口最大值[347]前k个高频元素

对于堆(使用PriorityQueue实现):从队头到队尾按从小到大排就是最小堆(小顶堆),2、需要保证队列元素在[i+1-k,i]区间,即当队头元素不在这个区间内,及时移出。从队头到队尾按从大到小排就是最大堆(大顶堆)--->队头元素相当于堆的根节点。3、加入的元素值必须小于队尾元素的值(始终保证队头元素最大),否则移出。“-”、“/”,第二个弹出的元素 “-” 第一个弹出的元素。第一个参数:1 第二个参数:3 负数 1、3。第一个参数:4 第二个参数:3 正数 3、4。

2024-06-17 13:55:54 433

原创 leetcode-09-[232]用栈实现队列[225]用队列实现栈[20]有效的括号[1047]删除字符串中的所有相邻重复项

基于Linkedlist是链表等,除了删除操作,ArrayDeque的其他效率都比Linkedlist好。队列建议用ArrayDeque和Linkedlist来实现。建议用 ArrayDeque和Linkedlist来实现。四、[1047]删除字符串中的所有相邻重复项。重点:queue2 为辅助队列,只做中转用。栈不建议用stack来实现。一、[232]用栈实现队列。二、[225]用队列实现栈。重点:在构造器内初始化。三、[20]有效的括号。

2024-06-15 14:04:03 316

原创 leetcode-08-[151]翻转字符串里的单词[卡码网55]右旋转字符串

一、[151]翻转字符串里的单词。二、[卡码网55]右旋转字符串。

2024-06-14 11:40:56 353

原创 leetcode-07-[344]反转字符串[541]反转字符串II[卡码网54]替换数字

将数组转换成String类型输出的。1、字符数组转String 一般 new String(ch);或者用StringBuffer 、StringBuilder。二、[541]反转字符串II。三、[卡码网54]替换数字。重点:String 不可变。一、[344]反转字符串。

2024-06-13 13:11:36 391

原创 leetcode-06-[454]四数相加II[383]赎金信 [15] 三数之和 [18] 四数之和

nums[k] + nums[i] + nums[left] + nums[right] > target int会溢出。应该注意b 、a 可以相同,故 j > i+1(每次开始时 j = i+1)只需要排序后的数组,在a>0时,再进行比较a>target即可,满足则剪枝。但-5+(-4)+1+2=--6 存在四元组。如[-5,-4,0,1,2] -6。三数之和、四数之和 适合用双指针。一、[454]四数相加II。四、[18] 四数之和。三、[15] 三数之和。1、剪枝时,需要考虑。

2024-06-12 14:05:20 632

原创 leetcode-05-[242]有效的字母异位词[349]两个数组的交集[202]快乐数[1]两数之和

List 数组 固定大小 如26个字母,10个数字 空间换时间。Map hashmap 形式。无限循环:即出现不止一次,考虑用哈希表。Set hashset 去重。一、[242]有效的字母异位词。二、[349]两个数组的交集。三、[202]快乐数。

2024-06-11 15:48:16 315

原创 leetcode-04-[24]两两交换链表中的节点[19]删除链表的倒数第N个节点[160]相交链表[142]环形链表II

快指针先行n步,这样快慢指针之间形成了一段长度为n的窗口,之后快慢指针同步向前相当于保持窗口长度不变。这样当快指针到达了末尾指向NULL,另一端的慢指针距离末尾的长度是n,自然就是指向倒数第n个位置了。由于单链表中的next指针指向的是下一个节点,想要删除倒数第n个节点,自然要将操作指针慢指针指向倒数第n+1个节点,这样才能进行删除操作。如果单链表中要删除的节点是头节点,这个头节点正好是dummyHead的下一个节点,如此即可统一起来删除操作而不必单独考虑。二、[19]删除链表的倒数第N个节点。

2024-06-08 14:35:49 715

原创 leetcode-03-[203]移除链表元素[707]设计链表[206]反转链表

重点:定义size!,并在添加时,删除时改变size大小。小重点:设计链表,比较新颖的题型。重点:理解逻辑,找对方法!一、[203]移除链表元素。二、[707]设计链表。三、[206]反转链表。本节重点:虚拟头节点。

2024-06-07 14:02:56 237

好用的Chrome扩展程序

Chrome扩展程序 1、篡改候 2、onenote 3、谷歌翻译 4、github加速 5、Adblock Plus:拦截广告

2024-07-02

免费的vue.js devtools chrome VUE 调试工具

免费 亲测有效

2024-03-16

Java工具 redis图形化工具+xshell+xftp

Java工具 redis图形化工具+xshell+xftp 下载安装可用

2023-06-19

104规约模拟工具-PMA与ProIEC104ClientVer1.5免安装版

104规约模拟工具 1.PMA 可模拟主站,从站 2.ProIEC104ClientVer1.5免安装版 可模拟主站,从站可以解析报文

2023-06-15

空空如也

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

TA关注的人

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