为什么在Java中String被设计为不可变
最近在学习新的编程语言Scala了, 在Scala中变量分为val(不可变类型), 和var(可变类型). 突发奇想想到了在Java中的String都被声明为final, 也就相当于是Scala中都被声明为val了吧! 但是具体是为什么呢? 本篇文章带你探寻在Java中String被声明为不可变背后的秘密!
本篇文章主要内容:
- String源码简单分析
- String在JVM中的常量池的解析: 字面量, new, +连接, intern()
- String中的==和equals
- 什么是Java中的不可变? 不可变的好处与坏处?
- 证明回答String被设计成不可变和不能被继承的原因
- ……
示例代码: https://github.com/JasonkayZK/Java_Samples/tree/java-string
YAML文件总结
最近在学习Kubernetes, 其中建立pods需要用到YAML配置.
同时在Springboot中,推荐使用properties或者YAML文件来完成配置,但是对于较复杂的数据结构来说,YAML又远远优于properties。本文就快速介绍YAML的常见语法格式.
本篇主要内容:
- YAML的基本语法与格式要求
- YAML中的注释
- YAML的数据类型: 对象, 数组, 常量
- YAML中的特殊符号
- ……
NIO相关基础篇之实战
继前两篇介绍NIO的文章之后, 本篇主要是对之前NIO相关知识的实战. 实战内容包括:
- FileChannel: 传统IO与NIO读取对比
- SocketChannel: 服务端OIO与NIO对比(Selector和SelectionKey实现)
- 内存映射文件: ByteBuffer和MappedByteBuffe对比
- Scatter & Gatter
- TransferFron & TransferTo
- Pipe
- DatagramChannel
- ……
本文转自: Java NIO?看这一篇就够了!
代码实例: https://github.com/JasonkayZK/Java_Samples/tree/java-nio
NIO相关基础篇之操作系统I/O模型
本篇继上篇之后, 继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型下与NIO相关的知识, 主要包括:
- 用户空间以及内核空间:
- Linux 网络 I/O模型: Blocking I/O, Non-Blocking I/O, I/O Multiplexing, Signal Driven I/O, Asynchronous I/O
- 五种I/O模型对比
- 文件描述符fd以及Linux内核命令: select, poll, epoll等
- Zero-Copy相关;
- 直接内存
- Selector空轮询在Netty中的处理:
- ……
NIO相关基础篇之JDK
最近在看《Netty In Action》, 发现里面好多东西看不懂, 实际上是Java IO相关的知识太少了! 尤其是Java 1.4之后推出的NIO. 所以在网上搜集了资料, 在这里整理一下关于Java NIO的相关知识.
- Java IO体系以及IO相关主题
- 什么是NIO? NIO与OIO(Old IO)/IO的区别是什么?
- Buffer(缓冲区): 视图缓存区类以及相关问题, Buffer的属性, 使用
- Channel(通道): 通道的种类, 如何获取通道, 使用transferTo连接通道
- FileLock(文件锁): 文件锁lock()与tryLock()
- Selector(选择器): 选择器的种类与方法, SelectionKey的四个重要常量
- 简单介绍AIO
- …….
代码实例: https://github.com/JasonkayZK/Java_Samples/tree/java-nio
在Linux下配置Docker的相关问题以及工具推荐
今天在VSCode中添加与Docker相关的插件时, 一直报错, 果然是Linux用户权限的问题. 本篇文章带你解决Docker在Linux操作系统中权限问题的同时, 教你简单配置Docker, 并推荐Docker管理的相关软件!
本篇包括:
- Linux下非root用户的权限配置(解决
connect EACCES /var/run/docker.sock
错误)
- Docker设置国内安装源
- Docker相关管理软件推荐
- ……
Kubernetes之Minikube安装与无法获取docker镜像源的解决方法
今天在安装部署Minikube的时候, 使用minikube start的时候, 由于k8s镜像源被墙无法拉取所需要的镜像,所以通过在阿里云下载镜像通过docker tag 改标签的方式来进行.
本篇文章主要内容:
- Minikube的安装与配置
- Minikube安装镜像源获取shell
- Kubernetes简单配置
- 一些Kubernetes的工具
- ……
Spring中xml、注解和JavaConfig到底选哪个
xml、注解和JavaConfig作为Spring中常用的三种配置方式有何区别, 三种方法分别适用于什么场合, 本篇文章为您一一解答.
本文概要:
- 为什么说xml配置是类型不安全的配置方式?
- 如何使用注解进行配置?
- 注解配置是万能的吗?
- 如何使用Java Config进行配置?
- xml、注解、Java Config,到底该如何选择?
使用RSS构建你自己的聚合信息
之前就看到github上面的一个叫万物皆可RSS(RSSHub)的项目, 但是一直都没时间看. 直到最近, 感觉微信公众号里面的文章太多了! 而且爪机也很是不给力, 所以就试了试RSS订阅的方式, 一试不当紧, 马上就爱上了这种Geek的获取信息的方式.
本文主要讲述了对于小白而言的有关RSS的一切! 不论之前你是否接触过RSS, 在阅读了本文之后, 你都会学到:
- RSS是什么? RSS能帮助我做什么?
- 如何使用RSS? (创建, 订阅, 信息获取)
- RSS订阅源
- 关于RSS的一些工具, 优化
- ……
Java中的代理模式-静态代理与动态代理
在Spring的体系下, 大多数的实现都在使用动态代理, 如: Spring的AOP, 事务注解, Mybatis的mapper, 分页插件也都离不开代理模式.
示例源码: https://github.com/JasonkayZK/Java_Samples/tree/java-proxy
本篇文章讲述了代理模式相关的内容, 主要包括:
- 什么是代理? 如何使用代理?
- 代理模式
- 静态代理
- 动态代理的实现, 语法, 内幕
- CGLib动态代理和JDK动态代理的区别与应用
- Spring中使用了哪种代理方法
- …………………