后端
未读
Java中使用ProtoBuf数据
本文介绍了在Java中使用ProtoBuf对数据进行操作的步骤。首先是安装Protobuf环境,然后编写protobuf文件定义数据格式,并根据该文件生成Java文件。接着介绍了Maven配置相关依赖,以及操作Protobuf数据的方法。通过示例代码展示了如何生成pb数据、获取pb数据并转换为json字符串,以及如何编辑headers数据。最后提供了完整的Java类代码示例以供参考。整个过程涉及到安装、定义、生成、操作等多个步骤,通过这些步骤可以在Java中方便地使用ProtoBuf对数据进行处理。
后端
未读
实现Java加密,Python解密的非对称RSA功能
本文介绍了如何实现Java端进行加密,Python端进行解密的非对称RSA功能。在Java端使用的是RSA/ECB/OAEPWithSHA-256AndMGF1Padding算法对数据进行加密,而Python端使用RSA算法对加密数据进行解密。在Java端需要注意数据长度限制以及公钥格式是DER的问题,而在Python端需要注意Base64格式转换和换行符的处理。通过该功能可以实现跨语言的数据加解密操作,提供了Java和Python端的代码示例。详细代码请查看作者Github。
后端
未读
(进阶版)SpringBoot实现多线程并发动态执行计划任务
本文为进阶版,重新实现了SpringBoot中多线程并发动态执行计划任务的方法。通过ScheduledTask类实现动态刷新和并发执行功能,将任务从数据库中获取并更新到任务列表中。使用LogTask对象存储任务信息,通过refresh()方法实现任务的刷新和更新。读者可在项目中实现从数据库获取任务对象集合的方法,并调用refresh()方法来实现任务的动态更新和并发执行。整体实现更加灵活,解决了数据库变更导致计划任务未刷新的问题,同时支持多线程并发执行任务。
后端
未读
基于High-level-rest-client使用JavaAPI完成对Elasticsearch的聚合查询
本文介绍了如何使用High-level-rest-client和JavaAPI完成对Elasticsearch的聚合查询。作者指出在5.x版本后,官方不太支持使用transportClient进行查询,而且由于实际环境涉及到加密,无法使用transportClient方式进行查询,因此选择了High-level-rest-client方式。文章详细介绍了pom.xml文件中需要引入的相关jar包,以及配置ElasticsearchConfig和ElasticsearchService类来实现对Elasticsearch的聚合查询。ElasticsearchService类中包含了在指定时间范围内查询关键字对应值的功能,通过High-level-rest-client创建client,构建查询条件,并处理查询结果。整体介绍了如何使用JavaAPI和High-level-rest-client完成对Elasticsearch的聚合查询。
后端
未读
Java 中的四种排序算法
本文介绍了 Java 中的四种排序算法,包括冒泡排序、插入排序、选择排序和快速排序。通过示例代码展示了每种排序算法的实现原理和具体步骤,帮助读者了解不同排序算法的实现方式和应用场景。同时,通过比较运行时间可以看出不同排序算法的效率和性能差异,为读者提供了选择合适排序算法的参考。通过学习这些排序算法,读者可以更好地理解和掌握 Java 编程中常用的排序技巧和方法。
后端
未读
Springboot项目平滑关闭及自动化关闭脚本
本文介绍了如何在Spring Boot项目中实现平滑关闭,并提供了自动化关闭脚本的使用方法。核心代码包括GracefulShutdown.java和Shutdown.java,其中GracefulShutdown类实现了Tomcat的定制化关闭操作,而Shutdown类则是在GracefulShutdown的基础上进行定制化关闭操作流程。另外,还提供了ApplicationStarterRunner.java、CommonInfo.java和HttpCommonUtil.java等辅助类来实现服务启动后的进程号设置和获取当前服务的PID等功能。最后,还给出了配置文件application.properties的相关内容和使用步骤。对于关闭操作流程的定制化,只需在Shutdown.java中的shutdown方法中编写相应的关闭操作即可。同时,也详细介绍了如何使用提供的自动化关闭脚本,包括下载、上传、配置环境变量和执行脚本的步骤,方便用户快速、方便地关闭服务。
后端
未读
基于Springboot构建ES的多客户端
本文介绍了如何基于Springboot构建ES的多客户端,通过在配置文件中设置不同的ES信息,然后在ElasticsearchConfig.java中定义了RestClient和RestHighLevelClient,通过注入的方式在需要使用的地方调用不同的客户端实现对不同ES服务器的操作。同时给出了pom.xml的依赖配置和ElasticsearchRestClient.java的具体实现代码。通过这种方式,可以实现在同一项目中操作不同的ES服务器,满足特殊需求。
后端
未读
Java获取指定topic每个分区的当前偏移量
本文介绍了如何使用Java获取指定topic每个分区的当前偏移量。首先通过在pom.xml中引入spring-kafka的依赖,然后在properties文件中配置消费者信息。接着通过编写KafkaUtil工具类中的方法,可以获取指定topic下每个分区的偏移量信息。最后,在主程序中传入需要获取偏移量的topic集合和配置信息,调用KafkaUtil方法即可实现获取每个分区的当前偏移量。同时,作者提供了properties文件自动注入的方式加载配置信息。
后端
未读
Dom4j 解析soap格式的xml数据
本文介绍了利用Dom4j库解析soap格式的xml数据的方法,目前只实现了3层结构的xml数据解析,支持标准格式、嵌套数组、嵌套对象、数组嵌套对象、对象嵌套数组等数据格式的解析处理。通过实现的`SoapXmlFormatUtil`类,可以将xml数据解析成JSONObject对象,并通过测试数据验证了解析结果的准确性。最后,通过执行速度测试表明,在处理5万条xml数据的解析过程中,平均解析速度为4166条/s,具有较高的解析效率。
后端
未读
多topic注入kafka消费者
本文介绍了在Kafka消费者中注入多个topic的两种方式。第一种方式是通过EL表达式在`@KafkaListener`注解中直接加载多个topic,通过`application.properties`配置文件指定topic列表。第二种方式是通过解析数据生成对象进行注入,通过自定义`KafkaListenerConfig`类实现`BeanDefinitionRegistryPostProcessor`接口,在该类中读取配置文件中的topic列表,并注册成Bean,然后在消费对象`KafkaListenerReceiver`中使用`@KafkaListener`注解加载多个topic。通过这两种方式,实现了在Kafka消费者中注入多个topic的灵活性和可扩展性。
后端
未读
基于原生mongoClient构建多数据源
本文介绍了如何基于原生的mongoClient构建多数据源的客户端,通过引入相应的依赖和配置文件,实现了方便快捷地构建多个mongo数据源。使用MongoClientsInit对象可以轻松获取不同数据源的MongoDatabase对象,然后在实现类中可以通过MongoSourceFind来进行具体的查询操作。这种实现方式避免了使用SpringBoot的mongoTemplate,简化了配置,并且适配了不同版本的SpringBoot,提供了一种更加灵活方便的解决方案。
后端
未读
Java 中的两种查找算法方式
本文介绍了Java中的两种查找算法方式:线性查找和二分查找。线性查找通过循环遍历数组来查找指定元素并返回下标,适用于无序数组;而二分查找则采用递归的方式,在有序数组中查找目标元素,通过比较中间元素和目标元素的大小来确定查找范围,提高查找效率。文章给出了具体的代码示例,并展示了如何在main方法中调用二分查找算法来查找数组中指定元素的下标位置。通过对比和实际应用,读者可以更好地理解和运用这两种查找算法。
后端
未读
基于SpringKafka构建客户端
基于SpringKafka构建的客户端代码使用了spring-kafka库,通过配置KafkaConfig类实现了对Kafka生产者的一系列参数设置,包括缓存容量、控制握手次数等。KafkaService接口定义了发送数据到指定topic、检验topic是否存在以及创建指定topic的方法。KafkaServiceImpl则实现了这些方法,通过KafkaAdmin和KafkaTemplate完成对Kafka的操作,包括发送数据、校验topic是否存在以及创建topic。整体实现了对Kafka客户端的便捷操作,提高了代码的可读性和易用性。
后端
未读
(基础版)SpringBoot实现多线程并发动态执行计划任务
本文介绍了如何使用SpringBoot实现多线程并发动态执行计划任务的方法。主要解决了多计划任务并发、自动刷新、数据库变更后立即生效等问题。通过集成SchedulingConfigurer接口、重写configureTasks方法、调用service方法获取定时任务信息等步骤实现了动态获取定时任务信息。同时,给出了相关的代码示例,包括SpringApplication启动类、mapper层、接口层、接口实现层、定时任务等。通过这些步骤和代码示例,可以实现多个定时任务并发执行,并且动态从数据库获取定时任务的定时信息。
前端
未读
使用Ajax动态执行模糊查询功能
该段落介绍了一个项目,它利用Ajax技术实现了动态模糊查询功能,特别针对模板的选择进行了优化。用户可以通过输入框输入关键词,系统即时反馈匹配的模板列表,提升搜索效率与用户体验。此功能模块基于jQuery和Bootstrap构建,并嵌入layui框架来处理弹出层的交互,如确认和取消按钮操作。此外,文档还涵盖了从HTML结构、CSS样式到JavaScript逻辑的全面实现细节,包括如何隐藏搜索结果、选择模板、删除已选项及最终确认提交的过程。对外部库的引用也清晰列出,便于开发者快速集成这一功能至他们的项目中。
前端
未读
Vue动态设置路由菜单
Vue动态设置路由菜单是通过后端驱动前端配置的过程,关键在于根据用户权限从服务器获取路由信息并实时构建路由表。在vue-element-admin项目中,首先维持一组静态基本路由,如登录页和404页面;随后,在Vuex的permission模块中,利用actions异步获取后端返回的路由结构,经处理转换为Vue Router兼容的格式,并按用户角色过滤权限。通过路由守卫(router.beforeEach),在页面跳转前确保所有权限相关的动态路由被正确加载至路由系统,实现按需展示功能页面。此策略结合了前后端分离思想,提高了应用的灵活性和安全性,确保用户界面与权限设定的精确匹配。
后端
未读
数据结构-栈
栈是一种特殊的线性数据结构,仅允许在一端(栈顶)进行元素的添加与移除,遵循后进先出(LIFO)原则。栈可以通过顺序存储或链式存储实现,其中顺序栈使用固定大小的数组存储元素,链栈则利用链表灵活性动态调整大小。栈的基本操作包括初始化、判断栈空、进栈、出栈及读取栈顶元素等,这些操作的时间复杂度均为O(1)。栈在算法与程序设计中扮演关键角色,如函数调用、表达式求值、深度优先搜索等场景。特别地,通过共享栈设计,两个栈可共用一片连续存储空间,提高空间利用率。在Java应用中,栈能实现复杂功能,如综合计算器,通过解析中缀表达式转换为后缀表达式并计算结果,展示了栈在处理递归、括号匹配及运算符优先级问题上的高效性。
后端
未读
Python之多线程开发
该代码示例展示了在Python 2.7环境下如何利用多线程和多进程来提升程序执行效率。通过定义`file2transfer`类,实现了文件处理的并发操作。程序首先使用`multiprocessingPool`进行多进程分配,每个进程中又利用`ThreadPool`开启多个线程来并行执行`file_operation`方法,该方法针对每个文件执行具体操作(此处留作待实现)。特别地,为解决Python 2.7多线程存在的问题,采用了代理函数`proxy`和`proxy2`。此设计旨在通过并行处理加速文件的传输或转换等任务,理论上可使程序执行效率提升至少10倍,体现了多线程开发在提升IO密集型任务性能上的优势。
后端
未读
Python之Elasticesearch游标查询
在Python中,Elasticsearch游标查询是处理大量数据的有效工具。通过使用Elasticsearch库,可以实现滚动查询,允许在默认两分钟的游标过期时间内持续获取数据。这种查询方法适用于需要一次性处理大批量数据的场景,通过使用游标可以有效地管理和获取查询结果。代码示例展示了如何初始化Elasticsearch连接,并定义了一个方法`search_by_scroll_id`,该方法使用游标方式查询指定索引和文档类型的数据,并支持聚合语句以及自定义的时间范围过滤条件。通过这种方式,可以高效地处理和分析大规模数据集。