个人向galgame原声带或相关音乐整理及其资源
也是一直以来打算整理一下自己爱听的galgame ost
或者其他galgame相关的音乐,按照专辑的方式进行整理,同时我有的也会扒下来上传
就借助这个机会,好好的搞一下吧
顺序随缘
持续更新
【FLAC+MP3】AIR ORIGINAL
SOUNDTRACK
神尾观铃镇楼
AIR ORIGINAL SOUNDTRACK
通过网盘分享的文件:AIR ORIGINAL SOUNDTRACK.zip
13XeUCWQxV19snaDqzz48uA?pwd=1174 提取码: 1174 解压 10086
【WAV】ゲーム「水葬銀貨のイストリア」Sound
Track/ウグイスカグラ
【WAV】ゲーム「水葬銀貨のイストリア」Sound
Track/ウグイスカグラ
【WAV】ゲーム「水葬銀貨のイストリア」Sound Track/ウグイスカグラ.zip
百度网盘
提取码: 1174
【FLAC】さよならアーリーサマー/やなぎなぎ、麻枝准
img
百度网盘
提取码: 1174...
详解Java之集合框架 part1—集合框架概述及其List接口下的常用容器
集合概述
Java 集合框架概述
Java 集合,也叫作容器,主要是由两大接口派生而来:
一个是 Collection接口,主要用于存放单一元素;
对于Collection
接口,下面又有三个主要的子接口:List、Set 、
Queue。
另一个是 Map 接口,主要用于存放键值对。
Java 集合框架概览
如下是更详细的,带上了抽象类的
image-20260204114015885
集合框架的体系如下
接口(Interfaces):定义集合的行为(如
Collection, List, Set,
Queue, Map)。
实现类(Implementations):提供具体的数据结构(如
ArrayList, HashSet, LinkedList,
HashMap)。
算法(Algorithms):如排序、查找等(通过
Collections 工具类提供)。
迭代器(Iterator):用于遍历集合元素。
那么,在这里简单说一下 List, Set, Queue,...
Dubbo_part2—详解Dubbo的RPC远程服务调用
前言
上次我们说了,Dubbo
主要用于构建分布式服务架构。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java
RPC框架,这篇文章就细说如何使用 Dubbo 进行 RPC 远程调用
别忘了,Dubbo
是提供了地址发现、负载均衡、流量管控等治理能力,上次我们说了Dubbo的架构如下
服务提供者:实现业务逻辑的模块,将业务接口暴露为RPC服务,供其他服务调用
服务消费者:调用远程服务的模块
注册中心
负载均衡器
监控中心
img
架构上我们抽象成了两层,代表了一个微服务框架必须具有的基本功能:
服务治理层:服务治理控制面不是特指如注册中心类的单个具体组件,而是对
Dubbo
治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管控策略、Dubbo
Admin 控制台等。
服务调用层:实际上,这是一整个数据面,数据面代表集群部署的所有 Dubbo
进程,进程之间通过 RPC 协议实现数据交换,Dubbo
定义了微服务应用开发与调用规范并负责完成数据传输的编解码工作。
所以说今天回到...
Redis part6—Redis3种常用的缓存读写策略及其缓存问题详解
介绍Redis的缓存读写策略
前一阵子,我写了个熟练使用 Redis,但是我一想,缓存常用的 3
种读写策略,我却不怎么知道
所以说,今天来系统的介绍一下这些内容,Redis有三种读写策略分别是:
旁路缓存策略
读写穿透策略
异步缓存写入策略
三种缓存读写策略各有优势,需要我们根据实际的业务场景选择最合适的
Cache Aside Pattern
旁路缓存模式
Redis 的 旁路缓存模式(Cache-Aside
Pattern),也被称为 懒加载缓存(Lazy Loading)或
旁观者缓存模式,是目前最常用、最经典的缓存使用策略之一,比较适合读请求比较多的场景
旁路缓存模式中服务端需要同时维护DB和Cache,并且是以DB的结果为准。
也就是
缓存是“旁路”的,不是主数据源;数据库才是权威数据源。
那么,整个读写操作的流程大概如下
读:
应用程序在读取数据时,先查 Redis 缓存。
如果缓存命中(cache...
Dubbo part1—重新认识Dubbo并且使用Dubbo框架搭建微服务
重新认识Dubbo
Dubbo 最初被定位为一个高性能的 RPC
框架,但这是过去,随着 Dubbo 3 的演进(尤其是与 Spring Cloud
Alibaba 的整合),这个定义已远远不足以描述它的全貌。
因为,它已经具备了完整的
微服务治理能力,包括服务注册发现、配置中心、熔断限流、可观测性等,是一个面向云原生、支持多语言、具备完整微服务治理能力的一站式微服务解决方案。
什么意思,Dubbo 不是只有那几个注解来作为 RPC
框架的能力了,而是可以作为 Spring Cloud Alibaba
中的单独一个框架,自己实现服务注册发现、配置中心、熔断限流、可观测性等这些微服务框架需要的功能。
所以说,Dubbo 3
不再只是调用远程方法,而是构建和运维整个微服务体系的基础设施。
img
服务治理、服务通信。这是dubbo框架所提供的核心功能。实际上也是微服务框架所要提供的核心功能。
Dubbo 与 Spring Cloud 对比
而且Dubbo开发相较于 Spring Cloud 具有一些优势
Dubbo 开箱即用,相对于...
面向对象编程的设计模式之行为型模式
行为型设计模式
行为型模式关注对象之间的职责分配和通信方式。
责任链模式(Chain...
面向对象编程的设计模式之详解结构型模式
结构型设计模式
结构型设计模式关注处理类或对象的组合,形成更大的结构。
适配器模式(Adapter):将一个类的接口转换成客户期望的另一个接口,使原本不兼容的类能一起工作。
桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。
组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次关系,统一处理单个对象和组合对象。
装饰器模式(Decorator):动态地给对象添加额外职责,比继承更灵活。
外观模式(Facade):为子系统提供一个统一的高层接口,简化客户端使用。
享元模式(Flyweight):通过共享技术有效支持大量细粒度对象的复用。
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。
适配器模式
对象适配器模式
适配器模式(Adapter...
面向对象编程的设计模式之详解创建型模式
设计模式介绍
设计模式是一套被广泛接受和验证的软件设计解决方案,它描述了在特定情境下的解决问题的方法。设计模式提供了一套通用的设计原则和模式,用于解决软件设计和开发过程中的常见问题,例如对象创建、行为管理和结构组织等。
一般来说,设计模式解决的最经典的问题就是结构清晰,提高复用性
提高代码的可重用性:设计模式提供了经过验证的解决方案,可以在不同的项目和场景中重复使用。
提高代码的可维护性:设计模式使得代码结构更加清晰,易于理解和维护。
提高代码的可扩展性:设计模式使得系统更容易进行功能扩展和修改,同时降低了对现有代码的影响。
提高开发效率:设计模式提供了一种标准化的设计方法,可以加快开发过程,并减少出错的可能性。
提高代码的质量:设计模式经过多次验证和实践,可以帮助开发者编写更加优雅和高效的代码。
一些面向对象设计原则
单一职责原则
一个类应该只有一个引起它变化的原因。
每个类/模块/函数只负责一项功能。
这样很好的降低了耦合度,提高可读性和可维护性。
反例:一个...
使用Arthas来监控线上服务并定位问题
什么是Arthas
通常,本地开发环境无法访问生产环境,如果在生产环境中遇到问题,无法调试也无法暂停服务。那么,Arthas
作为生产环境中的观察者永远不会暂停正在运行的线程。
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用
load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,来帮助排查线上问题。
在你的生产环境上安装Arthas
Arthas 支持在 Linux/Unix/Mac
等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车
执行即可:
1curl -L https://arthas.aliyun.com/install.sh | sh
上述命令会下载启动脚本文件 as.sh
到当前目录,你可以放在任何地方或将其加入到 $PATH 中。
直接在 shell 下面执行./as.sh,就会进入交互界面。
也可以执行./as.sh...
理解Java虚拟机JVM part5—深入理解类加载器
类加载器
首先回顾一下类加载过程。加载 -> 验证 -> 准备 -> 解析 ->
初始化
加载是类加载过程的第一步,主要完成下面 3 件事情:
通过全类名获取定义此类的二进制字节流
将字节流所代表的静态存储结构转换为方法区的运行时数据结构
在内存中生成一个代表该类的 Class
对象,作为方法区这些数据的访问入口
类加载器介绍
类加载器从 JDK 1.0 就出现了,最初只是为了满足 Java
Applet(已经被淘汰,反正是一种嵌入在网页中的特殊程序,用于生成动态内容,跟
JSP 差不多) 的需要。
后来,慢慢成为 Java 程序中的一个重要组成部分,赋予了 Java
类可以被动态加载到 JVM 中并执行的能力。
类加载器是一个负责加载类的对象。ClassLoader
是一个抽象类。给定类的二进制名称,类加载器应尝试定位或生成构成类定义的数据。典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。
每个 Java 类都有一个引用指向加载它的
ClassLoader。不过,数组类不是通过...
理解Java虚拟机JVM part4—类的文件结构和类的加载过程详解
类的文件结构
什么是字节码文件
在 Java 中,JVM 可以理解的代码就叫做字节码,也就是
.java文件经过 Java 编译器编译后产生的扩展名为
.class 的文件。
字节码不是机器码,也不是人类可读的源代码,而是一种平台无关的二进制指令集,它不面向任何特定的处理器,只面向虚拟机,是一种中间语言
这是 Java 跨平台的核心实现。因为Java
程序编译成字节码后,可在任何安装了兼容 JVM
的平台上运行,无需重新编译。这是通过“虚拟机抽象层”实现的。
Java
语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。
Clojure(Lisp 语言的一种方言)、Groovy、Scala、JRuby、Kotlin
等语言都是运行在 Java
虚拟机之上。下图展示了不同的语言被不同的编译器编译成.class文件最终运行在
Java 虚拟机之上。.class文件的二进制格式可以使用 WinHex 查看。
运行在 Java
虚拟机之上的编程语言
Class 文件结构
根据...
理解Java虚拟机JVM part3—深入理解JVM垃圾回收机制
前言
当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。
如果没有特殊说明,都是针对的是 HotSpot 虚拟机。
常见面试题:
如何判断对象是否死亡(两种方法)。
简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。
如何判断一个常量是废弃常量
如何判断一个类是无用的类
垃圾收集有哪些算法,各自的特点?
HotSpot 为什么要分为新生代和老年代?
常见的垃圾回收器有哪些?
介绍一下 CMS,G1 收集器。
Minor Gc 和 Full GC 有什么不同呢
堆空间的基本结构
Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC
堆(Garbage Collected Heap)。
Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。
实际上,Java 堆划分不同区域,本质是为了适配...
理解Java虚拟机JVM part2—HotSpot虚拟机对象的创建过程解析
HotSpot虚拟机介绍
HotSpot 是 Oracle/Sun JDK、OpenJDK 默认的虚拟机,也是目前应用最广泛的
Java 虚拟机
HotSpot 有个东西比较牛逼,过计数器识别 “热点方法” 和
“热点循环”,对热点代码进行即时编译(JIT),将字节码编译为本地机器码执行,大幅提升性能,这个还真和纯解释执行不太一样,因为它是解释器(Interpreter)+
即时编译器(C1/C2)结合,解释器保证启动速度,JIT 保证运行性能。
对象的创建
v-8
那么大概就是这些步骤,这些步骤要都了解的
那么这环环相扣的五步可以简单来说成:校验→分配→初始化→元信息设置→构造执行
Step1:类加载检查
这步的核心是确认“能创建”
JVM 接收到 new XXX()
指令时,首先去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程
类加载的最终产物是 Class 对象,类加载会直到生成
XXX 的...












