自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 spring-boot集成websocket

Springboot集成websocket的Java-demo,包含前端实现

2024-04-03 14:25:24 504 1

原创 sentinel熔断报java.lang.reflect.UndeclaredThrowableException

sentinel熔断报java.lang.reflect.UndeclaredThrowableException的解决方法

2023-09-01 15:42:59 835

原创 PageHelper插件,报错“java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.page”

【代码】PageHelper插件,报错“java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.page”

2023-07-19 09:37:28 455

原创 kafka 错误信息 Magic v1 does not support record headers

kafka消息发送错误:Magic v1 does not support record headers

2023-02-28 10:27:14 533

原创 xxl-job源码—调度器/执行器工作原理

xxl-job 实现原理解读

2022-08-16 15:54:17 1488

原创 非对称密钥工具

渠道信息表字段 变量名 类型 说明 渠道id channelId Long 生成规则:当前时间(格式:yyMMddHHmm)+ 一个较大随机整数值 渠道名称 channelName String 渠道描述 channelDesc String 私钥 privateKey String 私钥,解密方保存,用于公钥加密后内容解密 公钥 publicKey String 公钥..

2021-05-12 17:28:28 275

原创 ElasticSearch 分组条件过滤求和

需求点:以“投递岗位”维度进行分组统计出消耗了金币的金币总量,以及每个岗位的报名人数例如:目前有岗位A、岗位B、岗位C,岗位A有3个人报名,每个报名消耗1个报名单;岗位B有5个人报名,每个报名消耗2个报名单,且其中有个报名是通过分享岗位进行报名的;岗位C有4个人报名,报名不消耗报名单;注意:当岗位是被分享报名时,无需消耗岗位报名单。最终结果应该是:统计结果 岗位 报名总人数 消耗总报名单数 岗位A 3 3 岗位B 5 8 岗位C 2

2020-12-03 14:51:01 2722

原创 eureka上被down掉的服务手动up

如果你发现你的服务进程还在,但是注册不到eureka上时,如下图中所示,eureka上服务状态为down。此时解决方案,可以手动发送“up”命令,将服务注册到eureka上。即在postman上手动请求如下接口:POST:http://{eureka服务地址:端口}/eureka/apps/{注册到eureka上服务名称}/{你的服务地址:端口}/status?value=UP举个例子,http://127.0.0.1:8081/eureka/apps/SHOP-CENTER/test0

2020-07-03 14:23:00 2915 1

原创 Eureka 启动报错“was unable to refresh its cache! status = Cannot execute request on any known server”

当项目启动报以下错时,一般是配置文件写得有问题:报错时配置文件:

2020-05-21 20:58:06 2130

原创 countDownLatch和cyclicBarrier

由于在做接口的性能优化,最近也在学习并发编程的这块知识,刚好将理论应用于实战中。对了解到的东西不仅加深了印象,而且能够用起来,才达到了学习的目的。(1)当我们使用线程池进行并发编程时,后续操作需要依赖于并行线程执行的结果时,这时就可以考虑使用java并发包里的countDownLatch和cyclicBarrier来实现线程等待。 countDownLatch实现线程等待,它的计数器不可重复利用,每个线程执行完则退出线程,等待其他线程执行完; cyclicBarrier实现线程同步,即每

2020-05-09 15:51:37 204

原创 线程池工作机制

【线程池】在优化报名接口性能时,尤其注重了线程池的使用。不建议使用Executors,原因在于它里面的很多方法默认使用的都是无界的LinkedBlockingQueue,高并发情况下,无界队列很容易导致OOM,而OOM会导致所有请求都无法处理,这是灾难性问题。因此建议使用ThreadPoolExecutor来创建线程池管理我们的线程。线程池的7个参数配置有很大考究,在使用过程中注意分析自己的业务场景,进行合理的配置。总的可以总结为以下两点: 其一:小线程,大阻塞队列,意味着可以提高访问接口的吞吐...

2020-05-09 15:46:10 399

原创 双重检查锁

