首页 文章 精选 留言 我的

精选列表

搜索[字体分类],共10002篇文章
优秀的个人博客,低调大师

Android TextView 高亮字体并添加点击事件

运行效果 package com.zutil.lib; import android.graphics.Typeface; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.StyleSpan; import android.text.style.UnderlineSpan; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private TextView tv1 ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1 = (TextView) findViewById( R.id.tv1 ); String url1 = "这是测试"; String url2 = "点击一下试试看"; String url = url1 + url2; SpannableStringBuilder style = new SpannableStringBuilder(url1 + url2); TextViewURLSpan myURLSpan = new TextViewURLSpan(); style.setSpan(myURLSpan, url1.length(), url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); style.setSpan(new StyleSpan(Typeface.NORMAL ), url1.length(), url.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); style.setSpan(new UnderlineSpan(), url1.length(), url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); style.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorPrimaryDark)), url1.length(), url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // style.setSpan(new BackgroundColorSpan(getResources().getColor(R.color.colorAccent)), url1.length(),url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv1.setText(style); //设置超链接为可点击状态 tv1.setMovementMethod(LinkMovementMethod.getInstance()); } class TextViewURLSpan extends ClickableSpan { @Override public void updateDrawState(TextPaint ds) { ds.setColor(getResources().getColor(R.color.colorAccent)); ds.setUnderlineText(false); //去掉下划线 } @Override public void onClick(View widget) {//点击事件 Toast.makeText( MainActivity.this, "点击了", Toast.LENGTH_SHORT).show(); } } }

优秀的个人博客,低调大师

应用网关的演进历程和分类

