
java相关
文章平均质量分 89
包括java基础、java虚拟机、高并发
晓之木初
船到桥头自然直,前提是你努力过!
展开
-
maven编译:Found duplicate... 问题的解决
如果想偷懒,可以通过调整下面的配置项,使整个项目不进行check、跳过某些classpath的check、甚至在出现冲突时编译不失败等。文章开头的duplicate信息是WARNING级别,但maven编译也失败了,这是因为。一般冲突的是多个依赖中的重名类或资源,这时可以。为true,一旦遇到冲突就失败。原创 2024-08-31 21:52:37 · 1100 阅读 · 0 评论 -
关于报错 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“ 的可能原因
→→→。原创 2024-08-31 17:11:28 · 8830 阅读 · 2 评论 -
Protobuf(三):理论学习,简单总结
1. Protocol Buffers概述Protocol Buffers(简称protobuf),是谷歌用于序列化结构化数据的一种语言独立、平台独立且可扩展的机制,类似XML,但比XML更小、更快、更简单protobuf的工作流程如图所示1.1 protobuf的优点优点一: 支持多种语言(Cross-language Compatibility)使用protobuf语法定义好数据结构后(.proto文件中的message),可以将其转化为各种语言的源代码,从而轻松地从/向各种数据流中原创 2024-07-04 23:12:49 · 435 阅读 · 0 评论 -
Java注解(一):基础知识入门
什么是注解、注解的分类、元注解原创 2021-08-29 22:12:32 · 686 阅读 · 0 评论 -
Java注解(六):实战,JCTree实现编译时注解处理器
lombok的学习文章:lombok的作用讲解,经常使用的注解的讲解:Lombok的介绍与使用lombok通过修改AST实现:Lombok简介、使用、工作原理、优缺点github地址:projectlombok/lombok1. JCTree有关知识2. 如何获取注解中元素的值按照之前的描述,@Value注解可以为String类型的、非final字段赋默认初始值@Value注解的定义如下,包含一个value元素,以设置字段的默认初始值@Target(ElementType.FIE原创 2022-02-13 21:38:52 · 2440 阅读 · 3 评论 -
Java注解(五):JCTree相关知识学习
从图片讲起java编译过程中AST变化过程安卓AOP之AST:抽象语法树什么是JSR269Javac黑客指南JCTree的两个分类和重要子类的介绍转载:抽象语法树AST的全面解析(二)获取JCTree的工具类JavacTreesJCTree和TreeMaker的关系......原创 2022-02-13 16:17:00 · 3332 阅读 · 2 评论 -
Java注解(四):实现@Builder注解
之前的博客1-自定义Java编译时注解处理器,介绍了:① 编译时注解处理器的一些基础知识,② 如何实现一个简单的编译时注解处理器,③ 在学习过程中遇到的问题和一些解决办法这次将通过实现@Builder注解,来加深对上一节知识的理解1. 絮絮叨叨关于Builder模式,实现上总是大同小于:Builder类的定义:① 将Builder类定义为目标类的静态内部类;② 将Builder类定义为一个外部类Builder实例的创建:① 通过new直接创建; ② 通过静态的builder()方法创建.原创 2022-01-23 22:21:35 · 2508 阅读 · 0 评论 -
Java注解(二):Java模板引擎 —— JavaPoet的简单使用
1. 絮絮叨叨在学习注解时,自己就有一个疑问:RUNTIME周期的注解,可以通过反射机制让注解生效。如果是SOURCE或者CLASS呢?比如,在Spring Boot中经常使用@Value注解,为字段设置默认值、从properties读取value初始化字段、读取bean的某个属性以初始化字段按照我一个菜鸟的理解,一定有一段注解处理代码,可以将@Value注解中的值赋值给对应字段可能是在对象创建完成后,通过setter方法进行设置;也可能是直接修改源文件,在定义字段时就进行初始化@原创 2022-01-13 23:57:17 · 2705 阅读 · 0 评论 -
Java注解(三):自定义Java编译时注解处理器
1. 絮絮叨叨要么是注解跟我有仇,要么是公司配发的笔记本跟我有仇,要么是因为心急吃不了热豆腐痛定思痛:从头开始,新建一个Java项目,实现一个超级简单的注解@Hello在 process()方法中简单打印 getSupportedSourceVersion()方法返回的结果在此,记录一下如何定义一个简单的Java编译时注解处理器1.1 AbstractProcessor自定义Java编译时注解处理器,一般都是通过继承AbstractProcessor实现的AbstractProcesso原创 2022-01-23 20:17:49 · 8165 阅读 · 18 评论 -
如何确保JDK版本与操作系统架构匹配?
公司JDK团队提供的、包含JDK的基础镜像,有和之分因此,问题来了:根据宿主机的操作系统架构,应该选择哪个基础镜像?2. 通过操作系统架构,选择合适的JDK版本首先,根据不同的操作系统,使用不同方式确定系统架构例如,对Linux或mac OS,使用查看系统架构。不同返回值的含义如下:x86: 32 位 x86 架构(例如,Intel Pentium、AMD Athlon 等)x86_64: 64 位 x86 架构,也称为 AMD64 或 Intel 64 (例如,Intel Core 2原创 2024-03-02 00:13:00 · 2586 阅读 · 0 评论 -
Java定时任务不再执行的原因与解决办法
try-catch。原创 2024-01-20 17:18:52 · 6467 阅读 · 0 评论 -
Eclipse MAT解析headp dump,total size小于file size
使用Eclipse MAT分析20GB+的heap dump文件最后解析出来dump size只有1GB+原创 2023-10-03 16:07:11 · 1954 阅读 · 0 评论 -
Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol
ls -l。原创 2023-10-02 16:42:31 · 2658 阅读 · 1 评论 -
Linux上,多个JDK版本如何管理
JDK多个版本如何管理原创 2023-05-17 23:34:44 · 5908 阅读 · 5 评论 -
Open JDK下载
以Open JDK 17为例,介绍Open JDK的下载方式原创 2023-05-17 22:32:00 · 31741 阅读 · 3 评论 -
Google Guice 5:AOP
AOP的基本概念,以及Guice对AOP的支持原创 2023-02-28 01:05:01 · 361 阅读 · 0 评论 -
Google Guice 4:Bindings(2)
Guice binding 2原创 2023-02-25 22:17:05 · 644 阅读 · 0 评论 -
Google Guice 3:Bindings(1)
如何定义binding part 1: 介绍linked binding和binding annotations原创 2023-02-22 22:29:02 · 535 阅读 · 0 评论 -
Google Guice 2:Mental Model
Guice的Mental Model:Guice is a map原创 2023-01-08 21:50:53 · 498 阅读 · 0 评论 -
Google Guice 1:如何实现依赖注入
Guice的依赖注入方式原创 2022-12-28 20:47:43 · 845 阅读 · 0 评论 -
Java类的分类
1. 絮絮叨叨在学习JDK 8的lambda表达式这一新特性时,发现很多文章都是以匿名类作为切入点,从而体现lambda表达式的简洁,或者帮助我们理解lambda表达式的写法在对lambda表达式语法不熟悉的情况下,自己总是尝试先用匿名类实现这个接口,然后再跟lambda表达式一一对应 ????通过学习JDK 8的官方文档,发现原来我所认识的内部类也有这么多讲究:嵌套类、静态嵌套类、非静态嵌套等2. 嵌套类所谓嵌套类(Nested Class),就是在一个类中定义的类之前自己一直原创 2022-02-21 00:27:27 · 6825 阅读 · 0 评论 -
Java Properties类
以往的编程实战中,经常使用哈表存储键值对。现在想想,某些场景下,键值对实际就是属性名及属性值除了常见的get()、put()外,有时还需要从文件中获取属性,或将现有的属性写入到文件中这时,若还使用哈希表存储属性就变得不是很方便了。因为,哈希表中没有对stream操作提供直接支持,属性的加载或持久化存储等,还需要单独编写stream操作代码Properties类应运而生,用于表示一个属性列表。它继承了Hashtable类,本质上是一个哈希表,可以用于存储属性集合,支持get()、put()操作。原创 2022-10-15 21:39:58 · 513 阅读 · 0 评论 -
Java System类与系统属性
Java System类及系统属性的简单学习原创 2022-10-16 17:46:15 · 668 阅读 · 0 评论 -
java命令中的options
java选项分类、如何查看这些选项的默认值或运行值原创 2022-11-13 14:10:36 · 3876 阅读 · 0 评论 -
谈谈自己对依赖注入的理解
从new依赖到从Factory获取依赖,再到由容器自动注入依赖,谈谈自己对依赖注入的理解原创 2022-12-18 00:48:37 · 540 阅读 · 0 评论 -
工厂模式(1): 简单工厂模式
遵循原始想法的简单工厂模式作为关注教育的人大代表,他需要访问很多处于不同学习阶段的学生,了解他们的学习情况如果使用程序实现的话,就是输入人大代表想访问的学生类型,以打印的方式告知人大代表该类型的学生的学习情况创建接口聪明的你会想到,不管什么阶段的学生,都有一个打印学习情况的方法因此,你创建了一个Student接口,study() 方法就是打印学生学习情况的方法public interface Student { void study();}实现接口,创建原创 2021-12-27 23:56:44 · 518 阅读 · 0 评论 -
工厂模式(2): 工厂方法模式
工厂方法,为每个产品都创建一个具体工厂原创 2021-12-29 00:01:19 · 414 阅读 · 0 评论 -
Java单元测试
1. 在单元测试中,使用test doubles2. 基于Mockit框架,创建替身、定义替身行为原创 2022-12-04 18:07:23 · 1105 阅读 · 0 评论 -
JVM实战(二) :关闭dump配置,使服务快速恢复
如何让服务在OOM时快速恢复,以及如何检测服务失败原因,比较适合有线上业务运维需求的同学原创 2022-11-13 16:45:43 · 1228 阅读 · 0 评论 -
Java Future学习
Java Future学习原创 2022-09-07 23:26:11 · 482 阅读 · 0 评论 -
mvn命令报错:java.lang.OutOfMemoryError: unable to create new native thread的原因排查
1. 序言最近,在使用mvn test命令跑单员测试时,遇到了java.lang.OutOfMemoryError: unable to create new native thread错误unable to create new thread类型的OOM错误,一般都发生在应用程序无法创建新线程时候其出现的原因主要分为两种:系统内存耗尽,无法为新线程分配内存创建线程数超过了操作系统的限制(linux中可以通过ulimit -a查看系统的最大线程数)这篇博客讲了很多排查上述错误的方法和实例原创 2022-05-18 10:42:38 · 6137 阅读 · 0 评论 -
JDBC连接如何防止SQL注入?
1. 绪言想要学习mybatis的相关知识,学习之前复习了下JDBC的相关知识发现自己竟然连如何实现JDBC连接都不知道了,真的是少壮用CV(粘贴复制),老大徒伤悲????总结一下,JDBC连接分为三步:加载JDBC驱动创建数据库连接操作数据库实现增删改查:获取statement,执行SQL语句,处理执行结果简单的连接和查询示例如下:import java.sql.*;public class Test { private static final String DR原创 2020-10-07 17:10:48 · 5491 阅读 · 0 评论 -
Intellij idea中properties文件的若干问题(on mac)
1. 修改idea的File Encoding本来自己铆足劲,准备好好攻克一个问题的,结果发现一个properties文件的中文注释咋个乱码了作为一个追求完美的人,无法容忍这样的情况存在通过查阅资料(IntelliJ IDEA文件编码调整),说是需要设置UTF-8编码,自己进行了设置Preferences →\rightarrow→ Editor →\rightarrow→ File Encodings其中,第4部分就是对properties文件的编码格式进行设置修改完后,发现能正常显式中原创 2022-03-31 00:36:59 · 2177 阅读 · 0 评论 -
Protobuf(四):Protocol Buffers实战
1. Protocol Buffers概述Protocol Buffers官网:https://developers.google.com/protocol-buffersProtocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler.原创 2022-03-15 10:55:34 · 927 阅读 · 0 评论 -
Protobuf(二):IDEA + maven + protobuf配置(on mac)
1. 絮絮叨叨都说懒惰是人类进步的源泉,有时候想想还真就那么回事学习了如何使用protoc命令编译,重度依赖IDEA且已经习惯了maven的我,就在想是否能在IDEA中一键编译.proto文件2. vscode配置protobuf编辑环境由于自己习惯了使用vscode做文本阅读,因此通过protoc命令编译的.proto文件,最开始都是通过vscode查看使用vscode查看的过程中,发现没有预发高亮,简单的内容修改,也没有语法提示因此,自己首先想为vscode配置protobuf编辑环境原创 2022-03-14 17:43:52 · 3678 阅读 · 0 评论 -
Protobuf(一):mac上同时安装proto2和proto3并编译.proto文件
1. 安装proto2mac上安装proto2,可以参考博客: 【工具使用】mac 安装 protobuf 2.5.0笔者安装的是2.6.1版本,对应的下载地址:v2.6.1/protobuf-2.6.1.zip笔者实验发现,proto3能编译proto2语法的.proto文件,反之则不行。报错信息如下: Unrecognized syntax identifier "proto3". This parser only recognizes "proto2".因此,出于方原创 2022-03-14 00:08:34 · 4532 阅读 · 0 评论 -
配置Intellij IDEA以查看tools.jar源码
1. 絮絮叨叨学习JCTree时发现,IDEA中展示的是反编译后的代码,并非像其他的JDK类一样展示.java文件而之前学习Java容器类时,有源码注释的加持,学习起来那叫一个如虎添翼 ????因此,还是希望IDEA中能展示tools.jar的源码,帮助自己学习JCTree2. 弯弯绕绕,都失败2.1 模仿rt.jar源码阅读网上查找时,找到了一篇文章:idea查看 rt.jar源码介绍了如何下载jdk源码,并将源码与IDEA绑定,从而能成功查看rt.jar中类的源码自己也按照文章原创 2022-02-12 14:25:53 · 1508 阅读 · 0 评论 -
mybatis基于c3p0连接池访问presto
1. 絮絮叨叨作为基于内存的、MPP架构的大数据查询引擎,presto支持多种数据源、无需自己的存储很多报表系统,会使用presto做查询引擎,加速查询公司自建的报表系统,一般都是基于Spring的Java Web系统,会使用数据库连接池访问presto业务基于c3p0数据库连接池,实现mybatis访问pressto,出现了一个固定的、执行时间较长的探活SQLSELECT TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARK原创 2022-01-27 10:48:39 · 1915 阅读 · 0 评论 -
LinkedHashSet学习(基于JDK1.8)
1. 类的特性LinkedHashSet的类注释,提供了以下信息LinkedHashSet基于哈希表和链表实现了Set接口允许有且只有一个null值在所有的元素中维护了一个双向链表,可以维护元素的插入顺序性能:与HashSet一样,在散列均匀的情况下,基本操作(add、remove、contains)的时间复杂度为O(1)O(1)O(1)但实际性能稍逊于HashSet,因为维护元素间的双向链表需要一定的开销。LinkedHashSet元素的遍历,不再基于桶,而是基于链表,遍历时间与原创 2021-10-06 18:29:13 · 1030 阅读 · 0 评论 -
TreeSet学习(基于JDK1.8)
1. 概述和TreeMap一样,自己好像从未使用过TreeSet ????学习HashSet时,发现HashSet的实现十分偷懒,直接基于HashMap历史构建哈希表,甚至重要方法的实现都是直接调用HashMap的方法TreeSet的实现也是一样的,基于TreeMap实现也就是说,TreeSet也是基于红黑树实现的,它的元素也是有序的1.1 TreeSet的特性TreeSet的类注释,提供了以下信息:基于TreeMap实现了NavigableSet接口,支持返回给定搜索目标最近匹配项的导原创 2021-10-06 17:20:12 · 1733 阅读 · 0 评论