首页 文章 精选 留言 我的

精选列表

搜索[VMware替代],共10000篇文章
优秀的个人博客,低调大师

Coreboot 4.20 发布,替代 BIOS 和 UEFI 的开源项目

开源系统固件/BIOS Coreboot 已发布最新功能版本 4.20。 Coreboot 原名 LinuxBIOS,是一个旨在取代计算机中专有固件(BIOS 或 UEFI)的软件项目,它采用轻量级固件设计,只执行加载和运行现代 32 位或 64 位操作系统所需的最少量任务。由于 coreboot 要初始化硬件,所以必须为所要支持的每个芯片组和主板移植。因此而言,coreboot 只适用于有限的硬件平台和主板型号。 4.20 版本带来了一大批新的硬件支持,主要是一些 Google Chromebook 、几款较新的 System76 笔记本电脑、用于 Sapphire Rapids 的 Intel Archer City 参考板,以及各种旧系统的 Coreboot 支持,这些支持要归功于热情的开源社区 Coreboot 4.20 新启用的硬件列表包括: ASRock B75M-ITX Dell Latitude E6400 Google Aurash Google Boxy Google Constitution Google Gothrax Google Hades Google Myst Google Screebo Google Starmie Google Taranza Google Uldren Google Yavilla HP EliteBook 2170p Intel Archer City CRB Intel DQ67SW Protectli VP2420 Protectli VP4630/VP4650 Protectli VP4670 Siemens MC EHL4 Siemens MC EHL5 System76 lemp11 System76 oryp10 System76 oryp9 此版本还有一些优化,如: 降低了 Yabits 负载 inteltool 支持 Intel Emmitsburg PCH 向 Chromebook 添加 Sound Open Firmware 驱动程序,以在非 ChromeOS 操作系统上启用音频 ACPI 改进 更多 Intel Sapphire Rapids 支持代码和其他改进。 详情查看更新公告:https://github.com/coreboot/coreboot/releases/tag/4.20

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

Coreboot 4.19 发布,替代 BIOS 和 UEFI 的开源项目

Coreboot 原名 LinuxBIOS,是一个旨在取代计算机中专有固件(BIOS 或 UEFI)的软件项目,它采用轻量级固件设计,只执行加载和运行现代 32 位或 64 位操作系统所需的最少量任务。由于 coreboot 要初始化硬件,所以必须为所要支持的每个芯片组和主板移植。因此而言,coreboot 只适用于有限的硬件平台和主板型号。 近日,coreboot 4.19 正式发布了,此版本完成了将代码从遗留的 ASL 语法转换为完全使用 ASL 2.0 语法。此外还支持一些新主板,其中最重要的是微星 MSI PRO Z690-A WiFi DDR5 的 Coreboot 4.19 主板。 支持的其他新主板包括用于其 Phoenix SoC 的 AMD Mayan 开发主板、用于旧 Sandy Bridge / Ivy Bridge CPU 的技嘉 H61M-DS2、各种 Google Chromebook、英特尔的 Meteor Lake 参考平台、Star Labs StarBook Mk VI,以及System76 Darp8 / Galp6 笔记本电脑。 Coreboot 4.19 也放弃了一些不再维护的主板,例如许多旧的 AMD 平台,华擎 E350M1、华擎 IMB-A180、华硕 A88XM-E、华硕 AM11-A、华硕 F2A85-M、联想 AMD G505s 和其他未维护的板。 Coreboot 4.19 还将 GRUB 从 2.04 升级到 2.06,并且从 SeaBIOS 1.16 升级到 1.16.1。更多细节可以在更新公告中查看。

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

OpenSearch 2.0 发布,ElasticSearch 替代品性能大幅提升

