自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (6)
  • 收藏
  • 关注

原创 java多线程任务执行器

对于java来说,一般我们都会使用spring或者springboot来作为框架,在spring框架里面有个@Async注解,如果这个注解标注在方法上,当其他bean调用这个方法的时候,就会用线程池去异步执行这个方法。其中doTaskWithPool为初始化线程池方法,有两种入参,一种是无参,使用默认的线程池配置,一种是自己创建一个线程池进进阿里,每次开启任务的时候需要调用,而执行完任务调用waitForEnd会自动销毁,并且会等待所有的任务执行完毕。这个是一个可以指定名字的线程池,方便日志打印线程名字。

2024-03-13 16:54:11 768

原创 阿里通义灵码实测使用,强大,好用!

通义灵码是基于通义大模型,提供代码智能生成、研发智能问答能力的一个ai产品,经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测、代码注释等。沉浸式编码心流,秒级生成速度,让你更专注在技术设计,高质高效地完成编码工作。目前是免费使用的,对于程序员来说,现在官网还有安装插件送盲盒的活动,还是很慷慨的。作为一个写代码辅助工具来说,还是很好用的。

2024-03-13 16:53:18 1205

原创 springboot使用cglib代理实现多源数据库动态切换

想要根据业务的一些参数和场景动态切换不同的mongo数据库,比如根据用户请求http header里面的参数来使用不同的数据库。其他数据库可以参照这个写的去动态实现。

2024-03-12 16:36:27 413

原创 ai智能搜索生产实现(低门槛实现自然语言搜索)

自然语言搜索是一种搜索方式,用户可以以自然语言的形式提问或描述他们正在寻找的信息,而不是使用特定的查询语法或关键字。简单来说,就是用户可以用日常的对话方式来进行搜索。这种搜索方式的优点是更加直观和用户友好,因为用户不需要担心如何准确地拼写关键词或掌握复杂的查询语法。用户可以以提问的方式来搜索想要的数据,用于替代常规的Elasticsearch或者是数据搜索。

2024-03-12 16:33:18 1337

原创 分布式协议笔记

Leader总统节点,负责发出提案Follower追随者节点,负责同意Leader发出的提案Candidate候选人,负责争夺Leader。

2024-03-11 18:40:05 939

原创 MongoDB自动同步数据到ElasticSearch工具monstache最佳实践

Monstach是一个用Go编写的同步守护进程,它将MongoDB集合连续索引到Elasticsearch中。Monstach使您能够使用Elasticsearch对MongoDB数据进行复杂的搜索和聚合,并轻松构建实时Kibana可视化和仪表板。

2023-12-27 15:11:21 429

原创 ElasticSearch内存分配最佳实践

文章目录elasticSearch内存介绍elasticSearch使用的内存种类堆内存在elasticSearch中的作用堆外内存在elasticSearch中的作用Buffer Cache在elasticSearch中的作用内存分配与调优结合业务实际优化内存比例总结题外elasticSearch内存介绍在使用elasticSearch过程中或者elasticSearch需要配置升级的时候,elasticSearch内存的分配问题就绕不开了,应该设置多少的堆内存合理?这个问题想必难倒一大批开发者吧,虽

2023-12-27 15:10:07 463

原创 Mongodb遍历数据,游标VS排序(附实现代码)

在使用mongodb的时候,经常会有这样的业务场景,比如搜索某个条件,然后这个条件的结果有几十万甚至几百万,然后一时半会处理不过来,就需要使用遍历循环来处理。第一种就是用mongodb自带的游标去遍历第二种是用排序然后取最后一个id去遍历第三种是使用limit和skip去遍历当数据量很少的时候可以使用第三种方法遍历,其他时候均不适合使用第三种方法遍历。本文主要对比第一种和第二种方法的优劣总体来说游标遍历和排序遍历各有优缺点,各位还是要根据实际的业务情况去分析选择最合适的遍历方法。

2023-12-22 10:55:08 883

原创 Java定时任务全方位场景实现思路

在开发过程中,根据需求和业务的不同经常会有很多场景需要用到不同特性的定时任务,针对这些场景,这里提供不同的一个实现思路。针对以上的几种特性,这里讲一讲相对简单的实现方式。

2023-12-21 17:50:26 833

原创 Elasticsearch同步中间件&同步工具选择与实现

看过很多同步的工具,特性其实都是需要利用mq来实现消息的消费是最可靠的,所以在实现的时候一定要留意消息丢失的可能。

2023-12-18 14:21:14 388

原创 Elasticsearch性能优化思路和最全优化细节

