其他技术区
java 标签描述

说明:本文记录一次偶然出现的空指针异常,在微服务架构中,一个服务在调用另一个服务时,出现了空指针异常。 业务描述:在做订单超时功能时,大家都知道,可以使用RabbitMQ延迟队列,下单的同时给队列发送一个延迟消息(消息的内容是订单号),比如延迟10分钟。10分钟之后,该消息被消费者监听到,会根据该订单ID查询数据库,看该订单的状态是否为已支付,是则忽略,否则取消该订单,恢复商品库存等等其他操作,然而此时出现了空指针异常,消息未被消费,被路由到死信队列中。 (微服务调用报空指针异常) (消息被路由到死信队列) 如下图的第三步: 分析 首先排除FeignClient的问题,因为下单减少库...

  TEZNKK3IfmPf   21小时前   6   0   0 java拦截器

说明:在SpringBoot项目中,我们添加了许许多多的注解,这些注解提高了开发效率。这是因为SpringBoot在项目启动时,帮我们自动装配了大量的Bean对象,可以通过分析源码查看自动装配的大致原理。 第一步:@SpringBootApplication 进入到启动类中的@SpringBootApplication注解中,该注解里面有七个注解,上面四个是元注解,无需理会,下面三个注解分别表示: @SpringBootConfiguration:该注解内包含@Configuration注解,表明该类是一个配置类; @EnableAutoConfiguration:自动装配注解; @Com...

  TEZNKK3IfmPf   20小时前   5   0   0 javaspringSpringBoot

说明:ffmpeg是一款非常好用的媒体操作工具,包含了许多对于视频、音频的操作,有些视频播放器,实际上就是套了一个ffmpeg的壳子。本文介绍ffmpeg的使用以及一些较为实用的命令。 安装 ffmpeg是命令行操作的,不需要安装,可在官网下载压缩包; 解压到一个没有中文、没有数字的路径下,配置一下环境变量,这些都是基本操作,不再详细介绍; 打开CMD,输入ffmepg,出现以下信息表示环境变量配置成功; 使用 命令1:提取视频所有帧 有时我们需要对视频图像进行处理,可以考虑把视频按帧提取出来成图片,再使用代码对图像进行逐帧处理,可使用以下命令: ffmpeg-i<视频文件名&...

  TEZNKK3IfmPf   21小时前   6   0   0 ffmpegjava

说明:将数据填充到Excel模板中,报下面这个错误:Forinputstring:"" 解决:模板上对应字段错误,忘了加“.”(点)

  TEZNKK3IfmPf   21小时前   8   0   0 exceljavaSpringBoot

说明:在转账业务中,具体到数据库中,操作有两步: 1)把转账人的账户金额转账金额; 2)被转账人的账户金额+转账金额; 这两步操作共同执行,才算完成了转账业务,但如果在执行第一步后,发生断电、报错等原因,导致第二步未能执行。对数据的部分操作,导致数据库中的数据失去一致性,而事务就是为了解决这类情况的。 一、事务(Transaction)的特点 事务具有以下四个特点,称为ACID: 原子性(Atomicity):事务包括的代码是最小的执行单元,要么都执行,要么都不执行; 一致性(Consistency):事务执行前后的数据,是一致的。即,要么事务执行失败,数据不发生变化;要么执行成功,数据发...

  TEZNKK3IfmPf   20小时前   5   0   0 java数据库sql

