后端
未读
实现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层、接口层、接口实现层、定时任务等。通过这些步骤和代码示例,可以实现多个定时任务并发执行,并且动态从数据库获取定时任务的定时信息。
后端
未读
数据结构-栈
栈是一种特殊的线性数据结构,仅允许在一端(栈顶)进行元素的添加与移除,遵循后进先出(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`,该方法使用游标方式查询指定索引和文档类型的数据,并支持聚合语句以及自定义的时间范围过滤条件。通过这种方式,可以高效地处理和分析大规模数据集。
后端
未读
Python之子域名查询
这段Python代码实现了一个子域名查询工具,能够根据提供的主域名,在Bing搜索引擎上查找并收集相关的子域名及其页面标题。为了绕过搜索限制,它每次查询默认获取最多20条子域名记录(2页),利用requests库发起网络请求,并借助fake_useragent库随机变换User-Agent来模拟真实用户浏览器,同时使用BeautifulSoup解析返回的HTML内容,从而精准提取子域名链接和标题信息。最终,这些数据会被整理成字典形式返回,便于进一步分析或处理。
后端
未读
Python之端口检测
本文详细介绍了使用Python进行端口检测的方法。无论是输入IP地址还是域名,通过Python的Socket库和DNS解析模块,可以准确检测特定端口的开放状态。对于IP地址,直接使用Socket连接进行检测;对于域名,首先进行DNS解析获取关联的IP地址,然后再检测端口状态。这种方法非常适合网络管理和故障排除,能够帮助用户快速了解服务器或服务的可用性,是系统监控和安全检查中的有力工具。
后端
未读
Python之INI配置文件读写
该代码段展示了Python中操作INI配置文件的两个类:`get_ini`用于读取INI配置文件,而`write_ini`用于写入和修改INI配置文件。`get_ini`类提供了读取INI文件中sections、options、键值对及特定option值的功能;`write_ini`类则支持向INI文件添加section、删除section或option以及写入配置更改。此类工具的设计旨在简化对INI配置文件的管理,提高配置数据处理的灵活性与效率。通过实例化这些类并调用相应方法,开发者能够轻松地在Python应用程序中实现INI文件的读写操作。