Java
文章平均质量分 63
Java
刘墨泽
这个作者很懒,什么都没留下…
展开
-
Spring事务七种传播行为的快速记忆方法
看别人写的Spring事务传播行为详解,洋洋洒洒很多字,看完还是记不住。如何快速记忆理解还是颇有难度的。原创 2023-05-12 16:23:58 · 1025 阅读 · 0 评论 -
maven仅上传pom文件到仓库
仅上传pom文件又不愿意填写-DgroupId、-Dversion、-DartifactId怎么办?之前就上传过pom文件而不用写定位信息,这一次死活不行,就是不断报错。结果是顺序写的不对。原创 2023-04-10 11:45:27 · 764 阅读 · 0 评论 -
关于jdbcUrl is required with driverClassName的新解
我看所有关于这个问题的博文,内容都是一致的。都是说,配置多数据源时,需要把url换成jdbc-url,driverClassName换成driver-class-name而且还都会配上一段官方的解释:官方文档的解释是:因为连接池的实际类型没有被公开,所以在您的自定义数据源的元数据中没有生成密钥,而且在IDE中没有完成(因为DataSource接口没有暴露属性)。另外,如果您碰巧在类路径上有Hikari,那么这个基本设置就不起作用了,因为Hikari没有url属性(但是确实有一个jdbcUrl属原创 2022-05-21 18:08:51 · 5498 阅读 · 1 评论 -
Spring5.2源码阅读笔记-详细创建自定义注解全过程
Spring的源码满是注解,理解注解是怎么回事,有助于接下来的理解。创建自定义注解使用IDEA,new Java Class会出现如下对话框,选择Annotation,输入文件名,就创建好了一个自定义注解。public @interface MyLog { }然后我们再创建一个Car类,用于使用咱们创建的注解。import lombok.extern.slf4j.Slf4j;@Slf4j@MyLogpublic class Car { public int ch.原创 2022-01-27 09:35:20 · 710 阅读 · 0 评论 -
Cannot write part arg0. RPC/Literal parts cannot be null
问题描述:调用他方提供的webservice服务,有一个method自测试后一直没用过, 现在用到了,调用就会报错org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {}invoke has thrown exception, unwinding noworg.apache.cxf.interceptor.Fault: Cannot write part arg0. RPC/Literal parts cannot be null.原创 2021-12-02 16:56:18 · 809 阅读 · 0 评论 -
【程序员翻身计划】Java高性能编程第一章-Java多线程概述
Java多线程概述目标重点:线程安全的概念线程通信的方式与应用reactor线程模型线程数量的优化jdk常用命令Netty框架的作用难点java运行的原理同步关键字的原理AQS的抽象JUC的源码网络编程的概念GC机制class文件内容文件开头有一个0xcafebabe特殊的标志。包含版本、访问标志、常量池、当前类、超级类、接口、字段、方法、属性把class文件的信息存在方法区里面,有了类 根据类创建对象,存储在堆内存中,垃圾回收就是这里。这是线程共享的原创 2021-11-27 15:18:03 · 550 阅读 · 0 评论 -
No buffer space available终极解决办法
这是个标题党。周一到公司打开电脑准备再测试下上周写完的接口卧X,查询数据库报错了!这两天程序乖乖的跑在服务器上,也没人动啊!因为上次遇到过Druid连接池关闭链接报错的问题,首先怀疑是不是数据库连不上了?因为调其他接口也不通,又怀疑是不是网络断了?一看日志,无法建立链接,无论是查数据库还是调其他服务都是无法建立链接。可是为啥会出现这种情况呐?Caused by: com.dareway.framework.exception.AppException: -1java.sql原创 2021-11-22 21:03:31 · 14192 阅读 · 0 评论 -
webservice调用,控制台输出错误:编码GBK的不可映射字符
现象:服务器是windows。编码是UTF-8,系统编码是GBK之前调用都是正常的,同事更过包之后控制台输出大量“错误:编码GBK的不可映射字符”,最开始以为是打包时编码出错,尝试重新打包后也不行。解决过程:然后注意到输出信息里有DynamicClientFactory,而且java文件名和调用对方提供的方法名一致,这很有可能就是调用webservice接口出的问题。 DynamicClientFactory factory = DynamicClientFactory.newInst原创 2021-11-22 16:40:59 · 1150 阅读 · 0 评论 -
使用SpringAOP及Tlog完成日志链路追踪、收集、持久化
❌一、痛点目前我司各系统的日志管理比较原始,使用logback打日志到log文件,虽然有服务管理平台,但记录的日志也仅仅是前置机调用后台系统的出入参,当遇到问题时查日志较为麻烦。登录VPN-打开服务器-找到日志目录-打开日志文件-搜索而这个过程也仅仅是在一台服务器上的操作,一般需要看前置机、后台系统甚至服务管理平台。当用户较少时,通过先后顺序等其他标志还能查到,但当调用量稍多后就很难判断哪个日志是哪个操作发出的。另外,我司产品前台面向用户,后台与多家公司产品有大量互相调用,当用户遇到问题首先投诉原创 2021-07-23 08:51:00 · 895 阅读 · 0 评论 -
Java定时任务调度实战(2)Quart框架的简单介绍
目录一、前言二、Quartz的简单介绍一、前言在之前的文章《Java定时任务调度实战(1)深入Timer、TimerTask源码,我发现都是《数据结构》必考点》中已经介绍了一种实现定时任务调度的方法——Java原生提供的TimerTask,适用于一些简单的业务需求。回顾一下,TimerTask的原理总结起来就是下面这个图:其实仔细想想,是不是可以抽象出来几个部分?任务调度,首先要有任务,TimerTask就是具体任务。有了任务之后是不是要给这个任务设置一下啥时候调,多久调原创 2021-07-12 13:56:34 · 1703 阅读 · 0 评论 -
Java定时任务调度实战(1)深入Timer、TimerTask源码,我发现都是《数据结构》必考点
????????????这是文章《Java原生任务调度实现及分布式任务调度平台 XXL-JOB概览》的一节,发现字数真的太多了,不利于阅读,就把这篇拆出来了。1.1简单的例子public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Override public void run() { while (true) { try {原创 2021-06-25 19:51:24 · 379 阅读 · 4 评论 -
No compiler detected make sure you are running on top of a JDK && Unable to create schema compiler
DynamicClientFactory factory = DynamicClientFactory.newInstance();Client client = factory.createClient("");调webservice主要就是这两行代码,在windows平台MyEclipse中运行正常。但打成jar包部署到Linux平台运行时第二行代码却报错查看报错第一步,看Caused by:这个ClassNotFoundException很常见,缺少的这个类一般在jdk的l.原创 2021-03-24 21:52:20 · 4105 阅读 · 2 评论 -
为什么split会把空值丢弃?
先问个问题①String str = ",,b,,d,,,";String[] splitStr = str.split(",");splitStr的数组长度是多少?内容是什么?②String str = "a,b,,d,,e";String[] splitStr = str.split(",");splitStr的数组长度是多少?内容是什么?说来惭愧,用了这么多年split方法一直都不知道split方法的真正用法,也没仔细看过。以前遇到的要分隔的字符串都是②.原创 2020-12-30 11:38:28 · 1826 阅读 · 0 评论 -
基于Java8函数式编程求一个List的全部子集|尾调用优化解决递归性能问题
代码来自《Java8 in Action》,思路和其他递归解决方法一致,但不同的地方在concat方法 public static List<List<Integer>> subsets(List<Integer> list){ if(list.isEmpty()) { List<List<Integer>> ans = new ArrayList<>(); ans.add(Collections.emptyLis原创 2020-11-20 14:29:36 · 623 阅读 · 0 评论 -
理解Java8中的Stream
虽然公司使用Java8,但是从来没有使用过Java8的新特性。我认为主要的问题是Java8提出的新思想和以往我们的编程习惯有很大的不同,更像是一个聪明人才能掌握的东西,让我们普通程序员觉得 它 很难 距离我们很远。比如说到现在,虽然我对Stream有了一些了解,但是心里还是愿意去写麻烦的if判断、for循环。东西是好东西,就看我们怎么用了。Java8中的Stream解决了什么问题?发展到现在,多核和处理大型数据集成为编程界的主流,但是Java对这些不太友好。比如使用线程来使用多核能力,但是这容易原创 2020-11-20 10:29:59 · 377 阅读 · 0 评论 -
Consider defining a bean of type ‘xxx‘ in your configuration问题的解决方案
这个问题,大部分博客提供的解决办法都一样,有时候不是这些原因造成的。注意你有没有添加注解,有时候光敲代码敲嗨了,都忘了。比如今天帮同事看代码,就发现没有添加@Service注解原创 2020-11-02 11:06:46 · 348 阅读 · 0 评论 -
wait()和notifyAll()在Tomcat源码中的一个用法
最近在看《深入剖析Tomcat》(中文版),Tomcat版本很老,但是对于理解Tomcat的运行原理有很大的帮助。英文版叫《How Tomcat Works》.推荐小白阅读铺垫:在第四章 有两段代码,之前还没遇到过,感觉很有意思,加下来的描述可能需要读者了解一点HttpProcessor和HttpConnector的知识。主要涉及两个方法:assign()和await(),这两个方法都在org.apache.catalina.connector.http.HttpProcessor中。.原创 2020-10-27 16:32:03 · 247 阅读 · 0 评论 -
从零开始带你成为Java高手学习笔记(一)ArrayList是如何设计的
ArrayList源码分析1、增加元素ArrayList有两个不同的add()方法。常用的就是第一个,添加元素到list的末尾,只分析第一个方法。/** * 将指定的元素添加到列表末尾. * * @param e element to be appended to this list * @return <tt>true</tt> (as specified by {@link Collection#add}) ...原创 2020-10-27 12:36:52 · 190 阅读 · 0 评论 -
从RequestConfig源码学Bulider设计模型
读代码,发现有这样一个写法 //设置请求的超时时间RequestConfig rconfig = RequestConfig.custom().setConnectTimeout((int)waitTime).setSocketTimeout((int)waitTime).build();之前在看lombok的时候,学到了链式调用。但是Builder模式只听过,并不知道啥意思,正好梳理一下。Builder模式解决的问题:在以前写代码的时候,对于实体类都是写构造方法,并提供get、set方原创 2020-10-15 14:08:27 · 473 阅读 · 1 评论 -
解决找不到javax.jws的问题
搜索了大部分博客,大家都说是JDK缺少servlet-api.jar包导致的问题,比如https://blog.csdn.net/MAOZEXIJR/article/details/106015396但按照这些博客里的方法试过之后还是不行,最后发现我这里是编译jdk版本的问题。我使用的是MyEclipse2019,JRE默认使用的是Java JDK VM1.11.0_Windows,但是我本地安装了1.8,选项里并没有,需要安装一下。我的解决办法:项目右键->bui...原创 2020-10-12 09:49:46 · 10747 阅读 · 6 评论 -
明明设置了目的List的大小,为什么执行Collections.copy()还是报错:Source does not fit in dest
首先说一下,报错Source does not fit in dest。在复制List时,使用Collections.copy(dest, src)方法,首先会检查src的大小是否大于dest的大小,如果大于,则报错。这一点,源码写的很清楚: /** * Copies all of the elements from one list into another. After the * operation, the index of each copied elem原创 2020-06-01 14:41:59 · 3161 阅读 · 0 评论 -
这是个神坑Unable to load library xxx Native library (win32-x86
大部门人包括我刚开始用jna调用c写的动态库的时候,总会闹版本的笑话:Unable to load library 'xxx': Native library (win32-x86-64错误的解决办法但是这一次,我有经验了,这种错误犯了一次还能再来一次吗?不会,但是更神奇。事情是这样的,去年做高速入口治超的项目,使用xlw厂家的三颗摄像头抓拍车牌,今年新增了需求,要求其中一颗摄像头抓车牌的同时还要录制视频,所以动态库得换。厂家懒得依据我们的接口文档改,于是扔给我一个其他省份其他项目正在.原创 2020-05-18 10:57:12 · 5515 阅读 · 0 评论 -
还在为这发愁?No result defined for action XXX and result input,先注意这两点
注意两点:1、是否有重名属性。2、是否类型不一致。原创 2020-04-28 10:13:51 · 174 阅读 · 0 评论 -
JNA内存对齐
目录1、Java实现结构体2、ByteByReference的用法3、内存对齐1、Java实现结构体动态库结构体定义和Java实现的结构体定义:typedef _vlp_info{ int vlp; char vlp[20]; int vlp; unsigned char vlp[2]; unsigned c...原创 2019-12-30 11:05:01 · 2064 阅读 · 0 评论 -
Unable to load library ‘xxx‘: Native library (win32-x86-64错误的解决办法
第二次遇到这个问题,第一次是因为,动态库要求放到某一个文件夹下,放错了,属于路径错了。本次遇到的情况:路径写死,路径正确。但是调试的时候jre忘记选择32位的了(dll是32位的)。...原创 2019-11-20 20:07:13 · 7794 阅读 · 2 评论 -
java语言实现根据sql文件生成markdown表结构文档
sql2Markdown作用:根据sql文件生成markdown表结构文档代码地址:https://github.com/xiuhongwu/sql2Markdown缘起:我是公司的新人,有一次改bug涉及到数据库,表多字段多,于是问大佬有没有表结构文档,问了三遍,回答是没有!!!记得刚进公司培训的时候,有一位大佬给的表结构文档说是根据数据库自动生成的。百度一下发现真的有这种工具,试用...原创 2019-09-12 16:14:09 · 1122 阅读 · 0 评论 -
十六进制byte转十进制、两个十六进制byte转十进制(高低位)
在模拟modbus通信过程的时候,需要有如下转换过程1、byte[]数组中存的是十六进制需要转十进制2、两个十六进制的byte需要组合成一个十进制,比如高位:0x01,低位:0x78 组合成0x0178转十进制解决办法 /** * byte转为十进制int * @param bytes * @return */ public static int byt...原创 2019-08-13 11:09:02 · 10219 阅读 · 3 评论 -
十六进制字符串转byte[],byte[]中大于127的数转十六进制字符串,两个十六进制字符串转十进制
/** * 将16进制字符串转换为byte[] * @param str * @return */ private static byte[] toBytes(String str) { if(str == null || str.trim().equals("")) { return new byte[0]; ...原创 2019-08-14 11:12:54 · 762 阅读 · 0 评论 -
Java socket编程,模拟modbus协议收发温湿度数据
任务:socket编程,服务端模拟温湿度采集器,实现与客户端的通信。知识点:socket编程(网络有实例,模仿实现) modbus协议(仅用到ModbusRTU) 温湿度采集器 思路:客户端写死数据,合并crc校验,发送到服务端。服务端截取校验位之前的数据通过crc校验与客户端发来的数据比较,如果相同,返回温湿度数据。...原创 2019-08-08 15:05:02 · 2904 阅读 · 6 评论