个人向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...
面向对象编程的设计模式之行为型模式
行为型设计模式
行为型模式关注对象之间的职责分配和通信方式。
责任链模式(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 的...
理解Java虚拟机JVM part1—内存结构
认识和理解JVM
因为这里是 JVM 这部分的第一块,从这里,我得回顾一下 JVM
的一些基础内容,作为基础了
JVM全称为Java Virtual
Machine(Java虚拟机)。它是运行Java字节码(.class文件)的虚拟计算机,它是一个虚构出来的计算机。
它屏蔽了底层操作系统和硬件的差异,实现了“一次编写,到处运行”(Write
once,Run Anywhere)
可见,JVM是 Java
天天吹的一次编写,处处运行(WORA)的关键内容,而且可知,我们写的Java代码会先被编译成一种中间语言(字节码,
.class文件),那么之后 JVM 的关键工作就是:
加载:找到这些.class文件
翻译&执行:把字节码指令一条条翻译成特定操作系统的机器码,并指挥CPU执行
管理资源:给程序运行过程中需要的各种“东西”(对象、信息)分配内存空间(堆、栈等),并在不需要时清理掉(垃圾回收)
因此,按照JVM的工作内容,JVM
主要由三个子系统组成(怎么又有四个):
类加载器:负责从文件系统或网络中加载
.class...
详解Java中的泛型及其各种特点
什么是泛型
泛型,即“参数化类型”,这是泛型的本质
也就是说,允许你在定义类、接口、方法时,将类型(如String、Integer)作为
“参数” 传入
这个操作让代码可以适配多种数据类型,同时保持了编译期的类型安全
定义方法的时候我们都需要定义形参列表,普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数。
image-20260120125635468
在调用普通方法时需要传入形参对应的数据类型的变量(实参),若传入的实参与形参定义的数据类型不匹配,则会报错,也就是ClassCastException
那么泛型就通过将类型参数化,使得数据类型也可以被设置为一个参数,在使用时再从外部传入一个数据类型,而一旦传入了具体的数据类型后,传入变量(实参)的数据类型如果不匹配,编译器就会直接报错。
image-20260120125826478
那么,上述的 T 就是类型参数占位符,代表任意引用类型,
当你需要返回一个 User 对象时,就用
ApiResponse<User>;
当你需要返回一个...
常用Git命令与知识总结
配置相关
配置基础配置
这类命令用于配置 Git 的全局 或 局部参数,如用户名、邮箱,是使用 Git
的第一步,确保提交记录归属正确。
123git config# 常用格式git config [--global] key value
例如
12345678# 配置全局用户名git config --global user.name "Your Name"#配置全局邮箱git config --global user.email "your@email.com"# 查看所有配置git config --list# 配置默认编辑器为 VSCodegit config --global core.editor "code --wait"
该命令没有什么输出,但是可能会弹出交互的填写内容
--global:全局配置,保存在用户目录下的
.gitconfig 文件(如 Windows 的
C:\Users\你的用户名\.gitconfig,macOS...
对项目管理与项目设计的一些反思和总结
MVP
MVP (Minimum Viable Product)
一个好创意的价值不在于“它看起来多酷”,而在于它能不能从
MVP 慢慢被打磨,成长为一个真正的精品产品。
我应该一直记住这句话
MVP 是创意的雏形,验证“这个方向对不对”;
而产品优化,则是不断收集反馈、迭代改进,把“能用”变成“好用”,最终成为用户离不开的精品。
UX三大法则:好用、好达、好愉悦
UX(User Experience)用户体验
用户体验(UX)的力量不只是“能不能用”,而是“好不好用”,甚至“让不让人喜欢用”。
我们的智研产品,对于部分弹窗的设计,部分页面的跳转,就存在好达方面的欠缺
在用户的操作存在问题的时候,应该在尽早的业务环节来提示;在用户使用一套常用的流程的时候,应该摆在最明显的位置,哪怕它不好看
对于 UX...












