自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

最美不过,心中有梦,身旁有你!

人生也许就是不断地犯错,不经意地错过,然后用一生去挽回!

  • 博客(373)
  • 资源 (34)
  • 收藏
  • 关注

原创 鸿蒙入门——ArkUI 跨页面数据同步之持久化存储UI状态PersistentStorage和设备环境查询Environment小结(四)

LocalStorage和AppStorage都是运行时的内存,在应用退出后就会丢失,如果想要应用再次启动后依然能保存选定的状态,那就需要用PersistentStorage。PersistentStorage是应用程序中的可选单例对象。它是持久化存储选定的AppStorage属性,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。PersistentStorage将选定的AppStorage属性保留在设备磁盘上。

2025-03-26 21:00:00 1099

原创 鸿蒙入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)

StorageProp(key)/@StorageLink(key)装饰的变量必须进行本地初始化**。@StorageProp(key)是和AppStorage中key对应的属性建立单向数据同步,允许本地改变,但是对于@StorageProp,本地的修改永远不会同步回AppStorage中,相反,如果AppStorage给定key的属性发生改变,改变会被同步给@StorageProp,并覆盖掉本地的修改。

2025-03-25 22:00:00 1083

原创 OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)

LocalStorage的实例仅仅在一个@Entry装饰的组件和其所属的子组件(一个页面)中共享,如果希望其在多个视图中共享,可以在所属UIAbility中创建LocalStorage实例,并调用windowStage.loadContent传入,然后再需要使用时候通过LocalStorage.getShared() 实例来复用可共享了。Child自定义组件中的变化,playCountLink的刷新会同步回LocalStorage,并且引起兄弟组件和父组件相应的刷新。

2025-03-21 20:15:00 726

原创 OpenHarmony 进阶——HDF 驱动框架的原理小结

在系统启动时,DeviceManagerInit通过late_initcall先启动。Device Manager 根据 Device Information 信息,解析配置文件中的Host 列表,根据 Host 歹表中的信息来实例化对应的 Host 对象。Host遍历设备列表去获取与之匹配的驱动程序名称,然后基于驱动程序名称遍历.hdf.driver secon 获得驱动程序地址设备与驱动匹配成功之后,获取指定驱动的入口地址,加载对应的设备驱动程序。

2025-03-04 22:45:00 770

原创 OpenHarmony 进阶——HDF 驱动框架基础理论入门

OpenHarmony 系统 HDF 驱动框架采用C 语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。操作系统适配层(OSAL,operatingsystem abstraction layer):对内核操作相关接口进行统一封装屏蔽不同系统操作接口。

2025-03-03 22:30:00 728

原创 鸿蒙入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(一)

前面的装饰器仅能在页面内,即一个组件树上共享状态变量。如果开发者要实现应用级的或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。LocalStorage:页面级UI状态存储,通常用于UIAbility内、页面间的状态共享。AppStorage:特殊的单例LocalStorage对象,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储;

2025-02-15 05:30:00 1035

原创 鸿蒙入门——ArkUI 自定义组件借助@Style、@Extends 装饰器重用样式(八)

如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器@Styles。@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。

2025-01-19 21:30:00 500 2

原创 鸿蒙入门——ArkUI 自定义组件通过自定义构建函数@Builder系和@BuilderParam高效复用UI(七)

Builder是ArkUI提供的一种更轻量的UI元素复用机制,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法并在build方法里调用。而被@Builder装饰的函数则成为自定义构建函数,同属来说就是把一些需要重复使用的UI的声明及初始化封装到一个函数中,再把这个函数使用@Buidder修饰,那么这个函数就成为了一个自定义构建函数,你在build方法中就可以直接调用完成UI构建。

2025-01-18 12:00:00 1690

原创 C++ ——必知必会之C++ 17 新特性汇总片段

C++ 17 新特性小结。

2024-12-10 21:00:00 1700

原创 并行编程——Mindspore大规模分布式并行基本概念学习(一)

Mindspore大规模分布式并行基本概念

2024-12-07 21:00:00 967

原创 鸿蒙入门——ArkUI 自定义组件间的嵌套类对象属性双向同步@Observed和@ObjectLink装饰器小结(六)

ObjectLink和@Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步。即@Observed 修饰的是被嵌套的对象和包含该嵌套对象的外层对象,@ObjectLink就是组件内修饰的被嵌套的对象。被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。

2024-12-02 21:30:00 1624

原创 鸿蒙进阶——HDI及IDL硬件接口IPC框架小结

HDI(Hardware Device Interface):OpenHarmony硬件设备接口,定义系统中跨进程通信的接口,实现服务间的跨进程通信

2024-11-16 21:30:00 2115

原创 鸿蒙入门——ArkUI 自定义组件间的“后代“双向同步@Provide和@Consume装饰器小结(五)

