自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用SQL整理

避免在索引列上使用<>, NOT IN, IS NULL等导致全表扫描的操作。对于子查询,EXISTS通常比IN性能更好,尤其是子查询结果大时。连接类型(type列,最好是ref、const,避免ALL)选择性高的列建索引,避免低选择性列(如性别)单独建索引。联合索引按查询条件顺序创建,遵循最左前缀原则。利用数据库并行执行能力,提升大数据量查询性能。覆盖索引:索引包含查询所需所有列,避免回表。明确列出需要查询的字段,减少IO和网络传输。避免OR条件导致索引失效,改用UNION。

2025-04-25 11:34:18 408

原创 Windows上使用Python 3.10结合Appium-实现APP自动化

启动Appium Desktop,连接Appium Server(默认地址:http://127.0.0.1:4723)下载地址:https://www.jetbrains.com/pycharm/download/启动会话后,Appium Desktop会显示当前APP界面及元素树。点击界面元素,查看元素属性(id、xpath、class等)启动Appium Server(命令行输入appium)四、代码编写与运行测试(PyCharm开发)确认adb devices能识别设备。观察APP自动化操作执行。

2025-04-23 16:54:47 437

原创 ADB命令大全及示例

ADB(Android Debug Bridge)是Android官方提供的命令行工具,用于电脑与安卓设备(手机或模拟器)之间通信。连接成功后,可以通过adb shell执行安卓设备的shell命令,获取各种参数。八、示例:通过ADB获取手机参数。

2025-04-23 15:23:29 450

原创 Python使用PDF相关组件案例详解

pdfminer.six 是一个专门用来从 PDF 中提取文本的库,能够处理复杂的文本布局,适合用于文本解析,尤其是需要了解 PDF 页面的结构时。pdfplumber 是一个基于 pdfminer.six 的工具,专门用于提取 PDF 中的表格、文本、图像等结构化内容。PyMuPDF 是一个强大的 PDF、XPS、EPUB 等格式的文档处理库,支持提取文本、图像和页面渲染等多种功能。PyPDF2 是一个用于 PDF 文档操作的库,支持 PDF 文件的合并、拆分、旋转、裁剪等。

2024-11-07 17:05:11 955

原创 Python中pandas组件学习总结

(二维数据表),提供了丰富的功能来处理各种格式的数据,pandas 是数据分析和处理的核心工具,掌握它的基本操作及优化技巧能大大提升工作效率。Series 是 pandas 的一维数组,类似于 Python 中的列表,但它可以附带标签(索引),用于标识每个元素。DataFrame 是 pandas 中的二维数据结构,类似于一个表格,拥有行和列,能够保存不同类型的数据。中非常强大的数据处理和分析库,广泛应用于数据清洗、数据分析和数据可视化等领域。使用 loc[] 和 iloc[] 进行数据的访问。

2024-11-07 16:46:43 548

原创 Python处理PDF组件使用及注意事项

它提供了比 pdfminer.six 更简单的 API,可以更容易地提取 PDF 中的表格,同时支持文本和图像提取。PyPDF2 和 PyPDF4 都是功能强大的 PDF 操作库,适用于合并、拆分、旋转 PDF 文件,提取 PDF 元数据等。pdfminer.six 是一个强大的 PDF 文本提取库,尤其适用于精确提取页面上的文本,支持复杂的文本布局、字体、字符信息的提取。PyMuPDF(也叫 fitz)是一个非常强大的 PDF 处理库,支持文本、图像、页面渲染和注释提取等功能。

2024-11-07 16:33:18 1180

原创 Python学习大纲总结及注意事项

1. 变量命名规范2. 避免使用可变默认参数3. 注重代码的可读性4. 理解浅拷贝和深拷贝5. 用is判断None6. 条件表达式中的and和or短路7. 理解迭代器与生成器8. 避免过多的嵌套。

2024-11-06 15:17:22 691

原创 linux命令总结

以上都是文件管理、网络管理、系统监控、文本处理等。掌握这些命令,可以让你更高效地使用Linux系统。(3)gedit 编辑器。(4)emacs 编辑器。十三、编辑文件相关命令。(1)nano 编辑器。(2)vim 编辑器。

2024-11-05 17:29:56 334

原创 DBeaver 数据库安装及破解个人使用 不同版本不同jdk

不要使用 DBeaver 自带的 jre ,它被人为阉割了。使用本激活包需要删除 DBeaver 目录下自带的 jre,DBeaver 23开始运行需要JDK 17或更高的JDK版本,本教程使用的是JDK 17,自行安装JDK 17,JDK 17 需要的评论关注私聊,获取资源。替换 dbeaver.ini 内由 -vm 指定的 jdk 17 的 bin 路径,把地址换成自己安装的!如果你配置了 JDK 17或者大于 JDK 17 的环境变量,该参数可以不用配置。DBeaver 全系列激活工具,

2024-11-04 16:31:14 6916 26

原创 Redis端口开启防火墙报错

错误信息 “FirewallD is not running” 表示 FirewallD 服务当前没有运行。通过以上步骤,您应该能够解决 “FirewallD is not running” 的问题,并成功管理防火墙规则。如果您没有足够的权限执行命令,可能会遇到问题。如果您的系统使用了其他防火墙管理工具(如 iptables),可能需要检查这些工具的配置。确保您使用正确的命令格式,并在命令之间有空格。根据您系统的防火墙管理工具选择合适的命令。确保执行命令的用户具有管理防火墙的权限。原因2:命令格式错误。

2024-07-17 01:38:17 588

原创 Spring Boot集成RabbitMQ-之6大模式总结

(Exchange):用于接收生产者发送的消息,并根据路由规则将消息路由到一个或多个队列中。AMQP定义了不同类型的交换机,如直连交换机(Direct Exchange)、主题交换机(Topic Exchange)、扇出交换机(Fanout Exchange)等。消息通常包括消息体和消息头,消息体是实际要传递的数据,而消息头包含元数据信息,如消息的路由键、优先级等。生产者将消息发布到交换机(Exchange),交换机根据路由规则将消息路由到一个或多个队列中。连接是长期的、持久的,用于传输消息和管理通信。

2024-05-07 19:58:04 1350 3

原创 springboot集成-Redis

Spring Boot项目中集成Redis,可以使用Spring Data Redis来简化操作。写Controller编译测试。

2024-05-07 09:36:45 417

原创 CentOS 系统上安装RabbitMQ笔记

在 CentOS 系统上安装最新版本的 RabbitMQ 涉及几个步骤,包括安装 Erlang 环境、添加 RabbitMQ 仓库、安装 RabbitMQ 以及启动服务。RabbitMQ 需要 Erlang 环境,因此首先需要安装 Erlang。访问 Erlang RPM 包 GitHub 仓库 或 packagecloud.io 下载与你的系统相匹配的 Erlang RPM 包。1.确保你下载的 Erlang 和 RabbitMQ 版本相互兼容,可以参考 RabbitMQ 官方文档。

2024-04-30 19:39:45 454

原创 linux安装MySQL 8.0笔记

默认情况下,数据目录位于/var/lib/mysql,但可能根据您的安装和配置有所不同。MySQL的主配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf。/.bash_profile或/etc/profile中设置了MySQL的环境变量,如PATH或MANPATH,请将它们从文件中移除。删除MySQL的主配置文件,通常位于/etc/my.cnf或/etc/mysql/my.cnf。删除MySQL的日志文件,这些文件可能位于/var/log/mysql。

2024-04-30 17:42:42 2589 2

原创 linux安装Redis 7.2.4笔记

Redis的配置文件通常名为redis.conf,在Windows系统中可能名为redis.windows.conf,位于Redis的安装目录下。或者,如果Redis是从源代码编译安装的,您可能需要手动删除Redis的可执行文件。Redis的数据和配置文件通常位于/var/lib/redis和/etc/redis。首先,您需要停止正在运行的Redis服务。如果Redis的安装过程添加了环境变量(如PATH),则需要从用户的配置文件(如。1.在执行卸载操作之前,请确保你不再需要Redis,并备份重要的数据。

2024-04-30 17:29:15 1871

原创 Linux上安装及卸载Oracle JDK 8

访问Oracle官网的JDK下载页面:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html。1.在执行卸载操作之前,请确保你不再需要Oracle JDK,并备份重要的Java应用程序和数据。请将jdk-8uXXX-linux-x64.tar.gz替换为你的JDK安装包的实际文件名。请将jdk-8uXXX-linux-x64替换为你系统中Oracle JDK的实际包名。为了让更改生效,你需要重新加载配置文件。

2024-04-29 16:20:58 1083

原创 Linux上安装及卸载OpenJDK

首先,你需要添加Java JDK 8的Yum源到你的系统。这可以通过下载并安装Oracle JDK的方式完成,但由于Oracle JDK在某些情况下可能需要遵守特定的许可协议,我们这里使用OpenJDK作为替代。2.如果你打算使用Oracle JDK而不是OpenJDK,需要遵循Oracle的许可协议,并从Oracle官方网站下载相应的.rpm包进行安装。虽然不是必需的,但设置JAVA_HOME环境变量可以方便地在系统的不同位置引用Java的安装路径。接下来,使用Yum包管理器安装Java JDK 8。

2024-04-29 15:49:42 692 1

原创 Spring Boot项目中集成Logback作为日志框架-笔记

如果需要使用Log4j2,可以从spring-boot-starter中排除spring-boot-starter-logging依赖,并添加spring-boot-starter-log4j2。Spring Boot会自动配置Logback,所以通常情况下,你不需要添加任何额外的依赖或配置。确保不要同时使用logback.xml和logback-spring.xml,因为Spring Boot提供了对logback-spring.xml的特定支持。

2024-04-29 09:10:09 889

原创 springboot集成-mybatis-puls

Spring Boot中集成MyBatis Plus是一个相对简单的过程,MyBatis Plus是一个MyBatis的增强工具,它简化了CRUD操作,并且提供了一些额外的功能,比如性能优化、自动填充等。3.配置MyBatis Plus:通常,MyBatis Plus的配置与MyBatis类似,不需要额外的配置,因为它会自动配置。6.使用Mapper:在你的Service中注入Mapper,并使用它。7.配置扫描:确保Spring Boot扫描到你的Mapper接口。

2024-04-29 08:46:14 397 1

原创 IDEA安装插件Apipost方便调试

进入IDEA的File->sttings->plugins 进入搜索Apipost即可安装插件。使用小箭头即可得到URL,点击进入操作即可。

2024-04-28 13:37:59 453

原创 Spring打印Logo

自定义设置(可选):你还可以在banner.txt文件中添加其他设置,比如设置字体大小、颜色以及显示Spring Boot的版本号等。重启Spring Boot项目:保存banner.txt文件后,重启你的Spring Boot项目,你就能看到新的启动Logo了。生成或设计Logo:你可以使用在线的ASCII艺术生成器来生成你想要的Logo,或者自己手动编写ASCII艺术。将Logo粘贴到banner.txt文件中:将生成的ASCII艺术复制并粘贴到banner.txt文件中。文件来设置启动时打印的。

2024-04-28 09:45:50 677 1

原创 springboot笔记一:idea社区版本创建springboot项目的方式

版本号可以修改,刷新之后创建启动类:SpringBootApplicationMevan。社区idea 手动maven 创建springboot项目。创建之后修改pom.xml。

2024-04-28 09:17:53 903

原创 Java23种设计模式-行为型模式之访问者模式

(ObjectStructure):一个包含元素集合的类,它可以是集合对象,也可以是图中的节点集合,它提供了一个方法用来遍历元素集合,并且允许访问者访问它的元素。(Visitor):定义了一个访问元素的接口,为每个需要被访问的元素类都提供一个访问方法,即在Visitor中定义了一组方法,每个方法对应一个具体元素类。(Element):定义了一个接受访问者的接口,即一个accept方法,它接受一个访问者对象作为参数。1.使得元素类与访问者类耦合在一起,因为元素类需要知道访问者类的存在。

2024-04-27 16:22:50 764

原创 Java23种设计模式-行为型模式之责任链模式

定义了一个请求类(Request),然后定义了一个处理者接口(Handler),接着实现了具体的处理者类(ConcreteHandler),最后创建了一个客户端(Client)来测试责任链模式。(Handler):定义一个接口,其中包含一个方法用于处理请求(如 handleRequest()),并一个方法用于设置下一个处理者(如 setNext())。2.可以动态地添加或删除责任链中的处理者,或者改变处理者的顺序,而不影响其他处理者。1.当一个请求存在多个可能的处理者,且每个处理者都有可能处理该请求时。

2024-04-27 14:05:56 466 1

原创 Java23种设计模式-行为型模式之状态模式

(ConcreteState):实现State接口,并且它包含了与Context的当前状态相关的行为。(State):定义一个接口以封装与Context的一个特定状态相关的行为。1.随着状态的增多,系统中类的数量可能会增加,这可能会增加系统的复杂性。2.使得状态转换逻辑与状态对象相分离,这可以使得状态转换逻辑更加清晰。1.将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。2.使用的时候需要考虑到状态的转移,可能会引起状态转移的复杂性。,并且它的状态是可变的时候。

2024-04-27 13:44:39 1134

原创 Java23种设计模式-行为型模式之解释器模式

定义了抽象表达式Expression、终结符表达式NumberExpression、非终结符表达式AddExpression以及上下文Context。(Non-terminal Expression):实现抽象表达式中的interpret()方法,表示语言中的非终结符。(Terminal Expression):实现抽象表达式中的interpret()方法,表示语言中的终结符。可以将复杂的问题分解成一系列简单的表达式,然后使用解释器来解释这些表达式。(Context):包含解释器解释的信息的类。

2024-04-26 17:58:55 468

原创 Java23种设计模式-行为型模式之备忘录模式

通过这些类的协作,我们可以保存和恢复对象的状态。在测试类中,我们创建了一个发起人对象和一个管理者对象,并对其进行状态的保存和恢复操作,最终输出了保存和恢复后的状态。:在游戏开发中,可以使用备忘录模式来保存游戏的进度,允许玩家在特定检查点保存游戏状态,并在需要时加载之前保存的状态。(Originator):负责创建一个备忘录对象,用于记录当前的内部状态,并可以使用备忘录对象来恢复内部状态。:在需要保存系统或应用程序的当前状态,以便在发生故障时可以恢复到该状态的场景中,可以使用备忘录模式。

2024-04-26 17:19:07 712 1

原创 Java23种设计模式-行为型模式之中介者模式

(ConcreteColleague):每一个具体同事类都实现了在同事类中定义的接口,并且它们都持有一个中介者对象的引用。(Colleague):定义了中介者模式中各个对象的接口,这些对象不直接交互,而是通过中介者对象来进行。(ConcreteMediator):实现了中介者接口,通过具体同事类的对象来改进各同事之间的交互。当对象之间的交互变得非常复杂时,使用中介者模式可以简化对象之间的交互。减少了对象之间的依赖,每个对象不需要知道其他对象的实现细节。当系统中对象很多时,中介者对象可能会变得非常复杂。

2024-04-26 09:59:13 501 1

原创 Java23种设计模式-行为型模式之观察者模式

(Subject):也称为被观察者或可观察者,它是具有状态的对象,并维护着一个观察者列表。如果一个被观察者对象知道所有的观察者对象,可能会导致循环依赖,这样会增加系统的复杂性。当一个对象的改变需要同时改变其他对象时,而其他的这些对象不依赖于主题对象的具体类型时。(Concrete Observer):具体观察者是观察者的具体实现类。,例如当一个对象更改状态时,所有依赖于它的对象都会收到通知并自动更新。观察者需要实现一个更新方法,当收到主题的通知时,当观察者对象很多时,通知的分发可能会造成性能瓶颈。

2024-04-26 09:39:53 337

原创 Java23种设计模式-行为型模式之迭代器模式

然后在主程序中,我们通过调用createIterator()方法获取迭代器,并通过迭代器的hasNext()和next()方法遍历集合中的元素。(Iterator):定义了迭代器对象需要实现的方法,如next()(移动到下一个元素)、hasNext()(检查是否有下一个元素)、remove()(删除当前元素)等。(Aggregate):定义了创建迭代器对象的方法,通常是一个名为createIterator()的方法。不暴露聚合对象的内部结构,提供了一个安全的方式来访问聚合对象。迭代器模式定义了一种顺序。

2024-04-26 09:13:17 475 2

原创 Java23种设计模式-行为型模式之命令模式

简单的遥控器程序,用户可以通过遥控器来控制电视的开关:Command 是命令接口,ConcreteCommand 是具体命令类,它持有一个 Receiver 对象,负责将调用者请求的操作委托给 Receiver。ConcreteCommand(具体命令类):实现了Command接口,它对应于具体的行为和接收者的绑定。命令模式也支持可撤销的操作。当需要将操作请求与操作实现分离,从而使得可以在不同的时间或不同的环境中执行请求时。Client(客户端):创建具体的命令对象,并指定相应的接收者。

2024-04-25 10:37:44 449

原创 Java23种设计模式-行为型模式之模板方法模式

Beverage 是抽象类,定义了制作饮料的模板方法和一些基本方法。):定义了模板方法和一些基本的方法。模板方法是一个定义算法骨架的方法,它调用基本方法来完成算法的各个步骤。):在抽象类中定义,可以被子类重写。钩子方法允许子类在模板方法的执行过程中进行干预。当需要在一个算法中定义一系列步骤,但某些步骤可以延迟到子类中实现时。):继承自抽象类,实现模板方法中尚未实现的基本方法。当需要复用代码,但不希望子类依赖于特定的实现时。,将一些步骤延迟到子类中实现。每一个不同的实现都需要一个子类,这可能会导致。

