首页 文章 精选 留言 我的

精选列表

搜索[时间选择器],共10000篇文章
优秀的个人博客,低调大师

Elastic 8.5 发布,缩短实现可观测性的时间

今天,最新版 Elastic 8.5 正式上线,为 Elastic Search Platform 及其三个内置解决方案(Elastic 企业搜索、Elastic 可观测性和 Elastic 安全)引入了一系列新功能。 新增功能 Elastic 企业搜索是通过 Elasticsearch 实现强大的现代搜索和发现体验的黄金标准,可让您随时随地搜索任何内容。 在 Elastic 8.5 版中,Elastic 企业搜索正式引入了高级向量搜索功能,其中包括混合排名,此排名功能将向量相似性与查询评分结合在一起。此外,原生 MongoDB 和 MySQL 集成有助于简化数据采集,而新的 Machine Learning 采集管道有助于简化数据扩充。 Elastic 可观测性是部署最为广泛的解决方案,用于将指标、日志和痕迹转换为行之有效的 IT 见解,让您能够实现对整个数字生态系统的一体化可观测性。 在 Elastic 8.5 版中,SRE 和 DevOps 工程师能够使用 Elastic 可观测性在其环境中自动检测现有 .NET 应用程序。无论应用程序是在容器中运行、在 IIS 中运行,还是作为 Windows 或 Linux 服务运行,您只需短短几分钟就可以完全了解自己的整个 .NET 应用程序生态系统,而无需重新编译任何二进制文件。 Elastic 安全集 SIEM、Endpoint Security 和云安全于一体,可帮助从业人员在云范围内快速防御、检测和应对威胁。 在 Elastic 8.5 版中,Elastic 安全引入了新的威胁情报管理维度,有助于加快调查、响应和恢复速度。通过让 SOC 能够利用这一背景信息,有助于增强该解决方案中快速发展的 SOAR 功能,为现代化的 SIEM 注入强劲动力。 Elastic 的搜索驱动型解决方案均基于一个统一的堆栈(即 Elastic Stack)构建而成,通过 Elastic Cloud 在 AWS、Microsoft Azure 和 Google Cloud 上以托管服务的形式提供。升级到 Elastic 8.5 版后,您可以使用 HNSW(现已正式发布)的矢量搜索功能更智能地进行搜索,更快地诊断日志速率峰值,并分配案例以便于协作。Elastic Cloud 8.5 版还提供了一个新的运行状况页面,可以轻松识别和解决集群性能问题。 更多详情可查看:https://www.elastic.co/blog/whats-new-elastic-8-5-0

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

给我半首歌的时间,给你说明白Immutable List