【双重检查锁】简单来说,就是在并发场景下,实现单列模式时,为解决单列模式的特性,以及性能的开销,在实例化时先判断对象是否已经初始化,再决定是否加锁,同时再进行对象二次判空验证。如以下示例代码所示: 注意:示例代码中“volatile”关键字是解决由于编译优化带来的有序性问题可能导致程序的执行顺序并不是我们所理解的那样,最终造成在多线程情况下,对象抛出空指针异常。而“volatile”就是告诉编译器禁止对该程序的优化。 以下简单给出在未指定“vol...

2020-05-09 15:25:42 303

原创 rocketMq使用注意点

【rocketMq】在使用rocketMq的过程中,遇到两种场景,导致订阅的消息无法100%被消费。后根据消息消费情况以及订阅关系,结合rocketMq的官方文档,在大神的指导下解决了问题。如下图所示描述了所有错误的订阅关系。 错误场景1:用同一个groupId订阅了两个不同的topic消息 =》新创建一个groupId订阅其中一个topic消息。 错误场景2:用同一个groupId订阅了一个topic下不同的tag。消费者1指定了tagA,而消费者未指定tag。=》新创...

2020-05-09 15:08:46 514

原创 String对象优化

String对象的不可变性可保证其安全性,能防止对象被恶意修改,同时它可实现字符串常量池,使得在创建常量字符串时防止同一个值的字符串对象被重复创建,达到节约内存的目的。基于String对象的特性,那么在使用时可以从以下节点进行优化: (1)构建超大字符串时,显示地使用StringBuilder进行字符串拼接来达到提升系统性能的目标。如果多线程环境下,考虑字符串拼接的线程安全,那么可以使用StringBuffer,但是性能肯定会比StringBuilder要差,因为StringBuffer为保证线程安全.

2020-05-09 14:39:32 190

原创 多线程优化与stream使用

【多线程优化】在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行。线程数量设置太小,会导致程序不能充分地利用系统资源;线程数量设置太大,又可能带来资源的过度竞争,导致上下文切换造成额外的系统性能开销。因此合理地设置线程数量,尽可能降低线程切换以发挥线程的最大优势,是优化多线程的一个重要思路。 总之,一般在单个逻辑比较简单,而且执行速度相对来非常快的情况下,那么可以使用单线程;而在逻辑相对来说很复杂的场景,等待时间相对较长又或者需要大量计算的场景,那么则建议使用多线程来提高多线程的...

2020-05-09 14:36:56 882

原创 实践项目中的JVM调优

背景有个项目在接入阿里云的

2020-05-09 14:08:52 726

原创 java编译原理-方法内联

方法调用在执行操作时要求在执行前保护现场并记忆执行的地址,执行后要恢复现场,并按原来保存的地址继续执行。 因此,方法调用会产生一定的时间和空间方面的开销。尤其对于那些方法体代码不是很大,又频繁调用的方法来说,这个时间和空间的消耗会很大。这个时候会发生方法内联的优化行为,即把目标方法的代码复制到发起调用的方法之中,避免发生真实的方法调用。 java会把那些频繁调用的方法代码,自动识别...

2020-05-09 09:16:46 287

原创 利用子查询优化SQL

在千万级别的数据表中以一个无索引的列作为查询条件,结果可想而知,大部分情况下肯定是非常耗时。这无疑造成的结果就是,这样的慢SQL查询,轻则只是影响使用它的接口,重则在用户请求量大的情况下占满我们的数据库资源,造成生产环境业务的不能操作。所以对于大数据量的查询,我们需要建立适合的索引来优化查询。 一般情况下,我们都会根据业务需求以及结合经验给相应的列创建合适的索引,大部分情况下都会...

2020-05-08 14:41:58 420

原创 查询接口性能优化

之前其实很困惑查询接口的性能该怎么优化。归根结底主要面临着两大现状,① 查询太多 ② 数据实时性要求高。尤其对于活动或者小任务这样的需求,业务场景的多样化也就带来了我们的条件分支判断繁多,同时前端展示内容的个性化以及丰富性,也伴随着可能更多的数据查询。有时为了达到更好的视觉效果,前端展示的内容要求是获取实时更新的数据。那么从最初的只是功能实现,到随着用户流量的递增,数据的累积,我们开始逐渐注重接口...

2020-05-08 14:37:07 1583

