- 博客(55)
- 资源 (1)
- 收藏
- 关注
原创 java 校验排序是否有交叉
System.out.println("是否有时间交叉:" + hasOverlap);// 3. 遍历时间段列表,判断相邻时间段是否有交叉。// 2. 对时间段列表按照开始时间进行排序。// 1. 获取待判断的时间段列表。// 4. 返回判断结果。// 添加时间段到列表。
2024-04-23 22:56:59
369
2
原创 Mysql性能优化
1、为什么要优化说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。2、MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了M..
2024-04-23 22:55:18
936
原创 工厂方法模式
目录1、什么是工厂方法模式2、说明3、实例 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其
2022-07-03 23:05:47
236
1
原创 poi根据模板导出word
客户提供一个word模板,根据模板加载数据生成word附件,很正常的一个需求,但就是有个难点,需要换行,详情往下看。 1、模板示例 2、难点 这个需求的难点是议题。议题分为首席和列席还有请假。具体多少个议题也是不确定的,动态加载,每一个议题,议题下面的首席列席都得换行。如下: 首先,不能使用表格来做,其次如果使用一个标识符号进行替换填充,需要判断在每一个议题,首席,列席完毕都得需要换行。查了很多资料都是根据表格进行换行的,都不能解决这个问题,
2022-07-03 18:28:00
2847
原创 职场沟通原则
沟通是人与人之间、人与群体之间思想与感情的传递和反馈的过程,以求思想达成一致和感情的通畅。 “尊人者,人尊之”,如果在沟通的过程当中,你总是自以为是,用以自我为中心的方式和对方交流,那么沟通必然很难进行。因为对方会觉得,你并没有把他放在和你同一水平的位置上,这很容易让人产生不平衡感。所以,沟通的本质和前提是尊重和合作,而不是让谁听谁的话。换句话说,职场上沟通的目的是更好的协作并达成目标,而不是谁领导谁。 每个人每天都会产生各种各样的情绪,在这些情绪里,有些是积极的,有些则是消极的
2022-06-29 21:27:49
622
原创 git教程
目录1、什么是git2、git安装3、git原理4、工作流程 5、配置说明6、Git项目搭建7、常用命令8、idea集成git9、总结 10、注意事项 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。git是目前世界上最先进的分布式版本控制系统。 没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软
2022-06-19 11:53:15
492
原创 mock详细教程入门这一篇就够了
目录编辑1、什么是mock测试2、为什么要进行Mock测试3、Mock适用场景4、代码实例 5、参数方法说明6、简单测试 7、测试方法说明8、Mock静态方法9、提升测试覆盖率 Mock 测试就是在测试活动中,对于某些不容易构造或者不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法。 Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。所以,Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。 Mo
2022-06-17 00:18:47
26770
3
原创 里氏替换原则
该原则的核心思想就是在程序当中,如果将一个父类对象替换成它的子类对象后,该程序不会发生异常。这也是该原则希望达到的一种理想状态。通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。里氏代换原则是开闭原则的重要方式之一,由于使用父类对象的地方都可以使用子类对象,因此在程序中尽量使用父类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。优点:1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原
2022-06-14 16:33:59
16965
2
原创 迪米特法则
迪米特法则(Law of Demeter)又叫作最少知道原则(The Least Knowledge Principle),通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。想从那里知道现有课程的总数。它们之间的调用关系应该为—>—>。与并无直接联系,所以在类的方法中不应该出现类。一下给出合理的设计方案。...
2022-06-13 22:02:56
319
原创 接口隔离原则
目录1、什么是接口隔离原则2、接口隔离原则规约3、使用说明 接口隔离原则:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。也就是说,接口尽量细化,同时接口中的方法尽量少。看到这,大家可能会不由自主的想到前面讲的 单一职责原则,“咔”。这里大家一定要注意,单一职责原则,强调的是职责,站在业务逻辑的角度;而接口隔离原则,强调接口的方法尽量少。优势:符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。 在设计接口的时候
2022-06-13 16:50:14
394
原创 依赖倒置原则
目录1、什么是依赖倒置原则2、使用说明 依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 1、高层模块不应该依赖低层模块,二者都应该依赖其抽象 2、抽象不应该依赖细节,细节应该依赖抽象 3、依赖倒置的中心思想是面向接口编程 4、依赖倒置原则是基于这样的设计理念:相对于细节的
2022-06-12 23:20:56
711
原创 开闭原则
目录1、什么是开闭原则2、使用说明 软件实体应当对扩展开放,对修改关闭。这里的软件实体包括以下几个部分:开闭原则的含义 当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。开闭原则的作用 开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下:1. 对软件测试的影响。2. 可以提高代码的可复用性。3. 可以提高软件的可维护性。遵守开闭原则的软件,其
2022-06-12 22:13:23
195
原创 单一职责原则
单一职责原则是最简单的面向设计原则,它用于控制类的粒度大小。单一职责定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其
2022-06-07 19:37:22
222
原创 面向对象设计原则
对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一。......
2022-06-06 19:18:33
88
原创 JAVA 泛型接口设计
什么是泛型泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。定义和目的 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。 在程序编码中一些包含参数的类。其参数可以代表类或对象等等。 不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。一些强类型程序语言支持泛型,其主要目的是...
2022-05-29 10:48:57
1868
原创 Restful API接口设计
API是什么API简称接口,就是预先定义的函数,目的是让应用程序或者开发人员具有访问指定网络资源的能力,而又无需关心关心访问的源码,或理解内部工作机制的细节。Restful是什么不同的开发者对获取资源的接口设计,呈现出多战多样的接口,为了是接口具有规范性,能够要很好的可读性以及移植性,Restful风格就此产生。REST 是一种架构风格,表示的是Representational State Transfer 表现状态转移,客户端通过访问url来...
2022-05-28 22:49:28
363
原创 Ajax 不起作用 $不识别
问题如上:$. 就是不识别 原因如下:1、jquery 引入的路径不对。2、引用的在线文件,由于网络问题导致引入未成功。3、最坑的一种,如果是应用的压缩版的,就会出现不识别的问题。所以一定要用未压缩的版的就可以解决问题。如图所示,由于引用的是压缩版的导致一致报错。排错花了不少时间。...
2022-05-28 21:38:51
1602
原创 MySql索引原理
什么是索引索引的本质是一种排好序的数据结构。索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到...
2022-05-26 21:31:00
165
原创 java面试自我介绍
履历背景说明:面试官,你好!我叫xxx,今天来公司面试JAVA开发工程师,之(目)前在(反正钱没你这里多公司)任职,从事这一行已经有(几)个年头了(可说可不说)。这几年开发,主要涉及的行业项目包括(你干过的项目!)等。技术栈说明:在开发过程中,用过的框架有:dubbo+zookeeper、springboot、springmvc、spring、Mybatis等框架,并熟练掌握框架之间的整合技术。吹牛开始,有时候因为项目需求或是为了开发的高效...
2022-05-26 10:09:37
380
原创 JAVA-API设计
1、API是什么API(应用程序编程接口)是一些预先定义的接口,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组程序的能力,而又无需访问源码,或理解内部工作机制的细节。通俗的讲,就是把具体的实现细节给封装起来,对外只提供一个规范的接口调用,用户只需要传入对应的入参,程序执行完,返回预期的结果。2、设计规范设计一个接口,主要就是从以下三个方面考虑。安全性 安全性是一个接口必须要保证的规范。如果接口保证不了安全性,那么你的...
2022-05-24 20:07:53
588
原创 英语语法之简单句型(一)
学习英语,语法就像是房子的结构一样,如果不知道语法,那么口语就全靠积累,在英语环境中,学习英语很简单,就跟我们学习母语一样,但是身在zg,脱离了英语环境,若是不知道怎么造句,那么学口语也是非常费劲的,所以在此记录学习语法的知识,加深理解,早日练成口语大法。1、简单句陈述句:陈述句的两种形式肯定式I have money肯定变否定的方式,助动词(do) 后面加否定词(not)否定式I don't (do not) have money陈述句的五种句型1、主+谓2、主+
2022-05-24 18:56:24
1240
原创 Zookper原理详解
1、zookper是什么?ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。 使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够通用解决这些问题的中间件就应运而生了。...
2022-05-22 20:23:39
1224
原创 dubbo原理详解
1、Dubbo是什么Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。2、使用场景随着服务化的进一步发展,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的框架体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通性协
2022-05-21 22:53:14
119
原创 Kafka原理详解(入门)
目录1、kafka是什么2、使用场景总结一下3、架构原理Consumer与Partition的关系Kafka 生产者-消费者4、工作原理生产者发布/订阅模式:生产者文件存储kafka四大API1、kafka是什么Kafka 是个分布式的、持分区的(partition)、多副本的 (replica),基于 zookeeper 协调的分布式消息系统,它最大的特性就是可以实时处理大量数据以满足各类需求场景: 日志收集:使用 Kafk...
2022-05-19 19:32:34
944
原创 Redis原理详解
目录1、什么是redis2、为什么会出现redis3、应用场景4、架构原理5、IO多路复用机制6、redis为什么快7、redis 数据淘汰策略8、数据类型以及使用场景9、持久化流程1.RDB(默认开启()保存流程(BGSAVE)2.AOF重写流程10、常见问题解决方案雪崩穿透击穿(热点Key)如何解决redis的并发竞争key问题数据不一致原因1、什么是redisRedis是一个开源的key-value存...
2022-05-15 22:55:23
6632
原创 Elstaticsearch原理详解这一篇就够了
1、Es是什么官网地址:Elasticsearch:官方分布式搜索和分析引擎 | ElasticES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。...
2022-05-15 15:03:55
1853
原创 RabbitMQ原理详解入门级
1、什么是RabbitMQRabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。Rabbit科技有限公司开发了RabbitMQ,并提供对其的支持。主要特点: 可伸缩性:集群服务。 消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存。 2、什么是消息队列“消息队列”是在消息的传输过程中保存消息的容器。消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间
2022-05-14 21:25:13
244
原创 SpringClould之Hystrix原理
1、Hystrix是什么Hystrix是由Netflix开源的一个服务隔离组件,通过服务隔离来避免由于依赖延迟、异常,引起资源耗尽导致系统不可用的解决方案。这说的有点儿太官方了,它的功能主要有以下三个。服务降级 服务熔断 服务限流Hystrix中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力,老外起名字脑回路不得不服。2、应用场景在复杂的分布式应用中有着许多的依赖,各个依赖都有难免在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易拖垮整个应用。举个电商场景..
2022-05-14 10:19:32
505
原创 SpringzCloud之Feign原理
Feign是什么Feign 是一种声明式服务调用组件,它在 RestTemplate 的基础上做了进一步的封装。通过 Feign,我们只需要声明一个接口并通过注解进行简单的配置(类似于 Dao 接口上面的 Mapper 注解一样)即可实现对 HTTP 接口的绑定。通过 Feign,我们可以像调用本地方法一样来调用远程服务,而完全感觉不到这是在进行远程调用。Feign 对Ribbon进行了集成,利用 Ribbon 维护了一份可用服务清单,并通过 Ribbon 实现了客户端的负载均衡。...
2022-05-14 09:36:57
250
原创 SpringClould之Zuul原理详解
目录网关是什么API 网关zuul是什么zuul原理架构图及流程网关是什么在微服务架构中,一个系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户端直接请求服务的方式存在以下问题:1、当服务数量众多时,客户端需要维护大量的服务地址,这对于客户端来说,是非常繁琐复杂的。2、在某些场景下可能会存在跨域..
2022-05-13 23:42:57
478
原创 SpringClould之Eureka原理详解
简介Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2022-05-13 22:01:33
288
原创 docker 容器数据卷
1、什么是容器数据卷docker的理念是将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了,为了能够保存数据,在docker容器中使用卷。通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删
2022-05-08 22:59:09
539
原创 docker容器vim bash: vim: command not found 问题
在使用docker容器时,有时候里边没有安装vim,使用vim命令时提示说:vim: command not found,这个时候就需要安装vim。1、安装命令:apt-get install vim2、如果报错:Reading package lists... DoneBuilding dependency tree Reading state information... DoneE: Unable to locate package vim这个时候需要跟.
2022-05-06 12:22:56
1003
原创 docker安装nginx
目录1、官网搜索镜像2、拉取镜像并查看3、启动4、测试1、官网搜索镜像官网地址:Docker Hub搜索nginx,会出来很多版本的镜像,一般拉取官方的或者star数多的,详细信息可以参考官网2、拉取镜像并查看[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxa2abf6c4d29d...
2022-04-28 12:25:31
2304
原创 Docker基础快速入门
第一章 什么是dockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或者windows操作系统的机器上,也可以实现虚化。容器是完全使用啥沙箱机制,相互之间不会有任何接口。 一个完整的docker有以下几个部分组成: 1、客户端。 2、守护进程。 3、镜像。 4、容器。 docker 应用场景 1、web应用自动化打包发布。 2、自动化测试和持续集成、发布。 3、在服务型环境中部署和调整数据库或...
2022-04-26 21:06:52
1444
原创 oracle sql语句 不等于‘‘ 或者<>‘‘ 查询不到数据
有时候我们在写sql的时候,没办法像在mybaties文件中那样用if进行判断。想如下这种: <if test='savePoint != null and savePoint != ""'> and smtrls.save_point = #{savePoint,jdbcType= VARCHAR} </if> <if test='currentHandler != null and cu
2022-04-22 12:04:22
1785
原创 linux 入门基本操作
linux 基本操作主要目录说明bin:存放最常使用的命令。 boot:系统启动时的核心文件。 dev:类似于win的设备管理器,所有的硬件用文件的形式存储。 usr:非常重要的目录,用户的很多程序和文件都放在这里,类似于win系统下的program files目录。 VI/VIM 编辑器是什么VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。 VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜 色辨别语法的正确...
2022-04-21 17:49:54
709
原创 springBoot 微服务启动不了注册不上假死
遇到一个很坑的问题,在启动微服务的时候,服务看着起来了,但是在eureka中注册不了。最后排查,发现还是dao层,mybatiesMapper.xml文件中的错误。 <select id="getUserVendor" parameterType="long" resultType="map"> SELECT '1' USERTYPE, ACU.ALLOW_UNIT_ID, ACU.VENDOR_ID, ACU.VENDOR_NAME FROM ALLOW_
2022-04-02 12:21:19
836
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人