2024-04-25 09:37:44 425

原创 Java23种设计模式-行为型模式之策略模式

FlyStrategy 是策略接口,FlyWithWings 和 FlyNoWay 是具体策略类,Duck 是上下文类,客户端通过创建不同策略的 Duck 对象来模拟不同鸭子的飞行行为。(Concrete Strategy):实现则实现了这些协议,并为特定的算法提供具体的实现。(Context):持有策略接口的引用,并在运行时根据需要更换具体的策略实现。当算法可能发生变化,且变化不应影响到使用算法的客户端时。1.客户端必须知道所有的策略类,至少是它们的接口。当这些算法相互之间是等价的,且可以互换时。

2024-04-25 09:16:05 639

原创 Java23种设计模式-结构型模式之享元模式

(Flyweight Factory):管理享元对象池,确保合理地共享享元对象。(Client):客户端使用享元工厂来获取享元对象,并与外部状态一起使用。1.节省内存:通过共享已存在的对象,减少对象的创建数量,节省内存资源。8.性能权衡:在某些情况下,可能会因为享元的共享而导致一定的性能损失。1.复杂性增加:需要额外的代码来管理享元对象,增加了系统的复杂性。4.代码可读性降低:复杂的享元模式实现可能会降低代码的可读性。2.状态管理复杂:对象的状态可能会变得复杂,需要仔细处理。

