- 博客(32)
- 收藏
- 关注
原创 使用JavaMailSender发送邮件报:SMTPSendFailedException: authentication is required
起因是发提醒邮件的定时任务所在的服务器到期不用了,我给忘记有这个定时任务,报警邮件也失效了,导致该定时任务失败。后续迁移服务的时候就出现了这个问题,一切配置如常,但一直报错Failed messages: org.apache.geronimo.javamail.transport.smtp.SMTPSendFailedException: authentication is required,163 zwqz-smtp-mta-g3-3。
2023-06-02 11:29:30 1389
原创 接口联调重复传问题处理
最近项目上有个跨平台的接口会偶然出现重复传输问题。逻辑是A单据审核后生成B单据,然后将B单据调接口传另一个平台生成相应的后续单据。但现在另一个平台生成了两张后续单据,能追溯到我这边的A单据,但是不能追溯到直接上游单据B单据。一开始以为是重启服务导致的部分单据偶发这种问题,后面发现与重启时间对不上,便着手解决。由于问题是偶发的,不能复现,所以只能通过服务器日志和看代码去分析问题并解决。
2023-06-02 10:29:36 433
原创 linux shell脚本执行完第一行命令完成后,在执行第二行命令问题处理
这段时间在给tomcat做日志分割,再使用定时任务去执行shell脚本时,发现切割后的日志文件老是被置空,手动执行shell脚本却没有任何问题,后面发现是定时任务执行的时候,在脚本第一行命令没有完成即开始执行第二行命令了
2022-12-22 13:16:58 7488
原创 迁移服务器,重新配置数据库(数据库无监听,启动监听报TNS-12545、TNS-12560、TNS-00515错误)
修改相应的数据库配置,然后重启一下数据库,重启监听和数据库,数据库的重新配置就完成了
2022-07-25 11:07:18 964
原创 搭建项目环境,编译时报class lombok.javac.apt.LombokProcessor (in unnamed module @0x15961527)......
给同事搭建我们项目环境的时候,maven项目都正确引入了,但是编译器直接报了个lombok的错。
2022-07-21 15:11:45 2940
原创 xxl-job项目实战以及踩坑总结
前言 由于之前我负责的那一块业务只有一个定时任务,所以我直接用的spring带的@Scheduled负责定时任务。现在有了新的定时任务的需求,就准备采用xxl-job框架进行定时任务的管理。1、拉取xxl-job代码 xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。git地址:https://github.com/xuxueli/xxl-job/ 直接在本地使用git拉取下来,拉取下来之后,发现有
2022-05-23 10:56:51 9170 3
原创 restTemplate报错response for type [class java.lang.String] and content type [text/plain;charset=utf-8]
昨天在开发中使用restTemplate去调用postForObject时,一直报错Error while extracting response for type [class java.lang.String] and content type [text/plain;charset=utf-8];调用的代码逻辑也很简单,就是一个封装了请求头,使用x-www-form-urlencoded的post请求方式。 一开始我以为是我的请求头有问题,导致接口返回的类型不匹配。于是在请求头封装了acc
2022-03-23 10:42:25 7529
原创 加了事务控制@Transactional还是报错executing an update/delete query
昨天调试程序的时候发现,我的一个service在执行修改数据库的命令的时候报executing an update/delete query的错。一开始我也以为是没有加事务控制的原因,于是我在我的这个service上添加了@Transactional(rollbackFor = Exception.class)注解 但是我继续调试的时候依旧报executing an update/delete query,于是我在controller类里面相应的方法加上@Transactional(rollback
2022-02-08 10:46:50 3027
原创 502 Bad Gateway:nginx错误解决
今天系统测试环境突然审批任务无法打开,直接报502 Bad Gateway:nginx,初步判断nginx出现了问题。然后登录系统中间件服务器,查看nginx,并没有挂掉。 看了看请求的url为http://服务器ip/mcc-portal-react/base/index.html,然后直接去nginx的配置文件查看详细的资源请求路径,找到对应的路径之后,去对应的资源服务器查看对应的资源服务是否启动、端口是否被占用、端口是否关闭、防火墙是否限制了端口,偶尔会出现nginx配置文件里面配置的ip更换
2021-12-02 19:08:49 4896
原创 清理数据库监听日志文件,释放空间
今天早上突然发现测试环境服务全挂了,排查了一下是测试环境的数据库监听无响应。老样子,重启oracle呗!#进入对应的测试数据库服务器su - oracle#进入sqlplus控制台sqlplus /nolog#以系统管理员登录connect / as sysdba 还没等我shutdown oracle就报错了——No space left on device,看来是数据库空间满了,需要去释放一下 直接df -h查看磁盘占用情况,好家伙,直接use 100%,接下来就去找出是哪块
2021-08-19 13:33:47 449
原创 idea的git图形管理器失效,任何git操作都会卡顿在进程中
如题,在我全局安装cnpm后,并在这个项目中cnpm install,然后这个时候idea的git就失效了,pull、push、rollback都会卡在进程那里然后试了好多网上的方法都不行,只能使用命令行提交代码。第二天我把cnpm卸载,并且去除了生成的依赖包文件夹node_modules,后面发现就可以正常使用。我认为是这个git全局扫描项目文件,然后这个依赖包文件夹太大了,就一直扫描,导致进程阻塞。这里有一个小插曲,我删除node_modules时,一直无法删除,shift+delete彻底删除也
2021-01-22 11:40:38 594 1
原创 “数据类型不一致: 应为 NUMBER, 但却获得 BINARY”解决方法
昨天用JPA写报表的SQL,在执行的时候一直报 “数据类型不一致: 应为 NUMBER, 但却获得 BINARY” 的错误,一开始我还不知道Oracle的数据类型和Java对应类型有所不同,逐行检查我的SQL,查看是哪段类型出了问题。 后面检查发现是下面这行语句出现了问题。AND (ro.is_included_commission = ?35 OR ?35 IS NULL) 查了数据表中的这个is_included_commission字段类型,就是NUMBER类型,于是换了Integer
2020-12-12 14:10:10 5067 1
原创 jdk1.8数据流stream的使用
先举个例子List<RetailOrderItemDto> filterItems = dto.getRetailOrderItems().stream().filter(e->e.getMachineBarCode()!=null).collect(Collectors.toList()); 其实Stream是元素的集合,这点让Stream看起来用些类似Iterator;同时Stream也可以支持顺序和并行的对原Stream进行汇聚的操作;如上面的语句,可以分割为“创建Str
2020-12-12 11:59:46 216
原创 restTemplate请求问题
记录一下前段时间遇到的问题 在使用RestTemplate的Get去调用别人的接口的时候,一直报500.我一开始以为是我RestTemplate使用的有问题,从RestTemplate的exchange方法修改为getForEntity方法,其实效果完全一样,然后我以为是请求头的问题,修改了请求头的参数,但是get请求对请求头要求不大。所以也还是报500。后面我还把url封装成URI去使用,其实效果也是一样的。下面就是我的原始方法。 后面我意识到时我Get传过去的参数接口没有接收到,restT
2020-12-12 11:21:24 566
原创 拉代码iml文件冲突,启动服务时找不到依赖
如果你拉去代码的时候,报拉取失败,并且爆冲突的是模块下面的iml工程配置文件,如果你后面选择了合并,就是把git上面的代码和本地的合并了。在这个时候启动服务之后,可能会报错“java: 程序包xxx不存在”,即找不到依赖的包。但其实我们是有这个依赖包的,然后一开始我以为是依赖问题,于是我reload了maven依赖,然后把所有项目重新clean,install。然后再重新启动服务,依旧爆找不到依赖的错误。然后我检查了maven项目的配置,甚至重新下载了maven,并检查了pom文件,一顿操作下来,依
2020-11-17 11:21:59 2133
原创 远程连接虚拟机数据库出现:“ERROR 2003: “Can‘t connect to MySQL server on ‘localhost‘(10060)“
首先测试本机和虚拟机能否ping通ping的通,下一步ping不通,查看虚拟机的ipv4地址是否和本机的在同一网段,修改虚拟机的ipv4地址,使其和本机的在同一网段,即可ping通测试能否成功连接 不能,则修改数据库连接权限// %:表示从任何主机连接到mysql服务器mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; //刷新权限mysql>
2020-07-03 23:37:07 1359
原创 JVM个人小结
什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM的体系结构:类加载器(ClassLoade
2020-06-09 17:22:33 163
原创 注解与反射小结
注解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容, 当然它也支持自定义 Java 标注。反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;通过获得Class对形成的对象去调用它的任
2020-06-09 00:15:16 139
原创 HashMap你必须知道的那些知识点
HashMap是如何实现的? HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度依然为O(1),因为最新的Entry会插入链表头部,只需要简单改变引用链即可,而对于查找操作来讲,在定位到数组相应的结点之后,还需要遍历链表,然后通过key对象的equals方法逐一比对查找。所以,性能考虑,
2020-06-08 21:57:33 127
原创 java集合个人小结
在了解集合最初,我们必须要了解它的含义。集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。 首先,在最前面来个图,这个图十分经典(偶然间看到的),实线边框的是实现类,折线边框的是
2020-06-07 23:32:46 161
原创 Date类以及Calendar类
Date类和Calendar类均是对时间进行的一些表示。首先来看一下Date类的构造方法: Date():根据当前的默认毫秒值创建日期对象 Date(long date):根据给定的毫秒值创建日期对象System.out.println(new Date());//结果:Fri Jun 05 15:09:27 CST 2020System.out.println(new Date(1000*60*60));//结果:Thu Jan 01 09:00:00 CST 1970//从1970年凌晨
2020-06-05 15:51:51 222
原创 BigDecimal——解决float与double的精度问题
首先在最开始之前,让我们来看一段代码。System.out.println(0.09+0.01);System.out.println(1.0-0.32);System.out.println(1.015*100);System.out.println(1.301/100);你觉得答案是什么呢?0.10 , 0.68 , 101.5 , 0.01301吗?不是的答案是:0.099999999999999990.6799999999999999101.499999999999990.0
2020-06-04 23:33:40 239
原创 String类的一些需要注意的问题
一、String s = new String[“hello”]与String s = "hello"有什么区别?相信很多人都面对过这个问题,其实也不难理解。 String s = new String[“hello”]会先检查常量池当中是否有hello对象,有则返回对象,没有就创建对应的实例对象。然后在堆中 new String (“hello”),然后将对象地址赋值给s。 String s = "hello"会先到常量池中查找是否存在hello这个字符串,如果有,那么返回已经存在字符串的引用,
2020-06-04 22:37:37 149
原创 线程安全及案例
什么是线程安全? 多个线程同一时刻对同一个全局变量(同一份资源)做写操作(读操作不会涉及线程安全)时,如果结果跟我们预期的一样,我们就称之为线程安全,反之,线程不安全。 为了保证线程的安全,最简单的方法就是给相应的方法、对象等加synchronized关键字。什么是synchronized? 一般说的synchronized用来做多线程同步功能,其实synchronized只是提供多线程互斥,而对象的wait()和notify()方法才提供线程的同步功能。 synchronized是加锁
2020-05-27 19:17:06 188
原创 线程方法学习
列举了几个线程常用方法。线程停止建议线程正常停止,利用次数,不建议死循环建议使用标志位,设置一个标志位不要使用stop或者destroy等过时或JDK不建议使用的法public class Demo1 implements Runnable { //设置一个标识位 private boolean flag = true; @Override public void run() { int i = 0; while (flag
2020-05-27 18:02:00 102
原创 如何理解Lambda表达式
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。 这里就展示了Lambda是如何从其他表现形式一步步简化成为lambda表达式的,有助于对lambda表达式的理解与使用。//1、先定义一个函数式借接口(就是只有一个抽象类方法)interface ILike { void Lombd.
2020-05-27 15:25:17 688
原创 初识多线程——创建多线程的三种方式
什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。什么是进程?进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。回到今天的主
2020-05-27 15:04:26 370
原创 Response重定向理解
web资源B在收到客户端A请求后,B会通知A客户端去访问另外一个WEB资源C,这个过程即为重定向语法response.sendRedirect("/r/image");请求转发和重定向的区别相同点页面都会发生跳转不同点请求转发的时候,URL不会发生变化,状态码:307重定向的时候,URL会发生变化,状态码:302...
2020-05-27 14:53:20 210
原创 ServletContext对象理解
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,他代表了当前的web应用。共享数据 在这个servlet中的保存的数据,可以在另外一个servlet中拿到。通过ServletContext保存数据package pizssn.servlet;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http
2020-05-27 14:51:03 138
原创 Hello,Servlet——第一个servlet程序
首先我们要先了解什么是servlet?狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 简单点说就是,servlet是Sun公司开发动态web的一门技术,Sun公司在这些API中提供了一个接口叫做:servlet。那么,
2020-05-27 14:11:32 4270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人