quartz定时调度任务持久化到数据库后立即执行报错,更新任务报错引出的任务自动删除的相关问题

  |   0 评论   |   0 浏览

最近修改项目BUG,定时任务这一块有很多的BUG,改了很久,记录一下相关BUG 问题1 问题场景: 新建一个定时任务,设置定时任务执行时间:2019-06-26 18:00:00 (即只在这个时间点执行一次,然后就再也不执行了) 在到达执行时间之前,进行更新和立即执行都不存在任何问题。 在到达执行时间之后,进行更新和立即执行都报错 错误信息: org.quartz.JobPersistenceException: Couldn’t store trigger: The job (DEFAULT.task-etl-19) referenced by the trigger does not exist. 问题具体原因查找过程: 创建一个周期任务,设置任务每分钟执行一次。发现不会出现这种情况。 查看任务持久化物理表,发现定时任务(只执行一次的定时任务),在执行后会自动删除。 进行代码断点,查看在何处进行的删除,没找到。 进行各种任务属性对比初步推断是quartz框架自身的一种设计,如果没有下次执行时间的任务,会自动进行删除。 在网上查找很久,找到了一篇文章,Quartz Sche....

设计模式学习笔记之原型模式

  |   0 评论   |   0 浏览

前言 这是一篇学习笔记,内容很多是来源于网上的资料,按照自己学习情况进行的总结。 我的个人博客:海加尔金鹰 什么是原型模式 原型模式:通过已有的实例对象进行复制来创建新的相同对象。 特点: 1 必须已经有一个实例对象存在。 2 通过原型模式创建的对象避免了构造器的约束,即不会调用构造器。 3 通过原型模式创建的对象和原始的对象属性值是一样的。 原型模式的实现 核心结构  (1)Prototype(抽象原型类):声明克隆方法的接口,是所有具体原型类的公共父类,它可是抽象类也可以是接口,甚至可以是具体实现类。 (2)ConcretePrototype(具体原型类):它实现抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。 (3)Client(客户端):在客户类中,让一个原型对象克隆自身从而创建一个新的对象。[^1] 核心代码 1 实现Cloneable接口 2 clone()方法 在java当中Object类种就有clone()方法 浅克隆和深克隆 浅克隆:当原型对象被复制时,只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量并没有复制。 深克隆:除了对象....

设计模式学习笔记之单例模式

  |   0 评论   |   0 浏览

