学学Android property机制

property用途,原理,java和native使用方式,以及注意事项。
摘要由CSDN通过智能技术生成

前言

Android的属性(Property)系统是一个重要的功能,它作为系统服务管理着系统的配置和状态。这些系统配置和状态都是以键值对(key/value)的形式存储,其中键和值都是字符串类型。

学习新技术,第一步一定是观察它的用途。Android Properties用途简单清晰,用于进程间小数据量 信息交换,相当于系统中的全局变量,任何进程都可以访问,本质是进程间通信的一种方式。

接下来咱来剖析property实现原理。

一,property基本原理

1. 系统启动时,会从若干属性脚本文件中加载属性内容。这些脚本文件通常包含了一系列的键值对,用于设置系统的各种配置。
2. 系统中的所有属性(键/值)被存入同一块共享内存中。这意味着所有的进程都可以访问这块共享内存,从中取属性内容。
3. 系统中的各个进程会将这块共享内存映射到自己的内存空间,这样就可以直接读取属性内容。这种设计使得进程间可以方便地共享某些系统属性。
4. 系统中只有一个实体可以设置、修改属性值,它就是属性服务(Property Service)。不同进程只可以通过socket方式,向属性服务发出修改属性值的请求,而不能直接修改属性值。这样可以确保属性值的统一管理和安全更新。
5. 共享内存中的键值内容会以一种字典树的形式进行组织,这样可以方便地按照键来查找对应的值。

一张图尽可表示以上内容:</

  • 48
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; class RegexTest { public static void main(String[] args) { checkMail(); StringReplace(); ipSort(); getNumber(); } /* * 需求: 对邮件地址进行校验,判断给出的mail是否是合法的邮箱地址 */ public static void checkMail() { String mail = "abc12@sina.com"; String mailRegex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; Pattern pattern = Pattern.compile(mailRegex); Matcher matcher = pattern.matcher(mail); if (matcher.matches()) { System.out.println(mail + " is a valid email address."); } else { System.out.println(mail + " is not a valid email address."); } } /* * 需求: 将下列字符串转成:我要编程 */ public static void StringReplace() { String str = "我我...我我..我...我要..要要..学学学学...学学..编...编程程"; String replaceStr = str.replaceAll("[^我要编程]", ""); System.out.println(replaceStr); } /* * 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30 将ip地址进行地址段的顺序排序 * 还按照字符串自然顺序,只要让它们每一段都是3位即可 1,按照每一段需要的最多的0进行补齐 那么每一段就会至少保证有3位 2,将每一段只保留3位 这样,所有的ip地址都是每一段3位 */ public static void ipSort() { String ip = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30"; TreeSet<String> set = new TreeSet<String>(); String[] ips = ip.split(" "); for (String s : ips) { String[] nums = s.split("\\."); StringBuilder sb = new StringBuilder(); for (String num : nums) { sb.append(String.format("%03d", Integer.parseInt(num))); } set.add(sb.toString()); } for (String s : set) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i += 3) { sb.append(Integer.parseInt(s.substring(i, i + 3))).append("."); } sb.deleteCharAt(sb.length() - 1); System.out.println(sb.toString()); } } /* * 提取数字 */ public static void getNumber() { String string = "12334我的QQ是: 456456 我的电话是:0532214我的邮箱是:123:aaa@aaa.com"; String regex = "\\d+"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println(matcher.group()); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug猎人

非常非常非常感谢您的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值