文章目录Elasticsearch性能优化思路优化方向与细节分片数量副本数量:段合并相关字段设置内存排序es缓存优化客户端优化索引别名机器配置Elasticsearch性能优化思路Elasticsearch是个非常依赖文件缓存的一个数据库,优化主要有两个思路,一个是优化搜索的逻辑,一个优化缓存。搜索逻辑的优化,可以考虑使用合理的索引设置,合理的搜索方法,使得搜索的路径短、返回快、消耗资源少缓存的优化就比较多了,首先是文件缓存,就是服务器除了jvm之外的缓存,这部分需要预留的充足,然后就是存储的体积,

2023-05-12 15:16:54 650

原创 缓存详解-在java项目中使用缓存,最主流的缓存caffeine+redisson

一般业务缓存需要满足最低的条件是:1.有边界,能定义缓存的大小2.有过期时间3.有合理的缓存淘汰策略。

2023-02-01 15:27:58 482

原创 spring-telnet-1.0.2 一个springboot的控制台脚本逻辑执行工具

spring-telnet是一个运行于spring容器内的一个telnet服务端,使用netty通信,可以通过telnet输入命令去执行任意容器内实例的方法或者是不在容器内的类的方法。

2023-01-29 11:55:02 265

原创 ELK数据分析实战:导入nginx日志到ELK进行分析

这里以下面需求为例,描述如何使用ELK做数据分析示例需求:从线上down下来的nginx日志文件要求分析,并出图表,找到慢且访问量大的接口前置要去:需要读者基本了解Elasticsearch和Kibana。

2023-01-04 14:03:46 729

原创 springtelnet使用:通过telnet连接调用springboot内任意接口方法

spring-telnet介绍spring-telnet是一个运行于spring容器内的一个telnet服务端,使用netty通信,可以通过telnet输入命令去执行任意容器内实例的方法或者是不在容器内的类的方法。开源地址是https://github.com/quanquan1996/spring-telnetspring-telnet用途测试阶段查看数据,方便调用方法,不用再额外写一...

2022-11-25 14:19:39 478

原创 反射教学:写出风骚的Java代码的基本功

反射是java语言中的一个特性,反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。 这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。 反射被视为动态语言的关键。以上是java关于反射的八股文,可能不是很好背,但是绝大部分java程序员都不会在实际开发中去使用反射。合...

2021-09-27 18:45:34 103

原创 Java实现本地任务聚合与分布式任务聚合

场景介绍:在高并发场景,如果调用链是A ->B,A不需要立马获取请求的最终结果(可以理解为异步),而A的请求逻辑是可以批量处理,这时候就可以使用聚合批量处理请求。使用聚合,可以极大的提高服务的处理能力,是高并发场景中效果最好的优化之一。下面介绍两种任务聚合的实现方式,目前代码只针对了处理聚合的时间间隔,没有控制可聚合的最大数量,如有需要可以在代码上加以处理。聚合实现的基础类需要实现聚合...

2021-09-27 18:10:40 344

原创 Java通过redis依赖实现延迟队列任务/指定时刻执行任务

在java业务开发过程中,经常可能会有这样的需求,我需要在未来的某个时间点执行一个任务,而这个任务是一次性的。又或者是需要动态的创建一个时间线,在某个时间点对应的做某一件事情。而通过定时任务来做的话,很难达到这样的功能,只能通过一个短间隔的定时任务去一直判断当前时间,从而执行某个任务。而如果是需要在未来某一时间点执行某任务的时候,如果仅仅只是使用内存来存这个未来的时间点,则会有进程重启后丢失的风险...

2021-09-09 18:58:48 460

原创 spring服务懒人测试秘籍,只需一个controller测试所有bean的方法

前言在使用spring实际生产开发中,写完代码需要测试,如果不想写测试用例,也不想写controller来测试怎么办,经常一些非http服务测试会十分麻烦,如果要写controller或者是单元测试去测,需要大量的时间,当然时间足够还是写单元测试好一些,但是懒人就是不想写,然后又想测试完善以免测试不完全。本文提供一个比较好的操作去解决这些问题。代码编写这里用一个controller方法去暴露...

2021-05-26 20:34:51 98

原创 3分钟学会用Arthas排查java服务各种问题