前言 这是一篇学习笔记,内容很多是来源于网上的资料,按照自己学习进行的总结。 我的个人博客:海加尔金鹰 什么是单例模式 定义:一个类在系统当中只存在一个实例,每次获取到这个类的实例都是同一个。主要用于处理系统当中某个频繁创建和摧毁的类。 特点 : 单例类只有一个实例对象 该单例对象必须由单例类自行创建 单例类对外提供一个访问该单例的全局访问点。 单例模式的实现 单例模式的核心代码:构造函数私有化,提供对外访问的方式。 单例模式的实现方式有很多种,我这里就只记录推荐使用的方式: 枚举 public enum Singleton { INSTANCE; } 这种方式是Effective Java作者Josh Bloch 提倡的方式,它不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象。^1 这个我感觉是用来面试装逼的,记得以前和朋友们聊面试的时候,开玩笑的说:面试不要慌,先写个单例模式在说。至于反序列化重新创建对象的问题,目前没有遇见过。 讲真的如果不是专门学习单例模式的话,我都不知道有这种写法。 饿汉式 public class Singleton { priv....

转载: Java中的24种设计模式与7大原则

  |   0 评论   |   0 浏览

七大设计原则 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:一个类负责一项职责. 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则. 依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程. 接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少. 迪米特法则【LOW OF DEMETER】:低耦合,高内聚. 开闭原则【OPEN CLOSE PRINCIPLE】:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭,为程序添加功能最好通过增加实现类而不是修改原有代码 组合/聚合复用原则【Composition/Aggregation Reuse Principle(CARP) 】:尽量使用组合,少使用继承的关系来达到复用的原则 二十四种设计模式 创建型模式 抽象工厂....

本地启动dubbo服务端和消费端,调用不到的问题

  |   0 评论   |   0 浏览

在本地通过IDEA,用同一个tomcat分别在8088和8089端口启动了dubbo服务端和消费端,结果发现在接口调用的时候,调用不到,并且在项目启动时还报错:dubbo Can not lock the registry cache file以及其他的各种错误。 最后解决方式:在项目启动路径上加上项目路劲, 原来两个项目的启动路径分别是:localhost:8088 localhost:8089 修改后变成::localhost:8088 /xx localhost:8089/yy 就可以没有任何的问题了。 问题原因:猜测可能是由于使用的同一个tomcat启动两个项目,然后项目路劲相同的原因。

springboot拦截器自动注入为null解决办法和具体原因分析

  |   0 评论   |   0 浏览

最近在使用springboot拦截器的过程当中,发现无法注入service,提示NPE错误 问题相关代码 springboot拦截器注册方式: @Configuration public class MyWebMvcConfigurer implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SessionInterceptor()).excludePathPatterns("/static/").addPathPatterns("/"); } } 拦截器代码: public class SessionInterceptor implements HandlerInterceptor { @Autowired private IUserService userService; @Override public boolean preHandle(HttpServletReques....

由Mybatis的时间类型计算报错引出的jdbcType

  |   0 评论   |   0 浏览

问题说明 最近在工作中有一个业务需求:传入一个时间,和数据库某个时间字段进行运算,返回相差的天数。很简单的一个需求,之前sql方面比较菜,都是现将数据查询出来然后在进行计算,刚好最近写了很多的sql,有所成长,知道可以通过ceil函数直接一条sql就能查询出我想要的数据,不需要查询出来之后在进行运算。 oracle 两个时间相减 出现的错误 sql和代码都写好之后,测试报错: ==ORA-00932: 数据类型不一致== 然后检查数据库字段类型,检查参数类型,都是Date类型。这个时候有点蒙圈 问题原因 最后一想,既然类型一致,那么在传参的时候传的是什么类型呢?查看mybatis sql日志。sql日志第二行,参数后面的类型显示为:timestamp。就想到了在传参的时候就指定参数类型,也就是jdbcType。设置了jdbcType=DATE之后问题就解决了。 下面是在网上找的jdbcType关系说明 JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDec....

五月再见,六月你好

  |   0 评论   |   0 浏览

不知不觉就来到了6月,写下五月的总结,记下对六月的期许 五月再见 * 关于工作 对于写出来的代码一定要规范,团队协作一定要多沟通。 月初的时候,接触了一个新项目,然后3个人,每个人负责两个模块,从前端到后台。 月末的时候,进行BUG的修改,有一个人离职了,然后他的BUG分给了我,改BUG的时候,回过头来看自己的代码和别人的代码,后端的代码基本上能看懂,但是这个项目的DAO层就很难看了,用的是mybatis_plu.。离职同事的sql都是通过wapper进行生成的,我的是通过注解或者XML。然后最难看的是前端,他的我看不懂,我的看着像坨翔。10个BUG8个前端最终看的眼花缭乱的,改得也是难受的。 关于生活 也不知道五月到底怎么了,成都五月的天气变幻莫测,差点感冒哦。 忙着工作,也没怎么好好生活了。 六月你好 曾今自己过六一,如今看人过六一,往后给人过六一。 坚持锻炼 不过六一过端午 多出去走走

学习日志——SQL几种表连接和连接效率

  |   0 评论   |   0 浏览

学习原因 最近在进行一个数据展示的项目,问题是公司目前的情况是采集到了数据,将数据存入到了一个数据中心,然后就没有任何操作了。也就是说要从原始数据当中查询数据进行数据展示,这是一个很难受的过程,但是又是一个要必然经历的过程,因为原始数据来了之后,必然要通过实际的业务来检验数据的正确性,有效性和质量,然后就对应的业务数据进行清洗,提取存入业务库,方便以后的操作。然后后端代码基本上没怎么写,全部都思考查询sql应该怎么写了。 表连接 交叉连接查询(cross join) 多个表联合查询,这种方式如果不添加where条件的话会产生笛卡儿积 但是添加了where条件的话又相当于inner join 内连接 SELECT * FROM 表A,表B where A.xx=B.xx 内连接(inner join ) 这种就相当于上面交叉连接添加了where条件。同时可以省略掉inner ,只写join。 内连接返回数据是条件相等的数据。也就是交集 SELECT * FROM 表A inner join 表B on A.xx=B.xx 外连接 (outer join) 外连接分为 left joi....

varchar(20)和varchar(255)的区别,数据库表字段长度设计学习

  |   0 评论   |   0 浏览

学习原因 在开发当中,经常看见有些字段长度是varchar(20)或者varchar(32),但是在自己建表的时候,navicat基本上都是默认的varchar(255)的长度。 所以带着疑问来学习一下数据库表字段长度的设计。 长度限制和字段选择 查阅了资料后,发现了一些关于数据库的长度限制及表设计的相关资料 相关资料: 各个数据库表名和字段名长度限制 MySQL中各种数据类型的长度及在开发中如何选择 MySql数据库表字段命名及设计规范 数据库中存储日期的字段类型到底应该用varchar还是datetime 为什么很多公司要求 mysql 表主键 id 必须是 long 型? 为什么mysql的varchar字符长度会被经常性的设置成255 在仔细阅读上述的相关资料后,算是解决了很多的疑问,也学习到了不少数据库书本上难以学习到的经验。 总的来说就是数据库表名和字段长度是有一个限制的,不是越大就好,在设计创建表字段时也要考虑下字段长度问题,根据一些实际情况选择表当中的字段类型和手动设置一下字段的长度,可以对数据的维护,查询带来效率和性能上的提升。 验证varchar(20)和var....

四月再见,五月你好

  |   0 评论   |   0 浏览

不知不觉四月将过,记下四月的生活和感受,写下五月的理想 四月再见 关于新工作 从1号到30号,入职新公司刚好一个月了,差不多965的工作时间,不过一天8个小时的工作时间,至少有7个小时是在工作。有点压迫感,但觉得还是很合适的,毕竟工作强度不能太大,也不能过于放松。 工作环境还是可以的,就是工作条件太难受了,公司配置的笔记本电脑,还没有我16年买的5千块的笔记本好用。 公司周围的饭馆也基本上吃了个遍。每到饭点,为午饭发愁哎。 关于996 996.icu这个网站火了,996工作制这个话题也火了。自己也认真思考过这个话题,也和朋友谈论过这个话题,也在知乎,csdn等网站看过很多的评论。 996对于员工来说,不是福报,是剥削,因为很多时候,员工的付出和收获是不成正比的。但是对于老板来说,是奋斗,是梦想实现的必经之路,作为一名老板,他付出多少和他收获多少绝大多数情况下都是成正比的。 关于生活 技术博客没怎么写了,充实的工作让我下班之后更想放松一下,看看电视,玩玩游戏。 说好的锻炼只能说比三月份锻炼的次数要多一些。 成都的天气是真的热起来了,但是属于那种不开空调觉得热,开了空调....

记录一个美好的一周。

  |   0 评论   |   0 浏览

这周发生了很多的事情,多数对我来说都是比较好的事情。 星期一 爷爷从重症监护室转到了普通病房,估计下周一就可以出院了。 星期二 正式从原来公司离职了,还是有点不舍,公司的同事还是非常好的。 星期三 面试了联创思博和亿阳信通两家公司。和第一家公司的面试官聊了两个多小时,人还是非常好的,当时也给了offer,薪酬达不到预期,加班是算绩效,然后年终奖看绩效。技术上面用的是JavaRCP方面的。 星期四 本来打算早上就回老家陪爷爷的,结果,早上亿阳信通通知二面,下午万维技术有限公司通知面试,面试了。万维技术公司在天府二街,久违的一号线,久违的软件园。说句实话,习惯了7号线,再去坐1号线,感受到1号线的拥挤,很不习惯。晚上7点,回到老家南充。在医院见到爷爷,没有给爷爷说离职的事情。打算拿到一个可以的offer再说。 星期五 拿到了亿阳信通的offer,薪水勉强达到预期,办理入职程序都要一周,都要预计4月1号入职。 接下来的打算 打算陪着爷爷出院,准备下入职手续,然后在面试几家公司,看有没有更高的吧

Redis学习日志之SpringBoot2.0+整合Redis(基于Redission)

  |   0 评论   |   0 浏览

海加尔金鹰 ———— 如野草般一岁一枯荣 昨天完成了redis的简单安装Redis学习日志之Linux下的安装,今天就在项目当中简单整合使用一下 整合环境说明 JDK1.8版本 idea开发工具 springboot2.1.0版本 为什么选择Redission? springboot2.0之前的版本默认支持的是Jedis 但是在2.0后换成了Lettuce。 java连接redis最多的就是Jedis,Redisson,Lettuce这三种方式 简单说明介绍:Redis的三个框架:Jedis,Redisson,Lettuce 最后选择了Redission,因为Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 在POM当中引入对应JAR 根据Redission官方整合文档进行引入和使用: <!-- redisson --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring....

Redis学习日志之第一天

  |   0 评论   |   0 浏览

之前开发当中基本使用的是MySQL数据库,最近打算学习一下redis数据库,在此将自己学习的过程记录下来。 redis简单说明 redis的官方网站:https://redis.io/ redis的前世今生:https://blog.csdn.net/echizao1839/article/details/80883312 redis的简单说明:一个开源、支持网络、基于内存亦可持久化的日志型、Key-Value的NoSql数据库。 redis在linux下的安装 安装基于阿里云服务器Centos7.0版本。 第一步:使用putty远程连接工具进入服务器(使用其他工具也行,反正就是进入到自己的阿里云服务器上) 第二步:依次输入以下命令,就安装完毕了。这是官网网站提供的安装教程,如果熟悉linux命令,可以自己在make命令后面添加参数,安装到指定位置。官网安装教程。。。。在网页最下面 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar xzf redis-5.0.3.tar.gz cd redis-5.0.3 mak....

JAVA面试题总结(不断添加整理当中。。。。。。)

  |   0 评论   |   0 浏览

最近要找工作了,复习总结一下面试题,总有些问题一直在问,总有些问题慢慢消失了,也总有些问题第一次遇到。 JAVA 基础篇 有了基本类型为什么还要包装类? "=="和equals方法究竟有什么区别? 两个对象的hashCode()相等,则equals()也一定为true? String,StringBuffer,StringBuilder的区别和联系 final, finally, finalize的区别 Java抽象类与接口的区别 Java集合篇 List和Set,map的区别 hashMap的实现原理 List集合元素的正确删除方式 JavaWeb篇 Session和Cookie区别 拦截器和过滤器的区别 Servlet的生命周期 Spring/SpringMVC/SpringBoot 为什么要使用spring spring常用的三种注入方式 spring使用了那些设计模式 springMVC执行流程 springboot面试题 数据库篇 drop,delete与truncate的区别 inn....

Nginx学习日志(三)配置SSL证书(网站由http转成https)

  |   0 评论   |   0 浏览

Nginx学习日志 Nginx学习日志(一)简单入门 Nginx学习日志(二)通过反向代理将不同域名映射到不同的端口 发现现在很多网站都变成了https,并且在浏览器当中如果是http类型的网站,还会提示网站不安全,所以打算将自己的博客换成https类型。 记录一下HTTP升级到HTTPS的过程。 网上看着很简单,但实际上还是遇到了不少的问题,不过还好,最终都一一解决了 什么是SSL证书? SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。 参考资料: https://yq.aliyun.com/articles/602965 https://www.sohu.com/a/225956682_596521 如何获取免费的SSL证书? 11种免费获取SSL证书的方式: https://www.toolmao.com/get-free-ssl (一篇非常详细的文章) 由于我是使用的阿里云服务器,所以是通过阿里云当中获取的免费SSL证书。 nginx里面如何配置SSL证书? 由于我在阿里云服务器上的网站使用了Nginx,这里主....

一点小感触

  |   0 评论   |   0 浏览

做火车回家,有个老奶奶没买到坐票,列车长路过看到了,给老奶奶找了一个空位让老奶奶坐下,然后说有人问的话就说是我让坐的。 在这个信息爆炸的互联网时代,看多了网上各种不好言论和信息,莫名的有点小感触。 不是社会变坏了,而是好事不出门,坏事传千里。 记于2019年2月16日。D5184次列车

成长就是不停的翻山越岭

  |   0 评论   |   0 浏览

2015年11月底大四课程学完出来实习,到如今回首过往,是艰辛,是苦难,也是成长。 2016年 这一年,没钱,没技术,和室友挤在一个10多平的小房间,过年也没有回家(因为啥都没有如何回家)总之就是穷开心。 这一年,浑浑噩噩过日子,一片迷茫不知身在何处。 2017年 这一年,开始一点一点的成长。但依旧没钱,过年最终还是回家了(因为有钱没钱回家过年)。 这一年,依旧迷茫,但路灯已亮。 2018年 这一年,终于不再是月光族。 这一年,不断在成长,也会有所迷茫,但信念的种子已然种下。 这一年,收获爱情。 2019年 生活还在继续,人生还在前行。。。。。。。 感受 感受到了大城市的繁华,见识到了小城镇的落后,但是我依旧想归家。 感受到了同龄人的差距,发觉自己除了努力提升自己,别无它法。 感受到了肩膀上的责任,是压力也是动力。 ------- 记于2019/02/12

springboot整合websocket技术

  |   0 评论   |   0 浏览

什么是Webscoket 简单来说就是一个基于TCP的持久化的网络通信协议。主要作用就是:服务端可以主动推送信息给客户端,不需要客户端重复的向服务端发请求查询。 具体详细说明:https://www.zhihu.com/question/20215561 (PS:写的是真的简单易懂) springboot整合Webscoket 实现websocket有多种方式:最简单的H5, sockjs以及使用STOMP协议 开发环境 JDK版本1.8 springboot版本2.1.0 开发工具:IDEA MVAEN 基于H5的websocket实现 第一步 引入依赖 在springboot2.0版本之后,官方添加了Webscoket的依赖,因此只需要在pom当中引入 <!-- 引入websocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId&....

友链交换

  |   0 评论   |   0 浏览

欢迎各位大佬进行友链交换 注意事项: ①贵站文章符合学习、技术、分享等要求; ②贵站需要和海加尔金鹰个人博客做友情链接,请先在贵站做好海加尔金鹰个人博客的链接 本站内容如下: 博客名:海加尔金鹰 博客地址:https://www.hjljy.cn 博客图片地址:https://www.hjljy.cn/favicon.png 博客介绍:如野草般一岁一枯荣 联系方式: QQ号:921244819 邮箱:hjljy@outlook.com