- 博客(150)
- 资源 (1)
- 收藏
- 关注
原创 Unity物理响应函数与触发器
通过合理选择碰撞/触发器响应,可高效实现物理交互与游戏逻辑检测。双方 Collider 均。用于处理刚体间的物理碰撞,用于检测物体进入特定区域,后执行,与渲染帧无关。
2025-07-19 22:29:31
664
原创 Unity 3D碰撞器
Box Collider(盒状碰撞器):基于矩形盒子,适用于立方体或规则形状的物体,如箱子、墙壁等。性能高效。Sphere Collider(球状碰撞器):基于球体,适用于球状物体,如篮球、头部模型。计算简单,性能好。Capsule Collider(胶囊碰撞器):由圆柱体和两个半球组成,适用于角色或长条物体,如人物角色、棍棒等。常用于角色控制器。Mesh Collider(网格碰撞器):使用物体的网格模型定义碰撞形状,适用于复杂或不规则物体,如雕塑或自定义模型。但性能开销大,需谨慎使用。
2025-07-19 12:38:16
1240
原创 原型设计模式
原型模式(Prototype Pattern)是一种创建型设计模式,通过复制现有对象(原型)来创建新对象,避免重复初始化过程。:当对象初始化成本高于复制成本时优先使用原型模式,结合工厂模式可构建更灵活的对象创建系统。
2025-07-19 09:34:49
396
原创 模板方法设计模式
抽象类(Abstract Class):定义算法的骨架,包含一个或多个模板方法(通常用final修饰,防止子类覆盖)。模板方法调用一系列抽象方法或钩子方法(hook methods)。具体子类(Concrete Class):继承抽象类,并实现抽象方法或覆盖钩子方法,以提供特定步骤的行为。关键特性模板方法控制算法流程。抽象方法强制子类实现必要步骤。钩子方法提供可选扩展点(默认实现可为空)。
2025-07-17 14:08:34
394
原创 命令设计模式
实现了调用操作与具体实现的分离,符合开闭原则,是GUI框架和事务系统的核心设计范式。,它将请求封装为独立对象,实现请求发送者与接收者的解耦。
2025-07-17 12:19:12
402
原创 Unity的刚体
立方体添加刚体(Rigidbody),Unity游戏引擎会计算出碰撞的效果让立方体产生力的作用,运行后立方体就会和平面产生碰撞停在平面上方。需要注意的是碰撞的前提条件是两个物体至少有一个刚体和2个碰撞体,如果去掉立方体的Box Collider,Unity游戏引擎就无法计算碰撞效果,立方体就会穿过平面下落。在Unity中,刚体(Rigidbody)组件是实现物理行为的核心组件。勾选后,物体不受物理力影响,只能通过代码直接控制位置(如传送带、电梯)。:常见物体(如箱子)设为1-10,避免过大导致物理不稳定。
2025-07-17 10:58:44
715
原创 观察者设计模式
维护观察者列表,提供注册/注销方法,通知观察者状态变化。接口已过时(Java 9+),推荐使用自定义实现或。定义更新接口,接收主题通知。
2025-07-16 22:25:34
436
原创 访问者设计模式
Java访问者设计模式通过解耦算法和数据结构,提供了高度的灵活性和扩展性,尤其适合处理复杂对象层次。然而,它可能引入复杂性和性能问题,因此应在需求变化频繁且对象结构稳定的场景中使用。在实际开发中,结合Java的特性(如接口和泛型),可以更高效地实现该模式。
2025-07-16 18:54:49
458
原创 Unity灯光面板环境设置
是灯光面板(Lighting Window)的核心功能之一,用于控制场景的全局光照效果,包括天空盒、环境光、反射和雾效等。这些设置直接影响场景的整体氛围和真实感,尤其适合需要快速调整全局光照的场景(如开放世界、室内环境等)。Unity的环境设置面板是快速调整场景全局光照的核心工具,通过天空盒、环境光、反射和雾效的组合,可以高效营造出从晴朗白天到阴森夜晚的多样化氛围。建议结合实际场景需求,逐步调整参数并实时预览效果,以达到最佳视觉表现与性能平衡。
2025-07-15 22:36:05
1517
原创 策略设计模式分析
策略模式(Strategy Pattern)属于行为型设计模式,允许在运行时动态选择算法或行为。它将算法封装成独立的类,使得它们可以相互替换,而不会影响客户端代码。
2025-07-15 21:59:51
338
原创 简单工厂设计模式
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,通过工厂类统一创建对象实例,客户端无需直接实例化具体类。抽象产品(Product):定义产品接口具体产品(ConcreteProduct):实现接口的具体类工厂类(Factory):根据输入创建具体产品实例。
2025-07-15 21:55:01
344
原创 StampedLock分析
StampedLock 是 Java 8 引入的一种高性能锁机制,位于包中。它通过乐观读策略优化了读写场景,解决了传统的写线程饥饿问题,适用于读多写少的高并发场景。
2025-07-15 21:47:38
256
原创 高并发点赞场景Synchronized、AtomicLong、LongAdder 和 LongAccumulator性能分析
synchronized、AtomicLong、LongAdder 和 LongAccumulator 都是 Java 中用于实现原子操作的类,但它们的性能在高并发下差异显著。性能主要取决于线程竞争程度:竞争越高,吞吐量(单位时间处理的操作数)和可扩展性(线程数增加时的性能表现)越关键。
2025-07-14 21:12:53
768
原创 CAS的原理分析
CAS(Compare and Swap,比较并交换)是一种在并发编程中广泛使用的原子操作,主要用于实现无锁同步机制。CAS的核心思想是:在修改共享数据之前,先检查其当前值是否与预期值一致,如果一致才进行更新,否则放弃操作。CAS操作总是返回内存位置的原始值(在比较前),这使得它可以用于重试机制:如果操作失败,程序可以基于返回的值重新计算预期值并重试。以下是一个伪代码示例,展示了CAS的基本逻辑(实际中,CAS通常由硬件指令实现,如x86的。在实际编程中,CAS被封装在库中,例如Java中的。
2025-07-14 14:46:32
1113
原创 Java内存模型(JMM)原理
Java内存模型(Java Memory Model, JMM)是Java虚拟机规范中定义的一套规则,用于规范多线程环境下的内存访问行为。可见性(线程间变量值的可见性)、原子性(操作的不可分割性)和有序性(指令执行的顺序性)。JMM通过抽象主内存(Main Memory)和线程工作内存(Working Memory)来管理数据共享,确保在高并发场景下程序的正确性和可预测性。主内存与工作内存:所有共享变量存储在主内存中,每个线程拥有自己的私有工作内存。
2025-07-13 11:35:16
346
原创 LockSupport的阻塞和唤醒
直接操作线程状态,无需先获取锁对象,避免了。原则,是Java并发体系的核心基础设施之一。仅保留一个许可证(上限为1),不会累积。会立即返回且保留中断状态(不抛出异常)。LockSupport的设计遵循。可指定唤醒目标线程,解决了。
2025-07-13 09:18:07
394
原创 Java中的wait和notify、Condition接口的使用
,仅在底层控制需要时使用wait/notify或Condition。接口提供了更灵活的线程协调机制,需配合。注意:Java 5+推荐使用。包中的高级同步工具(如。
2025-07-12 21:27:50
432
原创 CompletableFuture 详解
基本概念CompletableFuture 是 Java 8 引入的异步编程工具,用于简化非阻塞式任务编排。支持链式调用和组合操作提供异常处理机制可自定义线程池。
2025-07-11 23:16:17
1133
原创 Java线程池原理概述
自定义线程工厂@Override// 使用自定义工厂new CustomThreadFactory() // 注入工厂自定义拒绝策略@Override// 自定义处理逻辑(如记录日志/存入数据库)// 配置拒绝策略扩展线程池行为// 重写钩子方法@Override@Override。
2025-07-10 22:29:26
293
原创 进程和线程的概述
进程是操作系统进行资源分配和调度的基本单位。每个进程拥有独立的地址空间、内存、文件句柄等资源,相互隔离。例如,运行一个浏览器和一个文本编辑器就是两个独立的进程。进程的创建和切换开销较大,因为涉及资源分配。线程是进程内的执行单元,也被称为轻量级进程。一个进程可以包含多个线程,这些线程共享进程的资源(如内存和文件),但每个线程有自己的程序计数器、栈和寄存器。线程使得程序能并发执行任务,例如在一个Web服务器中处理多个客户端请求。主要区别资源隔离:进程间资源独立,线程共享进程资源。开销。
2025-07-08 21:00:36
537
原创 synchronized和ReentrantLock的区别
场景推荐机制基础同步需求需超时/中断/公平锁多条件变量精细控制避免复杂锁管理能用则优先使用;仅在需要扩展功能时引入,但需严格管理锁的释放。
2025-07-08 15:17:06
425
原创 Java线程submit和execute用法
优先使用 submit:当需要任务结果、精细控制异常或支持任务取消时(通过使用 execute:仅需简单异步执行且不关心结果时(资源消耗略低于submit注意:两种方法提交的任务都会进入线程池队列,由线程池调度执行。线程池的关闭需调用shutdown()或。
2025-07-06 11:34:54
519
原创 Java线程中的守护线程
定义:守护线程是为用户线程提供服务的后台线程,例如垃圾回收、日志记录等。它由JVM管理,生命周期依赖于用户线程。主要特点自动终止:当所有用户线程结束时,JVM会强制终止所有守护线程,即使它们正在运行。优先级较低:守护线程通常优先级低于用户线程,以减少对应用程序主逻辑的影响。非阻塞性:守护线程不会阻止JVM退出,这使得它适合执行非关键性任务。与用户线程的区别用户线程(默认类型)是应用程序的主线程,JVM会等待所有用户线程结束才退出。守护线程是辅助性的,不能独立存在。
2025-07-05 17:04:52
479
原创 Unity坐标系转换
方法将世界坐标转换为当前物体的本地坐标系。该方法接受一个世界坐标的Vector3参数,返回对应的本地坐标。方法将本地坐标转换为世界坐标系。该方法接受一个本地坐标的Vector3参数,返回对应的世界坐标。方向向量转换不考虑位置和缩放因素。将本地方向向量转换为世界空间。
2025-07-05 16:45:48
946
原创 Unity的Camera常用方法
Unity中的Camera(摄像机)是场景中用于渲染视图的核心组件,负责将3D或2D内容投射到屏幕上。每个Camera代表一个独立的视角,可以调整参数控制渲染效果,如视野范围、深度、裁剪平面等。
2025-07-05 16:18:33
349
原创 Java线程的join
join()是Java多线程编程中的一个关键方法,属于Thread类。它的主要作用是让当前线程等待调用join()方法的线程执行完毕后再继续执行。join()无参join()会使当前线程无限期等待,直到目标线程完成。带参数的join()方法允许指定最大等待时间。
2025-07-05 16:10:46
452
原创 java线程中的让步、打断、优先级
让当前运行线程主动让出CPU资源,进入就绪状态,使同优先级或更高优先级的线程有机会执行。通过优先级(1~10整数)影响线程调度顺序,优先级高的线程获得更多CPU时间。(若线程处于阻塞状态),或设置中断标志位(若线程在运行中)。向目标线程发送中断信号,触发。
2025-07-05 13:16:40
337
原创 使用Thread类和Runnable创建线程的区别
特性ThreadRunnable类型具体类接口资源占用高(每线程独立实例)低(可共享任务实例)扩展性受单继承限制无继承限制线程池兼容性需适配原生支持推荐场景简单独立任务资源共享/复杂系统/线程池。
2025-07-05 10:19:49
536
原创 创建对象的步骤
TLAB为每个线程预先分配一小块内存,对象优先在TLAB中分配。指令时,虚拟机会检查该指令的参数是否能在常量池中定位到类的符号引用,并检查该类是否已被加载、解析和初始化。若未加载,需先执行类加载过程。),按程序员定义的代码初始化实例字段和执行构造函数逻辑。将分配的内存空间(不包括对象头)初始化为零值。在多线程环境下,可能通过**CAS(Compare-And-Swap)若启用压缩指针(64位JVM),对象头可能包含压缩后的类型指针。),确保对象字段无需额外初始化即可使用。类加载检查是对象创建的第一步。
2025-07-01 22:21:56
436
原创 Java方法区中的常量池
Java方法区(Method Area)是JVM内存结构的一部分,用于存储类信息、常量、静态变量等数据。其中,常量池(Constant Pool)是方法区的重要组成部分,分为静态常量池(Class文件常量池)和运行时常量池静态常量池:编译期生成,存储于Class文件。运行时常量池:类加载时生成,支持动态扩展。JDK版本差异:JDK 1.7后字符串常量池移至堆,其他仍属方法区(元空间)。
2025-07-01 11:32:11
511
原创 设置方法区内存的大小
方法区(Method Area)是JVM内存模型的一部分,用于存储类信息、常量、静态变量等数据。在HotSpot虚拟机中,方法区的具体实现为。JDK 1.8移除了永久代,改用元空间(Metaspace)实现方法区。调整GC后剩余空间比例,避免频繁扩容。,具体配置方式因JVM版本而异。通过GC日志监控方法区内存变化。为初始阈值,达到后会触发GC;为上限(默认无限制)。
2025-06-30 22:30:22
739
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