Immutable List,顾名思义,就是,啥,不明白 Immutable 是什么意思?一成不变的意思,所以 Immutable List 就是一个不可变的 List 类,这意味着该 List 声明后,它的内容就是固定的,不可增删改的。 如果对不可变类比较陌生的话,可以先点击下面的链接查看我之前写的另外一篇文章。 这次要说不明白immutable类,我就怎么地 如果尝试对 List 中的元素进行增加、删除或者更新,就会抛出 UnsupportedOperationException 异常。 另外,Immutable List 中的元素是非 null 的,如果使用 null 来创建 Immutable List,则会抛出 NullPointerException;如果尝试在 Immutable List 中添加 null 元素,则会抛出 UnsupportedOperationException。 那 Immutable List 有什么好处呢? 它是线程安全的; 它是高效的; 因为它是不可变的,就可以像 String 一样传递给第三方类库,不会发生任何安全问题。 那接下来,我们来看一下,如何创建 Immutable List。注意,源码是基于 JDK14 的。 01、借助原生 JDK Collections 类的 unmodifiableList() 方法可以创建一个类似于 Immutable List 的 UnmodifiableList 或者 UnmodifiableRandomAccessList,都是不可修改的。 publicstatic<T>List<T>unmodifiableList(List<?extendsT>list){return(listinstanceofRandomAccess?newCollections.UnmodifiableRandomAccessList<>(list):newCollections.UnmodifiableList<>(list));} 来看一下使用方法: List<String>list=newArrayList<>(Arrays.asList("沉默王二","沉默王三","沉默王四"));List<String>unmodifiableList=Collections.unmodifiableList(list); 我们尝试往 unmodifiableList 中添加元素“沉默王五”: unmodifiableList.add("沉默王五"); 运行后会抛出 UnsupportedOperationException 异常: Exceptioninthread"main"java.lang.UnsupportedOperationExceptionatjava.base/java.util.Collections$UnmodifiableCollection.add(Collections.java:1062)atcom.cmower.mkyong.immutablelist.ImmutableListDemo.main(ImmutableListDemo.java:16) 02、借助 Java 9 Java 9 的时候,List 类新增了一个 of() 静态工厂方法,可以用来创建不可变的 List。先来看一下源码: static<E>List<E>of(Ee1,Ee2,Ee3){returnnewImmutableCollections.ListN<>(e1,e2,e3);} of() 方法有很多变体,比如说: static<E>List<E>of(Ee1){returnnewImmutableCollections.List12<>(e1);}static<E>List<E>of(Ee1,Ee2){returnnewImmutableCollections.List12<>(e1,e2);}static<E>List<E>of(Ee1,Ee2,Ee3,Ee4){returnnewImmutableCollections.ListN<>(e1,e2,e3,e4);}static<E>List<E>of(Ee1,Ee2,Ee3,Ee4,Ee5){returnnewImmutableCollections.ListN<>(e1,e2,e3,e4,e5);}static<E>List<E>of(Ee1,Ee2,Ee3,Ee4,Ee5,Ee6,Ee7,Ee8,Ee9,Ee10){returnnewImmutableCollections.ListN<>(e1,e2,e3,e4,e5,e6,e7,e8,e9,e10);} 该方法的设计者也挺有意思的,of() 方法的参数,从 0 到 10 都有一个相同签名的重载方法。 甚至当参数是可变的时候,使用 switch 语句对参数的个数进行了判断,然后调用不同的重载方法: static<E>List<E>of(E...elements){switch(elements.length){//implicitnullcheckofelementscase0:@SuppressWarnings("unchecked")varlist=(List<E>)ImmutableCollections.ListN.EMPTY_LIST;returnlist;case1:returnnewImmutableCollections.List12<>(elements[0]);case2:returnnewImmutableCollections.List12<>(elements[0],elements[1]);default:returnnewImmutableCollections.ListN<>(elements);}} 不管是 ImmutableCollections.List12 还是 ImmutableCollections.ListN,它们都是 final 的,并且继承了 AbstractImmutableList,里面的元素也是 final 的。 staticfinalclassList12<E>extendsImmutableCollections.AbstractImmutableList<E>implementsSerializable{@StableprivatefinalEe0;@StableprivatefinalEe1;}staticfinalclassListN<E>extendsImmutableCollections.AbstractImmutableList<E>implementsSerializable{//EMPTY_LISTmaybeinitializedfromtheCDSarchive.static@StableList<?>EMPTY_LIST;static{VM.initializeFromArchive(ImmutableCollections.ListN.class);if(EMPTY_LIST==null){EMPTY_LIST=newImmutableCollections.ListN<>();}}@StableprivatefinalE[]elements;} 好了,来看一下使用方法吧: finalList<String>unmodifiableList=List.of("沉默王二","沉默王三","沉默王四");unmodifiableList.add("沉默王五"); ImmutableCollections 的内部类 ListN 或者 List12 同样不可修改,使用 add() 方法添加元素同样会在运行时抛出异常: Exceptioninthread"main"java.lang.UnsupportedOperationExceptionatjava.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:73)atjava.base/java.util.ImmutableCollections$AbstractImmutableCollection.add(ImmutableCollections.java:77)atcom.cmower.mkyong.immutablelist.ImmutableListDemo.main(ImmutableListDemo.java:20) 03、借助 Guava Guava 工程包含了若干被 Google 的 Java 项目广泛依赖的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。所有这些工具每天都在被 Google 的工程师应用在产品服务中。 在实际的项目实战当中,Guava 类库的使用频率真的蛮高的,因此我们需要在项目中先引入 Guava 的 Maven 依赖。 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.1-jre</version></dependency> Guava 定了一个 ImmutableList 类,它的声明方式如下所示: @GwtCompatible(serializable=true,emulated=true)@SuppressWarnings("serial")//we'reoverridingdefaultserializationpublicabstractclassImmutableList<E>extendsImmutableCollection<E>implementsList<E>,RandomAccess{} 它的类结构关系如下所示: java.lang.Object↳java.util.AbstractCollection↳com.google.common.collect.ImmutableCollection↳com.google.common.collect.ImmutableList ImmutableList 类的 copyOf() 方法可用于创建一个不可变的 List 对象: List<String>list=newArrayList<>(Arrays.asList("沉默王二","沉默王三","沉默王四"));List<String>unmodifiableList=ImmutableList.copyOf(list);unmodifiableList.add("沉默王五"); ImmutableList 同样不允许添加元素,add() 方法在执行的时候会抛出 UnsupportedOperationException 异常: Exceptioninthread"main"java.lang.UnsupportedOperationExceptionatcom.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:244)atcom.cmower.mkyong.immutablelist.ImmutableListDemo.main(ImmutableListDemo.java:25) ImmutableList 类的 of() 方法和 Java 9 的 of() 方法类似,同样有很多相同签名的重载方法,使用方法也完全类似: List<String>unmodifiableList=ImmutableList.of("沉默王二","沉默王三","沉默王四"); ImmutableList 类还提供了 builder 模式,既可以在创建的时候添加元素,也可以基于已有的 List 创建,还可以将两者混合在一起。 ImmutableList<String>iList=ImmutableList.<String>builder().add("沉默王二","沉默王三","沉默王四").build();List<String>list=List.of("沉默王二","沉默王三","沉默王四");ImmutableList<String>iList=ImmutableList.<String>builder().addAll(list).build();List<String>list=List.of("沉默王二","沉默王三","沉默王四");ImmutableList<String>iList=ImmutableList.<String>builder().addAll(list).add("沉默王五").build(); 04、Collections.unmodifiableList() 和 ImmutableList 有什么区别? Collections.unmodifiableList() 基于原有的 List 创建了一个不可变的包装器,该包装器是不可修改的,但是,我们可以通过对原有的 List 进行修改,从而影响到包装器,来看下面的示例: List<String>list=newArrayList<>();list.add("沉默王二");List<String>iList=Collections.unmodifiableList(list);list.add("沉默王三");list.add("沉默王四");System.out.println(iList); 程序输出的结果如下所示: [沉默王二,沉默王三,沉默王四] 但如果我们通过 ImmutableList 类创建一个不可变 List,原有 List 的改变并不会影响到 ImmutableList。 List<String>list=newArrayList<>();list.add("沉默王二");ImmutableList<String>iList=ImmutableList.copyOf(list);list.add("沉默王三");list.add("沉默王四");System.out.println(iList); 程序输出的结果如下所示: [沉默王二] 这是因为 ImmutableList 是在原有的 List 上进行了拷贝。 ------------------ 公众号:沉默王二(ID:cmower)CSDN:沉默王二这是一个有颜值却靠才华吃饭的程序员,你知道,他的文章风趣幽默,读起来就好像花钱一样爽快。 长按下图二维码关注,你将感受到一个有趣的灵魂,且每篇文章都有干货。 ------------------ 原创不易,莫要白票,如果觉得有点用的话,请毫不留情地素质三连吧,分享、点赞、在看,我不挑,因为这将是我写作更多优质文章的最强动力。 本文分享自微信公众号 - 沉默王二(cmower)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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文件系统,支持十年生命周期更新。

用户登录
用户注册