OpenSearch 2.0 现已正式发布!此版本融合了来自整个 OpenSearch 社区的用户反馈和贡献,以提供大量新功能和性能增强。我们非常感谢社区为构建分布式搜索和分析工具集而做出的协作努力,这些工具集具有开发人员可以依赖的功能,可用性和开源灵活性,以创建他们最具创新性的解决方案。 下面介绍了一些可以使用 OpenSearch 2.0 的新功能和增强功能。您可以在此处找到完整的发行说明。 Lucene 9.1 在2.0版本中,OpenSearch已升级到Lucene 9.1(Lucene 9.1文档)。迁移到最新版本的Lucene为这个版本提供了许多令人兴奋的进步,并将在未来的版本中继续提供更多的价值。对于 2.0,此升级启用了以下增强功能: Lucene 9.1 提供的性能优化包括将多维点的索引速度提高了 10–15%。 Java Jigsaw模块支持意味着在 9.1 版本中,Lucene 具有模块描述符和依赖项信息。这与OpenSearch的持续发展相一致,使工具集更加模块化和可扩展。 文档级警报 文档级警报(请参阅 GitHub 问题)允许用户创建可按文档生成警报的监视器。这些监视器通常用于安全检测,其使用的方法与 OpenSearch 中提供的其他类型的警报监视器类似:查询级别和存储桶级别。虽然这些警报使用数据的汇总视图,但文档级警报可以对索引中的每个文档发出警报,突出显示哪些特定文档或记录正在触发监视器中的警报,并避免基于时间戳的监视间隙或数据重叠。 通知 新的通知插件(参见GitHub问题)为OpenSearch添加了一个统一的通知系统。用户不再需要独立配置和管理每个插件的通知通道;在2.0版本中,通知插件提供了一个集中的位置来设置和管理相关OpenSearch插件的通知。例如,除了管理警报插件的通知外,此插件还可以在索引状态管理(ISM) 插件中完成计划操作时生成通知。 ML 共享资源升级 随版本 1.3 引入的ML Commons 插件(请参阅 GitHub 存储库在 2.0 版中获得了两个新算法,可将 OpenSearch 的机器学习 (ML) 功能扩展到其他工作负载,减少构建 ML 功能所需的工作量,并集中计算、资源管理和 ML 流程的安全性。用于线性回归和定位的新算法与 kmeans 和随机切割森林的现有算法相结合,为构建和训练 ML 模型提供了全面的基础。线性回归的添加旨在简化用于预测分析的ML模型的开发;通过本地化,用户可以在开发 ML 方法方面抢占先机,这些方法可以揭示异常或检测到的任何事件的关键因素,从而促进根本原因分析和其他用例的分析和可视化。 替换非包容性术语 此版本将整个 OpenSearch 中的非包容性术语(如主、黑名单)替换为包容性术语(如集群管理器、白名单)。(请参阅 GitHub 中的问题)。 RPM 包管理器 版本 2.0 遵循版本 1.3.2,以包括RPM 包管理器分发版的可用性(请参阅 GitHub 问题)。这简化了基于红帽 Linux 的操作系统的 OpenSearch 发行版的安装。您可以在此处查看兼容的 Linux 版本。 重大更改和持续支持 OpenSearch遵循语义版本控制或SemVer,因此重大更改仅包含在主要版本版本中,例如此版本。对于2.0版本,不兼容更改的列表包括上面提到的Lucene升级和包容性术语等更新,以及由于添加通知插件而在目标API中的重大更改以及其他更改。有关 2.0 版中重大更改的完整列表,请参阅文档。 请注意,我们将继续支持 OpenSearch 1.x 发行版。有关弃用支持的详细信息,请参阅常见问题解答的第 3.28 节。 为项目做贡献 您的想法和贡献对 OpenSearch 项目产生了真正的影响!从Lucene升级到新插件再到ML进步,此版本包括来自OpenSearch社区的许多有价值的贡献。我们向所有为OpenSearch 2.0做出贡献的人致以最深切的感谢。 如果您有兴趣了解更多信息,有具体问题,或者只是想提供反馈,请访问OpenSearch.org,在 GitHub 上为OpenSearch或OpenSearch Dashboards打开问题,或在论坛中发帖。还有定期的社区会议,包括每次会议的更新和问答时间。 对于几乎任何类型的贡献,打开问题是第一步。如果您渴望加入,请查看带有“需要帮助”标签的问题。 立即开始 你可以在这里下载OpenSearch 2.0!请务必在开始时查看发行说明和更新的文档。

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

CentOS 替代品 AlmaLinux 已上架 Microsoft Store

AlmaLinux OS 基金会已将 AlmaLinux 上架到 Microsoft Store,用户可基于WSL 将 AlmaLinux 安装至 Windows。 AlmaLinux 是开放源码的、社区驱动的项目,它从红帽企业版 Linux (RHEL) 的源码编译而来。AlmaLinux 跟 RHEL 8 完全在二进制上兼容,它由 CloudLinux OS 的创建者打造。AlmaLinux 团队承诺永久免费提供 AlmaLinux 操作系统,项目永久开源且不采取任何限制,不收取任何费用,支持至 2029 年。 AlmaLinux在其 Microsoft Store 条目的介绍页面写道:“AlmaLinux OS 来到了 WSL,现在你可以使用你所熟悉和喜爱的平台,使用所有的标准工具,包括 dnf/yum 等,运行所有你喜欢的企业版 Linux 生态的应用程序。” Microsoft Store 中其他与 Red Hat 兼容的选项包括由 Whitewater Foundry 创建的 Pengwin Enterprise 8,此发行版基于 Rocky Linux 构建,该公司称,“仅供演示和个人使用”,且需收费。

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

AMD 为 RHEL/CentOS 替代品 AlmaLinux 提供支持

AlmaLinux OS Foundation 宣布了四名新成员的加入,包括 Sine Nomine Associates、BlackHOST、Knownhost 以及最引人注目的 AMD。 新成员对 AlmaLinux 的发展方向有发言权,可以投票支持其他成员并被其他成员投票选入董事会。“新成员提供的资源使 AlmaLinux 更接近于与红帽企业 Linux(RHEL)完全持平。” AlmaLinux 是开放源码的、社区驱动的项目,它从红帽企业 Linux (RHEL) 的源码编译而来。AlmaLinux 跟 RHEL 8 完全在二进制上兼容,由 CloudLinux OS 的创建者打造。AlmaLinux OS Foundation是一个非营利组织,旨在为 AlmaLinux OS 社区的利益而创建。 AlmaLinux OS 基金会主席 benny Vasquez 表示,“我们成立 AlmaLinux 操作系统基金会的具体目标是创建一个 CentOS 继任者,让那些与操作系统的未来息息相关的人也有发言权。如果没有我们成员的支持,我们的成功是不可能的,能在使用 Linux 的主要行业中得到如此强烈的响应令人振奋。热烈欢迎 Sine Nomine、AMD、BlackHOST 和 KnownHost。如果你的组织关心最好的下游 RHEL 克隆的未来,请与我们联系!你的声音在这里很重要,我们很高兴向全世界证明这一点。这就是开源成长和繁荣的方式。” AMD 加入 AlmaLinux OS Foundation,以维持对 AMD 产品的支持。AMD 数据中心生态系统和解决方案公司副总裁 Raghu Nambiar 称,“在 AMD,我们构建的产品有助于解决客户面临的最大业务挑战。我们很自豪能为社区驱动的开源项目做出贡献,比如 AlmaLinux,它促进了一个开放且可访问的 Linux 生态系统。我们很高兴作为新成员加入 AlmaLinux OS Foundation。” AlmaLinux 的其他现有支持者包括 Amazon AWS、Microsoft Azure、Arm、Equinix、Hivelocity 以及其他各种托管组织和公司。值得注意的是,其目前的支持者名单中并没有英特尔。

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

Coreboot 4.16 发布,替代 BIOS 和 UEFI 的开源项目

Coreboot 原名 LinuxBIOS,是一个旨在取代计算机中专有固件(BIOS 或 UEFI)的软件项目,它采用轻量级固件设计,只执行加载和运行现代 32 位或 64 位操作系统所需的最少量任务。 由于 coreboot 要初始化硬件,所以必须为所要支持的每个芯片组和主板移植。因此而言,coreboot 只适用于有限的硬件平台和主板型号。 近日,coreboot 4.16 正式发布,自 4.15 版本以来,有 170 名开发者提交了 1770 个新文件。其中,有超过 35 人是第一次为 coreboot 做出贡献。 新的主板: Acer Aspire VN7-572G AMD Chausie ASROCK H77 Pro4-M ASUS P8Z77-M Emulation QEMU power9 Google Agah Google Anahera4ES Google Banshee Google Beadrix Google Brya4ES Google Crota Google Dojo Google Gimble4ES Google Herobrine_Rev0 Google Kingler Google Kinox Google Krabby Google Moli Google Nereid Google Nivviks Google Primus4ES Google Redrix4ES Google Skyrim Google Taeko4ES Google Taniks Google Vell Google Volmar Intel Alderlake-N RVP Prodrive Atlas Star Labs Star Labs StarBook Mk V (i3-1115G4 and i7-1165G7) System76 gaze16 3050 System76 gaze16 3060 System76 gaze16 3060-b 移除的主板: Google -> Corsola Google -> Nasher Google -> Stryke 添加的处理器: src/cpu/power9 src/soc/amd/sabrina 子模块更新 /3rdparty/amd_blobs (6 commits) /3rdparty/arm-trusted-firmware (965 commits) /3rdparty/blobs (30 commits) /3rdparty/chromeec (2212 commits) /3rdparty/intel-microcode (1 commits) /3rdparty/qc_blobs (13 commits) /3rdparty/vboot (44 commits) 官方表示,2022 年 11 月 4.18 版本发布后,其计划将转移对任何仍然需要 RESOURCE_ALLOCATOR_V3 的 boards的支持到 4.18 分支。 并计划从 4.18 版开始弃用 LEGACY_SMP_INIT;还包括 SMM_ASEG 的代码路径。此代码用于启动 AP 并在每个 AP 上进行一些功能编程,还用于设置 SMM。这在很大程度上已被 PARALLEL_MP 所取代,它应该能够涵盖 LEGACY_SMP_INIT 的所有用例,只需很少的代码更改。弃用的原因在于拥有 2 个代码路径来执行几乎相同的操作会大大增加社区的维护负担,同时也相当混乱。 更多详情可查看官方博客。

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

Google 宣布放弃 FLoC,推出替代品 Topics API

FLoC(Federated Learning of Cohorts)是 Google 在去年推出的一项十分具有争议的项目,它通过将用户划分为不同的用户组来取代原本基于 cookies 的广告追踪,以达到在展示广告的同时也能保护用户隐私的目的。 但是 FLoC 自公布以来就遭到了行业抵制,EFF 认为该项目完全没有达到 Google 所宣称的隐私保护作用,Edge、Vivaldi 和 Brave 等采用 Chromium 的浏览器都表示将会禁用该功能,GitHub 和 WordPress 也会在网站上禁用 FLoC。 由于遭到抵制,Google 在去年 10 月宣布将会推迟该功能的实施时间至 2022 年第四季度。经过 Google 内部研究商议,如今 Google 正式宣布该功能已彻底被放弃, 取而代之的是宣布了一项新的提议:Topics。 Google 的设想是,当用户在浏览各个网站时,浏览器本身将学习了解你的兴趣。它将保留你过去三周的浏览历史数据,Google 前期会将 Topics 的数量限制在 300 个,并计划随着时间的推移进行扩展。这些 Topics 将不包括任何敏感数据,如性别或种族。 之后 Google 会根据这 300 个 Topics 对你访问的网站进行分类。对于还没有分类的网站,浏览器中的一个轻量级机器学习算法将接管数据,并根据域名的名称提供一个由算法评估出来的 Topics。 当用户访问了一个支持 Google Topics API 的网站时,浏览器将把你感兴趣的三个 Topics 共享给网站(从每周的 Topics 中各挑选一个,挑选出来的这一个还是从每周 Topics 中排名前五的 Topics 中随机选择的)。网站在收到用户的 Topics 数据后可以与它的广告合作伙伴分享这些信息,以决定向用户展示哪些广告。 在 Google 看来,这个向用户展示广告的新方法具有更好的私密性。所有数据都会存储在本地设备上,不会发送到任何外部服务器。Google 还会为用户提供更多的数据控制权和数据透明度,用户可以从浏览器中审查并从中删除 Topics,甚至还可以关闭整个 Topics API。 按照 Google 的计划,他们将在本季度末开始在 Chrome 中试验 Topics API,届时网站和广告主可以用它进行测试。为了推动这个项目能够被更多厂商所接受,Google 还一同发布了一份技术解释文档,感兴趣的开发者可以对 Topics API 的细节进行了更深入的研究。

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

Pinta 1.7.1 发布,Paint.NET 的替代品

Pinta 是一个开源的、跨平台的图像绘制与编辑应用程序,其灵感来自于 Paint.NET,但后者仅限于微软 Windows 系统。与开源图像编辑器 GIMP 相比,Pinta 使用起来也更简单。 Pinta 正式发布了 1.7.1 版本,这个版本是基于 GTK2 的最后一个版本,目前 GTK3/.NET 6 版本正在开发中。Pinta 1.7.1 是一个小版本更新,更新内容包括: 新功能/改进 现在可以通过按住 Shift 同时使用鼠标滚轮来水平滚动画布 现在可以通过按 X 键来调换主调色板和副调色板的颜色 当试图打开一个不支持的文件格式时,增加了一个更友好的对话框 现在可以不用按 Ctrl 键就可以放大和缩小 在使用 "Move Selected Pixels" 工具进行缩放时,现在可以使用 Shift 来约束到一个统一的比例(#138)。 「About」对话框现在可以轻松地将版本信息复制到剪贴板,以便在报告错误时使用 更改 修正了在共享相同快捷方式的工具之间切换时的不一致行为 改进了用户没有文件的读写权限时的错误信息 appdata 文件现在被安装到 /usr/share/metainfo,而不是传统的路径 /usr/share/appdata 标签的工具提示现在显示完整的文件路径,而不是只显示文件名 更多详情可查看:https://www.pinta-project.com/releases/1-7-1

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

每日一博 | Netty 系列之:使用 POJO 替代 buf

简介 在之前的文章中我们提到了,对于NioSocketChannel来说,它不接收最基本的string消息,只接收ByteBuf和FileRegion。但是ByteBuf是以二进制的形式进行处理的,对于程序员来说太不直观了,处理起来也比较麻烦,有没有可能直接处理java简单对象呢?本文将会探讨一下这个问题。 decode和encode 比如我们需要直接向channel中写入一个字符串,在之前的文章中,我们知道这是不可以的,会报下面的错误: DefaultChannelPromise@57f5c075(failure: java.lang.UnsupportedOperationException: unsupported message type: String (expected: ByteBuf, FileRegion)) 也就说ChannelPromise只接受ByteBuf和FileRegion,那么怎么做呢? 既然ChannelPromise只接受ByteBuf和FileRegion,那么我们就需要把String对象转换成ByteBuf即可。 也就是说在写入String之前把String转换成ByteBuf,当要读取数据的时候,再把ByteBuf转换成String。 我们知道ChannelPipeline中可以添加多个handler,并且控制这些handler的顺序。 那么我们的思路就出来了,在ChannelPipeline中添加一个encode,用于数据写入的是对数据进行编码成ByteBuf,然后再添加一个decode,用于在数据写出的时候对数据进行解码成对应的对象。 encode,decode是不是很熟悉?对了,这就是对象的序列化。 对象序列化 netty中对象序列化是要把传输的对象和ByteBuf直接互相转换,当然我们可以自己实现这个转换对象。但是netty已经为我们提供了方便的两个转换类:ObjectEncoder和ObjectDecoder。 先看ObjectEncoder,他的作用就是将对象转换成为ByteBuf。 这个类很简单,我们对其分析一下: public class ObjectEncoder extends MessageToByteEncoder<Serializable> { private static final byte[] LENGTH_PLACEHOLDER = new byte[4]; @Override protected void encode(ChannelHandlerContext ctx, Serializable msg, ByteBuf out) throws Exception { int startIdx = out.writerIndex(); ByteBufOutputStream bout = new ByteBufOutputStream(out); ObjectOutputStream oout = null; try { bout.write(LENGTH_PLACEHOLDER); oout = new CompactObjectOutputStream(bout); oout.writeObject(msg); oout.flush(); } finally { if (oout != null) { oout.close(); } else { bout.close(); } } int endIdx = out.writerIndex(); out.setInt(startIdx, endIdx - startIdx - 4); } } ObjectEncoder继承了MessageToByteEncoder,而MessageToByteEncoder又继承了ChannelOutboundHandlerAdapter。为什么是OutBound呢?这是因为我们是要对写入的对象进行转换,所以是outbound。 首先使用ByteBufOutputStream对out ByteBuf进行封装,在bout中,首先写入了一个LENGTH_PLACEHOLDER字段,用来表示stream中中Byte的长度。然后用一个CompactObjectOutputStream对bout进行封装,最后就可以用CompactObjectOutputStream写入对象了。 对应的,netty还有一个ObjectDecoder对象,用于将ByteBuf转换成对应的对象,ObjectDecoder继承自LengthFieldBasedFrameDecoder,实际上他是一个ByteToMessageDecoder,也是一个ChannelInboundHandlerAdapter,用来对数据读取进行处理。 我们看下ObjectDecoder中最重要的decode方法: protected Object decode(ChannelHandlerContext ctx, ByteBuf in) throws Exception { ByteBuf frame = (ByteBuf) super.decode(ctx, in); if (frame == null) { return null; } ObjectInputStream ois = new CompactObjectInputStream(new ByteBufInputStream(frame, true), classResolver); try { return ois.readObject(); } finally { ois.close(); } } 上面的代码可以看到,将输入的ByteBuf转换为ByteBufInputStream,最后转换成为CompactObjectInputStream,就可以直接读取对象了。 使用编码和解码器 有了上面两个编码解码器,直接需要将其添加到client和server端的ChannelPipeline中就可以了。 对于server端,其核心代码如下: //定义bossGroup和workerGroup EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .handler(new LoggingHandler(LogLevel.INFO)) .childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast( // 添加encoder和decoder new ObjectEncoder(), new ObjectDecoder(ClassResolvers.cacheDisabled(null)), new PojoServerHandler()); } }); // 绑定端口,并准备接受连接 b.bind(PORT).sync().channel().closeFuture().sync(); 同样的,对于client端,我们其核心代码如下: EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group) .channel(NioSocketChannel.class) .handler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast( // 添加encoder和decoder new ObjectEncoder(), new ObjectDecoder(ClassResolvers.cacheDisabled(null)), new PojoClientHandler()); } }); // 建立连接 b.connect(HOST, PORT).sync().channel().closeFuture().sync(); 可以看到上面的逻辑就是将ObjectEncoder和ObjectDecoder添加到ChannelPipeline中即可。 最后,就可以在客户端和浏览器端通过调用: ctx.write("加油!"); 直接写入字符串对象了。 总结 有了ObjectEncoder和ObjectDecoder,我们就可以不用受限于ByteBuf了,程序的灵活程度得到了大幅提升。 本文的例子可以参考:learn-netty4 本文已收录于http://www.flydean.com/08-netty-pojo-buf/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现! 欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

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

Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布

Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、增加 solon.extend.jsr303 组件,支持 jsr303 bean验证能力 Solon 原有的验证体系是基于 Context 的,基于方法或参数的验证。现在算是补齐了 Bean 或 Model 的验证能力。 @Valid @Controller public class ValidController { //这是基于 context 的验证体系(可以批量验证参数) @NotZero({"val1", "val2"}) @Mapping("nzero") public String nzero(int val1, int val2) { return "OK"; } //这也是基于 context 的验证体系 @Mapping("size") public String size(@Length(min = 2, max = 5, message = "测试") String val1, @Length(min = 2, max = 5, message = "测试") String val2) { return "OK"; } //这是基于 bean 的验证体系(@Validated,这个注解加上代表要验证这个模型参数) @Mapping("bean") public String bean(@Validated ValidModel model) { return "OK"; } } //申明可验证的模型 @Data public class ValidModel { @NotBlank(message = "手机号不能为空") private String mobile; @NotBlank(message = "密码不能为空") private String password; } 2、增加 solon.cache.spymemcached 分布式缓存组件,提供 solon cache 的实现支持 配置:(Solon 的缓存注解,默认是不需要配置缓存服务的。默认会提供本地缓存服务) solon.app: name: demoapp group: demo cache1: server: memcached.water.io:11211 #具体需要哪些配置,可以看下 MemCacheService 的类实现 user: memcached 代码: //组件配置 @Configuration public class Config { @Bean public CacheService cache(@Inject("${cache1}") MemCacheService cache){ return cache; } } //使用 @Controller public class CacheController { /** * 执行结果缓存10秒,并添加 test_${label} 和 test1 标签 * */ @Cache(tags = "test_${label},test1" , seconds = 60) @Mapping("/cache/") public Date test(int label) { return new Date(); } /** * 执行后,清除 标签为 test 的缓存(不过,目前没有 test 的示签...) * */ @CachePut(tags = "test1") @Mapping("/cache/update") public Date update() { return new Date(); } /** * 执行后,清除 标签为 test_${label} 的缓存 * */ @CacheRemove(tags = "test_${label}") @Mapping("/cache/remove") public String remove(int label) { return "清除成功-" + new Date(); } } 3、增加 solon.cache.jedis 分布式缓存组件 使用同上 4、优化 solon.logging 内部结构,扩展更自由 例,配置一个新的日志添加器,指定类名,指定级别: solon.logging.appender: test: class: demo.TestAppender level: TRACE 定义日志添加器: public class TestAppender extends AppenderBase { @Override public void append(LogEvent logEvent) { System.out.println("[Test] " + logEvent.getContent()); } } 附:生态组件清单 Nami 插件(Solon rpc client) 说明 nami插件:: 说明 nami.coder.fastjson 对fastjson的编解码适配 nami.coder.hessian 对hessian的编解码适配 nami.coder.snack3 对snack3的编解码适配 nami.channel.http.okhttp 对okhttp的通道适配 nami.channel.socketd 对socketd的通道适配(适配后,可使用org.noear:solon.sockted.client.* 做为客户端) Solon 插件 说明 boot插件:: 说明 org.noear:solon.boot.jlhttp* boot插件,对jlhttp适配,提供http服务(不自带session state) org.noear:solon.boot.jetty* boot插件,对jetty适配,提供http服务(网友@khb提供) org.noear:solon.extend.jetty.jsp 扩展插件,为jetty添加jsp支持(不建议使用jsp)(网友@khb提供) org.noear:solon.boot.undertow* boot插件,对undertow适配,提供http服务(网友@tyk提供) org.noear:solon.boot.websocket boot插件,对java-websocket适配,提供websocket服务 org.noear:solon.extend.undertow.jsp 扩展插件,为undertow添加jsp支持(不建议使用jsp)(网友@tyk提供) 静态文件支持插件:: 说明 org.noear:solon.extend.staticfiles 扩展插件,添加静态文件支持(监视 resources/static 文件夹) 切面支持插件:: 说明 org.noear:solon.extend.aspect 扩展插件,添加Dao、Service注解支持;进而支持事务和缓存注解 数据操作支持插件:: 说明 org.noear:solon.extend.data 扩展插件,实现事务和缓存的注解支持 验证支持插件:: 说明 org.noear:solon.extend.validation 扩展插件,实现验证的注解支持 Yaml配置支持插件:: 说明 org.noear:solon.extend.properties.yaml 扩展插件,添加yml配置文件支持 Data插件:: 说明 org.noear:solon.extend.data 扩展插件,添加事件(@Tran)、缓存(@Cache)支持 Cloud插件:: 说明 org.noear:solon.cloud 扩展插件, 添加Solon Cloud 的接口定义及配置规范 Validation插件:: 说明 org.noear:solon.extend.validation 扩展插件,添加验证(@Valid)支持 Cache插件:: 说明 org.noear:solon.cache.spymemcached 扩展插件,完成memcached的缓存服务适配 org.noear:solon.solon.cache.jedis 扩展插件,完成redis的缓存服务适配 jsr插件:: 说明 org.noear:solon.extend.jsr303 扩展插件,完成jsr303 bean 验证支持 org.noear:solon.extend.jsr330 扩展插件,完成jsr330 组件与注入支持 跨域插件:: 说明 org.noear:solon.extend.cors 扩展插件,完成web跨域注解支持 Session插件:: 说明(可将boot插件的session state服务,自动换掉) org.noear:solon.extend.sessionstate.jwt 扩展插件,分布式session(基于jwt构建) org.noear:solon.extend.sessionstate.local 扩展插件,本地session org.noear:solon.extend.sessionstate.redis 扩展插件,分布式session(其于redis构建) 日志插件:: 说明 org.noear:solon.logging 扩展插件,添加日志支持 org.noear:solon.logging.impl 扩展插件,添加Slf4j日志支持 序列化插件:: 说明 org.noear:solon.serialization.fastjson* 序列化插件,对fastjson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.snack3* 序列化插件,对snack3适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.hession* 序列化插件,对hession适配,提供hession序列化输出 org.noear:solon.serialization.jackson 序列化插件,对jackson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.protostuff 序列化插件,对protostuff适配,提供protostuff视图输出 或 序列化输出 视图插件:: 说明(可置多个视图插件) org.noear:solon.view.freemarker* 视图插件,对freemarker适配,提供html视图输出 org.noear:solon.view.jsp 视图插件,对jsp适配,提供html视图输出 org.noear:solon.view.velocity 视图插件,对velocity适配,提供html视图输出 org.noear:solon.view.thymeleaf 视图插件,对thymeleaf适配,提供html视图输出 org.noear:solon.view.beetl 视图插件,对beetl适配,提供html视图输出 org.noear:solon.view.enjoy 视图插件,对enjoy适配,提供html视图输出 Solon SocketD 插件 说明 SocketD boot插件:: 说明 org.noear:solon.boot.socketd.jdksocket sockted boot插件,对jdksocket适配,提供socketd服务 org.noear:solon.boot.socketd.netty sockted boot插件,对netty适配,提供socketd服务 org.noear:solon.boot.socketd.rsocket sockted boot插件,对rsocket适配,提供socketd服务 org.noear:solon.boot.socketd.smartsocket sockted boot插件,对smart-socket适配,提供socketd服务 org.noear:solon.boot.socketd.websocket sockted boot插件,对websocket适配,提供socketd服务 SocketD client 插件:: 说明 org.noear:solon.sockted 扩展插件,sockted 协议的编解码、会话等基础支持 org.noear:solon.sockted.client.jdksocket 扩展插件,sockted 协议的 jdksocket 客户端适配 org.noear:solon.sockted.client.netty 扩展插件,sockted 协议的 netty 客户端适配 org.noear:solon.sockted.smartsocket 扩展插件,sockted 协议的 smartsocket 客户端适配 org.noear:solon.sockted.websocket 扩展插件,sockted 协议的 websocket 客户端适配 其它扩展插件 说明 org.noear:beetlsql-solon-plugin beetlsql 适配插件 org.noear:mybatis-solon-plugin mybatis 适配插件 org.noear:mybatis-sqlhelper-solon-plugin mybatis-sqlhelper 适配插件 org.noear:weed3-solon-plugin weed3 适配插件 org.noear:cron4j-solon-plugin cron4j 适配插件 org.noear:quartz-solon-plugin quartz 适配插件 org.noear:dubbo-solon-plugin dubbo 适配插件 org.noear:feign-solon-plugin feign 适配插件 org.noear:hasor-solon-plugin hasor 适配插件 org.noear:luffy-solon-plugin luffy 适配插件 org.noear:sureness-solon-plugin sureness 适配插件 org.noear:solon-springboot-starter springboot 适配插件 Solon Cloud 插件 说明 org.noear:consul-solon-plugin consul 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:nacos-solon-plugin nacos 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:zookeeper-solon-plugin zookeeper 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:water-solon-plugin water 适配插件(支持Solon cloud 配置、注册与发现、事件、日志、跟踪、等服务) org.noear:rabbitmq-solon-plugin rabbitmq 适配插件(支持Solon cloud 事件总线服务) org.noear:rocketmq-solon-plugin rocketmq 适配插件(支持Solon cloud 事件总线服务) org.noear:mqtt-solon-plugin mqtt 适配插件(支持Solon cloud 事件总线服务) org.noear:kafka-solon-plugin kafka 适配插件(支持Solon cloud 事件总线服务) org.noear:guava-solon-plugin guava 适配插件(支持Solon cloud 融断服务) org.noear:sentinel-solon-plugin sentinel 适配插件(支持Solon cloud 融断服务) org.noear:semaphore-solon-plugin semaphore 适配插件(支持Solon cloud 融断服务) org.noear:aliyun-oss-solon-plugin aliyun-oss 适配插件(支持Solon cloud 分布式文件服务) org.noear:aws-s3-solon-plugin aws-s3 适配插件(支持Solon cloud 分布式文件服务) org.noear:snowflake-id-solon-plugin snowflake 算法适配插件(支持Solon cloud 分布式ID服务) 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

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

Coreboot 4.14 发布,替代 BIOS 和 UEFI 的开源项目

Coreboot 原名 LinuxBIOS,是一个旨在取代计算机中专有固件(BIOS或UEFI)的软件项目,它采用轻量级固件设计,只执行加载和运行现代 32 位或 64 位操作系统所需的最少量任务。 由于 coreboot 要初始化硬件,所以必须为所要支持的每个芯片组和主板移植。因此而言,coreboot 只适用于有限的硬件平台和主板型号。 近日,coreboot 4.14 正式发布,自 4.13 版本以来,有 215 名开发者提交了 3660 个新文件。其中,约有 50 人是第一次为 coreboot 做出贡献。 Coreboot 4.14 支持数十种新主板,但其中大多数主板基于 Google Chromebook。 新的主板: AMD Bilby AMD Majolica GIGABYTE GA-D510UD Google Blipper Google Brya Google Cherry Google Collis Google Copano Google Cozmo Google Cret Google Drobit Google Galtic Google Gumboz Google Guybrush Google Herobrine Google Homestar Google Katsu Google Kracko Google Lalala Google Makomo Google Mancomb Google Marzipan Google Pirika Google Sasuke Google Sasukette Google Spherion Google Storo Google Volet HP 280 G2 Intel Alderlake-M RVP Intel Alderlake-M RVP with Chrome EC Intel Elkhartlake LPDDR4x CRB Intel shadowmountain Kontron COMe-mAL10 MSI H81M-P33 (MS-7817 v1.2) Pine64 ROCKPro64 Purism Librem 14 System76 darp5 System76 galp3-c System76 gaze15 System76 oryp5 System76 oryp6 移除的主板: Google Boldar Intel Cannonlake U LPDDR4 RVP Intel Cannonlake Y LPDDR4 RVP 更多详情可查看:https://blogs.coreboot.org/blog/2021/05/10/announcing-coreboot-4-14/

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册