原创 执行很快的SQL却导致慢接口

在解决慢SQL和慢接口时,发现有些SQL执行挺快的,但是接口呈现的结果就是时间过长。那么或许是数据库连接池配置不合理。如果并发线程数超过了连接数,那么就会有部分线程无法获得连接而进入阻塞,等待其他线程释放连接后才能访问数据库。由这个问题,我想到其实我们对系统内的堆内存以及CPU的使用情况缺乏很好的监控。很多时候,我们系统变慢或者系统崩溃跟这几块资源的使用情况息息相关,后续慢慢做好这方面的监控,对我...

2020-05-08 14:30:01 2046

原创 ES依赖包冲突导致的偶尔连接es失败

在解决项目中的一个“连接ES失败"的错误时,排查出问题所在是如下图中,红色框起来的两处的依赖包中的“transport”这个jar冲突,后续我将"2"处的引入包删除,则解决了问题。这里特别注意,尽量不要使用spring-boot-starter-data-elasticsearch这个ES依赖包,这个jar下的ES依赖包版本较低,不建议使用。...

2020-05-08 14:16:44 765

原创 多线程并发编程(二)

【系统变慢】当前我们的服务器软件系统主要应用多线程技术实现多任务处理,并完成对很多用户的并发请求处理。简单来说,我们的一个web应用相当于操作系统中的一个进程,该进程中可以创建很多线程,而每个线程处理一个用户请求。在处理多个并发用户请求时。由于系统资源的有限性,从而在执行过程中引发运行时资源的竞争,系统为保证共享资源的线程安全,于是有了加锁的解决方案,即同一时刻只允许一个线程访问共享资源。锁会...

2020-05-08 14:10:50 147

原创 【服务注入】@Autowired 和@Resource

【服务注入】我们在一个类中注入依赖服务的方式有两种,方式一:@Autowired ;方式二:@Resource。可能我们并没有仔细深究他们的区别在哪里或者理解有偏差,导致我们可能在启动项目时,会抛出xxBean无法被找到,于是我特别去深究了下二者的区别。 @Autowired注解是按照类型(byType)进行装配依赖对象; @Resource注解是按照name(byNam...

2020-05-08 13:47:55 282

原创 多线程并发编程(一)

在解决多线程并发带来的性能问题时,我们首先想到的一定是线程池。但配置线程池的几个关键参数时,必须基于生产环境系统资源以及线上流量,设置合理的参数值。线程数量设置太小,会导致程序不能充分地利用系统资源;线程数量设置太大,又可能带来资源的过度竞争,导致上下文切换造成额外的系统性能开销。尤其线程数量设置过大,最糟糕的情况就是会导致系统奔溃。其中特别提到的“上线文切换”指什么呢,这里简单说明下,首先必须先...

2020-05-08 13:42:14 138

原创 Hash表的时间复杂度为什么是O(1)?

【hash表的时间复杂度】hash表的时间复杂度为什么是O(1)?能回答这个问题的答案之前,肯定必须先了解hash表的数据结构。如下图所示: 如图中清晰可知,hash表是基于数组+链表的实现的。数组在内存中是一块连续的空间,只要知道查找数据的下标就可快速定位到数据的内存地址,即数组查找数据的时间复杂度为O(1)。hash表的存储结构是<key,value>的形式,数...

2020-05-08 11:59:34 14322 2

原创 代码太臭遇到的坑

【单一职责原理】 从我自身排查一个应用生产环境问题的艰难过程来总结,写一个别人能看得懂的代码真的太重要了。对于开发经验不够多的技术人员来说,常常会写出这样的代码: 功能代码逻辑不够严谨; 方法实现严重违背单一职责原理; 尤其第2点增加了问题排查的难度。原因在于,一个方法涵盖的功能太多,不仅是从设计上来说已经违背了单一职责原理,而且无疑大大降低了日后对该功能代码的可读性和...

2020-05-08 11:51:39 148

原创 技术人员多角度的培养

设计模式在跟饿了么对接的过程中,从他们对外开放平台中的文档来看,的确他们在对外接提供服务这方面的专业性,值得让人借鉴和学习。就从技术方面来说,他们的设计让我看到了平台化的成熟架构,不管是在双方数据交互前网关这块的鉴权,还是消息推送推荐的“全双工推送”方式,都很巧妙。尤其“全双工推送”这样的消息推送方式,很好地体现了“依赖倒置”这种设计模式。我认为熟悉并能掌握这种设计模式,那么做到应用的服务化和...

2020-05-08 11:11:09 192

原创 Mybatis:The error occurred while setting parameters 参数设置错误

我的SQL的目的是查询出指定指导老师下的第一个学生信息:SELECT * FROM student WHERE `expired` = 0 AND teacher_id = 160278 ORDER BY id ASC LIMIT 1 大部分数据能查询成功,但是极少部分查询就会报以下错误信息:content: org.springframework.dao.QueryTimeo...

2019-10-31 16:46:11 12809 1

原创 java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder 报错解决方案

springboot + springcloud 搭建项目时报以上错,是由于springboot版本与springcloud的版本不兼容问题。springboot与springcloud的版本兼容对应关系如下所示:SpringCloud SpringBoot Angel版本 1.2.X Brixton版本 1.3.X Camden版本 1.4.X ...

2019-10-09 17:16:26 890

原创 druid数据库连接池的多数据源自动注入配置

在项目配置文件中进行如下参数配置,现以“.yml”类型文件举例:#druid连接池配置spring: datasource: type: com.alibaba.druid.pool.DruidDataSource master: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=Ho...

2019-09-26 11:05:44 1113

原创 mac JDK以及Maven环境变量的配置

环境变量的配置1)sudo vi ~/bash_profile2)export JAVA_HOME=/Library/java/javaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home3)export PATH=$JAVA_HOME/bin:$PATH4)export M2_HOME=/java_tool/apache-maven-3.5...

