字节码分析-Java中String用==判断值相等一定是错的么
经常听到有同学讨论,在Java中String判断值相等应该用equals()而不能用==,并且分析的信誓旦旦。那么真相真的是这样么?==就完全不能用么?Java内部的原理究竟是如何呢?这需要理解它们背后的原理。下面是详细的原理分析:
已为您筛选出属于「Java技术研究」核心专栏下的所有技术博文与考级解析
经常听到有同学讨论,在Java中String判断值相等应该用equals()而不能用==,并且分析的信誓旦旦。那么真相真的是这样么?==就完全不能用么?Java内部的原理究竟是如何呢?这需要理解它们背后的原理。下面是详细的原理分析:
经常遇到初学者问到关于Java环境变量配置的问题,基本围绕在集中情况:(1)环境变量要配哪些;(2)2024年了还需不需要配;(3)为啥我这个没配、那个没配也好用。会不会有什么影响。今天我就展开讲讲关于Java环境变量的定位和本质。 在配置 Java 环境变量时,主要涉及两个重要的变量:JAVAHOME 、 PATH和...
在群里交流的时候,经常遇到不同同学使用的JDK版本五花八门,并且很多不知道其使用版本的特点。作为Java开发者,理解不同JDK版本的核心特性和优势不仅能提高我们的开发效率,还能帮助我们更好地选择适合自己项目的版本。
更新节奏缓慢,因为每晚学习注意力不够集中,学习进展缓慢。本还给自己找了一大堆其他理由,但摸着良心问自己,似乎只有这个理由说的通。 想搞懂的太多,却始终没搞明白。先看一个用Netty编写的NIO Server的样例。 <!--break-- ServerHanler代码 上述代码改自Netty官方手册。NettyNioS...
距离上一篇博文已经过去了半个多月。这期间有一周多的时间用在了准备单位举办的英语竞赛上。余下的时间沉迷于陪孩子玩耍和睡觉,日复一日。 当然,我也抽空学习了Java NIO(None-Blocking / New IO) 一些知识,现总结如下。 Java的非阻塞IO的原理是采用了操作系统的多路复用器机制,即在一个通道(ch...
2012年,由于项目的需要我第一次接触到了Netty,当时Netty还处于3.x版本。我用十几篇博文记录了自己自学Netty的过程,虽然内容浅薄,但没想到被各处转载,我想主要是因为当时Netty的资料确实较少的缘故。 五六年过去了,Netty早已发展到了4.x系列,好奇也好,求知也罢,我打算重学Netty,虽然严格来说...
研究背景 上篇(Httpcomponents-core 从池中获取连接代码解析)研究中,我们知道,Httpcomponents-client底层维护了一个socket连接池,对于同一个地址,默认只可以建立2个连接。如果连接不及时释放,就会造成连接池中无可用的连接获取,从而导致请求等待(阻塞)。因此,我们需要关注连接池释...
最近使用Httpcomponents-client过程中遇到一个线程阻塞的问题。通过jstack dump线程发现,是block在AbstractConnPool的getPoolEntryBlocking中,于是决定研究一下Httpcomponents-client的源码。 <!--break-- 问题背景 邮件发送线...

刚发布的Java9中,有一个特性是新增了快速构造不可变集合的工厂函数。官方说明如下: JEP 269: Convenience Factory Methods for Collections Makes it easier to create instances of collections and maps with...
很久没更新博客,本想写篇关于Java9 集合工厂函数的博客,却没想到阴差阳错先遇到Lombok与Java9的兼容性问题。 <!--break-- 我在一个试验用的工程里,想做一些关于Java9新特性的试验,该工程原本是依赖lombok的。结果,编译时,原有的使用@Slf4j注解的的类报编译错误。 Error:(18,...
通信流程概括 任务部署时,xd-admin和container之间通过zookeeper的节点监听通信。container监听zk deployment节点,执行部署。同事绑定kafka message consumer和reactor subscriber。 任务启动时,xd-admin和container通过kaf...

对于保存在.properties文件中的敏感信息,支持采用加密的方式保存。然后在程序中解密使用。 <!--break-- 实现方案 采用自定义PropertySourceLoader的方式,在.properties配置文件加载期,遍历值,遇到指定格式的值,则执行解密操作。具体代码如下: CodecUtil即加解密工具类...
SpringXD on Yarn支持Container分组。可以更好的控制admin和container分配。 控制组内成员 以组单位整体控制生命周期 动态创建组 重启失败的容器 <!--break-- 实际上,XD on Yarn有内置分组admin和container。结合例子使用: 查看分组列表: 创建新的分组...

配置Spring Flo可在SpringXD的admin-ui页面提供拖拽式的组合job的定义。 从Pivotal官方下载Flo for XD 1.0.1版本 https://network.pivotal.io/products/p-spring-flo <!--break-- 解压flo-spring-xd-adm...

SpringXD中的Job实际即为Spring Batch中的Job,因此我们先按照Spring Batch的规范开发一个简单的Job。 <!--break-- 项目依赖: 实际这里无需配置spring-batch的依赖,因为会在springxd的parent pom中声明。而springxd的parent一般我们都会...
Spring XD可以on yarn运行。 下载on yarn运行包并解压 部署本地Hadoop环境 要on yarn运行需要依赖本地的Hadoop环境。下载Hadoop安装包并解压。笔者试验环境中已经提供了针对Hadoop的自动化配置脚本,这里不再赘述。 xd on yarn配置 修改servers.yml配置文件,...
Spring XD有两种运行模式:单机和分布式模式。这里关注分布式模式的部署和运行时特点。 <!--break-- 分布式集群组件 Spring XD分布式环境包含以下组件: - Admin 管理节点。管理Stream和Job的配置和发布,提供REST接口等。 - Container 运行流式任何和批量任务的节点,部署...
<a href="https://github.com/pagehelper/Mybatis-PageHelper" target="blank"Mybatis-PageHelper</a应该是目前使用比较广泛的一个Mybatis分页插件。我在几个项目里都引入了该插件。今天偶然阅读其源码,却发现了一个不小的问题。 注:...

为自己快速写博客开发的yami程序初稿基本完成了。需要打成jar通过命令行快速调用。具体可看Readme。 项目地址:[https://github.com/lihongzheshuai/yami ](https://github.com/lihongzheshuai/yami ) 搜了一下Gradle 打包execu...
先简单介绍下CSV和TSV文件的区别: <blockquoteTSV ,Tab-separated values的缩写,即制表符分隔值。关于TSV标准,参考:<a href="http://en.wikipedia.org/wiki/Tab-separatedvalues"http://en.wikipedia.org...