2024-04-24 17:54:55 423

原创 Java23种设计模式-结构型模式之外观模式

ComputerFacade类作为外观类,它封装了对CPU、Memory和HardDrive类的操作,客户端只需要与ComputerFacade类交互,从而简化了客户端Demo的代码。(Facade Pattern):为复杂的系统提供了一个简单的统一接口,使得系统更易于使用和理解((Facade):外观类提供了一个简化的接口,封装了系统的复杂性。:隐藏了系统的复杂细节,提供了一个简单的、高层的接口。:过于复杂的外观类可能会降低代码的可读性。:外观类的设计可能会限制系统的灵活性。:便于系统的维护和扩展。

2024-04-24 17:26:18 781

原创 Java23种设计模式-结构型模式之组合模式

Composite 是组合对象,它也实现了 Component 接口,并管理一组子组件。”层次结构,同时保持对单个对象和组合对象的一致性操作,主要目的是简化客户端代码,因为它可以统一处理单个对象和组合对象。:组合模式的设计相对复杂,需要考虑对象的层次结构和组合关系。:由于组合模式的实现方式较为固定,可能会限制一些特殊的需求。(Client):通过抽象组件接口来操作叶子对象和组合对象。,并将叶子对象添加到组合对象中。:封装了组件的内部结构,提高了安全性。:可以一致地处理单个对象和组合对象。

2024-04-24 16:31:04 407

原创 Java23种设计模式-结构型模式之桥接模式

ImplementationA 和 ImplementationB 是实现部分,它们分别实现了 Abstraction 的 performOperation 方法。Demo可以通过 Abstraction 接口来调用不同的实现对象,从而实现了抽象与实现的解耦。通过使用桥接模式,可以提高系统的灵活性、可扩展性和可维护性,使系统更易于扩展和修改。:可以将图形的表现形式和绘制方式分离,以便更灵活地扩展和组合。:例如,将游戏角色的行为和具体的动画效果分离。:将设备的通用功能和特定硬件的实现分开。

2024-04-24 15:21:50 648

原创 Java23种设计模式-结构型模式之装饰器模式

接着,我们定义了一个Decorator抽象类,它同样实现了Component接口,并持有一个Component类型的成员变量。之后,我们创建了两个具体的装饰器ConcreteDecoratorA和ConcreteDecoratorB,它们都继承自Decorator类,并且各自添加了不同的行为。:当需要在不修改现有代码的基础上,为对象添加新的功能或行为时。:可以将多个装饰器组合在一起,以构建复杂的功能。:不同的装饰器可以独立进行扩展和修改,互不影响。:通过添加装饰器来优化对象的性能。,更易于测试和维护。

2024-04-24 14:59:39 553

原创 Java23种设计模式-结构型模式之适配器模式

创建一个MediaPlayer接口和一个实现了这个接口的AudioPlayer类,以及一个适配器类MediaAdapter,它将用于将不同格式的音频文件转换为MediaPlayer接口所需的格式。:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。了现存的类,程序员不需要修改原有代码而重用现有的适配者类。:当前系统业务所期待的接口,可以是抽象类或接口。:它是被访问和适配的现存组件库中的组件接口。,解决了目标类和适配者类接口不一致的问题。

2024-04-24 11:02:52 1051

原创 Java23种设计模式-结构型模式之代理模式

在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。(2)代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和。是由程序员创建或工具生成代理类的源码,再编译代理类。就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。:真实的角色就是实现实际的业务逻辑,真实角色实现的业务方法。

2024-04-24 09:42:49 220

空空如也

空空如也

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

TA关注的人

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