说明:记录一次使用String.valueOf()的坑,以下是一段有问题的代码: Stringcount=String.valueOf(listData.get(0).get(0).get("count"); if(StringUtils.isBlank(count)||"0".equals(count)){ result.setResult(page); returnresult; } 问题分析 其中,listData是调用数据库存储过程,返回的数据集合,是List<List<Map<String,String>类型的,表示多个结果集,每个结果集有多...

  TEZNKK3IfmPf   20小时前   6   0   0 字符串java数据库

说明:设计模式根据用途分为创建型、结构性和行为型。创建型模式主要用于描述如何创建对象,本文介绍创建型中的单例模式。 饿汉式单例 单例模式是比较常见的一种设计模式,旨在确保对象的唯一性,什么时候去使用这个对象都是同一个。这样设计的目的是为了避免对象重复创建,浪费资源,同时也保证了对象的唯一性,不至于多个相同的对象,状态不一致的情况。 以下是单例模式的简单实现: /太阳类/ publicclassSun{ privatestaticfinalSunsun=newSun(); privateSun(){ } publicstaticSungetInstance(){ returnsu...

  TEZNKK3IfmPf   20小时前   6   0   0 设计模式java单例模式

说明:最早出现这个需求,来自博主阅读《罪与罚》,书中陀思妥耶夫斯基有太多的语言描述,以至于我想知道这本书中到底出现了多少对白。文本介绍如果使用python程序统计一本书中的对话,角色名称,标点符号。 找到文件 首先,需要找到你要统计的小说文本文件,如下,分别是《罪与罚》、《白鹿原》两本书的文本文件。 设置统计清单 如果是统计语言描写是不需要的,但如果你需要统计小说中的角色名称,那就需要把角色名称的姓名都罗列出来,当然越多越准确,如下: 《白鹿原》中的角色名称 nameTwo=[ "白灵", "皮匠", "鹿三", "黑娃", "兔娃", "郑芒", "方升" ] nameThree=[...

  TEZNKK3IfmPf   21小时前   7   0   0 服务器javapython

说明:启动RocketMQ消费者时,报以下错误:java.lang.IllegalStateException:FailedtostartRocketMQpushconsumer. 解决:看下所有的监听器类,检查是不是有相同的消费者组名,注释掉其中一个即可;

  TEZNKK3IfmPf   21小时前   6   0   0 javaRocketMQSpringBoot

说明:elasticsearch查询操作除了使用DSL语句的方式(参考:elasticsearch查询操作(语句方式)),也可以使用API的方式。 准备 使用前需先导入依赖 <!--RestHighLevelClient依赖--> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 创...

  TEZNKK3IfmPf   21小时前   5   0   0 搜索引擎javaelasticsearch

说明:本文介绍设计模式中,创建型设计模式中的工厂模式; 飞机大战 创建型设计模式,关注于对象的创建,本文介绍的简单工厂和工厂模式同样也是。举一个游戏例子,如飞机大战游戏中,屏幕中敌人类型有坦克、飞机,会随机出现在画面的上方; 我们可以简单的将敌人抽象为一个抽象类,然后分别创建对应的实现类,如下: (敌人抽象类,注意属性的修饰符,protected,子类中需要用到) /敌人抽象类/ publicabstractclassEnemy{ /敌人的坐标/ protectedintx; /敌人的坐标/ protectedinty; /抽象方法/ publicEnemy(intx,inty){...

  TEZNKK3IfmPf   21小时前   5   0   0 设计模式javaspring

需求:在Mapper层中添加/更新数据操作,需要对应修改表字段的创建时间/最后修改时间 需求分析:可以给Mapper层中的新增/修改方法添加自定义注解,然后使用AOP的前置通知,在通知内通过反射获取到Mapper层中的方法对象,再获取到方法上的注解,再根据注解的值进行对应的操作。新增数据,设置创建时间、最后修改时间;修改数据,设置最后修改时间。 方式一 @Before("切点表达式") publicvoidbefore1(JoinPointjp){ //先拿到被增强的方法的签名对象 Signaturesignature=jp.getSignature(); //判断被增强的目...

  TEZNKK3IfmPf   21小时前   5   0   0 MyBatisIDEAjava

说明:当我们在工作中需要将数据转为XML文件、或者读取解析XML文件时,使用Hutool工具包中的XMLUtil相关方法是最容易上手的方法,本文介绍如何使用Hutool工具包来解析、生成XML文件。 开始之前,需要导入Hutool工具包的依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.6</version> </dependency> XML转Jav...

  I7JaHrFMuDsU   20小时前   8   0   0 xmljavaSpringBoot

说明:本文介绍设计模式中,创建型设计模式的抽象工厂设计模式; 工厂模式的问题 在【设计模式-2.2】创建型——简单工厂和工厂模式这篇博文中,介绍过飞机大战游戏里,使用简单工厂和工厂模式来创建坦克、飞机、Boss对象。 如果对象的类型过多,我们就需要创建更多的工厂类,并且如果我们需要对对象进行分类,如按照等级分类,坦克、飞机属于低等敌人,Boss属于高等敌人;按照战斗场景分类,坦克属于陆地,飞机属于天空,Boss可在陆地或者天空。 这就需要我们对现有的工厂类进一步抽取,抽象。 抽象工厂模式 在《秒懂设计模式》这本书中,提供了一种使用场景。如下: 作者假设某公司需要开发一款星际战争的游戏,...

  I7JaHrFMuDsU   20小时前   7   0   0 设计模式java

Dao层接口:   / @Title:IVoteTreeDao.java @Packageorg.dao @Description:TODO该方法的主要作用: @authorA18ccmsA18ccms_gmail_com @date2017-5-6下午10:38:47 @versionV1.0 / packageorg.dao; importjava.util.List; importorg.entity.VoteTree; / 项目名称:testTree 类名称:IVoteTreeDao 类描述: 创建人:MuXiongxiong 创建时间:2017-5-6下午10:3...

  I7JaHrFMuDsU   20小时前   7   0   0 javaDao

说明:本文介绍设计模式中结构型设计模式中的,适配器模式; 插头转换器 适配器模式属于结构型设计模式,设计思想体现在结构上的。以插头转换器为例,当你需要给手机充电,但是眼前只有一个三孔插座,二脚充电器无法使用三孔插座。 这时如果有一个插头转换器,可以将二孔插头转为三脚插头,就可以解决眼前问题。这个转换器扮演的就是适配器的角色。如下: (TwoPin,二脚插座接口,只提供二脚插头充电) /二脚插座/ publicinterfaceTwoPin{ /二脚充电/ publicvoidcharge(intl,intr); } (ThreePin,三脚插座接口,只提供三脚插头充电) /三脚插座/...

说明:本文介绍设计模式中行为型设计模式中的,责任链模式; 审批流程 责任链模式属于行为型设计模式,关注于对象的行为。责任链模式非常典型的案例,就是审批流程的实现。如一个报销单的审批流程,根据报销单金额大小,需要不同的职位领导审批,金额越大,审批人的职务越高,如下: 代码如下: (Staff,财务专员,审批金额不超过5000) /财务专员/ publicclassStaff{ privateStringname; publicStaff(Stringname){ this.name=name; } /审批@paramamount金额@return是否通过/ publicboole...

  TEZNKK3IfmPf   20小时前   5   0   0 设计模式java

说明:tomcat是后台服务器,安装完成后,不想配置环境变量,可以通过tomcat安装目录下bin文件夹内的startup.bat、shutdown.bat来启动和关闭tomcat; tomcat默认占用的是8080端口; 打开浏览器,输入:http://localhost:8080,可以打开tomcat服务器的默认页但有时候,我们需要修改tomcat的默认占用端口;可以通过tomcat安装目录下,conf文件夹里面的server.xml文件来修改;(如果提示没有修改文件权限,可以将server.xml文件先移动桌面上,修改完之后再拖回去替换掉原文件)重启下tomcat,试下修改端口是否成...

  TEZNKK3IfmPf   20小时前   7   0   0 服务器tomcatjava

说明:在使用RocketMQ发送消息时,出现下面这个异常(org.springframework.messging.MessgingException:sendDefaultImplcalltimeout……); 解决:修改RocketMQ中broke.conf配置,添加下面这两行配置,重启服务后再试就可以了; brokerIP1=换成RocketMQ服务器的IP autoCreateTopicEnable=true 启动时,注意使用下面的命令,带上配置文件 ./mqbroker-nlocalhost:9876-c../conf/broker.conf

  TEZNKK3IfmPf   20小时前   4   0   0 javaRocketMQ

<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"" <struts> <packagename="json_default"namespace="/"extends="json-default"> <actionname="getTree"class="org.web.TreeAction"method="getTree"> <resu...

  I7JaHrFMuDsU   20小时前   9   0   0 xmlstrutsjava