自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张志文的博客

一个令人掉头发的博客

  • 博客(36)
  • 收藏
  • 关注

原创 Non-static method ‘*‘ cannot be referenced from a static ..和@Resource注入到static抛出RuntimeExeption null

昨天开发遇到一个问题,场景是这样的,因为问题已经解决了,这里我就将代码还原,然后还原一下问题:我的原意是想在一个factory类中注入一个bean,MasterRpcServiceImpl已经交给容器管理了,且name就是masterRpcService,所以这么写看似是没问题的,可是呢?因为是factory类,它里面的方法大部分都是静态的,我要使用的方法刚好就是,这样就会导致什么问题呢?编译不过去这是最基本的问题,static方法中只能使用静态的变量,所以我就将masterRpcService变成

2021-10-22 10:14:33 703

原创 the content of element type “typeAliases(或者别的标签名)“ must match(“typeAlias*“,“package.*“(或者别的标签))

这 是因为 xml文件中的属性是有顺序要求的,而这些顺序是写在dtd的约束文件中的,可以在映射文件的约束头上面找到:,只需要我们按照他提示的顺序调整位置即可:

2021-09-25 01:03:13 824

原创 IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )

初次使用IDEA,创建一个maven工程,发现在目录结构中产生了两个不一样的东西:.iml 文件和 .idea 文件夹。非常好奇,所以立刻上网查找了这两个东西的信息。iml是 intellij idea的工程配置文件,里面是当前 project 的一些配置信息。.Idea 存放项目的配置信息,包括历史记录,版本控制信息等。其实可以不用理它。如果觉得看着麻烦的话,我们可以配置隐藏。点击 file -> Settings -> File types,在右下角的 Ignore files an

2021-09-15 16:18:20 450

原创 intellij idea全局查找和全局替换

全局替换通过快捷键 Ctrl+Shift+r 快速进入全局查找页面,或者通过 Edit 》Find 》Replace in Path快捷键:ctrl+shift+R解释可以看到全局查找就是 ctrl+shift+F如果是某个页面的查找or替换,只需要快捷键取消shift即可。...

2021-09-14 20:31:59 2297

原创 Address already in use: JVM_Bind 几个解决办法

运行Tomcat时若出现Address already in use: JVM_Bind 端口被占用,一般使用下面几个办法可以解决:假设端口为10991.启动cmd, 执行命令netstat -ano|findstr 1099 ,会查询出占用端口号的进程号,这时候执行命令taskkill -f -pid 进程号 杀死进程,然后重启Tomcat即可解决2.若方法一查询不到进程,(假设使用IDEA)则在Run- Edit Configurations中删掉添加的Tomcat,之后再重新配置Tom

2021-09-14 20:20:21 212

原创 缓冲流、转换流、序列化流、打印流

缓冲流、转换流、序列化流、打印流目录(承接上一篇)4 缓冲流4.1 目标4.2 缓冲流概述4.3 字节缓冲流4.3.1 BufferedInputStream 字节缓冲流4.3.2 BufferedOutputStream 字节缓冲输出流4.4 字符缓冲流4.4.1 BufferedReader 字符缓冲输入流4.4.2 BufferedWriter 字符缓冲输出流5 转换流5.1 目标5.2 编码表5.3 使用编码引出的问题5.4 转换流的原理 -面试5.5 InputStreamReader: 字符转换

2021-09-11 22:32:38 160

原创 Properties 工具类 和 ResourceBundle 工具类

Properties 工具类 和 ResourceBundle 工具类(接上一篇JavaIO包)2 Properties 工具类2.1 Properties集合的基本使用2.2 Properties集合中的方法store2.3 Properties集合中的方法load3 ResourceBundle 工具类3.1 ResourceBundle类对象的创建3.2 ResourceBundle类的getString方法2 Properties 工具类2.1 Properties集合的基本使用java.

2021-09-11 21:44:59 412

原创 Java的IO包

Java的IO包目录1 IO包1.1 File类1.1.1 File类的介绍1.1.2 File类的静态成员变量1.1.3 File类的静态成员变量1.1.4 File的构造方法(重点)1.1.5 File类的成员方法1.1.5.1 获取功能的方法(重点)1.1.5.2 判断功能的方法(重点)1.1.5.3 创建删除功能的方法(重点)1.1.5.4 目录遍历的方法(重点)1.1.6 文件大小和文件 占用磁盘空间1.2 递归1.2.1 递归概述1.2.2 递归求1-n和1.2.3 递归求阶乘1.2.3 递归遍

2021-09-11 21:40:35 1510

原创 Java maven项目如何在idea使用Lombok

