android手机时钟、闹钟、计时器、秒表app源码

2023-11-17

简 介
此多功能闹钟界面采用TabHost框架,头部包含分别用LinearLayout水平布局显示四个标签闹钟,时钟,计时器和秒表,FrameLayout框架内部采用LinearLayout垂直布局。功能事件的基本实现分别有AlarmView类,AlarmReceiver类,PlayAlarmAty类, TimeView类和StopWatch类完成。

文件:url80.ctfile.com/f/25127180-743590078-de4c7b?p=551685 (访问密码: 551685)

主 要 技 术

此多功能闹钟界面采用TabHost 框架,头部包含分别用LinearLayout水平布局显示四个标签闹钟,时钟,计时器和秒表,FrameLayout框架内部采用LinearLayout垂直布局。功能事件的基本实现分别有AlarmView类,AlarmReceiver类,PlayAlarmAty类, TimeView类和StopWatch类完成。


global聚合是全局聚合,是对所有的文档进行聚合,而不受查询条件的限制。

global 聚合器只能作为顶级聚合器,因为将一个 global 聚合器嵌入另一个桶聚合器是没有意义的。

比如: 我们有50个文档,通过查询条件筛选之后存在10个文档,此时我想统计总共有多少个文档。是50个,因为global统计不受查询条件的限制。

2、filters
定义一个多桶聚合,其中每个桶都与一个过滤器相关联。每个桶都会收集与其关联的过滤器匹配的所有文档。

比如: 我们总共有50个文档,通过查询条件筛选之后存在10个文档,此时我想统计 这10个文档中,出现info词语的文档有多少个,出现warn词语的文档有多少个。

3、cardinality
类似于 SQL中的 COUNT(DISTINCT(字段)),不过这个是近似统计,是基于 HyperLogLog++ 来实现的。

3、需求
我们有一组日志,每条日志都存在id和message2个字段。此时根据message字段过滤出存在info warn的日志,然后进行统计:

系统中总共有多少条日志(global + cardinality)
info和warn级别的日志各有多少条(filters)
4、前置条件
4.1 创建mapping
PUT /index_api_log
{
“settings”: {
“number_of_shards”: 1
},
“mappings”: {
“properties”: {
“message”:{
“type”: “text”
},
“id”: {
“type”: “long”
}
}
}
}
4.2 准备数据
PUT /index_api_log/_bulk
{“index”:{“_id”:1}}
{“message”: “this is info message-01”,“id”:1}
{“index”:{“_id”:2}}
{“message”: “this is info message-02”,“id”:2}
{“index”:{“_id”:3}}
{“message”: “this is warn message-01”,“id”:3}
{“index”:{“_id”:4}}
{“message”: “this is error message”,“id”:4}
{“index”:{“_id”:5}}
{“message”: “this is info and warn message”,“id”:5}
5、实现3的需求
5.1 dsl
POST /index_api_log/_search
{
“size”: 0,
“query”: {
“bool”: {
“must”: [
{
“match”: {
“message”: “info warn”
}
}
]
}
},
“aggregations”: {
“agg_01”: {
“filters”: {
“filters”: {
“info”: {
“match”: {
“message”: “info”
}
},
“warn”: {
“match”: {
“message”: “warn”
}
}
},
“other_bucket”: true,
“other_bucket_key”: “other”
}
},
“agg_02”:{
“global”: {},
“aggs”: {
“total”: {
“cardinality”: {
“field”: “id”,
“precision_threshold”: 30000
}
}
}
}
}
}
5.2 java 代码
@Test
@DisplayName(“global and filters and cardinality 聚合”)
public void test01() throws IOException {
SearchRequest request = SearchRequest.of(searchRequest ->
searchRequest.index(“index_api_log”)
// 查询 message 中存在 info 和 warn 的日志
.query(query -> query.bool(bool -> bool.must(must -> must.match(match -> match.field(“message”).query(“info warn”)))))
// 查询的结果不返回
.size(0)
// 第一个聚合
.aggregations(“agg_01”, agg ->
agg.filters(filters ->
filters.filters(f ->
f.array(
Arrays.asList(
// 在上一步query的结果中,将 message中包含info的进行聚合
Query.of(q -> q.match(m -> m.field(“message”).query(“info”))),
// 在上一步query的结果中,将 message中包含warn的进行聚合
Query.of(q -> q.match(m -> m.field(“message”).query(“warn”)))
)
)
)
// 如果上一步的查询中,存在非 info 和 warn的则是否聚合到 other 桶中
.otherBucket(true)
// 给 other 桶取一个名字
.otherBucketKey(“other”)
)
)
// 第二个聚合
.aggregations(“agg_02”, agg ->

                        agg
                                // 此处的 global 聚合只能放在顶部
                                .global(global -> global)
                                // 子聚合,数据来源于所有的文档,不受上一步query结果的限制
                                .aggregations("total", subAgg ->
                                        // 类似于SQL中的 count(distinct(字段)),是一个近似统计
                                        subAgg.cardinality(cardinality ->
                                                // 统计的字段
                                                cardinality.field("id")
                                                        // 精度,默认值是30000,最大值也是40000,不超过这个值的聚合近似准确值
                                                        .precisionThreshold(30000)
                                        )
                                )
                )
);
System.out.println("request: " + request);
SearchResponse<String> response = client.search(request, String.class);
System.out.println("response: " + response);

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android手机时钟、闹钟、计时器、秒表app源码 的相关文章

随机推荐

  • 端口扫描介绍

    文章目录 1 端口的基本概念 2 端口的常见分类 3 端口扫描原理 1 端口的基本概念 端口 在计算机网络领域中是个非常重要的概念 它是专门为计算机通信而设计的 它不是硬件 不同于计算机中的 插槽 可以说是个 软端口 端口是由计算机的通信协
  • vue+Element-ui 导入excel文件生成json数据

    1 首先安装依赖 import XLSX from xlsx 2 建立读取excel文件的js文件 以便调用 importExcel js import XLSX from xlsx export function readExcel fi
  • java随笔:类成员

    类成员 1 介绍 在java中只能包含成员变量 方法 构造器 初始化块 内部类 接口 枚举 5种成员 其中static可以修饰成员变量 方法 初始化块 内部类 接口 枚举 用static修饰的成员就是类成员 类成员属于整个类 而不属于单独的
  • KLT(Kanade-Lucas-Tomasi )

    目录 光流法 KLT 原理 应用 目标跟踪算法主要分为两类 一类是传统的目标跟踪算法 粒子滤波 pf Mean Shift及KLT算法 或称Lucas光流法 另一大类是基于深度学习的跟踪算法 光流法 光流 Optical flow 其实是指
  • MySQL事务隔离级别、脏读、幻读、不可重复读现象及解决办法、快照读和当前读

    目录 一 事务隔离级别 二 脏读 幻读 不可重复读现象及解决办法 1 脏读 2 不可重复读现象 3 幻读现象 4 使用for update避免幻读 5 使用串行读避免幻读现象 三 快照读与当前读 1 理论 2 RR 下 快照建立时机 第一次
  • Tensorflow Serving 模型部署指南

    文章目录 1 Saver端 模型的离线训练与导出 1 1 saved model 模型保存与载入 1 1 1 简单场景 模型保存 1 1 2 简单场景 模型载入 1 1 3 使用SignatureDef 模型保存 1 1 4 使用Signa
  • 一开机checkingmedia_Win7系统开机提示Checking Media Presence如何解决

    Win7系统在开机的时候 总是会弹出各种各样的错误提示 比如最近就有win732位系统用户反映说开机的时候提示Checking MediaPresence 出现这样的问题可能是启动顺序问题导致的 现在给大家分享一下Win7系统开机提示Che
  • actuator--基础--01--介绍

    actuator 基础 01 介绍 1 介绍 是一个采集应用内部信息暴露给外部的模块 2 提供哪些的功能 健康检查 审计 指标收集 HTTP 跟踪 监控和管理Spring Boot 应用 2 1 访问方式 上述的功能可以通过HTTP 和 J
  • ‘sslSocketFactory(javax.net.ssl.SSLSocketFactory)‘ is deprecated

    sslSocketFactory javax net ssl SSLSocketFactory is deprecated 具体信息如下 public OkHttpClient Builder sslSocketFactory SSLSoc
  • Spring Boot实践 第二章 Spring boot 的配置文件

    前一章 我们创建了第一个spring boot 程序 这一章分享一下spring boot的配置方式和一些技巧 spring boot 的特性之一就是 配置简单 spring boot不再使用之前spring 的xml配置方式 xml的配置
  • Netty 性能测试(与Tomcat 对比)

    一直以来都认为 Netty 的性能会非常优秀 打算在适当的时候使用它来开发一些要求超高新能的服务 今天兴致勃勃的写了个简单的 HTTP 服务 同样也用 tomcat 写了一个对比的 jsp 页面 结果测试下来 感觉 Netty 的性能提升并
  • 【数据结构】查找算法:二分查找、顺序查找

    08年9月入学 12年7月毕业 结束了我在软件学院愉快丰富的大学生活 此系列是对四年专业课程学习的回顾 索引参见 http blog csdn net xiaowei cqu article details 7747205 查找算法 查找算
  • 企业微信免登录跳转自建应用

    项目场景 企业微信免登录自建H5应用 项目场景 已存在开发好的web程序 现在需要集成到企业应用里 预想的是新建一个企业微信应用 点击后直接免登录进入web程序应用 一 创建企业微信应用 首先 创建企业微信账户并进入管理后台 https w
  • MyBatis快速入门(一) 搭建环境和单表映射

    MyBatis简介 一说起对象关系映射框架 大家第一时间想到的肯定是Hibernate Hibernate作为一个著名的框架 功能十分强大 我们只需要配置好实体类和数据表之间的关系 Hibernate就会自动帮我们完成生成并执行SQL语句
  • hive使用时的用户权限问题

    0 jdbc hive2 node1 10000 gt create role root Error Error while processing statement FAILED Execution Error return code 1
  • 599. Minimum Index Sum of Two Lists

    Suppose Andy and Doris want to choose a restaurant for dinner and they both have a list of favorite restaurants represen
  • Java跨平台原理

    第二部分 Java跨平台原理 1 什么是平台 Java是可以跨平台的编程语言 那我们首先得知道什么是平台 我们把CPU处理器与操作系统的整体叫平台 CPU大家都知道 如果计算机是人 那CPU就是人的大脑 它既负责思维运算 又负责身体各部件的
  • Hadoop003-Hadoop的I/O操作

    1 数据完整性 重点词汇 1 校验和 checksum 2 复本因子 replication factor 3 一系列datanode组成的管线 4 fs checksum 5 distcp 2 压缩 文件压缩优点 1 减少存储文件所需要的
  • django启动服务器失败-已解决

    参考菜鸟教程 启动失败 解决办法 将python3改为python
  • android手机时钟、闹钟、计时器、秒表app源码

    简 介 此多功能闹钟界面采用TabHost框架 头部包含分别用LinearLayout水平布局显示四个标签闹钟 时钟 计时器和秒表 FrameLayout框架内部采用LinearLayout垂直布局 功能事件的基本实现分别有AlarmVie