自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 收藏
  • 关注

原创 总线机制简述

总线机制在计算机中起着连接和通信的关键作用。通过总线,CPU、内存和外部设备可以高效地传输数据和信息。随着技术的进步,总线速度、带宽和兼容性正在不断提升,总线机制也在不断优化,以适应现代计算机系统对性能和扩展性的需求。

2024-09-14 14:32:09 624

原创 计算机组成原理-内存部分

计算机组成原理中的内存部分是计算机体系结构的核心之一。内存主要负责存储数据和指令,CPU可以快速访问内存以执行程序。

2024-09-14 13:37:54 548

原创 嗅探技术(Cache Coherence Snooping)

处理器使用嗅探技术(Cache Coherence Snooping)来保证缓存数据和总线数据一致性,特别是在多处理器或多核系统中,多个处理器可能会缓存相同的内存数据。如果没有一致性协议,当一个处理器修改了某个内存地址中的数据,其他处理器的缓存中的相同数据就会变得不一致。因此,需要一种机制来保持缓存的一致性。:在嗅探协议中,多个处理器共享一个系统总线。处理器通过总线访问内存,读取和写入数据。每个处理器的缓存都通过监控(即嗅探)总线上的通信来确保自己缓存中的数据与内存和其他缓存中的数据保持一致。

2024-09-14 10:39:22 380

原创 MESI协议

定义:MESI协议是一种广泛使用的cache一致性和内存一致性协议,它支持回写(write-back)高速缓存,是解决多处理器系统中缓存一致性问题的一种有效方案。目的:确保在多个CPU缓存中存储的相同内存位置的数据保持一致,防止因缓存不一致导致的数据错误。MESI协议是一种基于Invalidate的高速缓存一致性协议,它通过定义四种状态(Modified、Exclusive、Shared、Invalid)来描述缓存行的状态,并通过严格的协议规则和状态转换机制来确保多个CPU缓存中数据的一致性。

2024-09-14 10:31:53 392

原创 死锁-java线程死锁

死锁是计算机系统中一个常见的问题,它指的是两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

2024-09-14 10:19:31 932

原创 Java 内部类包含静态内部类(Static Nested Class)、非静态内部类(Inner Class)