在多层级之间传递的@Provide和@Consume装饰器。

2024-11-09 21:30:00 1226

原创 鸿蒙入门——ArkUI 自定义组件间的父子双向同步状态装饰器@Link语法(四)

父子双向同步的装饰器@Link

2024-11-07 22:00:00 1064

原创 鸿蒙 入门——ArkUI 自定义组件之间父到子单向同步的装饰器@Prop语法(三)

@State修饰的作为数据源可以与多种组件间的装饰器组合使用从而实现组件间的数据同步,而@Prop 是 父——>子的单向同步

2024-11-02 15:30:00 729

原创 Java进阶——数据结构与算法之栈与递归小结(三)

数据结构与算法之栈与递归小结

2024-10-19 20:30:00 839

原创 鸿蒙 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)

ArkUI 自定义组件内同步的装饰器@State

2024-10-17 16:52:07 1319

原创 鸿蒙 入门——初识JS/ArkTS 侧的“JNI” NAPI框架内部核心原理(四)

实现一个NAPI模块,开发者需要完成模块注册、定义接口映射、实现回调方法等工作,这些工作在NAPI框架内部是怎么起作用的,为了实现javaScript与C++的交互,框架又做了哪些事情?NAIP框架代码在 foundation\arkui\napi\ 路径下,从源码结构上来看可分为interface、native_engine 和 xxxManager 三部分interface 目录为NAPI开发者提供了各种常用功能的API接口及宏定义。

2024-08-28 09:51:58 1130

原创 鸿蒙 入门——初识JS/ArkTS 侧的“JNI” NAPI基本开发步骤(三)

初识JS/ArkTS 侧的“JNI” NAPI基本开发步骤

2024-08-01 23:00:00 1242

原创 鸿蒙 入门——初识JS/ArkTS 侧的“JNI” NAPI 常见的函数详解(二)

重点介绍下NAPI中重要的函数。

2024-07-24 20:15:00 1935

原创 鸿蒙 入门——ArkUI 自定义组件之间的状态装饰器小结(一)

何为状态呢,如果页面多为静态界面那就没有引入状态的概念。如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念,简而言之就是用数据驱动UI的自动更新,当数据改动时无需做任何代码改变相应的UI 效果就会自动更新。自定义组件拥有变量,变量必须被装饰器装饰才可以成为状态变量,状态变量的改变会引起UI的渲染刷新。如果不使用状态变量,UI只能在初始化时渲染,后续将不会再刷新。下图展示了State和View(UI)之间的关系。

2024-07-21 13:27:10 1428

原创 鸿蒙 入门——ArkUI自定义组件的生命周期(二)

所谓自定义组件就是**@Component装饰的UI单元**,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。而页面即应用的UI页面,可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。自定义组件的创建:自定义组件的实例由ArkUI框架创建。

2024-07-19 20:15:00 810

原创 鸿蒙 入门——ArkUI自定义组件的基础语法(一)

定义一个被@Component 装饰器修饰的struct类型的自定义组件名在这个自定义组件的代码块内实现build函数。

2024-07-12 20:00:00 1252

原创 鸿蒙 入门——单元测试UnitTest快速入门

OpenHarmony 的单元测试(UnitTest)是一个关键的软件开发过程,它确保代码的各个部分能够按预期工作,OpenHarmony的测试框架中提供了很多种的单元测试,今天简单介绍下UnitTest 类型的TDD测试。

2024-07-08 21:30:00 1613 2

原创 鸿蒙 入门——初识JS/ArkTS 侧的“JNI” NAPI(一)

NAPI全称Native Application Programming Interface(最新版的文档已经改为Node-API了)属于UI框架ArkUI子系统的一部分,类似于Java中使用的 JNI机制

2024-05-21 20:09:47 1762

原创 Android 进阶——图形系统的另一种“画布” Surface 详解

Surface 是Android系统中真正的画布,Activity上的所有UI都是在Surface 上完成绘制的,每一个Surface 对象都在SurfaceFlinger中有对应的图层(Layer),SurfaceFlinger 负责把这些Layer按需混合处理后输出到Frame Buffer中,再由Display设备(屏幕或显示器)把Frame Buffer里的数据呈现到屏幕上。

2024-01-02 00:14:50 3130 1

原创 Android进阶——更节电的后台任务JobScheduler 机制使用详解

JobScheduler 机制中把每个需要后台的业务抽象为一个Job,通过系统管理Job,来提高资源的利用率和减少不必要的唤醒,从而提高性能,节省电源。当系统启动时会通过system_server进程启动****服务,然后当使用该机制时,首先通过JobInfo构造具体的后台任务对象,并通过传入到后台任务调度器,当满足配置的条件时系统便会在对应的JobService上执行对应的作业。简而言之,系统提供了一种条件周期性执行的后台任务,无需开发者自己去唤醒,达到配置的条件便会自动执行。