2019-09-26 09:43:43 233

原创 static、final和ThreadLocal的使用说明

(一)static1、static修饰的方法和属性会统一交给类管理,即多个类对象只会对应一个属性或方法,并由JVM分配在堆中的一块不变的区域。2、static修饰的方法,可以使用"类名.方法名"的方式调用,避免了需要new对象的繁琐和内存资源的消耗。总结1、用来修饰类成员变量,从而实现所有对象对成员变量的共享。2、用来修饰成员方法,可以直接“类名.方法名”的方式调用,常用...

2019-09-26 09:39:36 2852

原创 swagger 注解学习

(一)常用注解1、@ApiImplicitParam(name="companyId",value="公司id",required=false)--可替代@RequestParam注解,允许入参为空2、@Api(tags="接单数据统计接口",value="接单数据统计")--标识类是swagger的资源3、@ApiOperation(value="统计每种状态的人...

2019-09-26 09:35:16 280

原创 解决idea 无法自动编译,即写入错误代码没有提示

选择File——&gt;power save model ,去掉勾选的该项即可https://www.oschina.net/question/2341531_230363 

2018-07-18 13:42:19 1909

原创 批量压缩文件并下载

/*** @Title: downModelImage* @Description: 下载图片* @param request* @param response* @return* @throws Exception*/@SuppressWarnings("unchecked")@RequestMapping("/CheAndCle/downModelImage

2018-01-15 10:49:50 348

原创 uploadify文件上传实例

需要引入的js文件和css文件:  <script type="text/javascript" src="plugins/uploadify/swfobject.js">var jsessionid = "";  //勿删,uploadify兼容火狐用到hTML文件:文件:保存upload

2017-09-30 15:39:13 501

原创 下载文件

import java.io.BufferedOutputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.http.HttpServletResponse;/** * 下载文件 * 创建人:YYQ * 创建时间:2014年12月23日

2017-09-26 11:12:03 270

原创 获取web项目路径工具类

import java.io.File;import javax.servlet.http.HttpServletRequest;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.Servle

2017-09-26 11:02:22 427

原创 java压缩成zip

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/**java压缩成zip * @author YYQ * 创建

2017-09-26 10:23:11 304

原创 扩展easyUI样式,全新的easyUI体验样式

学习地址:https://www.insdep.com/docs.html#combination-form

2017-09-26 09:49:44 4386

空空如也

空空如也

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

TA关注的人

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