- 博客(204)
- 资源 (2)
- 收藏
- 关注
转载 [概念]二叉排序树、平衡二叉树和红黑树
BST概念二叉排序树(简称 BST),也称为二叉查找树。二叉排序树或者是一棵空树,或者是一棵具有下列特性的非空二叉树:若左子树非空,则左子树上所有结点关键字值均小于根结点的关键字值。若右子树非空,则右子树上所有结点关键字值均大于根结点的关键字值。左、右子树本身也分别是一棵二叉排序树。查找二叉排序树的查找是从根结点开始,沿某一个分支逐层向下进行比较的过程。若二叉排序树非空,将给定值与根结点的关键字比较,若相等,则查找成功;若不等,则当根结点的关键字大于给定关键字值时,在根结点的左子树中查
2024-07-03 14:22:40
127
原创 【selenium】driver.get打包成exe后上报chrome.exe-损坏的映像
C:\windows\SYSTEM32\oldshell1048.dll没有被指定在Windows上运行,或者它包含错误,请尝试使用原始安装介质重新安装程序,或联系你的系统管理员或软件供应商以获取支持。通过定位发现在driver.get处会报该错误,且使用的是selenium库进行开发的,且在部分电脑环境中未上报该错误。经过查询资料发现了selenium4使用了webdriver-manager,自动配置chrome对应的chromedriver,为此使用webdriver-manager进行适配。
2024-07-03 14:17:05
577
原创 桥接模式
对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖顾关系限制了灵活性并最终限制了复用性[DP]。**桥接模式(Bridge):**将抽象部分与它的实现部分分离,使它们都可以独立地变化。合成/聚合复用原则(CARP),尽量使用合成/集合,尽量不要使用类继承。
2024-06-26 16:12:20
189
原创 访问者模式
访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式的目的是要把处理从数据结构分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较合适的 ,因为访问者模式使得算法操作的增加变得容易。注意:访问者模式的能力和复杂性是把双刃剑,只有当你真正需要它的时候,才考虑使用它。Visitor 模式在不破坏类的前提下, 为类提供增加新的新操作。
2024-06-26 16:03:11
266
原创 解释器模式
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。用解释器模式,就如同你开发了一个编程语言或脚本给自己或别人用。
2024-06-26 15:17:21
274
转载 你的首个单元测试
单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list中去,然后确认该值出现在list的尾部。或者,你可能会从字符串删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。
2024-06-21 10:18:59
72
原创 《单元测试之道Java版——使用JUnit》学习笔记汇总
主要用来记录《单元测试之道Java版——使用JUnit》书中的一些必要知识,方便后期编程使用。
2024-06-21 09:58:57
373
原创 中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2024-06-04 21:48:42
366
原创 职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。MFC提供了消息的处理的链式处理策略,处理消息的请求将沿着预先定义好的路径依次进行处理。消息的发送者并不知道该消息最后是由那个具体对象处理的,当前它也无须也不想知道,但是结构是该消息被某个对象处理了,或者一直到一个终极的对象进行处理了。
2024-05-30 15:30:05
177
原创 JAVA 基础知识总结
/数组//对数组排序//List//对List进行排序@Overridereturn 0;}else {// 从小到大1 : -1;// 如果需要从大到小,可以将return的值反过来即可});
2024-04-22 21:43:42
509
原创 命令模式
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。5、由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易;6、命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开。2、在需要的情况下,可以较容易地将命令记入日志;3、允许接收请求的一方决定是否要否决请求;4、可以容易地实现对请求的撤销和重做;1、它能较容易地设计一个命令队列;
2024-04-16 11:35:32
668
原创 单例模式
单例模式估计是校招考的最多的了,没想到此刻还在复习单例模式。单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2024-04-09 11:57:04
570
原创 迭代器模式
迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。迭代器模式在访问数组、集合、列表等数据时,尤其是数据库数据操作时,是非常普遍的应用,但由于它太普遍了,所以各种高级语言都对它进行了封装,所以反而给人感觉此模式本身不太常用了。
2024-04-08 16:01:29
649
原创 Java的基本程序设计结构
笔者决定画一些时间写用CPP的思想去学JAVA,方便对Cpper能够快速转Javaer,也是为了自己的学习与巩固,此处为初稿之一。
2023-09-17 01:00:22
155
原创 《Java核心技术卷1》学习笔记汇总
转部门了,而且换语言了,开始写接口了,虽然也会用到CPP,但是主要语言是JAVA,因此从零开始学JAVA吧。
2023-09-16 22:14:43
288
原创 《C++设计模式》——行为型
前言Interpreter(解释器)Template Method(模板方法)Chain of Responsibility(责任链)Command(命令)Iterator(迭代器)Mediator(中介者)Memento(备忘录)Observer(观察者)State(状态)Strategy(策略)Visitor(访问者)后记
2023-09-07 15:11:04
794
原创 《C++设计模式》——结构型
前言Adapter Class/Object(适配器)Bridge(桥接)Composite(组合)Decorator(装饰)Facade(外观)Flyweight(享元)Proxy(代理)后记
2023-09-07 15:09:38
856
原创 《C++设计模式》——创建型
前言Factory Method(工厂模式)Abstract Factory(抽象工厂)Builder(建造者)Prototype(原型)Singleton(单例)后记
2023-09-07 15:08:22
570
原创 PlantUML——类图(持续更新)
在分析代码流程中,我们常常会使用到各种UML图,例如用例图、时序图和类图等,以往使用ProcessOn或亿图图示等工具,但是这些工具难以规范化,有没有一种用代码来生成图形的工具呢?刚好在出差的晨会中机缘巧合下认识了PlantUML,这不赶快学习一波。该博文用于记录自己的常用项,用于快速生成UNL图形。plantuml官网。
2023-09-07 10:57:08
983
原创 Python 基础知识快速查询,持续更新
在工作中常常面临诸多重复操作,一般都是要求时间紧任务重,在短期内往往需要查询大量语法来进行编码,过多的浪费时间,此处总结自己常用的操作,方便学习和查询。
2023-07-05 14:44:44
325
原创 回溯法
参考链接关于回溯算法,你该了解这些!216. 组合总和 III17. 电话号码的字母组合39. 组合总和40. 组合总和 II分割问题切割问题其实是一种组合问题!
2023-06-26 18:26:16
108
原创 线段树求逆序对的详情理解
看网上都说这个题目很经典,但是自己最初根本没办法将区间求和与求逆序对联系起来,思考了许久,此处进行记录并方便后来着理解。
2022-10-04 02:19:01
848
原创 python刷算法的一些骚操作(一)
对于leetcode里面的一些优秀代码的阅读,有利于学习新的知识点,这篇文章是为了进行总结学习和方便查询的。另外,在python刷leetcode中,不需要单独引用包,直接使用就行。
2022-08-23 00:33:11
671
转载 《深入理解C指针》——指针和结构体
前言本章继续拓展前面所学的指针概念,包括结构体的数组表示法、结构体的内存分配、结构体内存管理技术以及函数指针的用法。介绍结构体的声明:struct _person { char* firstName; char* lastName; char* title; unsigned int age;}使用typedef关键字可以简化使用:struct struct_person { char* firstName; char* lastName; char* title; unsi
2022-05-11 19:53:35
566
转载 《深入理解C指针》——指针和字符串
字符串基础字符串是以ASCII字符NUL结尾的字符序列。ASCII字符NUL表示为\0。字符串通常存储在数组或者从堆上分配的内存中。不过,并非所有的字符数组都是字符串,字符数组可能没有NUL字符。字符数组也用来表示布尔值等小的整数单元,以节省内存空间。C中有两种类型的字符串:单字节字符串:由char数据类型组成的序列宽字符串:由wchar_t数据类型组成的序列wchar_t数据类型用来表示宽字符,要么是16位宽,要么是32位宽。这两种字符串都以NUL结尾。可以在string.h中找到单字节字符
2022-05-07 15:20:37
403
转载 《深入理解C指针》——指针和函数
前言指针对函数功能的贡献极大。它们能够将数据传递给函数,并且允许函数对数据进行修改。我们可以将复杂数据用结构体指针的形式传递给函数和从函数返回。如果指针持有函数的地址,就能动态控制程序的执行流。在使用函数时,有两种情况指针很有用。首先是将指针传递给函数,这时函数可以修改指针所引用的数据,也可以更高效地传递大块信息。另一种情况是声明函数指针。本质上,函数表示法就是指针表示法。函数名字经过求值会变成函数的地址,然后函数参数会被传递给函数。我们将会看到,函数指针为控制程序的执行流提供了新的选择。程序的栈和
2022-05-04 11:19:02
277
自动刷新生安全教育系列课程
2019-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人