2023-12-01 21:15:00 1360

原创 Android 进阶——Binder IPC之学习Binder IPC架构及原理概述(十二)

(系统调用 open、mmap 和 ioctl 函数来访问设备文件 /dev/binder,实现与 Binder 驱动的交互来间接的实现跨进程通信),而非直接交互的原因是,**因为Client进程、Server进程、Service Manager进程属于进程空间的用户空间,不可进行进程间交互,而Binder驱动属于进程空间的内核空间,可进行进程间(进程内)直接交互。其中 Client进程、Server进程、Service Manager进程运行在用户空间,互相隔离,而Binder 驱动运行在内核空间。

2023-11-10 19:46:36 779

原创 OpenHarmony 入门——搭建OpenHarmony本地应用开发环境

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。

2023-11-03 21:15:00 5524 6

原创 Android进阶——Handler底层fd监听之epoll机制

文章大纲引言一、从网卡接收数据说起二、如何知道接收了数据?三、进程阻塞为什么不占用cpu资源?四、那么阻塞的原理是什么?1、工作队列2、等待队列3、唤醒进程五、内核接收网络数据全过程六、同时监视多个socket的简单方法七、epoll的设计思路1、措施一:功能分离2、措施二:就绪列表八、epoll的原理和流程1、创建epoll对象2、维护监视列表3、接收数据4、阻塞和唤醒进程九、epoll的实现细...

2023-10-24 21:30:00 907 1

原创 Android 进阶——图形显示系统之ViewRootImpl对象创建详解(三)

ViewRootImpl 作为顶层视图结构包装类持有IWindowSession、Choreographer 及其Choreographer.FrameCallback接口,主要负责通过IWindowSession与WindowManagerService通信。

2023-10-20 21:15:00 496

原创 Android 进阶——系统启动之BootLoader 及内核启动一(下)

手机电源被打开时,首先是引导进入BootLoader分区加载Linux 内核并解析执行init.rc脚本.

2023-10-03 20:45:00 524 1

原创 Android进阶——Handler底层fd监听之epoll机制

Handler 消息循环机制底层也是依赖于epoll 实现的。

2023-10-01 00:00:00 806

原创 Android 进阶——图形显示系统之Choreographer监听VSync并提供回调接口详解(二)

图形显示系统之Choreographer监听VSync并提供回调接口详解

2023-09-08 00:15:00 598

原创 Android 进阶——图形显示系统之VSync和 Choreographer的创建详解(一)

VSync和 Choreographer的创建详解

2023-09-01 23:00:00 1671

原创 Java进阶——数据结构与算法之哈希表与树的入门小结(四)

哈希表和树

2023-08-03 23:06:16 788

原创 Android 进阶——系统启动 之PKMS和Laucher应用启动详解(十三)

系统启动 之PKMS和Laucher应用启动详解

2023-07-09 21:21:57 2516

原创 Android 进阶——Framework 核心之 Binder驱动基础数据结构详解(十一)

传输的数据被封装在一个复用数据联合体,对于BINDER类型,数据就是一个binder本地对象,而HANDLE类型,数据就是一个远程的handle对象。

2023-05-07 16:00:00 1448

原创 Android 进阶——Binder IPC之Binder 驱动基础理论和协议详解(十)

Binder驱动程序是由系统实现并运行在内核的一条核心进程,负责Binder IPC的具体实现以及相关Binder对象的管理。

2023-04-30 23:41:28 2056

原创 Android 进阶——Binder IPC之Binder IPC架构及原理概述(九)

Binder IPC之学习Binder IPC架构及原理。

2023-04-06 21:00:00 1954 2

platform.keystore

Android 原生的platform 类的签名文件keystore,博文见 Android 进阶—— Android 系统安全机制之Apk签名详解及Android Studio 在线调试系统App https://crazymo.blog.youkuaiyun.com/article/details/107742963

2020-09-12

Android刘海屏适配demo

Android刘海屏或异形屏的通用适配工具类,整理来自网络,项目源码demo,相关博文链接如下https://crazymo.blog.youkuaiyun.com/article/details/103434495

2019-12-07

ReplaceSkin.zip

配合观察者模式借助“日夜间”模式灵活实现,两套皮肤的交替切换,原文:Android进阶——一闪而过结合观察者模式灵活利用Framework层自带的“日夜”间模式实现两套皮肤的简单切换

2019-08-14

Upload2Nexus.zip

关于上传Java和Android项目到Nexus私服Demo,详细总结了上传Java和android项目到自建Nexus私服的通用脚本,相关博客https://blog.youkuaiyun.com/CrazyMo_/article/details/90730140

2019-06-01

ApplyHiPlugin.zip