作者:耿蕾蕾(如葑) 唯一不变的是变化,在现代复杂的商业环境中,企业的业务形态与规模往往处于不断变化和扩大之中。这种动态发展对企业的信息系统提出了更高的要求,特别是在软件架构方面。为了应对不断变化的市场需求和业务扩展,软件架构必须进行相应的演进和优化。网关作为互联网流量的入口,其形态也在跟随软件架构持续演进迭代中。我们下面就聊一聊网关的演进历程以及在时下火热的 AI 浪潮下,网关又会迸发怎样新的形态。 网关演进形态概览 软件架构的演进是一个不断适应技术发展和业务需求变化的过程,伴随着软件架构的演进网关的形态也在随之持续迭代,在不同软件架构阶段中网关也呈现其不同的形态。 软件架构的演进是技术发展和业务需求不断推动的结果,从早期的简单设计到如今复杂的多层次架构,体现了软件系统在可扩展性、维护性和性能方面的不断追求。 单体架构: 在软件工程的初期,单体架构是最常见的形式。所有的功能模块都集成在一个整体应用中。这种架构的优点是初期开发和部署比较简单,但随着系统功能的扩展和复杂性增加,维护和升级变得越来越困难,单点故障的风险也越来越高。 垂直架构: 为了解决单体架构带来的维护问题,逐渐发展出垂直架构。不同的业务功能被拆分成不同的模块,每个模块独立开发和部署。虽然这种架构在一定程度上提升了效率,但模块之间的依赖关系依然紧密,扩展和协作问题仍然存在。 SOA 架构(面向服务的架构): SOA 架构通过服务松耦合来解决垂直架构中的依赖问题。系统被设计成一组相互协作的微服务,每个服务通过定义明确的接口进行通信。这种方式提高了系统的灵活性和可扩展性,但管理和运维复杂度增加,需要采用成熟的服务治理框架。 微服务架构: 微服务架构是 SOA 架构的发展和细化,它将应用进一步拆分成更小的服务单元,每个单元可以独立开发、部署和扩展。微服务架构强调容错和自动化运维,适合大规模、高复杂度的系统。但其实施也需要更复杂的测试、监控和管理工具支持。 云原生架构: 云原生架构进一步解放了开发者,允许他们专注于代码逻辑,而不需要关心底层的基础设施。通过统一的 K8s 运维底座,系统的扩展和缩减可以更加灵活地自动进行。云原生架构带来了更高的弹性和资源利用率,同时也要求开发者适应新的开发和运维模式。 AI 原生架构: 随着人工智能和机器学习技术的发展,AI 原生架构应运而生。这种架构将大规模语言模型集成到应用系统中,提供自然语言处理、智能推荐等功能。AI 原生架构不仅改变了传统应用的交互方式,还带来了更智能的业务决策支持。但这种架构也对计算资源和数据隐私提出了更高的要求。 总体来看,软件架构演进的每一步都在寻求解决当前架构的瓶颈和不足,通过技术创新和最佳实践,使得软件系统能够更好地应对不断变化的业务需求和技术环境。 网关演进之流量网关 流量网关作为网络架构中的关键组件,主要负责管理和优化数据流量,以提升业务的可伸缩性和高可用性。Nginx 作为流量网关的代表性软件,以其高效的性能和灵活的配置广受欢迎。流量网关的核心目的是解决多业务节点的流量负载均衡问题, 通过智能调度将客户请求分配到不同的服务器上,从而均匀分摊负载,避免单点故障,确保服务的稳定性和连续性。 网关演进之 ESB 企业服务总线(ESB)网关是一个专为企业设计的关键集成解决方案,旨在标准化和简化不同系统和服务之间的通信与消息传送。作为核心通信基础设施,ESB 网关可以减少系统间的耦合性,提高互操作性和灵活性,确保数据和服务的无缝整合。遵循服务导向型架构(SOA)原则,ESB 通过集中管理消息路由、转换和安全,实现服务的快速部署和高效运作。它支持不同协议和数据格式,提升了系统的扩展性和可维护性,帮助企业在不断变化的业务环境中保持竞争力与创新。 网关演进之微服务网关 微服务网关是微服务架构中的关键组件,负责集中管理微服务的路由规则,增强系统安全性,提供性能监控,并简化访问流程,从而提高整个系统的可靠性。微服务网关可以实现负载均衡、限流、熔断、身份验证等 功能,通过统一入口管理和优化各微服务间的交互。此举不仅简化了客户端与微服务的通信复杂性,还为系统安全提供了额外的保护,Spring Cloud Gateway 是一个广泛应用的微服务网关,它基于 Spring 生态系统,易于与 Spring Boot 项目集成,因其灵活、高效和可扩展性受到了开发者的青睐。 网关演进之云原生网关 云原生网关是伴随 K8s 的广泛应用而诞生的一种创新网关,K8s 集群内外网络天然隔离的特性要求通过网关来将外部请求转发给集群内部服务,K8s 采用 Ingress/Gateway API 来统一网关的配置方式,同时 K8s 提供了弹性扩缩容来帮助用户解决应用容量调度问题,基于此用户对网关产生了新的诉求:期望网关既能有流量网关的特性来处理海量请求,又具备微服务网关的特性来做服务发现与服务治理,同时要求网关也具备弹性扩缩容能力解决容量调度问题,能够让开发者能够专注于业务逻辑的实现,而无需担心底层架构的容量、维护和管理。 网关演进的下一站:AI 网关 AI 网关是专为处理 AI 流量设计的关键组件,具备长连接、大带宽、高延时的特性,能够高效管理和优化数据传输。在 AI 应用、AI 平台和大型语言模型(LLM)中,不同的场景对 AI 网关的性能和功能有着多样化的需求。为更好地满足这些需求,AI 网关提供了丰富的 AI 插件集,开发者可以通过低代码方式轻松集成和构建复杂的 AI 应用。这不仅大幅降低了开发难度,还显著提高了效率,使得 AI 技术在各类应用和平台中更加易用和普及。AI 网关因此成为推动 AI 创新和应用落地的核心推动力。 API 网关去哪了? 读到这里的同学可能会有这么一个问题:API 网关去哪了?我们耳熟能详的 API 网关为什么没有提到呢?回答这个问题之前我们可以先问自己一个问题:API 是什么?API 包含什么? 在流量网关中我们配置的路由本身也是一种 API,只是没有定义规范的请求/响应标准而已,通常我们称为 HTTP API,在 AWS API Gateway 中的 HTTP API 指的就是这个,目前 HTTP API 使用最简单、应用最广;REST API 相信大家基本都或多或少听说过,它采用 JSON 格式来规范请求/响应,在微服务网关中应用较广;Websocket/gRPC/Dubbo API 这些相信大家同样不会陌生,因此可以说支持 API 访问的都是 API 网关,API 网关是贯穿软件架构演进的各个阶段。时间来到了当下,在 AI 浪潮下 API 网关又会迸发出怎样新的特性呢? Higress:AI 原生的 API 网关 Higress 源自阿里巴巴内部电商、交易等核心生产场景的实践沉淀,遵循 Ingress/Gateway API 标准,将流量网关、微服务网关、安全网关三合一,并在此基础上扩展了服务管理插件、安全类插件和自定义插件,高度集成 K8s 和微服务生态,包括 Nacos 注册和配置、Sentinel 限流降级等能力,并支持规则变更毫秒级生效等热更新能力。 在 AI 浪潮下,Higress 面向 AI Native 场景提供原生扩展能力以满足复杂的 AI 应用需求。它不仅支持常见的 API 管理、流量控制和安全策略,还具备与 AI 模型无缝集成的特性。Higress 通过灵活的插件机制,允许开发者轻松添加自定义功能,提升扩展性和适应不同应用场景的能力。借助高性能的处理能力和智能流量调度,Higress 网关可以显著减少延迟,提升 AI 服务的响应速度。此外,Higress 强大的监控和日志功能,帮助开发者快速定位和解决问题,使 AI 应用的开发和运维变得更加高效和可靠。 本文整理自《统一多层网关架构视频课程》的第一期视频。 关注「阿里云云原生」公众号,后台回复:1105即可下载课程 PPT。 点击此处,查看直播回放。 询问AI

