随笔分类 - java
关于java语言的博客
摘要:使用jdk内置的工具 import org.apache.commons.io.IOUtils; import java.nio.charset.Charset; public class TestProcess { public static void main(String[] args) th
阅读全文
摘要:关于单分派和双分派 所谓 Single Dispatch,指的是执行哪个对象的方法,根据对象的运行时类型来决定;执行对象的哪个方法,根据方法参数的 编译时类型 来决定。所谓 Double Dispatch,指的是执行哪个对象的方法,根据对象的运行时类型来决定;执行对象的哪个方法,根据方法参数的 运行
阅读全文
摘要:前言 本项目使用的 IDE 为 IDEA 2023.3.3(社区版)。 文本块 java17之前的写法,双引号需要转义,换行需要\n,需要加号拼接 public class TestString { public static void main(String[] args) { String js
阅读全文
摘要:问题 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.1.13.
阅读全文
摘要:代码示例 import org.apache.commons.beanutils.BeanUtils; public class TestBeanUtils { public static void main(String[] args) throws Exception { testApacheB
阅读全文
摘要:Maven中各种scope的区别 compile,默认,参与编译,测试,运行,打包等过程,大部分依赖都是这个 test,仅参与测试代码的编译,运行,如junit runtime,参与测试,运行,打包,不编译,如mysql-connnector provided,参与编译,测试,运行,不打包,如jav
阅读全文
摘要:前言 GroovyClassLoader 也是 Java 的一个类加载器实现,它可以将一段源码解析为 Class。xxl-job 中的 GlueFactory 就使用了此类加载器来支持 GLUE 运行模式(任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定J
阅读全文
摘要:使用 docker 安装 下载镜像 docker search mssql-server docker pull datagrip/mssql-server-linux 创建容器 docker run -d --name sqlserver -p 1433:1433 -e 'ACCEPT_EULA=
阅读全文
摘要:简介 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Mar
阅读全文
摘要:### 介绍 Jersey是一个REST框架,类似 SpringMVC,必须运行在Servlet容器中,如Tomcat或Jetty。 ### 使用 #### 在SpringBoot内嵌Tomcat容器中使用 ```xml 1.8 2.26 2.1 javax.ws.rs javax.ws.rs-ap
阅读全文
摘要:问题描述 import org.apache.commons.codec.digest.DigestUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import
阅读全文
摘要:前言 单元测试用来保证我们的代码能够正常运行,输入一组数据,能够得到期望的结果,一般以方法作为最小单元。 简单使用 添加依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</ver
阅读全文
摘要:前言 当我们进行单元测试时,可能某个依赖的服务还没有开发完成(如RPC或HTTP调用),这种情况下我们就可以对依赖服务创建一个模拟对象,这样我们就可以更加关注于当前的测试类,而不是依赖的服务类。Mockito是一个强大的模拟测试框架,可以让我们很方便的创建模拟对象并进行行为验证。 添加maven依赖
阅读全文
摘要:前言 计算机使用二进制来存储所有数据,对于整数,直接转成二进制就可以了,如int类型的15,二进制表示为 00000000 00000000 00000000 00001111 对于浮点数,如何转换成二进制呢,答案是使用IEEE 754标准。 原理 IEEE 754规定,对于32位的浮点数,最高1位
阅读全文
摘要:前言 Java中HashMap使用链地址法来解决hash冲突,底层使用数组加链表的结构,Java8之后,对底层结构进行了优化。 当链表长度大于8时,就会转换成红黑树(如果此时数组长度小于64,先扩容), 当红黑树节点数量小于6时,再次转换成链表。 但我们知道,红黑树是一个二叉搜索树,所以要求Map的
阅读全文
摘要:前言 今天在学习maven源码时,发现其中使用到了Plexus框架,它也是一个IOC容器(类似Spring和Guice),在maven中被大量使用。 添加依赖 <dependency> <groupId>org.eclipse.sisu</groupId> <artifactId>org.eclip
阅读全文
摘要:前言 Thrift是一个可以跨平台,跨语言的RPC(远程过程调用)框架,通过IDL(接口描述语言)来定义数据类型和接口,相当于Protobuf和gRPC的结合体。Thrift最开始由Facebook开源,后来贡献给了Apache。 下载编译器 官网,这里我们下载windows版本的编译器thrift
阅读全文
摘要:前言 gRPC是一个谷歌推出的高性能的RPC框架,遵从server/client模型,可以使client调用server的接口就像调用本地方法一样简单,gRPC使用ProtoBuf来定义数据类型和接口,相比RestAPI,传输数据更少,性能更高。 下载proto编译器 不仅需要下载protoc编译器
阅读全文
摘要:前言 在学习Netty时,发现可以整合ProtoBuf相关的处理器,所以先来学习一下ProtoBuf相关知识。 关于ProtoBuf ProtoBuf可以看做一个序列化(对象转成字节数组)和反序列化(字节数组转成对象)工具。相比Java本身的序列化,ProtoBuf可以支持跨语言,如使用Java序列
阅读全文
摘要:前言 今天在学习Apollo(配置中心)的客户端源码时,发现其中使用到了guice,它是谷歌推出的一个轻量级(相比Spring)的依赖注入框架,在很多开源项目中都有用到,如elasticsearch,maven等。 添加依赖 <dependency> <groupId>com.google.inje
阅读全文