AAR上传到JCenter并使用Demo,包含常用的上传AAR到JCenter的Gradle脚本,具体博文见:https://blog.youkuaiyun.com/CrazyMo_/article/details/90343285

2019-05-24

BuildPlugin.zip

最新三种形式创建Gradle插件最全Demo,重新整理了完整的几个demo项目,以最简单的实现概括插件的本质,相关文章https://blog.youkuaiyun.com/CrazyMo_/article/details/89070618

2019-05-20

自定义Gradle插件最全Demo

自定义Gradle 插件的三种主要形式的demo源码,以及上传代码到本地仓库的实现,博客地址https://blog.youkuaiyun.com/CrazyMo_/article/details/89070618

2019-05-04

Android AIDL 跨进程更新UI

使用android AIDL 方式实现跨进程更新UI,所有源码demo,相关博客地址https://blog.youkuaiyun.com/CrazyMo_/article/details/89674879

2019-04-29

Android跨进程更新UI

使用android AIDL 方式实现跨进程更新UI demo(仅包含src文件夹下的,不包含构建脚本,建议别下,去另一个资源中下载),相关博客地址https://blog.youkuaiyun.com/CrazyMo_/article/details/89674879

2019-04-29

原生Socket 实现HTTP、HTTPS通信

使用Java 最原始的Socket 方式逐步实现Http/Https 网络通信,加深对于网络协议的理解

2019-04-10

Activity动态背景源码

使用一个指定的视屏文件作为Activity的动态背景的简单实现源码

2018-10-15

动态切换多语言

动态切换多语言简单的小Demo

2018-08-28

AIDL最全Demo

目前我使用过的AIDL,主要可以分为三大场景:普通AIDL、带有远程回调接口的AIDL和需要引用自定义Parcelable的AIDL,针对三类场景我分别写了个例子。

2018-05-09

万用的接口框架

以面向对象的思想对接口再次进行抽象,实现通用的接口框架,避免了臃肿的implement ,优雅的实现接口的作用,具体参见博客设计模式——面向对象进阶之面向接口再抽象实现通用的接口框架(一)https://blog.youkuaiyun.com/crazymo_/article/details/79882376

2018-04-11

责任链模式源码

责任链模式(Chain of Responsibility)是一种结构简单的行为型模式,从一定程度上来说只有请求处理者对象这一种角色,其官方定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止

2018-03-13

观察者模式源码

日常开发中常用的行为型设计模式之观察者模式设计源码demo

2018-03-13

策略模式源码

Java 常用的行为型模式中策略模式的demo源码实现,(csdn产品能不能干点实事,更多的心思放在编辑上,少点脑残的设计,资源分凭什么最低只能设置2分?资源描述要写50个以上?本来一句话就能概括的)

2018-03-12

原型模式源码

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.)创建副本的方式主要是通过拷贝,而拷贝又可以分为浅拷贝和深拷贝

2018-03-09

Java建造者模式源码

Java 常见创建型模式中的建造者模式及其实际开发中的变种模式

2018-03-09

工厂模式详尽源码

Java 常用创建型设计模式中,工厂模式下的三种子模式:简单工厂(静态工厂)、工厂方法模式、抽象工厂模式的源码

2018-03-02

自定义Loader2

通过继承AsyncTaskLoader实现自定义的Loader,用于展示获取手机上所有安装的APP信息列表

2018-01-04

自定义Loader

继承自AsyncTaskLoader实现自定义Loader来获取手机所安装所有APP的信息

2018-01-04

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2017-09-30

处理动态权限的两种方案

Android6.0 及以上动态权限详解及两种通用解决方案

2017-04-27

两种方案处理运行时权限

2017-04-27

WebView交互

WebVIew 动态构建UI,Java和Javascript互相调用交互

2017-04-24

外接USB摄像头Demo

Android 调用外接USB UVCCamera完成自动对焦拍照。

2017-03-17

Android Hello JNI

Android 简单的JNI开发实例demo源码

2016-11-04

Android JNI demo

Android JNI demo

2016-10-14

可滚动切换的Tab页面

采用主流的Fragement+ViewPager配以TabLayout搭建的可滚动的Tab切换主界面,可以直接拿到项目中使用的简单demo。

2016-07-25

SQLite的图形界面工具SQLiteExpertPers

SQLiteExpertPersSetup安装文件

2015-10-01

[SQLite权威指南(第二版)].Grant.Allen.扫描版

这本书中包含了一些关于SQLite的架构设计思想,内存分配,SQLite的应用基本入门知识和高效进阶使用知识,

2015-10-01

PLSQL11.00代码美化模板

PLSQL11.00的代码美化模板.br

2015-05-21

官方PL/SQLDEV最新版11.00

官方最新版11.00PL/SQL 安装包!

2015-05-21

空空如也

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

TA关注的人

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