每日一问
未读
【每日一问】方法区垃圾回收,如何判断一个类是无用的类?
问:方法区垃圾回收,如何判断一个类是无用的类?参考答案:类需要同时满足下面3个条件才能算是无用的类:该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。加载该类的 ClassLoader 已经被回收。该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何
每日一问
未读
【每日一问】JVM有哪些垃圾回收算法?
每日一问
未读
【每日一问】说说java虚拟机运行时数据区
不同虚拟机的运行时数据区可能略微有所不同,但都会遵从 Java 虚拟机规范, Java 虚拟机规范规定的区域分为以下 5 个部分:程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节
Java
未读
【JVM篇】从源码角度分析JVM类加载机制
本文系统阐述了JVM的跨平台实现原理、Java编译过程及类加载机制。JVM通过将Java源码编译为平台无关的字节码(.class文件),再由各平台JVM解释或编译为本地机器码执行,实现“一次编译,到处运行”。javac编译过程包括词法分析、语法分析、语义分析、解语法糖等八个阶段,生成符合JVM规范的字节码。类加载子系统负责加载、验证、准备、解析和初始化类,采用双亲委派机制(Bootstrap/Extension/Application类加载器)确保类唯一性和安全性,避免核心库被篡改。特殊场景如Tomcat需打破双亲委派,通过自定义类加载器实现Web应用隔离和热部署。
GoLang
未读
Go 1.18 泛型全面讲解
Go 1.18正式引入争议已久的泛型特性,通过类型形参(Type Parameter)和类型实参(Type Argument)实现代码复用。其核心机制包括:
1. **泛型类型**:如 `type Slice[T int|float32] []T`,通过类型约束(Type Constraint)限定可接受的类型,实例化后(如 `Slice[int]`)才能使用。
2. **泛型方法**:泛型类型可定义方法(如 `(s MySlice[T]) Sum() T`),实现通用数据结构(如队列、栈)。
3. **泛型函数**:如 `func Add[T int|float64](a, b T) T`,支持自动推导类型实参。
接口被重新定义为“类型集”(Type Set),支持通过 `|` 组合类型或接口,并引入 `~` 指定底层类型、`any` 替代 `interface{}`、`comparable` 约束可比较类型等新特性。泛型适用于为不同类型编写相同逻辑的场景,可避免反射带来的性能损失和类型安全问题,但需注意其语法限制(如匿名结构体/函数不支持泛型)。
每日一问
未读
【每日一问】java创建对象的过程
java创建对象的过程(1)类加载检查Java虚拟机(jvm)在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化。如果没有,则会先执行相应的类加载过程。(2)内存分配在通过(1)后,则开始为新生的对象分配内存。该对象所需的内存
每日一问
未读
【每日一问】jvm优化原则是什么
jvm优化原则是什么尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。核心是STW的时间,相对于YoungGC,FullGC会有很长的STW时间。所以JVM优化首先就是减少FullGC执行次数和时
每日一问
未读
【每日一问】讲一下 JVM 的主要组成部分及其作用?
JVM包含两个子系统和两个组件:两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。
每日一问
未读
【每日一问】Tomcat如果使用默认的双亲委派类加载机制行不行,为什么?
首先我们思考一下:Tomcat是一个web容器,那么它要解决什么问题? 1)、一个web容器可能需要部署两个应用程序,不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求同一个类库在同一个服务器只有一份,因此要保证每个应用程序的类库都是独立的,保证相互隔离。 2)、部署在同一个w
K8S-云原生
未读
Kafka 基本原理.md
Kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写
k3s集群搭建与Rancher部署
本文详细介绍了K3S与Rancher的部署流程,主要包含以下步骤:
1. **环境准备**:通过自动化脚本初始化CentOS7系统,安装依赖包、配置内核参数、关闭防火墙及SELinux,并安装Docker运行时。
2. **K3S部署**:在Master节点安装K3S Server,配置服务节点端口范围;Agent节点通过Token加入集群。同时部署NFS存储并配置默认StorageClass。
3. **证书管理**:生成自签名SSL证书,创建Kubernetes TLS密文,确保Rancher通信安全。
4. **Rancher安装**:使用Helm添加Chart仓库,通过私有证书方式部署Rancher,并设置初始访问密码。
5. **私有仓库配置**:配置containerd支持私有镜像仓库,包括证书认证和镜像加速。
6. **问题解决**:针对cgroup驱动不一致等常见问题提供解决方案。
全文涵盖系统初始化、集群部署、安全配置及运维优化,适用于轻量级Kubernetes环境搭建。
PHP
未读
为什么 in_array(0, ['a', 'b', 'c']) 返回true
在PHP中,数据会自动转换类型后再进行比较。<br />
这样可能会导致一些费解的现象: in_array(0, ['a', 'b', 'c']) 返回true
音乐天地

