- 博客(38)
- 收藏
- 关注
原创 三、《重学设计模式》-单例模式
1.频繁创建或销毁的对象适合使用单例模式2.创建对象耗时过长或者资源过多适合使用单例模式3.频繁用到的对象,类似工具类等,适合使用单例模式。
2025-02-24 10:04:18
378
原创 二、《重学设计模式》-UML类图
例如:每个人都有身份证,每个人也都有头,但是人可以丢身份证,但是人不可以丢脑袋,所以身份证和人的关系是聚合,脑袋和人的关系就是组合。例如:台式机包含机箱、显示器、鼠标、键盘,如果没有显示器,也可以通过远程登录的方式进行访问,所以显示器和台式机的关系就是聚合关系。泛化就是继承,如果B类继承了A类,那么可以说AB类存在泛化关系。依赖、泛化、实现都是从 依赖谁、继承谁、实现谁,箭头就指向谁。类中使用到对方,例如成员属性,方法参数或者返回值,局部变量。实现部分和整体的关系,但是部分与整体是可拆分状态。
2025-02-19 16:47:47
257
原创 一、《重学设计模式》-设计模式简介
类A通过接口 Interface1 依赖类C,类B通过接口 Interface1 依赖类D,如果接口 Interface1对于类C和类D来说不是最小接口,那么类C和类D必须去实现他们不需要的方法, 改进办法,将interface1拆分成三个接口,让他们分别实现不同的接口。简单讲类A 有方法f1,类B想使用f1,简单的办法,B继承A,但是继承就提高了AB之间的耦合,A可以作为参数传递给B使用A方法的方法,A也可以作为B的成员变量通过set方法传递过去,也可以直接在B中通过new来进行组合。
2025-02-18 18:41:39
1073
原创 JAVA-I/O流-高级篇
的流作为io入门,下面是一些功能强大的流,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,相当于是对基本流对象的一种增强。
2024-10-24 15:38:17
779
原创 JAVA-I/O流-基础篇
文件在程序中是以流的形式来操作。流:文件(磁盘)和程序(内存)之间的路径。Java中I/O操作主要是指使用java.io包下,以内存为基准,流向内存为输入流(input),流出内存为输出流(output)。
2024-10-23 15:45:51
994
原创 JAVA-字节与字符的区别
1bit 表示二进制数据0或者11byte=8bit ,1个字节=8个bit ,字节是存储空间的基本计量单位一个英文字母是1个字节,也就是8个bit位一个汉字是2个字节,也就是2byte,16个bit位java默认采用unicode来表示字符,java中一个char是2个byte,一个中文或者英文字符的unicode编码都是占2个字节,但是如果其他编码方式,一个字符占用的字节数则各不形同在GB2312编码或者GBK(BG2312的扩充版)编码中,1个英文字母需要占1个字节,一个汉字需要占2个字节在UTF-8
2024-10-22 14:27:12
492
原创 一文搞懂JDBC
JDBC一、JDBC快速入门1.准备数据库并查看其版本 SELECT VERSION();2.下载对应版本驱动jar包3.创建数据库create table t_emp( emp_id int auto_increment comment '员工编号' primary key, emp_name varchar(100) not null comment '员工姓名', emp_salary double(10, 5) not null comment '
2024-10-17 16:00:48
1084
原创 【单调栈】|代码随想录算法训练营第42天|42. 接雨水、 84.柱状图中最大的矩形
使用单调递增栈解决,注意计算面积找两边最高,右侧最高是当前遍历的值,左侧最高是栈内的第二个值。
2024-08-27 09:18:40
265
原创 【单调栈】|代码随想录算法训练营第41天|739. 每日温度、 496.下一个更大元素 I、503.下一个更大元素II
使用单调栈解决,注意单调栈里面的存放内容为下标值。
2024-08-26 11:01:00
441
原创 【回溯算法】|代码随想录算法训练营第22天|491.递增子序列、 46.全排列、47.全排列 II、【总结】
回溯算法主要解决以下问题组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方式切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集棋盘问题:N皇后,解数独等等解题思路主要是回溯三部曲void backtracking(参数) {if (终止条件) {存放结果;return;for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表);
2024-08-08 19:17:05
487
原创 【回溯算法】|代码随想录算法训练营第21天|93. 复原 IP 地址、 78. 子集、90.子集II
结题思路类似回文子串的切割,注意ip地址合法性的判断。
2024-08-08 16:43:36
385
原创 【回溯算法】|代码随想录算法训练营第20天|39. 组合总和、 40.组合总和II、131.分割回文串
可以使用递归三部曲解决问题,注意循环的边界,可以重复。
2024-08-08 15:46:09
358
原创 【回溯算法】|代码随想录算法训练营第19天|77. 组合、216.组合总和III、17.电话号码的字母组合
回溯算法并不是一个高效算法,它的目的是穷举,替代多层for循环,回溯算法和递归算法相关纠缠,在递归的前后要进行回溯,回溯算法可以理解为树型结构,树的宽度就是for循环的范围,树的深度就是递归的层数。使用循环嵌套可以实现组合结果,但是如果很多位的组合,就需要多层嵌套,如果层数过多,就无法写了,使用回溯法解决,回溯三部曲。
2024-08-07 17:35:20
396
原创 【二叉树】|代码随想录算法训练营第18天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、【总结】
二叉树的种类、存储方式、遍历方式、定义方式。
2024-07-29 22:13:23
378
原创 【二叉树】|代码随想录算法训练营第17天|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
配合二叉搜索树的特性寻找公共祖先。
2024-07-22 19:47:39
401
原创 【二叉树】|代码随想录算法训练营第16天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
中序遍历,构造数组,然后求两两之差,另外就是使用双指针,维护pre为cur的前一个节点,然后两两判断差值。
2024-07-22 17:58:13
261
原创 【二叉树】|代码随想录算法训练营第15天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
构建二叉树,用中序遍历,先创造根节点再创造左右子树。
2024-07-22 16:41:04
344
原创 【二叉树】|代码随想录算法训练营第14天|513.找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树
层序遍历最后一行第一个就是答案,递归遍历需要注意回溯和左下角节点的逻辑,注意左下角的定义,不是左叶子节点。
2024-07-19 14:47:39
456
原创 【二叉树】|代码随想录算法训练营第13天|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
高度距离叶子节点的距离,深度距离根节点的距离,平衡二叉树,左子树和右子树高度差不超过1,用后序遍历,判断每个节点的高度差。
2024-07-18 21:49:26
485
原创 【二叉树】|代码随想录算法训练营第12天|226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度
翻转二叉树,就是逐级进行左右节点进行交换,可以用前序和后续遍历,不能使用中序遍历,中序遍历会导致已经交换的节点重新换回原来的位置。
2024-07-18 17:32:01
332
原创 深度重学JAVA静态内部类的加载时机
经过上面代码的测试,可以得到一下结论,静态内部类和非静态内部类一样,都不会因外部类的加载而加载,同时静态内部类的加载不需要依附外部类,在使用时再加载,实现了懒加载,同时类的加载JVM有加载的机制,同时也实现了并发安全,但是尽管静态内部类可以不依赖外部类实现懒加载,但是加载静态内部类的同时也会加载外部类。
2024-07-17 17:18:07
629
原创 【栈与队列】|代码随想录算法训练营第10天|150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、【总结】
文章讲解。
2024-07-14 17:58:11
369
原创 【栈与队列】|代码随想录算法训练营第9天|232.用栈实现队列、225. 用队列实现栈、 20. 有效的括号、1047. 删除字符串中的所有相邻重复项
用栈的特殊性,先进后出,队列是先进先出,所以使用两个栈实现队列的特性。
2024-07-13 10:03:53
427
原创 深度重学JDK动态代理
这个类包含了很多方法,看一下getProxyClass这个方法,尽管已经标注不建议使用,但是通过名字可以大概猜测到,这个函数是获取代理类的class对象,在前面通过class反射获取constructer构造函数,然后通过constructer.newInstance方法生成对象实例,那么我们探究一下这个class代理对象,但是问题来了,如果这样做,那是不是只要加日志,就要写代理类,那样有多少个service类就要写多少个代理类,那不疯了吗,那我们就想,能不能动态的生成这个代理类,那我们就到了今天的主角。
2024-07-12 06:03:22
2607
原创 【字符串】|代码随想录算法训练营第8天| 151.翻转字符串里的单词 、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串、【总结】
字符串常见的解法有双指针法字符串要注意翻转算法的精髓。
2024-07-11 17:08:09
333
原创 【字符串】|代码随想录算法训练营第7天| 344.反转字符串 、541. 反转字符串II 、卡码网:54.替换数字
控制循环区间,每次都是2k个,然后把前k个翻转,翻转的函数和反转字符转的逻辑一样。
2024-07-10 18:10:05
456
原创 【哈希】|代码随想录算法训练营第6天| 第454题.四数相加II 、383. 赎金信 、 第15题. 三数之和 、 第18题. 四数之和、【总结】
文章讲解。
2024-07-10 16:49:49
544
原创 【哈希】|代码随想录算法训练营第5天| 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数 、 1. 两数之和
当两个元素经过哈希函数产生的关键码一样的时候,就发生了哈希碰撞。哈希表是根据关键码的值而直接进行访问的数据结构。哈希函数是计算关键码的算法。哈希碰撞的解决办法有两种。
2024-07-09 22:20:19
949
原创 【链表】|代码随想录算法训练营第4天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、02.07. 链表相交 、142.环形链表II、【总结】
文章讲解。
2024-07-07 16:53:39
606
原创 【链表】|代码随想录算法训练营第3天| 203.移除链表元素、707.设计链表、206.反转链表
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)
2024-07-06 17:06:03
271
原创 磁盘重新分区并挂载
通过lsblk发现磁盘还有待分区空间,所以我们下面想要将剩下的空间进行分区,然后进行磁盘挂载。创建新分区以后出现了warming,创建分区失败,于是我按照步骤进行了。接下来虚拟机就再也没启动了。我去迎接运维大哥的板砖了。暂时就说到这里,未完待续。
2024-07-06 11:14:20
481
原创 如何在 Linux 中检查未挂载的磁盘
运行 lsblk 命令可以列出系统中所有的块设备,包括已挂载和未挂载的磁盘。今天有人说服务器没挂载硬盘,我也登录上系统查看了一下硬盘挂载情况,然后记录一下这个lsblk命令。MOUNTPOINT:挂载点,表示磁盘或分区当前的挂载位置。0 表示非可移动设备,1 表示可移动设备。TYPE:设备类型,如 disk 表示磁盘,part 表示分区。sda1 是一个分区,大小为 1GB,挂载在 /boot 目录。sda2 是一个分区,大小为 79GB,用作交换分区。NAME:设备名称,表示磁盘的标识符。
2024-07-06 10:33:31
1413
原创 JAVA泛型
Java集合(Collection)中元素的类型是多种多样的。例如,有些集合中的元素是Byte类型的,而有些则可能是String类型的,等等。Java允许程序员构建一个元素类型为Object的Collection,其中的元素可以是任何类型在Java SE 1.5之前,没有泛型(Generics)的情况下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要作显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以在预知的情况下进行的。
2024-07-04 09:43:09
1610
原创 【数组】|代码随想录算法训练营第1天| 704. 二分查找、27. 移除元素
左闭右开 [left, right)左闭右闭 [left, right]
2024-07-03 22:59:07
369
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人