1.lombok介绍Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。Lombok能以注解形式来简化java代码,提高开发效率。开发中经常需要写的javabean(和数据库表对应的类),都需要花时间去添加相应的getter/setter,也许还要去写构造方法、equals等方法,而且需要维护。Lombok能通过注解的方式,在编译时自动为属性生成构造方法、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和se

2021-09-11 16:03:49 804 2

原创 多例设计模式和枚举enum

多例设计模式概述多例模式,是一种常用的软件设计模式。通过多例模式可以保证系统中,应用该模式的类有固定数量的实例。多例类要自我创建并管理自己的实例,还要向外界提供获取本类实例的方法。例如:​ 扑克牌程序,一个“扑克类”会创建固定的54个对象,不能多、也不能少。​ 麻将程序,一个“骰子类”会创建固定的2个对象,不能多、也不能少。​ 程序中需要用到“颜色的表示”,只能有三种颜色“红、绿、蓝”,一个“颜色类(Color)”应该只创建三个对象,来代 表这三个颜色。多例模式的作用:使某个类,在程序运行

2021-09-10 22:08:04 219

原创 单例模式:饿汉式,懒汉式及线程安全的懒汉式,最优单例模式的写法

单例模式介绍:单例模式指的是,保证一个类只有一个实例,并且提供一个全局可以访问的入口。举个例子,这就好比是“分身术”,但是每个“分身”其实都对应同一个“真身”。使用单例模式的理由/好处:其中一个理由,那就是为了节省内存、节省计算。很多情况下,我们只需要一个实例就够了,如果出现了更多的实例,反而属于浪费。举个例子,我们就拿一个初始化比较耗时的类来说:public class ExpensiveResource { public ExpensiveResource() { f

2021-09-10 22:00:30 1268 1

原创 Dom4j和XStream的区别

在 Java 领域 XML 文件的技术大致分为两类: XML API 和 OXMapping 。 XML API 是 XML 处理的基础,可选技术包括 JDOM 、 Dom4j 等; OXMapping 是 Object-XML Mapping 的简称,这种技术隐藏了 XML 底层操作的细节,可以将 XML 文件映射成一个 JavaBean 对象,也可以把一个 JavaBean 对象保存成一个 XML 文件,可选技术 XStream 、 Digester 、 Castor 等。 XML API 和 OXMa

2021-09-10 11:23:30 661

原创 项目将com.thoughtworks.xstream升级到1.4.18遇到的问题:com.thoughtworks.xstream.security.ForbiddenClassException

项目开发需求将xstream从1.4.17升级到1.4.18,升级后遇到了序列化问题,描述如下:om.thoughtworks.xstream.security.ForbiddenClassException: com.jd.jcloud.wms.pickingplan.dto.eclp.SoOrderCancelReceiptat com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[

2021-09-01 18:57:55 7418

原创 取消订单的优化:使用forupdate行级锁+version

最近随着单量的新增,订单取消导致的并发问题开始出现,我们的取消逻辑是这样的:1、在发货之前都是可以取消的;2、针对不同阶段的取消执行不同的业务逻辑;3、有专门的表记录订单的状态流水:order_status,且和所有的订单状态更改放在一个事务中;4、通过version来控制订单的更新顺序;业务简介:1、订单的正常流程是:初始化完成 -> 定位中 -> 已定位 -> 拣货下发中 -> 已下发拣货任务 -> 已拣货 -> 已复核 -> 已发货以上也是

2021-08-31 21:22:55 603 2

原创 统一异常处理:基于xml的AOP统一异常处理

项目背景:2021年前半年主要处理一些线上Bug,2021下半年主要进行一些系统优化。项目比较老,处于升级ing,很多地方需要重构,其中有一些服务还没有前后端分离,依然使用tomcat,因为系统用户比较多,每日单量非常大,当线上前端出现一个异常信息时,若根据该信息去web搜索就会出现很多,(比如,租户给客服反应某某场景出现了‘系统异常’,然后值班人员去web搜索‘系统异常’的日志,会匹配很多日志,需要人力的筛选),给问题的定位带来了困难,为了提高问题定位的速度,后来架构组提出做三件事:1、去除原来自定义

2021-08-25 13:16:59 228

原创 idea 解决maven依赖冲突插件Maven Helper 及使用

插件:Maven Helper使用:1、安装后重启idea2、在idea中打开pom.xml文件,点击图片位置3、使用介绍4、工具排除依赖和注意事项

2021-08-19 12:03:30 6345 2

原创 使用idea误点 Add as Ant Build File选项后

使用idea对pom.xml误点 Add as Ant Build File选项后还原method:1、2、

2021-08-19 11:54:25 1447

原创 SQL优化:查看SQL执行情况

1、在SQL语句之前新增一个关键字:EXPLAIN EXTENDED ;explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。用explain extended查看执行计划会比explain多一列 filtered。filtered列给出了一个百分比的值,这个百分比值和rows列的值一起使用,可以估计出那些将要和explain中的前一个表进行连接的行的数目。前一个表就是指explain 的 id列的值比当前表的id小的表。2、在SQL语

2021-07-23 10:57:16 2322

原创 List的add方法与addAll方法的区别

add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小即addAll(Collection c)add(int index,Elelemt e)...

2021-07-23 10:09:05 95

原创 MySQL 批量插入数据,单次插入多少条数据效率最高

参考博文https://blog.csdn.net/yangxiao_hui/article/details/103262704?utm_source=app&app_version=4.7.1

2021-05-25 09:00:15 554

原创 分割List为多份:Java中List.subList使用的陷阱

实际开发中,经常使用批量插入,但是sql有语句的长度限制,以及传输大小的限制,所以当我们要插入的每条数据很大时,就需要分多次进行批量插入,这个时候就需要将List集合进行分割。List分割的常用方式就是调用subList()方法,方法使用很简单,和...

2021-05-25 08:59:17 378

原创 Java AtomicLong addAndGet()用法

开发中遇到Java AtomicLong addAndGet()的使用,去Google后知道了其使用,记录一下。简单来说就是一个累计过程,在之前值的基础上累加指定的值,并返回。Java.util.concurrent.atomic.AtomicLong.addandget()是Java中的内置方法,该方法将在函数的参数中传递的值添加到先前的值,并返回数据类型为long的新更新值。用法:public final long addAndGet(long val)参数:该函数接受单个强制参数val,该参

2021-05-25 08:44:23 1898

原创 Long、Integer、Byte, Double, Float或 Short类型的比较

开发遇到的一些基础问题,记录一下:场景:比较Long类型的大小错误用法: == 或者 !=正确用法:Long.compareTo()解释:Long是一个引用类型,不能通过==进行比较大小,基本数据类型才可以,对于Long、Integer、Byte, Double, Float或 Short的Number类型,可以通过调用compareTo()来实现对象之间数值的比较,返回值是一个int,当源大于目标时,返回1,源等于目标返回0,源小于目标返回-1....

2021-05-25 08:39:58 860

原创 处理线上问题:自定义查询功能

最近解决一个问题,关于自定义查询的功能。背景:2017年写的代码,很早了,具体的需求内容也不清楚,从操作上可以推测出需求内容:用户点击新增自定义查询,弹窗一个框,里面是查询条件,选定好自定义的查询条件并输入查询名称,保存,生成一个自定义按钮,绑定到用户,下次就可以直接点击该自定义查询按钮,直接查询,不需要手动输入不同的查询条件;线上问题:新增自定义查询按钮后,不能立即点击使用、不能立即删除,需要重新加载页面才能点击和删除,但是当自定义查询名称包含特殊字符后,依然无法删除。分析问题:测试环境复现

2021-05-12 16:12:07 431

原创 使用Map作为查询条件时的注意事项

实际的开发中,用到了map作为查询条件,当时直接创建一个map组装查询条件,然后放入dao层执行sql。后来在review代码的时候,有个前辈说,代码逻辑没问题,但是从代码的可读性角度来看,给组装map查询条件封装一个方法,参数就是我们要封装的查询条件,这样一来,从方法名、参数和返回值类型就可以很清楚的知道该方法是干嘛的,可读性就上来了,而且降低了代码的冗余,代码的结构也比较好。注:当时采用了前辈的建议,并和原来已存在的一个方法合并了一下,成为一个可拓展性更好的方法,避免重复造轮子。...

2021-05-06 09:14:47 599 1

原创 通过idea启动Java项目的时候,报错: Command line is too long

原因:classpath会加载各种jar导致启动命令过长解决方案:旧版idea:修改项目下 .idea\workspace.xml,找到标签 <component name="PropertiesComponent">在标签里加一行<property name="dynamic.classpath" value="true" />新版idea:点击报错信息中的蓝色启动类名,会自动跳转到配置页,将Shorten com改选为JAR manifest,重新启动即可。.

2021-04-23 14:30:58 447

原创 项目优化:当使用redis减少数据库压力时,遇到redis写入失败,造成读取数据问题的解决方案

场景:我们项目用到了mq,有一个专门的服务在跑异步任务去发mq,这个mq的数据不是从数据库里面查的,而是从redis里面取的,之所以这么做,有两个原因:1、使用redis减少数据库的压力;2、本来异步任务是放在生产环境中的,包括涉及的异步任务表,都是和生产环境在一起的,那么异步任务多的时候,就会对生产环境造成压力,比如数据库压力、cpu等,所以后来将异步任务专门抽成一个服务,并专门给该项目做一个异步任务数据库和表,就是为了减少生产环境的压力。生产环境通过redis将数据传递给异步任务服务。那么现在出

2021-04-13 22:21:12 2183

原创 项目优化:一个服务调用另外一个服务接口超时优化(总结该类问题优化的思路)

场景订单发货时,需要调用调用称重接口进行运费的计算,里面原来的执行逻辑大致是这样的:调用一次数据库查询出来一个集合对象,我们假定它是List<A> aList,for循环aList集合,再根据每个a查询List<B> bList集合对象,然后调用运费计算接口(别的项目)的方法,运费获取后,创建一个需要更新数据库的对象C c,进行属性赋值,最后调用数据库更新。分析影响超时因素简单说,之所以调用“称重”接口超时,主要是因为该接口里面:1、使用for循环处理(当数据量)2、循环

2021-04-13 21:57:47 1121 2

原创 mysql范围索引在实际开发中产生的问题

问题描述优化线上项目的时候,遇到一个问题:按照时间范围筛选数据的时候,查询出的数据不正确,但是清除时间条件后就可以。优化解决过程定位问题:定位到执行的sql,查看sql的执行过程,里面使用的是联合索引,且其中有个索引:create_time,我们知道time是范围性的,而范围查询可能会中断联合索引的使用。所以create_time后面的索引就用不到了,也就知道了数据查询错误。解决问题:在create_time作为索引是必要情况下,将create_time索引放在其他索引的最后。...

2021-04-13 21:21:28 67

原创 BeanCopy和BeanCopier在实际开发中的使用(属性copy效率优化)

优化场景:项目的实体类主要分为三种:dto、dao、query等,所以属性copy避免不了,是影响代码执行效率的主要方面之一。当时的情况是,项目A接受url请求,然后会调用项目B的一个接口去处理明细数据(参数传递主数据,一条主数据对应多条明细数据),项目B处理数据的过程中涉及到属性的copy,而且是循环处理的(循环主数据),当项目A传入项目B的主数据比较多时,那么项目B处理的时间就比较长,而我们这边的服务与服务之间的调用是有时间限制的(我们这是30秒,一个接口处理时间超过30秒已经很长了,用户体验绝对是

2021-04-13 18:14:14 1350

原创 代码合并问题:使用git的merge into current ,合并分支的时候需要注意的地方

这种问题,是因为粗心造成的,不过确实一不小心很容易犯,在此记录下,增强印象场景:在test分支,使用git的merge into current ,将master分支合并到test(需求较多,以及解决线上紧急问题时,然后没来得及合并到test分支上,导致test和master分支相差太大,有必要合并一下),合并时爆出的冲突问题都已经解决了,但是编译的时候出错了,在解决后。注意,我解决后,直接进行了push,因为merge的时候,git默认会commit,但是此时push的只是我merge的代码,编译出错

2021-03-31 14:18:32 19830

原创 合并问题汇总:dependency里面只能有一个exclusions

标题

2021-03-31 13:59:30 177

原创 Java使用try--catch同时捕获多个异常,一起处理

实际开发中,有一个场景对两种异常做同样的处理,如果分开捕获的话,他们的代码处理逻辑是一样的,显得代码有点冗余,下面方法可以同时捕获多个异常,放在一起做处理:try { //捕获内容 } catch (IllegalArgumentException | BusinessException e) { //处理逻辑 } catch (Exception e) { //其他异常处理逻辑 }...

2021-03-30 08:59:40 18356 1

原创 idea通过run启动项目正常,debug启动报错.

报错内容:org.springframework.beans.factory.BeanCreationException: Error creating bean with name '…内容和这个类似,具体的当时没有保存下来,只有一个百度的搜素记录,提示创建bean失败解决方案:翻译的意思取消代理(如果不正确,还请大佬们指正)...

2021-01-13 11:14:42 628 1

原创 取消Fiddler Everywhere代理后访问不了网页

原来使用Fiddler Everywhere代理进行抓包,但是关闭后发现不能正常访问网页了,解决方案如下:然后取消【手动代理】即可

2021-01-11 17:21:38 3758

原创 使用MyBatis打印SQL语句到控制台

使用MyBatis打印SQL语句到控制台的方法

2021-01-11 16:55:21 1150

空空如也

空空如也

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

TA关注的人

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