java
文章平均质量分 71
java
不识君的荒漠
apche rocketmq contributor、incubator-shenyu contributor,基础组件研发方向。
展开
-
Slf4j使用Logback时,Logback如何初始化
SLF4J,全称 Simple Logging Facade for Java,是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架(例如Log4j、java.util.logging等)提供了统一的接口, 但自身并不实现日志功能。SLF4J 允许用户在部署时选择适当的日志库(即日志框架),比如 Logback、Log4j 等。原创 2023-11-26 19:41:39 · 694 阅读 · 0 评论 -
Netty服务如何使用Nginx代理转发请求并获得原始IP
示例,代理远端8080的netty服务。这一行配置。如果不配置,在netty服务端是无法获得原始客户端ip,但是配置上之后,netty需要调整代码。原创 2023-05-25 20:45:16 · 3298 阅读 · 0 评论 -
Netty的SO_LINGER不要随便用
SO_LINGER是一个Socket选项,它决定一个Socket关闭时的行为,因此配在server端配置的时候使用childOption配置,该选项针对每个连接配置生效,而不是全局性的配置。该配置主要在阻塞IO的关闭场景下用的更多,当然,对于非阻塞式IO这个也是同样可以使用的,毕竟是针对socket的关闭行为,但是实际意义有限。该参数指定了关闭时的超时时间,当SO_LINGER设置为0时,表示禁用SO_LINGER,关闭Socket后立即返回,内核丢弃套接字发送队列中的数据,并发送TCP RST。原创 2023-04-16 20:51:36 · 1115 阅读 · 0 评论 -
没用好HashMap,性能影响这么大
前言Java中的HashMap是一种(K,V)数据结构,在java中也是采用数组+链接的数据结构保存数据。在使用HashMap的时候,可能关注到下面这两个点:装载因子 扩容装载因子装载因子是针对HashMap中hash冲突对性能影响和空间消耗的一种权衡,表示HashMap的底层数组还剩余多少空位的时候进行扩容。装载因子越大,表示HashMap中的可用空间越少的时候才进行扩容,也就越容易出现hash冲突;装载因子越小,HashMap的空闲位置还有很多就要扩容,hash冲突的概率也大大减原创 2022-01-04 23:45:00 · 5058 阅读 · 0 评论 -
java动态加载配置文件
项目启动时需要从一些配置文件中加载相关配置,在运行过程中,希望修改配置文件的内容,可以重新加载配置。下面会提供一个基本示例,仅供参考。原创 2021-12-10 02:30:00 · 2234 阅读 · 0 评论 -
idea中使用spring boot + scala快速开发部署
准备1. idea、maven、jdk都已安装配置好,都是常规开发用到的工具2. scala已经下载本地并安装,下载地址:Download | The Scala Programming Language3. idea安装scala插件Spring boot 项目构建构建https://start.spring.io/https://start.spring.io/点击上面的链接快速构建一个spring boot工程:导入ideaScala集成开发配置配置原创 2021-09-14 09:39:33 · 2068 阅读 · 0 评论 -
Mac OS X配置JAVA_HOME环境变量
配置步骤1.编辑shell配置文件,在家目录下,文件名:.bash_profile(bash)或.zshrc(zsh),具体是哪一个,取决于你当前需要使用的或正在使用的shell。我以bash说明2.在.bash_profile加上如下配置:Mac OS X 10.5及其之后的版本export JAVA_HOME=`/usr/libexec/java_home`小于Mac OS X 10.5的版本export JAVA_HOME="/Library/Java/Home"反引号的是原创 2021-04-10 20:56:12 · 414 阅读 · 0 评论 -
java中synchronized锁的升级(偏向锁、轻量级锁及重量级锁)
java的同步锁知识点编码中如果使用锁可以使用synchronized关键字 Synchronized同步锁jvm内置的隐式锁(相对Lock,隐式加锁与释放) Synchronized同步锁的实现依赖于操作系统,加锁与释放会引起用态与内核态切换 jdk1.5之前加锁只能使用synchronized,1.6引入Lock同步锁(基于java实现,显式加锁与释放、性能更优) jdk1.6对于Synchronzied同步锁提出了偏向锁、轻量级锁、重量级锁的概念(synchronized的性能优化).原创 2021-03-28 19:05:28 · 606 阅读 · 1 评论 -
java关于switch的一道基础题
前段时间看见一道java的基础题,到现在时间过去的有点久,一模一样的原题是记不清了,还有个模糊印象,大概是这样: public static void main(String[] args) { int i = 4; switch (i) { default: System.out.println("default"); case 1: System.o原创 2020-08-16 01:13:00 · 721 阅读 · 0 评论 -
介绍一个实现ssh-2协议的java库:Ganymed SSH-2 for Java
官方地址官方地址:http://www.ganymed.ethz.ch/ssh2/,打开页面后,如下图位置,选择一个版本下载,我以最后发布版本说明,从图中也可以看到最后一次发版是在2006年,很老的一个库了。maven依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <versi原创 2020-07-26 23:56:24 · 2090 阅读 · 0 评论 -
java的枚举类定义静态valueOf(java.lang.String)方法的问题
问题的起因起因来自于我对于java枚举类的无知。我本来想定义这样一个枚举类:public enum MenuOptions { CHAT_ROOM("#1"), MENU("#0"), ERROR("#9999"); private String value; MenuOptions(String value) { thi...原创 2019-07-08 23:09:06 · 3269 阅读 · 1 评论 -
java集合类遍历的同时进行删除操作
1. 背景在使用java的集合类遍历数据的时候,在某些情况下可能需要对某些数据进行删除。往往操作不当,便会抛出一个ConcurrentModificationException,本方简单说明一下错误的示例,以及一些正确的操作并简单的分析下原因。P.S. 示例代码和分析是针对List的实例类ArrayList,其它集合类可以作个参考。2. 代码示例示例代码如下,可以根据注释来说明哪种...原创 2018-11-13 15:36:43 · 3014 阅读 · 2 评论 -
java中map的get方法key值类型的一个问题
描述:在HashMap中取值的时候,key值是0,用hashMap.get(0),却无论如何也取不到value,调试的时候仔细一看,key值的类型是Long型,然后传0L,即顺利取到值了。分析:Map<Long,String> map = new HashMap<>();map.put(0L, "string");map.get(0);代码大概就...原创 2017-03-07 09:52:06 · 10972 阅读 · 4 评论 -
ExecutorService 的理解与使用
原文链接:http://blog.csdn.net/bairrfhoinn/article/details/16848785接口Java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 Execut...转载 2017-01-22 14:29:10 · 1153 阅读 · 0 评论