优秀的个人博客,低调大师

数据库的分类与演进

本文配套讲解视频,欢迎收看:链接 数据库是数据技术领域的核心,它在数据管理和数据分析方面发挥着重要作用。随着技术的不断进步,数据库技术已经经历了从最初的层次模型和网络模型,演变到如今广泛使用的关系型数据库管理系统(RDBMS),以及为了应对多样化数据存储需求而出现的非关系型数据库(NoSQL)。这些技术的演进都是为了更好地适应不同类型数据的存储和检索。 数据库根据应用场景可分为两大类:事务型数据库和分析型数据库。 在早期,业务主要集中在面向事务处理的场景,例如银行交易、电子商务订单处理、库存管理系统等,这要求数据库能够快速、准确地处理大量的事务。这类系统被称为在线事务处理系统(Online Transaction Processing,OLTP),强调快速响应和数据一致性,在这一领域有许多代表性的产品,如 MySQL、Oracle、SQL Server 等。 随着数据分析需求的日益增长,企业开始寻求从海量数据中提取有价值的信息,以支持更深层次的业务洞察和决策制定。这一需求促使了在线分析处理系统(Online Analytical Processing,OLAP) 的发展。与 OLTP 不同,OLAP 系统更专注于深入的多维分析和建模,提供决策支持,常用于商业智能(BI)、金融分析、多维报表等需要高级数据分析的场景,代表产品如包括 Clickhouse、Greenplum 以及 Snowflake。 随着大数据应用场景的快速普及和多样化发展,许多场景从原来的离线分析变成了实时分析为主,要求数据库不仅能处理事务请求,还能够进行复杂数据分析以支持决策制定。在需求的驱动下,混合事务分析处理(Hybrid Transaction/Analytical Processing,HTAP)技术诞生了。HTAP 系统通过多种优化手段,融合 OLTP 和 OLAP 的能力,能够同时支持在单一数据集上进行事务处理和分析查询,显著减少企业对传统 ETL 操作的依赖,提供了更为高效和灵活的数据处理解决方案。 不同的 HTAP 数据库产品在实现和性能上有所差异,有些产品可能在事务处理方面表现更出色,而另一些可能在分析性能上更具优势。企业需根据具体业务需求进行综合的技术评估,以确定最适合的 HTAP 数据库系统。 在实际生产环境中,企业的数据平台往往由多种数据库组成,这导致了数据的分散和割裂。为解决这一问题,数据湖技术应运而生,它作为企业全量数据的单一存储,汇聚了原始数据和为各种分析任务生成的转换数据。数据湖融合了结构化数据、半结构化数据(如 CSV、日志文件、XML、JSON)、非结构化数据(如邮件、文档、PDF)及二进制数据(如图像、音频、视频),实现了数据的统一管理。而为了进一步提高数据处理的精细度,湖仓一体技术诞生了,它结合了数据湖和数据仓库的优势,构建了一个一体化、开放式的数据处理平台。 拓数派旗下云原生虚拟数仓 PieCloudDB Database 通过突破性数仓虚拟化技术实现元数据,数据资产和计算资源的三重解耦,数据被统一存储在简墨存储引擎中,不仅优化了数据管理,还提高了数据处理的效率。PieCloudDB 在处理复杂的 OLAP 场景时表现出色,同时也支持轻量级的 TP 场景,具备 HTAP 能力。 作为拓数派数据计算系统 PieDataCS 的计算引擎之一,PieCloudDB 具备湖仓一体化能力,一款产品满足企业多方位的业务需求,提供全面的数据管理和分析解决方案,使得企业能够更加灵活地应对不断变化的数据处理挑战,实现数据价值的最大化。 PieCloudDB 满足企业多方位业务需求

优秀的个人博客,低调大师

机器学习实现海量新闻自动分类

通过最佳实践帮助您实现上述案例效果 Step1:数据导入MaxCompute 1.1 创建需要上传的本地数据 新闻文本表: 字段名 含义 类型 描述 category 新闻类型 string 体育、女性、社会、军事、科技等 title 标题 string 新闻标题 content 内容 string 新闻内容 源数据:nlp_use stop_words表: 字段名 含义 类型 描述 point 用户名 string 人 stop_words 标点符号 string " " ,等 源数据:stop_words 1.2 创建MaxCompute表 1.2.1 开通MaxCompute 阿

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册