在 Java 中,内部类可以分为静态内部类(Static Nested Class)和非静态内部类(Inner Class)。它们之间的主要区别如下:1. 定义和语法区别:静态内部类:使用 static 关键字修饰。语法:class OuterClass { static class StaticNestedClass { /* ... */ } }非静态内部类:不使用 static 关键字修饰。语法:class OuterClass { class InnerClass { /

2024-09-11 11:12:27 476

原创 Java 中的多态、重载和重写

重写是子类对继承自父类的方法进行修改,使其表现出不同的行为。它是运行时多态的一部分。重写的前提是方法名称、参数列表和返回类型必须一致,且不能降低方法的访问权限。重载指同一类中多个方法有相同的名称,但参数列表不同(参数类型或数量)。它是编译时多态,通过方法签名的差异,编译器可以选择在何时调用哪个方法。多态允许父类引用指向子类对象,并在运行时决定调用哪个类的方法。它使代码更具灵活性和可扩展性。是重载方法,根据传入参数类型不同调用相应的方法。引用调用时,根据实际对象的类型决定调用的是。

2024-09-10 12:08:58 378

原创 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。

2024-09-08 08:54:25 1120

原创 模板方法模式

是一种行为设计模式,它定义了一个算法的骨架,将某些步骤延迟到子类中实现。通过模板方法,子类可以重定义算法的某些步骤,而不会改变算法的结构。

2024-09-07 14:17:21 612

原创 命令模式(Command Pattern)

(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以使用不同的请求、队列或日志来参数化对象。命令模式让你可以在不修改调用对象的情况下将请求排队、记录日志或撤销操作。

2024-09-06 16:43:46 1064

原创 代理模式(权限、远程调用、延迟加载、日志和缓存)

代理模式通过代理对象控制对真实对象的访问,既可以提高系统的安全性和可控性,也可以减少客户端和真实对象之间的耦合。干饭村的约会系统通过代理模式保护用户的个人资料,保证只有自己能够修改资料,而其他人只能查看和打分,从而增强系统的安全性和公平性。RMI 的核心思想是让客户端可以透明地调用位于远程服务器上的方法,就像调用本地对象的方法一样。在实现时,接口用于定义服务契约,客户端和服务器都依赖接口进行通信。

2024-09-05 19:46:52 1117

原创 组合模式(Composite Pattern)

通过使用组合模式,Menu和MenuItem都被视为Waitress只需要一个对象即可遍历所有菜单和菜单项。这使得代码非常灵活,易于扩展和维护。

2024-09-05 17:03:25 573

原创 迭代器设计模式

Iterator通过使用迭代器设计模式,我们可以轻松地遍历不同的菜单实现,并将它们合并输出,保持了代码的扩展性和灵活性,便于后续添加更多类型的菜单。

2024-09-05 15:32:37 591

原创 观察者模式

SubjectObserver观察者模式很好地解耦了数据源(气象站)和观察者(显示面板)。通过这种模式,当气象站的数据变化时,所有观察者都会自动收到通知并更新显示,扩展性好且易于维护。

2024-09-05 14:15:06 780

原创 享元模式(Flyweight Pattern)

享元模式通过共享对象来减少内存消耗,特别适用于大量细粒度对象的场景。然而,在使用享元模式时,需要注意区分对象的内部状态(共享部分)和外部状态(不共享部分),以确保对象的正确性和一致性。

2024-09-04 16:23:57 525

原创 extends 和 implements的区别

extends用于类与类之间(或接口与接口之间)的继承关系。implements用于类实现接口,类必须实现接口中的所有方法。

2024-09-03 21:07:34 240

原创 Android源码中的部分设计模式

Android源码中广泛使用了多种设计模式,以解决不同场景下的架构设计需求。以下是几个常见的设计模式及其在Android中的应用:1. 单例模式 (Singleton Pattern)应用: 单例模式确保一个类只有一个实例,并提供一个全局访问点。示例:Context: Context 类的实现(尤其是 ApplicationContext)经常以单例的方式使用,以确保全局唯一的应用上下文实例。ActivityManager: ActivityManager 是 Android 中管理应用进程和活

2024-09-03 17:26:31 1036

原创 原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是一种创建型设计模式,它允许你复制已有对象而无需使代码依赖它们所属的类。通常用于当创建对象的代价较高时,使用原型模式可以快速生成新对象。

2024-09-03 17:22:35 618

原创 装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地给对象添加新的行为,而不改变其结构。

2024-09-03 17:21:58 454

原创 适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。适配器模式通过将类的接口转换为客户期望的另一个接口,使原本接口不兼容的类可以合作。

2024-09-03 14:47:44 523

原创 部分设计模式(java语言版本)

在不破坏封装性的前提下,捕获对象的内部状态,并在该对象之外保存这个状态,以便日后恢复对象到之前的状态。: 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而无法一起工作的类可以协同工作。实例来避免创建过多的对象,从而节省内存。: 为请求创建一系列处理对象,每个处理对象决定是否处理请求或将请求传递到链上的下一个对象。: 定义对象间的一对多依赖,一个对象改变状态时,所有依赖的对象都会收到通知并自动更新。: 将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。

2024-09-03 14:23:32 1548

原创 View和ViewGroup

ViewGroup@Override// 布局子视图i++) {// 简单布局:将所有子视图叠放在一起@Overridei++) {View: 是 UI 组件的基类,负责绘制和事件处理。ViewGroup: 是一个容器,继承自View,用于管理和布局其子视图。关系ViewGroup继承自View,具有View的所有特性,并增加了对子视图的管理功能。它们通过继承和组合的方式密切相关。通过理解View和ViewGroup。

2024-08-31 11:31:12 371

原创 如何处理多点触控、滑动手势,以及如何通过 `MotionEvent` 获取触摸的详细信息(如坐标、压力、手指的数量等)

多点触控: 通过的和等方法处理多个触摸点的信息。滑动手势: 计算触摸点的移动距离(dx和dy),并实现滑动手势。触摸详细信息: 通过获取触摸点的坐标、压力、大小等信息,并在中处理这些信息。通过这些方法,你可以实现复杂的触摸交互,并根据需要处理各种手势和触摸事件。

2024-08-30 10:00:37 344

原创 如何使用 Canvas 和 Paint 进行绘制,以及如何处理自定义属性和解析 XML 属性

Canvas: 提供了绘制各种形状、图像、文本的方法。Paint: 定义了绘制内容的颜色、线条样式、文本样式等。自定义属性: 可以通过定义,使用TypedArray解析,并在 XML 布局文件中配置。通过这两个类和自定义属性的结合,你可以创建功能丰富且可配置的自定义视图,并且可以在项目中复用这些视图。

2024-08-29 21:27:52 725

原创 Android实现自定义方向盘-8自定义view的相关问题

这些问题帮助面试官评估你在开发复杂自定义控件时的能力,包括如何处理事件、动画、性能、适配、状态管理和组件间的协作。通过展现你在这些方面的理解和解决方案,你将能够证明自己在 Android 开发中的高水平和丰富经验。

2024-08-29 19:15:27 1322

原创 Android实现自定义方向盘-7livedata,viewmodel相关问题

关于ViewModelLiveDataSingleton模式和跨Activity数据共享的相关面试题通常会涉及 Android 架构组件、状态管理和数据持久化等方面的知识。

2024-08-29 18:28:16 1220

原创 Android实现自定义方向盘-6mvvm传递数据

通过Singleton模式的类,你可以确保在整个应用程序的生命周期内共享数据,并且这些数据在任何Activity中都可以访问和更新。这种方法可以避免转换为的问题,同时实现了跨Activity的数据共享。

2024-08-29 18:06:29 706

原创 Android实现自定义方向盘-5livedata实现

在。

2024-08-29 15:19:58 1398

原创 Android实现自定义方向盘-4解决触摸时指针跳跃的问题

为了解决点击指针时,指针跳转至反方向的问题,我们可以采取的方式,即只有当用户执行明显的拖拽动作时才更新方向盘的角度。这样可以避免单击或短距离移动时,指针突然跳转到反方向的问题。

2024-08-29 15:02:09 659

原创 Android实现自定义方向盘-3添加平滑处理

为了使陀螺仪数据更加平滑和稳定,可以通过应用低通滤波器或使用滑动平均法来减少噪声。以下是如何在现有的代码基础上添加平滑处理的详细步骤。

2024-08-29 14:51:36 451

原创 Android实现自定义方向盘-2添加陀螺仪

为。

2024-08-29 14:41:06 470

原创 导入AppCompatActivity和Activity的区别

和Activity都是 Android 中的核心组件,用于定义一个屏幕(Activity),但它们有一些重要的区别,特别是在兼容性和功能扩展方面。

2024-08-29 13:11:20 473

原创 Android实现自定义方向盘

创建一个继承自。

2024-08-29 10:40:24 521

原创 IntentService和JobIntentService已弃用,替代方案用WorkManager

已经在 Android API 30 (Android 11) 中被标记为过时(deprecated)。这意味着虽然你仍然可以在现有代码中使用它,但在未来的 Android 版本中它可能会被完全移除或不再被推荐使用。

2024-08-27 12:11:22 474

原创 java class default 关键字

接口的默认方法是否被执行,取决于实现类是否重写了该方法以及在运行时如何调用它。如果实现类没有重写默认方法,并且调用了这个方法,那么默认方法才会被执行。

2024-08-16 13:06:33 413

原创 Activity启动过程

Activity是Android应用程序的四大组件之一,负责应用程序的用户界面。Activity的启动可以通过应用内部或外部(如Launcher)触发。启动过程包括Intent的创建、传递、处理以及Activity的创建和显示等多个步骤。Activity的启动过程是一个复杂而有序的过程,涉及Intent的创建与传递、Instrumentation的介入、AMS的接收与处理、进程管理以及Activity的创建与显示等多个环节。这些环节共同协作,确保了Activity能够顺利启动并展示给用户。

2024-08-05 11:28:30 634

原创 Binder机制的原理

Binder机制是Android系统中一种高效、安全、可靠的进程间通信机制。它通过Binder驱动、Binder服务和Binder代理等组件实现了不同进程间的数据交换和通信。Binder机制采用内存映射和一次拷贝技术提高了通信效率,并通过在内核中添加可靠的进程身份标识提高了安全性。这使得Android系统能够高效地处理各种跨进程通信场景,如Activity与Service之间的通信、跨应用程序的数据交换等。

2024-08-05 10:43:49 398

原创 认识Android Handler

Android Handler” 通常指的是 Android 开发中的Handler类,它是 Android SDK 的一部分,用于管理消息队列和线程之间的通信。它在 Android 开发中非常有用,特别是在计划消息和可运行对象(Runnables)在未来某个时间点执行时。

2024-08-04 21:58:21 606

原创 聊聊Android的Binder

Binder 是 Android 平台中的一个关键组件,负责实现进程间通信(IPC)。它提供了一种高效的方式让不同进程中的应用程序进行交互,是 Android 系统的核心之一。

2024-08-04 19:46:43 1345

原创 AIDL简介

AIDL(Android Interface Definition Language) 是 Android 提供的一种工具,用于定义进程间通信(IPC)接口。AIDL 允许你在不同的应用或不同的进程之间通信,尤其是在服务和客户端应用之间。它用于跨进程调用,支持复杂的数据类型(如对象和集合)的传递。AIDL 的主要作用是帮助开发者定义一个接口,使得不同的 Android 进程能够进行方法调用,就像调用本地方法一样。Android 进程间的通信通过 Binder 机制实现,AIDL 是对这种机制的高层封装。通常

2024-08-04 18:33:40 903

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除