自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

南淮北安的博客

加油吧!少年!

  • 博客(26)
  • 资源 (9)
  • 收藏
  • 关注

原创 Java 求解修剪二叉搜索树

文章目录一、题目二、题解三、代码四、总结一、题目给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。二、题解发现节点0并不符合区间要求,那么将节点0的右孩子 节点2 直接赋给 节点3的左孩子

2021-10-31 16:55:21 145

翻译 学习单元测试 Mockito 一篇文章就够了

文章目录一、什么是 Mockito二、为什么使用 Mockito三、Mockito 基本使用1. 导入 Maven 依赖2. 创建Mock对象3. 配置 Mock 对象4. Mock 抛出异常四、检验 Mock 对象的方法调用五、使用 spy() 部分模拟对象六、常用操作1. 验证mock对象是否执行了某些操作2. 打桩3. 参数匹配器4. 验证方法的调用次数/最多/最少/从不等5. 返回值为void的方法调用时抛异常打桩6. 验证执行顺序7. 验证没有任何交互8. 检查是否还有没有验证的交互9. 简化Mo

2021-10-30 21:36:32 3727 2

原创 学习单元测试常用的断言 assertTrue 和 assertEquals 一篇文章就够了

阿里规范强制要求:单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。单元测试中不准使用System.out来进行人肉验证,必须使用assert来验证。断言常用的功能:认识断言 assert单元测试时,常用的有 assertEquals 和 assertTrue都能判断两个值是否相等一、assertEqualsassertEquals 如果预期值与真实值相等,则运行success,反之Fai

2021-10-30 20:44:58 14379

原创 学习 Java JUnit 单元测试一篇文章就够了

文章目录一、测试的类型二、单元测试三、Junit 简单使用四、常用注解五、在 IntelliJ IDEA 中使用 JUnit 4一、测试的类型(1)单元测试(Unit test):单元测试关注单一的类. 它们存在的目的是检查这个类中的代码是否按照期望正确运行.(2)集成测试(Integration test):顾名思义, 集成测试是检查开发的模块和其他模块整合时是否正常工作.虽然集成测试的代码影响范围比单元测试要广, 但是集成测试和单元测试一样, 也是针对于开发者而言的.(3)端到端测试(End-

2021-10-30 20:41:52 664

原创 Java 求解删除二叉搜索树中的节点

一、题目给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。二、题解(1)确定递归函数及返回值(2)确定终止条件遇到空则返回,说明没有找到待删除的节点,遍历到空节点就直接返回了(3)确定单层递归的逻辑第一种情况:没找到删除的节点,

2021-10-30 13:28:54 282

原创 Java 求解最长重复子数组

文章目录一、题目二、题解三、代码四、总结一、题目给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。二、题解题目所说的子数组,其实就是连续子序列(1)确定 dp 数组以及下标的含义dp[i][j] = 以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。(2)确定递推公式根据dp[i][j]的定义,dp[i][j] 的状态只能由 dp[i - 1][j - 1] 推导出来。即当 A[i - 1] 和 B[j - 1]

2021-10-29 16:41:09 359

原创 一篇文章带你深入理解 Comparable 和 Comparator

文章目录一、Comparable二、Comparator三、两者比较一、Comparable此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。// TestDemo 类@Data@Builderpublic class Tes

2021-10-29 12:58:30 267

原创 Java 求解最长公共子序列&不相交的线&判断子序列&两个字符串的删除操作

文章目录一、题目二、题解三、代码四、总结五、不相交的线六、判断子序列七、两个字符串的删除操作一、题目给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字

2021-10-28 15:02:09 278

原创 一篇文章带你搞懂慢SQL以及优化的策略

文章目录一、什么是慢SQL ?二、为什么要对慢SQL进行优化?三、数据库性能1. 最大数据量2. 最大并发数3. 查询耗时0.5秒4. 具体实施四、数据库表的设计1. 数据类型2. 避免空值3. text 类型优化五、索引优化1. 索引分类2. 索引优化六、SQL 优化1. 分批处理2. 操作符<>优化3. OR优化4. IN优化5. 不做列运算6. 避免Select all7. Like优化8. Join 优化9. Limit 优化七、其他SQL一、什么是慢SQL ?分析MySQL语句查询

2021-10-27 22:50:39 14871

原创 Java 求解编辑距离

文章目录一、题目二、题解三、代码四、总结一、题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符二、题解(1)确定dp数组(dp table)以及下标的含义dp[i][j] 表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]。(2)确定递推公式在确定递推公式的时候,首先要考虑清楚编辑的几种

