
Java
文章平均质量分 77
山鬼谣me
我的这一生
展开
-
JDK21引入虚拟线程时的pinning问题,在JDK24基本上解决了
基于这些信息,假设不存在pinning,理论上,虚拟线程#1可以在synchronized块中间卸载,而虚拟线程#2可以装载到相同的平台线程上,并继续执行该synchronized块,因为承载线程是相同的,仍然持有对象的monitor。JDK21引入虚拟线程时还有个pinning的问题,就是当虚拟线程在其载体上运行同步代码块时,它无法从载体上卸载。则没问题,虚拟线程会从其载体(平台线程)卸载,释放平台线程给其他虚拟线程mount;在少数情况下,虚拟线程仍然会被pinning,其中一个情况是当它调用。原创 2025-04-10 14:24:52 · 66 阅读 · 0 评论 -
mapstruct使用教程
为了告诉mapstruct怎么生成转换代码,我们需要先定义个接口。官方把这个操作称为:定义mapper。(创建映射器)// 模型转换 UnityDTO modelToDTO(UnityModel unityModel);/*** 纠纷单Id/*** 订单Id/*** 纠纷单Id/*** 订单Id这个时候只需要,编辑下项目,mapstruct就会帮我们把转换代码生成出来。生成的代码在文件夹里。如果是简单使用,理论上来说,其实已经结束了。不过只是简单的使用肯定满足不了我们的需求。原创 2023-03-28 20:10:24 · 1284 阅读 · 0 评论 -
swing学习笔记:GridBagLayout
这个控制的其实就是坐标。指定组件左上角的行和列。最左列的地址为 gridx=0,顶行的地址为 gridy=0。使用(默认值)来指定将组件放置在刚刚添加到容器中的组件的右侧(对于 gridx)或正下方(对于 gridy)。我们建议为每个组件指定 gridx 和 gridy 值,而不仅仅是使用;这往往会导致更可预测的布局。原创 2022-10-28 11:48:27 · 1351 阅读 · 0 评论 -
Springboot项目多模块打包jar移动到指定目录,docker打jar包构建镜像部署并运行
最近想着用docker来部署应用,这就意味着,打jar包时,需要指定打包的位置。并且在每次构建时,能够清除掉旧包,存入新包。原创 2022-09-12 21:57:55 · 2793 阅读 · 0 评论 -
Java正则表达式正确,find()方法返回false,可能是因为\s无法匹配空格
今天发现了一个很奇怪的现象。单元测试,读取文件的文本,正则表达式可以匹配。响应流中读取的却无法匹配。原创 2022-09-04 10:37:55 · 833 阅读 · 0 评论 -
程序包lombok不存在,纠正网上错误答案
程序包lombok不存在;可是idea相关的配置检查了下是没有问题的。网上百度查了一会,发现网上的答案我的的情况是,idea配置没有问题,网上错误的解决的办法要你勾选,千万别这么做。这样会导致main都是走mvn勾选后,idea的所有的行为都用mvn执行。这肯定不行。...原创 2022-08-29 11:21:49 · 18139 阅读 · 4 评论 -
Java 字节与进制转换
最近研究解析数据报文。进行了解析,总结了一些,经过实践,且高效的方法;原创 2022-08-22 14:15:54 · 1677 阅读 · 0 评论 -
java: 找不到符号 符号: 变量 log && Building with Lombok‘s @Slf4j and Intellij: Cannot find symbol log
今天在deploy时,总是报:找不到符合,符号:变量 log。可是我按照其他项目明明是可以正常deploy的,至少可以说明IDEA的配置,相关插件都是没问题的。原创 2022-08-18 16:19:38 · 7131 阅读 · 6 评论 -
Macbook pro安装open jdk 11并支持jdk8与jdk11快速切换,及更新Homebrew
MacBookpro:macOS12更新Homebrew再次执行安装命令根据上述提示信息,安装成功根据输出的安装信息的提示,为了让Javawrappers找到JDK,需要手动建立链接环境变量配置支持jdk8与jdk11快速切换使用命令行工具(支持动态查找JavaHome,默认为最新版本的)配置环境变量,找到,等配置文件中的任意一个,添加下面这行代码:验证参考地址在MacOS上安装并配置OpenJDKmac终端:brewinstallm原创 2022-06-27 14:14:09 · 7712 阅读 · 3 评论 -
springboot学习笔记:执行单元测试时,mapper默认扫描路径为启动类的包名
环境springboot:2前言情况是这样的:对新建的项目,进行模块调整:按照DDD的架构,设计各个module。当把启动类Application.java调整包路径后,发现单元测试执行失败;调整的具体操作是,将原有的包com.alibaba.模糊.模糊改为com.alibaba.模糊.模糊.start。也就是加了一个start路径。然后又将启动类的包路径还原回去后,单元测试执行成功。纠结了一下午,加一晚上终于找到原因了。特此记录下。当执行单元测试时,会报错,我们看到下图红线处的提示原创 2022-02-24 10:55:12 · 5888 阅读 · 0 评论 -
Java学习笔记:利用泛型动态的返回不同的类
环境前言最近在做代码迁移时,想写这么一个方法,我传入什么对象,其就返回什么对象;传入的对象有继承关系,在处理完相应逻辑后,就返回该对象;比如有如下两个类:ExaminationBindBO |___________ExaminationPkgBindBO我希望我得到的效果是:ExaminationPkgBindBO pkgBindBO = new ExaminationPkgBindBO();ExaminationBindBO bindBO = new Examination原创 2020-09-21 18:49:38 · 8776 阅读 · 0 评论 -
window10 安装Java11 并可以和Java8进行自由切换
环境Java:8和11前言公司今年所有的项目陆陆续续升级到了jdk11。自己家里的电脑,还停留在jdk8,今天我也升下级;但是考虑到以前的项目可能还得使用jdk8,所以肯定得Java11和Java8共存。下载jdk11http://openjdk.java.net/install/index.html这个页面大部分都是linux系统的;然后我们点击jdk.java.net ,接着我们选择下载Java SE 11;下好了后,我们得到这样的文件:openjdk-11+28_windows原创 2020-08-30 21:29:03 · 13322 阅读 · 15 评论 -
Java流式操作中Collect收集器的源码分析
环境MacBook Projava:11前言公司封装的jar里多了下面这中方法:Collector.of(() -> { Pagination<T> pagination = new Pagination<>(); pagination.setPage(page); pagination.setSize(size);原创 2020-07-25 20:53:46 · 1033 阅读 · 0 评论 -
JCTree方法说明
环境MacBook ProJava:1.8前言想弄懂抽象语法树,还得明白相关方法;想要利用自定义注解写方法,就是在重载方法visitClassDef中,利用jcClassDecl.defs.prepend(),把新方法加入到源代码中。如何写新方法呢?① 生成表达式 — 其实就是方法体的内容例如:public void getPerson(String name) { this.name = name;}例子中,this.name = name;就是表达式;② 生成方法体;原创 2020-06-04 21:18:15 · 2940 阅读 · 1 评论 -
JMH 微基准测试套件
环境MacBook ProJava 1.8前言无意中看到JMH – 用来测试方法性能的东东。好吧,我就了解下~ 未来说不定用得到。JMH名字就是标题上名称:Java 微基准测试套件。英文名叫:Java Microbenchmark HarnessJMHJava9中作为JDK的一部分已经引入了;但是我是Java8,又是gradle项目;需要引入Open-jdk中相应的依赖才行。build.gradle在 build.gradle 文件中添加: compile group: 'o原创 2020-06-03 20:19:13 · 524 阅读 · 0 评论 -
自定义注解处理器debug调试的配置
环境MacBook ProJava:1.8+前言上篇已经讲解了如何写个简单的自定义注解,但是开发,肯定需要打断点调试的。编译阶段该如何启动断点呢?步骤一找到gradle家目录:我的:/Users/yutao/.gradleyutaodeMacBook-Pro:.gradle yutao$ pwd/Users/yutao/.gradleyutaodeMacBook-Pro:.gradle yutao$ lltotal 32drwxr-xr-x 11 yutao staff原创 2020-05-11 19:08:25 · 3344 阅读 · 1 评论 -
Java自定义注解入门之源码编译阶段
环境MacBook ProJava:1.8gradle:5.5.1前言公司封装了一个@slf4j,用于日志打印;最近研究了下这个注解,了解到了AST,抽象树这个概念;明白了lombok这样的插件也是利用这个技术来实现的;在研究过程中,被下面这个错卡了很久:错误: 程序包com.sun.source.tree不存在import com.sun.source.tree.Tree;特意记录下;抽象语法树 AST自己的话:用代码去描述代码的结构编程语言有很多,但是基本都是:类型原创 2020-05-09 19:44:04 · 881 阅读 · 3 评论 -
注解开发学习笔记
前言因为之前玩play framework缘故,对springboot不是很了解;注解我存在很多疑惑:① 在springboot中自定义的注解如何才能生效使用② Lombok 这种注解插件是怎么改变生成的代码的Lombok插件今天网上找了一篇手撸Lombok之后,算是明白了疑惑②=-=-=-=-=-=-=-=-=-=-=-=-=-=-以下内容为转载内容-=-=-=-=-=-=-=-=...原创 2020-04-11 20:01:03 · 390 阅读 · 0 评论 -
springboot学习笔记:设置Redis缓存时间
环境MacBook ProIntellij IDEA前言在使用注解@Cacheable时,不能设置缓存时间,使用起来不是很爽,稍微研究了一下;配置因为其不支持设置缓存时间,所以得通过RedisCacheManager的方式来设置/** * @author yutao * @since 2020/3/31 7:03 下午 */@EnableCaching@EnableCon...原创 2020-04-01 19:02:36 · 2039 阅读 · 0 评论 -
WireMock与契约测试学习笔记:磕磕绊绊mock测试初体验
环境MacBook proIntellij IDEA 2019.2java 8前言我负责的一个项目呢,契约测试曾经调通过一次,但是最近CI报了mockTest任务执行异常。。。自此,开始了我的两天磕磕碰碰的旅程。可以说我对WireMock是一点知识储备都没有,这两天就是参照公司的其他项目各种对比,然后不断调试,现在想想真是浪费了很多时间,因为当知道原因后,真的菜啊~错误当时我一...原创 2020-02-20 19:33:48 · 844 阅读 · 0 评论 -
ZooKeeper学习笔记:简单入门
环境macbook prozookeeper:3.5.5下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/下载带bin结尾的文件,否则 就是源码。安装解压到相应的路径,配置好环境变量就可以了。注意点常用命令的使用使用zkCli.sh命令连接客户端后,常用的如下命令:查看节点:(查看相应路径的子节点)# l...原创 2020-01-28 15:13:47 · 444 阅读 · 0 评论 -
Bad return type in method reference:cannot convert java.util.function.Predicate<XXX> to boolean
环境Java:1.8Inteijj IDEA:2019.2前言今天在优化代码时,遇到了如题的错误,一下没有反应过来,磋磨了2、3个小时,才悟了过来。特意做个笔记。代码public static Predicate<ProductDTO> excludeByMinorCategoryId() { return productDTO -> { boo...原创 2019-12-23 21:11:55 · 7377 阅读 · 0 评论 -
Java后台如何弹出window的下载对话框
参考地址:http://www.cnblogs.com/brucejia/archive/2012/12/24/2831060.html方法就是配置响应头://告诉浏览器数据类型response.setContentTypeIfNotSet("application/vnd.ms-excel;charset=UTF-8"); //激活文件下载对话框response.setHeader("Con原创 2016-07-28 19:09:35 · 2433 阅读 · 0 评论 -
用递归算法得到Java的树形结构
要求:得到无限分类的菜单栏。并且告诉你任何一个节点,都能得到整个菜单。数据库是mongodb。没有贴全部,只贴部分。 首先一个整体思路是: 1、要有一个能通过父类id得到全部子类id的集合。 2、遍历这些子类集合来把它们的关系关联起来。代码部分: 建立数据库的查询:DBCollection collection = GGMongoOperator.getGGBusinessCollectio原创 2016-07-08 18:14:12 · 12047 阅读 · 0 评论 -
当获得json格式的字符串时,如何用Alibaba的json包来解析
首先假设我们获得了一个json格式字符串:String resultStr = '{"message":"成功","data":{"message":"ok","value":"9","code":"11001488","success":true},"code":0}"'其中我们想要获取到的是"data":{"message":"ok","value":"9","code":"11001488"原创 2016-08-05 14:31:58 · 6749 阅读 · 0 评论 -
Eclipse无法启动报An internal error occurred during: "reload maven project". java.lang.NullPointerExceptio
这种错误,大概是因为,在使用eclipse中使用maven下载jar,由于太慢自己没有耐心,就手动停止,结果eclipse卡死没有响应,最后启动任务管理器结束eclipse进程。之后再次启动就出现这种结果。出现这种情况,网上给出了一个复制粘贴的答案,那只是原创作者的情况,结果是其他人也不实践下,就各种复制。 后来我在网上找到了和我情况一模一样的。他给出的答案: 1、在workspace中找到.m原创 2016-08-18 10:27:58 · 15562 阅读 · 11 评论 -
解决eclipse自动生成参数为arg0,arg1问题
如上图,参数为arg0,,这种情况是因为我实现的job,eclipse没有加载它的源码。 这个job是来自于我使用的quartz库。解决办法是:1、右键项目–Build Path–Configuration Build Path2、选中Libraries–找到它引用的jar包;比如:例子中的Job引用的是quartz-2.2.3.jar3、点横向的三角形图标展开,选中Source attachme原创 2016-09-09 11:12:39 · 4028 阅读 · 0 评论 -
在Centos下安装play framework
由于 play framework是用Java写的框架,所以在此之前需要安装Java 安装教程:http://blog.youkuaiyun.com/u013066244/article/details/52768518之后开始安装play framework:1、去官网:https://www.playframework.com/download用鼠标滚轮滚到下面,可以看到很多版本!由于公司使用的原创 2016-10-10 10:25:03 · 2996 阅读 · 0 评论 -
Class.forName()用法详解
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法。 一.什么时候用Class.forName()? 先来个热身,给你一个字符串变量,它代表原创 2016-11-03 15:54:27 · 1040 阅读 · 0 评论 -
JFinal个人学习笔记之源码分析3
上篇分析完了initActionMapping()的源码。JFinal源码里初始化init方法还有:boolean init(JFinalConfig jfinalConfig, ServletContext servletContext) { this.servletContext = servletContext; this.contextPath = serv原创 2016-11-03 15:50:52 · 1766 阅读 · 2 评论 -
Jenkins更改项目路径
由于Jenkins主目录默认是在/var/lib/jenkins,而默认的项目路径是其下面的workspace, 又由于公司服务器,var这个目录分配的空间很小,如果项目放到这里,以后会报磁盘空间不够的错误, 所以需要更换路径。 参考地址> http://blog.youkuaiyun.com/eleven521/article/details/22277053原创 2016-10-13 19:40:00 · 14884 阅读 · 1 评论 -
play framework系列教程之安装play framework
前期准备play要求Java1.8版本。确认你有最新的jdk,请运行java -version如何你还没有安装jdk,可以参考: http://blog.youkuaiyun.com/u013066244/article/details/52768518要是使用命令wget下载Java8的话,使用下面命令;wget –no-check-certificate –no-cookies –header “C原创 2016-10-14 13:49:03 · 1980 阅读 · 0 评论 -
jenkins中通过execute shell启动的进程会被杀死的问题
1.重设环境变量build_id在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程#!/bin/bash/usr/bin/expect << EOFset password "yutao"spawn sudo su jenkinsexpect ":"send "$password\n"exitexpect eo原创 2016-09-29 15:42:28 · 5159 阅读 · 0 评论 -
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after XXX ms
错误信息:我在使用Jenkins进行远程部署时,构建后执行的脚本没有正常退出导致。我的脚本没有写错,干的事情就是启动项目。而导致它没有正常退出的原因是:Since you are executing a script from a non-TTY environment; The Jenkins is not able to get the exit properly, out of your原创 2016-10-11 15:19:42 · 57723 阅读 · 18 评论 -
javac命令使用教程
#!/bin/bashexport PATH=~/play-1.2.7:$PATH#获得当前目录cur=$(pwd)echo "pwd:"${cur}rm -rf ggf10service.jaroutput_path=${cur}/classesecho $output_pathif [ ! -d $output_path ]; thenmkdir $output_pathfi原创 2016-10-25 20:29:07 · 1159 阅读 · 0 评论 -
java poi 处理execl中Date问题
首先我们要知道在poi中execl的数据类型有: public static final int CELL_TYPE_NUMERIC = 0;//数字类型 public static final int CELL_TYPE_STRING = 1;//字符串 public static final int CELL_TYPE_FORMULA = 2;//公式 public static原创 2016-11-07 15:15:13 · 2606 阅读 · 0 评论 -
The Apache Tomcat installation at this directory is version 8.5.6A Tomcat 8.0 installation is expect
在eclipse中安装tomcat8.5时,报错:The Apache Tomcat installation at this directory is version 8.5.6. A Tomcat 8.0 installation is expected.解决办法: Windows中①在Tomcat的安装目录中找到lib目录,在找打catalina.jar。使用压缩软件(WinRAR或是好压原创 2016-10-17 13:48:37 · 53866 阅读 · 15 评论 -
java处理高精度的商业计算
在公司写代码时,发现从mongodb中取出高精度数据时,会自动转成科学计数法!例如数据库里存的是`0.0002`,取出来时,变成了2.0E-4.对于这种高精度的数据,一般要用到BigDecimal类。一般我们都是保留两位小数,但是如上例中,`0.0002`我们希望保留的有效位,是从非0位2开始的。我们该怎么写呢?double a = 0.0002; BigDecimal b = new原创 2016-10-27 15:07:29 · 1840 阅读 · 0 评论 -
JFinal个人学习笔记之源码分析1
源码解读启动项目 /** * 建议使用 JFinal 手册推荐的方式启动项目 * 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此 */ public static void main(String[] args) { JFinal.start("WebRoot", 81, "/", 5原创 2016-10-29 23:54:18 · 4329 阅读 · 1 评论 -
JFinal个人学习笔记之源码分析2
本篇是接着上篇讲上篇我们讲到了`actionMapping.buildActionMapping();`源码:void buildActionMapping() { mapping.clear(); Set<String> excludedMethodName = buildExcludedMethodName(); InterceptorManag原创 2016-10-30 23:36:52 · 1149 阅读 · 0 评论