介绍当你需要在程序中处理大量同类型的耗时任务,并且需要监听每个任务的工作状态和任务的编号,能及时响应并处理错误,而且需要所有任务都执行完毕自动通知时,那么这个任务调度器就非常适合你!之前写了一个串行任务调度器,这篇也是根据这个改编而来:一个用Kotlin编写简易的串行任务调度器使用方法1.初始化:val taskListener = object : ParallelTaskExecutor.Ta
起因:项目中适配了中英文语言,在切换英文语言重启软件后,部分已适配多语言的文字显示中文,在同一个Activity中有的正常,有的却不正常。探究:一开始以为哪里设置文字的时候没有去适配,于是开始整个项目搜素还是没找到,心中一万个草**跑过,于是乎来到百度搜索,果然有人遇到类似的问题,然后开始慢慢探究...起初是在Application中 写了一个Toast 弹出一段从资源文件定义的文字,当软件语言设
介绍访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。1.定义访问者模式定义了一个访问者接口,它包含了访问不同元素的操作方法。具体的元素类接受访问者并调用相应的访问方法。通过这种分离,新增的操作可以直接通过访问者来实现,而不需要修改元素类
在工作中需要将摄像头的摄像头的视频流数据转为YUV格式,供算法去处理图像,为了方便调试就将每帧数据又转成了Bitmap去显示,效果如下:起初,看到画面正常显示后,就没太在意图像的内容,直到看见蓝色瓶的可口可乐(实际是红色的),事情好像不太对,后续发现所有红色的东西在画面中都变成了蓝色,然后算法识别的结果也不太好,才发现了问题的严重性。Bitmap 转换问题?好像不是,yuv数据有问题?是直接从摄像
介绍模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。1.定义模板方法模式是指在一个方法中定义一个算法的骨架,并将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。2. 主要作用在父类中定义
生成 AAR 包在Android Studio Terminal 窗口输入以下命令:./gradlew :monitor:assembleRelease把 monitor 换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运行打包成功,在较新一点的AS上会打包报错,主要是新的AS要求的环境变量 都Java 11
前言迭代器这个词听到并不陌生吧,我们再开发中遍历HashMap 和 HashSet的时候 用到的迭代器和这里的迭代器是一个概念,当然,这个模式不是教你如何去实现的,而是以了解为主。介绍迭代器模式(Iterator Pattern)是一种行为型设计模式,它帮助我们在不暴露集合内部结构的情况下,可以顺序访问集合中的元素。它将集合对象的遍历行为抽象出来,放到一个迭代器对象中,这样可以使得遍历行为和集合对
能看到这篇文章说明网上哪些获取 (dbm/asu值)不适合你,不是他们的代码不正确,而是不符合你的情况比如安卓6获取android手机信号强度 可以看这篇文章 https://blog.csdn.net/sinat_31057219/article/details/81134030当然如果你是安卓10+设备,并且为 LTE 网络 的情况下,那么就不能用了,你会发现 getGsmSignalStre
前言在当前的数字时代,人工智能技术在各行各业中发挥着越来越重要的作用,特别是在媒体和娱乐领域。最近,快手科技引起了广泛关注,因为它开源了一个名为LivePortrait的先进技术项目,截至2024.7.23该项目已在GitHub上获得超过 7.5K Star,显示出其广泛的受欢迎程度和技术影响力。介绍近日,快手可灵大模型团队开源了名为LivePortrait的可控人像视频生成框架,该框架能够准确、
前言2024 年已经过半,生成式 AI 技术已经从最初的探索阶段过渡到应用实践阶段。无论是国外的 OpenAI、谷歌、苹果等 AI 公司,还是国内的百度、阿里云、字节跳动、腾讯等科技大厂,以及诸如百川智能、零一万物等 AI 独角兽公司,都在积极展示他们的最新 AI 成果。不约而同地,这些公司都将焦点放在了大模型的产业应用上。1.国外 AI 发展OpenAI: OpenAI 自从推出了 GPT
1.介绍策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。2.主要作用策略模式的主要作用是将算法或行为的选择从使用者中分离出来,使得可以在运行时选择不同的算法或行为。这种方式使得代码更加灵活、可扩展。3.解决的问题策略模式的主要作用是通过定义一系列算法,使得它们可以相互替换,从而
Seq2SeqSeq2Seq 是一种循环神经网络的变种,包括编码器 (Encoder) 和解码器 (Decoder) 两部分。Seq2Seq 是自然语言处理中的一种重要模型,可以用于机器翻译、对话系统、自动文摘。1. RNN 结构及使用RNN 模型在之前的文章循环神经网络 RNN、LSTM、GRU中介绍了 RNN 模型,RNN 基本的模型如上图所示,每个神经元接受的输入包括:前一个神经元的隐藏层状
BERT 模型是 Google 在 2018 年提出的一种 NLP 模型,成为最近几年 NLP 领域最具有突破性的一项技术。在 11 个 NLP 领域的任务上都刷新了以往的记录,例如GLUE,SquAD1.1,MultiNLI 等。1. 前言Google 在论文《BERT: Pre-training of Deep Bidirectional Transformers forLanguage Un
1. 定义原型模式(Prototype Pattern)是一种创建型设计模式,旨在通过复制现有对象来创建新对象,而不是通过实例化类的方式。这个模式可以提高对象创建的效率,尤其是在创建对象的过程非常复杂或代价高昂时。2. 结构原型模式包含以下角色:Prototype(原型接口):用于声明克隆自身的方法。通常这个接口会定义一个名为clone的抽象方法。ConcretePrototype(具体原型类):
在人工智能技术的推动下,各种AI工具正在迅速改变我们的学习、工作和生活方式。丰富的AI工具库和强大的功能,成为我们日常生活中的得力助手。本文将为大家安利一些好用的AI工具并探讨它们的优点以及在各个领域中的应用。一、网站推荐1. AIGC CN首先推荐一个AIGC 合集网站 AIGC CN 里面收集了全球1260多个AI工具,不管是你听过的,见过的,没听过的,没见过的里面都包含在内,总之一句话 NB
面向对象的六大设计原则简称为SOLID原则,每个原则都有助于创建更加健壮、可维护和可扩展的软件系统。以下是对每个原则的详细介绍,以及相应的示例代码和抽象的结构表述。本文将以尽可能少的文字,带你快速理解六大设计原则,不信?那就开始吧???1. 单一职责原则(Single Responsibility Principle, SRP)一个类只应当有一个引起它变化的原因,即一个类只负责一个职责。示例代码:
在Android开发中,图片的内存占用是一个重要的考虑因素,尤其是在处理高分辨率图片或多张图片时。了解如何计算一张图片所占的内存空间大小,可以帮助我们更好地管理内存,优化应用性能。本文将详细介绍如何在Android中计算图片的内存占用。一、图片内存占用计算公式内存占用=图片宽度×图片高度×每像素占用的字节数每像素占用的字节数取决于图片的颜色配置(Bitmap.Config)。常见的配置及其每像素占
生成式人工智能(AIGC)作为当前科技领域的热点话题,正逐渐改变着我们的工作和生活方式。本文将从AIGC的发展历程、技术推进路线、应用场景以及未来发展前景四个方面,详细解读这一前沿技术。1. AIGC的发展历程1.1 AIGC演化重要时间节点生成式人工智能的发展历程可以追溯到多年前...1956年:达特茅斯会议标志着人工智能研究的正式开始。2014年:Ian Goodfellow提出生成对抗网络(
1.简介Room是Google提供的Android架构组件之一,旨在简化数据库操作。它是SQLite的一个抽象层,提供了更易用和安全的API。Room的总体架构: 2.Room数据库的基础概念EntityEntity是Room中的数据表,每个Entity类对应一个SQLite表。DAO (Data Access Object)DAO是用于访问数据库的方法接口,定义了与数据库交互的操作。Databa
1. 引言最近工作有解析外部xml文件在App中显示的需求,特来写篇文章记录一下,方便下次使用。2. 准备工作首先,在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>3. XML示例文件<?xml ver
1.摘要MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的、基于发布/订阅(Publish/Subscribe)模式的通信协议,最初由 IBM 在1999年开发。它设计用于在低带宽、不稳定的网络环境下进行通信,适用于物联网(IoT)和机器对机器(M2M)通信。2.准备工作在项目的 build.gradle 文件中添加 MQTT 相关的
引言由于项目中有处理大量后台任务并且串行执行的需求,特意写了一个简易的任务调度器,方便监控每个任务执行和异常情况,任务之间互不影响。正如上所述,Kotlin中的TaskScheduler类提供了一个强大的解决方案,用于使用ScheduledExecutorService异步地排队和执行任务。使用方法1.初始化:val taskListener = object : TaskScheduler.Ta
介绍:本文主要介绍在安卓中使用Socket创建服务端和客户端进行通信,服务端可以管理多个客户端连接,完善的异常处理,接口回调,可以满足大部分需求,更多功能自行拓展...关于Socket套接字:是网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。使用Socket进行网络通讯的一般步骤如下:创建Socket对象,指定服务器的IP地址和端口号。使用Socket对象的getI
@TOC导言在并发编程中,线程池是一个非常重要的概念。使用线程池可以有效地管理和控制线程的数量,避免过多的线程消耗系统资源。线程池流程参数介绍必须了解public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
前言在移动开发中,我们常常会遇到需要在App中处理文件上传和下载的需求。Minio是一个开源的对象存储服务,它兼容Amazon S3云存储服务接口,可以用于存储大规模非结构化的数据。开始之前在pubspec.yaml文件中添加minio_new库的依赖:dependencies: minio_new: ^1.0.2运行flutter pub get命令来获取依赖。可去pub上看 minio_n
介绍GridView 是 Flutter 中用于创建网格布局的滚动小部件。它可以创建多列布局,并且每个网格单元可以包含一个小部件。GridView 提供了几种构造函数来创建不同类型的网格布局:GridView:最通用的构造函数,完全自定义网格布局。GridView.builder:按需构建网格项,适用于具有大量(或无限)网格项的动态内容。GridView.count:指定网格中的列数,适用于具有固
在数据结构中,图是由节点(顶点)和边组成的非线性数据结构。图用于表示不同对象之间的关系,其中节点表示对象,边表示对象之间的连接或关系。
树的基本概念包括根节点、子节点、父节点、兄弟节点等。二叉搜索树是一种有序的二叉树,对于每个节点,其左子树的值都小于
1.简介堆是一种特殊的数据结构,通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构,并且具有一些特殊的性质,根据这些性质,堆被分为最大堆(或者大根堆,大顶堆)和最小堆两种。2.基本性质完全二叉树结构:堆必须是一棵完全二叉树,即除了最底层,其他层都是满的,而且最底层的节点都尽量靠左排列,最后一行元素之间不可以有间隔。堆序性质: 堆分为最大堆和最小堆两种。在最大堆中,任意节点的值都大于或等于
树的基本概念在数据结构中,树(Tree)是一种层次结构,由节点和边组成。树的基本概念包括根节点、子节点、父节点、兄弟节点等。节点拥有零个或多个子节点,除了根节点外,每个节点有且仅有一个父节点。树的层数称为树的高度。子节点以及它后续节点所形成的数称为子树。1.二叉树(Binary Tree)二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的基本概念:节点(Nod
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号