2021-10-27 11:29:26 362

原创 Java 求解回文子串

文章目录一、题目二、题解三、代码四、总结一、题目给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。二、题解(1)确定dp数组(dp table)以及下标的含义布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。(2)确定递推公式在确定递推公式时,就要分析如下几种情况。整体上是两种,就是s[i]与s[j]相等,

2021-10-26 11:06:04 664

原创 (面经总结)终于搞明白了 AtomicInteger 如何保证线程安全

文章目录一、为什么引入 AtomicInteger ?二、AtomicInteger 原理分析1. 具体使用2. 原理分析三、简单解释一、为什么引入 AtomicInteger ?谈到线程安全,会首先想到了synchronized 和 Lock,但是这种方式又有一个名字,叫做互斥锁,一次只能有一个持有锁的线程进入,再加上还有不同线程争夺锁这个机制,效率比较低,所以又称 悲观锁与之相对应,就有了 乐观锁 的概念:它不加锁去完成某项操作,如果因为冲突失败就重试,直到成功为止。AtomicInteger

2021-10-24 16:40:16 2597 1

原创 一篇文章带你搞定 Java 日志框架 slf4j

文章目录一、为什么要使用 slf4j ?一、为什么要使用 slf4j ?门面模式:slf4j是门面模式的典型应用,因此在讲slf4j前,先简单学习下门面模式,门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用用一张图来表示门面模式的结构为:门面模式的核心为Facade即门面对象,门面对象核心为几个点:知道所有子角色的功能和责任将客户端发来的请求委派到子系统中,没有实际业务逻辑不参与子系统内业务逻辑的实现为什么要使用 slf4j:我们自己

2021-10-19 15:29:22 1350 1

转载 一篇文章带你深入理解 try-with-resource