简介arthas 是阿里开源的一个java问题排查工具,可以在不重启,无代码侵入的情况下做很多事情,有了arthas,很多平时排查起来很麻烦的问题都可以迅速定位,下面给大家介绍几个常用的操作以及场景(官网地址:https://arthas.aliyun.com/doc/index.html)前置操作:attach 进程使用arthas需要首先attach进程curl -O https:/...

2021-05-18 17:14:34 1730

原创 缓存详解-在java项目中使用缓存

一、概述在java项目中经常有使用缓存的场景,这时候如何使用缓存就很重要了,本篇文章言简意赅,带你读透缓存二、java常用的缓存在java项目中经常使用到的缓存主要分为两个种类1、内存类java中的Map、List等容器实现类可以用来作为本地缓存。一些本地缓存框架,类似ehcache,guava中实现的缓存。2、中间件类redis、memcache等等三、使用缓存将会面临的一些问...

2020-08-05 20:35:30 4079

原创 MySql官方文档翻译之Select查询语句where限定条件优化

针对官方文档的翻译,并加入一些比较难理解的补充说明,以下为译文:注:该文档的意思是以下优化正常情况是由mysql自动优化,即不用刻意优化。本节讨论可以如何处理查询语句WHERE子句的优化。这些示例使用 SELECT语句,但是对DELETE和UPDATE 语句中的WHERE子句也可以进行相同的优化。您可能会想优化sql查询以使查询效率更快,但是优化的同时又牺牲了可读性。由于MySQL自动进行类似...

2020-07-28 15:16:42 99

原创 Spring MongoTemplate批量操作源码跟踪与最佳实践

MongoTemplate介绍MongoTemplate是Spring-data-mongodb实现的接口,用于对mongodb数据库的操作。绝大部分操作都包含在内。本文使用的包版本为spring-data-mongodb-2.1.5.RELEASE.jar,其他版本实现核心逻辑大致不变MongoDb批量操作db.collection.insertMany()给定一个文档数组,insert...

2020-03-26 13:28:42 680

原创 RocketMq容灾、高可用方案

一、实现分布式集群多副本的三种方式1.1 M/S模式即Master/Slaver模式。该模式在过去使用的最多,RocketMq之前也是使用这样的主从模式来实现的。主从模式分为同步模式和异步模式,区别是在同步模式下只有主从复制完毕才会返回给客户端;而在异步模式中,主从的复制是异步的,不用等待即可返回。同步模式同步模式特点:高延迟、低吞吐、无数据丢失(发生故障时)、自动故障转移、强一致性...

2019-09-23 11:34:37 146

原创 两道Java中级/高级开发笔试题笔试题解题思路

一、试题原题1.1 中级试题使用我们的脚手架工具生成项目mini-system,实现一个系统最基本的功能:用户认证+权限控制,要求:根据RBAC模型进行数据库设计用户密码非明文存储使用JWT进行认证控制使用你喜欢的框架实现接口级的权限控制为重要的逻辑添加单元测试保护考虑到工作量的问题,不强制要求实现数据的CRUD相关接口,你可以直接往数据库中添加数据来测试上述功能。1.2...

2019-08-19 14:41:48 99

原创 Java NIO

一、NIO概述NIO即 non-blocking IO,非阻塞IO,在java中实现主要通过Channel、Buffer、和Selector来实现。Channel和Buffer :channel相当于一个通道,Buffer相当于输入输出channel和buffer Selector:选择器,实现了使用单线程操作多个channel,IO复用Selector原理:首先向Select...

2019-08-09 11:11:26 63

原创 RocketMq高可用部署/消息高可靠性方案以及故障模拟

RocketMQ高可用思路在实际生产环境中,一般需要服务达到高可用、无单节点故障的要求。在 rocketMq 中就需要分布式部署。RocketMQ的核心就是Broker的消息存储,而高可用的关键也在于Broker。因此,高可用方案可以参考一下推荐NameServer:因为NameServer是无状态的,所以只需要直接用集群 部署,只要由一台NameServer可用,那么集群就整体可用。Bro...

2019-08-02 17:22:14 97

原创 消息队列与RocketMq核心机制详解

一、 消息队列1.1 队列与消息队列简单的来说,消息队列就是基于“先进先出的一种数据结构”,在开发中经常会用到。但是在实际生产中,期望这个队列是高可用的(消除单节点故障)、高性能的(应对大流量冲击)、消息可靠性(持久化、认证)。所以对消息队列的要求就很高了。经常会用到RabbitMq、ActivityMq、RocketMQ等消息中间件提供消息队列的能力。普通队列1.2 消息队列...

2019-08-01 16:13:37 82

原创 什么是Nacos?Nacos注册配置中心介绍

一、什么是Nacos英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民二、Nacos原理nacos简单介绍Nacos注册中心分为server与client,server采...

2019-08-01 15:51:26 62

原创 springboot/springCloud微服务注册中心使用Nacos替换Eureka方案

一、概述此文用于指导从Eureka切换成Eureka方案推荐Nacos介绍与作为注册中心与Eureka对比链接:https://www.jianshu.com/p/afd7776a64c6二、Nacos安装部署推荐使用集群部署2.1集群部署架构图因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面http://ip1:port/openAPI 直连ip模式,机...

2019-07-12 15:56:28 162

原创 nacos简介以及作为注册/配置中心与Eureka、apollo的选型比较

一、Nacos简介Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。Nacos主要提供以下四大功能:服务发现与服务健康检查Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。动态配置管理动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的...

2019-07-12 12:45:02 54

原创 有效学习的误区

美国智库高级研究员伯泽尔在《有效学习》这本书中,向我们展示国际上关于“如何学习”这一学科的新成果。在这本书中,伯尔泽提出了我们会经常陷入有效学习的几个误区。image.png一、反复阅读信息会记忆得更多。在一项大家熟知的研究项目中,研究人员让第一组实验人员读一个段落,连续4遍,让第二组实验人员读一遍后练习回忆段落内容3遍。几天以后,研究人员跟踪研究两组实验人员,发现练习回忆段落内...

2019-06-26 12:33:15 109

原创 微服务网关选型:spring cloud gateway、zuul 1性能对比测试

1.Spring Cloud gateway与zuul1实现方式对比分析zuul 1本质上是一个web servlet,基于servlet2.5,代码简单易看懂,但是使用阻塞api,不支持任何长连接,如websocket。Spring cloud gateway使用netty进行网络通信建立在Spring Framework 5,Project Reactor和Spring Boot 2上,使...

2019-06-25 17:14:12 286

原创 最精简的后端架构思路

一、网站架构五要素当前互联网架构设计主要包括五要素:性能、高可用、伸缩性、拓展性、安全性,以下篇幅将对这五要素做具体或者简略的介绍。架构五要素二、性能篇性能主要还是包括两个方面,一个是性能测试,一个是性能优化。其中性能测试又分为单纯的性能测试、负载测试、压力测试、稳定性测试性能测试:以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否...

2019-06-25 16:03:13 58

原创 RocketMq消息队列服务化方案

一、rocketMq目前设计1. 目前已有功能概况架构模式 RocketMQ 与大部分消息中间件 样,采用发布订阅模式,基本的参与组件主要包括消息发送者、消息服务器(消息存储)、消息消费、路由发现顺序消息 支持严格有序消息过滤 支持消息过滤,从broker端或者从消费者端过滤,推荐从broker端过滤消息存储 持久化存储,性能极高消息高可用性 br...

2019-06-25 12:20:07 77

原创 SpringCloud gateway与zuul1性能压测对比分析,全方面比较

1.Spring Cloud gateway与zuul1实现方式对比分析zuul 1本质上是一个web servlet,基于servlet2.5,代码简单易看懂,但是使用阻塞api,不支持任何长连接,如websocket。Spring cloud gateway使用netty进行网络通信建立在Spring Framework 5,Project Reactor和Spring Boot 2上...

2019-05-05 10:36:10 14654 6

转载 spring学习笔记2

1.spring JavaConfig可以用javaConfig代替传统的xmljavaConfig:以下是一个完整的用javaConfig的例子首先是一个完整的bean接口和继承的类:以下是javaConfig注解:执行:需要使用 AnnotationConfigApplicationContext 加载您的JavaCo

2017-07-02 17:03:33 121

转载 spring学习笔记(1)

1.基础的spring调用创建一个bean然后再xml文件配置bean最后再类里调用2.spring解耦原理:只需要改变 Spring XML 文件使用不同的输出生成器。只修改 Spring XML 文件而不需要无码修改,这意味着更少的错误。这种依赖注入(DI)为对象的依赖关系管理有用的特性。

2017-07-02 16:47:13 190

医院预约挂号病历管理系统需求分析、详细设计,论文大全

医院预约挂号病历管理系统需求分析、详细设计,论文大全,内含14篇相关论文,包含详细的需求分析,概要设计,详细设计等软件工程开发文档。

2018-05-22

程序员面试经验技巧合集(C++,Java都有)

程序员面试经验技巧合集(C++,Java都有),吐血推荐,内含多个经典书籍

2018-05-22

内部培训资料,Maven和Junit培训资料

培训资料,教你如何使用Maven和Junit以及Mock各种工具类,单元测试教程

2018-05-22

阿里巴巴java开发规范,开发手册,编写出高质量的java代码

阿里巴巴java开发规范,开发手册,编写出高质量的java代码

2018-05-22

TCP-IP详解共三卷

压缩文件,共三卷-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2018-05-22

医院预约挂号病历管理系统,用Spring+SpringMVC+javabean实现,代码简单易懂

医院预约挂号病历管理系统,用Spring+SpringMVC+javabean实现,代码简单易懂,适合初学者学习

2018-04-24

空空如也

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

TA关注的人

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