笔记
文章平均质量分 65
沉泽·
心中有阳,眼里有光。
展开
-
使用流水线部署了项目却没有打印日志
工作中遇到一个问题,使用流水线发布了项目后,项目程序功能正常,但是日志却没打印到指定的日志文件上。该项目是部署到虚拟机上的,大致部署流程是流水线发布后执行项目里的启动脚本。原创 2023-06-07 17:50:00 · 986 阅读 · 0 评论 -
SQL中case when用法详解及使用案例
Case具有两种格式。简单Case函数和Case搜索函数。原创 2023-03-23 16:25:01 · 14066 阅读 · 0 评论 -
BindingException:Invalid bound statement (not found)异常
本文的mybatis是与springboot整合时出现的异常,若使用的不是基于springboot,解决思路也大体一样的。但在这之前,我们先要知道整合mybatis的三个重要的工作,如此才能排查,且往下看。我们打开pom文件如下:这部分代码的作用是指定需要编译到taget目录下的资源文件。我们的程序运行,都是执行编译好的taget目录下的内容,若taget里找不到xml文件资源就会报错Invalid bound statement (not found)。每个人的项目配置都可能有些区别,但在这里我们只需要原创 2023-03-18 19:59:16 · 9879 阅读 · 0 评论 -
JAVA多线程基础篇-join方法的使用
join()是Thread类中的一个方法,它的作用是将当前线程挂起,等待其他线程结束后再执行当前线程,即当前线程等待另一个调用join()方法的线程执行结束后再往下执行。通常用于在main主线程内,等待其它调用join()方法的线程执行结束再继续执行main主线程。本文将探索join方法的使用方式和使用原理。转载 2023-02-26 15:27:27 · 608 阅读 · 0 评论 -
Java虚拟机对synchronized的优化
关于synchronized / Lock:1.JDK 1.5之前,Java通过synchronized关键字来实现锁的功能2.JDK 1.5,并发包中新增了Lock接口来实现锁功能3.Lock同步锁是基于Java实现的,而synchronized是基于底层操作系统的Mutex Lock实现的4.为了提升性能,在JDK 1.6引入偏向锁、轻量级锁、重量级锁,用来减少锁竞争带来的上下文切换5.借助JDK 1.6新增的Java对象头,实现了锁升级功能。转载 2023-02-26 15:20:11 · 169 阅读 · 0 评论 -
BigDecimal的介绍及使用场景
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。转载 2023-02-21 16:15:19 · 1298 阅读 · 0 评论 -
什么是内部类?内部类的种类?内部类的作用?
定义: 将一个类定义在一个类或者一个方法里面,这样的类称着内部类。转载 2023-02-21 15:28:27 · 78 阅读 · 0 评论 -
equals和hashCode之间的关系
讲道理,单从方法的定义上来看,equals() 和 hashCode() 这两个方法之间没有任何亲戚关系,远房都够不上资格。但往深处扒拉,它们之间还真的是有千丝万缕的关系。到底是什么关系呢?如果大家伙比较感兴趣的话,就请随我来,打怪进阶喽!转载 2023-02-21 15:07:57 · 115 阅读 · 0 评论 -
Java创建对象的5种方式
可以随意的调用构造器。转载 2023-02-21 14:52:50 · 727 阅读 · 0 评论 -
Date、SimpleDateFormat和LocalDate、LocalTime、LocalDateTime、ZonedDateTime、DateTimeFormatter的使用和区别
java1.8引入的新特性中,其中就含有对日期时间的处理,下面我们一起学习和了解。原创 2023-02-18 18:01:49 · 2858 阅读 · 0 评论 -
静态代码块,构造代码块(普通代码块),局部代码块,构造函数的执行顺序
【代码】静态代码块,构造代码块(普通代码块),局部代码块,构造函数的执行顺序。转载 2023-02-16 16:45:41 · 76 阅读 · 0 评论 -
通过java代码实现对json字符串的格式美化(完整版)
之前转载过一篇文章,也是有关于通过java代码实现对json字符串的格式美化,但是那篇文章的实现还不够完善,比如其对字符串中出现特殊字符时,会出现转换失败。因此博主本人也是闲暇时在那份代码的基础上做了完善和补充。好,废话不多说,上链接上代码。本文参考于 https://blog.csdn.net/ardo_pass/article/details/78729978 ,并在其基础上做了完善,且往下看。三、执行结果四、与Notepad的json格式化工具比较Notepad工具若是安装了json格式化工原创 2022-12-03 14:38:07 · 7006 阅读 · 1 评论 -
DB2查看索引是否生效
sql分析语语法: db2expln -d 数据库名 -t -d -q “目标sql”示例:db2expln -d ac_db -t -d -q “select * from tbl_qua_instance_0 where user_id = ‘123456’”执行结果:看到执行结果最后一行,就是代表用上了索引。再改下sql,把查询条件去掉:db2expln -d ac_db -t -d -q “select * from tbl_qua_instance_0”得到结果如下:最后一行没原创 2022-11-30 10:51:40 · 1985 阅读 · 0 评论 -
根据模板快速生成代码
【代码】根据模板快速生成代码。原创 2022-10-18 22:48:26 · 741 阅读 · 0 评论 -
动态判断某个对象是否继承或实现了某个类或接口
平时很少用到,但本人在工作中偶然写过一个日志框架用到了。应用场景大致是:传入了一个Object对象,通过反射遍历其中的每个字段,再判断这些字段是否含有集合类型的字段,并且这些集合类型字段的泛型必须为指定类型,找到这些字段后,并对其进行特殊处理。为了寻找这些字段就用到了下面的那个方法了。因此就记录一下。import java.io.Serializable;import java.util.ArrayList;import java.util.List;import java.util.Map;原创 2022-05-27 09:49:00 · 1082 阅读 · 0 评论 -
spring Aop切面的环绕通知时,如何防止切面异常影响主业务流程执行
一、前言我们在做切面编程时,可能会使用到的环绕通知@Around。示例代码如下:@Aspect@Componentpublic class MyAspect { @Around("execution(public int com.heygo.spring.aop.CalcServiceImpl.*(..))") public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {原创 2022-05-26 14:58:38 · 6825 阅读 · 0 评论 -
ThreadLocal全面解析
学习目标了解ThreadLocal的介绍掌握ThreadLocal的运用场景了解ThreadLocal的内部结构了解ThreadLocal的核心方法源码了解ThreadLocalMap的源码一、ThreadLocal介绍1.1 官方介绍 从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型转载 2022-03-02 11:24:28 · 812 阅读 · 1 评论 -
对项目中所有定时任务进行错误日志收集
工作中遇到一个任务,对定时任务里开启的线程池中执行的异步任务进行错误日志监控,保证定时任务能正常运行,且出先异常时,运维人员能快速通过界面找到出现问题的任务。上述代码,主要列出了逻辑流程,具体业务代码省略,同样这个类的定时任务也有很多,这里只列出一个,便于演示。代码解析:一个定时任务,有一个for循环,循环多次向线程池提交异步任务。原创 2022-02-26 14:30:03 · 635 阅读 · 0 评论 -
比较两个List是否相等
1、直接使用equals()比较众所周知,两个列表具有完全相同的元素并且具有完全相同的顺序时,它们是相等的。因此, 如果我们业务要求两个list顺序一致,可以使用equals()方法进行相等性检查:@Testpublic void equalityCheckOfTwoLists() { List<Integer> list1 = Arrays.asList(1, 2, 3); List<Integer> list2 = Arrays.asList(1, 2转载 2022-02-12 11:35:17 · 29135 阅读 · 1 评论 -
List<Object>强制类型转换为指定类型的List集合
已修正一、案例1将List<Object>强制类型转换为指定类型的List集合。先看下面一个例子:public class Test { public static void main(String[] args) { List<Object> list = getList(); //List<User> userList = (List<User>)list;//编译失败 //方式一: for (O原创 2022-01-07 21:47:15 · 17340 阅读 · 1 评论 -
fastjson-对象转json字符串时使用@JSONType注解指定对象字段的顺序
一、简单例子依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency>源码:package com.junjie.tes原创 2021-12-28 14:38:39 · 5538 阅读 · 1 评论 -
什么叫套接字
名词解释:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。如何标示一个主机上的特定进程呢?使用IP:PORT,即IP地址和端口号,一般地说,每个进行网络通信的应用程序都要占用主机上的一个端口。举个例子,使用TCP进行通信,需要建立连接,比如主机A上的进程a和主机B上的进程b进行通信,转载 2021-12-23 17:00:58 · 1197 阅读 · 0 评论 -
java实现对json字符串格式美化
代码:package com.json; /** * 该类提供格式化JSON字符串的方法。 * 该类的方法formatJson将JSON字符串格式化,方便查看JSON数据。 * <p>例如: * </p><p>JSON字符串:["yht","xzj","zwy"] * </p><p>格式化为: * </p><p>[ * </p><p> "yht", * </p>转载 2021-12-23 10:32:51 · 1585 阅读 · 0 评论 -
fastjson:java对象转string时,指定只要某些属性(包含),或者不要某些属性(排除),可避免不需要的字段过多,或者特殊属性比如MultipartFile造成的转字符串出问题
一、简述有的java对象字段很多,但是我们需要使用的可能只有其中一两个,或者是对象中有特殊属性,不方便转成string字符串,因此需要指定只需要某几个属性,或者指定排除某几个属性,使用fastJson实现,完全没有问题,二、各种情况先看看效果,效果好或者有您需要的,您在往下看:user对象:User{id=1, username=‘古力娜扎’, password=’’, mobile=‘null’, country=‘中国’, city=‘北京’}————————————————————————转载 2021-12-23 10:19:40 · 2019 阅读 · 0 评论 -
DevOps | GitLab Webhook插件测试触发Jenkins自动构建报错 Hook executed successfully but returned HTTP 403
一、问题当配置好Webhook url时候执行push test的时候报错:Hook executed successfully but returned HTTP 403<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 403 No valid crumb was included in the request<转载 2021-12-10 22:50:10 · 1721 阅读 · 0 评论 -
Docker 容器配置环境变量重启后失效问题解决
Docker 容器配置的环境变量重启时失效问题解决配置环境在/etc/profile 配置环境变量JAVA_HOME=/opt/java/jdk-15.0.2export PATH=$JAVA_HOME/bin:$PATH然后在/etc/bashrc 中增加环境刷新命令source /etc/profile可以保证重启时环境变量依旧有效解决思路容器加载时会先从/root/.bashrc 中加载环境变量,而/root/.bashrc 实际调用的是/etc/bashrc# .bash转载 2021-12-09 11:34:47 · 3278 阅读 · 0 评论 -
feign服务端出异常客户端处理的方法
一、简介在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hystrix.enable需要设置为false,而当不开熔断时,我们也有几种方法把拿到服务端的异常信息,下面总结一下。try…catch方法feign异常拦截器二、try…catch方法这个方法比较直观,也最好理解,但业务层会有很多try…catch这种代码,所以不是很推荐。注意:虽然服务转载 2021-12-08 20:00:24 · 5701 阅读 · 2 评论 -
Oracle分区介绍
1.什么是分区分区的实质是把一张大表的数据按照某种规则使用多张子表来存储。然后这多张子表使用统一的表名对外提供服务,子表实际对用户不可见。类似于在多张子表上建立一个视图,然后用户直接使用该视图来访问数据。2.为什么要使用分区当一张表的数据量到达上亿行的时候,表的性能会严重降低,这个时候就需要用到分区了,通过划分成多个小表,并在每个小表上建立本地索引可以大大缩小索引数据文件的大小,从而更快的定位到目标数据来提升访问性能。分区除了可以用来提升访问性能外,还因为可以指定分区所使用的表空间,.转载 2021-09-17 16:27:10 · 3597 阅读 · 0 评论 -
常用正则表达式
一、校验数字的表达式 1. 数字:^[0-9]*$ 2. n位的数字:^\d{n}$ 3. 至少n位的数字:^\d{n,}$ 4. m-n位的数字:^\d{m,n}$ 5. 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7. 带1-2位小数的正数或负数:^(\-)?\d+(\....转载 2021-07-28 15:56:40 · 185 阅读 · 0 评论 -
Java实现通过正则表达式判断一个字符串是否含有指定字符
场景判断一个字符串是否含有指定字符。如标题,这里只介绍正则表达式的实现,因为正则表达式相对于String的api实现,效率上是高一些的,至于其他实现方式这里不做介绍。对正则表达式不熟悉的朋友可以参考这篇博文:正则表达式详解示例场景:校验一个字符串是否含有指定的字符,包含返回true,反之false分析:看这句话,正面思考,我们很难用java的正则表达式实现。咱们可以换个思维实现,校验一个不含指定的字符的字符串,满足返回true,反之false。这样实现起来就轻松了。(Java实现通过正则表达式判原创 2021-08-11 10:56:02 · 17589 阅读 · 0 评论 -
IO流详解
IO流详解文章目录IO流详解IO流的分类类图字节IO流案例ByteArrayOutputStream和ByteArrayInputStreamFileOutputStream和FileInputStreamZipOutputStream和ZipInputStreamBufferedInputStream和BufferedInputStreamDataInputStream和DataOutputStreamObjectInputStream和ObjectOutputStreamPipedInputStrea转载 2021-04-23 10:54:12 · 179 阅读 · 0 评论 -
IN和EXISTS的区别和使用
SQL中IN和EXISTS用法的区别结论in()适合子表比主表数据小的情况exists()适合子表比主表数据大的情况当主表数据与子表数据一样大时,in与exists效率差不多,可任选一个使用.使用IN的情况select * from Awhere id in(select id from B)以上查询A为主表,B为子表;使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍原创 2021-07-14 16:23:49 · 31135 阅读 · 5 评论 -
什么是乐观锁,什么是悲观锁
什么是乐观锁,什么是悲观锁一、并发控制当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。常说的并发控制,一般都和数据库管理系统(DBMS)有关。在 DBMS 中并发控制的任务,是确保多个事务同时增删改查同一数据时,不破坏事务的隔离性、一致性和数据库转载 2021-07-16 09:54:10 · 356 阅读 · 0 评论 -
数据库事务的四大特性以及事务的隔离级别
数据库事务的四大特性以及事务的隔离级别四大特性本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换转载 2021-07-22 10:40:19 · 88 阅读 · 0 评论 -
Oracle获取当前系统时间
用法to_char(sysdate,'yyyy-MM-dd HH24:mi:ss)把时间变成字符串用法to_date(‘2015-08-12 15:53:37’,'yyyy-MM-dd HH24:mi:ss)把字符串变成时间用法to_number把字符串变成数字用法trunc负责截取数字或者字符串select sysdate from dual获取当前的时间 2015/08/12 15:53:37select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss) fro转载 2021-07-23 16:06:17 · 4958 阅读 · 0 评论 -
MySQL 获得当前日期时间 函数
MySQL 获得当前日期时间 函数获得当前日期+时间(date + time)函数:now()复制代码mysql> select now();±--------------------+| now() |±--------------------+| 2008-08-08 22:20:46 |±--------------------+复制代码获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟 now() 类似,不同之处在于:n转载 2021-07-23 16:24:48 · 411 阅读 · 0 评论 -
JAVA对象与JSON转换的各种方法-fastjson
fastjson maven<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version></depende转载 2021-10-21 15:10:20 · 539 阅读 · 0 评论 -
同一个迭代器一只能迭代一次
一、简单说明同一个迭代器只能迭代一次,这里我不细说,可以参考这个:https://blog.csdn.net/weixin_46351306/article/details/113705527二、功能要求解析yaml文件,并能实现对yaml文件内容进行更改。三、实现今天和同事看了一个问题,大概问题如下:2.1 引入依赖<dependency> <groupId>org.yaml</groupId> <artifactId>原创 2021-12-01 17:56:45 · 2105 阅读 · 0 评论 -
在线程池中限制多次重复操作数据库
一、业务背景工作中遇到了一个需求如下:1、给项目中的所有定时任务添加自检监控,确保能及时知道定时任务是否成功执行2、有写定时任务中的方法并没有业务操作,只是通过线程池提交任务方式,开启多个子线程去执行任务,这些子线程的执行情况也需要记录。3、多个执行任务的子线程中,若有其中一个失败,则整个监控结果定义为失败;全部成功,则整个监控结果定义为成功。4、含有子线程失败时,只需要记录其中一个子线程的失败信息即可(因为错误信息可能都一样);所有子线程成功时,则说明定时任务成功,但得确保设置成功结果只操作了数原创 2021-11-23 20:08:11 · 1188 阅读 · 0 评论 -
java的深拷贝和浅拷贝
前言Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。举例说明:比如,对象A和对象B都属于类S,具有属性a和b。那么对对象A进行拷贝操作赋值给对象B就是:B.a=A.a; B.b=A.b;在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用现有对象的部分或全部 数据。Java中的对象拷贝主要分为:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。先介绍一点铺垫知识:Java中的数据类型分为基本数据类型和转载 2021-08-19 16:22:15 · 226 阅读 · 0 评论