文章目录一、为什么引入 try-with-resource?二、try-with-resource 的使用三、原理探究四、注意事项一、为什么引入 try-with-resource?所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。当然可以将处理资源关闭的代码写在finally块中。然而,如果你同时打开了多个资源,那么将会出现噩梦般的场景:public class Demo { public stat

2021-10-18 17:25:24 1927

原创 搞定设计模式之工厂模式一篇文章就够了!!!

文章目录一、定义二、问题背景三、违背设计模式的设计实现三、问题改进一、定义工厂模式也称简单工厂模式,是创建型设计模式的一种,这种设计模式提供了按需创建对象的最佳方式。同时,这种创建方式不会对外暴露创建细节,并且会通过一个统一的接口创建所需对象柳州动力机械厂可以生产织布机和缝纫机。它的主要意图是定义一个创建对象的接口,让其子类自己决定将哪一个工厂类实例化,工厂模式使创建过程延迟到子类中进行。简单地说,就是为了给代码结构提供扩展性,屏蔽每一个功能类中的具体实现逻辑。这种方式便于外部更加简单地调用,同

2021-10-17 12:48:46 312

翻译 搞定 WeakHashMap 的工作原理一篇文章就够了!!!

文章目录一、什么是 WeakHashMap?二、为什么需要 WeakHashMap?三、WeakHashMap 的例子四、WeakHashMap 的使用场景五、WeakHashMap 的数据结构1. 类的定义2. 常量与变量3. Entry 类4. 类关系图六、WeakHashMap 的弱键回收1. put 数据2. get 数据3. 弱键如何回收?一、什么是 WeakHashMap?从名字可以得知主要和Map有关,不过还有一个Weak,我们就更能自然而然的想到这里面还牵扯到一种弱引用结构,因此想要彻底

2021-10-14 15:46:23 1962

原创 搞定设计模式之依赖倒置原则一篇文章就够了!!!

文章目录一、定义二、示例三、问题改进一、定义依赖倒置原则(Dependence Inversion Principle,DIP)是指在设计代码架构时,高层模块不应该依赖于底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。依赖倒置原则是实现开闭原则的重要途径之一,它降低了类之间的耦合,提高了系统的稳定性和可维护性,同时这样的代码一般更易读,且便于传承。二、示例在互联网的营销活动中,经常为了拉新和促活,会做一些抽奖活动。这些抽奖活动的规则会随着业务的不断发展而调整,如随机抽奖

2021-10-13 13:09:45 136

原创 搞定设计模式之接口隔离原则一篇文章就够了!!!

文章目录一、定义二、示例三、问题改进一、定义客户端不应该被迫依赖于它不使用的方法一个类对另一个类的依赖应该建立在最小的接口上接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。接口隔离是为了高内聚、低耦合。在实际的业务开发中,通常会先定义好需要开发的接口,并由各个服务类实现。但如果没有经过考虑和设计,就很可能造成一个接口中包括众多的接口方法,而这些接口并不一定在每一个类中都

2021-10-12 10:03:55 422

原创 学习设计模式之迪米特法则一篇文章就够了

文章目录一、定义二、示例问题三、问题改进一、定义迪米特法则(Law of Demeter,LoD)又称为最少知道原则(LeastKnowledge Principle,LKP),是指一个对象类对于其他对象类来说,知道得越少越好。也就是说,两个类之间不要有过多的耦合关系,保持最少关联性。迪米特法则有一句经典语录:只和朋友通信,不和陌生人说话。也就是说,有内在关联的类要内聚,没有直接关系的类要低耦合。这样的例子在我们生活中也随处可见,就像家里的水管装修,有洗衣机地漏、卫生间地漏、厨房地漏,但它们最终

2021-10-10 21:34:10 203

转载 一篇文章带你深入探讨 DECIMAL 解决 MySQL 数据精度丢失问题

文章目录一、数据精度丢失是如何表现的?二、精度丢失是什么原因?一、数据精度丢失是如何表现的?不要盲目的说float和double精度可能发生丢失,而是说在存取时因为精度不一致会发生丢失,当然这里的丢失指的是扩展或者截断了,丢失了原有的精度。decimal是好,但不是说不会发生任何精度丢失。如果问题看得不深入,总会以偏概全。我们知道,mysql存储小数可以使用float、double、decimal等。这些类型存储的小数精度都比较高。我们平时应用最多的就是两位小数点,所以,这些类型都是可以满足的。

2021-10-10 17:25:35 8740 4

原创 Java 求解二叉搜索树中的插入操作

文章目录一、题目二、迭代法三、递归法四、总结一、题目给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。二、迭代法该题可以利用二叉搜索树的特性,找到要插入的节点,插入即可搜索过程中,需要前驱节点记录要插入的位置class Solution { public TreeNod

2021-10-09 22:33:49 292

原创 一篇文章带你使用 Builder 模式实现构建器

文章目录一、为什么要引入 Builder 模式二、具体使用一、为什么要引入 Builder 模式静态工厂和构造器都有个共同的缺陷,不能很好的扩展到大量的可选参数比如包装食品外面显示的营养成分标签,这些标签中,有几个是必须的,也有很多是可选的当然,当可选参数比较多时,采用 重叠构造器模式也可以,但是此时代码的可读性不好,也很难编写public class NutritionFacts { private final int servingSize; private final int

2021-10-09 15:44:42 442

原创 Java 求解二叉搜索树的最近公共祖先

文章目录一、题目二、题解三、二叉树解法四、二叉搜索树解法五、迭代法六、总结一、题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]二、题解该题可以直接按照: 二叉树的最近公共祖先的思路去解决但

2021-10-08 20:34:29 218

原创 搞定里式替换原则的设计模式一篇文章就够了!!!

文章目录一、定义二、示例问题三、问题改进一、定义继承必须确保父类所拥有的性质在子类中仍然成立子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:当子类继承父类时,除添加新的方法且完成新增功能外,尽量不要重写父类的方法。是动作正确性的保证,即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。二、示例问题我们会使用各种类型的银行卡,例如储蓄卡、信用卡,还有一些其他特性的银行卡。储蓄卡和信用卡都具备一定的消费功能,但又有一些不同。例如信用卡不宜提现,如果提现可能会产生高额的利息。

2021-10-08 16:50:31 132

原创 搞定开闭原则的设计模式一篇文章就够了!!!

文章目录一、定义二、示例一、定义在面向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。这意味着应该用抽象定义结构,用具体实现扩展细节,以此确保软件系统开发和维护过程的可靠性。二、示例对于外部的调用方来说,只要能体现出面向抽象编程,定义出接口并实现其方法,即不修改原有方法体,只通过继承方式进行扩展,都可以体现出开闭原则。计算三种形状的面积:长方形,三角形,圆形public interface ICalculationArea { //计算长

2021-10-06 22:22:28 175

原创 搞定单一职责的设计模式一篇文章就够了!!!

文章目录一、定义二、示例一、定义单一职责:单一功能,规定一个类只能有一个发生变化的原因如果要开发的功能需求,不是一次性,会随着业务的发展不断更新变化,也就是一个 Class类负责超过一个以上的职责时,会出现难以维护,扩展等各种问题二、示例比如视频网站中有:匿名访客:匿名登录普通用户:实名登录付费会员:付费用户简单功能的实现:class VideoUserService{ public void severGrade(String userType){ if (

2021-10-05 23:03:20 125

工业级图像分类实现(包含完整代码+注释)

内容包含数据集制作,模型训练,模型测试三个完整部分。实现了对于人脸微笑的分类,代码中包含完整注释,建议直接看https://blog.csdn.net/nanhuaibeian/article/details/106734550,可以配合博客观看。

2020-12-03

建模思路解决智慧政务的代码和论文

和数学建模专栏智慧政务问题配套,内含代码,预处理之后的文件,包括最后的论文,建议看专栏自己按照思路处理文件得到结果,如果实在不知道怎么处理,再购买处理好的资源文件。

2020-11-21

SQLyog.zip

SQLyog 管理mysql神器附账号密码, 管理mysql,mysql的图形化管理界面,十分好用,管理mysql,mysql的图形化管理界面,十分好用

2020-08-31

PLSQL+instantclient.7z

用于在服务端和客户端连接Oracle使用,具体使用方法见Oracle专栏,有详细使用办法,里面也包含安装步骤。

2020-05-27

Java 旅游网案例.zip

Java实现的一个旅游网案例,包括前台和后天的页面,使用了 servlet,jQuery,redis,mysql,maven,html,jdbc等技术,可以配合我的博客旅游网案例学习。

2020-04-23

java 用户信息展示案例.7z

java 用户信息展示案例,包含用户管理员登录界面,用户信息后台管理界面,实现了用户信息的增删改查,以及分页查询,界面优化等,具体可以配合文章学习。

2020-03-30

MySQL-5.5.40软件(win32和win64包括安装卸载说明).7z

MySQL-5.5.40软件包括 win32和win64 两个版本的安装包,同时包含安装和卸载的说明文档

2020-02-27

Play the ball.zip

小甲鱼的课程 Play the ball 的素材图片和第一节源代码,有需要的可以下载。

2019-08-17

sqli-labs-master-注入学习靶机

sqli-labs是一个非常好的学习sql注入的一个游戏教程,是一个印度程序猿的搬砖建造的,对于了解sqlmap的原理很有帮助。

2019-01-19

空空如也

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

TA关注的人

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