- 博客(83)
- 收藏
- 关注
原创 ContentProvider内容提供者
ContentProvider是Android中用于管理数据访问和共享的标准接口。它封装数据并提供安全机制,支持结构化(如SQLite)和非结构化数据(如图片)的访问。主要功能包括:1)精细控制数据访问权限;2)抽象化数据源细节。使用场景分为访问现有ContentProvider或创建新的共享数据。开发时需要定义权限、内容URI和列名,并可选添加同步功能。ContentProvider通过协定类定义常量,支持标准/自定义MIME类型,实现进程间安全数据交互。
2026-05-13 17:05:08
350
原创 Service
本文介绍了Android中Service的分类与使用方法。Service分为前台服务(用户可见)、后台服务和绑定服务(支持跨进程通信)。创建服务需继承Service类并重写回调方法。文中详细讲解了IntentService、前台Service和JobService三种典型应用场景,并分析了JobService的特定回调方法。在跨进程通信方面,重点阐述了Messenger和AIDL两种实现方式,包括AIDL支持的数据类型、文件分类及参数定向标记的使用。全文为开发者提供了Service开发的关键知识点和最佳实践
2026-05-08 10:25:36
408
原创 Activity
摘要:Android四大核心组件包括Activity(界面展示)、Service(后台服务)、BroadcastReceiver(广播接收)和ContentProvider(数据共享),通过Intent进行通信。Activity生命周期包含六个关键回调方法:onCreate()(初始化)、onStart()(准备可见)、onResume()(可交互)、onPause()(释放资源)、onStop()(完全不可见)和onDestroy()(销毁)。Activity可通过显式(明确指定类)或隐式(通过actio
2026-05-06 22:31:18
337
原创 适配器视图AdapterView
摘要:AdapterView是继承ViewGroup的容器控件,用于显示一组规则排列的View。其特点是通过Adapter提供数据项(Item)并控制显示方式。工作原理包括:1) Adapter作为数据与View的桥梁,ListView通过Adapter获取数据;2) 采用缓存机制优化性能,仅创建屏幕可见项数量+1的视图,通过回收复用离开屏幕的View来节省内存和提高效率。这种设计实现了大数据集的高效展示。
2026-04-23 15:50:31
73
原创 日期与滚动视图
Android开发中日期时间选择与滚动视图实现摘要: 日期时间选择: 使用DatePicker控件实现日期选择功能 通过TimePicker控件实现时间选择功能 滚动视图实现: ScrollView继承自FrameLayout(帧布局) 主要特性包括垂直滚动功能 适用于超出屏幕尺寸的内容展示 可通过XML属性或代码进行配置 这两个组件分别解决了移动端常见的日期选择需求和大内容展示的交互问题,是Android UI开发的基础控件。
2026-04-23 15:22:42
38
原创 车载MVVM的理解(二)
本文介绍了基于MVVM架构实现车载应用开发的关键步骤。首先定义公共组件,包括ViewModelFactory工厂类用于创建ViewModel实例,以及AppInjection集中管理依赖注入。其次构建Model层,通过HvacRepository处理IPC通信数据。然后构建ViewModel层,HvacViewModel负责管理UI数据并与Repository交互。最后实现View层,HvacActivity通过数据绑定与ViewModel通信,XML布局中使用双向绑定实现数据交互。整个架构实现了数据与UI
2026-04-22 17:29:25
387
原创 输入框EditView
本文介绍了EditText控件的常用属性及功能。主要包括:1)提示文本属性hint和textColorHint的设置及优先级;2)inputType属性对输入类型的限制,如phone、number、password等常用类型;3)TextWatcher监听器的三个回调方法,用于监控文本变化;4)EditText焦点控制方法requestFocus()和clearFocus()。特别提醒在使用TextWatcher时要注意避免因setText导致的循环调用问题。这些属性和方法共同构成了EditText的基本功
2026-04-20 22:25:07
57
原创 文本框TextView
摘要:TextView是Android开发中最常用的文本显示控件。基本属性包括文本大小(textSize)、颜色(textColor)、背景(background)、字体风格(textStyle)等,建议使用XML资源文件进行适配。富文本属性支持HTML标签,可实现多样化文本显示效果。此外,TextView支持自定义字体功能,满足特殊应用场景需求。开发中需注意多分辨率适配问题,推荐使用dimen资源定义尺寸值。
2026-04-20 21:34:40
51
原创 帧布局(FrameLayout)与线性布局(LinearLayout)与相对布局(RelativeLayout)
摘要:Android布局方式包括FrameLayout、LinearLayout和RelativeLayout。FrameLayout默认将控件叠加在左上角,适合简单布局。LinearLayout支持水平和垂直排列,可通过orientation设置方向,weight属性实现均等或不等分布,divider添加分割线。RelativeLayout功能强大,能减少布局嵌套,提升性能,支持多种对齐方式如垂直/水平居中、左右对齐等。不同布局各有特点,开发者应根据实际需求选择最合适的布局方式。
2026-04-20 17:44:55
60
原创 车载MVVM的理解(一)
摘要:本文介绍了车载系统应用的三层架构(HMI、Service、SDK),重点阐述了基于MVVM模式的车载应用封装方案。Model层因车载特性可留空;ViewModel层通过泛型确保与Repository强关联,并采用AndroidViewModel解决Context获取问题;View层基于DataBinding封装,为Fragment和Activity定义规范,通过抽象方法实现ViewModel绑定、数据观测和UI初始化。该方案简化了车载应用开发,突出了View层封装,同时保持架构清晰和代码可维护性。(1
2026-04-20 15:45:44
502
原创 初识Android界面布局
本文介绍了Android开发中View与ViewGroup的基本概念及XML布局的公共属性。View是可见的界面元素(如Button、TextView),ViewGroup是布局容器(如LinearLayout)。布局可通过XML声明或代码实现,XML方式便于界面与逻辑分离。重点讲解了View的位置获取方法(getLeft()、getTop())和常用属性:background(背景设置)、id(唯一标识)、padding(内边距)以及layout_width/layout_height(尺寸控制)。这些基
2026-04-19 20:11:11
262
原创 intent的基本知识及使用(Android)
摘要:Intent是Android中用于组件间通信的消息传递对象,主要应用于启动Activity、Service和传递广播三种场景。Intent分为显式和隐式两种类型:显式Intent直接指定目标组件,隐式Intent声明操作由系统匹配处理。构建Intent需设置组件名称、操作、数据、类别等属性,其中Category需与过滤器完全匹配,且隐式启动必须包含DEFAULT类别。通过配置<intent-filter>声明组件可接收的隐式Intent。PendingIntent是Intent的包装器,用
2026-04-19 16:14:29
391
原创 AAOS(Android Automotive OS)IVI(车机娱乐信息系统)相关的简单讲解
本文摘要:Android Automotive OS(AAOS)是基于Android的车载信息娱乐系统,与手机系统共享代码库但针对汽车场景定制。车载系统采用模块化电子电气架构(EEA),包含Android(娱乐)、QNX(仪表)和RTOS(实时系统)等多个操作系统。系统通信采用SOME/IP和DDS等协议,通过socket实现进程间通信。权限管理结合DAC(自主访问控制)和MAC(强制访问控制)机制,其中DAC通过用户/用户组管理权限,MAC则通过SeLinux的变种SeAndroid实现严格访问控制。应用
2026-04-16 11:59:51
336
原创 蓝牙BLE链路层协议知识点
BLE(低功耗蓝牙)架构分为控制层、主机层和应用层。链路层包含五种状态:就绪态、扫描态、发起态、连接态和广播态。数据包结构包括前导码、接入地址、报头、长度、数据和CRC校验。广播报文类型包括通用广播、定向连接、不可连接、可扫描等。设备广播时需包含6字节地址,数据长度灵活但需符合规范要求。该结构支持BLE设备发现、连接和数据传输等核心功能。
2026-04-15 10:26:21
68
原创 Java 面试 (三)
本文概述了Java并发编程的核心概念。首先介绍了并发的定义,然后详细说明了四种创建线程的方式:继承Thread类、实现Runnable接口、使用Callable接口和线程池。文章指出频繁创建销毁线程会带来显著开销,建议使用线程池复用线程。接着描述了线程的六种生命周期状态。最后解析了AQS设计模式,其通过固化线程排队、阻塞/唤醒等不变部分,开放资源获取/释放等可变部分,成为Java并发包的基础框架。
2025-12-23 19:00:58
362
原创 面试(二)
本文摘要:文章涵盖多个技术主题,包括Java类加载的五个阶段(加载、验证、准备、解析、初始化)、OSI七层模型和TCP/IP四层模型的对比、医院系统开发建议(推荐实体-关系模型和关系型数据库)、AI开发实践方法论(问题分解、人机协同、错误分析)以及Vue2与Vue3的核心区别(v-if/v-for优先级、虚拟DOM优化、响应式系统重构)。重点突出了Vue3在性能和开发体验上的改进。(149字)
2025-09-08 13:33:26
441
原创 面试 (一)
本文摘要涵盖了多个计算机技术要点:1)HashMap采用数组+链表结构,通过链地址法解决冲突;2)多线程核心参数包括线程数配置和拒绝策略;3)JUC工具包提供线程池、锁机制等并发控制组件;4)C++与Java在编译方式和继承机制上存在差异;5)JVM采用双模式执行引擎实现跨平台;6)公平锁与非公平锁的区别及应用场景;7)针对恶意攻击的防护措施包括IP限流、Redis分布式限流和消息队列缓冲。这些知识点涉及数据结构、并发编程、语言特性和系统安全等多个技术领域。
2025-09-03 14:42:25
716
原创 面试 八股文 专栏(一)
Redis作为高性能内存数据库,具有高速读写、丰富数据结构、持久化机制等特点,常用于缓存优化。与MySQL结合使用时,Redis作为缓存层处理高频查询,MySQL负责持久化存储。需注意缓存失效问题如雪崩效应,可通过本地缓存和限流解决。Redis支持多种数据类型,采用单线程+IO多路复用实现高并发。AOP作为面向切面编程,可模块化处理横切关注点。MySQL事务隔离级别包括未提交读、提交读、可重复读和串行化,分别解决不同并发问题。
2025-09-01 16:41:17
806
原创 面试 八股文 经典题目 - HTTPS部分(一)
摘要:本文讲解了TCP四次握手原理及其必要性,详细解析了HTTP 504状态码(网关超时)的触发场景。针对服务器响应过慢问题,分析了操作系统层(CPU竞争)、中间件层(慢查询/连接池耗尽)和网络层(TCP重传/DNS延迟)三大主因,并提供了相应的排查方案:包括操作系统优化、Redis深度调优以及网络质量诊断等。特别强调了HTTP与HTTPS在加密机制(SSL/TLS)和传输层安全性上的核心差异(HTTP端口80明文传输,HTTPS端口443加密传输)。
2025-08-31 20:47:54
872
原创 面试 八股文 经典题目 - Mysql部分(一)
MySQL索引和事务机制解析:1)索引SQL执行通过解析、优化、执行三阶段,利用B+树结构减少磁盘I/O;2)事务提交包含日志缓冲、刷盘、状态更新等步骤;3)三大日志:redolog(物理修改记录)、binlog(逻辑变更)、undolog(回滚数据);4)索引采用B+树结构,优化磁盘存储和查询效率;5)MySQL锁机制包括表级锁(共享/排他)和行级锁(记录/间隙),配合线程池管理并发请求,保障数据一致性和性能。
2025-08-30 19:28:24
1389
原创 Java -- 文件基础知识--Java IO流原理--FileReader
本文介绍了Java文件操作和IO流相关知识。主要内容包括:1)使用File类进行文件基本操作;2)IO流原理及分类,包括字节流/字符流、输入/输出流;3)FileReader和FileWriter的常用方法,如read()、write()等,强调使用后需关闭或刷新。文章通过代码示例展示了如何获取文件信息、处理数据流,并说明了不同流类的继承关系。
2025-08-28 22:23:47
575
原创 Java -- 互斥锁--死锁--释放锁
本文介绍了Java中互斥锁的基本概念和应用。互斥锁通过synchronized关键字实现,确保同一时间只有一个线程访问共享资源,分为实例对象锁和类对象锁。文章详细说明了同步方法的使用注意事项、锁对象的选择规则,并强调了死锁的避免。同时列举了四种会释放锁的情况(正常结束、break/return、异常、wait)和两种不会释放锁的操作(sleep/yield、suspend),特别指出应避免使用suspend/resume方法控制线程。
2025-08-22 00:03:32
373
原创 Java -- 用户线程和守护线程--线程同步机制
本文介绍了Java线程的核心概念:1.线程方法包括yield(不确定的礼让)和join(强制插队执行);2.线程分为用户线程(工作线程)和守护线程(如垃圾回收机制),后者随用户线程结束而终止;3.线程生命周期包含6种状态(NEW、RUNNABLE等);4.线程同步机制通过synchronized实现,包括同步代码块和同步方法两种形式,确保数据完整性。全文系统性地梳理了线程控制、分类、状态管理及同步机制等关键知识点。
2025-08-19 23:54:01
325
原创 Java -- 事件处理机制--线程相关知识
本文介绍了Java线程编程的核心概念,包括:1)Java事件处理机制采用"委派事件模型";2)线程基础知识,区分进程与线程、单线程与多线程、并发与并行;3)创建线程的两种方式(继承Thread类和实现Runnable接口)及其区别;4)线程终止的两种方式;5)线程常用操作方法,如设置名称、优先级、休眠等。重点讲解了线程创建和管理的技术细节,并推荐使用Runnable接口实现多线程以避免单继承限制。
2025-08-19 21:46:23
434
原创 Java -- 坐标体系--绘图方法
本文介绍了Java绘图的基本原理与方法。首先说明计算机屏幕由像素点阵构成,Java坐标系以左上角为原点,x/y轴分别表示水平和垂直方向像素距离。绘图主要通过Component类的paint()和repaint()方法实现,系统会在窗口变化时自动调用paint()重绘。Graphics类提供多种绘图工具:drawLine()画直线,drawRect()画矩形,drawOval()画椭圆,fillRect()填充矩形,以及drawImage()绘制图片和drawString()输出文字。
2025-08-17 17:05:38
294
原创 Java -- 泛型-自定义泛型
本文介绍了Java泛型的概念、优势和使用方法。泛型是JDK5引入的参数化类型,主要解决数据类型安全性问题,其优点包括:编译时类型检查提高安全性、减少类型转换提升效率、消除编译警告等。文章详细说明了泛型类、泛型接口和泛型方法的定义语法,并重点阐述了使用时的注意事项:泛型类型必须是引用类型;数组初始化限制;静态成员不能使用泛型;泛型类型的确定时机;默认Object类型处理等。特别强调了泛型方法与普通方法使用泛型的区别,有助于开发者正确理解和应用泛型特性。
2025-08-16 22:50:40
341
原创 Java -- Collections 工具类-分析HashSet和TreeSet分别如何实现去重
本文摘要: Collections工具类提供了静态方法对集合进行排序、查找和替换操作,包括reverse、shuffle、sort、swap等方法,以及max、min、frequency等查询功能。 HashSet通过hashCode()和equals()方法实现去重,先计算hash值定位存储位置,再比较元素是否相等;TreeSet则通过Comparator或Comparable接口的compare/compareTo方法判断元素是否重复,返回0视为相同元素不予添加。两种Set实现去重的机制不同,分别基于哈
2025-08-15 16:54:16
382
原创 Java -- 总结-开发中如何选择集合实现类
本文总结了Java集合框架的选择原则:首先根据存储类型(单列或双列)选择集合接口。单列集合(Collection)分为允许重复的List(增删多用LinkedList,改查多用ArrayList)和不允许重复的Set(无序用HashSet,排序用TreeSet,保持顺序用LinkedHashSet)。双列集合(Map)包括无序的HashMap、排序的TreeMap、保持顺序的LinkedHashMap,以及读取配置的Properties。选择时应结合业务需求和数据特点,考虑各实现类的底层数据结构和性能特征。
2025-08-15 10:45:06
157
原创 Java -- HashTable的基本介绍-Properties
本文介绍了HashTable和Properties的基本特性及与HashMap的对比。HashTable是线程安全的K-V结构,键值不可为null,初始容量11,扩容机制为(oldCapacity<<1)+1;而HashMap线程不安全但效率高,允许null键值。Properties继承自HashTable,特点类似,并支持从.properties文件读写数据。两者均实现Map接口,但HashTable适用于需要线程安全的场景。(149字)
2025-08-15 10:35:14
195
原创 Java -- HashSet的全面说明-Map接口的常用方法-遍历方法
摘要: 本文详细介绍了Java中HashSet和Map接口的特性及使用方法。HashSet基于HashMap实现,允许null值但不可重复,元素无序。Map接口存储键值对数据,key不可重复但value可重复,支持null键值。文章列举了Map的常用方法如put、get、remove等,并提供了四种遍历方式:通过keySet遍历、values遍历、entrySet增强for循环遍历和entrySet迭代器遍历。每种方法都配有具体代码示例,展示了如何获取和操作Map中的键值对数据。
2025-08-14 19:10:05
744
原创 Java -- Vector底层结构-- ArrayList和LinkedList的比较
本文对比分析了Java集合框架中的Vector、ArrayList和LinkedList。Vector使用数组存储,线程安全但效率较低;LinkedList基于双向链表实现,增删效率高但查询慢;ArrayList采用可变数组,查询快但增删慢。选择建议:频繁查询用ArrayList,频繁增删用LinkedList。此外,文章还介绍了Set接口的无序特性及其遍历方式(迭代器和增强for循环),并演示了HashSet的基本用法。实际项目中应根据业务需求灵活选择集合类型。
2025-08-13 11:14:14
556
原创 Java -- List接口方法--遍历--ArrayList的注意事项
本文介绍了Java中List接口及其实现类ArrayList的核心知识点。List接口特点包括元素有序、可重复、支持索引访问。ArrayList遍历有三种方式:迭代器、增强for循环和普通for循环。注意事项包括允许null值、基于数组实现、线程不安全等。底层结构采用Object数组elementData,无参构造初始容量为0,首次添加扩容至10,后续扩容1.5倍;指定大小构造器则直接初始化为指定容量,扩容同样为1.5倍。
2025-08-12 16:31:45
350
原创 Java -- 集合 --Collection接口和常用的方法
本文摘要:比较了数组与集合的特点及使用场景。数组长度固定且类型单一,操作元素较繁琐;集合可动态存储任意对象,提供add/remove等便捷方法。集合分为单列(Collection)和双列(Map),Collection通过List(有序可重复)和Set(无序不重复)实现。介绍了Collection常用方法如add/remove/contains等,以及Iterator迭代器遍历集合的注意事项。最后说明增强for循环可简化集合和数组的遍历操作。
2025-08-11 23:20:18
303
原创 Java -- 日期类-第一代-第二代-第三代日期
摘要:Java中的日期处理经历了三代演进。第一代Date类精确到毫秒,需配合SimpleDateFormat进行格式化;第二代Calendar类为抽象类,提供丰富日历字段操作方法,但存在可变性、偏移性等问题;第三代LocalDateTime等类解决了前两代的不足,提供不可变、线程安全的日期时间操作,支持DateTimeFormatter格式化,并新增Instant时间戳、MonthDay等实用功能,包含日期加减等便捷方法。
2025-08-09 22:50:27
471
原创 Java -- Arrays类-- System类-- BigInteger和BigDecimal类
Java常用工具类摘要:Arrays类提供数组操作(toString、sort、binarySearch等);System类包含系统级操作(exit、arraycopy、gc等);BigInteger/BigDecimal类处理大数和精确运算(提供add/subtract/multiply/divide方法)。主要方法包括:Arrays.toString()输出数组,System.arraycopy()复制数组,BigDecimal.divide()支持精度控制。这些工具类为开发提供了便捷的数组处理、系统操
2025-08-07 11:19:59
440
原创 Java -- Math类
Java Math类提供了常用的数学运算方法,包括绝对值(abs)、幂运算(pow)、向上取整(ceil)、向下取整(floor)、四舍五入(round)、开平方(sqrt)等。它还支持生成随机数(random)和比较大小(max/min)。这些方法可以处理整数和浮点数运算,如pow(-3,4)计算-3的4次方,ceil(-3.001)向上取整为-3,floor(4.2)向下取整为4。random()方法可生成0-1之间的随机数,通过公式可扩展范围。Math类简化了常见数学运算的实现。
2025-07-29 18:25:06
272
原创 Java -- String类-StringBuffer类-StringBuilder类
摘要:String类是不可变字符序列,常用方法包括equals、substring、replace等。StringBuffer和StringBuilder是可变字符序列,支持增删操作,StringBuffer线程安全但效率较低,StringBuilder非线程安全但效率最高。String适合字符串常量,StringBuffer/StringBuilder适合频繁修改字符串的场景。大量修改字符串时应避免使用String,以免产生过多副本影响性能。
2025-07-29 17:52:18
852
原创 Java -- 自定义异常--Wrapper类--String类
摘要:本文介绍了Java中的异常处理和常用类。自定义异常通过继承Exception或RuntimeException实现,throws用于声明异常而throw用于抛出异常。包装类提供了基本类型的对象表示,支持手动/自动装箱拆箱。String类用于存储字符序列,构造方式包括直接赋值和new实例化,字符采用Unicode编码存储。这些特性构成了Java核心的错误处理和数据类型转换机制。(149字)
2025-07-21 23:13:58
341
原创 Java -- 异常--以及处理
Java异常分为Error和Exception两大类:Error是JVM无法处理的严重问题,Exception是可以处理的程序异常。Exception又分为运行时异常(如空指针、数组越界)和编译时异常。异常处理方式包括try-catch-finally自行处理和throws向上抛出。try-catch需注意异常匹配顺序(子类在前)、finally总会执行;throws需遵循子类异常不能超过父类范围的原则。编译异常必须处理,运行时异常默认throws。
2025-07-09 21:49:54
469
原创 Java --枚举类--Annotation介绍
枚举类要点:1)构造器私有化,内部创建对象并暴露;2)enum关键字自动继承Enum类;3)简化语法:无参构造可省略括号,多个对象用逗号分隔;4)常用方法包括toString、name、values等。注解使用要点:1)@Override确保方法重写;2)@Deprecated标记过时元素;3)@SuppressWarnings抑制警告。注解需用@符号修饰程序元素。
2025-07-08 18:11:34
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