文章509
标签267
分类66
为什么在Java中String被设计为不可变

为什么在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文件总结

YAML文件总结

最近在学习Kubernetes, 其中建立pods需要用到YAML配置.

同时在Springboot中,推荐使用properties或者YAML文件来完成配置,但是对于较复杂的数据结构来说,YAML又远远优于properties。本文就快速介绍YAML的常见语法格式.

本篇主要内容:

  • YAML的基本语法与格式要求
  • YAML中的注释
  • YAML的数据类型: 对象, 数组, 常量
  • YAML中的特殊符号
  • ……
NIO相关基础篇之实战

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相关基础篇之操作系统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

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的相关问题以及工具推荐

在Linux下配置Docker的相关问题以及工具推荐

今天在VSCode中添加与Docker相关的插件时, 一直报错, 果然是Linux用户权限的问题. 本篇文章带你解决Docker在Linux操作系统中权限问题的同时, 教你简单配置Docker, 并推荐Docker管理的相关软件!

本篇包括:

  • Linux下非root用户的权限配置(解决connect EACCES /var/run/docker.sock错误)
  • Docker设置国内安装源
  • Docker相关管理软件推荐
  • ……
Kubernetes之Minikube安装与无法获取docker镜像源的解决方法

Kubernetes之Minikube安装与无法获取docker镜像源的解决方法

今天在安装部署Minikube的时候, 使用minikube start的时候, 由于k8s镜像源被墙无法拉取所需要的镜像,所以通过在阿里云下载镜像通过docker tag 改标签的方式来进行.

本篇文章主要内容:

  • Minikube的安装与配置
  • Minikube安装镜像源获取shell
  • Kubernetes简单配置
  • 一些Kubernetes的工具
  • ……
Spring中xml、注解和JavaConfig到底选哪个

Spring中xml、注解和JavaConfig到底选哪个

xml、注解和JavaConfig作为Spring中常用的三种配置方式有何区别, 三种方法分别适用于什么场合, 本篇文章为您一一解答.

本文概要:

  • 为什么说xml配置是类型不安全的配置方式?
  • 如何使用注解进行配置?
  • 注解配置是万能的吗?
  • 如何使用Java Config进行配置?
  • xml、注解、Java Config,到底该如何选择?
使用RSS构建你自己的聚合信息

使用RSS构建你自己的聚合信息

之前就看到github上面的一个叫万物皆可RSS(RSSHub)的项目, 但是一直都没时间看. 直到最近, 感觉微信公众号里面的文章太多了! 而且爪机也很是不给力, 所以就试了试RSS订阅的方式, 一试不当紧, 马上就爱上了这种Geek的获取信息的方式.

本文主要讲述了对于小白而言的有关RSS的一切! 不论之前你是否接触过RSS, 在阅读了本文之后, 你都会学到:

  • RSS是什么? RSS能帮助我做什么?
  • 如何使用RSS? (创建, 订阅, 信息获取)
  • RSS订阅源
  • 关于RSS的一些工具, 优化
  • ……
Java中的代理模式-静态代理与动态代理

Java中的代理模式-静态代理与动态代理

在Spring的体系下, 大多数的实现都在使用动态代理, 如: Spring的AOP, 事务注解, Mybatis的mapper, 分页插件也都离不开代理模式.

示例源码: https://github.com/JasonkayZK/Java_Samples/tree/java-proxy


本篇文章讲述了代理模式相关的内容, 主要包括:

  • 什么是代理? 如何使用代理?
  • 代理模式
  • 静态代理
  • 动态代理的实现, 语法, 内幕
  • CGLib动态代理和JDK动态代理的区别与应用
  • Spring中使用了哪种代理方法
  • …………………