JVM 类加载器 与 Java模块化系统
Java 虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该 类的二进制字节流”这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如 何去获取所需的类。实现这个动作的代码被称为“类加载器”(Class Loader)。 // 类加载器是一段代码
类与类加载器对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间
被不同的类加载器所加载的同一个.Class文件,在 Java 虚拟机中是两个互相独立的类,使用 instanceof 进行比较时 或 做对象所属类型检 查时,结果会返回 false
双亲委派模型Java 虚拟机视角下的两种类加载器:
123456flowchart LR a[类加载器] b1[启动类加载器] b2[其他所有的类加载器] a--ob1 a--ob2
启动类加载器(Bootstrap ClassLoader):使用 C++语言实现,是虚拟机自身的一部 分
其他所有的类加载器:这些类加载器都由 Java 语言实现 ...
LRU 缓存与 LinkedHashMap
最近在重温 146. LRU 缓存 这道题时,想看看Java标准库中有没有相关的实现,于是发现了LinkedHashMap。
什么是 LRU 缓存?LRU 缓存是一种缓存淘汰策略,当缓存满了之后,再有新的数据需要加入缓存时,它会把最近最少使用的数据移除。这种策略通过保持最近使用的数据,保证了高频数据的快速访问。
LinkedHashMap 简介LinkedHashMap 是 Java 集合框架中的一个类,它继承自 HashMap,并且在保持键值对无序的 HashMap 基础上,增加了按插入顺序或访问顺序排列的功能。这使得 LinkedHashMap 可以高效地实现 LRU 缓存。官方有关该类的文档是这么写的:
其中的构造方法是这个 ——>指定初始容量、负载因子和排序模式的构造方法: 1LinkedHashMap<K, V> map = new LinkedHashMap<>(int initialCapacity, float loadFactor, boolean accessOrder);那么LinkedHashMap在更新元素时都做了什么呢?我们找到 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
TLDR-hello-world
免费开源超好用的终端工具!——WindTerm
⭐Github:kingToolbox/WindTerm: A professional cross-platform SSH/Sftp/Shell/Telnet/Serial terminal. (github.com)
今天打开FinalShell,发现更新后收费了(悲),于是上网搜寻,发现了一款免费开源的终端工具——WindTerm。
WindTerm 是一款开源的高性能终端模拟器,支持跨平台运行。它具有以下特点:==支持 SSH 和 SFTP 连接远程服务器,支持文件传输和端口转发、支持命令提示和补全,支持折叠显示结果,支持自动复制选中内容、支持多种主题切换,支持窗格调整,支持锁屏功能、不需要安装,解压即可使用。==
界面WindTerm 有一个独特的布局,类似于一个 IDE。左侧包含资源管理器和文件管理器,中间是一个 zsh 终端窗口,右侧是会话和命令历史窗口,底部是发送和 shell 窗口。WindTerm 支持三种主题切换:亮白模式、暗黑模式和黑白相间模式。可以在设置中选择喜欢的主题。
连接WindTerm 支持 SSH 和 SFTP 连接远程服务器,支持文件传输和端 ...
从零开始的微服务实战-1. Nacos部署
在Alibaba Cloud Linux3 上部署 Docker、Nacos安装Docker官方首推的安装方式是安装Docker Desktop,但是我们只希望安装 Docker Engine, Docker Engine 和 Docker Desktop区别见。FAQs for Docker Desktop for Linux | Docker Docs —- 适用于 Linux 的 Docker Desktop 常见问题解答 |Docker 文档
我们通过 Linux 的包管理工具安装,这里笔者使用的系统是 Alibaba Cloud Linux 3.2104 LTS 64位,查阅和发现建议使用新一代的rpm软件包管理器安装社区版Docker(docker-ce)^1^,通过工具安装即可
123456789101112# 安装 dnfyum -y install dnf# 设置 docker-ce dnf 源dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-c ...
云昭云耀——抢票服务高并发场景下的重构
最近在重构云昭云耀项目时,又遇到了一个有趣的问题,就是抢票服务在高并发场景下的问题。在这篇文章中,我将记录一下我是如何重构抢票服务的,以应对高并发场景下的问题。
抢票部分重构先来看一看之前的业务代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.yundingshuyuan.recruit.service;// import ... @Slf4j@S ...
Lua脚本快速入门
[TOC]
背景什么是Lua脚本?Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
我为什么学习Lua脚本?为了更好的使用Redis数据库,你需要了解Lua脚本。Redis是一个开源的NoSQL数据库,它提供了低延迟的内存存储功能,非常适合用于应用缓存、消息传递等多种操作。Redis使用Lua脚本来让你能够以高效的方式完成更复杂的任务。脚本逻辑在数据库服务器上执行,这不仅可以重用,而且通常可以提高性能。Redis是一个开源的NoSQL数据库,它提供了低延迟的内存存储功能,非常适合用于应用缓存、消息传递等多种操作。Redis使用Lua脚本来让你能够以高效的方式完成更复杂的任务。脚本逻辑在数据库服务器上执行,这不仅可以重用,而且通常可以提高性能。Lua脚本在Redis中的使用提供了以下优势:
执行效率:任务直接在数据库服务器上执行,通常可以显著提高性能。
逻辑集中:逻辑直接存在于数据库服务器上,这对于跨多个应用程序使用的逻辑非常有用。
原子性执行:服务器在脚本运行时阻止其他操作,确保了操作的原 ...
Shell 编程简单实战
[TOC]
Shell 编程是一种在 Unix 或类 Unix 系统中操作命令行的脚本语言,它提供了一种自动化执行任务的方式。本文将介绍 Shell 编程的基础知识和常用技巧。
1. 注释与输出在 Shell 脚本中,注释以 # 开头,用于解释代码或添加备注。输出内容通常使用 echo 命令。
1234#!/bin/bash# 输出 Helloecho "Hello"
2. 变量与字符串操作Shell 中的变量使用方式类似于其他编程语言,可以存储数据和进行操作。字符串操作包括拼接、获取长度、截取等。
123name="YunDinger"echo "Hello, $name"echo ${#name} # 输出字符串长度
3. 数组操作Shell 支持数组,可以存储多个值。通过 ${array[@]} 或 ${array[*]} 获取数组的所有元素,$