- 博客(101)
- 资源 (5)
- 收藏
- 关注
原创 高效的、有趣的、不为人常知的排序算法
这些高效的、有趣的、不为人常知的排序算法在特定场景下表现优异,具有独特的特性。选择合适的排序算法可以显著提高程序的性能和效率。Timsort:适用于部分有序的数据,高效且稳定。Block Sort:适用于内存有限的环境,原地排序且高效。:适用于内存受限的环境,高效且原地排序。Cycle Sort:适用于内存有限的环境,一次遍历即可完成排序。Intro Sort:自适应的混合排序算法,适用于各种场景。:适用于部分有序的数据,高效且原地排序。Flashsort。
2024-11-27 17:28:12
637
原创 【排序算法】排序算法概览
在一个学生成绩管理系统中,需要对学生的成绩进行排序,成绩范围在0到100之间。:在一个在线购物网站中,需要对用户的购买记录进行排序,数据部分有序。:这些算法的时间复杂度较低,适用于大规模数据,且有较好的平均性能。:在一个小型应用程序中,需要对用户输入的10个数字进行排序。:这些算法虽然时间复杂度较高,但实现简单,适用于小规模数据。:插入排序在部分有序的数据上表现良好,时间复杂度接近线性。:计数排序适用于数据范围较小的整数排序,时间复杂度低。:在大数据处理平台中,需要对数百万条记录进行排序。
2024-11-27 09:19:28
386
原创 【设计模式】【行为型模式(Behavioral Patterns)】之迭代器模式(Iterator Pattern)
迭代器模式是一种行为设计模式,它提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。通过将数据的遍历逻辑与数据结构分离,迭代器模式使得同一个遍历逻辑可以应用于不同的数据结构,同时隐藏了数据结构的内部细节。
2024-11-27 09:18:53
344
原创 【设计模式】【行为型模式(Behavioral Patterns)】之中介者模式(Mediator Pattern)
中介者模式是一种行为设计模式,它使用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2024-11-27 09:18:33
386
原创 【设计模式】【行为型模式(Behavioral Patterns)】之访问者模式(Visitor Pattern)
访问者模式是一种行为设计模式,它允许您在不修改现有元素类层次结构的情况下向其添加新的操作。这种模式通过将算法从对象结构中分离出来,使得添加新的操作变得容易,同时保持了原有的对象结构不变。
2024-11-27 09:18:08
938
原创 【设计模式】【行为型模式(Behavioral Patterns)】之状态模式(State Pattern)
状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。这个模式的核心思想是使用不同的类来表示不同的状态,每个状态类都封装了与该状态相关的特定行为。当对象的状态发生改变时,对象会切换到另一个状态对象,从而改变了它的行为。
2024-11-26 15:59:11
704
原创 【设计模式】【行为型模式(Behavioral Patterns)】之责任链模式(Chain of Responsibility Pattern)
责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行发送。每个处理者都可以处理请求,或者将其传递给链上的下一个处理者。这种模式使得多个对象都有机会处理请求,而无需提前指定具体的处理者。通过这种方式,可以减少请求发送者和接收者之间的耦合。
2024-11-26 15:57:05
762
原创 【设计模式】【行为型模式(Behavioral Patterns)】之命令模式(Command Pattern)
命令模式是一种行为设计模式,它将请求封装成对象,从而使你可以用不同的请求对客户进行参数化、队列请求或将请求日志化,同时支持可撤销的操作。通过这种方式,可以将请求发送者与接收者解耦,使得两者之间不再直接联系,而是通过命令对象进行交互。
2024-11-26 15:53:57
651
原创 【设计模式】【行为型模式(Behavioral Patterns)】之观察者模式(Observer Pattern)
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式特别适用于事件驱动系统,其中对象之间需要保持同步但又不想紧密耦合。
2024-11-26 15:49:05
738
原创 【设计模式】【行为型模式(Behavioral Patterns)】之策略模式(Strategy Pattern)
策略模式是一种行为设计模式,它允许你定义一系列算法,并将每个算法封装起来,使它们可以互换。这种模式的主要目的是在不改变客户端代码的情况下,通过不同的策略来实现不同的行为。
2024-11-26 15:45:22
723
原创 【设计模式】【结构型模式(Structural Patterns)】之代理模式(Proxy Pattern)
代理模式是一种结构型设计模式,允许你提供一个替身或占位符对象来控制对另一个对象的访问。这种模式的主要目的是在不改变客户端代码的情况下,添加额外的功能,如延迟加载、权限检查、日志记录等。
2024-11-26 15:41:54
640
原创 【设计模式】【结构型模式(Structural Patterns)】之享元模式(Flyweight Pattern)
享元模式是一种用于性能优化的设计模式,通过共享尽可能多的对象来有效支持大量细粒度的对象。这种模式特别适用于那些对象数量巨大且大部分状态可以外部化的情况。
2024-11-26 15:38:48
817
原创 【设计模式】【结构型模式(Structural Patterns)】之外观模式(Facade Pattern)
外观模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。通过隐藏子系统的复杂性,外观模式简化了客户端对子系统的使用,提高了系统的易用性和降低了系统的耦合度。
2024-11-26 15:35:18
805
原创 【设计模式】【结构型模式(Structural Patterns)】之装饰模式(Decorator Pattern)
装饰模式是一种结构型设计模式,它允许在不改变对象接口的前提下,动态地给对象增加额外的责任或功能。这种模式通过创建装饰类来包装原有类,并在保持类方法签名完整性的前提下,提供了额外的功能。
2024-11-26 15:33:01
629
原创 【设计模式】【结构型模式(Structural Patterns)】之组合模式(Composite Pattern)
组合模式是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性,从而提高了系统的灵活性和可扩展性。
2024-11-26 15:27:28
730
原创 【设计模式】【结构型模式(Structural Patterns)】之桥接模式(Bridge Pattern
桥接模式是一种结构型设计模式,用于将抽象部分与实现部分分离,使它们可以独立变化。这种模式通过组合而不是继承来达到解耦的目的,从而提高系统的灵活性和可扩展性。
2024-11-26 15:23:34
661
原创 【设计模式】【结构型模式(Structural Patterns)】之适配器模式(Adapter Pattern)
适配器模式是一种结构型设计模式,它允许不兼容的接口协同工作。适配器模式通过创建一个适配器类来实现目标接口,并持有对适配者类的引用,从而将适配者的方法转换为目标接口的方法。
2024-11-26 15:17:30
609
原创 【设计模式】【创建型模式(Creational Patterns)】之原型模式(Prototype Pattern)
原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过构造函数。这种方式可以提高性能,特别是在对象初始化需要消耗大量资源或耗时较长的情况下。性能提升:通过复制现有对象来创建新对象,可以避免复杂的初始化过程,提高性能。代码简洁:减少了重复的代码,特别是当对象的初始化过程非常复杂时。灵活度高:可以通过修改原型对象的属性来创建不同配置的对象实例。深拷贝和浅拷贝的问题:需要仔细处理对象的深拷贝和浅拷贝问题,否则可能会导致意外的行为。类必须实现克隆方法:每个需要被克隆的类都必须实现。
2024-11-26 15:13:56
740
原创 【设计模式】【创建型模式(Creational Patterns)】之建造者模式(Builder Pattern)
建造者模式是一种非常有用的创建型设计模式,尤其适用于构建复杂的对象。通过将对象的构建过程与其表示分离,建造者模式使得相同的构建过程可以创建不同的表示。封装性:将复杂的构建过程封装在建造者类中,客户端无需知道具体的构建细节。灵活性:可以通过不同的建造者类创建不同类型的产品对象,增加了系统的灵活性。可扩展性:增加新的建造者类时,无需修改现有代码,符合开闭原则。然而,建造者模式也有一些缺点,例如代码量会增加,且在简单对象的构建中可能显得过于复杂。因此,选择是否使用建造者模式应根据具体的需求和场景来决定。
2024-11-26 15:07:46
897
原创 oracle中的多选查询条件匹配
动态多选参数查询数据时,需要动态生成sql,通常面临两种情况(两种传参可以在服务代码层中进行转换):1、查询条件以列表collection的形式转入配置的xml中比如传入条件参数['02','04'],就需要下面方式实现2、查询条件以字符串string的形式转入配置的xml中若是通过逗号分隔的参数拼接而成的字符串参数,比如‘02,04’,可以使用匹配数据两种写法和都可以用来检查某个值是否存在于逗号分隔的字符串中,但它们各有优劣。
2024-11-26 11:26:37
1083
原创 【设计模式】【创建型模式(Creational Patterns)】之抽象工厂模式(Abstract Factory Pattern)
工厂方法模式通过定义一个创建对象的接口,但由子类决定实例化哪一个类,从而使得系统更加灵活和可扩展。这种方法不仅遵循了开闭原则(对扩展开放,对修改关闭),还降低了客户端与具体产品之间的耦合度。然而,随着具体产品数量的增加,也会带来更多的具体创造者类,增加了系统的复杂度。因此,在实际应用中需要根据具体情况进行权衡。
2024-11-20 14:55:14
1455
原创 【设计模式】【创建型模式(Creational Patterns)】之工厂方法模式
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但允许子类决定要实例化的类。这样,工厂方法模式可以让类的实例化推迟到子类。
2024-11-20 14:45:55
457
原创 【设计模式】【创建型模式(Creational Patterns)】之单例模式
这些实现都遵循了单例模式的基本原则:确保一个类只有一个实例,并提供一个全局访问点。每种语言的实现方式有所不同,但核心思想是一致的。
2024-11-20 14:40:27
764
原创 【设计模式】设计模式概览
设计模式是在软件设计过程中对常见问题提供通用解决方案的一种模板。这些模式并不是完成的算法或代码片段,而是一些描述如何解决特定类型问题的设计方案。设计模式可以帮助开发人员避免重复发明轮子,同时提高代码的可读性、可维护性和可扩展性。
2024-11-20 14:32:39
501
原创 一个spring boot项目的启动过程分析
ApplicationListener 的加载过程和上面的 ApplicationContextInitializer 类的加载过程是一样的.ApplicationListener 是spring的事件监听器,典型的观察者模式,通过 ApplicationEvent 类和 ApplicationListener 接口,可以实现对spring容器全生命周期的监听。环境,这个环境包含了应用的配置信息。接口的一个扩展,它提供了更多的配置和控制能力,是Spring应用程序上下文的高级接口。
2024-07-10 15:37:52
1137
1
原创 从唯一序列码、单例模式到集群的思考
实际项目里关于序列号生成、更多还需考虑效率、引入中间件、代码复杂度、唯一码的业务要求、进行综合考虑。若无特别需求,直接使用UUID肯定是方便而简单的。
2024-04-02 17:03:02
622
原创 基于公私密钥的单点登录
DSA算法是美国的国家标准数字签名算法,它只能用户数字签名,而不能用户数据加密和密钥交换。DSA与RSA的生成方式不同,RSA是使用openssl提供的指令一次性的生成密钥(包括公钥),而通常情况下,DSA是先生成DSA的密钥参数,然后根据密钥参数生成DSA密钥(包括公钥),密钥参数决定了DSA密钥的长度,而且一个密钥参数可以生成多对DSA密钥对。DSA生成的密钥参数是p、q和g,如果要使用一个DSA密钥,需要首先共享其密钥参数。关于DSA加密的原理,请自行查阅。生成加密密钥部分参考。
2023-04-04 10:22:30
836
原创 关于WIN11使用SecoClient接收返回码超时问题
百度网盘链接:https://pan.baidu.com/s/1FI5wNgJg0ZBWm0FikWTBfw。
2022-11-10 13:54:50
4413
11
原创 SQL优化分析
1、sql优化方法来自网上总结这个优化法则归纳为5个层次:1、减少数据访问(减少磁盘访问)2、返回更少数据(减少网络传输或磁盘访问)3、减少交互次数(减少网络传输)4、减少服务器CPU开销(减少CPU及内存开销)5、利用更多资源(增加资源)1、减少数据访问1.1、创建并使用正确的索引数据库索引的原理非常简单,但在复杂的表中真正能正确使用索引的人很少。索引会大大增加表记录的DML(INSERT,UPDATE,DELETE)开销,正确的索引可以让性...
2021-10-24 20:07:27
4063
2
原创 java-并发 线程机制学习
1、线程机制多个多线程机制,每个线程单独的控制子任务的执行,每个线程都好像有自己的CPU一样,可以方便的并发执行任务。线程机制简化了在单一程序中同时交织的多个操作处理,使用duo'xian'c...
2021-06-14 19:36:53
224
转载 oracle锁相关知识与锁表分析
文章转载:https://www.cnblogs.com/zhoading/p/8547320.htm《oracle-数据库的各种-锁-详解》1、oracle锁Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块首部。也就是说, 每个数据块本身就存储着自己数据块中数据的信息,这个地方叫 ITL( Interested Transaction List), 凡是在这个数据块上有活动的事务,它的信息就会记录在这里面供后续...
2021-05-13 13:38:32
652
原创 如何缩短定时任务(长连接)执行时间
日常开发中,尽可能的需要避免长连接的业务代码出现,但是通常定时任务常常会被用来解决长连接业务。大多数定时任务设定在夜晚执行,为了不影响白天的业务和人员操作。长连接的定时任务也面临一个问题,数据库的session失效时间以及随着业务长期维护,数据量增加的情况导致预定的定时任务无法完成执行的情况。比如预定凌晨4:00执行一个定时任务,预计1个小时处理完毕,正常执行的时候也的确是凌晨5:00左右完成,但随着数据量的翻倍,查询,计算,更新数据的时间延长,可能照成6:00该任务仍旧在执行。如果当前行数据,被用户同
2021-05-08 10:25:02
749
原创 从皇后问题思考【车辆检修计划算法】的排程问题解
八皇后问题-百度百科编辑讨论八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,..
2021-03-10 15:54:47
445
原创 简单的理解( 横表 竖表 转换)SQL操作(以oracle为例)
简单的行转列 :单个表头名称列,单个数据值列,单个聚合条件列某列属性聚合多个值,现在展开显示,与其对应的数据横向展示(这里至少涉及到 表头名称列,数据值列),另外多个数据还需要依据某个数据列作为聚合的条件,比如code,rec_id,name,time之类的。因此,简单的行转列仅仅涉及三个数据列。例如常见的例子,学生的学科成绩展示。name subject socre 小米 语文 90 小米 数学 100 需要转换成:name 语文...
2020-07-21 15:57:52
1418
原创 关于项目启动后,运行会自动进入class file editor并提示source not found
最近debug项目的时候,总是会莫名奇妙的进入class file editor并提示source not found,通常进入比较多的是JSONObject类里面,每次断点调试代码的时候都非常烦人,需要取消所有断点,直到代码进入方法前才能放开断点。一开始以为是项目运行时无法找到jar包里的资源,按照网上的教程,装了反编译的插件后,问题依然存在。后来又看到一篇文章说:https://blog.youkuaiyun.com/hengji666/article/details/76546474:解决Eclipse左键无
2020-06-16 17:46:07
773
原创 java中简单的判空校验,即null安全校验
1、StringUtils的null安全校验在java项目编程,经常调试出现的问题就是空指针错误。出现错误的原因,是在程序执行的过程中莫名的出现了各种参数为空的错误,基于大型项目,功能,方法的来源,以及数量,我们并不能很好的鉴定在程序执行的过程中,哪些参数是问题参数。因此,在除去必定不为空的参数(静态变量,人为初始化值的数据),一般得,我们会使用if(str!=null&&str!="")作为判空校验。这两种情况,java的jdk提供了一个对应的方法StringUtils.isEmp
2020-06-08 10:08:14
2631
1
C#与python实现UDP打洞
2018-06-25
C#获取感JY901M_485姿态传器的X Y Z角度
2018-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人